diff --git a/editors/editoria/src/EditorConfig.js b/editors/editoria/src/EditorConfig.js index 9814b90e9e6d762b357b623b0930a4c9898e0aba..3685f4ecad6bc1b123fdc82f4e21749166c0c6e6 100644 --- a/editors/editoria/src/EditorConfig.js +++ b/editors/editoria/src/EditorConfig.js @@ -25,7 +25,7 @@ import invisibles, { } from "@guardian/prosemirror-invisibles"; import { LayoutService } from "./customServices/LayoutService/LayoutService"; -import { CreateSchema, CreateShortCuts } from "wax-prosemirror-core"; +import { CreateSchema } from "wax-prosemirror-core"; import { LinkToolTipPlugin, FindAndReplacePlugin, @@ -49,35 +49,6 @@ const extraNodes = { EditoriaSchema.nodes = { ...EditoriaSchema.nodes, ...extraNodes }; const schema = new CreateSchema(EditoriaSchema); -const shortCuts = { - "Mod-b": toggleMark(schema.marks.strong), - "Mod-i": toggleMark(schema.marks.em), - "Mod-u": toggleMark(schema.marks.underline), - "Mod-`": toggleMark(schema.marks.code), - "Ctrl->": wrapIn(schema.nodes.blockquote), - Enter: splitListItem(schema.nodes.list_item), - "Mod-[": liftListItem(schema.nodes.list_item), - "Mod-]": sinkListItem(schema.nodes.list_item), - "Alt-ArrowUp": joinUp, - "Alt-ArrowDown": joinDown, - "Mod-BracketLeft": lift, - Tab: goToNextCell(1), - "Shift-Tab": goToNextCell(-1), - "Shift-Ctrl-0": setBlockType(schema.nodes.paragraph), - "Shift-Ctrl-\\": setBlockType(schema.nodes.code_block), - "Shift-Ctrl-8": wrapInList(schema.nodes.bullet_list), - "Shift-Ctrl-9": wrapInList(schema.nodes.ordered_list), - "Shift-Ctrl-1": setBlockType(schema.nodes.heading, { level: 1 }), - "Shift-Ctrl-2": setBlockType(schema.nodes.heading, { level: 2 }), - "Shift-Ctrl-3": setBlockType(schema.nodes.heading, { level: 3 }), - "Shift-Ctrl-4": setBlockType(schema.nodes.heading, { level: 4 }), - "Shift-Ctrl-5": setBlockType(schema.nodes.heading, { level: 5 }), - "Shift-Ctrl-6": setBlockType(schema.nodes.heading, { level: 6 }) -}; - -// Create shortCuts -const keys = new CreateShortCuts({ schema, shortCuts }); - // Add Plugins const plugins = [ columnResizing(), @@ -101,4 +72,4 @@ const services = [new LinkService()]; // Add Rules -export { schema, keys, plugins, services }; +export { schema, plugins, services }; diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js index 82fb3775f1ed02ff8924f5e6641e27626487ccd4..2cb49b66c68b238fd11e655a05d375b92b9c4963 100644 --- a/editors/editoria/src/config/config.js +++ b/editors/editoria/src/config/config.js @@ -15,5 +15,10 @@ export default { { rules: [emDash, ellipsis] } + ], + RulesService: [ + { + shortCuts: {} + } ] }; diff --git a/wax-prosemirror-core/index.js b/wax-prosemirror-core/index.js index 098d569b9b5b4ac72254921ab4638e2e363826e4..62a4c8a7281bf2bc4105848174966dff08684cba 100644 --- a/wax-prosemirror-core/index.js +++ b/wax-prosemirror-core/index.js @@ -1,6 +1,3 @@ export { default as Wax } from "./src/Wax"; export { default as CreateSchema } from "./src/config/classes/CreateSchema"; -export { - default as CreateShortCuts -} from "./src/config/classes/CreateShortCuts"; export { default as Service } from "./src/services/Service"; diff --git a/wax-prosemirror-core/src/Config/defaultConfig.js b/wax-prosemirror-core/src/Config/defaultConfig.js index 10ea27853f1331c5715b35451e9d618a0a9c4648..d49e24606755ced55768d430ebc6104ef7c20046 100644 --- a/wax-prosemirror-core/src/Config/defaultConfig.js +++ b/wax-prosemirror-core/src/Config/defaultConfig.js @@ -1,17 +1,19 @@ import LayoutService from "../services/LayoutService/LayoutService"; import { - MenuService, AnnotationService, + ImageService, + MenuService, RedoUndoService, - TextStyleService, PlaceholderService, - ImageService, - RulesService + RulesService, + ShortCutsService, + TextStyleService } from "wax-prosemirror-plugins"; export default { services: [ new RulesService(), + new ShortCutsService(), new LayoutService(), new MenuService(), new RedoUndoService(), diff --git a/wax-prosemirror-core/src/Wax.js b/wax-prosemirror-core/src/Wax.js index 7588a2b58376373a826f92d5e1c364512b3cb69f..1b4a6ab2b6399d3a066e489c1a287e621f362d21 100644 --- a/wax-prosemirror-core/src/Wax.js +++ b/wax-prosemirror-core/src/Wax.js @@ -11,8 +11,6 @@ import WaxView from "./WaxView"; import defaultPlugins from "./config/defaultPlugins"; import placeholder from "./config/plugins/placeholder"; -import CreateShortCuts from "./config/classes/CreateShortCuts"; - const parser = schema => { const parser = DOMParser.fromSchema(schema); diff --git a/wax-prosemirror-plugins/index.js b/wax-prosemirror-plugins/index.js index 9e3aedf8b11a8d1efa8c89045557691189e5aa73..b0e89fe7d53137c22bcfe184d04f204152e21734 100644 --- a/wax-prosemirror-plugins/index.js +++ b/wax-prosemirror-plugins/index.js @@ -19,5 +19,7 @@ export { } from "./src/PlaceholderService/PlaceholderService"; export { default as ImageService } from "./src/ImageService/ImageService"; export { default as RulesService } from "./src/RulesService/RulesService"; - +export { + default as ShortCutsService +} from "./src/ShortCutsService/ShortCutsService"; export { default as Tool } from "./src/lib/Tools"; diff --git a/wax-prosemirror-plugins/src/RulesService/Rules.js b/wax-prosemirror-plugins/src/RulesService/Rules.js index 041ac1c75f8dc75b4158121de163ce8e3de256e6..465e4fbb8390fbd23ebdb9da28e9266bac101b4c 100644 --- a/wax-prosemirror-plugins/src/RulesService/Rules.js +++ b/wax-prosemirror-plugins/src/RulesService/Rules.js @@ -1,4 +1,4 @@ -import { injectable, inject } from "inversify"; +import { injectable } from "inversify"; import { inputRules, wrappingInputRule, diff --git a/wax-prosemirror-core/src/config/classes/CreateShortCuts.js b/wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js similarity index 94% rename from wax-prosemirror-core/src/config/classes/CreateShortCuts.js rename to wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js index 98986fb1c11e1aebd17baa76ef4075454bcbb666..f8a27e94799546abe43f04099d259519e265dba6 100644 --- a/wax-prosemirror-core/src/config/classes/CreateShortCuts.js +++ b/wax-prosemirror-plugins/src/ShortCutsService/ShortCuts.js @@ -1,3 +1,4 @@ +import { injectable } from "inversify"; import { keymap } from "prosemirror-keymap"; import { undoInputRule } from "prosemirror-inputrules"; import { undo, redo } from "prosemirror-history"; @@ -10,7 +11,8 @@ import { selectParentNode } from "prosemirror-commands"; -class CreateShortCuts { +@injectable() +class ShortCuts { constructor(config) { this.schema = config.schema; this.shortCuts = config.shortCuts; @@ -63,4 +65,4 @@ class CreateShortCuts { } } -export default CreateShortCuts; +export default ShortCuts; diff --git a/wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js b/wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js new file mode 100644 index 0000000000000000000000000000000000000000..5424d0cd38760f07fbaffd913b39bbff0d9e6dd0 --- /dev/null +++ b/wax-prosemirror-plugins/src/ShortCutsService/ShortCutsService.js @@ -0,0 +1,9 @@ +import Service from "wax-prosemirror-core/src/services/Service"; +import ShortCuts from "./ShortCuts"; + +export default class ShortCutsService extends Service { + name = "ShortCutsService"; + + boot() {} + register() {} +}