From e556a2eabd5c34ee79e2b64860c0fc717f604f65 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Tue, 27 Oct 2020 15:06:10 +0200 Subject: [PATCH] more files --- editors/editoria/src/Editoria.js | 2 +- editors/editoria/src/config/config.js | 1 + wax-prosemirror-components/index.js | 1 + .../src/components/Button.js | 8 ++-- .../src/components/FullScreen.js | 46 +++++++++++++++++++ wax-prosemirror-components/src/icons/icons.js | 12 +++++ .../FullScreenService/FullScreenService.js | 4 +- .../{FullScreen.js => FullScreenTool.js} | 4 +- .../src/ImageService/Image.js | 2 +- .../FullScreenToolGroupService/FullScreen.js | 13 ++++++ .../FullScreenTool.js | 13 ------ .../FullScreenToolGroupService.js | 4 +- 12 files changed, 85 insertions(+), 25 deletions(-) create mode 100644 wax-prosemirror-components/src/components/FullScreen.js rename wax-prosemirror-services/src/FullScreenService/{FullScreen.js => FullScreenTool.js} (80%) create mode 100644 wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreen.js delete mode 100644 wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenTool.js diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js index 6f6c8e295..d0077c0e2 100644 --- a/editors/editoria/src/Editoria.js +++ b/editors/editoria/src/Editoria.js @@ -60,7 +60,7 @@ const Editoria = () => { fileUpload={file => renderImage(file)} value={demo} layout={layout} - onChange={source => console.log(source)} + // onChange={source => console.log(source)} user={user} /> </> diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js index 4e4f4964e..e69005c87 100644 --- a/editors/editoria/src/config/config.js +++ b/editors/editoria/src/config/config.js @@ -58,6 +58,7 @@ export default { 'CodeBlock', 'Tables', 'TrackingAndEditing', + 'FullScreen', ], }, { diff --git a/wax-prosemirror-components/index.js b/wax-prosemirror-components/index.js index 7c6709376..1d1488201 100644 --- a/wax-prosemirror-components/index.js +++ b/wax-prosemirror-components/index.js @@ -15,3 +15,4 @@ export { default as CreateTable } from './src/components/tables/CreateTable'; export { default as Tabs } from './src/ui/tabs/Tabs'; export { default as BlockLevelTools } from './src/ui/tabs/BlockLevelTools'; export { default as FindAndReplaceTool } from './src/components/findAndReplace/FindAndReplaceTool'; +export { default as FullScreen } from './src/components/FullScreen'; diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js index 4edf40a85..1aebf6ba5 100644 --- a/wax-prosemirror-components/src/components/Button.js +++ b/wax-prosemirror-components/src/components/Button.js @@ -1,11 +1,10 @@ /* eslint react/prop-types: 0 */ - import React, { useContext, useMemo } from 'react'; import { WaxContext } from 'wax-prosemirror-core'; import MenuButton from '../ui/buttons/MenuButton'; const Button = ({ view = {}, item }) => { - const { active, enable, icon, label, onlyOnMain, run, select, title } = item; + const { active, icon, label, onlyOnMain, run, select, title } = item; const { view: { main }, @@ -22,8 +21,9 @@ const Button = ({ view = {}, item }) => { run(editorState, dispatch); }; - const isActive = active(state, activeViewId) && select(state, activeViewId); - + const isActive = !!( + active(state, activeViewId) && select(state, activeViewId) + ); const isDisabled = !select(state, activeViewId, activeView); const MenuButtonComponent = useMemo( diff --git a/wax-prosemirror-components/src/components/FullScreen.js b/wax-prosemirror-components/src/components/FullScreen.js new file mode 100644 index 000000000..4edf40a85 --- /dev/null +++ b/wax-prosemirror-components/src/components/FullScreen.js @@ -0,0 +1,46 @@ +/* eslint react/prop-types: 0 */ + +import React, { useContext, useMemo } from 'react'; +import { WaxContext } from 'wax-prosemirror-core'; +import MenuButton from '../ui/buttons/MenuButton'; + +const Button = ({ view = {}, item }) => { + const { active, enable, icon, label, onlyOnMain, run, select, title } = item; + + const { + view: { main }, + activeViewId, + activeView, + } = useContext(WaxContext); + + if (onlyOnMain) view = main; + + const { dispatch, state } = view; + + const handleMouseDown = (e, editorState, editorDispatch) => { + e.preventDefault(); + run(editorState, dispatch); + }; + + const isActive = active(state, activeViewId) && select(state, activeViewId); + + const isDisabled = !select(state, activeViewId, activeView); + + const MenuButtonComponent = useMemo( + () => ( + <MenuButton + active={isActive || false} + disabled={isDisabled} + iconName={icon} + label={label} + onMouseDown={e => handleMouseDown(e, view.state, view.dispatch)} + title={title} + /> + ), + [isActive, isDisabled], + ); + + return MenuButtonComponent; +}; + +export default Button; diff --git a/wax-prosemirror-components/src/icons/icons.js b/wax-prosemirror-components/src/icons/icons.js index 2e35a7fa4..5061f03d8 100644 --- a/wax-prosemirror-components/src/icons/icons.js +++ b/wax-prosemirror-components/src/icons/icons.js @@ -248,4 +248,16 @@ export default { <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" /> </Svg> ), + fullScreen: ({ className }) => ( + <Svg className={className} viewBox="0 0 24 24" fill="none"> + <title> Full screen </title> + <path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z" /> + </Svg> + ), + fullScreenExit: ({ className }) => ( + <Svg className={className} viewBox="0 0 24 24" fill="none"> + <title> Exit full screen </title> + <path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" /> + </Svg> + ), }; diff --git a/wax-prosemirror-services/src/FullScreenService/FullScreenService.js b/wax-prosemirror-services/src/FullScreenService/FullScreenService.js index dea9eb034..3b1add8ce 100644 --- a/wax-prosemirror-services/src/FullScreenService/FullScreenService.js +++ b/wax-prosemirror-services/src/FullScreenService/FullScreenService.js @@ -1,11 +1,11 @@ import Service from '../Service'; -import FullScreen from './FullScreen'; +import FullScreenTool from './FullScreenTool'; class FullScreenService extends Service { name = 'FullScreenService'; register() { - this.container.bind('FullScreen').to(FullScreen); + this.container.bind('FullScreenTool').to(FullScreenTool); } } diff --git a/wax-prosemirror-services/src/FullScreenService/FullScreen.js b/wax-prosemirror-services/src/FullScreenService/FullScreenTool.js similarity index 80% rename from wax-prosemirror-services/src/FullScreenService/FullScreen.js rename to wax-prosemirror-services/src/FullScreenService/FullScreenTool.js index 1ffc2fb13..1e110895e 100644 --- a/wax-prosemirror-services/src/FullScreenService/FullScreen.js +++ b/wax-prosemirror-services/src/FullScreenService/FullScreenTool.js @@ -5,7 +5,7 @@ import Tools from '../lib/Tools'; export default @injectable() -class FullScreen extends Tools { +class FullScreenTool extends Tools { title = 'full screen'; icon = 'image'; name = 'FullScreen'; @@ -22,6 +22,6 @@ class FullScreen extends Tools { renderTool(view) { if (isEmpty(view)) return null; - return this._isDisplayed ? <span> full</span> : null; + return this._isDisplayed ? <span key="1"> full</span> : null; } } diff --git a/wax-prosemirror-services/src/ImageService/Image.js b/wax-prosemirror-services/src/ImageService/Image.js index 22bf37ced..382f08e69 100644 --- a/wax-prosemirror-services/src/ImageService/Image.js +++ b/wax-prosemirror-services/src/ImageService/Image.js @@ -15,7 +15,7 @@ class Image extends Tools { name = 'Image'; get run() { - return () => true; + return true; } select = (state, activeViewId) => { diff --git a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreen.js b/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreen.js new file mode 100644 index 000000000..6416a4b81 --- /dev/null +++ b/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreen.js @@ -0,0 +1,13 @@ +import { injectable, inject } from 'inversify'; +import ToolGroup from '../../lib/ToolGroup'; + +@injectable() +class FullScreen extends ToolGroup { + tools = []; + constructor(@inject('FullScreenTool') fullScreenTool) { + super(); + this.tools = [fullScreenTool]; + } +} + +export default FullScreen; diff --git a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenTool.js b/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenTool.js deleted file mode 100644 index 54f787f59..000000000 --- a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenTool.js +++ /dev/null @@ -1,13 +0,0 @@ -import { injectable, inject } from 'inversify'; -import ToolGroup from '../../lib/ToolGroup'; - -@injectable() -class FullScreenTool extends ToolGroup { - tools = []; - constructor(@inject('FullScreen') fullScreen) { - super(); - this.tools = [fullScreen]; - } -} - -export default FullScreenTool; diff --git a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService.js index 46cd5491d..e50c63a96 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService.js +++ b/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService.js @@ -1,9 +1,9 @@ import Service from '../../Service'; -import FullScreenTool from './FullScreenTool'; +import FullScreen from './FullScreen'; class FullScreenToolGroupService extends Service { register() { - this.container.bind('FullScreenTool').to(FullScreenTool); + this.container.bind('FullScreen').to(FullScreen); } } -- GitLab