From aa786132da01f3c38e07810d7b8530c45094d531 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Thu, 28 Sep 2023 19:49:50 +0300
Subject: [PATCH] new tool files

---
 .../AiToolGroupService/AiToolGroupService.js  |  4 ++--
 .../{ToggleAiTool.js => ToggleAi.js}          |  8 +++----
 .../src/AiService/AskAiContentService.js      |  5 ++++
 .../src/AiService/ToggleAiTool.js             | 18 +++++++++++++++
 .../AiService/components/ToggleAiComponent.js | 23 +++++++++++++++++++
 5 files changed, 52 insertions(+), 6 deletions(-)
 rename wax-prosemirror-services/src/AiService/AiToolGroupService/{ToggleAiTool.js => ToggleAi.js} (50%)
 create mode 100644 wax-prosemirror-services/src/AiService/ToggleAiTool.js
 create mode 100644 wax-prosemirror-services/src/AiService/components/ToggleAiComponent.js

diff --git a/wax-prosemirror-services/src/AiService/AiToolGroupService/AiToolGroupService.js b/wax-prosemirror-services/src/AiService/AiToolGroupService/AiToolGroupService.js
index 3a89788d1..2b12f947a 100644
--- a/wax-prosemirror-services/src/AiService/AiToolGroupService/AiToolGroupService.js
+++ b/wax-prosemirror-services/src/AiService/AiToolGroupService/AiToolGroupService.js
@@ -1,9 +1,9 @@
 import { Service } from 'wax-prosemirror-core';
-import ToggleAiTool from './ToggleAiTool';
+import ToggleAi from './ToggleAi';
 
 class AiToolGroupService extends Service {
   register() {
-    this.container.bind('ToggleAiTool').to(ToggleAiTool);
+    this.container.bind('ToggleAi').to(ToggleAi);
   }
 }
 
diff --git a/wax-prosemirror-services/src/AiService/AiToolGroupService/ToggleAiTool.js b/wax-prosemirror-services/src/AiService/AiToolGroupService/ToggleAi.js
similarity index 50%
rename from wax-prosemirror-services/src/AiService/AiToolGroupService/ToggleAiTool.js
rename to wax-prosemirror-services/src/AiService/AiToolGroupService/ToggleAi.js
index 418346c2d..f6892f2ec 100644
--- a/wax-prosemirror-services/src/AiService/AiToolGroupService/ToggleAiTool.js
+++ b/wax-prosemirror-services/src/AiService/AiToolGroupService/ToggleAi.js
@@ -2,13 +2,13 @@ import { injectable, inject } from 'inversify';
 import { ToolGroup } from 'wax-prosemirror-core';
 
 @injectable()
-class ToggleAiTool extends ToolGroup {
+class ToggleAi extends ToolGroup {
   tools = [];
 
-  constructor() {
+  constructor(@inject('ToggleAiTool') toggleAiTool) {
     super();
-    this.tools = [];
+    this.tools = [toggleAiTool];
   }
 }
 
-export default ToggleAiTool;
+export default ToggleAi;
diff --git a/wax-prosemirror-services/src/AiService/AskAiContentService.js b/wax-prosemirror-services/src/AiService/AskAiContentService.js
index 0fc32436e..6f79d22a0 100644
--- a/wax-prosemirror-services/src/AiService/AskAiContentService.js
+++ b/wax-prosemirror-services/src/AiService/AskAiContentService.js
@@ -2,6 +2,7 @@ import { Service } from 'wax-prosemirror-core';
 import AskAIOverlay from './components/AskAIOverlay';
 import AskAiSelectionPlugin from './plugins/AskAiSelectionPlugin';
 import AiToolGroupService from './AiToolGroupService/AiToolGroupService';
+import ToggleAiTool from './ToggleAiTool';
 import './AskAiContent.css';
 
 class AskAiContentService extends Service {
@@ -29,6 +30,10 @@ class AskAiContentService extends Service {
     );
   }
 
+  register() {
+    this.container.bind('ToggleAiTool').to(ToggleAiTool);
+  }
+
   dependencies = [new AiToolGroupService()];
 }
 
diff --git a/wax-prosemirror-services/src/AiService/ToggleAiTool.js b/wax-prosemirror-services/src/AiService/ToggleAiTool.js
new file mode 100644
index 000000000..f9161efc1
--- /dev/null
+++ b/wax-prosemirror-services/src/AiService/ToggleAiTool.js
@@ -0,0 +1,18 @@
+import React from 'react';
+import { v4 as uuidv4 } from 'uuid';
+import { Tools } from 'wax-prosemirror-core';
+import ToggleAiComponent from './components/ToggleAiComponent';
+
+class ToggleAiTool extends Tools {
+  title = 'Toggle Ai';
+  icon = '';
+  name = 'ToggleAi';
+
+  renderTool(view) {
+    return (
+      <ToggleAiComponent item={this.toJSON()} key={uuidv4()} view={view} />
+    );
+  }
+}
+
+export default ToggleAiTool;
diff --git a/wax-prosemirror-services/src/AiService/components/ToggleAiComponent.js b/wax-prosemirror-services/src/AiService/components/ToggleAiComponent.js
new file mode 100644
index 000000000..c5676acd3
--- /dev/null
+++ b/wax-prosemirror-services/src/AiService/components/ToggleAiComponent.js
@@ -0,0 +1,23 @@
+import React, { useMemo, useState, useContext } from 'react';
+import styled from 'styled-components';
+import { WaxContext } from 'wax-prosemirror-core';
+
+const ToggleAiComponent = ({ item }) => {
+  const { icon, title } = item;
+  const [isOpen, setIsOpen] = useState(false);
+
+  const {
+    pmViews: { main },
+  } = useContext(WaxContext);
+
+  let isDisabled = false;
+  const isEditable = main.props.editable(editable => {
+    return editable;
+  });
+
+  if (!isEditable) isDisabled = true;
+
+  return useMemo(() => <span> Toggle Ai</span>, [isOpen, isDisabled]);
+};
+
+export default ToggleAiComponent;
-- 
GitLab