@ecodev/natural-editor 41.3.0 → 42.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/{esm2015/ecodev-natural-editor.js → esm2020/ecodev-natural-editor.mjs} +0 -0
  2. package/esm2020/lib/editor/editor.component.mjs +213 -0
  3. package/{esm2015/lib/editor.module.js → esm2020/lib/editor.module.mjs} +4 -4
  4. package/{esm2015/lib/link-dialog/link-dialog.component.js → esm2020/lib/link-dialog/link-dialog.component.mjs} +5 -8
  5. package/esm2020/lib/utils/image.mjs +81 -0
  6. package/{esm2015/lib/utils/inputrules.js → esm2020/lib/utils/inputrules.mjs} +0 -0
  7. package/{esm2015/lib/utils/item.js → esm2020/lib/utils/item.mjs} +1 -1
  8. package/esm2020/lib/utils/keymap.mjs +115 -0
  9. package/esm2020/lib/utils/menu.mjs +184 -0
  10. package/esm2020/lib/utils/paragraph-with-alignment.mjs +43 -0
  11. package/esm2020/lib/utils/schema.mjs +51 -0
  12. package/{esm2015/lib/utils/table.js → esm2020/lib/utils/table.mjs} +2 -2
  13. package/esm2020/lib/utils/text-align-item.mjs +81 -0
  14. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  15. package/fesm2015/{ecodev-natural-editor.js → ecodev-natural-editor.mjs} +39 -41
  16. package/fesm2015/ecodev-natural-editor.mjs.map +1 -0
  17. package/fesm2020/ecodev-natural-editor.mjs +1001 -0
  18. package/fesm2020/ecodev-natural-editor.mjs.map +1 -0
  19. package/package.json +22 -8
  20. package/src/lib/editor/_editor.theme.scss +1 -1
  21. package/theming/_natural-editor.theme.scss +1 -1
  22. package/bundles/ecodev-natural-editor.umd.js +0 -1351
  23. package/bundles/ecodev-natural-editor.umd.js.map +0 -1
  24. package/esm2015/lib/editor/editor.component.js +0 -219
  25. package/esm2015/lib/utils/image.js +0 -81
  26. package/esm2015/lib/utils/keymap.js +0 -115
  27. package/esm2015/lib/utils/menu.js +0 -178
  28. package/esm2015/lib/utils/paragraph-with-alignment.js +0 -43
  29. package/esm2015/lib/utils/schema.js +0 -47
  30. package/esm2015/lib/utils/text-align-item.js +0 -78
  31. package/fesm2015/ecodev-natural-editor.js.map +0 -1
