diff --git a/wax-prosemirror-core/src/config/defaultConfig.js b/wax-prosemirror-core/src/config/defaultConfig.js index 97d6d7b29e25e1f7cfc66496813a7b059a436f6c..83635b631a987393efa3a4cafbe9d6233713bb8b 100644 --- a/wax-prosemirror-core/src/config/defaultConfig.js +++ b/wax-prosemirror-core/src/config/defaultConfig.js @@ -10,7 +10,8 @@ import { ShortCutsService, TextStyleService, InlineAnnotationsService, - LinkService + LinkService, + ListsService } from "wax-prosemirror-services"; export default { @@ -26,6 +27,7 @@ export default { new PlaceholderService(), new ImageService(), new InlineAnnotationsService(), - new LinkService() + new LinkService(), + new ListsService() ] }; diff --git a/wax-prosemirror-schema/index.js b/wax-prosemirror-schema/index.js index d6a70f2e5f1166efd852c20f2c4249207a676b6b..57add7e5bbd5197f1b0505dd82e0307eb2ffb339 100644 --- a/wax-prosemirror-schema/index.js +++ b/wax-prosemirror-schema/index.js @@ -28,3 +28,4 @@ export { default as paragraphContNode } from "./src/nodes/paragraphContNode"; export { default as extractProseNode } from "./src/nodes/extractProseNode"; export { default as extractPoetryNode } from "./src/nodes/extractPoetryNode"; export { default as titleNode } from "./src/nodes/titleNode"; +export { default as orderedListNode } from "./src/nodes/orderedListNode"; diff --git a/wax-prosemirror-schema/src/editoria/nodes.js b/wax-prosemirror-schema/src/editoria/nodes.js index 3cb24c35c5fd4ce22b1585e000aecf6a7d42c3d1..a80de139dd4c9945cdb9c07449b2ba59fcf564e4 100644 --- a/wax-prosemirror-schema/src/editoria/nodes.js +++ b/wax-prosemirror-schema/src/editoria/nodes.js @@ -355,35 +355,35 @@ const nodes = { return [`h${node.attrs.level}`, attrs, 0]; } }, - ordered_list: { - group: "block", - content: "list_item+", - attrs: { - order: { default: 1 }, - track: { default: [] } - }, - parseDOM: [ - { - tag: "ol", - getAttrs(dom) { - return { - order: dom.hasAttribute("start") ? +dom.getAttribute("start") : 1, - track: parseTracks(dom.dataset.track) - }; - } - } - ], - toDOM(node) { - const attrs = {}; - if (node.attrs.order !== 1) { - attrs.start = node.attrs.order; - } - if (node.attrs.track.length) { - attrs["data-track"] = JSON.stringify(node.attrs.track); - } - return ["ol", attrs, 0]; - } - }, + // ordered_list: { + // group: "block", + // content: "list_item+", + // attrs: { + // order: { default: 1 }, + // track: { default: [] } + // }, + // parseDOM: [ + // { + // tag: "ol", + // getAttrs(dom) { + // return { + // order: dom.hasAttribute("start") ? +dom.getAttribute("start") : 1, + // track: parseTracks(dom.dataset.track) + // }; + // } + // } + // ], + // toDOM(node) { + // const attrs = {}; + // if (node.attrs.order !== 1) { + // attrs.start = node.attrs.order; + // } + // if (node.attrs.track.length) { + // attrs["data-track"] = JSON.stringify(node.attrs.track); + // } + // return ["ol", attrs, 0]; + // } + // }, bullet_list: { group: "block", content: "list_item+", diff --git a/wax-prosemirror-schema/src/nodes/orderedListNode.js b/wax-prosemirror-schema/src/nodes/orderedListNode.js new file mode 100644 index 0000000000000000000000000000000000000000..3759361246b57115e4ad1fe5b356956d9000bb01 --- /dev/null +++ b/wax-prosemirror-schema/src/nodes/orderedListNode.js @@ -0,0 +1,35 @@ +const orderedlist = { + group: "block", + content: "list_item+", + attrs: { + order: { default: 1 }, + track: { default: [] } + }, + parseDOM: [ + { + tag: "ol", + getAttrs(hook, next) { + Object.assign(hook, { + order: hook.dom.hasAttribute("start") + ? +hook.dom.getAttribute("start") + : 1, + track: parseTracks(hook.dom.dataset.track) + }); + next(); + } + } + ], + toDOM(hook, next) { + const attrs = {}; + if (hook.node.attrs.order !== 1) { + attrs.start = hook.node.attrs.order; + } + if (hook.node.attrs.track.length) { + attrs["data-track"] = JSON.stringify(hook.node.attrs.track); + } + hook.value = ["ol", attrs, 0]; + next(); + } +}; + +export default orderedlist; diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js index 3a8e4b44f65b2f297fb47aa84eee55e91f561df0..951afea2c80f84b2a01ef6f05e60318498ad45b4 100644 --- a/wax-prosemirror-services/index.js +++ b/wax-prosemirror-services/index.js @@ -22,5 +22,6 @@ export { export { default as InlineAnnotationsService } from "./src/InlineAnnotations/InlineAnnotationsService"; +export { default as ListsService } from "./src/ListsService/ListsService"; export { default as Tool } from "./src/lib/Tools"; diff --git a/wax-prosemirror-services/src/AnnotationService/Annotation.js b/wax-prosemirror-services/src/AnnotationService/Annotation.js index 90f17c46bcec60a060c41511ab6e41bddb0ccd56..afc5d0223319be517d282d2e8cae9749d414afd3 100644 --- a/wax-prosemirror-services/src/AnnotationService/Annotation.js +++ b/wax-prosemirror-services/src/AnnotationService/Annotation.js @@ -16,6 +16,7 @@ export default class Annotation extends ToolGroup { @inject("Underline") underline, @inject("Blockquote") blockquote, @inject("Image") image, + @inject("OrderedList") orderedlist, @inject("Table") table, @inject("TableDropDownOptions") tableDropDownOptions ) { @@ -33,7 +34,8 @@ export default class Annotation extends ToolGroup { blockquote, tableDropDownOptions, image, - table + table, + orderedlist ]; } diff --git a/wax-prosemirror-services/src/ListsService/ListsSerivce.js b/wax-prosemirror-services/src/ListsService/ListsService.js similarity index 100% rename from wax-prosemirror-services/src/ListsService/ListsSerivce.js rename to wax-prosemirror-services/src/ListsService/ListsService.js diff --git a/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js b/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js index 2224e28cfed970cdac35984cca6f1dbc9fe91a30..2b9755325f1b412e4f0b86e4916115931be4ad7d 100644 --- a/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js +++ b/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js @@ -11,19 +11,19 @@ export default class OrderedList extends Tools { get run() { return (state, dispatch) => { - wrapInList(state.config.schema.nodes.ordered_list)(state, dispatch); + wrapInList(state.config.schema.nodes.orderedlist)(state, dispatch); }; } - get enable() { - return state => { - return wrapInList(state.config.schema.nodes.ordered_list)(state); - }; - } + // get enable() { + // return state => { + // return wrapInList(state.config.schema.nodes.orderedlist)(state); + // }; + // } get active() { return state => { - return blockActive(state.config.schema.nodes.ordered_list)(state); + return blockActive(state.config.schema.nodes.orderedlist)(state); }; } } diff --git a/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedListService.js b/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedListService.js index 3594004f0a241613e0289fb5cab6212efeb08973..a34ee06ee325c35b3106eff114d48dc130f0076d 100644 --- a/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedListService.js +++ b/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedListService.js @@ -1,11 +1,16 @@ +import { orderedListNode } from "wax-prosemirror-schema"; import Service from "wax-prosemirror-core/src/services/Service"; import OrderedList from "./OrderedList"; - +console.log(orderedListNode); class OrderedListService extends Service { boot() {} register() { this.container.bind("OrderedList").to(OrderedList); + this.container + .bind("schema") + .toConstantValue({ orderedlist: orderedListNode }) + .whenTargetNamed("node"); } }