@flogeez/angular-tiptap-editor 3.1.2 → 3.1.4
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/CHANGELOG.md +25 -0
- package/README.md +2 -2
- package/esm2022/flogeez-angular-tiptap-editor.mjs +5 -0
- package/esm2022/lib/ate-editor.provider.mjs +38 -0
- package/esm2022/lib/components/bubble-menus/base/ate-base-bubble-menu.mjs +207 -0
- package/esm2022/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.mjs +137 -0
- package/esm2022/lib/components/bubble-menus/color/ate-color-bubble-menu.component.mjs +365 -0
- package/esm2022/lib/components/bubble-menus/image/ate-image-bubble-menu.component.mjs +309 -0
- package/esm2022/lib/components/bubble-menus/link/ate-link-bubble-menu.component.mjs +247 -0
- package/esm2022/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.mjs +126 -0
- package/esm2022/lib/components/bubble-menus/table/ate-table-bubble-menu.component.mjs +271 -0
- package/esm2022/lib/components/bubble-menus/text/ate-bubble-menu.component.mjs +272 -0
- package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +123 -0
- package/esm2022/lib/components/edit-toggle/ate-edit-toggle.component.mjs +42 -0
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +1031 -0
- package/esm2022/lib/components/editor/ate-block-controls.component.mjs +256 -0
- package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +328 -0
- package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +531 -0
- package/esm2022/lib/components/ui/ate-button.component.mjs +91 -0
- package/esm2022/lib/components/ui/ate-separator.component.mjs +11 -0
- package/esm2022/lib/config/ate-editor.config.mjs +133 -0
- package/esm2022/lib/config/ate-global-config.token.mjs +6 -0
- package/esm2022/lib/config/ate-slash-commands.config.mjs +130 -0
- package/esm2022/lib/directives/ate-noop-value-accessor.directive.mjs +40 -0
- package/esm2022/lib/directives/ate-tooltip.directive.mjs +138 -0
- package/esm2022/lib/extensions/ate-block-controls.extension.mjs +156 -0
- package/esm2022/lib/extensions/ate-link-click-behavior.extension.mjs +32 -0
- package/esm2022/lib/extensions/ate-resizable-image.extension.mjs +277 -0
- package/esm2022/lib/extensions/ate-table.extension.mjs +27 -0
- package/esm2022/lib/extensions/ate-tiptap-state.extension.mjs +85 -0
- package/esm2022/lib/extensions/ate-upload-progress.extension.mjs +195 -0
- package/esm2022/lib/extensions/calculators/ate-discovery.calculator.mjs +62 -0
- package/esm2022/lib/extensions/calculators/ate-image.calculator.mjs +8 -0
- package/esm2022/lib/extensions/calculators/ate-marks.calculator.mjs +75 -0
- package/esm2022/lib/extensions/calculators/ate-selection.calculator.mjs +35 -0
- package/esm2022/lib/extensions/calculators/ate-structure.calculator.mjs +34 -0
- package/esm2022/lib/extensions/calculators/ate-table.calculator.mjs +38 -0
- package/esm2022/lib/models/ate-bubble-menu.model.mjs +53 -0
- package/esm2022/lib/models/ate-editor-config.model.mjs +2 -0
- package/esm2022/lib/models/ate-editor-state.model.mjs +90 -0
- package/esm2022/lib/models/ate-image.model.mjs +2 -0
- package/esm2022/lib/models/ate-slash-command.model.mjs +2 -0
- package/esm2022/lib/models/ate-toolbar.model.mjs +35 -0
- package/esm2022/lib/node-view/ate-angular-node-view.mjs +97 -0
- package/esm2022/lib/node-view/ate-injector.registry.mjs +16 -0
- package/esm2022/lib/node-view/ate-node-view.factory.mjs +125 -0
- package/esm2022/lib/node-view/ate-node-view.models.mjs +2 -0
- package/esm2022/lib/node-view/ate-node-view.renderer.mjs +154 -0
- package/esm2022/lib/node-view/ate-register-angular-component.mjs +49 -0
- package/esm2022/lib/services/ate-color-picker.service.mjs +194 -0
- package/esm2022/lib/services/ate-editor-commands.service.mjs +474 -0
- package/esm2022/lib/services/ate-i18n.service.mjs +422 -0
- package/esm2022/lib/services/ate-image.service.mjs +459 -0
- package/esm2022/lib/services/ate-link.service.mjs +99 -0
- package/esm2022/lib/utils/ate-color.utils.mjs +60 -0
- package/esm2022/public-api.mjs +40 -0
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +321 -354
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +3 -1734
- package/lib/ate-editor.provider.d.ts +21 -0
- package/lib/components/bubble-menus/base/ate-base-bubble-menu.d.ts +71 -0
- package/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.d.ts +60 -0
- package/lib/components/bubble-menus/color/ate-color-bubble-menu.component.d.ts +77 -0
- package/lib/components/bubble-menus/image/ate-image-bubble-menu.component.d.ts +49 -0
- package/lib/components/bubble-menus/link/ate-link-bubble-menu.component.d.ts +55 -0
- package/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.d.ts +16 -0
- package/lib/components/bubble-menus/table/ate-table-bubble-menu.component.d.ts +25 -0
- package/lib/components/bubble-menus/text/ate-bubble-menu.component.d.ts +53 -0
- package/lib/components/color-picker/ate-color-picker.component.d.ts +54 -0
- package/lib/components/edit-toggle/ate-edit-toggle.component.d.ts +13 -0
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +242 -0
- package/lib/components/editor/ate-block-controls.component.d.ts +44 -0
- package/lib/components/slash-commands/ate-slash-commands.component.d.ts +34 -0
- package/lib/components/toolbar/ate-toolbar.component.d.ts +47 -0
- package/lib/components/ui/ate-button.component.d.ts +25 -0
- package/lib/components/ui/ate-separator.component.d.ts +5 -0
- package/lib/config/ate-editor.config.d.ts +19 -0
- package/lib/config/ate-global-config.token.d.ts +6 -0
- package/lib/config/ate-slash-commands.config.d.ts +41 -0
- package/lib/directives/ate-noop-value-accessor.directive.d.ts +13 -0
- package/lib/directives/ate-tooltip.directive.d.ts +30 -0
- package/lib/extensions/ate-block-controls.extension.d.ts +10 -0
- package/lib/extensions/ate-link-click-behavior.extension.d.ts +2 -0
- package/lib/extensions/ate-resizable-image.extension.d.ts +27 -0
- package/lib/extensions/ate-table.extension.d.ts +2 -0
- package/lib/extensions/ate-tiptap-state.extension.d.ts +7 -0
- package/lib/extensions/ate-upload-progress.extension.d.ts +7 -0
- package/lib/extensions/calculators/ate-discovery.calculator.d.ts +7 -0
- package/lib/extensions/calculators/ate-image.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-marks.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-selection.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-structure.calculator.d.ts +2 -0
- package/lib/extensions/calculators/ate-table.calculator.d.ts +2 -0
- package/lib/models/ate-bubble-menu.model.d.ts +33 -0
- package/lib/models/ate-editor-config.model.d.ts +113 -0
- package/lib/models/ate-editor-state.model.d.ts +109 -0
- package/lib/models/ate-image.model.d.ts +104 -0
- package/lib/models/ate-slash-command.model.d.ts +17 -0
- package/lib/models/ate-toolbar.model.d.ts +18 -0
- package/lib/node-view/ate-angular-node-view.d.ts +115 -0
- package/lib/node-view/ate-injector.registry.d.ts +3 -0
- package/lib/node-view/ate-node-view.factory.d.ts +10 -0
- package/lib/node-view/ate-node-view.models.d.ts +138 -0
- package/lib/node-view/ate-node-view.renderer.d.ts +23 -0
- package/lib/node-view/ate-register-angular-component.d.ts +35 -0
- package/lib/services/ate-color-picker.service.d.ts +65 -0
- package/lib/services/ate-editor-commands.service.d.ts +75 -0
- package/lib/services/ate-i18n.service.d.ts +406 -0
- package/lib/services/ate-image.service.d.ts +82 -0
- package/lib/services/ate-link.service.d.ts +42 -0
- package/lib/utils/ate-color.utils.d.ts +12 -0
- package/package.json +3 -1
- package/public-api.d.ts +31 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export const ATE_INITIAL_EDITOR_STATE = {
|
|
2
|
+
isFocused: false,
|
|
3
|
+
isEditable: true,
|
|
4
|
+
selection: {
|
|
5
|
+
type: "none",
|
|
6
|
+
from: 0,
|
|
7
|
+
to: 0,
|
|
8
|
+
empty: true,
|
|
9
|
+
isSingleCell: false,
|
|
10
|
+
},
|
|
11
|
+
marks: {
|
|
12
|
+
bold: false,
|
|
13
|
+
italic: false,
|
|
14
|
+
underline: false,
|
|
15
|
+
strike: false,
|
|
16
|
+
code: false,
|
|
17
|
+
superscript: false,
|
|
18
|
+
subscript: false,
|
|
19
|
+
highlight: false,
|
|
20
|
+
link: false,
|
|
21
|
+
linkHref: null,
|
|
22
|
+
color: null,
|
|
23
|
+
computedColor: null,
|
|
24
|
+
background: null,
|
|
25
|
+
computedBackground: null,
|
|
26
|
+
linkOpenOnClick: false,
|
|
27
|
+
},
|
|
28
|
+
can: {
|
|
29
|
+
toggleBold: false,
|
|
30
|
+
toggleItalic: false,
|
|
31
|
+
toggleUnderline: false,
|
|
32
|
+
toggleStrike: false,
|
|
33
|
+
toggleCode: false,
|
|
34
|
+
toggleHighlight: false,
|
|
35
|
+
toggleLink: false,
|
|
36
|
+
toggleSuperscript: false,
|
|
37
|
+
toggleSubscript: false,
|
|
38
|
+
setColor: false,
|
|
39
|
+
setHighlight: false,
|
|
40
|
+
undo: false,
|
|
41
|
+
redo: false,
|
|
42
|
+
addRowBefore: false,
|
|
43
|
+
addRowAfter: false,
|
|
44
|
+
deleteRow: false,
|
|
45
|
+
addColumnBefore: false,
|
|
46
|
+
addColumnAfter: false,
|
|
47
|
+
deleteColumn: false,
|
|
48
|
+
deleteTable: false,
|
|
49
|
+
mergeCells: false,
|
|
50
|
+
splitCell: false,
|
|
51
|
+
toggleHeaderRow: false,
|
|
52
|
+
toggleHeaderColumn: false,
|
|
53
|
+
toggleHeading1: false,
|
|
54
|
+
toggleHeading2: false,
|
|
55
|
+
toggleHeading3: false,
|
|
56
|
+
toggleBulletList: false,
|
|
57
|
+
toggleOrderedList: false,
|
|
58
|
+
toggleBlockquote: false,
|
|
59
|
+
toggleCodeBlock: false,
|
|
60
|
+
setTextAlignLeft: false,
|
|
61
|
+
setTextAlignCenter: false,
|
|
62
|
+
setTextAlignRight: false,
|
|
63
|
+
setTextAlignJustify: false,
|
|
64
|
+
insertHorizontalRule: false,
|
|
65
|
+
insertTable: false,
|
|
66
|
+
insertImage: false,
|
|
67
|
+
},
|
|
68
|
+
nodes: {
|
|
69
|
+
isTable: false,
|
|
70
|
+
isTableNodeSelected: false,
|
|
71
|
+
isTableCell: false,
|
|
72
|
+
isImage: false,
|
|
73
|
+
isBlockquote: false,
|
|
74
|
+
isCodeBlock: false,
|
|
75
|
+
isBulletList: false,
|
|
76
|
+
isOrderedList: false,
|
|
77
|
+
h1: false,
|
|
78
|
+
h2: false,
|
|
79
|
+
h3: false,
|
|
80
|
+
alignLeft: false,
|
|
81
|
+
alignCenter: false,
|
|
82
|
+
alignRight: false,
|
|
83
|
+
alignJustify: false,
|
|
84
|
+
isTableHeaderRow: false,
|
|
85
|
+
isTableHeaderColumn: false,
|
|
86
|
+
activeNodeName: null,
|
|
87
|
+
},
|
|
88
|
+
custom: {},
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1zdGF0ZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL21vZGVscy9hdGUtZWRpdG9yLXN0YXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRIQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBMkI7SUFDOUQsU0FBUyxFQUFFLEtBQUs7SUFDaEIsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsQ0FBQztRQUNQLEVBQUUsRUFBRSxDQUFDO1FBQ0wsS0FBSyxFQUFFLElBQUk7UUFDWCxZQUFZLEVBQUUsS0FBSztLQUNwQjtJQUNELEtBQUssRUFBRTtRQUNMLElBQUksRUFBRSxLQUFLO1FBQ1gsTUFBTSxFQUFFLEtBQUs7UUFDYixTQUFTLEVBQUUsS0FBSztRQUNoQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxLQUFLO1FBQ1gsV0FBVyxFQUFFLEtBQUs7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRSxJQUFJO1FBQ1gsYUFBYSxFQUFFLElBQUk7UUFDbkIsVUFBVSxFQUFFLElBQUk7UUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixlQUFlLEVBQUUsS0FBSztLQUN2QjtJQUNELEdBQUcsRUFBRTtRQUNILFVBQVUsRUFBRSxLQUFLO1FBQ2pCLFlBQVksRUFBRSxLQUFLO1FBQ25CLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLFlBQVksRUFBRSxLQUFLO1FBQ25CLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsUUFBUSxFQUFFLEtBQUs7UUFDZixZQUFZLEVBQUUsS0FBSztRQUNuQixJQUFJLEVBQUUsS0FBSztRQUNYLElBQUksRUFBRSxLQUFLO1FBQ1gsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsY0FBYyxFQUFFLEtBQUs7UUFDckIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixjQUFjLEVBQUUsS0FBSztRQUNyQixjQUFjLEVBQUUsS0FBSztRQUNyQixjQUFjLEVBQUUsS0FBSztRQUNyQixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixlQUFlLEVBQUUsS0FBSztRQUN0QixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsaUJBQWlCLEVBQUUsS0FBSztRQUN4QixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsV0FBVyxFQUFFLEtBQUs7UUFDbEIsV0FBVyxFQUFFLEtBQUs7S0FDbkI7SUFDRCxLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsS0FBSztRQUNkLG1CQUFtQixFQUFFLEtBQUs7UUFDMUIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxZQUFZLEVBQUUsS0FBSztRQUNuQixXQUFXLEVBQUUsS0FBSztRQUNsQixZQUFZLEVBQUUsS0FBSztRQUNuQixhQUFhLEVBQUUsS0FBSztRQUNwQixFQUFFLEVBQUUsS0FBSztRQUNULEVBQUUsRUFBRSxLQUFLO1FBQ1QsRUFBRSxFQUFFLEtBQUs7UUFDVCxTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixVQUFVLEVBQUUsS0FBSztRQUNqQixZQUFZLEVBQUUsS0FBSztRQUNuQixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLG1CQUFtQixFQUFFLEtBQUs7UUFDMUIsY0FBYyxFQUFFLElBQUk7S0FDckI7SUFDRCxNQUFNLEVBQUUsRUFBRTtDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5cbmV4cG9ydCB0eXBlIEF0ZVN0YXRlQ2FsY3VsYXRvciA9IChlZGl0b3I6IEVkaXRvcikgPT4gUGFydGlhbDx7XG4gIFtLIGluIGtleW9mIEF0ZUVkaXRvclN0YXRlU25hcHNob3RdOiBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90W0tdIGV4dGVuZHMgb2JqZWN0XG4gICAgPyBQYXJ0aWFsPEF0ZUVkaXRvclN0YXRlU25hcHNob3RbS10+XG4gICAgOiBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90W0tdO1xufT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCB7XG4gIC8qKiBHbG9iYWwgZWRpdG9yIHN0YXRlcyAqL1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XG4gIGlzRWRpdGFibGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGFpbGVkIHNlbGVjdGlvbiBpbmZvcm1hdGlvbiB0byBhdm9pZCBvdmVybGFwIGJldHdlZW4gbWVudXNcbiAgICovXG4gIHNlbGVjdGlvbjoge1xuICAgIHR5cGU6IFwidGV4dFwiIHwgXCJub2RlXCIgfCBcImNlbGxcIiB8IFwibm9uZVwiO1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyO1xuICAgIGVtcHR5OiBib29sZWFuO1xuICAgIC8qKiBTcGVjaWZpYyBmb3IgQ2VsbFNlbGVjdGlvbiAqL1xuICAgIGlzU2luZ2xlQ2VsbDogYm9vbGVhbjtcbiAgfTtcblxuICAvKiogVGV4dCBmb3JtYXR0aW5nIHN0YXRlcyAoTWFya3MpICovXG4gIG1hcmtzOiB7XG4gICAgYm9sZDogYm9vbGVhbjtcbiAgICBpdGFsaWM6IGJvb2xlYW47XG4gICAgdW5kZXJsaW5lOiBib29sZWFuO1xuICAgIHN0cmlrZTogYm9vbGVhbjtcbiAgICBjb2RlOiBib29sZWFuO1xuICAgIHN1cGVyc2NyaXB0OiBib29sZWFuO1xuICAgIHN1YnNjcmlwdDogYm9vbGVhbjtcbiAgICBoaWdobGlnaHQ6IGJvb2xlYW47XG4gICAgbGluazogYm9vbGVhbjtcbiAgICBsaW5rSHJlZjogc3RyaW5nIHwgbnVsbDtcbiAgICBjb2xvcjogc3RyaW5nIHwgbnVsbDtcbiAgICBjb21wdXRlZENvbG9yOiBzdHJpbmcgfCBudWxsO1xuICAgIGJhY2tncm91bmQ6IHN0cmluZyB8IG51bGw7XG4gICAgY29tcHV0ZWRCYWNrZ3JvdW5kOiBzdHJpbmcgfCBudWxsO1xuICAgIGxpbmtPcGVuT25DbGljazogYm9vbGVhbjtcbiAgfTtcblxuICAvKiogQ2FwYWJpbGl0eSBzdGF0ZXMgKGNhbkV4ZWN1dGUpICovXG4gIGNhbjoge1xuICAgIHRvZ2dsZUJvbGQ6IGJvb2xlYW47XG4gICAgdG9nZ2xlSXRhbGljOiBib29sZWFuO1xuICAgIHRvZ2dsZVVuZGVybGluZTogYm9vbGVhbjtcbiAgICB0b2dnbGVTdHJpa2U6IGJvb2xlYW47XG4gICAgdG9nZ2xlQ29kZTogYm9vbGVhbjtcbiAgICB0b2dnbGVIaWdobGlnaHQ6IGJvb2xlYW47XG4gICAgdG9nZ2xlTGluazogYm9vbGVhbjtcbiAgICB0b2dnbGVTdXBlcnNjcmlwdDogYm9vbGVhbjtcbiAgICB0b2dnbGVTdWJzY3JpcHQ6IGJvb2xlYW47XG4gICAgc2V0Q29sb3I6IGJvb2xlYW47XG4gICAgc2V0SGlnaGxpZ2h0OiBib29sZWFuO1xuICAgIHVuZG86IGJvb2xlYW47XG4gICAgcmVkbzogYm9vbGVhbjtcblxuICAgIC8qKiBUYWJsZSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgKi9cbiAgICBhZGRSb3dCZWZvcmU6IGJvb2xlYW47XG4gICAgYWRkUm93QWZ0ZXI6IGJvb2xlYW47XG4gICAgZGVsZXRlUm93OiBib29sZWFuO1xuICAgIGFkZENvbHVtbkJlZm9yZTogYm9vbGVhbjtcbiAgICBhZGRDb2x1bW5BZnRlcjogYm9vbGVhbjtcbiAgICBkZWxldGVDb2x1bW46IGJvb2xlYW47XG4gICAgZGVsZXRlVGFibGU6IGJvb2xlYW47XG4gICAgbWVyZ2VDZWxsczogYm9vbGVhbjtcbiAgICBzcGxpdENlbGw6IGJvb2xlYW47XG4gICAgdG9nZ2xlSGVhZGVyUm93OiBib29sZWFuO1xuICAgIHRvZ2dsZUhlYWRlckNvbHVtbjogYm9vbGVhbjtcblxuICAgIC8qKiBTdHJ1Y3R1cmUvTm9kZSBjYXBhYmlsaXRpZXMgKi9cbiAgICB0b2dnbGVIZWFkaW5nMTogYm9vbGVhbjtcbiAgICB0b2dnbGVIZWFkaW5nMjogYm9vbGVhbjtcbiAgICB0b2dnbGVIZWFkaW5nMzogYm9vbGVhbjtcbiAgICB0b2dnbGVCdWxsZXRMaXN0OiBib29sZWFuO1xuICAgIHRvZ2dsZU9yZGVyZWRMaXN0OiBib29sZWFuO1xuICAgIHRvZ2dsZUJsb2NrcXVvdGU6IGJvb2xlYW47XG4gICAgdG9nZ2xlQ29kZUJsb2NrOiBib29sZWFuO1xuICAgIHNldFRleHRBbGlnbkxlZnQ6IGJvb2xlYW47XG4gICAgc2V0VGV4dEFsaWduQ2VudGVyOiBib29sZWFuO1xuICAgIHNldFRleHRBbGlnblJpZ2h0OiBib29sZWFuO1xuICAgIHNldFRleHRBbGlnbkp1c3RpZnk6IGJvb2xlYW47XG4gICAgaW5zZXJ0SG9yaXpvbnRhbFJ1bGU6IGJvb2xlYW47XG4gICAgaW5zZXJ0VGFibGU6IGJvb2xlYW47XG4gICAgaW5zZXJ0SW1hZ2U6IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqIEN1cnJlbnQgbm9kZSBjb250ZXh0ICovXG4gIG5vZGVzOiB7XG4gICAgaXNUYWJsZTogYm9vbGVhbjtcbiAgICBpc1RhYmxlTm9kZVNlbGVjdGVkOiBib29sZWFuO1xuICAgIGlzVGFibGVDZWxsOiBib29sZWFuO1xuICAgIGlzSW1hZ2U6IGJvb2xlYW47XG4gICAgaXNCbG9ja3F1b3RlOiBib29sZWFuO1xuICAgIGlzQ29kZUJsb2NrOiBib29sZWFuO1xuICAgIGlzQnVsbGV0TGlzdDogYm9vbGVhbjtcbiAgICBpc09yZGVyZWRMaXN0OiBib29sZWFuO1xuXG4gICAgLyoqIEhlYWRpbmdzICovXG4gICAgaDE6IGJvb2xlYW47XG4gICAgaDI6IGJvb2xlYW47XG4gICAgaDM6IGJvb2xlYW47XG5cbiAgICAvKiogQWxpZ25tZW50ICovXG4gICAgYWxpZ25MZWZ0OiBib29sZWFuO1xuICAgIGFsaWduQ2VudGVyOiBib29sZWFuO1xuICAgIGFsaWduUmlnaHQ6IGJvb2xlYW47XG4gICAgYWxpZ25KdXN0aWZ5OiBib29sZWFuO1xuXG4gICAgLyoqIFRhYmxlIHNwZWNpZmljICovXG4gICAgaXNUYWJsZUhlYWRlclJvdzogYm9vbGVhbjtcbiAgICBpc1RhYmxlSGVhZGVyQ29sdW1uOiBib29sZWFuO1xuXG4gICAgLyoqIE5hbWUgb2YgdGhlIGFjdGl2ZSBub2RlIGF0IHNlbGVjdGlvbiBoZWFkICovXG4gICAgYWN0aXZlTm9kZU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIH07XG5cbiAgLyoqIFBsYWNlaG9sZGVyIGZvciBjdXN0b20gZXh0ZW5zaW9uIHN0YXRlcyAqL1xuICBjdXN0b206IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgY29uc3QgQVRFX0lOSVRJQUxfRURJVE9SX1NUQVRFOiBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90ID0ge1xuICBpc0ZvY3VzZWQ6IGZhbHNlLFxuICBpc0VkaXRhYmxlOiB0cnVlLFxuICBzZWxlY3Rpb246IHtcbiAgICB0eXBlOiBcIm5vbmVcIixcbiAgICBmcm9tOiAwLFxuICAgIHRvOiAwLFxuICAgIGVtcHR5OiB0cnVlLFxuICAgIGlzU2luZ2xlQ2VsbDogZmFsc2UsXG4gIH0sXG4gIG1hcmtzOiB7XG4gICAgYm9sZDogZmFsc2UsXG4gICAgaXRhbGljOiBmYWxzZSxcbiAgICB1bmRlcmxpbmU6IGZhbHNlLFxuICAgIHN0cmlrZTogZmFsc2UsXG4gICAgY29kZTogZmFsc2UsXG4gICAgc3VwZXJzY3JpcHQ6IGZhbHNlLFxuICAgIHN1YnNjcmlwdDogZmFsc2UsXG4gICAgaGlnaGxpZ2h0OiBmYWxzZSxcbiAgICBsaW5rOiBmYWxzZSxcbiAgICBsaW5rSHJlZjogbnVsbCxcbiAgICBjb2xvcjogbnVsbCxcbiAgICBjb21wdXRlZENvbG9yOiBudWxsLFxuICAgIGJhY2tncm91bmQ6IG51bGwsXG4gICAgY29tcHV0ZWRCYWNrZ3JvdW5kOiBudWxsLFxuICAgIGxpbmtPcGVuT25DbGljazogZmFsc2UsXG4gIH0sXG4gIGNhbjoge1xuICAgIHRvZ2dsZUJvbGQ6IGZhbHNlLFxuICAgIHRvZ2dsZUl0YWxpYzogZmFsc2UsXG4gICAgdG9nZ2xlVW5kZXJsaW5lOiBmYWxzZSxcbiAgICB0b2dnbGVTdHJpa2U6IGZhbHNlLFxuICAgIHRvZ2dsZUNvZGU6IGZhbHNlLFxuICAgIHRvZ2dsZUhpZ2hsaWdodDogZmFsc2UsXG4gICAgdG9nZ2xlTGluazogZmFsc2UsXG4gICAgdG9nZ2xlU3VwZXJzY3JpcHQ6IGZhbHNlLFxuICAgIHRvZ2dsZVN1YnNjcmlwdDogZmFsc2UsXG4gICAgc2V0Q29sb3I6IGZhbHNlLFxuICAgIHNldEhpZ2hsaWdodDogZmFsc2UsXG4gICAgdW5kbzogZmFsc2UsXG4gICAgcmVkbzogZmFsc2UsXG4gICAgYWRkUm93QmVmb3JlOiBmYWxzZSxcbiAgICBhZGRSb3dBZnRlcjogZmFsc2UsXG4gICAgZGVsZXRlUm93OiBmYWxzZSxcbiAgICBhZGRDb2x1bW5CZWZvcmU6IGZhbHNlLFxuICAgIGFkZENvbHVtbkFmdGVyOiBmYWxzZSxcbiAgICBkZWxldGVDb2x1bW46IGZhbHNlLFxuICAgIGRlbGV0ZVRhYmxlOiBmYWxzZSxcbiAgICBtZXJnZUNlbGxzOiBmYWxzZSxcbiAgICBzcGxpdENlbGw6IGZhbHNlLFxuICAgIHRvZ2dsZUhlYWRlclJvdzogZmFsc2UsXG4gICAgdG9nZ2xlSGVhZGVyQ29sdW1uOiBmYWxzZSxcbiAgICB0b2dnbGVIZWFkaW5nMTogZmFsc2UsXG4gICAgdG9nZ2xlSGVhZGluZzI6IGZhbHNlLFxuICAgIHRvZ2dsZUhlYWRpbmczOiBmYWxzZSxcbiAgICB0b2dnbGVCdWxsZXRMaXN0OiBmYWxzZSxcbiAgICB0b2dnbGVPcmRlcmVkTGlzdDogZmFsc2UsXG4gICAgdG9nZ2xlQmxvY2txdW90ZTogZmFsc2UsXG4gICAgdG9nZ2xlQ29kZUJsb2NrOiBmYWxzZSxcbiAgICBzZXRUZXh0QWxpZ25MZWZ0OiBmYWxzZSxcbiAgICBzZXRUZXh0QWxpZ25DZW50ZXI6IGZhbHNlLFxuICAgIHNldFRleHRBbGlnblJpZ2h0OiBmYWxzZSxcbiAgICBzZXRUZXh0QWxpZ25KdXN0aWZ5OiBmYWxzZSxcbiAgICBpbnNlcnRIb3Jpem9udGFsUnVsZTogZmFsc2UsXG4gICAgaW5zZXJ0VGFibGU6IGZhbHNlLFxuICAgIGluc2VydEltYWdlOiBmYWxzZSxcbiAgfSxcbiAgbm9kZXM6IHtcbiAgICBpc1RhYmxlOiBmYWxzZSxcbiAgICBpc1RhYmxlTm9kZVNlbGVjdGVkOiBmYWxzZSxcbiAgICBpc1RhYmxlQ2VsbDogZmFsc2UsXG4gICAgaXNJbWFnZTogZmFsc2UsXG4gICAgaXNCbG9ja3F1b3RlOiBmYWxzZSxcbiAgICBpc0NvZGVCbG9jazogZmFsc2UsXG4gICAgaXNCdWxsZXRMaXN0OiBmYWxzZSxcbiAgICBpc09yZGVyZWRMaXN0OiBmYWxzZSxcbiAgICBoMTogZmFsc2UsXG4gICAgaDI6IGZhbHNlLFxuICAgIGgzOiBmYWxzZSxcbiAgICBhbGlnbkxlZnQ6IGZhbHNlLFxuICAgIGFsaWduQ2VudGVyOiBmYWxzZSxcbiAgICBhbGlnblJpZ2h0OiBmYWxzZSxcbiAgICBhbGlnbkp1c3RpZnk6IGZhbHNlLFxuICAgIGlzVGFibGVIZWFkZXJSb3c6IGZhbHNlLFxuICAgIGlzVGFibGVIZWFkZXJDb2x1bW46IGZhbHNlLFxuICAgIGFjdGl2ZU5vZGVOYW1lOiBudWxsLFxuICB9LFxuICBjdXN0b206IHt9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWltYWdlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbW9kZWxzL2F0ZS1pbWFnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VEYXRhIHtcbiAgc3JjOiBzdHJpbmc7XG4gIGFsdD86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRSZXN1bHQge1xuICBzcmM6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHR5cGU6IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgb3JpZ2luYWxTaXplPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0ZVJlc2l6ZU9wdGlvbnMge1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBtYWludGFpbkFzcGVjdFJhdGlvPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVVwbG9hZE9wdGlvbnMge1xuICBxdWFsaXR5PzogbnVtYmVyO1xuICBtYXhXaWR0aD86IG51bWJlcjtcbiAgbWF4SGVpZ2h0PzogbnVtYmVyO1xuICBtYXhTaXplPzogbnVtYmVyOyAvLyBpbiBieXRlc1xuICBhbGxvd2VkVHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IHBhc3NlZCB0byB0aGUgaW1hZ2UgdXBsb2FkIGhhbmRsZXIgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVVwbG9hZENvbnRleHQge1xuICAvKiogT3JpZ2luYWwgZmlsZSBiZWluZyB1cGxvYWRlZCAqL1xuICBmaWxlOiBGaWxlO1xuICAvKiogV2lkdGggb2YgdGhlIHByb2Nlc3NlZCBpbWFnZSAqL1xuICB3aWR0aDogbnVtYmVyO1xuICAvKiogSGVpZ2h0IG9mIHRoZSBwcm9jZXNzZWQgaW1hZ2UgKi9cbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qKiBNSU1FIHR5cGUgb2YgdGhlIGltYWdlICovXG4gIHR5cGU6IHN0cmluZztcbiAgLyoqIEJhc2U2NCBkYXRhIFVSTCBvZiB0aGUgcHJvY2Vzc2VkIGltYWdlIChhZnRlciBjb21wcmVzc2lvbi9yZXNpemUpICovXG4gIGJhc2U2NDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBleHBlY3RlZCBmcm9tIGEgY3VzdG9tIGltYWdlIHVwbG9hZCBoYW5kbGVyLlxuICogTXVzdCBjb250YWluIGF0IGxlYXN0IHRoZSBgc3JjYCBwcm9wZXJ0eSB3aXRoIHRoZSBpbWFnZSBVUkwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlSW1hZ2VVcGxvYWRIYW5kbGVyUmVzdWx0IHtcbiAgLyoqIFVSTCBvZiB0aGUgdXBsb2FkZWQgaW1hZ2UgKGNhbiBiZSBhIHJlbW90ZSBVUkwgb3IgYW55IHN0cmluZykgKi9cbiAgc3JjOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBjdXN0b20gYWx0IHRleHQgKi9cbiAgYWx0Pzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgY3VzdG9tIHRpdGxlICovXG4gIHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEN1c3RvbSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBpbWFnZSB1cGxvYWRzLlxuICogQWxsb3dzIHVzZXJzIHRvIGltcGxlbWVudCB0aGVpciBvd24gaW1hZ2Ugc3RvcmFnZSBsb2dpYyAoZS5nLiwgdXBsb2FkIHRvIFMzLCBDbG91ZGluYXJ5LCBldGMuKVxuICpcbiAqIENhbiByZXR1cm4gZWl0aGVyIGEgUHJvbWlzZSBvciBhbiBPYnNlcnZhYmxlIChBbmd1bGFyLWZyaWVuZGx5KS5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIENvbnRleHQgY29udGFpbmluZyB0aGUgaW1hZ2UgZmlsZSBhbmQgbWV0YWRhdGFcbiAqIEByZXR1cm5zIFByb21pc2Ugb3IgT2JzZXJ2YWJsZSByZXNvbHZpbmcgdG8gSW1hZ2VVcGxvYWRIYW5kbGVyUmVzdWx0XG4gKlxuICogQGV4YW1wbGUgVXNpbmcgUHJvbWlzZSAoYXN5bmMvYXdhaXQpXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB1cGxvYWRIYW5kbGVyOiBJbWFnZVVwbG9hZEhhbmRsZXIgPSBhc3luYyAoY3R4KSA9PiB7XG4gKiAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gKiAgIGZvcm1EYXRhLmFwcGVuZCgnaW1hZ2UnLCBjdHguZmlsZSk7XG4gKiAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PHt1cmw6IHN0cmluZ30+KCcvYXBpL3VwbG9hZCcsIGZvcm1EYXRhKSk7XG4gKiAgIHJldHVybiB7IHNyYzogcmVzdWx0LnVybCB9O1xuICogfTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFVzaW5nIE9ic2VydmFibGUgKEFuZ3VsYXIgSHR0cENsaWVudClcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHVwbG9hZEhhbmRsZXI6IEltYWdlVXBsb2FkSGFuZGxlciA9IChjdHgpID0+IHtcbiAqICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAqICAgZm9ybURhdGEuYXBwZW5kKCdpbWFnZScsIGN0eC5maWxlKTtcbiAqICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHt1cmw6IHN0cmluZ30+KCcvYXBpL3VwbG9hZCcsIGZvcm1EYXRhKS5waXBlKFxuICogICAgIG1hcChyZXN1bHQgPT4gKHsgc3JjOiByZXN1bHQudXJsIH0pKVxuICogICApO1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBBdGVJbWFnZVVwbG9hZEhhbmRsZXIgPSAoXG4gIGNvbnRleHQ6IEF0ZUltYWdlVXBsb2FkQ29udGV4dFxuKSA9PiBQcm9taXNlPEF0ZUltYWdlVXBsb2FkSGFuZGxlclJlc3VsdD4gfCBPYnNlcnZhYmxlPEF0ZUltYWdlVXBsb2FkSGFuZGxlclJlc3VsdD47XG5cbi8qKlxuICogSW50ZXJmYWNlIGRlZGljYXRlZCB0byBpbWFnZSB1cGxvYWQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVJbWFnZVVwbG9hZENvbmZpZyB7XG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgdXBsb2FkIChQcm9taXNlIG9yIE9ic2VydmFibGUpICovXG4gIGhhbmRsZXI/OiBBdGVJbWFnZVVwbG9hZEhhbmRsZXI7XG4gIC8qKiBDb21wcmVzc2lvbiBxdWFsaXR5ICgwIHRvIDEpICovXG4gIHF1YWxpdHk/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGFsbG93ZWQgd2lkdGggaW4gcGl4ZWxzICovXG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBhbGxvd2VkIGhlaWdodCBpbiBwaXhlbHMgKi9cbiAgbWF4SGVpZ2h0PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBhbGxvd2VkIHNpemUgaW4gTUIgKi9cbiAgbWF4U2l6ZT86IG51bWJlcjtcbiAgLyoqIEFjY2VwdGVkIGZpbGUgdHlwZXMgKGUuZy4sIFsnaW1hZ2UvanBlZycsICdpbWFnZS9wbmcnXSkgKi9cbiAgYWxsb3dlZFR5cGVzPzogc3RyaW5nW107XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXNsYXNoLWNvbW1hbmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLXNsYXNoLWNvbW1hbmQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcblxuLyoqXG4gKiBJbnRlcmZhY2UgcmVwcmVzZW50aW5nIGEgc2luZ2xlIGl0ZW0gaW4gdGhlIHNsYXNoIGNvbW1hbmRzIG1lbnUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlU2xhc2hDb21tYW5kSXRlbSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAga2V5d29yZHM6IHN0cmluZ1tdO1xuICBjb21tYW5kOiAoZWRpdG9yOiBFZGl0b3IpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQ3VzdG9tIHNsYXNoIGNvbW1hbmRzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlQ3VzdG9tU2xhc2hDb21tYW5kcyB7XG4gIGNvbW1hbmRzPzogQXRlU2xhc2hDb21tYW5kSXRlbVtdO1xufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clés des boutons de la barre d'outils native
|
|
3
|
+
*/
|
|
4
|
+
export const ATE_TOOLBAR_KEYS = [
|
|
5
|
+
"bold",
|
|
6
|
+
"italic",
|
|
7
|
+
"underline",
|
|
8
|
+
"strike",
|
|
9
|
+
"code",
|
|
10
|
+
"codeBlock",
|
|
11
|
+
"superscript",
|
|
12
|
+
"subscript",
|
|
13
|
+
"highlight",
|
|
14
|
+
"highlightPicker",
|
|
15
|
+
"heading1",
|
|
16
|
+
"heading2",
|
|
17
|
+
"heading3",
|
|
18
|
+
"bulletList",
|
|
19
|
+
"orderedList",
|
|
20
|
+
"blockquote",
|
|
21
|
+
"alignLeft",
|
|
22
|
+
"alignCenter",
|
|
23
|
+
"alignRight",
|
|
24
|
+
"alignJustify",
|
|
25
|
+
"link",
|
|
26
|
+
"image",
|
|
27
|
+
"horizontalRule",
|
|
28
|
+
"table",
|
|
29
|
+
"undo",
|
|
30
|
+
"redo",
|
|
31
|
+
"clear",
|
|
32
|
+
"textColor",
|
|
33
|
+
"separator",
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRvb2xiYXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLXRvb2xiYXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixNQUFNO0lBQ04sUUFBUTtJQUNSLFdBQVc7SUFDWCxRQUFRO0lBQ1IsTUFBTTtJQUNOLFdBQVc7SUFDWCxhQUFhO0lBQ2IsV0FBVztJQUNYLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsVUFBVTtJQUNWLFVBQVU7SUFDVixVQUFVO0lBQ1YsWUFBWTtJQUNaLGFBQWE7SUFDYixZQUFZO0lBQ1osV0FBVztJQUNYLGFBQWE7SUFDYixZQUFZO0lBQ1osY0FBYztJQUNkLE1BQU07SUFDTixPQUFPO0lBQ1AsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxXQUFXO0lBQ1gsV0FBVztDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5cbi8qKlxuICogQ2zDqXMgZGVzIGJvdXRvbnMgZGUgbGEgYmFycmUgZCdvdXRpbHMgbmF0aXZlXG4gKi9cbmV4cG9ydCBjb25zdCBBVEVfVE9PTEJBUl9LRVlTID0gW1xuICBcImJvbGRcIixcbiAgXCJpdGFsaWNcIixcbiAgXCJ1bmRlcmxpbmVcIixcbiAgXCJzdHJpa2VcIixcbiAgXCJjb2RlXCIsXG4gIFwiY29kZUJsb2NrXCIsXG4gIFwic3VwZXJzY3JpcHRcIixcbiAgXCJzdWJzY3JpcHRcIixcbiAgXCJoaWdobGlnaHRcIixcbiAgXCJoaWdobGlnaHRQaWNrZXJcIixcbiAgXCJoZWFkaW5nMVwiLFxuICBcImhlYWRpbmcyXCIsXG4gIFwiaGVhZGluZzNcIixcbiAgXCJidWxsZXRMaXN0XCIsXG4gIFwib3JkZXJlZExpc3RcIixcbiAgXCJibG9ja3F1b3RlXCIsXG4gIFwiYWxpZ25MZWZ0XCIsXG4gIFwiYWxpZ25DZW50ZXJcIixcbiAgXCJhbGlnblJpZ2h0XCIsXG4gIFwiYWxpZ25KdXN0aWZ5XCIsXG4gIFwibGlua1wiLFxuICBcImltYWdlXCIsXG4gIFwiaG9yaXpvbnRhbFJ1bGVcIixcbiAgXCJ0YWJsZVwiLFxuICBcInVuZG9cIixcbiAgXCJyZWRvXCIsXG4gIFwiY2xlYXJcIixcbiAgXCJ0ZXh0Q29sb3JcIixcbiAgXCJzZXBhcmF0b3JcIixcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEF0ZVRvb2xiYXJLZXkgPSAodHlwZW9mIEFURV9UT09MQkFSX0tFWVMpW251bWJlcl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlVG9vbGJhckNvbmZpZyBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPEF0ZVRvb2xiYXJLZXksIGJvb2xlYW4+PiB7XG4gIC8qKlxuICAgKiBCb3V0b25zIHBlcnNvbm5hbGlzw6lzIMOgIGFqb3V0ZXJcbiAgICovXG4gIGN1c3RvbT86IEF0ZUN1c3RvbVRvb2xiYXJJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRlQ3VzdG9tVG9vbGJhckl0ZW0ge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBjb21tYW5kOiAoZWRpdG9yOiBFZGl0b3IpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xufVxuIl19
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Directive, signal } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Base abstract class for custom 'Angular Nodes'.
|
|
5
|
+
*
|
|
6
|
+
* Extend this class in your custom components to automatically receive TipTap editor
|
|
7
|
+
* properties (node attributes, selection state, etc.) as reactive Signals.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* @Component({
|
|
12
|
+
* selector: 'app-counter',
|
|
13
|
+
* template: `
|
|
14
|
+
* <div>
|
|
15
|
+
* <button (click)="increment()">Count: {{ node().attrs['count'] }}</button>
|
|
16
|
+
* </div>
|
|
17
|
+
* `
|
|
18
|
+
* })
|
|
19
|
+
* export class CounterComponent extends AteAngularNodeView {
|
|
20
|
+
* increment() {
|
|
21
|
+
* const count = this.node().attrs['count'] || 0;
|
|
22
|
+
* this.updateAttributes({ count: count + 1 });
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class AteAngularNodeView {
|
|
28
|
+
/**
|
|
29
|
+
* Internal method to initialize the component with NodeView props.
|
|
30
|
+
* This is called by the AngularNodeViewRenderer.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
_initNodeView(props) {
|
|
35
|
+
// Create signals from the props
|
|
36
|
+
const editorSignal = signal(props.editor);
|
|
37
|
+
const nodeSignal = signal(props.node);
|
|
38
|
+
const decorationsSignal = signal(props.decorations);
|
|
39
|
+
const selectedSignal = signal(props.selected);
|
|
40
|
+
const extensionSignal = signal(props.extension);
|
|
41
|
+
// Assign to the component
|
|
42
|
+
this.editor = editorSignal.asReadonly();
|
|
43
|
+
this.node = nodeSignal.asReadonly();
|
|
44
|
+
this.decorations = decorationsSignal.asReadonly();
|
|
45
|
+
this.selected = selectedSignal.asReadonly();
|
|
46
|
+
this.extension = extensionSignal.asReadonly();
|
|
47
|
+
this.getPos = props.getPos;
|
|
48
|
+
this.updateAttributes = props.updateAttributes;
|
|
49
|
+
this.deleteNode = props.deleteNode;
|
|
50
|
+
// Store writable signals for updates
|
|
51
|
+
this._writableSignals = {
|
|
52
|
+
node: nodeSignal,
|
|
53
|
+
decorations: decorationsSignal,
|
|
54
|
+
selected: selectedSignal,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Internal method to update the component when the node changes.
|
|
59
|
+
* This is called by the AngularNodeViewRenderer.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
_updateNodeView(node, decorations) {
|
|
64
|
+
if (this._writableSignals) {
|
|
65
|
+
this._writableSignals.node.set(node);
|
|
66
|
+
this._writableSignals.decorations.set(decorations);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Internal method to update the selection state.
|
|
71
|
+
* This is called by the AngularNodeViewRenderer.
|
|
72
|
+
*
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
_selectNodeView() {
|
|
76
|
+
if (this._writableSignals) {
|
|
77
|
+
this._writableSignals.selected.set(true);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Internal method to update the deselection state.
|
|
82
|
+
* This is called by the AngularNodeViewRenderer.
|
|
83
|
+
*
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
_deselectNodeView() {
|
|
87
|
+
if (this._writableSignals) {
|
|
88
|
+
this._writableSignals.selected.set(false);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteAngularNodeView, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
92
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: AteAngularNodeView, ngImport: i0 }); }
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteAngularNodeView, decorators: [{
|
|
95
|
+
type: Directive
|
|
96
|
+
}] });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWFuZ3VsYXItbm9kZS12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbm9kZS12aWV3L2F0ZS1hbmd1bGFyLW5vZGUtdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7O0FBbUIxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxNQUFNLE9BQWdCLGtCQUFrQjtJQXVEdEM7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsS0FBOEI7UUFDMUMsZ0NBQWdDO1FBQ2hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhELDBCQUEwQjtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUVuQyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsUUFBUSxFQUFFLGNBQWM7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxJQUFxQixFQUFFLFdBQWtDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDOytHQTFIbUIsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIHNpZ25hbCwgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOb2RlIGFzIFByb3NlTWlycm9yTm9kZSB9IGZyb20gXCJAdGlwdGFwL3BtL21vZGVsXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uIH0gZnJvbSBcIkB0aXB0YXAvcG0vdmlld1wiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuXG4vKipcbiAqIFByb3BzIHRoYXQgYXJlIGluamVjdGVkIGludG8gQW5ndWxhciBOb2RlVmlldyBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlQW5ndWxhck5vZGVWaWV3UHJvcHMge1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgbm9kZTogUHJvc2VNaXJyb3JOb2RlO1xuICBkZWNvcmF0aW9uczogcmVhZG9ubHkgRGVjb3JhdGlvbltdO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgZXh0ZW5zaW9uOiB1bmtub3duO1xuICBnZXRQb3M6ICgpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlQXR0cmlidXRlczogKGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZDtcbiAgZGVsZXRlTm9kZTogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBCYXNlIGFic3RyYWN0IGNsYXNzIGZvciBjdXN0b20gJ0FuZ3VsYXIgTm9kZXMnLlxuICpcbiAqIEV4dGVuZCB0aGlzIGNsYXNzIGluIHlvdXIgY3VzdG9tIGNvbXBvbmVudHMgdG8gYXV0b21hdGljYWxseSByZWNlaXZlIFRpcFRhcCBlZGl0b3JcbiAqIHByb3BlcnRpZXMgKG5vZGUgYXR0cmlidXRlcywgc2VsZWN0aW9uIHN0YXRlLCBldGMuKSBhcyByZWFjdGl2ZSBTaWduYWxzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtY291bnRlcicsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxidXR0b24gKGNsaWNrKT1cImluY3JlbWVudCgpXCI+Q291bnQ6IHt7IG5vZGUoKS5hdHRyc1snY291bnQnXSB9fTwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICBgXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIENvdW50ZXJDb21wb25lbnQgZXh0ZW5kcyBBdGVBbmd1bGFyTm9kZVZpZXcge1xuICogICBpbmNyZW1lbnQoKSB7XG4gKiAgICAgY29uc3QgY291bnQgPSB0aGlzLm5vZGUoKS5hdHRyc1snY291bnQnXSB8fCAwO1xuICogICAgIHRoaXMudXBkYXRlQXR0cmlidXRlcyh7IGNvdW50OiBjb3VudCArIDEgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdGVBbmd1bGFyTm9kZVZpZXcge1xuICAvKipcbiAgICogVGhlIFRpcFRhcCBlZGl0b3IgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBlZGl0b3IhOiBTaWduYWw8RWRpdG9yPjtcblxuICAvKipcbiAgICogVGhlIFByb3NlTWlycm9yIG5vZGVcbiAgICovXG4gIHB1YmxpYyBub2RlITogU2lnbmFsPFByb3NlTWlycm9yTm9kZT47XG5cbiAgLyoqXG4gICAqIERlY29yYXRpb25zIGFwcGxpZWQgdG8gdGhpcyBub2RlXG4gICAqL1xuICBwdWJsaWMgZGVjb3JhdGlvbnMhOiBTaWduYWw8cmVhZG9ubHkgRGVjb3JhdGlvbltdPjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbm9kZSBpcyBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RlZCE6IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbiBpbnN0YW5jZSB0aGF0IGNyZWF0ZWQgdGhpcyBub2RlXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5zaW9uITogU2lnbmFsPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBnZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhpcyBub2RlIGluIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgcHVibGljIGdldFBvcyE6ICgpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBhdHRyaWJ1dGVzIG9mIHRoaXMgbm9kZVxuICAgKlxuICAgKiBAcGFyYW0gYXR0cnMgLSBQYXJ0aWFsIGF0dHJpYnV0ZXMgdG8gdXBkYXRlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdGhpcy51cGRhdGVBdHRyaWJ1dGVzKHsgY291bnQ6IDUsIGNvbG9yOiAnYmx1ZScgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUF0dHJpYnV0ZXMhOiAoYXR0cnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhpcyBub2RlIGZyb20gdGhlIGRvY3VtZW50XG4gICAqL1xuICBwdWJsaWMgZGVsZXRlTm9kZSE6ICgpID0+IHZvaWQ7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF93cml0YWJsZVNpZ25hbHM/OiB7XG4gICAgbm9kZTogV3JpdGFibGVTaWduYWw8UHJvc2VNaXJyb3JOb2RlPjtcbiAgICBkZWNvcmF0aW9uczogV3JpdGFibGVTaWduYWw8cmVhZG9ubHkgRGVjb3JhdGlvbltdPjtcbiAgICBzZWxlY3RlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4gIH07XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQgd2l0aCBOb2RlVmlldyBwcm9wcy5cbiAgICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIEFuZ3VsYXJOb2RlVmlld1JlbmRlcmVyLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pbml0Tm9kZVZpZXcocHJvcHM6IEF0ZUFuZ3VsYXJOb2RlVmlld1Byb3BzKTogdm9pZCB7XG4gICAgLy8gQ3JlYXRlIHNpZ25hbHMgZnJvbSB0aGUgcHJvcHNcbiAgICBjb25zdCBlZGl0b3JTaWduYWwgPSBzaWduYWwocHJvcHMuZWRpdG9yKTtcbiAgICBjb25zdCBub2RlU2lnbmFsID0gc2lnbmFsKHByb3BzLm5vZGUpO1xuICAgIGNvbnN0IGRlY29yYXRpb25zU2lnbmFsID0gc2lnbmFsKHByb3BzLmRlY29yYXRpb25zKTtcbiAgICBjb25zdCBzZWxlY3RlZFNpZ25hbCA9IHNpZ25hbChwcm9wcy5zZWxlY3RlZCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uU2lnbmFsID0gc2lnbmFsKHByb3BzLmV4dGVuc2lvbik7XG5cbiAgICAvLyBBc3NpZ24gdG8gdGhlIGNvbXBvbmVudFxuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yU2lnbmFsLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLm5vZGUgPSBub2RlU2lnbmFsLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmRlY29yYXRpb25zID0gZGVjb3JhdGlvbnNTaWduYWwuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZFNpZ25hbC5hc1JlYWRvbmx5KCk7XG4gICAgdGhpcy5leHRlbnNpb24gPSBleHRlbnNpb25TaWduYWwuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuZ2V0UG9zID0gcHJvcHMuZ2V0UG9zO1xuICAgIHRoaXMudXBkYXRlQXR0cmlidXRlcyA9IHByb3BzLnVwZGF0ZUF0dHJpYnV0ZXM7XG4gICAgdGhpcy5kZWxldGVOb2RlID0gcHJvcHMuZGVsZXRlTm9kZTtcblxuICAgIC8vIFN0b3JlIHdyaXRhYmxlIHNpZ25hbHMgZm9yIHVwZGF0ZXNcbiAgICB0aGlzLl93cml0YWJsZVNpZ25hbHMgPSB7XG4gICAgICBub2RlOiBub2RlU2lnbmFsLFxuICAgICAgZGVjb3JhdGlvbnM6IGRlY29yYXRpb25zU2lnbmFsLFxuICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkU2lnbmFsLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgY29tcG9uZW50IHdoZW4gdGhlIG5vZGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIEFuZ3VsYXJOb2RlVmlld1JlbmRlcmVyLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF91cGRhdGVOb2RlVmlldyhub2RlOiBQcm9zZU1pcnJvck5vZGUsIGRlY29yYXRpb25zOiByZWFkb25seSBEZWNvcmF0aW9uW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGFibGVTaWduYWxzKSB7XG4gICAgICB0aGlzLl93cml0YWJsZVNpZ25hbHMubm9kZS5zZXQobm9kZSk7XG4gICAgICB0aGlzLl93cml0YWJsZVNpZ25hbHMuZGVjb3JhdGlvbnMuc2V0KGRlY29yYXRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgc2VsZWN0aW9uIHN0YXRlLlxuICAgKiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgQW5ndWxhck5vZGVWaWV3UmVuZGVyZXIuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3NlbGVjdE5vZGVWaWV3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVNpZ25hbHMpIHtcbiAgICAgIHRoaXMuX3dyaXRhYmxlU2lnbmFscy5zZWxlY3RlZC5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byB1cGRhdGUgdGhlIGRlc2VsZWN0aW9uIHN0YXRlLlxuICAgKiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgQW5ndWxhck5vZGVWaWV3UmVuZGVyZXIuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2Rlc2VsZWN0Tm9kZVZpZXcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRhYmxlU2lnbmFscykge1xuICAgICAgdGhpcy5fd3JpdGFibGVTaWduYWxzLnNlbGVjdGVkLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal registry to store the root injector for the editor.
|
|
3
|
+
* This allows registerAngularComponent to work without explicitly passing the injector.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
let globalInjector = null;
|
|
7
|
+
export function setGlobalInjector(injector) {
|
|
8
|
+
globalInjector = injector;
|
|
9
|
+
}
|
|
10
|
+
export function getGlobalInjector() {
|
|
11
|
+
if (!globalInjector) {
|
|
12
|
+
throw new Error("[ATE] Global Injector not found. Make sure to call provideAteEditor() in your app.config.ts or main.ts.");
|
|
13
|
+
}
|
|
14
|
+
return globalInjector;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWluamVjdG9yLnJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbm9kZS12aWV3L2F0ZS1pbmplY3Rvci5yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsSUFBSSxjQUFjLEdBQW9CLElBQUksQ0FBQztBQUUzQyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBa0I7SUFDbEQsY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYix5R0FBeUcsQ0FDMUcsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vKipcbiAqIEludGVybmFsIHJlZ2lzdHJ5IHRvIHN0b3JlIHRoZSByb290IGluamVjdG9yIGZvciB0aGUgZWRpdG9yLlxuICogVGhpcyBhbGxvd3MgcmVnaXN0ZXJBbmd1bGFyQ29tcG9uZW50IHRvIHdvcmsgd2l0aG91dCBleHBsaWNpdGx5IHBhc3NpbmcgdGhlIGluamVjdG9yLlxuICogQGludGVybmFsXG4gKi9cbmxldCBnbG9iYWxJbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEdsb2JhbEluamVjdG9yKGluamVjdG9yOiBJbmplY3Rvcik6IHZvaWQge1xuICBnbG9iYWxJbmplY3RvciA9IGluamVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSW5qZWN0b3IoKTogSW5qZWN0b3Ige1xuICBpZiAoIWdsb2JhbEluamVjdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJbQVRFXSBHbG9iYWwgSW5qZWN0b3Igbm90IGZvdW5kLiBNYWtlIHN1cmUgdG8gY2FsbCBwcm92aWRlQXRlRWRpdG9yKCkgaW4geW91ciBhcHAuY29uZmlnLnRzIG9yIG1haW4udHMuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBnbG9iYWxJbmplY3Rvcjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Node, mergeAttributes } from "@tiptap/core";
|
|
2
|
+
import { AteAngularNodeView } from "./ate-angular-node-view";
|
|
3
|
+
import { AteNodeViewRenderer } from "./ate-node-view.renderer";
|
|
4
|
+
const RESERVED_NAMES = [
|
|
5
|
+
"doc",
|
|
6
|
+
"paragraph",
|
|
7
|
+
"text",
|
|
8
|
+
"hardBreak",
|
|
9
|
+
"bulletList",
|
|
10
|
+
"orderedList",
|
|
11
|
+
"listItem",
|
|
12
|
+
"blockquote",
|
|
13
|
+
"codeBlock",
|
|
14
|
+
"heading",
|
|
15
|
+
"horizontalRule",
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Derives the TipTap node name and HTML tag from a component class.
|
|
19
|
+
*/
|
|
20
|
+
function deriveMetadata(component, customName) {
|
|
21
|
+
let nodeName = customName;
|
|
22
|
+
if (!nodeName) {
|
|
23
|
+
nodeName = component.name
|
|
24
|
+
.replace(/Component$/, "")
|
|
25
|
+
.replace(/Node$/, "")
|
|
26
|
+
.replace(/^([A-Z])/, m => m.toLowerCase());
|
|
27
|
+
console.warn(`[ATE] Auto-deriving node name '${nodeName}' for component ${component.name}. ` +
|
|
28
|
+
`Provide an explicit 'name' in options to avoid potential naming collisions.`);
|
|
29
|
+
}
|
|
30
|
+
if (RESERVED_NAMES.includes(nodeName)) {
|
|
31
|
+
throw new Error(`[ATE] The name '${nodeName}' is a reserved TipTap node name. ` +
|
|
32
|
+
`Please provide a unique name for your custom component.`);
|
|
33
|
+
}
|
|
34
|
+
const tag = nodeName.toLowerCase().replace(/([A-Z])/g, "-$1");
|
|
35
|
+
return { nodeName, tag };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates TipTap attributes from component inputs (Standard Mode).
|
|
39
|
+
*/
|
|
40
|
+
function createStandardAttributes(defaultInputs = {}) {
|
|
41
|
+
const tiptapAttributes = {};
|
|
42
|
+
Object.entries(defaultInputs).forEach(([key, defaultValue]) => {
|
|
43
|
+
tiptapAttributes[key] = {
|
|
44
|
+
default: defaultValue,
|
|
45
|
+
parseHTML: (element) => {
|
|
46
|
+
const attr = element.getAttribute(`data-${key}`);
|
|
47
|
+
if (attr === null) {
|
|
48
|
+
return defaultValue;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
return JSON.parse(attr);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return attr;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
renderHTML: (attrs) => {
|
|
58
|
+
const value = attrs[key];
|
|
59
|
+
if (value === undefined || value === null) {
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
const serialized = typeof value === "object" ? JSON.stringify(value) : String(value);
|
|
63
|
+
return { [`data-${key}`]: serialized };
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
return tiptapAttributes;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Factory to transform an Angular component into a TipTap Node extension.
|
|
71
|
+
* Supports both "TipTap-Aware" and "Standard" modes.
|
|
72
|
+
*
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
export function createAngularComponentExtension(injector, options) {
|
|
76
|
+
const { component, name: customName, attributes, defaultInputs, contentSelector, contentMode = "block", editableContent = false, group = "block", draggable = true, ignoreMutation = true, onOutput, HTMLAttributes = {}, parseHTML: customParseHTML, renderHTML: customRenderHTML, } = options;
|
|
77
|
+
const { nodeName, tag } = deriveMetadata(component, customName);
|
|
78
|
+
const isTipTapAware = Object.prototype.isPrototypeOf.call(AteAngularNodeView, component);
|
|
79
|
+
const atom = !editableContent;
|
|
80
|
+
// 1. Prepare Attributes
|
|
81
|
+
const tiptapAttributes = isTipTapAware
|
|
82
|
+
? attributes || {}
|
|
83
|
+
: createStandardAttributes(defaultInputs);
|
|
84
|
+
// 2. Create Node Extension
|
|
85
|
+
return Node.create({
|
|
86
|
+
name: nodeName,
|
|
87
|
+
group,
|
|
88
|
+
inline: group === "inline",
|
|
89
|
+
atom,
|
|
90
|
+
draggable,
|
|
91
|
+
content: editableContent ? (contentMode === "inline" ? "inline*" : "block*") : undefined,
|
|
92
|
+
addAttributes() {
|
|
93
|
+
return tiptapAttributes;
|
|
94
|
+
},
|
|
95
|
+
parseHTML() {
|
|
96
|
+
if (customParseHTML) {
|
|
97
|
+
return customParseHTML.call(this);
|
|
98
|
+
}
|
|
99
|
+
return [{ tag }, { tag: `div[data-component="${nodeName}"]` }];
|
|
100
|
+
},
|
|
101
|
+
renderHTML({ node, HTMLAttributes: attrs }) {
|
|
102
|
+
if (customRenderHTML) {
|
|
103
|
+
return customRenderHTML.call(this, { node, HTMLAttributes: attrs });
|
|
104
|
+
}
|
|
105
|
+
return [tag, mergeAttributes(HTMLAttributes, attrs, { "data-component": nodeName })];
|
|
106
|
+
},
|
|
107
|
+
addNodeView() {
|
|
108
|
+
return AteNodeViewRenderer(component, {
|
|
109
|
+
injector,
|
|
110
|
+
inputs: defaultInputs,
|
|
111
|
+
wrapperTag: group === "inline" ? "span" : "div",
|
|
112
|
+
wrapperClass: isTipTapAware
|
|
113
|
+
? `ate-node-${nodeName}`
|
|
114
|
+
: `embedded-component embedded-${nodeName}`,
|
|
115
|
+
atom,
|
|
116
|
+
editableContent,
|
|
117
|
+
contentSelector,
|
|
118
|
+
contentMode,
|
|
119
|
+
onOutput,
|
|
120
|
+
ignoreMutation,
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLW5vZGUtdmlldy5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvbm9kZS12aWV3L2F0ZS1ub2RlLXZpZXcuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCxNQUFNLGNBQWMsR0FBRztJQUNyQixLQUFLO0lBQ0wsV0FBVztJQUNYLE1BQU07SUFDTixXQUFXO0lBQ1gsWUFBWTtJQUNaLGFBQWE7SUFDYixVQUFVO0lBQ1YsWUFBWTtJQUNaLFdBQVc7SUFDWCxTQUFTO0lBQ1QsZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRjs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLFNBQXdCLEVBQUUsVUFBbUI7SUFDbkUsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBRTFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSTthQUN0QixPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQzthQUN6QixPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQzthQUNwQixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFN0MsT0FBTyxDQUFDLElBQUksQ0FDVixrQ0FBa0MsUUFBUSxtQkFBbUIsU0FBUyxDQUFDLElBQUksSUFBSTtZQUM3RSw2RUFBNkUsQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFD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USxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQy9DLFlBQVksRUFBRSxhQUFhO29CQUN6QixDQUFDLENBQUMsWUFBWSxRQUFRLEVBQUU7b0JBQ3hCLENBQUMsQ0FBQywrQkFBK0IsUUFBUSxFQUFFO2dCQUM3QyxJQUFJO2dCQUNKLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixXQUFXO2dCQUNYLFFBQVE7Z0JBQ1IsY0FBYzthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTm9kZSwgbWVyZ2VBdHRyaWJ1dGVzIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlQW5ndWxhck5vZGVWaWV3IH0gZnJvbSBcIi4vYXRlLWFuZ3VsYXItbm9kZS12aWV3XCI7XG5pbXBvcnQgeyBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zIH0gZnJvbSBcIi4vYXRlLW5vZGUtdmlldy5tb2RlbHNcIjtcbmltcG9ydCB7IEF0ZU5vZGVWaWV3UmVuZGVyZXIgfSBmcm9tIFwiLi9hdGUtbm9kZS12aWV3LnJlbmRlcmVyXCI7XG5cbmNvbnN0IFJFU0VSVkVEX05BTUVTID0gW1xuICBcImRvY1wiLFxuICBcInBhcmFncmFwaFwiLFxuICBcInRleHRcIixcbiAgXCJoYXJkQnJlYWtcIixcbiAgXCJidWxsZXRMaXN0XCIsXG4gIFwib3JkZXJlZExpc3RcIixcbiAgXCJsaXN0SXRlbVwiLFxuICBcImJsb2NrcXVvdGVcIixcbiAgXCJjb2RlQmxvY2tcIixcbiAgXCJoZWFkaW5nXCIsXG4gIFwiaG9yaXpvbnRhbFJ1bGVcIixcbl07XG5cbi8qKlxuICogRGVyaXZlcyB0aGUgVGlwVGFwIG5vZGUgbmFtZSBhbmQgSFRNTCB0YWcgZnJvbSBhIGNvbXBvbmVudCBjbGFzcy5cbiAqL1xuZnVuY3Rpb24gZGVyaXZlTWV0YWRhdGEoY29tcG9uZW50OiBUeXBlPHVua25vd24+LCBjdXN0b21OYW1lPzogc3RyaW5nKSB7XG4gIGxldCBub2RlTmFtZSA9IGN1c3RvbU5hbWU7XG5cbiAgaWYgKCFub2RlTmFtZSkge1xuICAgIG5vZGVOYW1lID0gY29tcG9uZW50Lm5hbWVcbiAgICAgIC5yZXBsYWNlKC9Db21wb25lbnQkLywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC9Ob2RlJC8sIFwiXCIpXG4gICAgICAucmVwbGFjZSgvXihbQS1aXSkvLCBtID0+IG0udG9Mb3dlckNhc2UoKSk7XG5cbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgW0FURV0gQXV0by1kZXJpdmluZyBub2RlIG5hbWUgJyR7bm9kZU5hbWV9JyBmb3IgY29tcG9uZW50ICR7Y29tcG9uZW50Lm5hbWV9LiBgICtcbiAgICAgICAgYFByb3ZpZGUgYW4gZXhwbGljaXQgJ25hbWUnIGluIG9wdGlvbnMgdG8gYXZvaWQgcG90ZW50aWFsIG5hbWluZyBjb2xsaXNpb25zLmBcbiAgICApO1xuICB9XG5cbiAgaWYgKFJFU0VSVkVEX05BTUVTLmluY2x1ZGVzKG5vZGVOYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBbQVRFXSBUaGUgbmFtZSAnJHtub2RlTmFtZX0nIGlzIGEgcmVzZXJ2ZWQgVGlwVGFwIG5vZGUgbmFtZS4gYCArXG4gICAgICAgIGBQbGVhc2UgcHJvdmlkZSBhIHVuaXF1ZSBuYW1lIGZvciB5b3VyIGN1c3RvbSBjb21wb25lbnQuYFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0YWcgPSBub2RlTmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbQS1aXSkvZywgXCItJDFcIik7XG4gIHJldHVybiB7IG5vZGVOYW1lLCB0YWcgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIFRpcFRhcCBhdHRyaWJ1dGVzIGZyb20gY29tcG9uZW50IGlucHV0cyAoU3RhbmRhcmQgTW9kZSkuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN0YW5kYXJkQXR0cmlidXRlcyhkZWZhdWx0SW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KSB7XG4gIGNvbnN0IHRpcHRhcEF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgT2JqZWN0LmVudHJpZXMoZGVmYXVsdElucHV0cykuZm9yRWFjaCgoW2tleSwgZGVmYXVsdFZhbHVlXSkgPT4ge1xuICAgIHRpcHRhcEF0dHJpYnV0ZXNba2V5XSA9IHtcbiAgICAgIGRlZmF1bHQ6IGRlZmF1bHRWYWx1ZSxcbiAgICAgIHBhcnNlSFRNTDogKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShgZGF0YS0ke2tleX1gKTtcbiAgICAgICAgaWYgKGF0dHIgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXR0cik7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBhdHRyO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVuZGVySFRNTDogKGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICByZXR1cm4geyBbYGRhdGEtJHtrZXl9YF06IHNlcmlhbGl6ZWQgfTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRpcHRhcEF0dHJpYnV0ZXM7XG59XG5cbi8qKlxuICogRmFjdG9yeSB0byB0cmFuc2Zvcm0gYW4gQW5ndWxhciBjb21wb25lbnQgaW50byBhIFRpcFRhcCBOb2RlIGV4dGVuc2lvbi5cbiAqIFN1cHBvcnRzIGJvdGggXCJUaXBUYXAtQXdhcmVcIiBhbmQgXCJTdGFuZGFyZFwiIG1vZGVzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5ndWxhckNvbXBvbmVudEV4dGVuc2lvbjxUID0gdW5rbm93bj4oXG4gIGluamVjdG9yOiBJbmplY3RvcixcbiAgb3B0aW9uczogUmVnaXN0ZXJBbmd1bGFyQ29tcG9uZW50T3B0aW9uczxUPlxuKTogTm9kZSB7XG4gIGNvbnN0IHtcbiAgICBjb21wb25lbnQsXG4gICAgbmFtZTogY3VzdG9tTmFtZSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGRlZmF1bHRJbnB1dHMsXG4gICAgY29udGVudFNlbGVjdG9yLFxuICAgIGNvbnRlbnRNb2RlID0gXCJibG9ja1wiLFxuICAgIGVkaXRhYmxlQ29udGVudCA9IGZhbHNlLFxuICAgIGdyb3VwID0gXCJibG9ja1wiLFxuICAgIGRyYWdnYWJsZSA9IHRydWUsXG4gICAgaWdub3JlTXV0YXRpb24gPSB0cnVlLFxuICAgIG9uT3V0cHV0LFxuICAgIEhUTUxBdHRyaWJ1dGVzID0ge30sXG4gICAgcGFyc2VIVE1MOiBjdXN0b21QYXJzZUhUTUwsXG4gICAgcmVuZGVySFRNTDogY3VzdG9tUmVuZGVySFRNTCxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgeyBub2RlTmFtZSwgdGFnIH0gPSBkZXJpdmVNZXRhZGF0YShjb21wb25lbnQsIGN1c3RvbU5hbWUpO1xuICBjb25zdCBpc1RpcFRhcEF3YXJlID0gT2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mLmNhbGwoQXRlQW5ndWxhck5vZGVWaWV3LCBjb21wb25lbnQpO1xuICBjb25zdCBhdG9tID0gIWVkaXRhYmxlQ29udGVudDtcblxuICAvLyAxLiBQcmVwYXJlIEF0dHJpYnV0ZXNcbiAgY29uc3QgdGlwdGFwQXR0cmlidXRlcyA9IGlzVGlwVGFwQXdhcmVcbiAgICA/IGF0dHJpYnV0ZXMgfHwge31cbiAgICA6IGNyZWF0ZVN0YW5kYXJkQXR0cmlidXRlcyhkZWZhdWx0SW5wdXRzKTtcblxuICAvLyAyLiBDcmVhdGUgTm9kZSBFeHRlbnNpb25cbiAgcmV0dXJuIE5vZGUuY3JlYXRlKHtcbiAgICBuYW1lOiBub2RlTmFtZSxcbiAgICBncm91cCxcbiAgICBpbmxpbmU6IGdyb3VwID09PSBcImlubGluZVwiLFxuICAgIGF0b20sXG4gICAgZHJhZ2dhYmxlLFxuICAgIGNvbnRlbnQ6IGVkaXRhYmxlQ29udGVudCA/IChjb250ZW50TW9kZSA9PT0gXCJpbmxpbmVcIiA/IFwiaW5saW5lKlwiIDogXCJibG9jaypcIikgOiB1bmRlZmluZWQsXG5cbiAgICBhZGRBdHRyaWJ1dGVzKCkge1xuICAgICAgcmV0dXJuIHRpcHRhcEF0dHJpYnV0ZXM7XG4gICAgfSxcblxuICAgIHBhcnNlSFRNTCgpIHtcbiAgICAgIGlmIChjdXN0b21QYXJzZUhUTUwpIHtcbiAgICAgICAgcmV0dXJuIGN1c3RvbVBhcnNlSFRNTC5jYWxsKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFt7IHRhZyB9LCB7IHRhZzogYGRpdltkYXRhLWNvbXBvbmVudD1cIiR7bm9kZU5hbWV9XCJdYCB9XTtcbiAgICB9LFxuXG4gICAgcmVuZGVySFRNTCh7IG5vZGUsIEhUTUxBdHRyaWJ1dGVzOiBhdHRycyB9KSB7XG4gICAgICBpZiAoY3VzdG9tUmVuZGVySFRNTCkge1xuICAgICAgICByZXR1cm4gY3VzdG9tUmVuZGVySFRNTC5jYWxsKHRoaXMsIHsgbm9kZSwgSFRNTEF0dHJpYnV0ZXM6IGF0dHJzIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFt0YWcsIG1lcmdlQXR0cmlidXRlcyhIVE1MQXR0cmlidXRlcywgYXR0cnMsIHsgXCJkYXRhLWNvbXBvbmVudFwiOiBub2RlTmFtZSB9KV07XG4gICAgfSxcblxuICAgIGFkZE5vZGVWaWV3KCkge1xuICAgICAgcmV0dXJuIEF0ZU5vZGVWaWV3UmVuZGVyZXIoY29tcG9uZW50LCB7XG4gICAgICAgIGluamVjdG9yLFxuICAgICAgICBpbnB1dHM6IGRlZmF1bHRJbnB1dHMsXG4gICAgICAgIHdyYXBwZXJUYWc6IGdyb3VwID09PSBcImlubGluZVwiID8gXCJzcGFuXCIgOiBcImRpdlwiLFxuICAgICAgICB3cmFwcGVyQ2xhc3M6IGlzVGlwVGFwQXdhcmVcbiAgICAgICAgICA/IGBhdGUtbm9kZS0ke25vZGVOYW1lfWBcbiAgICAgICAgICA6IGBlbWJlZGRlZC1jb21wb25lbnQgZW1iZWRkZWQtJHtub2RlTmFtZX1gLFxuICAgICAgICBhdG9tLFxuICAgICAgICBlZGl0YWJsZUNvbnRlbnQsXG4gICAgICAgIGNvbnRlbnRTZWxlY3RvcixcbiAgICAgICAgY29udGVudE1vZGUsXG4gICAgICAgIG9uT3V0cHV0LFxuICAgICAgICBpZ25vcmVNdXRhdGlvbixcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLW5vZGUtdmlldy5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9ub2RlLXZpZXcvYXRlLW5vZGUtdmlldy5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5vZGVDb25maWcgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBOb2RlIGFzIFByb3NlTWlycm9yTm9kZSB9IGZyb20gXCJAdGlwdGFwL3BtL21vZGVsXCI7XG5cbi8qKlxuICogQ29tbW9uIG9wdGlvbnMgZm9yIHJlbmRlcmluZyBhbnkgQW5ndWxhciBjb21wb25lbnQgYXMgYSBUaXBUYXAgTm9kZVZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGVDb21wb25lbnRSZW5kZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuZ3VsYXIgaW5qZWN0b3IgdG8gdXNlIGZvciBjcmVhdGluZyB0aGUgY29tcG9uZW50XG4gICAqL1xuICBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgaW5wdXRzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgaW5wdXRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB3cmFwcGVyIGVsZW1lbnQgdGFnIChkZWZhdWx0OiAnZGl2JylcbiAgICovXG4gIHdyYXBwZXJUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzc2VzIHRvIGFkZCB0byB0aGUgd3JhcHBlciBlbGVtZW50XG4gICAqL1xuICB3cmFwcGVyQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gYXRvbSAobm90IGVkaXRhYmxlKVxuICAgKiBEZWZhdWx0OiB0cnVlXG4gICAqL1xuICBhdG9tPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyBlZGl0YWJsZSBjb250ZW50IGZvciA8bmctY29udGVudD4uXG4gICAqIElmIHRydWUsIFRpcFRhcCB3aWxsIHRyZWF0IHRoZSBjb21wb25lbnQncyBjb250ZW50IGFzIGVkaXRhYmxlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZWRpdGFibGVDb250ZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgQ1NTIHNlbGVjdG9yIHRvIHRhcmdldCBhbiBpbnRlcm5hbCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQgYXMgdGhlIGVkaXRhYmxlIGFyZWEuXG4gICAqL1xuICBjb250ZW50U2VsZWN0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgY29udGVudCBhbGxvd2VkIGluIHRoZSBlZGl0YWJsZSBhcmVhLlxuICAgKi9cbiAgY29udGVudE1vZGU/OiBcImJsb2NrXCIgfCBcImlubGluZVwiO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGlnbm9yZSBtdXRhdGlvbnMgaW4gdGhlIGNvbXBvbmVudCdzIERPTS5cbiAgICogSWYgdHJ1ZSwgVGlwVGFwIHdvbid0IHRyeSB0byBzeW5jIGNoYW5nZXMgZnJvbSB0aGUgY29tcG9uZW50J3MgRE9NIGJhY2sgdG8gdGhlIGVkaXRvciBzdGF0ZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaWdub3JlTXV0YXRpb24/OlxuICAgIHwgYm9vbGVhblxuICAgIHwgKChtdXRhdGlvbjogTXV0YXRpb25SZWNvcmQgfCB7IHR5cGU6IFwic2VsZWN0aW9uXCI7IHRhcmdldDogTm9kZSB9KSA9PiBib29sZWFuKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgY2FsbGVkIHdoZW4gYW4gT3V0cHV0IGV2ZW50IGlzIGVtaXR0ZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIG9uT3V0cHV0PzogKG91dHB1dE5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBub2RlIGlzIHVwZGF0ZWQuXG4gICAqL1xuICBvblVwZGF0ZT86IChub2RlOiBQcm9zZU1pcnJvck5vZGUpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICAgKi9cbiAgb25EZXN0cm95PzogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBVbmlmaWVkIGNvbmZpZ3VyYXRpb24gZm9yIHJlZ2lzdGVyaW5nIGFuIEFuZ3VsYXIgY29tcG9uZW50IGFzIGFuIGludGVyYWN0aXZlICdBbmd1bGFyIE5vZGUnLlxuICogVGhpcyBwcm92aWRlcyBoaWdoLWxldmVsIG9wdGlvbnMgdG8gbWFwIEFuZ3VsYXIgY29tcG9uZW50IGxvZ2ljIChpbnB1dHMsIG91dHB1dHMsIGxpZmVzdHlsZSlcbiAqIGRpcmVjdGx5IHRvIFRpcFRhcCdzIGRvY3VtZW50IHN0cnVjdHVyZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckFuZ3VsYXJDb21wb25lbnRPcHRpb25zPFQgPSB1bmtub3duPiB7XG4gIC8qKlxuICAgKiBUaGUgQW5ndWxhciBjb21wb25lbnQgdG8gcmVnaXN0ZXJcbiAgICovXG4gIGNvbXBvbmVudDogVHlwZTxUPjtcblxuICAvKipcbiAgICogVW5pcXVlIG5hbWUgZm9yIHRoZSBUaXBUYXAgbm9kZVxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmYXVsdCBpbnB1dHMgKGZvciBzdGFuZGFyZCBjb21wb25lbnRzKVxuICAgKi9cbiAgZGVmYXVsdElucHV0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaXBUYXAgYXR0cmlidXRlcyAoZm9yIFRpcFRhcC1hd2FyZSBjb21wb25lbnRzKVxuICAgKi9cbiAgYXR0cmlidXRlcz86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgZGVmYXVsdD86IHVua25vd247XG4gICAgICBwYXJzZUhUTUw/OiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHVua25vd247XG4gICAgICByZW5kZXJIVE1MPzogKGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgfVxuICA+O1xuXG4gIC8qKlxuICAgKiBDU1Mgc2VsZWN0b3IgZm9yIHRoZSBlZGl0YWJsZSBhcmVhIGluc2lkZSB0aGUgY29tcG9uZW50XG4gICAqL1xuICBjb250ZW50U2VsZWN0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRlbnQgbW9kZSBmb3IgdGhlIGVkaXRhYmxlIGFyZWFcbiAgICovXG4gIGNvbnRlbnRNb2RlPzogXCJibG9ja1wiIHwgXCJpbmxpbmVcIjtcblxuICAvKipcbiAgICogRW5hYmxlIGVkaXRhYmxlIGNvbnRlbnQgdmlhIDxuZy1jb250ZW50PiBvciBjb250ZW50U2VsZWN0b3JcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGVkaXRhYmxlQ29udGVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5vZGUgZ3JvdXAgKGJsb2NrIG9yIGlubGluZSlcbiAgICogQGRlZmF1bHQgJ2Jsb2NrJ1xuICAgKi9cbiAgZ3JvdXA/OiBcImJsb2NrXCIgfCBcImlubGluZVwiO1xuXG4gIC8qKlxuICAgKiBJcyB0aGUgbm9kZSBkcmFnZ2FibGU/XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyYWdnYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaWdub3JlIG11dGF0aW9ucyBpbiB0aGUgY29tcG9uZW50J3MgRE9NLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBpZ25vcmVNdXRhdGlvbj86XG4gICAgfCBib29sZWFuXG4gICAgfCAoKG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCB8IHsgdHlwZTogXCJzZWxlY3Rpb25cIjsgdGFyZ2V0OiBOb2RlIH0pID0+IGJvb2xlYW4pO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gSFRNTCBhdHRyaWJ1dGVzIGZvciB0aGUgd3JhcHBlclxuICAgKi9cbiAgSFRNTEF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogQ3VzdG9tIHBhcnNlSFRNTCBydWxlc1xuICAgKi9cbiAgcGFyc2VIVE1MPzogTm9kZUNvbmZpZ1tcInBhcnNlSFRNTFwiXTtcblxuICAvKipcbiAgICogQ3VzdG9tIHJlbmRlckhUTUwgZnVuY3Rpb25cbiAgICovXG4gIHJlbmRlckhUTUw/OiBOb2RlQ29uZmlnW1wicmVuZGVySFRNTFwiXTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgY2FsbGVkIHdoZW4gYW4gT3V0cHV0IGV2ZW50IGlzIGVtaXR0ZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIG9uT3V0cHV0PzogKG91dHB1dE5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { ApplicationRef, createComponent, EnvironmentInjector, } from "@angular/core";
|
|
2
|
+
import { AteAngularNodeView } from "./ate-angular-node-view";
|
|
3
|
+
import { Subscription } from "rxjs";
|
|
4
|
+
/**
|
|
5
|
+
* Universal Renderer for Angular Components as TipTap NodeViews.
|
|
6
|
+
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - TipTap-Aware components (extending AteAngularNodeView)
|
|
9
|
+
* - Standard library components (automatic @Input() sync)
|
|
10
|
+
* - Signal-based inputs and outputs (Angular 18+)
|
|
11
|
+
* - Content projection (editableContent)
|
|
12
|
+
* - Unified lifecycle and event management
|
|
13
|
+
*/
|
|
14
|
+
export function AteNodeViewRenderer(component, options) {
|
|
15
|
+
return props => {
|
|
16
|
+
const { node, view: _view, getPos, decorations, editor, extension } = props;
|
|
17
|
+
const { injector, inputs = {}, wrapperTag = "div", wrapperClass, editableContent = false, contentSelector, onOutput, ignoreMutation = true, } = options;
|
|
18
|
+
const dom = document.createElement(wrapperTag);
|
|
19
|
+
if (wrapperClass) {
|
|
20
|
+
dom.className = wrapperClass;
|
|
21
|
+
}
|
|
22
|
+
const applicationRef = injector.get(ApplicationRef);
|
|
23
|
+
const environmentInjector = injector.get(EnvironmentInjector);
|
|
24
|
+
// 1. Setup Content Projection (ng-content)
|
|
25
|
+
let initialNodes = [];
|
|
26
|
+
let contentDOM = null;
|
|
27
|
+
if (editableContent && !contentSelector) {
|
|
28
|
+
contentDOM = document.createElement("div");
|
|
29
|
+
contentDOM.setAttribute("data-node-view-content", "");
|
|
30
|
+
initialNodes = [[contentDOM]];
|
|
31
|
+
}
|
|
32
|
+
// 2. Create the Angular Component
|
|
33
|
+
const componentRef = createComponent(component, {
|
|
34
|
+
environmentInjector,
|
|
35
|
+
elementInjector: injector,
|
|
36
|
+
projectableNodes: initialNodes,
|
|
37
|
+
});
|
|
38
|
+
const instance = componentRef.instance;
|
|
39
|
+
const subscriptions = [];
|
|
40
|
+
// 3. Initialize TipTap-Aware instances
|
|
41
|
+
if (instance instanceof AteAngularNodeView) {
|
|
42
|
+
instance._initNodeView({
|
|
43
|
+
editor,
|
|
44
|
+
node,
|
|
45
|
+
decorations,
|
|
46
|
+
selected: false,
|
|
47
|
+
extension,
|
|
48
|
+
getPos,
|
|
49
|
+
updateAttributes: attrs => editor.commands.updateAttributes(node.type.name, attrs),
|
|
50
|
+
deleteNode: () => {
|
|
51
|
+
const pos = getPos();
|
|
52
|
+
if (pos !== undefined) {
|
|
53
|
+
editor.commands.deleteRange({ from: pos, to: pos + node.nodeSize });
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// 4. Synchronize Inputs (Handles standard @Input and Signal-based inputs)
|
|
59
|
+
const syncInputs = (nodeToSync) => {
|
|
60
|
+
// Combine base inputs from options with dynamic node attributes
|
|
61
|
+
const mergedInputs = { ...inputs, ...nodeToSync.attrs };
|
|
62
|
+
Object.entries(mergedInputs).forEach(([key, value]) => {
|
|
63
|
+
if (key !== "id" && value !== null && value !== undefined) {
|
|
64
|
+
try {
|
|
65
|
+
componentRef.setInput(key, value);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Silently ignore inputs that don't exist on the component
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
syncInputs(node);
|
|
74
|
+
// 5. Setup Outputs (Handles EventEmitter and OutputRef)
|
|
75
|
+
if (onOutput) {
|
|
76
|
+
Object.entries(instance).forEach(([key, potentialOutput]) => {
|
|
77
|
+
if (potentialOutput &&
|
|
78
|
+
typeof potentialOutput
|
|
79
|
+
.subscribe === "function") {
|
|
80
|
+
const sub = potentialOutput.subscribe((value) => {
|
|
81
|
+
onOutput(key, value);
|
|
82
|
+
});
|
|
83
|
+
if (sub instanceof Subscription) {
|
|
84
|
+
subscriptions.push(sub);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// 6. Attach to DOM and ApplicationRef
|
|
90
|
+
applicationRef.attachView(componentRef.hostView);
|
|
91
|
+
const componentElement = componentRef.location.nativeElement;
|
|
92
|
+
// Target specific element for content if selector provided
|
|
93
|
+
if (editableContent && contentSelector) {
|
|
94
|
+
contentDOM = componentElement.querySelector(contentSelector);
|
|
95
|
+
}
|
|
96
|
+
dom.appendChild(componentElement);
|
|
97
|
+
// Initial detection to ensure the component is rendered
|
|
98
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
99
|
+
// 7. Return the TipTap NodeView Interface
|
|
100
|
+
return {
|
|
101
|
+
dom,
|
|
102
|
+
contentDOM,
|
|
103
|
+
update: (updatedNode, updatedDecorations) => {
|
|
104
|
+
if (updatedNode.type !== node.type) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
// Update Aware component signals
|
|
108
|
+
if (instance instanceof AteAngularNodeView) {
|
|
109
|
+
instance._updateNodeView(updatedNode, updatedDecorations);
|
|
110
|
+
}
|
|
111
|
+
// Update inputs
|
|
112
|
+
syncInputs(updatedNode);
|
|
113
|
+
// Notify and Detect changes
|
|
114
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
115
|
+
if (options.onUpdate) {
|
|
116
|
+
options.onUpdate(updatedNode);
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
},
|
|
120
|
+
selectNode: () => {
|
|
121
|
+
if (instance instanceof AteAngularNodeView) {
|
|
122
|
+
instance._selectNodeView();
|
|
123
|
+
}
|
|
124
|
+
dom.classList.add("ProseMirror-selectednode");
|
|
125
|
+
},
|
|
126
|
+
deselectNode: () => {
|
|
127
|
+
if (instance instanceof AteAngularNodeView) {
|
|
128
|
+
instance._deselectNodeView();
|
|
129
|
+
}
|
|
130
|
+
dom.classList.remove("ProseMirror-selectednode");
|
|
131
|
+
},
|
|
132
|
+
destroy: () => {
|
|
133
|
+
if (options.onDestroy) {
|
|
134
|
+
options.onDestroy();
|
|
135
|
+
}
|
|
136
|
+
subscriptions.forEach(s => s.unsubscribe());
|
|
137
|
+
applicationRef.detachView(componentRef.hostView);
|
|
138
|
+
componentRef.destroy();
|
|
139
|
+
},
|
|
140
|
+
stopEvent: event => {
|
|
141
|
+
const target = event.target;
|
|
142
|
+
const isEditable = target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable;
|
|
143
|
+
return isEditable;
|
|
144
|
+
},
|
|
145
|
+
ignoreMutation: mutation => {
|
|
146
|
+
if (typeof ignoreMutation === "function") {
|
|
147
|
+
return ignoreMutation(mutation);
|
|
148
|
+
}
|
|
149
|
+
return ignoreMutation;
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLW5vZGUtdmlldy5yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL25vZGUtdmlldy9hdGUtbm9kZS12aWV3LnJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLG1CQUFtQixHQUdwQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsU0FBa0IsRUFDbEIsT0FBa0M7SUFTbEMsT0FBTyxLQUFLLENBQUMsRUFBRTtRQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDNUUsTUFBTSxFQUNKLFFBQVEsRUFDUixNQUFNLEdBQUcsRUFBRSxFQUNYLFVBQVUsR0FBRyxLQUFLLEVBQ2xCLFlBQVksRUFDWixlQUFlLEdBQUcsS0FBSyxFQUN2QixlQUFlLEVBQ2YsUUFBUSxFQUNSLGNBQWMsR0FBRyxJQUFJLEdBQ3RCLEdBQUcsT0FBTyxDQUFDO1FBRVosTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFD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SyxVQUFVLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO2dCQUMxRixPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBRUQsY0FBYyxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLE9BQU8sY0FBYyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN6QyxPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztnQkFDRCxPQUFPLGNBQWMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgY3JlYXRlQ29tcG9uZW50LFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBUeXBlLFxuICBDb21wb25lbnRSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOb2RlVmlldywgRGVjb3JhdGlvbiwgRWRpdG9yVmlldyB9IGZyb20gXCJAdGlwdGFwL3BtL3ZpZXdcIjtcbmltcG9ydCB7IE5vZGUgYXMgUHJvc2VNaXJyb3JOb2RlIH0gZnJvbSBcIkB0aXB0YXAvcG0vbW9kZWxcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUFuZ3VsYXJOb2RlVmlldyB9IGZyb20gXCIuL2F0ZS1hbmd1bGFyLW5vZGUtdmlld1wiO1xuaW1wb3J0IHsgQXRlQ29tcG9uZW50UmVuZGVyT3B0aW9ucyB9IGZyb20gXCIuL2F0ZS1ub2RlLXZpZXcubW9kZWxzXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG4vKipcbiAqIFVuaXZlcnNhbCBSZW5kZXJlciBmb3IgQW5ndWxhciBDb21wb25lbnRzIGFzIFRpcFRhcCBOb2RlVmlld3MuXG4gKlxuICogU3VwcG9ydHM6XG4gKiAtIFRpcFRhcC1Bd2FyZSBjb21wb25lbnRzIChleHRlbmRpbmcgQXRlQW5ndWxhck5vZGVWaWV3KVxuICogLSBTdGFuZGFyZCBsaWJyYXJ5IGNvbXBvbmVudHMgKGF1dG9tYXRpYyBASW5wdXQoKSBzeW5jKVxuICogLSBTaWduYWwtYmFzZWQgaW5wdXRzIGFuZCBvdXRwdXRzIChBbmd1bGFyIDE4KylcbiAqIC0gQ29udGVudCBwcm9qZWN0aW9uIChlZGl0YWJsZUNvbnRlbnQpXG4gKiAtIFVuaWZpZWQgbGlmZWN5Y2xlIGFuZCBldmVudCBtYW5hZ2VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBdGVOb2RlVmlld1JlbmRlcmVyPFQ+KFxuICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gIG9wdGlvbnM6IEF0ZUNvbXBvbmVudFJlbmRlck9wdGlvbnNcbik6IChwcm9wczoge1xuICBub2RlOiBQcm9zZU1pcnJvck5vZGU7XG4gIHZpZXc6IEVkaXRvclZpZXc7XG4gIGdldFBvczogKCkgPT4gbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBkZWNvcmF0aW9uczogcmVhZG9ubHkgRGVjb3JhdGlvbltdO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgZXh0ZW5zaW9uOiB1bmtub3duO1xufSkgPT4gTm9kZVZpZXcge1xuICByZXR1cm4gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgdmlldzogX3ZpZXcsIGdldFBvcywgZGVjb3JhdGlvbnMsIGVkaXRvciwgZXh0ZW5zaW9uIH0gPSBwcm9wcztcbiAgICBjb25zdCB7XG4gICAgICBpbmplY3RvcixcbiAgICAgIGlucHV0cyA9IHt9LFxuICAgICAgd3JhcHBlclRhZyA9IFwiZGl2XCIsXG4gICAgICB3cmFwcGVyQ2xhc3MsXG4gICAgICBlZGl0YWJsZUNvbnRlbnQgPSBmYWxzZSxcbiAgICAgIGNvbnRlbnRTZWxlY3RvcixcbiAgICAgIG9uT3V0cHV0LFxuICAgICAgaWdub3JlTXV0YXRpb24gPSB0cnVlLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh3cmFwcGVyVGFnKTtcbiAgICBpZiAod3JhcHBlckNsYXNzKSB7XG4gICAgICBkb20uY2xhc3NOYW1lID0gd3JhcHBlckNsYXNzO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcGxpY2F0aW9uUmVmID0gaW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uUmVmKTtcbiAgICBjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuXG4gICAgLy8gMS4gU2V0dXAgQ29udGVudCBQcm9qZWN0aW9uIChuZy1jb250ZW50KVxuICAgIGxldCBpbml0aWFsTm9kZXM6IE5vZGVbXVtdID0gW107XG4gICAgbGV0IGNvbnRlbnRET006IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoZWRpdGFibGVDb250ZW50ICYmICFjb250ZW50U2VsZWN0b3IpIHtcbiAgICAgIGNvbnRlbnRET00gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgY29udGVudERPTS5zZXRBdHRyaWJ1dGUoXCJkYXRhLW5vZGUtdmlldy1jb250ZW50XCIsIFwiXCIpO1xuICAgICAgaW5pdGlhbE5vZGVzID0gW1tjb250ZW50RE9NXV07XG4gICAgfVxuXG4gICAgLy8gMi4gQ3JlYXRlIHRoZSBBbmd1bGFyIENvbXBvbmVudFxuICAgIGNvbnN0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+ID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIGVsZW1lbnRJbmplY3RvcjogaW5qZWN0b3IsXG4gICAgICBwcm9qZWN0YWJsZU5vZGVzOiBpbml0aWFsTm9kZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgLy8gMy4gSW5pdGlhbGl6ZSBUaXBUYXAtQXdhcmUgaW5zdGFuY2VzXG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgQXRlQW5ndWxhck5vZGVWaWV3KSB7XG4gICAgICBpbnN0YW5jZS5faW5pdE5vZGVWaWV3KHtcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBub2RlLFxuICAgICAgICBkZWNvcmF0aW9ucyxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBleHRlbnNpb24sXG4gICAgICAgIGdldFBvcyxcbiAgICAgICAgdXBkYXRlQXR0cmlidXRlczogYXR0cnMgPT4gZWRpdG9yLmNvbW1hbmRzLnVwZGF0ZUF0dHJpYnV0ZXMobm9kZS50eXBlLm5hbWUsIGF0dHJzKSxcbiAgICAgICAgZGVsZXRlTm9kZTogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBvcyA9IGdldFBvcygpO1xuICAgICAgICAgIGlmIChwb3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZWRpdG9yLmNvbW1hbmRzLmRlbGV0ZVJhbmdlKHsgZnJvbTogcG9zLCB0bzogcG9zICsgbm9kZS5ub2RlU2l6ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyA0LiBTeW5jaHJvbml6ZSBJbnB1dHMgKEhhbmRsZXMgc3RhbmRhcmQgQElucHV0IGFuZCBTaWduYWwtYmFzZWQgaW5wdXRzKVxuICAgIGNvbnN0IHN5bmNJbnB1dHMgPSAobm9kZVRvU3luYzogUHJvc2VNaXJyb3JOb2RlKSA9PiB7XG4gICAgICAvLyBDb21iaW5lIGJhc2UgaW5wdXRzIGZyb20gb3B0aW9ucyB3aXRoIGR5bmFtaWMgbm9kZSBhdHRyaWJ1dGVzXG4gICAgICBjb25zdCBtZXJnZWRJbnB1dHMgPSB7IC4uLmlucHV0cywgLi4ubm9kZVRvU3luYy5hdHRycyB9O1xuICAgICAgT2JqZWN0LmVudHJpZXMobWVyZ2VkSW5wdXRzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJpZFwiICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlucHV0cyB0aGF0IGRvbid0IGV4aXN0IG9uIHRoZSBjb21wb25lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBzeW5jSW5wdXRzKG5vZGUpO1xuXG4gICAgLy8gNS4gU2V0dXAgT3V0cHV0cyAoSGFuZGxlcyBFdmVudEVtaXR0ZXIgYW5kIE91dHB1dFJlZilcbiAgICBpZiAob25PdXRwdXQpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGluc3RhbmNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5mb3JFYWNoKChba2V5LCBwb3RlbnRpYWxPdXRwdXRdKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwb3RlbnRpYWxPdXRwdXQgJiZcbiAgICAgICAgICB0eXBlb2YgKHBvdGVudGlhbE91dHB1dCBhcyB7IHN1YnNjcmliZT86IChjYjogKHZhbDogdW5rbm93bikgPT4gdm9pZCkgPT4gdm9pZCB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHN1YiA9IChcbiAgICAgICAgICAgIHBvdGVudGlhbE91dHB1dCBhcyB7IHN1YnNjcmliZTogKGNiOiAodmFsOiB1bmtub3duKSA9PiB2b2lkKSA9PiBTdWJzY3JpcHRpb24gfVxuICAgICAgICAgICkuc3Vic2NyaWJlKCh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgb25PdXRwdXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHN1YiBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyA2LiBBdHRhY2ggdG8gRE9NIGFuZCBBcHBsaWNhdGlvblJlZlxuICAgIGFwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICBjb25zdCBjb21wb25lbnRFbGVtZW50ID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBUYXJnZXQgc3BlY2lmaWMgZWxlbWVudCBmb3IgY29udGVudCBpZiBzZWxlY3RvciBwcm92aWRlZFxuICAgIGlmIChlZGl0YWJsZUNvbnRlbnQgJiYgY29udGVudFNlbGVjdG9yKSB7XG4gICAgICBjb250ZW50RE9NID0gY29tcG9uZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKGNvbnRlbnRTZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgZG9tLmFwcGVuZENoaWxkKGNvbXBvbmVudEVsZW1lbnQpO1xuXG4gICAgLy8gSW5pdGlhbCBkZXRlY3Rpb24gdG8gZW5zdXJlIHRoZSBjb21wb25lbnQgaXMgcmVuZGVyZWRcbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gNy4gUmV0dXJuIHRoZSBUaXBUYXAgTm9kZVZpZXcgSW50ZXJmYWNlXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbSxcbiAgICAgIGNvbnRlbnRET00sXG5cbiAgICAgIHVwZGF0ZTogKHVwZGF0ZWROb2RlLCB1cGRhdGVkRGVjb3JhdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZWROb2RlLnR5cGUgIT09IG5vZGUudHlwZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSBBd2FyZSBjb21wb25lbnQgc2lnbmFsc1xuICAgICAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBBdGVBbmd1bGFyTm9kZVZpZXcpIHtcbiAgICAgICAgICBpbnN0YW5jZS5fdXBkYXRlTm9kZVZpZXcodXBkYXRlZE5vZGUsIHVwZGF0ZWREZWNvcmF0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgaW5wdXRzXG4gICAgICAgIHN5bmNJbnB1dHModXBkYXRlZE5vZGUpO1xuXG4gICAgICAgIC8vIE5vdGlmeSBhbmQgRGV0ZWN0IGNoYW5nZXNcbiAgICAgICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgaWYgKG9wdGlvbnMub25VcGRhdGUpIHtcbiAgICAgICAgICBvcHRpb25zLm9uVXBkYXRlKHVwZGF0ZWROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcblxuICAgICAgc2VsZWN0Tm9kZTogKCkgPT4ge1xuICAgICAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBBdGVBbmd1bGFyTm9kZVZpZXcpIHtcbiAgICAgICAgICBpbnN0YW5jZS5fc2VsZWN0Tm9kZVZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgICBkb20uY2xhc3NMaXN0LmFkZChcIlByb3NlTWlycm9yLXNlbGVjdGVkbm9kZVwiKTtcbiAgICAgIH0sXG5cbiAgICAgIGRlc2VsZWN0Tm9kZTogKCkgPT4ge1xuICAgICAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBBdGVBbmd1bGFyTm9kZVZpZXcpIHtcbiAgICAgICAgICBpbnN0YW5jZS5fZGVzZWxlY3ROb2RlVmlldygpO1xuICAgICAgICB9XG4gICAgICAgIGRvbS5jbGFzc0xpc3QucmVtb3ZlKFwiUHJvc2VNaXJyb3Itc2VsZWN0ZWRub2RlXCIpO1xuICAgICAgfSxcblxuICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5vbkRlc3Ryb3kpIHtcbiAgICAgICAgICBvcHRpb25zLm9uRGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIGFwcGxpY2F0aW9uUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIH0sXG5cbiAgICAgIHN0b3BFdmVudDogZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzRWRpdGFibGUgPVxuICAgICAgICAgIHRhcmdldC50YWdOYW1lID09PSBcIklOUFVUXCIgfHwgdGFyZ2V0LnRhZ05hbWUgPT09IFwiVEVYVEFSRUFcIiB8fCB0YXJnZXQuaXNDb250ZW50RWRpdGFibGU7XG4gICAgICAgIHJldHVybiBpc0VkaXRhYmxlO1xuICAgICAgfSxcblxuICAgICAgaWdub3JlTXV0YXRpb246IG11dGF0aW9uID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpZ25vcmVNdXRhdGlvbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIGlnbm9yZU11dGF0aW9uKG11dGF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWdub3JlTXV0YXRpb247XG4gICAgICB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=
|