diff --git a/editors/demo/src/Editors.js b/editors/demo/src/Editors.js index 9e14f6ac6c5dfb292ff737394c05d66b8ce35c76..d429ef02d2bb5fa5d0dc8816d2869811b9f98a60 100644 --- a/editors/demo/src/Editors.js +++ b/editors/demo/src/Editors.js @@ -73,7 +73,7 @@ const Editors = () => { case 'oen': return <OEN />; default: - return <HHMI />; + return <OEN />; } }; diff --git a/editors/demo/src/OEN/config/config.js b/editors/demo/src/OEN/config/config.js index 79590eeabb59eb5e18356642d8271ae99d07a545..801b97414027bd8207d6e63066bbabfce88429dd 100644 --- a/editors/demo/src/OEN/config/config.js +++ b/editors/demo/src/OEN/config/config.js @@ -23,7 +23,7 @@ import { CommentsService, CodeBlockService, CodeBlockToolGroupService, - DisplayTextToolGroupService, + // DisplayTextToolGroupService, MathService, FindAndReplaceService, EditingSuggestingService, @@ -44,6 +44,7 @@ import { CustomTagBlockToolGroupService, CustomTagService, OENContainersService, + OENContainersToolGroupService, } from 'wax-prosemirror-services'; import { EditoriaSchema } from 'wax-prosemirror-utilities'; @@ -103,7 +104,7 @@ export default { }, { templateArea: 'leftSideBar', - toolGroups: ['DisplayText'], + toolGroups: ['OENTools'], }, { templateArea: 'commentTrackToolBar', @@ -119,6 +120,42 @@ export default { // OrderedListService: { subList: false }, // BulletListService: { subList: false }, // JoinUpService: { subList: false }, + OENContainersService: [ + { + groupHeader: 'Core Elements', + items: [ + { + displayName: 'Section', + headingLevel: 2, + nestedHeadingLevel: null, + className: 'section', + }, + { + displayName: 'Section 1', + headingLevel: 2, + nestedHeadingLevel: null, + className: 'section-1', + }, + ], + }, + { + groupHeader: 'Core Elements 1', + items: [ + { + displayName: 'Section 2-1', + headingLevel: 2, + nestedHeadingLevel: null, + className: 'section', + }, + { + displayName: 'Section 2-2', + headingLevel: 2, + nestedHeadingLevel: null, + className: 'section-1', + }, + ], + }, + ], SpecialCharactersService: CharactersList, SchemaService: EditoriaSchema, TitleService: { updateTitle }, @@ -154,6 +191,7 @@ export default { services: [ new OENContainersService(), + new OENContainersToolGroupService(), new CustomTagService(), new DisplayBlockLevelService(), new DisplayToolGroupService(), @@ -177,7 +215,7 @@ export default { new CodeBlockService(), new CodeBlockToolGroupService(), new EditingSuggestingService(), - new DisplayTextToolGroupService(), + // new DisplayTextToolGroupService(), new MathService(), new FindAndReplaceService(), new TrackingAndEditingToolGroupService(), diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js index fadcf73d30176bee408179e7501c2298df4a4bf3..0b461ea15af60f7a3f16c85c8086e1c367bd2c60 100644 --- a/wax-prosemirror-services/index.js +++ b/wax-prosemirror-services/index.js @@ -83,3 +83,4 @@ export { default as MultipleChoiceDropDownToolGroupService } from './src/WaxTool export { default as EssayToolGroupService } from './src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService'; export { default as MatchingToolGroupService } from './src/WaxToolGroups/MatchingToolGroupService/MatchingToolGroupService'; export { default as MultipleDropDownToolGroupService } from './src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDownToolGroupService'; +export { default as OENContainersToolGroupService } from './src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService'; diff --git a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js index b082eaa13c70a30136d7bf78850b7442bd3fa08f..5c45cded5e38a57316448dcaaf944928e97ca4cf 100644 --- a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js +++ b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js @@ -8,6 +8,7 @@ class OENContainersService extends Service { boot() {} register() { + console.log(this.config); const createNode = this.container.get('CreateNode'); Object.keys(OenNodes).forEach(node => { diff --git a/wax-prosemirror-services/src/WaxToolGroups/DisplayTextToolGroupService/DisplayText.js b/wax-prosemirror-services/src/WaxToolGroups/DisplayTextToolGroupService/DisplayText.js index 29543d517508dabdc441e983b281fd7c7b3f9a0f..c8b805f055510dcc79dfdc6b36763495cb316379 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/DisplayTextToolGroupService/DisplayText.js +++ b/wax-prosemirror-services/src/WaxToolGroups/DisplayTextToolGroupService/DisplayText.js @@ -1,3 +1,4 @@ +/* eslint-disable no-underscore-dangle */ import React, { useMemo } from 'react'; import { injectable, inject } from 'inversify'; import { BlockLevelTools, Tabs } from 'wax-prosemirror-components'; diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService.js new file mode 100644 index 0000000000000000000000000000000000000000..99617a275b22504d538457015893c489d02fe1b8 --- /dev/null +++ b/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService.js @@ -0,0 +1,10 @@ +import Service from '../../Service'; +import OENTools from './OENTools'; + +class OENContainersToolGroupService extends Service { + register() { + this.container.bind('OENTools').to(OENTools); + } +} + +export default OENContainersToolGroupService; diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENTools.js b/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENTools.js new file mode 100644 index 0000000000000000000000000000000000000000..f080f08fa0ec0cc12cf1c55b585bd4b0e78b99b4 --- /dev/null +++ b/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENTools.js @@ -0,0 +1,74 @@ +/* eslint-disable no-underscore-dangle */ +import React, { useMemo } from 'react'; +import { injectable, inject } from 'inversify'; +import { BlockLevelTools, Tabs } from 'wax-prosemirror-components'; +import { isEmpty } from 'lodash'; +import styled from 'styled-components'; +import { v4 as uuidv4 } from 'uuid'; +import ToolGroup from '../../lib/ToolGroup'; + +const Empty = styled.div` + background: khaki; + height: 100%; +`; + +@injectable() +class OENTools extends ToolGroup { + tools = []; + toolGroups = []; + + constructor( + @inject('Display') display, + @inject('Text') text, + @inject('CustomTagBlockToolGroup') blockTag, + ) { + super(); + this.toolGroups = [ + { + name: 'TabA', + groups: [display, text, blockTag], + }, + ]; + } + + renderTools(view) { + if (isEmpty(view)) return null; + + const first = { + id: '1', + title: 'block level tools', + icon: 'title', + disabled: false, + component: ( + <BlockLevelTools + groups={this._toolGroups[0].groups.map(group => ({ + groupName: + group.title === 'Custom Block' + ? group.title + : group.title.props.title, + items: group._tools, + }))} + view={view} + /> + ), + }; + + const second = { + id: '2', + disabled: true, + title: 'chapter list', + icon: 'chapterList', + component: <Empty />, + }; + + const tabList = [first, second]; + + const TabsComponent = useMemo( + () => <Tabs key={uuidv4()} tabList={tabList} />, + [], + ); + return TabsComponent; + } +} + +export default OENTools; diff --git a/wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js index 7ad79f9441eea0d5bfd575cae981bc8691fefdf6..7a9a6995f2d1762a4846d0e8749d21d375fe97b5 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js +++ b/wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js @@ -1,4 +1,3 @@ -/* eslint-disable */ import Service from '../../Service'; import SpecialCharacters from './SpecialCharacters';