@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.
- package/{esm2015/ecodev-natural-editor.js → esm2020/ecodev-natural-editor.mjs} +0 -0
- package/esm2020/lib/editor/editor.component.mjs +213 -0
- package/{esm2015/lib/editor.module.js → esm2020/lib/editor.module.mjs} +4 -4
- package/{esm2015/lib/link-dialog/link-dialog.component.js → esm2020/lib/link-dialog/link-dialog.component.mjs} +5 -8
- package/esm2020/lib/utils/image.mjs +81 -0
- package/{esm2015/lib/utils/inputrules.js → esm2020/lib/utils/inputrules.mjs} +0 -0
- package/{esm2015/lib/utils/item.js → esm2020/lib/utils/item.mjs} +1 -1
- package/esm2020/lib/utils/keymap.mjs +115 -0
- package/esm2020/lib/utils/menu.mjs +184 -0
- package/esm2020/lib/utils/paragraph-with-alignment.mjs +43 -0
- package/esm2020/lib/utils/schema.mjs +51 -0
- package/{esm2015/lib/utils/table.js → esm2020/lib/utils/table.mjs} +2 -2
- package/esm2020/lib/utils/text-align-item.mjs +81 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{ecodev-natural-editor.js → ecodev-natural-editor.mjs} +39 -41
- package/fesm2015/ecodev-natural-editor.mjs.map +1 -0
- package/fesm2020/ecodev-natural-editor.mjs +1001 -0
- package/fesm2020/ecodev-natural-editor.mjs.map +1 -0
- package/package.json +22 -8
- package/src/lib/editor/_editor.theme.scss +1 -1
- package/theming/_natural-editor.theme.scss +1 -1
- package/bundles/ecodev-natural-editor.umd.js +0 -1351
- package/bundles/ecodev-natural-editor.umd.js.map +0 -1
- package/esm2015/lib/editor/editor.component.js +0 -219
- package/esm2015/lib/utils/image.js +0 -81
- package/esm2015/lib/utils/keymap.js +0 -115
- package/esm2015/lib/utils/menu.js +0 -178
- package/esm2015/lib/utils/paragraph-with-alignment.js +0 -43
- package/esm2015/lib/utils/schema.js +0 -47
- package/esm2015/lib/utils/text-align-item.js +0 -78
- 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
|
|
35
|
+
dispatch?.(tr);
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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==
|
|
File without changes
|