@ecodev/natural-editor 1.1.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.
@@ -0,0 +1,220 @@
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
+ /**
6
+ * One item of the menu.
7
+ *
8
+ * This is the equivalent of `MenuItem` but without all the rendering logic since we use Angular
9
+ * templates for rendering. Also it caches the state of the item everytime the editor state changes,
10
+ * so Angular can query the state as often as needed without performance hit.
11
+ */
12
+ export class Item {
13
+ constructor(spec) {
14
+ this.spec = spec;
15
+ /**
16
+ * Whether the item is 'active' (for example, the item for toggling the strong mark might be active when the cursor is in strong text).
17
+ */
18
+ this.active = false;
19
+ /**
20
+ * Button is shown but disabled, because the item cannot be (un-)applied
21
+ */
22
+ this.disabled = false;
23
+ /**
24
+ * Whether the item is shown at the moment
25
+ */
26
+ this.show = true;
27
+ }
28
+ /**
29
+ * Update the item state according to the editor state
30
+ */
31
+ update(view, state) {
32
+ if (this.spec.active) {
33
+ this.active = this.spec.active(state);
34
+ }
35
+ if (this.spec.enable) {
36
+ this.disabled = !this.spec.enable(state);
37
+ }
38
+ if (this.spec.select) {
39
+ this.show = this.spec.select(state);
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Convert built-in `MenuItem` into our Angular specific `Item`
45
+ */
46
+ function toItem(item) {
47
+ return new Item(item.spec);
48
+ }
49
+ function canInsert(state, nodeType) {
50
+ const $from = state.selection.$from;
51
+ for (let d = $from.depth; d >= 0; d--) {
52
+ const index = $from.index(d);
53
+ if ($from.node(d).canReplaceWith(index, index, nodeType)) {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ }
59
+ // function insertImageItem(nodeType: NodeType) {
60
+ // return new MenuItem({
61
+ // enable(state): boolean {
62
+ // return canInsert(state, nodeType);
63
+ // },
64
+ // run(state, _, view) {
65
+ // let {from, to} = state.selection,
66
+ // attrs = null;
67
+ // if (state.selection instanceof NodeSelection && state.selection.node.type == nodeType) {
68
+ // attrs = state.selection.node.attrs;
69
+ // }
70
+ // openPrompt({
71
+ // title: 'Insert image',
72
+ // fields: {
73
+ // src: new TextField({label: 'Location', required: true, value: attrs && attrs.src}),
74
+ // title: new TextField({label: 'Title', value: attrs && attrs.title}),
75
+ // alt: new TextField({
76
+ // label: 'Description',
77
+ // value: attrs ? attrs.alt : state.doc.textBetween(from, to, ' '),
78
+ // }),
79
+ // },
80
+ // callback(attrs) {
81
+ // view.dispatch(view.state.tr.replaceSelectionWith(nodeType.createAndFill(attrs)));
82
+ // view.focus();
83
+ // },
84
+ // });
85
+ // },
86
+ // });
87
+ // }
88
+ function cmdItem(cmd, options = {}, useEnable = false) {
89
+ const passedOptions = Object.assign({ run: cmd }, options);
90
+ if ((!options.enable || useEnable) && !options.select) {
91
+ passedOptions[options.enable ? 'enable' : 'select'] = (state) => cmd(state);
92
+ }
93
+ return new Item(passedOptions);
94
+ }
95
+ function markActive(state, type) {
96
+ const { from, $from, to, empty } = state.selection;
97
+ if (empty) {
98
+ return !!type.isInSet(state.storedMarks || $from.marks());
99
+ }
100
+ else {
101
+ return state.doc.rangeHasMark(from, to, type);
102
+ }
103
+ }
104
+ function markItem(markType, options = {}) {
105
+ const passedOptions = Object.assign({ active(state) {
106
+ return markActive(state, markType);
107
+ } }, options);
108
+ return cmdItem(toggleMark(markType), passedOptions, true);
109
+ }
110
+ function linkItem(markType, dialog) {
111
+ return new Item({
112
+ active(state) {
113
+ return markActive(state, markType);
114
+ },
115
+ enable(state) {
116
+ return !state.selection.empty;
117
+ },
118
+ run(state, dispatch, view) {
119
+ if (markActive(state, markType)) {
120
+ toggleMark(markType)(state, dispatch);
121
+ return true;
122
+ }
123
+ dialog
124
+ .open(LinkDialogComponent, {
125
+ data: {
126
+ href: '',
127
+ title: '',
128
+ },
129
+ })
130
+ .afterClosed()
131
+ .subscribe(result => {
132
+ if (result && !result.title) {
133
+ delete result.title;
134
+ }
135
+ toggleMark(markType, result)(view.state, view.dispatch);
136
+ view.focus();
137
+ });
138
+ },
139
+ });
140
+ }
141
+ function wrapListItem(nodeType) {
142
+ return cmdItem(wrapInList(nodeType));
143
+ }
144
+ /**
145
+ * Given a schema, look for default mark and node types in it and
146
+ * return an object with relevant menu items relating to those marks:
147
+ */
148
+ export function buildMenuItems(schema, dialog) {
149
+ const r = {
150
+ joinUp: toItem(joinUpItem),
151
+ lift: toItem(liftItem),
152
+ selectParentNode: toItem(selectParentNodeItem),
153
+ undo: toItem(undoItem),
154
+ redo: toItem(redoItem),
155
+ };
156
+ let type;
157
+ type = schema.marks.strong;
158
+ if (type) {
159
+ r.toggleStrong = markItem(type);
160
+ }
161
+ type = schema.marks.em;
162
+ if (type) {
163
+ r.toggleEm = markItem(type);
164
+ }
165
+ type = schema.marks.code;
166
+ if (type) {
167
+ r.toggleCode = markItem(type);
168
+ }
169
+ type = schema.marks.link;
170
+ if (type) {
171
+ r.toggleLink = linkItem(type, dialog);
172
+ }
173
+ type = schema.nodes.image;
174
+ if (type) {
175
+ // r.insertImage = insertImageItem(type);
176
+ }
177
+ type = schema.nodes.bullet_list;
178
+ if (type) {
179
+ r.wrapBulletList = wrapListItem(type);
180
+ }
181
+ type = schema.nodes.ordered_list;
182
+ if (type) {
183
+ r.wrapOrderedList = wrapListItem(type);
184
+ }
185
+ type = schema.nodes.blockquote;
186
+ if (type) {
187
+ r.wrapBlockQuote = toItem(wrapItem(type, {}));
188
+ }
189
+ type = schema.nodes.paragraph;
190
+ if (type) {
191
+ r.makeParagraph = toItem(blockTypeItem(type, {}));
192
+ }
193
+ type = schema.nodes.code_block;
194
+ if (type) {
195
+ r.makeCodeBlock = toItem(blockTypeItem(type, {}));
196
+ }
197
+ type = schema.nodes.heading;
198
+ if (type) {
199
+ r.makeHead1 = toItem(blockTypeItem(type, { attrs: { level: 1 } }));
200
+ r.makeHead2 = toItem(blockTypeItem(type, { attrs: { level: 2 } }));
201
+ r.makeHead3 = toItem(blockTypeItem(type, { attrs: { level: 3 } }));
202
+ r.makeHead4 = toItem(blockTypeItem(type, { attrs: { level: 4 } }));
203
+ r.makeHead5 = toItem(blockTypeItem(type, { attrs: { level: 5 } }));
204
+ r.makeHead6 = toItem(blockTypeItem(type, { attrs: { level: 6 } }));
205
+ }
206
+ type = schema.nodes.horizontal_rule;
207
+ if (type) {
208
+ const hr = type;
209
+ r.insertHorizontalRule = new Item({
210
+ enable(state) {
211
+ return canInsert(state, hr);
212
+ },
213
+ run(state, dispatch) {
214
+ dispatch(state.tr.replaceSelectionWith(hr.create()));
215
+ },
216
+ });
217
+ }
218
+ return r;
219
+ }
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFVLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsbUJBQW1CLEVBQWlCLE1BQU0scUNBQXFDLENBQUM7QUFHeEY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLElBQUk7SUFnQmIsWUFBNEIsSUFBa0I7UUFBbEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQWY5Qzs7V0FFRztRQUNJLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFdEI7O1dBRUc7UUFDSSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ0ksU0FBSSxHQUFHLElBQUksQ0FBQztJQUU4QixDQUFDO0lBRWxEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQWdCLEVBQUUsS0FBa0I7UUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lB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QUFvQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekQsQ0FBQztTQUNKLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBibG9ja1R5cGVJdGVtLFxuICAgIGpvaW5VcEl0ZW0sXG4gICAgbGlmdEl0ZW0sXG4gICAgTWVudUl0ZW0sXG4gICAgTWVudUl0ZW1TcGVjLFxuICAgIHJlZG9JdGVtLFxuICAgIHNlbGVjdFBhcmVudE5vZGVJdGVtLFxuICAgIHVuZG9JdGVtLFxuICAgIHdyYXBJdGVtLFxufSBmcm9tICdwcm9zZW1pcnJvci1tZW51JztcbmltcG9ydCB7RWRpdG9yU3RhdGUsIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0NvbW1hbmQsIHRvZ2dsZU1hcmt9IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcbmltcG9ydCB7d3JhcEluTGlzdH0gZnJvbSAncHJvc2VtaXJyb3Itc2NoZW1hLWxpc3QnO1xuaW1wb3J0IHtNYXJrVHlwZSwgTm9kZVR5cGUsIFNjaGVtYX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0xpbmtEaWFsb2dDb21wb25lbnQsIExpbmtEaWFsb2dEYXRhfSBmcm9tICcuL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge0VkaXRvclZpZXd9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xuXG4vKipcbiAqIE9uZSBpdGVtIG9mIHRoZSBtZW51LlxuICpcbiAqIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYE1lbnVJdGVtYCBidXQgd2l0aG91dCBhbGwgdGhlIHJlbmRlcmluZyBsb2dpYyBzaW5jZSB3ZSB1c2UgQW5ndWxhclxuICogdGVtcGxhdGVzIGZvciByZW5kZXJpbmcuIEFsc28gaXQgY2FjaGVzIHRoZSBzdGF0ZSBvZiB0aGUgaXRlbSBldmVyeXRpbWUgdGhlIGVkaXRvciBzdGF0ZSBjaGFuZ2VzLFxuICogc28gQW5ndWxhciBjYW4gcXVlcnkgdGhlIHN0YXRlIGFzIG9mdGVuIGFzIG5lZWRlZCB3aXRob3V0IHBlcmZvcm1hbmNlIGhpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW0ge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGl0ZW0gaXMgJ2FjdGl2ZScgKGZvciBleGFtcGxlLCB0aGUgaXRlbSBmb3IgdG9nZ2xpbmcgdGhlIHN0cm9uZyBtYXJrIG1pZ2h0IGJlIGFjdGl2ZSB3aGVuIHRoZSBjdXJzb3IgaXMgaW4gc3Ryb25nIHRleHQpLlxuICAgICAqL1xuICAgIHB1YmxpYyBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEJ1dHRvbiBpcyBzaG93biBidXQgZGlzYWJsZWQsIGJlY2F1c2UgdGhlIGl0ZW0gY2Fubm90IGJlICh1bi0pYXBwbGllZFxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgaXRlbSBpcyBzaG93biBhdCB0aGUgbW9tZW50XG4gICAgICovXG4gICAgcHVibGljIHNob3cgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNwZWM6IE1lbnVJdGVtU3BlYykge31cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgaXRlbSBzdGF0ZSBhY2NvcmRpbmcgdG8gdGhlIGVkaXRvciBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUodmlldzogRWRpdG9yVmlldywgc3RhdGU6IEVkaXRvclN0YXRlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNwZWMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuc3BlYy5hY3RpdmUoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3BlYy5lbmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSAhdGhpcy5zcGVjLmVuYWJsZShzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zcGVjLnNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zaG93ID0gdGhpcy5zcGVjLnNlbGVjdChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQ29udmVydCBidWlsdC1pbiBgTWVudUl0ZW1gIGludG8gb3VyIEFuZ3VsYXIgc3BlY2lmaWMgYEl0ZW1gXG4gKi9cbmZ1bmN0aW9uIHRvSXRlbShpdGVtOiBNZW51SXRlbSk6IEl0ZW0ge1xuICAgIHJldHVybiBuZXcgSXRlbShpdGVtLnNwZWMpO1xufVxuXG5mdW5jdGlvbiBjYW5JbnNlcnQoc3RhdGU6IEVkaXRvclN0YXRlLCBub2RlVHlwZTogTm9kZVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCAkZnJvbSA9IHN0YXRlLnNlbGVjdGlvbi4kZnJvbTtcbiAgICBmb3IgKGxldCBkID0gJGZyb20uZGVwdGg7IGQgPj0gMDsgZC0tKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gJGZyb20uaW5kZXgoZCk7XG4gICAgICAgIGlmICgkZnJvbS5ub2RlKGQpLmNhblJlcGxhY2VXaXRoKGluZGV4LCBpbmRleCwgbm9kZVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLy8gZnVuY3Rpb24gaW5zZXJ0SW1hZ2VJdGVtKG5vZGVUeXBlOiBOb2RlVHlwZSkge1xuLy8gICAgIHJldHVybiBuZXcgTWVudUl0ZW0oe1xuLy8gICAgICAgICBlbmFibGUoc3RhdGUpOiBib29sZWFuIHtcbi8vICAgICAgICAgICAgIHJldHVybiBjYW5JbnNlcnQoc3RhdGUsIG5vZGVUeXBlKTtcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAgcnVuKHN0YXRlLCBfLCB2aWV3KSB7XG4vLyAgICAgICAgICAgICBsZXQge2Zyb20sIHRvfSA9IHN0YXRlLnNlbGVjdGlvbixcbi8vICAgICAgICAgICAgICAgICBhdHRycyA9IG51bGw7XG4vLyAgICAgICAgICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzdGF0ZS5zZWxlY3Rpb24ubm9kZS50eXBlID09IG5vZGVUeXBlKSB7XG4vLyAgICAgICAgICAgICAgICAgYXR0cnMgPSBzdGF0ZS5zZWxlY3Rpb24ubm9kZS5hdHRycztcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgIG9wZW5Qcm9tcHQoe1xuLy8gICAgICAgICAgICAgICAgIHRpdGxlOiAnSW5zZXJ0IGltYWdlJyxcbi8vICAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbi8vICAgICAgICAgICAgICAgICAgICAgc3JjOiBuZXcgVGV4dEZpZWxkKHtsYWJlbDogJ0xvY2F0aW9uJywgcmVxdWlyZWQ6IHRydWUsIHZhbHVlOiBhdHRycyAmJiBhdHRycy5zcmN9KSxcbi8vICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5ldyBUZXh0RmllbGQoe2xhYmVsOiAnVGl0bGUnLCB2YWx1ZTogYXR0cnMgJiYgYXR0cnMudGl0bGV9KSxcbi8vICAgICAgICAgICAgICAgICAgICAgYWx0OiBuZXcgVGV4dEZpZWxkKHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRGVzY3JpcHRpb24nLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGF0dHJzID8gYXR0cnMuYWx0IDogc3RhdGUuZG9jLnRleHRCZXR3ZWVuKGZyb20sIHRvLCAnICcpLFxuLy8gICAgICAgICAgICAgICAgICAgICB9KSxcbi8vICAgICAgICAgICAgICAgICB9LFxuLy8gICAgICAgICAgICAgICAgIGNhbGxiYWNrKGF0dHJzKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godmlldy5zdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChub2RlVHlwZS5jcmVhdGVBbmRGaWxsKGF0dHJzKSkpO1xuLy8gICAgICAgICAgICAgICAgICAgICB2aWV3LmZvY3VzKCk7XG4vLyAgICAgICAgICAgICAgICAgfSxcbi8vICAgICAgICAgICAgIH0pO1xuLy8gICAgICAgICB9LFxuLy8gICAgIH0pO1xuLy8gfVxuXG5mdW5jdGlvbiBjbWRJdGVtKGNtZDogQ29tbWFuZCwgb3B0aW9uczogUGFydGlhbDxNZW51SXRlbVNwZWM+ID0ge30sIHVzZUVuYWJsZSA9IGZhbHNlKTogSXRlbSB7XG4gICAgY29uc3QgcGFzc2VkT3B0aW9uczogTWVudUl0ZW1TcGVjID0ge1xuICAgICAgICBydW46IGNtZCxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgaWYgKCghb3B0aW9ucy5lbmFibGUgfHwgdXNlRW5hYmxlKSAmJiAhb3B0aW9ucy5zZWxlY3QpIHtcbiAgICAgICAgcGFzc2VkT3B0aW9uc1tvcHRpb25zLmVuYWJsZSA/ICdlbmFibGUnIDogJ3NlbGVjdCddID0gKHN0YXRlOiBFZGl0b3JTdGF0ZSkgPT4gY21kKHN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEl0ZW0ocGFzc2VkT3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIG1hcmtBY3RpdmUoc3RhdGU6IEVkaXRvclN0YXRlLCB0eXBlOiBNYXJrVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHtmcm9tLCAkZnJvbSwgdG8sIGVtcHR5fSA9IHN0YXRlLnNlbGVjdGlvbjtcbiAgICBpZiAoZW1wdHkpIHtcbiAgICAgICAgcmV0dXJuICEhdHlwZS5pc0luU2V0KHN0YXRlLnN0b3JlZE1hcmtzIHx8ICRmcm9tLm1hcmtzKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5kb2MucmFuZ2VIYXNNYXJrKGZyb20sIHRvLCB0eXBlKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtJdGVtKG1hcmtUeXBlOiBNYXJrVHlwZSwgb3B0aW9uczogUGFydGlhbDxNZW51SXRlbVNwZWM+ID0ge30pOiBJdGVtIHtcbiAgICBjb25zdCBwYXNzZWRPcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7XG4gICAgICAgIGFjdGl2ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiBtYXJrQWN0aXZlKHN0YXRlLCBtYXJrVHlwZSk7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIHJldHVybiBjbWRJdGVtKHRvZ2dsZU1hcmsobWFya1R5cGUpLCBwYXNzZWRPcHRpb25zLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gbGlua0l0ZW0obWFya1R5cGU6IE1hcmtUeXBlLCBkaWFsb2c6IE1hdERpYWxvZyk6IEl0ZW0ge1xuICAgIHJldHVybiBuZXcgSXRlbSh7XG4gICAgICAgIGFjdGl2ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiBtYXJrQWN0aXZlKHN0YXRlLCBtYXJrVHlwZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVuYWJsZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiAhc3RhdGUuc2VsZWN0aW9uLmVtcHR5O1xuICAgICAgICB9LFxuICAgICAgICBydW4oc3RhdGU6IEVkaXRvclN0YXRlLCBkaXNwYXRjaDogKHA6IFRyYW5zYWN0aW9uKSA9PiB2b2lkLCB2aWV3OiBFZGl0b3JWaWV3KTogYm9vbGVhbiB8IHZvaWQge1xuICAgICAgICAgICAgaWYgKG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKSkge1xuICAgICAgICAgICAgICAgIHRvZ2dsZU1hcmsobWFya1R5cGUpKHN0YXRlLCBkaXNwYXRjaCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgIC5vcGVuPExpbmtEaWFsb2dDb21wb25lbnQsIExpbmtEaWFsb2dEYXRhLCBMaW5rRGlhbG9nRGF0YT4oTGlua0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQudGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0b2dnbGVNYXJrKG1hcmtUeXBlLCByZXN1bHQpKHZpZXcuc3RhdGUsIHZpZXcuZGlzcGF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICB2aWV3LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyYXBMaXN0SXRlbShub2RlVHlwZTogTm9kZVR5cGUpOiBJdGVtIHtcbiAgICByZXR1cm4gY21kSXRlbSh3cmFwSW5MaXN0KG5vZGVUeXBlKSk7XG59XG5cbmV4cG9ydCB0eXBlIEtleSA9XG4gICAgfCAndG9nZ2xlU3Ryb25nJ1xuICAgIHwgJ3RvZ2dsZUVtJ1xuICAgIHwgJ3RvZ2dsZUNvZGUnXG4gICAgfCAndG9nZ2xlTGluaydcbiAgICB8ICdpbnNlcnRJbWFnZSdcbiAgICB8ICd3cmFwQnVsbGV0TGlzdCdcbiAgICB8ICd3cmFwT3JkZXJlZExpc3QnXG4gICAgfCAnd3JhcEJsb2NrUXVvdGUnXG4gICAgfCAnbWFrZVBhcmFncmFwaCdcbiAgICB8ICdtYWtlQ29kZUJsb2NrJ1xuICAgIHwgJ21ha2VIZWFkMSdcbiAgICB8ICdtYWtlSGVhZDInXG4gICAgfCAnbWFrZUhlYWQzJ1xuICAgIHwgJ21ha2VIZWFkNCdcbiAgICB8ICdtYWtlSGVhZDUnXG4gICAgfCAnbWFrZUhlYWQ2J1xuICAgIHwgJ2luc2VydEhvcml6b250YWxSdWxlJ1xuICAgIHwgJ2pvaW5VcCdcbiAgICB8ICdsaWZ0J1xuICAgIHwgJ3NlbGVjdFBhcmVudE5vZGUnXG4gICAgfCAndW5kbydcbiAgICB8ICdyZWRvJztcblxuZXhwb3J0IHR5cGUgTWVudUl0ZW1zID0gUGFydGlhbDxSZWNvcmQ8S2V5LCBJdGVtPj47XG5cbi8qKlxuICogR2l2ZW4gYSBzY2hlbWEsIGxvb2sgZm9yIGRlZmF1bHQgbWFyayBhbmQgbm9kZSB0eXBlcyBpbiBpdCBhbmRcbiAqIHJldHVybiBhbiBvYmplY3Qgd2l0aCByZWxldmFudCBtZW51IGl0ZW1zIHJlbGF0aW5nIHRvIHRob3NlIG1hcmtzOlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNZW51SXRlbXMoc2NoZW1hOiBTY2hlbWEsIGRpYWxvZzogTWF0RGlhbG9nKTogTWVudUl0ZW1zIHtcbiAgICBjb25zdCByOiBNZW51SXRlbXMgPSB7XG4gICAgICAgIGpvaW5VcDogdG9JdGVtKGpvaW5VcEl0ZW0pLFxuICAgICAgICBsaWZ0OiB0b0l0ZW0obGlmdEl0ZW0pLFxuICAgICAgICBzZWxlY3RQYXJlbnROb2RlOiB0b0l0ZW0oc2VsZWN0UGFyZW50Tm9kZUl0ZW0pLFxuICAgICAgICB1bmRvOiB0b0l0ZW0odW5kb0l0ZW0gYXMgdW5rbm93biBhcyBNZW51SXRlbSksIC8vIFR5cGluZyBpcyBpbmNvcnJlY3QsIHNvIHdlIGZvcmNlIGl0XG4gICAgICAgIHJlZG86IHRvSXRlbShyZWRvSXRlbSBhcyB1bmtub3duIGFzIE1lbnVJdGVtKSxcbiAgICB9O1xuXG4gICAgbGV0IHR5cGU6IE1hcmtUeXBlIHwgTm9kZVR5cGUgfCB1bmRlZmluZWQ7XG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5zdHJvbmc7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVTdHJvbmcgPSBtYXJrSXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLmVtO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlRW0gPSBtYXJrSXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLmNvZGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVDb2RlID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5saW5rO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlTGluayA9IGxpbmtJdGVtKHR5cGUsIGRpYWxvZyk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5pbWFnZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICAvLyByLmluc2VydEltYWdlID0gaW5zZXJ0SW1hZ2VJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQnVsbGV0TGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLm9yZGVyZWRfbGlzdDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBPcmRlcmVkTGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQmxvY2tRdW90ZSA9IHRvSXRlbSh3cmFwSXRlbSh0eXBlLCB7fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMucGFyYWdyYXBoO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZVBhcmFncmFwaCA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5jb2RlX2Jsb2NrO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUNvZGVCbG9jayA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oZWFkaW5nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUhlYWQxID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDF9fSkpO1xuICAgICAgICByLm1ha2VIZWFkMiA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiAyfX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDMgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogM319KSk7XG4gICAgICAgIHIubWFrZUhlYWQ0ID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDR9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNSA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiA1fX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDYgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNn19KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgY29uc3QgaHIgPSB0eXBlO1xuICAgICAgICByLmluc2VydEhvcml6b250YWxSdWxlID0gbmV3IEl0ZW0oe1xuICAgICAgICAgICAgZW5hYmxlKHN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbkluc2VydChzdGF0ZSwgaHIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bihzdGF0ZSwgZGlzcGF0Y2gpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChoci5jcmVhdGUoKSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { marks, nodes } from 'prosemirror-schema-basic';
2
+ import { addListNodes } from 'prosemirror-schema-list';
3
+ import { Schema } from 'prosemirror-model';
4
+ const myNodes = {
5
+ heading: nodes.heading,
6
+ doc: nodes.doc,
7
+ paragraph: nodes.paragraph,
8
+ text: nodes.text,
9
+ hard_break: nodes.hard_break,
10
+ };
11
+ const myMarks = {
12
+ link: marks.link,
13
+ em: marks.em,
14
+ strong: marks.strong,
15
+ };
16
+ const basicSchema = new Schema({ nodes: myNodes, marks: myMarks });
17
+ export const schema = new Schema({
18
+ nodes: addListNodes(basicSchema.spec.nodes, 'paragraph block*', 'block'),
19
+ marks: basicSchema.spec.marks,
20
+ });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSXpDLE1BQU0sT0FBTyxHQUFlO0lBQ3hCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztJQUN0QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7SUFDZCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7SUFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtDQUMvQixDQUFDO0FBR0YsTUFBTSxPQUFPLEdBQWU7SUFDeEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO0lBQ2hCLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtJQUNaLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtDQUN2QixDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQztJQUM3QixLQUFLLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBWSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQztJQUMvRSxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLO0NBQ2hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFya3MsIG5vZGVzfSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtYmFzaWMnO1xuaW1wb3J0IHthZGRMaXN0Tm9kZXN9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1saXN0JztcbmltcG9ydCB7U2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5cbi8vIEtlZXAgb25seSBiYXNpYyBlbGVtZW50c1xudHlwZSBCYXNpY05vZGVzID0gT21pdDx0eXBlb2Ygbm9kZXMsICdpbWFnZScgfCAnY29kZV9ibG9jaycgfCAnYmxvY2txdW90ZScgfCAnaG9yaXpvbnRhbF9ydWxlJz47XG5jb25zdCBteU5vZGVzOiBCYXNpY05vZGVzID0ge1xuICAgIGhlYWRpbmc6IG5vZGVzLmhlYWRpbmcsXG4gICAgZG9jOiBub2Rlcy5kb2MsXG4gICAgcGFyYWdyYXBoOiBub2Rlcy5wYXJhZ3JhcGgsXG4gICAgdGV4dDogbm9kZXMudGV4dCxcbiAgICBoYXJkX2JyZWFrOiBub2Rlcy5oYXJkX2JyZWFrLFxufTtcblxudHlwZSBCYXNpY01hcmtzID0gT21pdDx0eXBlb2YgbWFya3MsICdjb2RlJz47XG5jb25zdCBteU1hcmtzOiBCYXNpY01hcmtzID0ge1xuICAgIGxpbms6IG1hcmtzLmxpbmssXG4gICAgZW06IG1hcmtzLmVtLFxuICAgIHN0cm9uZzogbWFya3Muc3Ryb25nLFxufTtcblxuY29uc3QgYmFzaWNTY2hlbWEgPSBuZXcgU2NoZW1hKHtub2RlczogbXlOb2RlcywgbWFya3M6IG15TWFya3N9KTtcblxuZXhwb3J0IGNvbnN0IHNjaGVtYSA9IG5ldyBTY2hlbWEoe1xuICAgIG5vZGVzOiBhZGRMaXN0Tm9kZXMoYmFzaWNTY2hlbWEuc3BlYy5ub2RlcyBhcyBhbnksICdwYXJhZ3JhcGggYmxvY2sqJywgJ2Jsb2NrJyksXG4gICAgbWFya3M6IGJhc2ljU2NoZW1hLnNwZWMubWFya3MsXG59KTtcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ // Load `$localize` onto the global scope - to be able to use that function to translate strings in components/services.
2
+ import '@angular/localize/init';
3
+ /*
4
+ * Public API Surface of natural-editor
5
+ */
6
+ export { NaturalEditorComponent } from './lib/editor.component';
7
+ export { NaturalEditorModule } from './lib/editor.module';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdIQUF3SDtBQUN4SCxPQUFPLHdCQUF3QixDQUFDO0FBR2hDOztHQUVHO0FBRUgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMb2FkIGAkbG9jYWxpemVgIG9udG8gdGhlIGdsb2JhbCBzY29wZSAtIHRvIGJlIGFibGUgdG8gdXNlIHRoYXQgZnVuY3Rpb24gdG8gdHJhbnNsYXRlIHN0cmluZ3MgaW4gY29tcG9uZW50cy9zZXJ2aWNlcy5cbmltcG9ydCAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCc7XG5pbXBvcnQge05hdHVyYWxFZGl0b3JDb21wb25lbnR9IGZyb20gJy4vbGliL2VkaXRvci5jb21wb25lbnQnO1xuXG4vKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5hdHVyYWwtZWRpdG9yXG4gKi9cblxuZXhwb3J0IHtOYXR1cmFsRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuL2xpYi9lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7TmF0dXJhbEVkaXRvck1vZHVsZX0gZnJvbSAnLi9saWIvZWRpdG9yLm1vZHVsZSc7XG4iXX0=