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