@ecodev/natural-editor 41.2.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/esm2020/lib/utils/inputrules.mjs +70 -0
- package/esm2020/lib/utils/item.mjs +39 -0
- 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.mjs +995 -0
- 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/lib/editor/editor.component.d.ts +1 -0
- package/lib/utils/inputrules.d.ts +7 -0
- package/lib/utils/item.d.ts +30 -0
- package/lib/utils/keymap.d.ts +32 -0
- package/lib/utils/menu.d.ts +2 -31
- package/lib/utils/paragraph-with-alignment.d.ts +2 -0
- package/lib/utils/text-align-item.d.ts +6 -0
- package/package.json +31 -10
- 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 -1026
- package/bundles/ecodev-natural-editor.umd.js.map +0 -1
- package/esm2015/lib/editor/editor.component.js +0 -200
- package/esm2015/lib/utils/image.js +0 -81
- package/esm2015/lib/utils/menu.js +0 -207
- package/esm2015/lib/utils/schema.js +0 -46
- package/fesm2015/ecodev-natural-editor.js +0 -673
- package/fesm2015/ecodev-natural-editor.js.map +0 -1
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Decoration, DecorationSet } from 'prosemirror-view';
|
|
2
|
-
import { Plugin } from 'prosemirror-state';
|
|
3
|
-
import { Inject, Injectable } from '@angular/core';
|
|
4
|
-
import { DOCUMENT } from '@angular/common';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class ImagePlugin {
|
|
7
|
-
constructor(document) {
|
|
8
|
-
this.document = document;
|
|
9
|
-
this.plugin = new Plugin({
|
|
10
|
-
state: {
|
|
11
|
-
init() {
|
|
12
|
-
return DecorationSet.empty;
|
|
13
|
-
},
|
|
14
|
-
apply(tr, set) {
|
|
15
|
-
// Adjust decoration positions to changes made by the transaction
|
|
16
|
-
set = set.map(tr.mapping, tr.doc);
|
|
17
|
-
// See if the transaction adds or removes any placeholders
|
|
18
|
-
const action = tr.getMeta(this);
|
|
19
|
-
if (action && action.add) {
|
|
20
|
-
const widget = document.createElement('placeholder');
|
|
21
|
-
const deco = Decoration.widget(action.add.pos, widget, { id: action.add.id });
|
|
22
|
-
set = set.add(tr.doc, [deco]);
|
|
23
|
-
}
|
|
24
|
-
else if (action && action.remove) {
|
|
25
|
-
set = set.remove(set.find(undefined, undefined, spec => spec.id === action.remove.id));
|
|
26
|
-
}
|
|
27
|
-
return set;
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
props: {
|
|
31
|
-
decorations(state) {
|
|
32
|
-
return this.getState(state);
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
findPlaceholder(state, id) {
|
|
38
|
-
const decorators = this.plugin.getState(state);
|
|
39
|
-
const found = decorators.find(undefined, undefined, spec => spec.id === id);
|
|
40
|
-
return found.length ? found[0].from : null;
|
|
41
|
-
}
|
|
42
|
-
startImageUpload(view, file, uploader, schema) {
|
|
43
|
-
// A fresh object to act as the ID for this upload
|
|
44
|
-
const id = {};
|
|
45
|
-
// Replace the selection with a placeholder
|
|
46
|
-
const tr = view.state.tr;
|
|
47
|
-
if (!tr.selection.empty) {
|
|
48
|
-
tr.deleteSelection();
|
|
49
|
-
}
|
|
50
|
-
tr.setMeta(this.plugin, { add: { id, pos: tr.selection.from } });
|
|
51
|
-
view.dispatch(tr);
|
|
52
|
-
uploader(file).subscribe({
|
|
53
|
-
next: url => {
|
|
54
|
-
const pos = this.findPlaceholder(view.state, id);
|
|
55
|
-
// If the content around the placeholder has been deleted, drop
|
|
56
|
-
// the image
|
|
57
|
-
if (pos === null) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
// Otherwise, insert it at the placeholder's position, and remove
|
|
61
|
-
// the placeholder
|
|
62
|
-
view.dispatch(view.state.tr
|
|
63
|
-
.replaceWith(pos, pos, schema.nodes.image.create({ src: url }))
|
|
64
|
-
.setMeta(this.plugin, { remove: { id } }));
|
|
65
|
-
},
|
|
66
|
-
error: () => {
|
|
67
|
-
// On failure, just clean up the placeholder
|
|
68
|
-
view === null || view === void 0 ? void 0 : view.dispatch(tr.setMeta(this.plugin, { remove: { id } }));
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
ImagePlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: ImagePlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
-
ImagePlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: ImagePlugin });
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: ImagePlugin, decorators: [{
|
|
76
|
-
type: Injectable
|
|
77
|
-
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
78
|
-
type: Inject,
|
|
79
|
-
args: [DOCUMENT]
|
|
80
|
-
}] }]; } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsYUFBYSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUFjLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR3RELE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLFdBQVc7SUFHcEIsWUFBK0MsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFnQjtZQUNwQyxLQUFLLEVBQUU7Z0JBQ0gsSUFBSTtvQkFDQSxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHO29CQUNULGlFQUFpRTtvQkFDakUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRWxDLDBEQUEwRDtvQkFDMUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRTt3QkFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDckQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBQyxFQUFF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LElBQUksdUJBQUosSUFBSSxDQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7d0dBM0VRLFdBQVcsa0JBR0EsUUFBUTs0R0FIbkIsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzBEQUlrRCxRQUFROzBCQUFwRCxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RlY29yYXRpb24sIERlY29yYXRpb25TZXQsIEVkaXRvclZpZXd9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xuaW1wb3J0IHtFZGl0b3JTdGF0ZSwgUGx1Z2lufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIEltYWdlVXBsb2FkZXIgPSAoZmlsZTogRmlsZSkgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW1hZ2VQbHVnaW4ge1xuICAgIHB1YmxpYyByZWFkb25seSBwbHVnaW46IFBsdWdpbjxEZWNvcmF0aW9uU2V0PjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50KSB7XG4gICAgICAgIHRoaXMucGx1Z2luID0gbmV3IFBsdWdpbjxEZWNvcmF0aW9uU2V0Pih7XG4gICAgICAgICAgICBzdGF0ZToge1xuICAgICAgICAgICAgICAgIGluaXQoKTogRGVjb3JhdGlvblNldCB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWNvcmF0aW9uU2V0LmVtcHR5O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYXBwbHkodHIsIHNldCk6IERlY29yYXRpb25TZXQge1xuICAgICAgICAgICAgICAgICAgICAvLyBBZGp1c3QgZGVjb3JhdGlvbiBwb3NpdGlvbnMgdG8gY2hhbmdlcyBtYWRlIGJ5IHRoZSB0cmFuc2FjdGlvblxuICAgICAgICAgICAgICAgICAgICBzZXQgPSBzZXQubWFwKHRyLm1hcHBpbmcsIHRyLmRvYyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHRoZSB0cmFuc2FjdGlvbiBhZGRzIG9yIHJlbW92ZXMgYW55IHBsYWNlaG9sZGVyc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0ci5nZXRNZXRhKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uICYmIGFjdGlvbi5hZGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNvID0gRGVjb3JhdGlvbi53aWRnZXQoYWN0aW9uLmFkZC5wb3MsIHdpZGdldCwge2lkOiBhY3Rpb24uYWRkLmlkfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQgPSBzZXQuYWRkKHRyLmRvYywgW2RlY29dKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gJiYgYWN0aW9uLnJlbW92ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0ID0gc2V0LnJlbW92ZShzZXQuZmluZCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BlYyA9PiBzcGVjLmlkID09PSBhY3Rpb24ucmVtb3ZlLmlkKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyhzdGF0ZSk6IERlY29yYXRpb25TZXQge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZFBsYWNlaG9sZGVyKHN0YXRlOiBFZGl0b3JTdGF0ZSwgaWQ6IHt9KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGRlY29yYXRvcnMgPSB0aGlzLnBsdWdpbi5nZXRTdGF0ZShzdGF0ZSk7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gZGVjb3JhdG9ycy5maW5kKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGVjID0+IHNwZWMuaWQgPT09IGlkKTtcbiAgICAgICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA/IGZvdW5kWzBdLmZyb20gOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydEltYWdlVXBsb2FkKHZpZXc6IEVkaXRvclZpZXcsIGZpbGU6IEZpbGUsIHVwbG9hZGVyOiBJbWFnZVVwbG9hZGVyLCBzY2hlbWE6IFNjaGVtYSk6IHZvaWQge1xuICAgICAgICAvLyBBIGZyZXNoIG9iamVjdCB0byBhY3QgYXMgdGhlIElEIGZvciB0aGlzIHVwbG9hZFxuICAgICAgICBjb25zdCBpZCA9IHt9O1xuXG4gICAgICAgIC8vIFJlcGxhY2UgdGhlIHNlbGVjdGlvbiB3aXRoIGEgcGxhY2Vob2xkZXJcbiAgICAgICAgY29uc3QgdHIgPSB2aWV3LnN0YXRlLnRyO1xuICAgICAgICBpZiAoIXRyLnNlbGVjdGlvbi5lbXB0eSkge1xuICAgICAgICAgICAgdHIuZGVsZXRlU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0ci5zZXRNZXRhKHRoaXMucGx1Z2luLCB7YWRkOiB7aWQsIHBvczogdHIuc2VsZWN0aW9uLmZyb219fSk7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuXG4gICAgICAgIHVwbG9hZGVyKGZpbGUpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiB1cmwgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuZmluZFBsYWNlaG9sZGVyKHZpZXcuc3RhdGUsIGlkKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29udGVudCBhcm91bmQgdGhlIHBsYWNlaG9sZGVyIGhhcyBiZWVuIGRlbGV0ZWQsIGRyb3BcbiAgICAgICAgICAgICAgICAvLyB0aGUgaW1hZ2VcbiAgICAgICAgICAgICAgICBpZiAocG9zID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGluc2VydCBpdCBhdCB0aGUgcGxhY2Vob2xkZXIncyBwb3NpdGlvbiwgYW5kIHJlbW92ZVxuICAgICAgICAgICAgICAgIC8vIHRoZSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2goXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuc3RhdGUudHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlV2l0aChwb3MsIHBvcywgc2NoZW1hLm5vZGVzLmltYWdlLmNyZWF0ZSh7c3JjOiB1cmx9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRNZXRhKHRoaXMucGx1Z2luLCB7cmVtb3ZlOiB7aWR9fSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIE9uIGZhaWx1cmUsIGp1c3QgY2xlYW4gdXAgdGhlIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgdmlldz8uZGlzcGF0Y2godHIuc2V0TWV0YSh0aGlzLnBsdWdpbiwge3JlbW92ZToge2lkfX0pKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,207 +0,0 @@
|
|
|
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
|
-
/**
|
|
8
|
-
* One item of the menu.
|
|
9
|
-
*
|
|
10
|
-
* This is the equivalent of `MenuItem` but without all the rendering logic since we use Angular
|
|
11
|
-
* templates for rendering. Also it caches the state of the item everytime the editor state changes,
|
|
12
|
-
* so Angular can query the state as often as needed without performance hit.
|
|
13
|
-
*/
|
|
14
|
-
export class Item {
|
|
15
|
-
constructor(spec) {
|
|
16
|
-
this.spec = spec;
|
|
17
|
-
/**
|
|
18
|
-
* Whether the item is 'active' (for example, the item for toggling the strong mark might be active when the cursor is in strong text).
|
|
19
|
-
*/
|
|
20
|
-
this.active = false;
|
|
21
|
-
/**
|
|
22
|
-
* Button is shown but disabled, because the item cannot be (un-)applied
|
|
23
|
-
*/
|
|
24
|
-
this.disabled = false;
|
|
25
|
-
/**
|
|
26
|
-
* Whether the item is shown at the moment
|
|
27
|
-
*/
|
|
28
|
-
this.show = true;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Update the item state according to the editor state
|
|
32
|
-
*/
|
|
33
|
-
update(view, state) {
|
|
34
|
-
if (this.spec.active) {
|
|
35
|
-
this.active = this.spec.active(state);
|
|
36
|
-
}
|
|
37
|
-
if (this.spec.enable) {
|
|
38
|
-
this.disabled = !this.spec.enable(state);
|
|
39
|
-
}
|
|
40
|
-
if (this.spec.select) {
|
|
41
|
-
this.show = this.spec.select(state);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Convert built-in `MenuItem` into our Angular specific `Item`
|
|
47
|
-
*/
|
|
48
|
-
function toItem(item) {
|
|
49
|
-
return new Item(item.spec);
|
|
50
|
-
}
|
|
51
|
-
function canInsert(state, nodeType) {
|
|
52
|
-
const $from = state.selection.$from;
|
|
53
|
-
for (let d = $from.depth; d >= 0; d--) {
|
|
54
|
-
const index = $from.index(d);
|
|
55
|
-
if ($from.node(d).canReplaceWith(index, index, nodeType)) {
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
function cmdItem(cmd, options = {}, useEnable = false) {
|
|
62
|
-
const passedOptions = Object.assign({ run: cmd }, options);
|
|
63
|
-
if ((!options.enable || useEnable) && !options.select) {
|
|
64
|
-
passedOptions[options.enable ? 'enable' : 'select'] = (state) => cmd(state);
|
|
65
|
-
}
|
|
66
|
-
return new Item(passedOptions);
|
|
67
|
-
}
|
|
68
|
-
function markActive(state, type) {
|
|
69
|
-
const { from, $from, to, empty } = state.selection;
|
|
70
|
-
if (empty) {
|
|
71
|
-
return !!type.isInSet(state.storedMarks || $from.marks());
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
return state.doc.rangeHasMark(from, to, type);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function markItem(markType, options = {}) {
|
|
78
|
-
const passedOptions = Object.assign({ active(state) {
|
|
79
|
-
return markActive(state, markType);
|
|
80
|
-
} }, options);
|
|
81
|
-
return cmdItem(toggleMark(markType), passedOptions, true);
|
|
82
|
-
}
|
|
83
|
-
function linkItem(markType, dialog) {
|
|
84
|
-
return new Item({
|
|
85
|
-
active(state) {
|
|
86
|
-
return markActive(state, markType);
|
|
87
|
-
},
|
|
88
|
-
enable(state) {
|
|
89
|
-
return !state.selection.empty;
|
|
90
|
-
},
|
|
91
|
-
run(state, dispatch, view) {
|
|
92
|
-
if (markActive(state, markType)) {
|
|
93
|
-
toggleMark(markType)(state, dispatch);
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
dialog
|
|
97
|
-
.open(LinkDialogComponent, {
|
|
98
|
-
data: {
|
|
99
|
-
href: '',
|
|
100
|
-
title: '',
|
|
101
|
-
},
|
|
102
|
-
})
|
|
103
|
-
.afterClosed()
|
|
104
|
-
.subscribe(result => {
|
|
105
|
-
if (result) {
|
|
106
|
-
if (!result.title) {
|
|
107
|
-
delete result.title;
|
|
108
|
-
}
|
|
109
|
-
toggleMark(markType, result)(view.state, view.dispatch);
|
|
110
|
-
}
|
|
111
|
-
view.focus();
|
|
112
|
-
});
|
|
113
|
-
},
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
function wrapListItem(nodeType) {
|
|
117
|
-
return cmdItem(wrapInList(nodeType));
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Given a schema, look for default mark and node types in it and
|
|
121
|
-
* return an object with relevant menu items relating to those marks:
|
|
122
|
-
*/
|
|
123
|
-
export function buildMenuItems(schema, dialog) {
|
|
124
|
-
const r = {
|
|
125
|
-
joinUp: toItem(joinUpItem),
|
|
126
|
-
lift: toItem(liftItem),
|
|
127
|
-
selectParentNode: toItem(selectParentNodeItem),
|
|
128
|
-
undo: toItem(undoItem),
|
|
129
|
-
redo: toItem(redoItem),
|
|
130
|
-
};
|
|
131
|
-
let type;
|
|
132
|
-
type = schema.marks.strong;
|
|
133
|
-
if (type) {
|
|
134
|
-
r.toggleStrong = markItem(type);
|
|
135
|
-
}
|
|
136
|
-
type = schema.marks.em;
|
|
137
|
-
if (type) {
|
|
138
|
-
r.toggleEm = markItem(type);
|
|
139
|
-
}
|
|
140
|
-
type = schema.marks.code;
|
|
141
|
-
if (type) {
|
|
142
|
-
r.toggleCode = markItem(type);
|
|
143
|
-
}
|
|
144
|
-
type = schema.marks.link;
|
|
145
|
-
if (type) {
|
|
146
|
-
r.toggleLink = linkItem(type, dialog);
|
|
147
|
-
}
|
|
148
|
-
type = schema.nodes.bullet_list;
|
|
149
|
-
if (type) {
|
|
150
|
-
r.wrapBulletList = wrapListItem(type);
|
|
151
|
-
}
|
|
152
|
-
type = schema.nodes.ordered_list;
|
|
153
|
-
if (type) {
|
|
154
|
-
r.wrapOrderedList = wrapListItem(type);
|
|
155
|
-
}
|
|
156
|
-
type = schema.nodes.blockquote;
|
|
157
|
-
if (type) {
|
|
158
|
-
r.wrapBlockQuote = toItem(wrapItem(type, {}));
|
|
159
|
-
}
|
|
160
|
-
type = schema.nodes.paragraph;
|
|
161
|
-
if (type) {
|
|
162
|
-
r.makeParagraph = toItem(blockTypeItem(type, {}));
|
|
163
|
-
}
|
|
164
|
-
type = schema.nodes.code_block;
|
|
165
|
-
if (type) {
|
|
166
|
-
r.makeCodeBlock = toItem(blockTypeItem(type, {}));
|
|
167
|
-
}
|
|
168
|
-
type = schema.nodes.heading;
|
|
169
|
-
if (type) {
|
|
170
|
-
r.makeHead1 = toItem(blockTypeItem(type, { attrs: { level: 1 } }));
|
|
171
|
-
r.makeHead2 = toItem(blockTypeItem(type, { attrs: { level: 2 } }));
|
|
172
|
-
r.makeHead3 = toItem(blockTypeItem(type, { attrs: { level: 3 } }));
|
|
173
|
-
r.makeHead4 = toItem(blockTypeItem(type, { attrs: { level: 4 } }));
|
|
174
|
-
r.makeHead5 = toItem(blockTypeItem(type, { attrs: { level: 5 } }));
|
|
175
|
-
r.makeHead6 = toItem(blockTypeItem(type, { attrs: { level: 6 } }));
|
|
176
|
-
}
|
|
177
|
-
type = schema.nodes.horizontal_rule;
|
|
178
|
-
if (type) {
|
|
179
|
-
const hr = type;
|
|
180
|
-
r.insertHorizontalRule = new Item({
|
|
181
|
-
enable(state) {
|
|
182
|
-
return canInsert(state, hr);
|
|
183
|
-
},
|
|
184
|
-
run(state, dispatch) {
|
|
185
|
-
dispatch(state.tr.replaceSelectionWith(hr.create()));
|
|
186
|
-
},
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
type = schema.nodes.table;
|
|
190
|
-
if (type) {
|
|
191
|
-
r.insertTable = new Item({ run: (e, tr) => addTable(e, tr) });
|
|
192
|
-
r.addColumnBefore = new Item({ run: addColumnBefore });
|
|
193
|
-
r.addColumnAfter = new Item({ run: addColumnAfter });
|
|
194
|
-
r.deleteColumn = new Item({ run: deleteColumn });
|
|
195
|
-
r.addRowBefore = new Item({ run: addRowBefore });
|
|
196
|
-
r.addRowAfter = new Item({ run: addRowAfter });
|
|
197
|
-
r.deleteRow = new Item({ run: deleteRow });
|
|
198
|
-
r.deleteTable = new Item({ run: deleteTable });
|
|
199
|
-
r.mergeCells = new Item({ run: mergeCells });
|
|
200
|
-
r.splitCell = new Item({ run: splitCell });
|
|
201
|
-
r.toggleHeaderColumn = new Item({ run: toggleHeaderColumn });
|
|
202
|
-
r.toggleHeaderRow = new Item({ run: toggleHeaderRow });
|
|
203
|
-
r.toggleHeaderCell = new Item({ run: toggleHeaderCell });
|
|
204
|
-
}
|
|
205
|
-
return r;
|
|
206
|
-
}
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFVLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsbUJBQW1CLEVBQWlCLE1BQU0sc0NBQXNDLENBQUM7QUFFekYsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFakM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLElBQUk7SUFnQmIsWUFBNEIsSUFBa0I7UUFBbEIsU0FBSSxHQUFKLElBQUksQ0FBYztRQWY5Qzs7V0FFRztRQUNJLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFdEI7O1dBRUc7UUFDSSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ0ksU0FBSSxHQUFHLElBQUksQ0FBQztJQUU4QixDQUFDO0lBRWxEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQWdCLEVBQUUsS0FBa0I7UUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUks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Q0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztLQUMxRDtJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYmxvY2tUeXBlSXRlbSxcbiAgICBqb2luVXBJdGVtLFxuICAgIGxpZnRJdGVtLFxuICAgIE1lbnVJdGVtLFxuICAgIE1lbnVJdGVtU3BlYyxcbiAgICByZWRvSXRlbSxcbiAgICBzZWxlY3RQYXJlbnROb2RlSXRlbSxcbiAgICB1bmRvSXRlbSxcbiAgICB3cmFwSXRlbSxcbn0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XG5pbXBvcnQge0VkaXRvclN0YXRlLCBUcmFuc2FjdGlvbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHtDb21tYW5kLCB0b2dnbGVNYXJrfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XG5pbXBvcnQge3dyYXBJbkxpc3R9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1saXN0JztcbmltcG9ydCB7TWFya1R5cGUsIE5vZGVUeXBlLCBTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtMaW5rRGlhbG9nQ29tcG9uZW50LCBMaW5rRGlhbG9nRGF0YX0gZnJvbSAnLi4vbGluay1kaWFsb2cvbGluay1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge1xuICAgIGFkZENvbHVtbkFmdGVyLFxuICAgIGFkZENvbHVtbkJlZm9yZSxcbiAgICBhZGRSb3dBZnRlcixcbiAgICBhZGRSb3dCZWZvcmUsXG4gICAgZGVsZXRlQ29sdW1uLFxuICAgIGRlbGV0ZVJvdyxcbiAgICBkZWxldGVUYWJsZSxcbiAgICBtZXJnZUNlbGxzLFxuICAgIHNwbGl0Q2VsbCxcbiAgICB0b2dnbGVIZWFkZXJDZWxsLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbixcbiAgICB0b2dnbGVIZWFkZXJSb3csXG59IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge2FkZFRhYmxlfSBmcm9tICcuL3RhYmxlJztcblxuLyoqXG4gKiBPbmUgaXRlbSBvZiB0aGUgbWVudS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGBNZW51SXRlbWAgYnV0IHdpdGhvdXQgYWxsIHRoZSByZW5kZXJpbmcgbG9naWMgc2luY2Ugd2UgdXNlIEFuZ3VsYXJcbiAqIHRlbXBsYXRlcyBmb3IgcmVuZGVyaW5nLiBBbHNvIGl0IGNhY2hlcyB0aGUgc3RhdGUgb2YgdGhlIGl0ZW0gZXZlcnl0aW1lIHRoZSBlZGl0b3Igc3RhdGUgY2hhbmdlcyxcbiAqIHNvIEFuZ3VsYXIgY2FuIHF1ZXJ5IHRoZSBzdGF0ZSBhcyBvZnRlbiBhcyBuZWVkZWQgd2l0aG91dCBwZXJmb3JtYW5jZSBoaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBpdGVtIGlzICdhY3RpdmUnIChmb3IgZXhhbXBsZSwgdGhlIGl0ZW0gZm9yIHRvZ2dsaW5nIHRoZSBzdHJvbmcgbWFyayBtaWdodCBiZSBhY3RpdmUgd2hlbiB0aGUgY3Vyc29yIGlzIGluIHN0cm9uZyB0ZXh0KS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBCdXR0b24gaXMgc2hvd24gYnV0IGRpc2FibGVkLCBiZWNhdXNlIHRoZSBpdGVtIGNhbm5vdCBiZSAodW4tKWFwcGxpZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGl0ZW0gaXMgc2hvd24gYXQgdGhlIG1vbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzcGVjOiBNZW51SXRlbVNwZWMpIHt9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGl0ZW0gc3RhdGUgYWNjb3JkaW5nIHRvIHRoZSBlZGl0b3Igc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKHZpZXc6IEVkaXRvclZpZXcsIHN0YXRlOiBFZGl0b3JTdGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zcGVjLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLnNwZWMuYWN0aXZlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNwZWMuZW5hYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gIXRoaXMuc3BlYy5lbmFibGUoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3BlYy5zZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdyA9IHRoaXMuc3BlYy5zZWxlY3Qoc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIENvbnZlcnQgYnVpbHQtaW4gYE1lbnVJdGVtYCBpbnRvIG91ciBBbmd1bGFyIHNwZWNpZmljIGBJdGVtYFxuICovXG5mdW5jdGlvbiB0b0l0ZW0oaXRlbTogTWVudUl0ZW0pOiBJdGVtIHtcbiAgICByZXR1cm4gbmV3IEl0ZW0oaXRlbS5zcGVjKTtcbn1cblxuZnVuY3Rpb24gY2FuSW5zZXJ0KHN0YXRlOiBFZGl0b3JTdGF0ZSwgbm9kZVR5cGU6IE5vZGVUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgJGZyb20gPSBzdGF0ZS5zZWxlY3Rpb24uJGZyb207XG4gICAgZm9yIChsZXQgZCA9ICRmcm9tLmRlcHRoOyBkID49IDA7IGQtLSkge1xuICAgICAgICBjb25zdCBpbmRleCA9ICRmcm9tLmluZGV4KGQpO1xuICAgICAgICBpZiAoJGZyb20ubm9kZShkKS5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIG5vZGVUeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNtZEl0ZW0oY21kOiBDb21tYW5kLCBvcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7fSwgdXNlRW5hYmxlID0gZmFsc2UpOiBJdGVtIHtcbiAgICBjb25zdCBwYXNzZWRPcHRpb25zOiBNZW51SXRlbVNwZWMgPSB7XG4gICAgICAgIHJ1bjogY21kLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICBpZiAoKCFvcHRpb25zLmVuYWJsZSB8fCB1c2VFbmFibGUpICYmICFvcHRpb25zLnNlbGVjdCkge1xuICAgICAgICBwYXNzZWRPcHRpb25zW29wdGlvbnMuZW5hYmxlID8gJ2VuYWJsZScgOiAnc2VsZWN0J10gPSAoc3RhdGU6IEVkaXRvclN0YXRlKSA9PiBjbWQoc3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSXRlbShwYXNzZWRPcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbWFya0FjdGl2ZShzdGF0ZTogRWRpdG9yU3RhdGUsIHR5cGU6IE1hcmtUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge2Zyb20sICRmcm9tLCB0bywgZW1wdHl9ID0gc3RhdGUuc2VsZWN0aW9uO1xuICAgIGlmIChlbXB0eSkge1xuICAgICAgICByZXR1cm4gISF0eXBlLmlzSW5TZXQoc3RhdGUuc3RvcmVkTWFya3MgfHwgJGZyb20ubWFya3MoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmRvYy5yYW5nZUhhc01hcmsoZnJvbSwgdG8sIHR5cGUpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbWFya0l0ZW0obWFya1R5cGU6IE1hcmtUeXBlLCBvcHRpb25zOiBQYXJ0aWFsPE1lbnVJdGVtU3BlYz4gPSB7fSk6IEl0ZW0ge1xuICAgIGNvbnN0IHBhc3NlZE9wdGlvbnM6IFBhcnRpYWw8TWVudUl0ZW1TcGVjPiA9IHtcbiAgICAgICAgYWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNtZEl0ZW0odG9nZ2xlTWFyayhtYXJrVHlwZSksIHBhc3NlZE9wdGlvbnMsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBsaW5rSXRlbShtYXJrVHlwZTogTWFya1R5cGUsIGRpYWxvZzogTWF0RGlhbG9nKTogSXRlbSB7XG4gICAgcmV0dXJuIG5ldyBJdGVtKHtcbiAgICAgICAgYWN0aXZlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuICFzdGF0ZS5zZWxlY3Rpb24uZW1wdHk7XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bihzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoOiAocDogVHJhbnNhY3Rpb24pID0+IHZvaWQsIHZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuIHwgdm9pZCB7XG4gICAgICAgICAgICBpZiAobWFya0FjdGl2ZShzdGF0ZSwgbWFya1R5cGUpKSB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSkoc3RhdGUsIGRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgLm9wZW48TGlua0RpYWxvZ0NvbXBvbmVudCwgTGlua0RpYWxvZ0RhdGEsIExpbmtEaWFsb2dEYXRhPihMaW5rRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTWFyayhtYXJrVHlwZSwgcmVzdWx0KSh2aWV3LnN0YXRlLCB2aWV3LmRpc3BhdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gd3JhcExpc3RJdGVtKG5vZGVUeXBlOiBOb2RlVHlwZSk6IEl0ZW0ge1xuICAgIHJldHVybiBjbWRJdGVtKHdyYXBJbkxpc3Qobm9kZVR5cGUpKTtcbn1cblxuZXhwb3J0IHR5cGUgS2V5ID1cbiAgICB8ICd0b2dnbGVTdHJvbmcnXG4gICAgfCAndG9nZ2xlRW0nXG4gICAgfCAndG9nZ2xlQ29kZSdcbiAgICB8ICd0b2dnbGVMaW5rJ1xuICAgIHwgJ3dyYXBCdWxsZXRMaXN0J1xuICAgIHwgJ3dyYXBPcmRlcmVkTGlzdCdcbiAgICB8ICd3cmFwQmxvY2tRdW90ZSdcbiAgICB8ICdtYWtlUGFyYWdyYXBoJ1xuICAgIHwgJ21ha2VDb2RlQmxvY2snXG4gICAgfCAnbWFrZUhlYWQxJ1xuICAgIHwgJ21ha2VIZWFkMidcbiAgICB8ICdtYWtlSGVhZDMnXG4gICAgfCAnbWFrZUhlYWQ0J1xuICAgIHwgJ21ha2VIZWFkNSdcbiAgICB8ICdtYWtlSGVhZDYnXG4gICAgfCAnaW5zZXJ0SG9yaXpvbnRhbFJ1bGUnXG4gICAgfCAnam9pblVwJ1xuICAgIHwgJ2xpZnQnXG4gICAgfCAnc2VsZWN0UGFyZW50Tm9kZSdcbiAgICB8ICd1bmRvJ1xuICAgIHwgJ3JlZG8nXG4gICAgfCAnaW5zZXJ0VGFibGUnXG4gICAgfCAnYWRkQ29sdW1uQmVmb3JlJ1xuICAgIHwgJ2FkZENvbHVtbkFmdGVyJ1xuICAgIHwgJ2RlbGV0ZUNvbHVtbidcbiAgICB8ICdhZGRSb3dCZWZvcmUnXG4gICAgfCAnYWRkUm93QWZ0ZXInXG4gICAgfCAnZGVsZXRlUm93J1xuICAgIHwgJ2RlbGV0ZVRhYmxlJ1xuICAgIHwgJ21lcmdlQ2VsbHMnXG4gICAgfCAnc3BsaXRDZWxsJ1xuICAgIHwgJ3RvZ2dsZUhlYWRlckNvbHVtbidcbiAgICB8ICd0b2dnbGVIZWFkZXJSb3cnXG4gICAgfCAndG9nZ2xlSGVhZGVyQ2VsbCc7XG5cbmV4cG9ydCB0eXBlIE1lbnVJdGVtcyA9IFBhcnRpYWw8UmVjb3JkPEtleSwgSXRlbT4+O1xuXG4vKipcbiAqIEdpdmVuIGEgc2NoZW1hLCBsb29rIGZvciBkZWZhdWx0IG1hcmsgYW5kIG5vZGUgdHlwZXMgaW4gaXQgYW5kXG4gKiByZXR1cm4gYW4gb2JqZWN0IHdpdGggcmVsZXZhbnQgbWVudSBpdGVtcyByZWxhdGluZyB0byB0aG9zZSBtYXJrczpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWVudUl0ZW1zKHNjaGVtYTogU2NoZW1hLCBkaWFsb2c6IE1hdERpYWxvZyk6IE1lbnVJdGVtcyB7XG4gICAgY29uc3QgcjogTWVudUl0ZW1zID0ge1xuICAgICAgICBqb2luVXA6IHRvSXRlbShqb2luVXBJdGVtKSxcbiAgICAgICAgbGlmdDogdG9JdGVtKGxpZnRJdGVtKSxcbiAgICAgICAgc2VsZWN0UGFyZW50Tm9kZTogdG9JdGVtKHNlbGVjdFBhcmVudE5vZGVJdGVtKSxcbiAgICAgICAgdW5kbzogdG9JdGVtKHVuZG9JdGVtIGFzIHVua25vd24gYXMgTWVudUl0ZW0pLCAvLyBUeXBpbmcgaXMgaW5jb3JyZWN0LCBzbyB3ZSBmb3JjZSBpdFxuICAgICAgICByZWRvOiB0b0l0ZW0ocmVkb0l0ZW0gYXMgdW5rbm93biBhcyBNZW51SXRlbSksXG4gICAgfTtcblxuICAgIGxldCB0eXBlOiBNYXJrVHlwZSB8IE5vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICAgIHR5cGUgPSBzY2hlbWEubWFya3Muc3Ryb25nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlU3Ryb25nID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5lbTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUVtID0gbWFya0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5jb2RlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlQ29kZSA9IG1hcmtJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MubGluaztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUxpbmsgPSBsaW5rSXRlbSh0eXBlLCBkaWFsb2cpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQnVsbGV0TGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLm9yZGVyZWRfbGlzdDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBPcmRlcmVkTGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQmxvY2tRdW90ZSA9IHRvSXRlbSh3cmFwSXRlbSh0eXBlLCB7fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMucGFyYWdyYXBoO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZVBhcmFncmFwaCA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5jb2RlX2Jsb2NrO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUNvZGVCbG9jayA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oZWFkaW5nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUhlYWQxID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDF9fSkpO1xuICAgICAgICByLm1ha2VIZWFkMiA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiAyfX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDMgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogM319KSk7XG4gICAgICAgIHIubWFrZUhlYWQ0ID0gdG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDR9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNSA9IHRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHthdHRyczoge2xldmVsOiA1fX0pKTtcbiAgICAgICAgci5tYWtlSGVhZDYgPSB0b0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNn19KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgY29uc3QgaHIgPSB0eXBlO1xuICAgICAgICByLmluc2VydEhvcml6b250YWxSdWxlID0gbmV3IEl0ZW0oe1xuICAgICAgICAgICAgZW5hYmxlKHN0YXRlKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbkluc2VydChzdGF0ZSwgaHIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bihzdGF0ZSwgZGlzcGF0Y2gpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChoci5jcmVhdGUoKSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy50YWJsZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLmluc2VydFRhYmxlID0gbmV3IEl0ZW0oe3J1bjogKGUsIHRyKSA9PiBhZGRUYWJsZShlLCB0cil9KTtcbiAgICAgICAgci5hZGRDb2x1bW5CZWZvcmUgPSBuZXcgSXRlbSh7cnVuOiBhZGRDb2x1bW5CZWZvcmV9KTtcbiAgICAgICAgci5hZGRDb2x1bW5BZnRlciA9IG5ldyBJdGVtKHtydW46IGFkZENvbHVtbkFmdGVyfSk7XG4gICAgICAgIHIuZGVsZXRlQ29sdW1uID0gbmV3IEl0ZW0oe3J1bjogZGVsZXRlQ29sdW1ufSk7XG4gICAgICAgIHIuYWRkUm93QmVmb3JlID0gbmV3IEl0ZW0oe3J1bjogYWRkUm93QmVmb3JlfSk7XG4gICAgICAgIHIuYWRkUm93QWZ0ZXIgPSBuZXcgSXRlbSh7cnVuOiBhZGRSb3dBZnRlcn0pO1xuICAgICAgICByLmRlbGV0ZVJvdyA9IG5ldyBJdGVtKHtydW46IGRlbGV0ZVJvd30pO1xuICAgICAgICByLmRlbGV0ZVRhYmxlID0gbmV3IEl0ZW0oe3J1bjogZGVsZXRlVGFibGV9KTtcbiAgICAgICAgci5tZXJnZUNlbGxzID0gbmV3IEl0ZW0oe3J1bjogbWVyZ2VDZWxsc30pO1xuICAgICAgICByLnNwbGl0Q2VsbCA9IG5ldyBJdGVtKHtydW46IHNwbGl0Q2VsbH0pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNvbHVtbiA9IG5ldyBJdGVtKHtydW46IHRvZ2dsZUhlYWRlckNvbHVtbn0pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlclJvdyA9IG5ldyBJdGVtKHtydW46IHRvZ2dsZUhlYWRlclJvd30pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNlbGwgPSBuZXcgSXRlbSh7cnVuOiB0b2dnbGVIZWFkZXJDZWxsfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG59XG4iXX0=
|
|
@@ -1,46 +0,0 @@
|
|
|
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
|
-
const basicNodes = {
|
|
6
|
-
heading: nodes.heading,
|
|
7
|
-
doc: nodes.doc,
|
|
8
|
-
paragraph: nodes.paragraph,
|
|
9
|
-
text: nodes.text,
|
|
10
|
-
hard_break: nodes.hard_break,
|
|
11
|
-
};
|
|
12
|
-
const basicMarks = {
|
|
13
|
-
link: marks.link,
|
|
14
|
-
em: marks.em,
|
|
15
|
-
strong: marks.strong,
|
|
16
|
-
};
|
|
17
|
-
const tmpSchema = new Schema({ nodes: basicNodes, marks: basicMarks });
|
|
18
|
-
export const basicSchema = new Schema({
|
|
19
|
-
nodes: addListNodes(tmpSchema.spec.nodes, 'paragraph block*', 'block'),
|
|
20
|
-
marks: tmpSchema.spec.marks,
|
|
21
|
-
});
|
|
22
|
-
const tmpSchema2 = new Schema({
|
|
23
|
-
nodes: Object.assign(Object.assign({}, nodes), tableNodes({
|
|
24
|
-
tableGroup: 'block',
|
|
25
|
-
cellContent: 'block+',
|
|
26
|
-
cellAttributes: {
|
|
27
|
-
background: {
|
|
28
|
-
default: null,
|
|
29
|
-
getFromDOM(dom) {
|
|
30
|
-
return dom.style.backgroundColor || null;
|
|
31
|
-
},
|
|
32
|
-
setDOMAttr(value, attrs) {
|
|
33
|
-
if (value) {
|
|
34
|
-
attrs.style = (attrs.style || '') + `background-color: ${value};`;
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
})),
|
|
40
|
-
marks: basicMarks,
|
|
41
|
-
});
|
|
42
|
-
export const advancedSchema = new Schema({
|
|
43
|
-
nodes: addListNodes(tmpSchema2.spec.nodes, 'paragraph block*', 'block'),
|
|
44
|
-
marks: basicMarks,
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi91dGlscy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUk5QyxNQUFNLFVBQVUsR0FBZTtJQUMzQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87SUFDdEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO0lBQ2QsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0lBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Q0FDL0IsQ0FBQztBQUdGLE1BQU0sVUFBVSxHQUFlO0lBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtJQUNoQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7SUFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Q0FDdkIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDbEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdEUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSztDQUM5QixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQztJQUMxQixLQUFLLGtDQUNFLEtBQUssR0FDTCxVQUFVLENBQUM7UUFDVixVQUFVLEVBQUUsT0FBTztRQUNuQixXQUFXLEVBQUUsUUFBUTtRQUNyQixjQUFjLEVBQUU7WUFDWixVQUFVLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsVUFBVSxDQUFDLEdBQVk7b0JBQ25CLE9BQVEsR0FBbUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxVQUFVLENBQUMsS0FBVSxFQUFFLEtBQVU7b0JBQzdCLElBQUksS0FBSyxFQUFFO3dCQUNQLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixLQUFLLEdBQUcsQ0FBQztxQkFDckU7Z0JBQ0wsQ0FBQzthQUNKO1NBQ0o7S0FDSixDQUFDLENBQ0w7SUFDRCxLQUFLLEVBQUUsVUFBVTtDQUNwQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFDckMsS0FBSyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUM7SUFDdkUsS0FBSyxFQUFFLFVBQVU7Q0FDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXJrcywgbm9kZXN9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1iYXNpYyc7XG5pbXBvcnQge2FkZExpc3ROb2Rlc30gZnJvbSAncHJvc2VtaXJyb3Itc2NoZW1hLWxpc3QnO1xuaW1wb3J0IHtTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7dGFibGVOb2Rlc30gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcblxuLy8gS2VlcCBvbmx5IGJhc2ljIGVsZW1lbnRzXG50eXBlIEJhc2ljTm9kZXMgPSBPbWl0PHR5cGVvZiBub2RlcywgJ2ltYWdlJyB8ICdjb2RlX2Jsb2NrJyB8ICdibG9ja3F1b3RlJyB8ICdob3Jpem9udGFsX3J1bGUnPjtcbmNvbnN0IGJhc2ljTm9kZXM6IEJhc2ljTm9kZXMgPSB7XG4gICAgaGVhZGluZzogbm9kZXMuaGVhZGluZyxcbiAgICBkb2M6IG5vZGVzLmRvYyxcbiAgICBwYXJhZ3JhcGg6IG5vZGVzLnBhcmFncmFwaCxcbiAgICB0ZXh0OiBub2Rlcy50ZXh0LFxuICAgIGhhcmRfYnJlYWs6IG5vZGVzLmhhcmRfYnJlYWssXG59O1xuXG50eXBlIEJhc2ljTWFya3MgPSBPbWl0PHR5cGVvZiBtYXJrcywgJ2NvZGUnPjtcbmNvbnN0IGJhc2ljTWFya3M6IEJhc2ljTWFya3MgPSB7XG4gICAgbGluazogbWFya3MubGluayxcbiAgICBlbTogbWFya3MuZW0sXG4gICAgc3Ryb25nOiBtYXJrcy5zdHJvbmcsXG59O1xuXG5jb25zdCB0bXBTY2hlbWEgPSBuZXcgU2NoZW1hKHtub2RlczogYmFzaWNOb2RlcywgbWFya3M6IGJhc2ljTWFya3N9KTtcblxuZXhwb3J0IGNvbnN0IGJhc2ljU2NoZW1hID0gbmV3IFNjaGVtYSh7XG4gICAgbm9kZXM6IGFkZExpc3ROb2Rlcyh0bXBTY2hlbWEuc3BlYy5ub2RlcywgJ3BhcmFncmFwaCBibG9jayonLCAnYmxvY2snKSxcbiAgICBtYXJrczogdG1wU2NoZW1hLnNwZWMubWFya3MsXG59KTtcblxuY29uc3QgdG1wU2NoZW1hMiA9IG5ldyBTY2hlbWEoe1xuICAgIG5vZGVzOiB7XG4gICAgICAgIC4uLm5vZGVzLFxuICAgICAgICAuLi50YWJsZU5vZGVzKHtcbiAgICAgICAgICAgIHRhYmxlR3JvdXA6ICdibG9jaycsXG4gICAgICAgICAgICBjZWxsQ29udGVudDogJ2Jsb2NrKycsXG4gICAgICAgICAgICBjZWxsQXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0RnJvbURPTShkb206IEVsZW1lbnQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZG9tIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc2V0RE9NQXR0cih2YWx1ZTogYW55LCBhdHRyczogYW55KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5zdHlsZSA9IChhdHRycy5zdHlsZSB8fCAnJykgKyBgYmFja2dyb3VuZC1jb2xvcjogJHt2YWx1ZX07YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgfSxcbiAgICBtYXJrczogYmFzaWNNYXJrcyxcbn0pO1xuXG5leHBvcnQgY29uc3QgYWR2YW5jZWRTY2hlbWEgPSBuZXcgU2NoZW1hKHtcbiAgICBub2RlczogYWRkTGlzdE5vZGVzKHRtcFNjaGVtYTIuc3BlYy5ub2RlcywgJ3BhcmFncmFwaCBibG9jayonLCAnYmxvY2snKSxcbiAgICBtYXJrczogYmFzaWNNYXJrcyxcbn0pO1xuIl19
|