From a70ff9eb2d0fd738de88c278014ca932e8227975 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 19 Dec 2019 17:14:01 +0200 Subject: [PATCH] LinkService --- .../src/AnnotationService/tools/Code.js | 23 -------- .../src/AnnotationService/tools/Strong.js | 23 -------- .../src/AnnotationService/tools/index.js | 2 +- .../LinkService}/Link.js | 0 .../LinkService/LinkService.js | 17 ++++++ .../src/InlineAnnotations/index.js | 3 +- wax-prosemirror-schema/index.js | 1 + wax-prosemirror-schema/src/editoria/marks.js | 52 +++++++++---------- wax-prosemirror-schema/src/marks/linkMark.js | 29 +++++++++++ .../src/marks/strongMark.js | 2 + 10 files changed, 78 insertions(+), 74 deletions(-) delete mode 100644 wax-prosemirror-plugins/src/AnnotationService/tools/Code.js delete mode 100644 wax-prosemirror-plugins/src/AnnotationService/tools/Strong.js rename wax-prosemirror-plugins/src/{AnnotationService/tools => InlineAnnotations/LinkService}/Link.js (100%) create mode 100644 wax-prosemirror-plugins/src/InlineAnnotations/LinkService/LinkService.js create mode 100644 wax-prosemirror-schema/src/marks/linkMark.js diff --git a/wax-prosemirror-plugins/src/AnnotationService/tools/Code.js b/wax-prosemirror-plugins/src/AnnotationService/tools/Code.js deleted file mode 100644 index 61887249a..000000000 --- a/wax-prosemirror-plugins/src/AnnotationService/tools/Code.js +++ /dev/null @@ -1,23 +0,0 @@ -import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; -import Tools from "../../lib/Tools"; -import { injectable } from "inversify"; -import { icons } from "wax-prosemirror-components"; - -@injectable() -export default class Code extends Tools { - title = "Toggle code"; - content = icons.code; - - get run() { - return (state, dispatch) => { - toggleMark(state.config.schema.marks.code)(state, dispatch); - }; - } - - get active() { - return state => { - return markActive(state.config.schema.marks.code)(state); - }; - } -} diff --git a/wax-prosemirror-plugins/src/AnnotationService/tools/Strong.js b/wax-prosemirror-plugins/src/AnnotationService/tools/Strong.js deleted file mode 100644 index c2f94db1e..000000000 --- a/wax-prosemirror-plugins/src/AnnotationService/tools/Strong.js +++ /dev/null @@ -1,23 +0,0 @@ -import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; -import Tools from "../../lib/Tools"; -import { injectable } from "inversify"; -import { icons } from "wax-prosemirror-components"; - -@injectable() -export default class Strong extends Tools { - title = "Toggle strong"; - content = icons.strong; - - get run() { - return (state, dispatch) => { - toggleMark(state.config.schema.marks.strong)(state, dispatch); - }; - } - - get active() { - return state => { - return markActive(state.config.schema.marks.strong)(state); - }; - } -} diff --git a/wax-prosemirror-plugins/src/AnnotationService/tools/index.js b/wax-prosemirror-plugins/src/AnnotationService/tools/index.js index be85cabc3..da37b4865 100644 --- a/wax-prosemirror-plugins/src/AnnotationService/tools/index.js +++ b/wax-prosemirror-plugins/src/AnnotationService/tools/index.js @@ -1,7 +1,7 @@ export { default as Blockquote } from "./Blockquote"; export { default as Em } from "./Em"; // export { default as Code } from "./Code"; -export { default as Link } from "./Link"; +// export { default as Link } from "./Link"; export { default as SmallCaps } from "./SmallCaps"; export { default as StrikeThrough } from "./StrikeThrough"; // export { default as Strong } from "./Strong"; diff --git a/wax-prosemirror-plugins/src/AnnotationService/tools/Link.js b/wax-prosemirror-plugins/src/InlineAnnotations/LinkService/Link.js similarity index 100% rename from wax-prosemirror-plugins/src/AnnotationService/tools/Link.js rename to wax-prosemirror-plugins/src/InlineAnnotations/LinkService/Link.js diff --git a/wax-prosemirror-plugins/src/InlineAnnotations/LinkService/LinkService.js b/wax-prosemirror-plugins/src/InlineAnnotations/LinkService/LinkService.js new file mode 100644 index 000000000..10720c671 --- /dev/null +++ b/wax-prosemirror-plugins/src/InlineAnnotations/LinkService/LinkService.js @@ -0,0 +1,17 @@ +import Service from "wax-prosemirror-core/src/services/Service"; +import { linkMark } from "wax-prosemirror-schema"; +import Link from "./Link"; + +class LinkService extends Service { + boot() { + const createMark = this.container.get("CreateMark"); + + createMark({ link: linkMark }); + } + + register() { + this.container.bind("Link").to(Link); + } +} + +export default LinkService; diff --git a/wax-prosemirror-plugins/src/InlineAnnotations/index.js b/wax-prosemirror-plugins/src/InlineAnnotations/index.js index 51cb6f0de..efdd9a4db 100644 --- a/wax-prosemirror-plugins/src/InlineAnnotations/index.js +++ b/wax-prosemirror-plugins/src/InlineAnnotations/index.js @@ -1,3 +1,4 @@ import CodeService from "./CodeService/CodeService"; import StrongService from "./StrongService/StrongService"; -export default [new CodeService(), new StrongService()]; +import LinkService from "./LinkService/LinkService"; +export default [new CodeService(), new StrongService(), new LinkService()]; diff --git a/wax-prosemirror-schema/index.js b/wax-prosemirror-schema/index.js index 64d1d1e22..f05b0c985 100644 --- a/wax-prosemirror-schema/index.js +++ b/wax-prosemirror-schema/index.js @@ -3,3 +3,4 @@ export { default as EditoriaSchema } from "./src/editoria/EditoriaSchema"; export { default as XpubSchema } from "./src/XpubSchema"; export { default as codeMark } from "./src/marks/codeMark"; export { default as strongMark } from "./src/marks/strongMark"; +export { default as linkMark } from "./src/marks/linkMark"; diff --git a/wax-prosemirror-schema/src/editoria/marks.js b/wax-prosemirror-schema/src/editoria/marks.js index 7c74eee18..a483ed195 100644 --- a/wax-prosemirror-schema/src/editoria/marks.js +++ b/wax-prosemirror-schema/src/editoria/marks.js @@ -3,32 +3,32 @@ const emDOM = ["em", 0], codeDOM = ["code", 0]; const marks = { - link: { - attrs: { - href: { default: null }, - rel: { default: "" }, - target: { default: "blank" }, - title: { default: null } - }, - inclusive: false, - parseDOM: [ - { - tag: "a[href]", - getAttrs: dom => { - const href = dom.getAttribute("href"); - const target = href && href.indexOf("#") === 0 ? "" : "blank"; - return { - href: dom.getAttribute("href"), - title: dom.getAttribute("title"), - target - }; - } - } - ], - toDOM(node) { - return ["a", node.attrs, 0]; - } - }, + // link: { + // attrs: { + // href: { default: null }, + // rel: { default: "" }, + // target: { default: "blank" }, + // title: { default: null } + // }, + // inclusive: false, + // parseDOM: [ + // { + // tag: "a[href]", + // getAttrs: dom => { + // const href = dom.getAttribute("href"); + // const target = href && href.indexOf("#") === 0 ? "" : "blank"; + // return { + // href: dom.getAttribute("href"), + // title: dom.getAttribute("title"), + // target + // }; + // } + // } + // ], + // toDOM(node) { + // return ["a", node.attrs, 0]; + // } + // }, em: { parseDOM: [{ tag: "i" }, { tag: "em" }, { style: "font-style=italic" }], toDOM() { diff --git a/wax-prosemirror-schema/src/marks/linkMark.js b/wax-prosemirror-schema/src/marks/linkMark.js new file mode 100644 index 000000000..1549d1537 --- /dev/null +++ b/wax-prosemirror-schema/src/marks/linkMark.js @@ -0,0 +1,29 @@ +const link = { + attrs: { + href: { default: null }, + rel: { default: "" }, + target: { default: "blank" }, + title: { default: null } + }, + inclusive: false, + parseDOM: [ + { + tag: "a[href]", + getAttrs: dom => { + const href = dom.getAttribute("href"); + const target = href && href.indexOf("#") === 0 ? "" : "blank"; + return { + href: dom.getAttribute("href"), + title: dom.getAttribute("title"), + target + }; + } + } + ], + toDOM(hook, next, node) { + hook.value = ["a", node.attrs, 0]; + next(); + } +}; + +export default link; diff --git a/wax-prosemirror-schema/src/marks/strongMark.js b/wax-prosemirror-schema/src/marks/strongMark.js index 1979c537d..32b9482a1 100644 --- a/wax-prosemirror-schema/src/marks/strongMark.js +++ b/wax-prosemirror-schema/src/marks/strongMark.js @@ -15,3 +15,5 @@ const strong = { next(); } }; + +export default strong; -- GitLab