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