diff --git a/editors/editoria/package.json b/editors/editoria/package.json index d32851a1d72eba15872152732982739d2869a75e..4fb3933d942a55f81eefc95998e5fa25668c3f8e 100644 --- a/editors/editoria/package.json +++ b/editors/editoria/package.json @@ -8,12 +8,12 @@ "react": "^16.13.1", "react-dom": "^16.13.1", "styled-components": "^4.2.0", - "wax-prosemirror-components": "^0.0.20", + "@pubsweet/ui-toolkit": "^2.3.1", + "react-panelgroup": "^1.0.10", "wax-prosemirror-core": "^0.0.20", - "wax-prosemirror-layouts": "^0.0.20", + "wax-prosemirror-components": "^0.0.20", "wax-prosemirror-plugins": "^0.0.20", - "wax-prosemirror-services": "^0.0.20", - "wax-prosemirror-themes": "^0.0.20" + "wax-prosemirror-services": "^0.0.20" }, "scripts": { "start": "react-app-rewired start", diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js index b88ecdadee0c6e9dd2905deae70e148330eb6ce8..489e8e8eba2780c264dca32cf3385bc87dfe0756 100644 --- a/editors/editoria/src/Editoria.js +++ b/editors/editoria/src/Editoria.js @@ -1,9 +1,9 @@ import React, { useLayoutEffect, useState, useMemo } from 'react'; import { createGlobalStyle } from 'styled-components'; -import { EditoriaLayout, EditoriaMobileLayout } from 'wax-prosemirror-layouts'; import { Wax } from 'wax-prosemirror-core'; +import { EditoriaLayout, EditoriaMobileLayout } from './layout'; import { config, configMobile } from './config'; import { demo } from './demo'; diff --git a/wax-prosemirror-layouts/src/layouts/EditorElements.js b/editors/editoria/src/layout/EditorElements.js similarity index 100% rename from wax-prosemirror-layouts/src/layouts/EditorElements.js rename to editors/editoria/src/layout/EditorElements.js diff --git a/wax-prosemirror-layouts/src/layouts/EditoriaLayout.js b/editors/editoria/src/layout/EditoriaLayout.js similarity index 89% rename from wax-prosemirror-layouts/src/layouts/EditoriaLayout.js rename to editors/editoria/src/layout/EditoriaLayout.js index 97e2095a85647d067fde576277a3b0d4a6df1a2c..c4272033d012914a94d10901fc3e559665f95c0e 100644 --- a/wax-prosemirror-layouts/src/layouts/EditoriaLayout.js +++ b/editors/editoria/src/layout/EditoriaLayout.js @@ -1,13 +1,11 @@ import React, { useContext } from 'react'; import styled, { css, ThemeProvider } from 'styled-components'; import PanelGroup from 'react-panelgroup'; -import { InfoArea } from 'wax-prosemirror-components'; -import { componentPlugin } from 'wax-prosemirror-services'; -import { cokoTheme } from 'wax-prosemirror-themes'; import { DocumentHelpers } from 'wax-prosemirror-utilities'; -import { WaxContext } from 'wax-prosemirror-core'; - +import { WaxContext, ComponentPlugin } from 'wax-prosemirror-core'; import { grid, th } from '@pubsweet/ui-toolkit'; + +import { cokoTheme } from '../theme'; import EditorElements from './EditorElements'; const divider = css` @@ -147,12 +145,12 @@ const hasNotes = main => { return notes; }; -const LeftSideBar = componentPlugin('leftSideBar'); -// const RightSideBar = componentPlugin('rightSideBar'); -const TopBar = componentPlugin('topBar'); -const NotesArea = componentPlugin('notesArea'); -const RightArea = componentPlugin('rightArea'); -const WaxOverlays = componentPlugin('waxOverlays'); +const LeftSideBar = ComponentPlugin('leftSideBar'); +// const RightSideBar = ComponentPlugin('rightSideBar'); +const TopBar = ComponentPlugin('topBar'); +const NotesArea = ComponentPlugin('notesArea'); +const RightArea = ComponentPlugin('rightArea'); +const WaxOverlays = ComponentPlugin('waxOverlays'); const EditoriaLayout = ({ editor }) => { const { @@ -204,7 +202,6 @@ const EditoriaLayout = ({ editor }) => { </EditorArea> </Main> - <InfoArea /> <WaxOverlays /> </Wrapper> </ThemeProvider> diff --git a/wax-prosemirror-layouts/src/layouts/EditoriaMobileLayout.js b/editors/editoria/src/layout/EditoriaMobileLayout.js similarity index 91% rename from wax-prosemirror-layouts/src/layouts/EditoriaMobileLayout.js rename to editors/editoria/src/layout/EditoriaMobileLayout.js index ed0bef59b9708a6bdac4cda1de186aa1565ebcc9..260bbe07a05c3cef3bdaec844bb916482d74f255 100644 --- a/wax-prosemirror-layouts/src/layouts/EditoriaMobileLayout.js +++ b/editors/editoria/src/layout/EditoriaMobileLayout.js @@ -1,13 +1,11 @@ import React, { useContext } from 'react'; import styled, { css, ThemeProvider } from 'styled-components'; import PanelGroup from 'react-panelgroup'; -import { InfoArea } from 'wax-prosemirror-components'; -import { componentPlugin } from 'wax-prosemirror-services'; -import { cokoTheme } from 'wax-prosemirror-themes'; import { DocumentHelpers } from 'wax-prosemirror-utilities'; -import { WaxContext } from 'wax-prosemirror-core'; +import { WaxContext, ComponentPlugin } from 'wax-prosemirror-core'; import { grid, th } from '@pubsweet/ui-toolkit'; +import { cokoTheme } from '../theme'; import EditorElements from './EditorElements'; const divider = css` @@ -164,10 +162,10 @@ const hasNotes = main => { return notes; }; -const TopBar = componentPlugin('topBar'); -const NotesArea = componentPlugin('notesArea'); -const RightArea = componentPlugin('rightArea'); -const WaxOverlays = componentPlugin('waxOverlays'); +const TopBar = ComponentPlugin('topBar'); +const NotesArea = ComponentPlugin('notesArea'); +const RightArea = ComponentPlugin('rightArea'); +const WaxOverlays = ComponentPlugin('waxOverlays'); const EditoriaLayout = ({ editor }) => { const { @@ -215,7 +213,6 @@ const EditoriaLayout = ({ editor }) => { </EditorArea> </Main> - <InfoArea /> <WaxOverlays /> </Wrapper> </ThemeProvider> diff --git a/editors/editoria/src/layout/componentPlugin.js b/editors/editoria/src/layout/componentPlugin.js new file mode 100644 index 0000000000000000000000000000000000000000..7a7f790c1532253a58afb66f547405ecaa3f43f6 --- /dev/null +++ b/editors/editoria/src/layout/componentPlugin.js @@ -0,0 +1,38 @@ +import React, { Component } from 'react'; +import { useInjection } from './WaxContext'; + +class UpdateView extends Component { + constructor(props) { + super(props); + + this.state = { + view: this.props.view, + }; + } + + updateView(view) { + this.setState(view); + } + + render() { + return this.props.children({ view: this.state.view }); + } +} + +const ComponentPlugin = renderArea => layoutProps => { + const { instance } = useInjection('Layout'); + const components = instance.render(renderArea); + + return components + ? components.map(({ component: Component, componentProps }, key) => { + return ( + <Component + key={`${renderArea}-${key}`} + {...layoutProps} + {...componentProps} + /> + ); + }) + : null; +}; +export default ComponentPlugin; diff --git a/editors/editoria/src/layout/index.js b/editors/editoria/src/layout/index.js new file mode 100644 index 0000000000000000000000000000000000000000..aaa1685d6b4c5aa2371e247945527961f16dc94f --- /dev/null +++ b/editors/editoria/src/layout/index.js @@ -0,0 +1,2 @@ +export { default as EditoriaLayout } from './EditoriaLayout'; +export { default as EditoriaMobileLayout } from './EditoriaMobileLayout'; diff --git a/wax-prosemirror-themes/src/coko-theme/elements/ButtonStyles.js b/editors/editoria/src/theme/elements/ButtonStyles.js similarity index 100% rename from wax-prosemirror-themes/src/coko-theme/elements/ButtonStyles.js rename to editors/editoria/src/theme/elements/ButtonStyles.js diff --git a/wax-prosemirror-themes/src/coko-theme/elements/index.js b/editors/editoria/src/theme/elements/index.js similarity index 100% rename from wax-prosemirror-themes/src/coko-theme/elements/index.js rename to editors/editoria/src/theme/elements/index.js diff --git a/editors/editoria/src/theme/index.js b/editors/editoria/src/theme/index.js new file mode 100644 index 0000000000000000000000000000000000000000..1f02e50799efeb994f4ff204cbdd25244128375f --- /dev/null +++ b/editors/editoria/src/theme/index.js @@ -0,0 +1,2 @@ +export { default as cokoTheme } from "./theme"; + diff --git a/wax-prosemirror-themes/src/coko-theme/index.js b/editors/editoria/src/theme/theme.js similarity index 100% rename from wax-prosemirror-themes/src/coko-theme/index.js rename to editors/editoria/src/theme/theme.js diff --git a/wax-prosemirror-core/index.js b/wax-prosemirror-core/index.js index 0a82d854a80de35a8f99f2c4d1aa421b89808cc7..73cd59e6864493466ee219707cc5029459a4e68e 100644 --- a/wax-prosemirror-core/index.js +++ b/wax-prosemirror-core/index.js @@ -1,2 +1,3 @@ -export { WaxContext, useInjection } from "./src/WaxContext"; -export { default as Wax } from "./src/Wax"; +export { WaxContext, useInjection } from './src/WaxContext'; +export { default as ComponentPlugin } from './src/ComponentPlugin'; +export { default as Wax } from './src/Wax'; diff --git a/wax-prosemirror-core/src/ComponentPlugin.js b/wax-prosemirror-core/src/ComponentPlugin.js new file mode 100644 index 0000000000000000000000000000000000000000..ca1f7c23a5062e630b766a884bb79d726b9285e7 --- /dev/null +++ b/wax-prosemirror-core/src/ComponentPlugin.js @@ -0,0 +1,39 @@ +import React, { Component } from 'react'; +import { useInjection } from 'wax-prosemirror-core'; + +class UpdateView extends Component { + constructor(props) { + super(props); + + this.state = { + view: this.props.view, + }; + } + + updateView(view) { + this.setState(view); + } + + render() { + return this.props.children({ view: this.state.view }); + } +} + +const ComponentPlugin = renderArea => layoutProps => { + const { instance } = useInjection('Layout'); + + const components = instance.render(renderArea); + + return components + ? components.map(({ component: Component, componentProps }, key) => { + return ( + <Component + key={`${renderArea}-${key}`} + {...layoutProps} + {...componentProps} + /> + ); + }) + : null; +}; +export default ComponentPlugin; diff --git a/wax-prosemirror-layouts/.gitignore b/wax-prosemirror-layouts/.gitignore deleted file mode 100644 index deb5ee0e0e98566ca4064349d5e68cbab9bfed1c..0000000000000000000000000000000000000000 --- a/wax-prosemirror-layouts/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# dependencies -/node_modules - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local -.directory - -npm-debug.log* -yarn-debug.log* -yarn-error.log* -yarn.lock -package-lock.json diff --git a/wax-prosemirror-layouts/index.js b/wax-prosemirror-layouts/index.js deleted file mode 100644 index 54df59fd0c3e186afc7146ff86624ec48ac40de7..0000000000000000000000000000000000000000 --- a/wax-prosemirror-layouts/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as EditoriaLayout } from './src/layouts/EditoriaLayout'; -export { default as EditoriaMobileLayout } from './src/layouts/EditoriaMobileLayout'; diff --git a/wax-prosemirror-layouts/package.json b/wax-prosemirror-layouts/package.json deleted file mode 100644 index 9c1b1a24a411d355c88c430b5e2bd60cb68dcbfd..0000000000000000000000000000000000000000 --- a/wax-prosemirror-layouts/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "wax-prosemirror-layouts", - "author": "Christos Kokosias", - "version": "0.0.20", - "description": "Wax prosemirror layouts", - "license": "MIT", - "main": "index.js", - "files": [ - "dist" - ], - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "BABEL_ENV=production rollup -c" - }, - "dependencies": { - "@pubsweet/ui-toolkit": "^2.3.1", - "react-panelgroup": "^1.0.10", - "styled-components": "^4.2.0", - "wax-prosemirror-components": "^0.0.20", - "wax-prosemirror-core": "^0.0.20", - "wax-prosemirror-services": "^0.0.20", - "wax-prosemirror-themes": "^0.0.20", - "wax-prosemirror-utilities": "^0.0.20" - }, - "peerDependencies": { - "react": "^16.13.1", - "react-dom": "^16.13.1" - } -} diff --git a/wax-prosemirror-layouts/rollup.config.js b/wax-prosemirror-layouts/rollup.config.js deleted file mode 100644 index 15f2b480f1c1af25b3bbd637047338b2aca0e2b2..0000000000000000000000000000000000000000 --- a/wax-prosemirror-layouts/rollup.config.js +++ /dev/null @@ -1,40 +0,0 @@ -import babel from 'rollup-plugin-babel'; -import commonjs from '@rollup/plugin-commonjs'; -import external from 'rollup-plugin-peer-deps-external'; -import { terser } from 'rollup-plugin-terser'; - -export default { - input: './index.js', - output: [ - { - file: 'dist/index.js', - format: 'cjs', - sourcemap: true, - }, - ], - plugins: [ - external({ - includeDependencies: true, - }), - babel({ - presets: ['react-app'], - exclude: 'node_modules/**', - runtimeHelpers: true, - }), - commonjs(), - terser(), - ], - external: [ - '@fortawesome/react-fontawesome', - 'react-dropdown', - 'inversify', - 'prosemirror-dev-tools', - 'lodash', - 'react-is', - 'uuid', - 'wax-prosemirror-schema', - 'wax-prosemirror-core', - 'wax-prosemirror-themes', - 'wax-prosemirror-components', - ], -}; diff --git a/wax-prosemirror-layouts/src/layouts/utils/px2vw.js b/wax-prosemirror-layouts/src/layouts/utils/px2vw.js deleted file mode 100644 index 131ec7fa059e1c0a5e03c56f03178d6fede57269..0000000000000000000000000000000000000000 --- a/wax-prosemirror-layouts/src/layouts/utils/px2vw.js +++ /dev/null @@ -1,3 +0,0 @@ -const px2vw = (size, width = 1920) => `${size / width * 100}vw`; - -export default px2vw; diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js index 6b30e746f276ac871f1735b18e6ee4bfd3f28efa..e9b9a02f04569a8859c17e9a1bcde2253901823e 100644 --- a/wax-prosemirror-services/index.js +++ b/wax-prosemirror-services/index.js @@ -1,6 +1,5 @@ export { default as Service } from './src/Service'; -export { default as componentPlugin } from './src/LayoutService/components/componentPlugin'; export { default as LayoutService } from './src/LayoutService/LayoutService'; export { default as MenuService } from './src/MenuService/MenuService'; export { default as LinkService } from './src/LinkService/LinkService'; diff --git a/wax-prosemirror-services/src/LayoutService/components/componentPlugin.js b/wax-prosemirror-services/src/LayoutService/components/componentPlugin.js index d3e1e33432109be5db908f80978a2ca69423b8bf..ca1f7c23a5062e630b766a884bb79d726b9285e7 100644 --- a/wax-prosemirror-services/src/LayoutService/components/componentPlugin.js +++ b/wax-prosemirror-services/src/LayoutService/components/componentPlugin.js @@ -1,12 +1,12 @@ -import React, { Component } from "react"; -import { useInjection } from "wax-prosemirror-core"; +import React, { Component } from 'react'; +import { useInjection } from 'wax-prosemirror-core'; class UpdateView extends Component { constructor(props) { super(props); this.state = { - view: this.props.view + view: this.props.view, }; } @@ -20,7 +20,7 @@ class UpdateView extends Component { } const ComponentPlugin = renderArea => layoutProps => { - const { instance } = useInjection("Layout"); + const { instance } = useInjection('Layout'); const components = instance.render(renderArea); diff --git a/wax-prosemirror-themes/.gitignore b/wax-prosemirror-themes/.gitignore deleted file mode 100644 index deb5ee0e0e98566ca4064349d5e68cbab9bfed1c..0000000000000000000000000000000000000000 --- a/wax-prosemirror-themes/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# dependencies -/node_modules - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local -.directory - -npm-debug.log* -yarn-debug.log* -yarn-error.log* -yarn.lock -package-lock.json diff --git a/wax-prosemirror-themes/index.js b/wax-prosemirror-themes/index.js deleted file mode 100644 index 042895a859e75e424b4eefa3fcfe75a1916f5ced..0000000000000000000000000000000000000000 --- a/wax-prosemirror-themes/index.js +++ /dev/null @@ -1,4 +0,0 @@ -export { default as cokoTheme } from "./src/coko-theme/index"; -export { - default as ButtonStyles -} from "./src/coko-theme/elements/ButtonStyles"; diff --git a/wax-prosemirror-themes/package.json b/wax-prosemirror-themes/package.json deleted file mode 100644 index 8f478b755665ba9f871dc98c79a5bde2a641bf8b..0000000000000000000000000000000000000000 --- a/wax-prosemirror-themes/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "wax-prosemirror-themes", - "author": "Christos Kokosias", - "version": "0.0.20", - "description": "Wax prosemirror themes", - "license": "MIT", - "main": "index.js", - "files": [ - "dist" - ], - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "BABEL_ENV=production rollup -c" - }, - "dependencies": { - "@pubsweet/ui-toolkit": "^2.2.13", - "fontsource-merriweather": "^3.0.9", - "typeface-fira-sans-condensed": "^0.0.54", - "typeface-vollkorn": "^0.0.54" - } -} diff --git a/wax-prosemirror-themes/rollup.config.js b/wax-prosemirror-themes/rollup.config.js deleted file mode 100644 index 3c39189e3e4b21268c49f26122e133aa961bb395..0000000000000000000000000000000000000000 --- a/wax-prosemirror-themes/rollup.config.js +++ /dev/null @@ -1,27 +0,0 @@ -import babel from 'rollup-plugin-babel'; -import commonjs from '@rollup/plugin-commonjs'; -import external from 'rollup-plugin-peer-deps-external'; -import { terser } from 'rollup-plugin-terser'; - -export default { - input: './index.js', - output: [ - { - file: 'dist/index.js', - format: 'cjs', - sourcemap: true, - }, - ], - plugins: [ - external({ - includeDependencies: true, - }), - babel({ - exclude: 'node_modules/**', - runtimeHelpers: true, - }), - commonjs(), - terser(), - ], - external: ['styled-components'], -};