From 055c037b9e062a57db885a7778c13d3653e92a5b Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 11 Jan 2021 19:55:40 +0200 Subject: [PATCH] new track options service --- wax-prosemirror-components/index.js | 1 + .../components/trackChanges/HideShowTool.js | 30 ++++++++++++++++ wax-prosemirror-services/index.js | 1 + .../TrackOptionsService.js | 11 ++++++ .../TrackOptionsService/TrackOptionsTool.js | 34 +++++++++++++++++++ 5 files changed, 77 insertions(+) create mode 100644 wax-prosemirror-components/src/components/trackChanges/HideShowTool.js create mode 100644 wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js create mode 100644 wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js diff --git a/wax-prosemirror-components/index.js b/wax-prosemirror-components/index.js index 252a73fcf..a666ff4fe 100644 --- a/wax-prosemirror-components/index.js +++ b/wax-prosemirror-components/index.js @@ -22,3 +22,4 @@ export { default as TextHighlightingTool } from './src/components/textHighlight/ export { default as EditorInfoTool } from './src/components/EditorInfo/CounterInfo/EditorInfoTool'; export { default as TransformCaseComponent } from './src/components/transformCase/TransformCaseComponent'; export { default as EditingSuggestingDropDown } from './src/components/editingSuggesting/EditingSuggestingDropDown'; +export { default as TrackChangeOptionsTool } from './src/components/trackChanges/TrackChangeOptionsTool'; diff --git a/wax-prosemirror-components/src/components/trackChanges/HideShowTool.js b/wax-prosemirror-components/src/components/trackChanges/HideShowTool.js new file mode 100644 index 000000000..33f1b1e89 --- /dev/null +++ b/wax-prosemirror-components/src/components/trackChanges/HideShowTool.js @@ -0,0 +1,30 @@ +/* eslint react/prop-types: 0 */ +import React, { useState, useMemo } from 'react'; +import MenuButton from '../../ui/buttons/MenuButton'; + +const HideShowTool = ({ view = {}, item, enabled }) => { + const [isEnabled, setEnabled] = useState(enabled); + + const handleMouseDown = e => { + e.preventDefault(); + setEnabled(!isEnabled); + item.run(view.state, view.dispatch); + }; + + const HideShowToolComponent = useMemo( + () => ( + <MenuButton + active={isEnabled} + disabled={item.enable && !item.enable(view.state)} + label="Hide/Show" + onMouseDown={e => handleMouseDown(e)} + title={item.title} + /> + ), + [isEnabled], + ); + + return HideShowToolComponent; +}; + +export default HideShowTool; diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js index 512f06578..384fce7e5 100644 --- a/wax-prosemirror-services/index.js +++ b/wax-prosemirror-services/index.js @@ -36,6 +36,7 @@ export { default as CounterInfoService } from './src/BottomInfoService/CounterIn export { default as BottomInfoService } from './src/BottomInfoService/BottomInfoService'; export { default as TransformService } from './src/TransformService/TransformService'; export { default as EditingSuggestingService } from './src/EditingSuggestingService/EditingSuggestingService'; +export { default as TrackOptionsService } from './src/TrackOptionsService/TrackOptionsService'; /* ToolGroups diff --git a/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js new file mode 100644 index 000000000..85a05b506 --- /dev/null +++ b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsService.js @@ -0,0 +1,11 @@ +import Service from '../Service'; +import TrackOptionsTool from './TrackOptionsTool'; + +class TrackOptionsService extends Service { + name = 'TrackOptionsService'; + + register() { + this.container.bind('TrackOptionsTool').to(TrackOptionsTool); + } +} +export default TrackOptionsService; diff --git a/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js new file mode 100644 index 000000000..aeef7325e --- /dev/null +++ b/wax-prosemirror-services/src/TrackOptionsService/TrackOptionsTool.js @@ -0,0 +1,34 @@ +import React from 'react'; +import { isEmpty } from 'lodash'; +import { v4 as uuidv4 } from 'uuid'; +import { injectable } from 'inversify'; +import { TrackChangeOptionsTool } from 'wax-prosemirror-components'; +import Tools from '../lib/Tools'; + +export default +@injectable() +class SpecialCharacters extends Tools { + title = 'Track Changes Options'; + icon = 'more'; + name = 'trackchangeoptions'; + + get run() { + return (state, dispatch) => {}; + } + + select = (state, activeViewId) => {}; + + get enable() { + return state => { + return true; + }; + } + + renderTool(view) { + if (isEmpty(view)) return null; + + return this._isDisplayed ? ( + <TrackChangeOptionsTool key={uuidv4()} item={this.toJSON()} view={view} /> + ) : null; + } +} -- GitLab