@@ -0,0 +1,115 @@
1
+ import { chainCommands, exitCode, joinDown, joinUp, lift, selectParentNode, setBlockType, toggleMark, wrapIn, } from 'prosemirror-commands';
2
+ import { liftListItem, sinkListItem, splitListItem, wrapInList } from 'prosemirror-schema-list';
3
+ import { redo, undo } from 'prosemirror-history';
4
+ import { undoInputRule } from 'prosemirror-inputrules';
5
+ /**
6
+ * Inspect the given schema looking for marks and nodes from the
7
+ * basic schema, and if found, add key bindings related to them.
8
+ * This will add:
9
+ *
10
+ * * **Mod-b** for toggling [strong](#schema-basic.StrongMark)
11
+ * * **Mod-i** for toggling [emphasis](#schema-basic.EmMark)
12
+ * * **Mod-`** for toggling [code font](#schema-basic.CodeMark)
13
+ * * **Ctrl-Shift-0** for making the current textblock a paragraph
14
+ * * **Ctrl-Shift-1** to **Ctrl-Shift-Digit6** for making the current
15
+ * textblock a heading of the corresponding level
16
+ * * **Ctrl-Shift-Backslash** to make the current textblock a code block
17
+ * * **Ctrl-Shift-8** to wrap the selection in an ordered list
18
+ * * **Ctrl-Shift-9** to wrap the selection in a bullet list
19
+ * * **Ctrl->** to wrap the selection in a block quote
20
+ * * **Enter** to split a non-empty textblock in a list item while at
21
+ * the same time splitting the list item
22
+ * * **Mod-Enter** to insert a hard break
23
+ * * **Mod-_** to insert a horizontal rule
24
+ * * **Backspace** to undo an input rule
25
+ * * **Alt-ArrowUp** to `joinUp`
26
+ * * **Alt-ArrowDown** to `joinDown`
27
+ * * **Mod-BracketLeft** to `lift`
28
+ * * **Escape** to `selectParentNode`
29
+ *
30
+ * You can suppress or map these bindings by passing a `mapKeys`
31
+ * argument, which maps key names (say `"Mod-B"` to either `false`, to
32
+ * remove the binding, or a new key name string.
33
+ */
34
+ export function buildKeymap(schema, isMac) {
35
+ const keys = {};
36
+ keys['Mod-z'] = undo;
37
+ keys['Shift-Mod-z'] = redo;
38
+ keys['Backspace'] = undoInputRule;
39
+ if (!isMac) {
40
+ keys['Mod-y'] = redo;
41
+ }
42
+ keys['Alt-ArrowUp'] = joinUp;
43
+ keys['Alt-ArrowDown'] = joinDown;
44
+ keys['Mod-BracketLeft'] = lift;
45
+ keys['Escape'] = selectParentNode;
46
+ let type = schema.marks.strong;
47
+ if (type) {
48
+ keys['Mod-b'] = toggleMark(type);
49
+ keys['Mod-B'] = toggleMark(type);
50
+ }
51
+ type = schema.marks.em;
52
+ if (type) {
53
+ keys['Mod-i'] = toggleMark(type);
54
+ keys['Mod-I'] = toggleMark(type);
55
+ }
56
+ type = schema.marks.code;
57
+ if (type) {
58
+ keys['Mod-`'] = toggleMark(type);
59
+ }
60
+ type = schema.nodes.bullet_list;
61
+ if (type) {
62
+ keys['Shift-Ctrl-8'] = wrapInList(type);
63
+ }
64
+ type = schema.nodes.ordered_list;
65
+ if (type) {
66
+ keys['Shift-Ctrl-9'] = wrapInList(type);
67
+ }
68
+ type = schema.nodes.blockquote;
69
+ if (type) {
70
+ keys['Ctrl->'] = wrapIn(type);
71
+ }
72
+ type = schema.nodes.hard_break;
73
+ if (type) {
74
+ const br = type;
75
+ const cmd = chainCommands(exitCode, (state, dispatch) => {
76
+ dispatch?.(state.tr.replaceSelectionWith(br.create()).scrollIntoView());
77
+ return true;
78
+ });
79
+ keys['Mod-Enter'] = cmd;
80
+ keys['Shift-Enter'] = cmd;
81
+ if (isMac) {
82
+ keys['Ctrl-Enter'] = cmd;
83
+ }
84
+ }
85
+ type = schema.nodes.list_item;
86
+ if (type) {
87
+ keys['Enter'] = splitListItem(type);
88
+ keys['Mod-['] = liftListItem(type);
89
+ keys['Mod-]'] = sinkListItem(type);
90
+ }
91
+ type = schema.nodes.paragraph;
92
+ if (type) {
93
+ keys['Shift-Ctrl-0'] = setBlockType(type);
94
+ }
95
+ type = schema.nodes.code_block;
96
+ if (type) {
97
+ keys['Shift-Ctrl-\\'] = setBlockType(type);
98
+ }
99
+ type = schema.nodes.heading;
100
+ if (type) {
101
+ for (let i = 1; i <= 6; i++) {
102
+ keys['Shift-Ctrl-' + i] = setBlockType(type, { level: i });
103
+ }
104
+ }
105
+ type = schema.nodes.horizontal_rule;
106
+ if (type) {
107
+ const hr = type;
108
+ keys['Mod-_'] = (state, dispatch) => {
109
+ dispatch?.(state.tr.replaceSelectionWith(hr.create()).scrollIntoView());
110
+ return true;
111
+ };
112
+ }
113
+ return keys;
114
+ }
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5bWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9rZXltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGFBQWEsRUFDYixRQUFRLEVBQ1IsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxHQUNULE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzlGLE9BQU8sRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3JEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjLEVBQUUsS0FBYztJQUN0RCxNQUFNLElBQUksR0FBVyxFQUFFLENBQUM7SUFFeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxhQUFhLENBQUM7SUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDeEI7SUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FB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SSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QztJQUVELElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM1QixJQUFJLElBQUksRUFBRTtRQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDNUQ7S0FDSjtJQUVELElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNwQyxJQUFJLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDaEMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztLQUNMO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgY2hhaW5Db21tYW5kcyxcbiAgICBleGl0Q29kZSxcbiAgICBqb2luRG93bixcbiAgICBqb2luVXAsXG4gICAgS2V5bWFwLFxuICAgIGxpZnQsXG4gICAgc2VsZWN0UGFyZW50Tm9kZSxcbiAgICBzZXRCbG9ja1R5cGUsXG4gICAgdG9nZ2xlTWFyayxcbiAgICB3cmFwSW4sXG59IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcbmltcG9ydCB7bGlmdExpc3RJdGVtLCBzaW5rTGlzdEl0ZW0sIHNwbGl0TGlzdEl0ZW0sIHdyYXBJbkxpc3R9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1saXN0JztcbmltcG9ydCB7cmVkbywgdW5kb30gZnJvbSAncHJvc2VtaXJyb3ItaGlzdG9yeSc7XG5pbXBvcnQge3VuZG9JbnB1dFJ1bGV9IGZyb20gJ3Byb3NlbWlycm9yLWlucHV0cnVsZXMnO1xuaW1wb3J0IHtNYXJrVHlwZSwgTm9kZVR5cGUsIFNjaGVtYX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG4vKipcbiAqIEluc3BlY3QgdGhlIGdpdmVuIHNjaGVtYSBsb29raW5nIGZvciBtYXJrcyBhbmQgbm9kZXMgZnJvbSB0aGVcbiAqIGJhc2ljIHNjaGVtYSwgYW5kIGlmIGZvdW5kLCBhZGQga2V5IGJpbmRpbmdzIHJlbGF0ZWQgdG8gdGhlbS5cbiAqIFRoaXMgd2lsbCBhZGQ6XG4gKlxuICogKiAqKk1vZC1iKiogZm9yIHRvZ2dsaW5nIFtzdHJvbmddKCNzY2hlbWEtYmFzaWMuU3Ryb25nTWFyaylcbiAqICogKipNb2QtaSoqIGZvciB0b2dnbGluZyBbZW1waGFzaXNdKCNzY2hlbWEtYmFzaWMuRW1NYXJrKVxuICogKiAqKk1vZC1gKiogZm9yIHRvZ2dsaW5nIFtjb2RlIGZvbnRdKCNzY2hlbWEtYmFzaWMuQ29kZU1hcmspXG4gKiAqICoqQ3RybC1TaGlmdC0wKiogZm9yIG1ha2luZyB0aGUgY3VycmVudCB0ZXh0YmxvY2sgYSBwYXJhZ3JhcGhcbiAqICogKipDdHJsLVNoaWZ0LTEqKiB0byAqKkN0cmwtU2hpZnQtRGlnaXQ2KiogZm9yIG1ha2luZyB0aGUgY3VycmVudFxuICogICB0ZXh0YmxvY2sgYSBoZWFkaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIGxldmVsXG4gKiAqICoqQ3RybC1TaGlmdC1CYWNrc2xhc2gqKiB0byBtYWtlIHRoZSBjdXJyZW50IHRleHRibG9jayBhIGNvZGUgYmxvY2tcbiAqICogKipDdHJsLVNoaWZ0LTgqKiB0byB3cmFwIHRoZSBzZWxlY3Rpb24gaW4gYW4gb3JkZXJlZCBsaXN0XG4gKiAqICoqQ3RybC1TaGlmdC05KiogdG8gd3JhcCB0aGUgc2VsZWN0aW9uIGluIGEgYnVsbGV0IGxpc3RcbiAqICogKipDdHJsLT4qKiB0byB3cmFwIHRoZSBzZWxlY3Rpb24gaW4gYSBibG9jayBxdW90ZVxuICogKiAqKkVudGVyKiogdG8gc3BsaXQgYSBub24tZW1wdHkgdGV4dGJsb2NrIGluIGEgbGlzdCBpdGVtIHdoaWxlIGF0XG4gKiAgIHRoZSBzYW1lIHRpbWUgc3BsaXR0aW5nIHRoZSBsaXN0IGl0ZW1cbiAqICogKipNb2QtRW50ZXIqKiB0byBpbnNlcnQgYSBoYXJkIGJyZWFrXG4gKiAqICoqTW9kLV8qKiB0byBpbnNlcnQgYSBob3Jpem9udGFsIHJ1bGVcbiAqICogKipCYWNrc3BhY2UqKiB0byB1bmRvIGFuIGlucHV0IHJ1bGVcbiAqICogKipBbHQtQXJyb3dVcCoqIHRvIGBqb2luVXBgXG4gKiAqICoqQWx0LUFycm93RG93bioqIHRvIGBqb2luRG93bmBcbiAqICogKipNb2QtQnJhY2tldExlZnQqKiB0byBgbGlmdGBcbiAqICogKipFc2NhcGUqKiB0byBgc2VsZWN0UGFyZW50Tm9kZWBcbiAqXG4gKiBZb3UgY2FuIHN1cHByZXNzIG9yIG1hcCB0aGVzZSBiaW5kaW5ncyBieSBwYXNzaW5nIGEgYG1hcEtleXNgXG4gKiBhcmd1bWVudCwgd2hpY2ggbWFwcyBrZXkgbmFtZXMgKHNheSBgXCJNb2QtQlwiYCB0byBlaXRoZXIgYGZhbHNlYCwgdG9cbiAqIHJlbW92ZSB0aGUgYmluZGluZywgb3IgYSBuZXcga2V5IG5hbWUgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRLZXltYXAoc2NoZW1hOiBTY2hlbWEsIGlzTWFjOiBib29sZWFuKTogS2V5bWFwIHtcbiAgICBjb25zdCBrZXlzOiBLZXltYXAgPSB7fTtcblxuICAgIGtleXNbJ01vZC16J10gPSB1bmRvO1xuICAgIGtleXNbJ1NoaWZ0LU1vZC16J10gPSByZWRvO1xuICAgIGtleXNbJ0JhY2tzcGFjZSddID0gdW5kb0lucHV0UnVsZTtcbiAgICBpZiAoIWlzTWFjKSB7XG4gICAgICAgIGtleXNbJ01vZC15J10gPSByZWRvO1xuICAgIH1cblxuICAgIGtleXNbJ0FsdC1BcnJvd1VwJ10gPSBqb2luVXA7XG4gICAga2V5c1snQWx0LUFycm93RG93biddID0gam9pbkRvd247XG4gICAga2V5c1snTW9kLUJyYWNrZXRMZWZ0J10gPSBsaWZ0O1xuICAgIGtleXNbJ0VzY2FwZSddID0gc2VsZWN0UGFyZW50Tm9kZTtcblxuICAgIGxldCB0eXBlOiBNYXJrVHlwZSB8IE5vZGVUeXBlID0gc2NoZW1hLm1hcmtzLnN0cm9uZztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICBrZXlzWydNb2QtYiddID0gdG9nZ2xlTWFyayh0eXBlKTtcbiAgICAgICAga2V5c1snTW9kLUInXSA9IHRvZ2dsZU1hcmsodHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5lbTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICBrZXlzWydNb2QtaSddID0gdG9nZ2xlTWFyayh0eXBlKTtcbiAgICAgICAga2V5c1snTW9kLUknXSA9IHRvZ2dsZU1hcmsodHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5jb2RlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGtleXNbJ01vZC1gJ10gPSB0b2dnbGVNYXJrKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAga2V5c1snU2hpZnQtQ3RybC04J10gPSB3cmFwSW5MaXN0KHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMub3JkZXJlZF9saXN0O1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGtleXNbJ1NoaWZ0LUN0cmwtOSddID0gd3JhcEluTGlzdCh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAga2V5c1snQ3RybC0+J10gPSB3cmFwSW4odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oYXJkX2JyZWFrO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGNvbnN0IGJyID0gdHlwZTtcbiAgICAgICAgY29uc3QgY21kID0gY2hhaW5Db21tYW5kcyhleGl0Q29kZSwgKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xuICAgICAgICAgICAgZGlzcGF0Y2g/LihzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChici5jcmVhdGUoKSkuc2Nyb2xsSW50b1ZpZXcoKSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGtleXNbJ01vZC1FbnRlciddID0gY21kO1xuICAgICAgICBrZXlzWydTaGlmdC1FbnRlciddID0gY21kO1xuICAgICAgICBpZiAoaXNNYWMpIHtcbiAgICAgICAgICAgIGtleXNbJ0N0cmwtRW50ZXInXSA9IGNtZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMubGlzdF9pdGVtO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGtleXNbJ0VudGVyJ10gPSBzcGxpdExpc3RJdGVtKHR5cGUpO1xuICAgICAgICBrZXlzWydNb2QtWyddID0gbGlmdExpc3RJdGVtKHR5cGUpO1xuICAgICAgICBrZXlzWydNb2QtXSddID0gc2lua0xpc3RJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMucGFyYWdyYXBoO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGtleXNbJ1NoaWZ0LUN0cmwtMCddID0gc2V0QmxvY2tUeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuY29kZV9ibG9jaztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICBrZXlzWydTaGlmdC1DdHJsLVxcXFwnXSA9IHNldEJsb2NrVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmhlYWRpbmc7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNjsgaSsrKSB7XG4gICAgICAgICAgICBrZXlzWydTaGlmdC1DdHJsLScgKyBpXSA9IHNldEJsb2NrVHlwZSh0eXBlLCB7bGV2ZWw6IGl9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuaG9yaXpvbnRhbF9ydWxlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGNvbnN0IGhyID0gdHlwZTtcbiAgICAgICAga2V5c1snTW9kLV8nXSA9IChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgICAgIGRpc3BhdGNoPy4oc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgoaHIuY3JlYXRlKCkpLnNjcm9sbEludG9WaWV3KCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleXM7XG59XG4iXX0=
@@ -0,0 +1,184 @@
1
+ import { blockTypeItem, joinUpItem, liftItem, redoItem, selectParentNodeItem, undoItem, wrapItem, } from 'prosemirror-menu';
2
+ import { toggleMark } from 'prosemirror-commands';
3
+ import { wrapInList } from 'prosemirror-schema-list';
4
+ import { LinkDialogComponent } from '../link-dialog/link-dialog.component';
5
+ import { addColumnAfter, addColumnBefore, addRowAfter, addRowBefore, deleteColumn, deleteRow, deleteTable, mergeCells, splitCell, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, } from 'prosemirror-tables';
6
+ import { addTable } from './table';
7
+ import { Item } from './item';
8
+ import { paragraphWithAlignment } from './paragraph-with-alignment';
9
+ import { TextAlignItem } from './text-align-item';
10
+ /**
11
+ * Convert built-in `MenuItem` into our Angular specific `Item`
12
+ */
13
+ function toItem(item) {
14
+ return new Item(item.spec);
15
+ }
16
+ function canInsert(state, nodeType) {
17
+ const $from = state.selection.$from;
18
+ for (let d = $from.depth; d >= 0; d--) {
19
+ const index = $from.index(d);
20
+ if ($from.node(d).canReplaceWith(index, index, nodeType)) {
21
+ return true;
22
+ }
23
+ }
24
+ return false;
25
+ }
26
+ function cmdItem(cmd, options = {}, useEnable = false) {
27
+ const passedOptions = {
28
+ run: cmd,
29
+ ...options,
30
+ };
31
+ if ((!options.enable || useEnable) && !options.select) {
32
+ passedOptions[options.enable ? 'enable' : 'select'] = (state) => cmd(state);
33
+ }
34
+ return new Item(passedOptions);
35
+ }
36
+ function markActive(state, type) {
37
+ const { from, $from, to, empty } = state.selection;
38
+ if (empty) {
39
+ return !!type.isInSet(state.storedMarks || $from.marks());
40
+ }
41
+ else {
42
+ return state.doc.rangeHasMark(from, to, type);
43
+ }
44
+ }
45
+ function markItem(markType, options = {}) {
46
+ const passedOptions = {
47
+ active(state) {
48
+ return markActive(state, markType);
49
+ },
50
+ ...options,
51
+ };
52
+ return cmdItem(toggleMark(markType), passedOptions, true);
53
+ }
54
+ function linkItem(markType, dialog) {
55
+ return new Item({
56
+ active(state) {
57
+ return markActive(state, markType);
58
+ },
59
+ enable(state) {
60
+ return !state.selection.empty;
61
+ },
62
+ run(state, dispatch, view) {
63
+ if (markActive(state, markType)) {
64
+ toggleMark(markType)(state, dispatch);
65
+ return true;
66
+ }
67
+ dialog
68
+ .open(LinkDialogComponent, {
69
+ data: {
70
+ href: '',
71
+ title: '',
72
+ },
73
+ })
74
+ .afterClosed()
75
+ .subscribe(result => {
76
+ if (result) {
77
+ if (!result.title) {
78
+ delete result.title;
79
+ }
80
+ toggleMark(markType, result)(view.state, view.dispatch);
81
+ }
82
+ view.focus();
83
+ });
84
+ },
85
+ });
86
+ }
87
+ function wrapListItem(nodeType) {
88
+ return cmdItem(wrapInList(nodeType));
89
+ }
90
+ /**
91
+ * Given a schema, look for default mark and node types in it and
92
+ * return an object with relevant menu items relating to those marks:
93
+ */
94
+ export function buildMenuItems(schema, dialog) {
95
+ const r = {
96
+ joinUp: toItem(joinUpItem),
97
+ lift: toItem(liftItem),
98
+ selectParentNode: toItem(selectParentNodeItem),
99
+ undo: toItem(undoItem),
100
+ redo: toItem(redoItem),
101
+ };
102
+ let type;
103
+ type = schema.marks.strong;
104
+ if (type) {
105
+ r.toggleStrong = markItem(type);
106
+ }
107
+ type = schema.marks.em;
108
+ if (type) {
109
+ r.toggleEm = markItem(type);
110
+ }
111
+ type = schema.marks.code;
112
+ if (type) {
113
+ r.toggleCode = markItem(type);
114
+ }
115
+ type = schema.marks.link;
116
+ if (type) {
117
+ r.toggleLink = linkItem(type, dialog);
118
+ }
119
+ type = schema.nodes.bullet_list;
120
+ if (type) {
121
+ r.wrapBulletList = wrapListItem(type);
122
+ }
123
+ type = schema.nodes.ordered_list;
124
+ if (type) {
125
+ r.wrapOrderedList = wrapListItem(type);
126
+ }
127
+ type = schema.nodes.blockquote;
128
+ if (type) {
129
+ r.wrapBlockQuote = toItem(wrapItem(type, {}));
130
+ }
131
+ type = schema.nodes.paragraph;
132
+ if (type) {
133
+ r.makeParagraph = toItem(blockTypeItem(type, {}));
134
+ if (type.spec === paragraphWithAlignment) {
135
+ r.alignLeft = new TextAlignItem('left');
136
+ r.alignRight = new TextAlignItem('right');
137
+ r.alignCenter = new TextAlignItem('center');
138
+ r.alignJustify = new TextAlignItem('justify');
139
+ }
140
+ }
141
+ type = schema.nodes.code_block;
142
+ if (type) {
143
+ r.makeCodeBlock = toItem(blockTypeItem(type, {}));
144
+ }
145
+ type = schema.nodes.heading;
146
+ if (type) {
147
+ r.makeHead1 = toItem(blockTypeItem(type, { attrs: { level: 1 } }));
148
+ r.makeHead2 = toItem(blockTypeItem(type, { attrs: { level: 2 } }));
149
+ r.makeHead3 = toItem(blockTypeItem(type, { attrs: { level: 3 } }));
150
+ r.makeHead4 = toItem(blockTypeItem(type, { attrs: { level: 4 } }));
151
+ r.makeHead5 = toItem(blockTypeItem(type, { attrs: { level: 5 } }));
152
+ r.makeHead6 = toItem(blockTypeItem(type, { attrs: { level: 6 } }));
153
+ }
154
+ type = schema.nodes.horizontal_rule;
155
+ if (type) {
156
+ const hr = type;
157
+ r.insertHorizontalRule = new Item({
158
+ enable(state) {
159
+ return canInsert(state, hr);
160
+ },
161
+ run(state, dispatch) {
162
+ dispatch(state.tr.replaceSelectionWith(hr.create()));
163
+ },
164
+ });
165
+ }
166
+ type = schema.nodes.table;
167
+ if (type) {
168
+ r.insertTable = new Item({ run: (e, tr) => addTable(e, tr) });
169
+ r.addColumnBefore = new Item({ run: addColumnBefore });
170
+ r.addColumnAfter = new Item({ run: addColumnAfter });
171
+ r.deleteColumn = new Item({ run: deleteColumn });
172
+ r.addRowBefore = new Item({ run: addRowBefore });
173
+ r.addRowAfter = new Item({ run: addRowAfter });
174
+ r.deleteRow = new Item({ run: deleteRow });
175
+ r.deleteTable = new Item({ run: deleteTable });
176
+ r.mergeCells = new Item({ run: mergeCells });
177
+ r.splitCell = new Item({ run: splitCell });
178
+ r.toggleHeaderColumn = new Item({ run: toggleHeaderColumn });
179
+ r.toggleHeaderRow = new Item({ run: toggleHeaderRow });
180
+ r.toggleHeaderCell = new Item({ run: toggleHeaderCell });
181
+ }
182
+ return r;
183
+ }
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFVLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsbUJBQW1CLEVBQWlCLE1BQU0sc0NBQXNDLENBQUM7QUFFekYsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxTQUFTLE1BQU0sQ0FBQyxJQUFjO0lBQzFCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFrQixFQUFFLFFBQWtCO0lBQ3JELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lB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QyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUM7S0FDMUQ7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGJsb2NrVHlwZUl0ZW0sXG4gICAgam9pblVwSXRlbSxcbiAgICBsaWZ0SXRlbSxcbiAgICBNZW51SXRlbSxcbiAgICBNZW51SXRlbVNwZWMsXG4gICAgcmVkb0l0ZW0sXG4gICAgc2VsZWN0UGFyZW50Tm9kZUl0ZW0sXG4gICAgdW5kb0l0ZW0sXG4gICAgd3JhcEl0ZW0sXG59IGZyb20gJ3Byb3NlbWlycm9yLW1lbnUnO1xuaW1wb3J0IHtFZGl0b3JTdGF0ZSwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7Q29tbWFuZCwgdG9nZ2xlTWFya30gZnJvbSAncHJvc2VtaXJyb3ItY29tbWFuZHMnO1xuaW1wb3J0IHt3cmFwSW5MaXN0fSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtbGlzdCc7XG5pbXBvcnQge01hcmtUeXBlLCBOb2RlVHlwZSwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TGlua0RpYWxvZ0NvbXBvbmVudCwgTGlua0RpYWxvZ0RhdGF9IGZyb20gJy4uL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge0VkaXRvclZpZXd9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBhZGRDb2x1bW5BZnRlcixcbiAgICBhZGRDb2x1bW5CZWZvcmUsXG4gICAgYWRkUm93QWZ0ZXIsXG4gICAgYWRkUm93QmVmb3JlLFxuICAgIGRlbGV0ZUNvbHVtbixcbiAgICBkZWxldGVSb3csXG4gICAgZGVsZXRlVGFibGUsXG4gICAgbWVyZ2VDZWxscyxcbiAgICBzcGxpdENlbGwsXG4gICAgdG9nZ2xlSGVhZGVyQ2VsbCxcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW4sXG4gICAgdG9nZ2xlSGVhZGVyUm93LFxufSBmcm9tICdwcm9zZW1pcnJvci10YWJsZXMnO1xuaW1wb3J0IHthZGRUYWJsZX0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge3BhcmFncmFwaFdpdGhBbGlnbm1lbnR9IGZyb20gJy4vcGFyYWdyYXBoLXdpdGgtYWxpZ25tZW50JztcbmltcG9ydCB7VGV4dEFsaWduSXRlbX0gZnJvbSAnLi90ZXh0LWFsaWduLWl0ZW0nO1xuXG4vKipcbiAqIENvbnZlcnQgYnVpbHQtaW4gYE1lbnVJdGVtYCBpbnRvIG91ciBBbmd1bGFyIHNwZWNpZmljIGBJdGVtYFxuICovXG5mdW5jdGlvbiB0b0l0ZW0oaXRlbTogTWVudUl0ZW0pOiBJdGVtIHtcbiAgICByZXR1cm4gbmV3IEl0ZW0oaXRlbS5zcGVjKTtcbn1cblxuZnVuY3Rpb24gY2FuSW5zZXJ0KHN0YXRlOiBFZGl0b3JTdGF0ZSwgbm9kZVR5cGU6IE5vZGVUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgJGZyb20gPSBzdGF0ZS5zZWxlY3Rpb24uJGZyb207XG4gICAgZm9yIChsZXQgZCA9ICRmcm9tLmRlcHRoOyBkID49IDA7IGQtLSkge1xuICAgICAgICBjb25zdCBpbmRleCA9ICRmcm9tLmluZGV4KGQpO1xuICAgICAgICBpZiAoJGZyb20ubm9kZShkKS5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIG5vZGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNtZEl0ZW0oY21kOiBDb21tYW5kLCBvcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7fSwgdXNlRW5hYmxlID0gZmFsc2UpOiBJdGVtIHtcbiAgICBjb25zdCBwYXNzZWRPcHRpb25zOiBNZW51SXRlbVNwZWMgPSB7XG4gICAgICAgIHJ1bjogY21kLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICBpZiAoKCFvcHRpb25zLmVuYWJsZSB8fCB1c2VFbmFibGUpICYmICFvcHRpb25zLnNlbGVjdCkge1xuICAgICAgICBwYXNzZWRPcHRpb25zW29wdGlvbnMuZW5hYmxlID8gJ2VuYWJsZScgOiAnc2VsZWN0J10gPSAoc3RhdGU6IEVkaXRvclN0YXRlKSA9PiBjbWQoc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSXRlbShwYXNzZWRPcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbWFya0FjdGl2ZShzdGF0ZTogRWRpdG9yU3RhdGUsIHR5cGU6IE1hcmtUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge2Zyb20sICRmcm9tLCB0bywgZW1wdHl9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmIChlbXB0eSkge1xuICAgICAgICByZXR1cm4gISF0eXBlLmlzSW5TZXQoc3RhdGUuc3RvcmVkTWFya3MgfHwgJGZyb20ubWFya3MoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmRvYy5yYW5nZUhhc01hcmsoZnJvbSwgdG8sIHR5cGUpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbWFya0l0ZW0obWFya1R5cGU6IE1hcmtUeXBlLCBvcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7fSk6IEl0ZW0ge1xuICAgIGNvbnN0IHBhc3NlZE9wdGlvbnM6IFBhcnRpYWw8TWVudUl0ZW1TcGVjPiA9IHtcbiAgICAgICAgYWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNtZEl0ZW0odG9nZ2xlTWFyayhtYXJrVHlwZSksIHBhc3NlZE9wdGlvbnMsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBsaW5rSXRlbShtYXJrVHlwZTogTWFya1R5cGUsIGRpYWxvZzogTWF0RGlhbG9nKTogSXRlbSB7XG4gICAgcmV0dXJuIG5ldyBJdGVtKHtcbiAgICAgICAgYWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuICFzdGF0ZS5zZWxlY3Rpb24uZW1wdHk7XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bihzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoOiAocDogVHJhbnNhY3Rpb24pID0+IHZvaWQsIHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuIHwgdm9pZCB7XG4gICAgICAgICAgICBpZiAobWFya0FjdGl2ZShzdGF0ZSwgbWFya1R5cGUpKSB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgLm9wZW48TGlua0RpYWxvZ0NvbXBvbmVudCwgTGlua0RpYWxvZ0RhdGEsIExpbmtEaWFsb2dEYXRhPihMaW5rRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSwgcmVzdWx0KSh2aWV3LnN0YXRlLCB2aWV3LmRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gd3JhcExpc3RJdGVtKG5vZGVUeXBlOiBOb2RlVHlwZSk6IEl0ZW0ge1xuICAgIHJldHVybiBjbWRJdGVtKHdyYXBJbkxpc3Qobm9kZVR5cGUpKTtcbn1cblxuZXhwb3J0IHR5cGUgS2V5ID1cbiAgICB8ICd0b2dnbGVTdHJvbmcnXG4gICAgfCAndG9nZ2xlRW0nXG4gICAgfCAndG9nZ2xlQ29kZSdcbiAgICB8ICd0b2dnbGVMaW5rJ1xuICAgIHwgJ3dyYXBCdWxsZXRMaXN0J1xuICAgIHwgJ3dyYXBPcmRlcmVkTGlzdCdcbiAgICB8ICd3cmFwQmxvY2tRdW90ZSdcbiAgICB8ICdtYWtlUGFyYWdyYXBoJ1xuICAgIHwgJ21ha2VDb2RlQmxvY2snXG4gICAgfCAnbWFrZUhlYWQxJ1xuICAgIHwgJ21ha2VIZWFkMidcbiAgICB8ICdtYWtlSGVhZDMnXG4gICAgfCAnbWFrZUhlYWQ0J1xuICAgIHwgJ21ha2VIZWFkNSdcbiAgICB8ICdtYWtlSGVhZDYnXG4gICAgfCAnYWxpZ25MZWZ0J1xuICAgIHwgJ2FsaWduUmlnaHQnXG4gICAgfCAnYWxpZ25DZW50ZXInXG4gICAgfCAnYWxpZ25KdXN0aWZ5J1xuICAgIHwgJ2luc2VydEhvcml6b250YWxSdWxlJ1xuICAgIHwgJ2pvaW5VcCdcbiAgICB8ICdsaWZ0J1xuICAgIHwgJ3NlbGVjdFBhcmVudE5vZGUnXG4gICAgfCAndW5kbydcbiAgICB8ICdyZWRvJ1xuICAgIHwgJ2luc2VydFRhYmxlJ1xuICAgIHwgJ2FkZENvbHVtbkJlZm9yZSdcbiAgICB8ICdhZGRDb2x1bW5BZnRlcidcbiAgICB8ICdkZWxldGVDb2x1bW4nXG4gICAgfCAnYWRkUm93QmVmb3JlJ1xuICAgIHwgJ2FkZFJvd0FmdGVyJ1xuICAgIHwgJ2RlbGV0ZVJvdydcbiAgICB8ICdkZWxldGVUYWJsZSdcbiAgICB8ICdtZXJnZUNlbGxzJ1xuICAgIHwgJ3NwbGl0Q2VsbCdcbiAgICB8ICd0b2dnbGVIZWFkZXJDb2x1bW4nXG4gICAgfCAndG9nZ2xlSGVhZGVyUm93J1xuICAgIHwgJ3RvZ2dsZUhlYWRlckNlbGwnO1xuXG5leHBvcnQgdHlwZSBNZW51SXRlbXMgPSBQYXJ0aWFsPFJlY29yZDxLZXksIEl0ZW0+PjtcblxuLyoqXG4gKiBHaXZlbiBhIHNjaGVtYSwgbG9vayBmb3IgZGVmYXVsdCBtYXJrIGFuZCBub2RlIHR5cGVzIGluIGl0IGFuZFxuICogcmV0dXJuIGFuIG9iamVjdCB3aXRoIHJlbGV2YW50IG1lbnUgaXRlbXMgcmVsYXRpbmcgdG8gdGhvc2UgbWFya3M6XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE1lbnVJdGVtcyhzY2hlbWE6IFNjaGVtYSwgZGlhbG9nOiBNYXREaWFsb2cpOiBNZW51SXRlbXMge1xuICAgIGNvbnN0IHI6IE1lbnVJdGVtcyA9IHtcbiAgICAgICAgam9pblVwOiB0b0l0ZW0oam9pblVwSXRlbSksXG4gICAgICAgIGxpZnQ6IHRvSXRlbShsaWZ0SXRlbSksXG4gICAgICAgIHNlbGVjdFBhcmVudE5vZGU6IHRvSXRlbShzZWxlY3RQYXJlbnROb2RlSXRlbSksXG4gICAgICAgIHVuZG86IHRvSXRlbSh1bmRvSXRlbSBhcyB1bmtub3duIGFzIE1lbnVJdGVtKSwgLy8gVHlwaW5nIGlzIGluY29ycmVjdCwgc28gd2UgZm9yY2UgaXRcbiAgICAgICAgcmVkbzogdG9JdGVtKHJlZG9JdGVtIGFzIHVua25vd24gYXMgTWVudUl0ZW0pLFxuICAgIH07XG5cbiAgICBsZXQgdHlwZTogTWFya1R5cGUgfCBOb2RlVHlwZSB8IHVuZGVmaW5lZDtcbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLnN0cm9uZztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZVN0cm9uZyA9IG1hcmtJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MuZW07XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVFbSA9IG1hcmtJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MuY29kZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUNvZGUgPSBtYXJrSXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLmxpbms7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVMaW5rID0gbGlua0l0ZW0odHlwZSwgZGlhbG9nKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJ1bGxldF9saXN0O1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIud3JhcEJ1bGxldExpc3QgPSB3cmFwTGlzdEl0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5vcmRlcmVkX2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwT3JkZXJlZExpc3QgPSB3cmFwTGlzdEl0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5ibG9ja3F1b3RlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIud3JhcEJsb2NrUXVvdGUgPSB0b0l0ZW0od3JhcEl0ZW0odHlwZSwge30pKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLnBhcmFncmFwaDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLm1ha2VQYXJhZ3JhcGggPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7fSkpO1xuXG4gICAgICAgIGlmICh0eXBlLnNwZWMgPT09IHBhcmFncmFwaFdpdGhBbGlnbm1lbnQpIHtcbiAgICAgICAgICAgIHIuYWxpZ25MZWZ0ID0gbmV3IFRleHRBbGlnbkl0ZW0oJ2xlZnQnKTtcbiAgICAgICAgICAgIHIuYWxpZ25SaWdodCA9IG5ldyBUZXh0QWxpZ25JdGVtKCdyaWdodCcpO1xuICAgICAgICAgICAgci5hbGlnbkNlbnRlciA9IG5ldyBUZXh0QWxpZ25JdGVtKCdjZW50ZXInKTtcbiAgICAgICAgICAgIHIuYWxpZ25KdXN0aWZ5ID0gbmV3IFRleHRBbGlnbkl0ZW0oJ2p1c3RpZnknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuY29kZV9ibG9jaztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLm1ha2VDb2RlQmxvY2sgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuaGVhZGluZztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLm1ha2VIZWFkMSA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiAxfX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDIgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogMn19KSk7XG4gICAgICAgIHIubWFrZUhlYWQzID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDN9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNCA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiA0fX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDUgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNX19KSk7XG4gICAgICAgIHIubWFrZUhlYWQ2ID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDZ9fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuaG9yaXpvbnRhbF9ydWxlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGNvbnN0IGhyID0gdHlwZTtcbiAgICAgICAgci5pbnNlcnRIb3Jpem9udGFsUnVsZSA9IG5ldyBJdGVtKHtcbiAgICAgICAgICAgIGVuYWJsZShzdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYW5JbnNlcnQoc3RhdGUsIGhyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBydW4oc3RhdGUsIGRpc3BhdGNoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgoaHIuY3JlYXRlKCkpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMudGFibGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci5pbnNlcnRUYWJsZSA9IG5ldyBJdGVtKHtydW46IChlLCB0cikgPT4gYWRkVGFibGUoZSwgdHIpfSk7XG4gICAgICAgIHIuYWRkQ29sdW1uQmVmb3JlID0gbmV3IEl0ZW0oe3J1bjogYWRkQ29sdW1uQmVmb3JlfSk7XG4gICAgICAgIHIuYWRkQ29sdW1uQWZ0ZXIgPSBuZXcgSXRlbSh7cnVuOiBhZGRDb2x1bW5BZnRlcn0pO1xuICAgICAgICByLmRlbGV0ZUNvbHVtbiA9IG5ldyBJdGVtKHtydW46IGRlbGV0ZUNvbHVtbn0pO1xuICAgICAgICByLmFkZFJvd0JlZm9yZSA9IG5ldyBJdGVtKHtydW46IGFkZFJvd0JlZm9yZX0pO1xuICAgICAgICByLmFkZFJvd0FmdGVyID0gbmV3IEl0ZW0oe3J1bjogYWRkUm93QWZ0ZXJ9KTtcbiAgICAgICAgci5kZWxldGVSb3cgPSBuZXcgSXRlbSh7cnVuOiBkZWxldGVSb3d9KTtcbiAgICAgICAgci5kZWxldGVUYWJsZSA9IG5ldyBJdGVtKHtydW46IGRlbGV0ZVRhYmxlfSk7XG4gICAgICAgIHIubWVyZ2VDZWxscyA9IG5ldyBJdGVtKHtydW46IG1lcmdlQ2VsbHN9KTtcbiAgICAgICAgci5zcGxpdENlbGwgPSBuZXcgSXRlbSh7cnVuOiBzcGxpdENlbGx9KTtcbiAgICAgICAgci50b2dnbGVIZWFkZXJDb2x1bW4gPSBuZXcgSXRlbSh7cnVuOiB0b2dnbGVIZWFkZXJDb2x1bW59KTtcbiAgICAgICAgci50b2dnbGVIZWFkZXJSb3cgPSBuZXcgSXRlbSh7cnVuOiB0b2dnbGVIZWFkZXJSb3d9KTtcbiAgICAgICAgci50b2dnbGVIZWFkZXJDZWxsID0gbmV3IEl0ZW0oe3J1bjogdG9nZ2xlSGVhZGVyQ2VsbH0pO1xuICAgIH1cblxuICAgIHJldHVybiByO1xufVxuIl19
@@ -0,0 +1,43 @@
1
+ const ALIGN_PATTERN = /(left|right|center|justify)/;
2
+ // https://github.com/ProseMirror/prosemirror-schema-basic/blob/master/src/schema-basic.js
3
+ // :: NodeSpec A plain paragraph textblock. Represented in the DOM
4
+ // as a `<p>` element.
5
+ export const paragraphWithAlignment = {
6
+ attrs: {
7
+ align: { default: null },
8
+ id: { default: null },
9
+ },
10
+ content: 'inline*',
11
+ group: 'block',
12
+ parseDOM: [
13
+ {
14
+ tag: 'p',
15
+ getAttrs: (dom) => {
16
+ if (!(dom instanceof HTMLElement)) {
17
+ return;
18
+ }
19
+ const { textAlign } = dom.style;
20
+ let align = dom.getAttribute('align') || textAlign || '';
21
+ align = ALIGN_PATTERN.test(align) ? align : null;
22
+ const id = dom.getAttribute('id') || '';
23
+ return { align, id };
24
+ },
25
+ },
26
+ ],
27
+ toDOM: node => {
28
+ const { align, id } = node.attrs;
29
+ const attrs = {};
30
+ let style = '';
31
+ if (align && align !== 'left') {
32
+ style += `text-align: ${align};`;
33
+ }
34
+ if (style) {
35
+ attrs.style = style;
36
+ }
37
+ if (id) {
38
+ attrs.id = id;
39
+ }
40
+ return ['p', attrs, 0];
41
+ },
42
+ };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWdyYXBoLXdpdGgtYWxpZ25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9wYXJhZ3JhcGgtd2l0aC1hbGlnbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxhQUFhLEdBQUcsNkJBQTZCLENBQUM7QUFFcEQsMEZBQTBGO0FBQzFGLGtFQUFrRTtBQUNsRSxzQkFBc0I7QUFDdEIsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWE7SUFDNUMsS0FBSyxFQUFFO1FBQ0gsS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQztRQUN0QixFQUFFLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDO0tBQ3RCO0lBQ0QsT0FBTyxFQUFFLFNBQVM7SUFDbEIsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUU7UUFDTjtZQUNJLEdBQUcsRUFBRSxHQUFHO1lBQ1IsUUFBUSxFQUFFLENBQUMsR0FBa0IsRUFBa0QsRUFBRTtnQkFDN0UsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLFdBQVcsQ0FBQyxFQUFFO29CQUMvQixPQUFPO2lCQUNWO2dCQUVELE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUU5QixJQUFJLEtBQUssR0FBa0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLElBQUksRUFBRSxDQUFDO2dCQUN4RSxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBRWpELE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUV4QyxPQUFPLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO1lBQ3ZCLENBQUM7U0FDSjtLQUNKO0lBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ1YsTUFBTSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUF5QixFQUFFLENBQUM7UUFFdkMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtZQUMzQixLQUFLLElBQUksZUFBZSxLQUFLLEdBQUcsQ0FBQztTQUNwQztRQUVELElBQUksS0FBSyxFQUFFO1lBQ1AsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDdkI7UUFFRCxJQUFJLEVBQUUsRUFBRTtZQUNKLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05vZGVTcGVjfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5cbmNvbnN0IEFMSUdOX1BBVFRFUk4gPSAvKGxlZnR8cmlnaHR8Y2VudGVyfGp1c3RpZnkpLztcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1Byb3NlTWlycm9yL3Byb3NlbWlycm9yLXNjaGVtYS1iYXNpYy9ibG9iL21hc3Rlci9zcmMvc2NoZW1hLWJhc2ljLmpzXG4vLyA6OiBOb2RlU3BlYyBBIHBsYWluIHBhcmFncmFwaCB0ZXh0YmxvY2suIFJlcHJlc2VudGVkIGluIHRoZSBET01cbi8vIGFzIGEgYDxwPmAgZWxlbWVudC5cbmV4cG9ydCBjb25zdCBwYXJhZ3JhcGhXaXRoQWxpZ25tZW50OiBOb2RlU3BlYyA9IHtcbiAgICBhdHRyczoge1xuICAgICAgICBhbGlnbjoge2RlZmF1bHQ6IG51bGx9LFxuICAgICAgICBpZDoge2RlZmF1bHQ6IG51bGx9LFxuICAgIH0sXG4gICAgY29udGVudDogJ2lubGluZSonLFxuICAgIGdyb3VwOiAnYmxvY2snLFxuICAgIHBhcnNlRE9NOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRhZzogJ3AnLFxuICAgICAgICAgICAgZ2V0QXR0cnM6IChkb206IE5vZGUgfCBzdHJpbmcpOiB1bmRlZmluZWQgfCB7YWxpZ246IG51bGwgfCBzdHJpbmc7IGlkOiBzdHJpbmd9ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIShkb20gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHt0ZXh0QWxpZ259ID0gZG9tLnN0eWxlO1xuXG4gICAgICAgICAgICAgICAgbGV0IGFsaWduOiBzdHJpbmcgfCBudWxsID0gZG9tLmdldEF0dHJpYnV0ZSgnYWxpZ24nKSB8fCB0ZXh0QWxpZ24gfHwgJyc7XG4gICAgICAgICAgICAgICAgYWxpZ24gPSBBTElHTl9QQVRURVJOLnRlc3QoYWxpZ24pID8gYWxpZ24gOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBkb20uZ2V0QXR0cmlidXRlKCdpZCcpIHx8ICcnO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHthbGlnbiwgaWR9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHRvRE9NOiBub2RlID0+IHtcbiAgICAgICAgY29uc3Qge2FsaWduLCBpZH0gPSBub2RlLmF0dHJzO1xuICAgICAgICBjb25zdCBhdHRyczoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcblxuICAgICAgICBsZXQgc3R5bGUgPSAnJztcbiAgICAgICAgaWYgKGFsaWduICYmIGFsaWduICE9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHN0eWxlICs9IGB0ZXh0LWFsaWduOiAke2FsaWdufTtgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0eWxlKSB7XG4gICAgICAgICAgICBhdHRycy5zdHlsZSA9IHN0eWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBhdHRycy5pZCA9IGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFsncCcsIGF0dHJzLCAwXTtcbiAgICB9LFxufTtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { marks, nodes } from 'prosemirror-schema-basic';
2
+ import { addListNodes } from 'prosemirror-schema-list';
3
+ import { Schema } from 'prosemirror-model';
4
+ import { tableNodes } from 'prosemirror-tables';
5
+ import { paragraphWithAlignment } from './paragraph-with-alignment';
6
+ const basicNodes = {
7
+ heading: nodes.heading,
8
+ doc: nodes.doc,
9
+ paragraph: nodes.paragraph,
10
+ text: nodes.text,
11
+ hard_break: nodes.hard_break,
12
+ };
13
+ const basicMarks = {
14
+ link: marks.link,
15
+ em: marks.em,
16
+ strong: marks.strong,
17
+ };
18
+ const tmpSchema = new Schema({ nodes: basicNodes, marks: basicMarks });
19
+ export const basicSchema = new Schema({
20
+ nodes: addListNodes(tmpSchema.spec.nodes, 'paragraph block*', 'block'),
21
+ marks: tmpSchema.spec.marks,
22
+ });
23
+ const tmpSchema2 = new Schema({
24
+ nodes: {
25
+ ...nodes,
26
+ ...tableNodes({
27
+ tableGroup: 'block',
28
+ cellContent: 'block+',
29
+ cellAttributes: {
30
+ background: {
31
+ default: null,
32
+ getFromDOM(dom) {
33
+ return dom.style.backgroundColor || null;
34
+ },
35
+ setDOMAttr(value, attrs) {
36
+ if (value) {
37
+ attrs.style = (attrs.style || '') + `background-color: ${value};`;
38
+ }
39
+ },
40
+ },
41
+ },
42
+ }),
43
+ paragraph: paragraphWithAlignment,
44
+ },
45
+ marks: basicMarks,
46
+ });
47
+ export const advancedSchema = new Schema({
48
+ nodes: addListNodes(tmpSchema2.spec.nodes, 'paragraph block*', 'block'),
49
+ marks: basicMarks,
50
+ });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUlsRSxNQUFNLFVBQVUsR0FBZTtJQUMzQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87SUFDdEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2QsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0lBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Q0FDL0IsQ0FBQztBQUdGLE1BQU0sVUFBVSxHQUFlO0lBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7SUFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Q0FDdkIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDbEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdEUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSztDQUM5QixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQztJQUMxQixLQUFLLEVBQUU7UUFDSCxHQUFHLEtBQUs7UUFDUixHQUFHLFVBQVUsQ0FBQztZQUNWLFVBQVUsRUFBRSxPQUFPO1lBQ25CLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLGNBQWMsRUFBRTtnQkFDWixVQUFVLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLElBQUk7b0JBQ2IsVUFBVSxDQUFDLEdBQVk7d0JBQ25CLE9BQVEsR0FBbUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztvQkFDOUQsQ0FBQztvQkFDRCxVQUFVLENBQUMsS0FBVSxFQUFFLEtBQVU7d0JBQzdCLElBQUksS0FBSyxFQUFFOzRCQUNQLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixLQUFLLEdBQUcsQ0FBQzt5QkFDckU7b0JBQ0wsQ0FBQztpQkFDSjthQUNKO1NBQ0osQ0FBQztRQUNGLFNBQVMsRUFBRSxzQkFBc0I7S0FDcEM7SUFDRCxLQUFLLEVBQUUsVUFBVTtDQUNwQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDckMsS0FBSyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdkUsS0FBSyxFQUFFLFVBQVU7Q0FDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXJrcywgbm9kZXN9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1iYXNpYyc7XG5pbXBvcnQge2FkZExpc3ROb2Rlc30gZnJvbSAncHJvc2VtaXJyb3Itc2NoZW1hLWxpc3QnO1xuaW1wb3J0IHtTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7dGFibGVOb2Rlc30gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcbmltcG9ydCB7cGFyYWdyYXBoV2l0aEFsaWdubWVudH0gZnJvbSAnLi9wYXJhZ3JhcGgtd2l0aC1hbGlnbm1lbnQnO1xuXG4vLyBLZWVwIG9ubHkgYmFzaWMgZWxlbWVudHNcbnR5cGUgQmFzaWNOb2RlcyA9IE9taXQ8dHlwZW9mIG5vZGVzLCAnaW1hZ2UnIHwgJ2NvZGVfYmxvY2snIHwgJ2Jsb2NrcXVvdGUnIHwgJ2hvcml6b250YWxfcnVsZSc+O1xuY29uc3QgYmFzaWNOb2RlczogQmFzaWNOb2RlcyA9IHtcbiAgICBoZWFkaW5nOiBub2Rlcy5oZWFkaW5nLFxuICAgIGRvYzogbm9kZXMuZG9jLFxuICAgIHBhcmFncmFwaDogbm9kZXMucGFyYWdyYXBoLFxuICAgIHRleHQ6IG5vZGVzLnRleHQsXG4gICAgaGFyZF9icmVhazogbm9kZXMuaGFyZF9icmVhayxcbn07XG5cbnR5cGUgQmFzaWNNYXJrcyA9IE9taXQ8dHlwZW9mIG1hcmtzLCAnY29kZSc+O1xuY29uc3QgYmFzaWNNYXJrczogQmFzaWNNYXJrcyA9IHtcbiAgICBsaW5rOiBtYXJrcy5saW5rLFxuICAgIGVtOiBtYXJrcy5lbSxcbiAgICBzdHJvbmc6IG1hcmtzLnN0cm9uZyxcbn07XG5cbmNvbnN0IHRtcFNjaGVtYSA9IG5ldyBTY2hlbWEoe25vZGVzOiBiYXNpY05vZGVzLCBtYXJrczogYmFzaWNNYXJrc30pO1xuXG5leHBvcnQgY29uc3QgYmFzaWNTY2hlbWEgPSBuZXcgU2NoZW1hKHtcbiAgICBub2RlczogYWRkTGlzdE5vZGVzKHRtcFNjaGVtYS5zcGVjLm5vZGVzLCAncGFyYWdyYXBoIGJsb2NrKicsICdibG9jaycpLFxuICAgIG1hcmtzOiB0bXBTY2hlbWEuc3BlYy5tYXJrcyxcbn0pO1xuXG5jb25zdCB0bXBTY2hlbWEyID0gbmV3IFNjaGVtYSh7XG4gICAgbm9kZXM6IHtcbiAgICAgICAgLi4ubm9kZXMsXG4gICAgICAgIC4uLnRhYmxlTm9kZXMoe1xuICAgICAgICAgICAgdGFibGVHcm91cDogJ2Jsb2NrJyxcbiAgICAgICAgICAgIGNlbGxDb250ZW50OiAnYmxvY2srJyxcbiAgICAgICAgICAgIGNlbGxBdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBnZXRGcm9tRE9NKGRvbTogRWxlbWVudCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkb20gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJhY2tncm91bmRDb2xvciB8fCBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzZXRET01BdHRyKHZhbHVlOiBhbnksIGF0dHJzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzLnN0eWxlID0gKGF0dHJzLnN0eWxlIHx8ICcnKSArIGBiYWNrZ3JvdW5kLWNvbG9yOiAke3ZhbHVlfTtgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgcGFyYWdyYXBoOiBwYXJhZ3JhcGhXaXRoQWxpZ25tZW50LFxuICAgIH0sXG4gICAgbWFya3M6IGJhc2ljTWFya3MsXG59KTtcblxuZXhwb3J0IGNvbnN0IGFkdmFuY2VkU2NoZW1hID0gbmV3IFNjaGVtYSh7XG4gICAgbm9kZXM6IGFkZExpc3ROb2Rlcyh0bXBTY2hlbWEyLnNwZWMubm9kZXMsICdwYXJhZ3JhcGggYmxvY2sqJywgJ2Jsb2NrJyksXG4gICAgbWFya3M6IGJhc2ljTWFya3MsXG59KTtcbiJdfQ==
@@ -32,6 +32,6 @@ export function addTable(state, dispatch, { rowsCount = 3, colsCount = 3, withHe
32
32
  const resolvedPos = tr.doc.resolve(offset);
33
33
  // move cursor into table
34
34
  tr.setSelection(TextSelection.near(resolvedPos));
35
- dispatch === null || dispatch === void 0 ? void 0 : dispatch(tr);
35
+ dispatch?.(tr);
36
36
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxhQUFhLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsU0FBUyxVQUFVLENBQ2YsUUFBa0IsRUFDbEIsV0FBaUU7SUFFakUsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDOUYsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUNoQixLQUFrQixFQUNsQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixhQUFzQixFQUN0QixXQUFpRTtJQUVqRSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFakIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQy9DLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWpELElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtRQUVELElBQUksYUFBYSxFQUFFO1lBQ2YsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFOUQsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQztTQUNKO0tBQ0o7SUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFFaEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGFBQWEsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDaEc7SUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDcEIsS0FBa0IsRUFDbEIsUUFBb0MsRUFDcEMsRUFDSSxTQUFTLEdBQUcsQ0FBQyxFQUNiLFNBQVMsR0FBRyxDQUFDLEVBQ2IsYUFBYSxHQUFHLElBQUksRUFDcEIsV0FBVyxNQU1YLEVBQUU7SUFFTixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTdDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkYsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqRSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUzQyx5QkFBeUI7SUFDekIsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFakQsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VkaXRvclN0YXRlLCBUZXh0U2VsZWN0aW9uLCBUcmFuc2FjdGlvbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHtGcmFnbWVudCwgTm9kZSBhcyBQcm9zZW1pcnJvck5vZGUsIE5vZGVUeXBlfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge3RhYmxlTm9kZVR5cGVzfSBmcm9tICdwcm9zZW1pcnJvci10YWJsZXMnO1xuXG5mdW5jdGlvbiBjcmVhdGVDZWxsKFxuICAgIGNlbGxUeXBlOiBOb2RlVHlwZSxcbiAgICBjZWxsQ29udGVudD86IEZyYWdtZW50IHwgUHJvc2VtaXJyb3JOb2RlIHwgQXJyYXk8UHJvc2VtaXJyb3JOb2RlPixcbik6IFByb3NlbWlycm9yTm9kZTxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGNlbGxDb250ZW50ID8gY2VsbFR5cGUuY3JlYXRlQ2hlY2tlZChudWxsLCBjZWxsQ29udGVudCkgOiBjZWxsVHlwZS5jcmVhdGVBbmRGaWxsKCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRhYmxlKFxuICAgIHN0YXRlOiBFZGl0b3JTdGF0ZSxcbiAgICByb3dzQ291bnQ6IG51bWJlcixcbiAgICBjb2xzQ291bnQ6IG51bWJlcixcbiAgICB3aXRoSGVhZGVyUm93OiBib29sZWFuLFxuICAgIGNlbGxDb250ZW50PzogRnJhZ21lbnQgfCBQcm9zZW1pcnJvck5vZGUgfCBBcnJheTxQcm9zZW1pcnJvck5vZGU+LFxuKTogUHJvc2VtaXJyb3JOb2RlIHtcbiAgICBjb25zdCB0eXBlcyA9IHRhYmxlTm9kZVR5cGVzKHN0YXRlLnNjaGVtYSk7XG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBbXTtcbiAgICBjb25zdCBjZWxscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHNDb3VudDsgaW5kZXggKz0gMSkge1xuICAgICAgICBjb25zdCBjZWxsID0gY3JlYXRlQ2VsbCh0eXBlcy5jZWxsLCBjZWxsQ29udGVudCk7XG5cbiAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgIGNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2l0aEhlYWRlclJvdykge1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyQ2VsbCA9IGNyZWF0ZUNlbGwodHlwZXMuaGVhZGVyX2NlbGwsIGNlbGxDb250ZW50KTtcblxuICAgICAgICAgICAgaWYgKGhlYWRlckNlbGwpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJDZWxscy5wdXNoKGhlYWRlckNlbGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgcm93cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd3NDb3VudDsgaW5kZXggKz0gMSkge1xuICAgICAgICByb3dzLnB1c2godHlwZXMucm93LmNyZWF0ZUNoZWNrZWQobnVsbCwgd2l0aEhlYWRlclJvdyAmJiBpbmRleCA9PT0gMCA/IGhlYWRlckNlbGxzIDogY2VsbHMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXMudGFibGUuY3JlYXRlQ2hlY2tlZChudWxsLCByb3dzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFRhYmxlKFxuICAgIHN0YXRlOiBFZGl0b3JTdGF0ZSxcbiAgICBkaXNwYXRjaD86ICh0cjogVHJhbnNhY3Rpb24pID0+IHZvaWQsXG4gICAge1xuICAgICAgICByb3dzQ291bnQgPSAzLFxuICAgICAgICBjb2xzQ291bnQgPSAzLFxuICAgICAgICB3aXRoSGVhZGVyUm93ID0gdHJ1ZSxcbiAgICAgICAgY2VsbENvbnRlbnQsXG4gICAgfToge1xuICAgICAgICByb3dzQ291bnQ/OiBudW1iZXI7XG4gICAgICAgIGNvbHNDb3VudD86IG51bWJlcjtcbiAgICAgICAgd2l0aEhlYWRlclJvdz86IGJvb2xlYW47XG4gICAgICAgIGNlbGxDb250ZW50PzogRnJhZ21lbnQgfCBQcm9zZW1pcnJvck5vZGUgfCBBcnJheTxQcm9zZW1pcnJvck5vZGU+O1xuICAgIH0gPSB7fSxcbik6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldCA9IHN0YXRlLnRyLnNlbGVjdGlvbi5hbmNob3IgKyAxO1xuXG4gICAgY29uc3Qgbm9kZXMgPSBjcmVhdGVUYWJsZShzdGF0ZSwgcm93c0NvdW50LCBjb2xzQ291bnQsIHdpdGhIZWFkZXJSb3csIGNlbGxDb250ZW50KTtcbiAgICBjb25zdCB0ciA9IHN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKG5vZGVzKS5zY3JvbGxJbnRvVmlldygpO1xuICAgIGNvbnN0IHJlc29sdmVkUG9zID0gdHIuZG9jLnJlc29sdmUob2Zmc2V0KTtcblxuICAgIC8vIG1vdmUgY3Vyc29yIGludG8gdGFibGVcbiAgICB0ci5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5uZWFyKHJlc29sdmVkUG9zKSk7XG5cbiAgICBkaXNwYXRjaD8uKHRyKTtcbn1cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxhQUFhLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsU0FBUyxVQUFVLENBQ2YsUUFBa0IsRUFDbEIsV0FBaUU7SUFFakUsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDOUYsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUNoQixLQUFrQixFQUNsQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixhQUFzQixFQUN0QixXQUFpRTtJQUVqRSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFakIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQy9DLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWpELElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtRQUVELElBQUksYUFBYSxFQUFFO1lBQ2YsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFOUQsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQztTQUNKO0tBQ0o7SUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFFaEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGFBQWEsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDaEc7SUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDcEIsS0FBa0IsRUFDbEIsUUFBb0MsRUFDcEMsRUFDSSxTQUFTLEdBQUcsQ0FBQyxFQUNiLFNBQVMsR0FBRyxDQUFDLEVBQ2IsYUFBYSxHQUFHLElBQUksRUFDcEIsV0FBVyxNQU1YLEVBQUU7SUFFTixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTdDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkYsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqRSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUzQyx5QkFBeUI7SUFDekIsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFakQsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWRpdG9yU3RhdGUsIFRleHRTZWxlY3Rpb24sIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0ZyYWdtZW50LCBOb2RlIGFzIFByb3NlbWlycm9yTm9kZSwgTm9kZVR5cGV9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7dGFibGVOb2RlVHlwZXN9IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNlbGwoXG4gICAgY2VsbFR5cGU6IE5vZGVUeXBlLFxuICAgIGNlbGxDb250ZW50PzogRnJhZ21lbnQgfCBQcm9zZW1pcnJvck5vZGUgfCBBcnJheTxQcm9zZW1pcnJvck5vZGU+LFxuKTogUHJvc2VtaXJyb3JOb2RlPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY2VsbENvbnRlbnQgPyBjZWxsVHlwZS5jcmVhdGVDaGVja2VkKG51bGwsIGNlbGxDb250ZW50KSA6IGNlbGxUeXBlLmNyZWF0ZUFuZEZpbGwoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGFibGUoXG4gICAgc3RhdGU6IEVkaXRvclN0YXRlLFxuICAgIHJvd3NDb3VudDogbnVtYmVyLFxuICAgIGNvbHNDb3VudDogbnVtYmVyLFxuICAgIHdpdGhIZWFkZXJSb3c6IGJvb2xlYW4sXG4gICAgY2VsbENvbnRlbnQ/OiBGcmFnbWVudCB8IFByb3NlbWlycm9yTm9kZSB8IEFycmF5PFByb3NlbWlycm9yTm9kZT4sXG4pOiBQcm9zZW1pcnJvck5vZGUge1xuICAgIGNvbnN0IHR5cGVzID0gdGFibGVOb2RlVHlwZXMoc3RhdGUuc2NoZW1hKTtcbiAgICBjb25zdCBoZWFkZXJDZWxscyA9IFtdO1xuICAgIGNvbnN0IGNlbGxzID0gW107XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY29sc0NvdW50OyBpbmRleCArPSAxKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjcmVhdGVDZWxsKHR5cGVzLmNlbGwsIGNlbGxDb250ZW50KTtcblxuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgY2VsbHMucHVzaChjZWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3aXRoSGVhZGVyUm93KSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJDZWxsID0gY3JlYXRlQ2VsbCh0eXBlcy5oZWFkZXJfY2VsbCwgY2VsbENvbnRlbnQpO1xuXG4gICAgICAgICAgICBpZiAoaGVhZGVyQ2VsbCkge1xuICAgICAgICAgICAgICAgIGhlYWRlckNlbGxzLnB1c2goaGVhZGVyQ2VsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb3dzID0gW107XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcm93c0NvdW50OyBpbmRleCArPSAxKSB7XG4gICAgICAgIHJvd3MucHVzaCh0eXBlcy5yb3cuY3JlYXRlQ2hlY2tlZChudWxsLCB3aXRoSGVhZGVyUm93ICYmIGluZGV4ID09PSAwID8gaGVhZGVyQ2VsbHMgOiBjZWxscykpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcy50YWJsZS5jcmVhdGVDaGVja2VkKG51bGwsIHJvd3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFibGUoXG4gICAgc3RhdGU6IEVkaXRvclN0YXRlLFxuICAgIGRpc3BhdGNoPzogKHRyOiBUcmFuc2FjdGlvbikgPT4gdm9pZCxcbiAgICB7XG4gICAgICAgIHJvd3NDb3VudCA9IDMsXG4gICAgICAgIGNvbHNDb3VudCA9IDMsXG4gICAgICAgIHdpdGhIZWFkZXJSb3cgPSB0cnVlLFxuICAgICAgICBjZWxsQ29udGVudCxcbiAgICB9OiB7XG4gICAgICAgIHJvd3NDb3VudD86IG51bWJlcjtcbiAgICAgICAgY29sc0NvdW50PzogbnVtYmVyO1xuICAgICAgICB3aXRoSGVhZGVyUm93PzogYm9vbGVhbjtcbiAgICAgICAgY2VsbENvbnRlbnQ/OiBGcmFnbWVudCB8IFByb3NlbWlycm9yTm9kZSB8IEFycmF5PFByb3NlbWlycm9yTm9kZT47XG4gICAgfSA9IHt9LFxuKTogdm9pZCB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc3RhdGUudHIuc2VsZWN0aW9uLmFuY2hvciArIDE7XG5cbiAgICBjb25zdCBub2RlcyA9IGNyZWF0ZVRhYmxlKHN0YXRlLCByb3dzQ291bnQsIGNvbHNDb3VudCwgd2l0aEhlYWRlclJvdywgY2VsbENvbnRlbnQpO1xuICAgIGNvbnN0IHRyID0gc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgobm9kZXMpLnNjcm9sbEludG9WaWV3KCk7XG4gICAgY29uc3QgcmVzb2x2ZWRQb3MgPSB0ci5kb2MucmVzb2x2ZShvZmZzZXQpO1xuXG4gICAgLy8gbW92ZSBjdXJzb3IgaW50byB0YWJsZVxuICAgIHRyLnNldFNlbGVjdGlvbihUZXh0U2VsZWN0aW9uLm5lYXIocmVzb2x2ZWRQb3MpKTtcblxuICAgIGRpc3BhdGNoPy4odHIpO1xufVxuIl19
@@ -0,0 +1,81 @@
1
+ import { AllSelection, TextSelection } from 'prosemirror-state';
2
+ import { Item } from './item';
3
+ function setTextAlign(tr, schema, alignment) {
4
+ console.log('setTextAlign', alignment);
5
+ const { selection, doc } = tr;
6
+ if (!selection || !doc) {
7
+ return tr;
8
+ }
9
+ const { from, to } = selection;
10
+ const { nodes } = schema;
11
+ const tasks = [];
12
+ alignment = alignment || null;
13
+ const allowedNodeTypes = new Set([
14
+ nodes.paragraph,
15
+ // nodes['blockquote'],
16
+ // nodes['listItem'],
17
+ // nodes['heading'],
18
+ ]);
19
+ doc.nodesBetween(from, to, (node, pos) => {
20
+ const nodeType = node.type;
21
+ const align = node.attrs.align || null;
22
+ if (align !== alignment && allowedNodeTypes.has(nodeType)) {
23
+ tasks.push({
24
+ node,
25
+ pos,
26
+ nodeType,
27
+ });
28
+ }
29
+ return true;
30
+ });
31
+ if (!tasks.length) {
32
+ return tr;
33
+ }
34
+ tasks.forEach(job => {
35
+ const { node, pos, nodeType } = job;
36
+ const newAttrs = {
37
+ ...node.attrs,
38
+ align: alignment ? alignment : null,
39
+ };
40
+ console.log('newAttrs', newAttrs);
41
+ tr = tr.setNodeMarkup(pos, nodeType, newAttrs, node.marks);
42
+ });
43
+ return tr;
44
+ }
45
+ export class TextAlignItem extends Item {
46
+ constructor(alignment) {
47
+ super({
48
+ active: state => {
49
+ const { selection, doc } = state;
50
+ const { from, to } = selection;
51
+ let keepLooking = true;
52
+ let active = false;
53
+ doc.nodesBetween(from, to, node => {
54
+ if (keepLooking && node.attrs.align === alignment) {
55
+ keepLooking = false;
56
+ active = true;
57
+ }
58
+ return keepLooking;
59
+ });
60
+ return active;
61
+ },
62
+ enable: state => {
63
+ const { selection } = state;
64
+ return selection instanceof TextSelection || selection instanceof AllSelection;
65
+ },
66
+ run: (state, dispatch) => {
67
+ const { schema, selection } = state;
68
+ console.log(this);
69
+ const tr = setTextAlign(state.tr.setSelection(selection), schema, this.active ? null : alignment);
70
+ if (tr.docChanged) {
71
+ dispatch?.(tr);
72
+ return true;
73
+ }
74
+ else {
75
+ return false;
76
+ }
77
+ },
78
+ });
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hbGlnbi1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy90ZXh0LWFsaWduLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBSTVCLFNBQVMsWUFBWSxDQUFDLEVBQWUsRUFBRSxNQUFjLEVBQUUsU0FBMkI7SUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsTUFBTSxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsR0FBRyxFQUFFLENBQUM7SUFDNUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNwQixPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsTUFBTSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsR0FBRyxTQUFTLENBQUM7SUFDN0IsTUFBTSxFQUFDLEtBQUssRUFBQyxHQUFHLE1BQU0sQ0FBQztJQUV2QixNQUFNLEtBQUssR0FJTCxFQUFFLENBQUM7SUFFVCxTQUFTLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQztJQUU5QixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxTQUFTO1FBQ2YsdUJBQXVCO1FBQ3ZCLHFCQUFxQjtRQUNyQixvQkFBb0I7S0FDdkIsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOb2RlLCBOb2RlVHlwZSwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge0FsbFNlbGVjdGlvbiwgVGV4dFNlbGVjdGlvbiwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcblxudHlwZSBBbGlnbm1lbnQgPSAnbGVmdCcgfCAncmlnaHQnIHwgJ2NlbnRlcicgfCAnanVzdGlmeSc7XG5cbmZ1bmN0aW9uIHNldFRleHRBbGlnbih0cjogVHJhbnNhY3Rpb24sIHNjaGVtYTogU2NoZW1hLCBhbGlnbm1lbnQ6IG51bGwgfCBBbGlnbm1lbnQpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc29sZS5sb2coJ3NldFRleHRBbGlnbicsIGFsaWdubWVudCk7XG4gICAgY29uc3Qge3NlbGVjdGlvbiwgZG9jfSA9IHRyO1xuICAgIGlmICghc2VsZWN0aW9uIHx8ICFkb2MpIHtcbiAgICAgICAgcmV0dXJuIHRyO1xuICAgIH1cbiAgICBjb25zdCB7ZnJvbSwgdG99ID0gc2VsZWN0aW9uO1xuICAgIGNvbnN0IHtub2Rlc30gPSBzY2hlbWE7XG5cbiAgICBjb25zdCB0YXNrczoge1xuICAgICAgICBub2RlOiBOb2RlO1xuICAgICAgICBwb3M6IG51bWJlcjtcbiAgICAgICAgbm9kZVR5cGU6IE5vZGVUeXBlO1xuICAgIH1bXSA9IFtdO1xuXG4gICAgYWxpZ25tZW50ID0gYWxpZ25tZW50IHx8IG51bGw7XG5cbiAgICBjb25zdCBhbGxvd2VkTm9kZVR5cGVzID0gbmV3IFNldChbXG4gICAgICAgIG5vZGVzLnBhcmFncmFwaCxcbiAgICAgICAgLy8gbm9kZXNbJ2Jsb2NrcXVvdGUnXSxcbiAgICAgICAgLy8gbm9kZXNbJ2xpc3RJdGVtJ10sXG4gICAgICAgIC8vIG5vZGVzWydoZWFkaW5nJ10sXG4gICAgXSk7XG5cbiAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVUeXBlID0gbm9kZS50eXBlO1xuICAgICAgICBjb25zdCBhbGlnbiA9IG5vZGUuYXR0cnMuYWxpZ24gfHwgbnVsbDtcbiAgICAgICAgaWYgKGFsaWduICE9PSBhbGlnbm1lbnQgJiYgYWxsb3dlZE5vZGVUeXBlcy5oYXMobm9kZVR5cGUpKSB7XG4gICAgICAgICAgICB0YXNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIHBvcyxcbiAgICAgICAgICAgICAgICBub2RlVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKCF0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRyO1xuICAgIH1cblxuICAgIHRhc2tzLmZvckVhY2goam9iID0+IHtcbiAgICAgICAgY29uc3Qge25vZGUsIHBvcywgbm9kZVR5cGV9ID0gam9iO1xuICAgICAgICBjb25zdCBuZXdBdHRycyA9IHtcbiAgICAgICAgICAgIC4uLm5vZGUuYXR0cnMsXG4gICAgICAgICAgICBhbGlnbjogYWxpZ25tZW50ID8gYWxpZ25tZW50IDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ25ld0F0dHJzJywgbmV3QXR0cnMpO1xuICAgICAgICB0ciA9IHRyLnNldE5vZGVNYXJrdXAocG9zLCBub2RlVHlwZSwgbmV3QXR0cnMsIG5vZGUubWFya3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyO1xufVxuXG5leHBvcnQgY2xhc3MgVGV4dEFsaWduSXRlbSBleHRlbmRzIEl0ZW0ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhbGlnbm1lbnQ6IEFsaWdubWVudCkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBhY3RpdmU6IHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7c2VsZWN0aW9uLCBkb2N9ID0gc3RhdGU7XG4gICAgICAgICAgICAgICAgY29uc3Qge2Zyb20sIHRvfSA9IHNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICBsZXQga2VlcExvb2tpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBhY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCBub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtlZXBMb29raW5nICYmIG5vZGUuYXR0cnMuYWxpZ24gPT09IGFsaWdubWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga2VlcExvb2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtlZXBMb29raW5nO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVuYWJsZTogc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtzZWxlY3Rpb259ID0gc3RhdGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24gfHwgc2VsZWN0aW9uIGluc3RhbmNlb2YgQWxsU2VsZWN0aW9uO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcnVuOiAoc3RhdGUsIGRpc3BhdGNoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge3NjaGVtYSwgc2VsZWN0aW9ufSA9IHN0YXRlO1xuXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBzZXRUZXh0QWxpZ24oc3RhdGUudHIuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiksIHNjaGVtYSwgdGhpcy5hY3RpdmUgPyBudWxsIDogYWxpZ25tZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodHIuZG9jQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaD8uKHRyKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==