@ecodev/natural-editor 41.3.0 → 42.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/{esm2015/ecodev-natural-editor.js → esm2020/ecodev-natural-editor.mjs} +0 -0
  2. package/esm2020/lib/class-dialog/class-dialog.component.mjs +37 -0
  3. package/esm2020/lib/color-dialog/color-dialog.component.mjs +184 -0
  4. package/esm2020/lib/custom-css/custom-css.directive.mjs +71 -0
  5. package/esm2020/lib/editor/editor.component.mjs +213 -0
  6. package/esm2020/lib/editor.module.mjs +90 -0
  7. package/{esm2015/lib/link-dialog/link-dialog.component.js → esm2020/lib/link-dialog/link-dialog.component.mjs} +5 -8
  8. package/esm2020/lib/utils/image.mjs +81 -0
  9. package/{esm2015/lib/utils/inputrules.js → esm2020/lib/utils/inputrules.mjs} +0 -0
  10. package/esm2020/lib/utils/items/cell-background-color-item.mjs +55 -0
  11. package/esm2020/lib/utils/items/class-item.mjs +86 -0
  12. package/esm2020/lib/utils/items/horizontal-rule-item.mjs +24 -0
  13. package/esm2020/lib/utils/items/item.mjs +39 -0
  14. package/esm2020/lib/utils/items/link-item.mjs +40 -0
  15. package/esm2020/lib/utils/items/table-item.mjs +43 -0
  16. package/esm2020/lib/utils/items/text-align-item.mjs +78 -0
  17. package/esm2020/lib/utils/items/utils.mjs +41 -0
  18. package/esm2020/lib/utils/items/wrap-list-item.mjs +6 -0
  19. package/esm2020/lib/utils/keymap.mjs +115 -0
  20. package/esm2020/lib/utils/menu.mjs +101 -0
  21. package/esm2020/lib/utils/schema/paragraph-with-alignment.mjs +50 -0
  22. package/esm2020/lib/utils/schema/schema.mjs +51 -0
  23. package/esm2020/lib/utils/schema/table.mjs +113 -0
  24. package/esm2020/public-api.mjs +9 -0
  25. package/fesm2015/ecodev-natural-editor.mjs +1548 -0
  26. package/fesm2015/ecodev-natural-editor.mjs.map +1 -0
  27. package/fesm2020/ecodev-natural-editor.mjs +1546 -0
  28. package/fesm2020/ecodev-natural-editor.mjs.map +1 -0
  29. package/lib/class-dialog/class-dialog.component.d.ts +24 -0
  30. package/lib/color-dialog/color-dialog.component.d.ts +26 -0
  31. package/lib/custom-css/custom-css.directive.d.ts +29 -0
  32. package/lib/editor.module.d.ts +19 -16
  33. package/lib/utils/items/cell-background-color-item.d.ts +5 -0
  34. package/lib/utils/items/class-item.d.ts +6 -0
  35. package/lib/utils/items/horizontal-rule-item.d.ts +5 -0
  36. package/lib/utils/{item.d.ts → items/item.d.ts} +0 -0
  37. package/lib/utils/items/link-item.d.ts +6 -0
  38. package/lib/utils/items/table-item.d.ts +4 -0
  39. package/lib/utils/{text-align-item.d.ts → items/text-align-item.d.ts} +0 -0
  40. package/lib/utils/items/utils.d.ts +18 -0
  41. package/lib/utils/items/wrap-list-item.d.ts +3 -0
  42. package/lib/utils/menu.d.ts +2 -2
  43. package/lib/utils/schema/paragraph-with-alignment.d.ts +8 -0
  44. package/lib/utils/{schema.d.ts → schema/schema.d.ts} +0 -0
  45. package/lib/utils/schema/table.d.ts +9 -0
  46. package/package.json +22 -8
  47. package/public-api.d.ts +1 -0
  48. package/src/lib/editor/_editor.theme.scss +1 -1
  49. package/theming/_natural-editor.theme.scss +1 -1
  50. package/bundles/ecodev-natural-editor.umd.js +0 -1351
  51. package/bundles/ecodev-natural-editor.umd.js.map +0 -1
  52. package/esm2015/lib/editor/editor.component.js +0 -219
  53. package/esm2015/lib/editor.module.js +0 -82
  54. package/esm2015/lib/utils/image.js +0 -81
  55. package/esm2015/lib/utils/item.js +0 -39
  56. package/esm2015/lib/utils/keymap.js +0 -115
  57. package/esm2015/lib/utils/menu.js +0 -178
  58. package/esm2015/lib/utils/paragraph-with-alignment.js +0 -43
  59. package/esm2015/lib/utils/schema.js +0 -47
  60. package/esm2015/lib/utils/table.js +0 -37
  61. package/esm2015/lib/utils/text-align-item.js +0 -78
  62. package/esm2015/public-api.js +0 -8
  63. package/fesm2015/ecodev-natural-editor.js +0 -997
  64. package/fesm2015/ecodev-natural-editor.js.map +0 -1
  65. package/lib/utils/paragraph-with-alignment.d.ts +0 -2
  66. package/lib/utils/table.d.ts +0 -8
@@ -1,219 +0,0 @@
1
- import { Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild, } from '@angular/core';
2
- import { EditorView } from 'prosemirror-view';
3
- import { EditorState, Plugin } from 'prosemirror-state';
4
- import { DOMParser, DOMSerializer } from 'prosemirror-model';
5
- import { DOCUMENT } from '@angular/common';
6
- import { columnResizing, goToNextCell, tableEditing } from 'prosemirror-tables';
7
- import { keymap } from 'prosemirror-keymap';
8
- import { ImagePlugin } from '../utils/image';
9
- import { advancedSchema, basicSchema } from '../utils/schema';
10
- import { buildMenuItems } from '../utils/menu';
11
- import { history } from 'prosemirror-history';
12
- import { baseKeymap } from 'prosemirror-commands';
13
- import { dropCursor } from 'prosemirror-dropcursor';
14
- import { gapCursor } from 'prosemirror-gapcursor';
15
- import { buildInputRules } from '../utils/inputrules';
16
- import { buildKeymap } from '../utils/keymap';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "@angular/forms";
19
- import * as i2 from "@angular/material/dialog";
20
- import * as i3 from "../utils/image";
21
- import * as i4 from "@angular/material/button";
22
- import * as i5 from "@angular/material/icon";
23
- import * as i6 from "@angular/material/button-toggle";
24
- import * as i7 from "@angular/material/menu";
25
- import * as i8 from "@angular/material/divider";
26
- import * as i9 from "@angular/common";
27
- import * as i10 from "@angular/material/tooltip";
28
- import * as i11 from "@ecodev/natural";
29
- /**
30
- * Prosemirror component
31
- *
32
- * Usage :
33
- *
34
- * ```html
35
- * <natural-editor [(ngModel)]="htmlString"></natural-editor>
36
- * ```
37
- */
38
- // @dynamic
39
- export class NaturalEditorComponent {
40
- constructor(ngControl, document, dialog, imagePlugin) {
41
- this.ngControl = ngControl;
42
- this.document = document;
43
- this.dialog = dialog;
44
- this.imagePlugin = imagePlugin;
45
- this.view = null;
46
- this.contentChange = new EventEmitter();
47
- /**
48
- * Callback to upload an image.
49
- *
50
- * If given it will enable advanced schema, including image and tables.
51
- * It must be given on initialization and cannot be changed later on.
52
- */
53
- this.imageUploader = null;
54
- this.schema = basicSchema;
55
- /**
56
- * HTML string
57
- */
58
- this.content = '';
59
- this.menu = null;
60
- /**
61
- * If subscribed to, then the save button will be shown and click events forwarded
62
- */
63
- this.save = new EventEmitter();
64
- if (this.ngControl !== null) {
65
- this.ngControl.valueAccessor = this;
66
- }
67
- }
68
- ngOnInit() {
69
- this.schema = this.imageUploader ? advancedSchema : basicSchema;
70
- this.menu = buildMenuItems(this.schema, this.dialog);
71
- const serializer = DOMSerializer.fromSchema(this.schema);
72
- const state = this.createState();
73
- this.view = new EditorView(this.editor.nativeElement, {
74
- state: state,
75
- dispatchTransaction: (transaction) => {
76
- if (!this.view) {
77
- return;
78
- }
79
- const newState = this.view.state.apply(transaction);
80
- this.view.updateState(newState);
81
- // Transform doc into HTML string
82
- const dom = serializer.serializeFragment(this.view.state.doc);
83
- const el = this.document.createElement('_');
84
- el.appendChild(dom);
85
- const newContent = el.innerHTML;
86
- if (this.content === newContent) {
87
- return;
88
- }
89
- this.content = el.innerHTML;
90
- if (this.onChange) {
91
- this.onChange(this.content);
92
- }
93
- this.contentChange.emit(this.content);
94
- },
95
- });
96
- this.update();
97
- }
98
- writeValue(val) {
99
- if (typeof val === 'string' && val !== this.content) {
100
- this.content = val;
101
- }
102
- if (this.view !== null) {
103
- const state = this.createState();
104
- this.view.updateState(state);
105
- }
106
- }
107
- createState() {
108
- const template = this.document.createElement('_');
109
- template.innerHTML = '<div>' + this.content + '</div>';
110
- if (!template.firstChild) {
111
- throw new Error('child of template element could not be created');
112
- }
113
- const parser = DOMParser.fromSchema(this.schema);
114
- const doc = parser.parse(template.firstChild);
115
- return EditorState.create({
116
- doc: doc,
117
- plugins: this.createPlugins(),
118
- });
119
- }
120
- createPlugins() {
121
- var _a;
122
- const isMac = !!((_a = this.document.defaultView) === null || _a === void 0 ? void 0 : _a.navigator.platform.match(/Mac/));
123
- const plugins = [
124
- buildInputRules(this.schema),
125
- keymap(buildKeymap(this.schema, isMac)),
126
- keymap(baseKeymap),
127
- dropCursor(),
128
- gapCursor(),
129
- history(),
130
- new Plugin({
131
- props: {
132
- attributes: { class: 'ProseMirror-example-setup-style' },
133
- },
134
- }),
135
- new Plugin({
136
- view: () => this,
137
- }),
138
- ];
139
- if (this.schema === advancedSchema) {
140
- plugins.push(this.imagePlugin.plugin, columnResizing(undefined), tableEditing(), keymap({
141
- Tab: goToNextCell(1),
142
- 'Shift-Tab': goToNextCell(-1),
143
- }));
144
- }
145
- return plugins;
146
- }
147
- /**
148
- * Called by Prosemirror whenever the editor state changes. So we update our menu states.
149
- */
150
- update() {
151
- if (!this.view || !this.menu) {
152
- return;
153
- }
154
- for (const item of Object.values(this.menu)) {
155
- item.update(this.view, this.view.state);
156
- }
157
- }
158
- registerOnChange(fn) {
159
- this.onChange = fn;
160
- }
161
- registerOnTouched(fn) { }
162
- setDisabledState(isDisabled) {
163
- // TODO disable editor ?
164
- }
165
- ngOnDestroy() {
166
- if (this.view) {
167
- this.view.destroy();
168
- this.view = null;
169
- }
170
- }
171
- run(event, key) {
172
- if (!this.view || !this.menu) {
173
- return;
174
- }
175
- const item = this.menu[key];
176
- if (!item || item.disabled || !item.show) {
177
- return;
178
- }
179
- item.spec.run(this.view.state, this.view.dispatch, this.view, event);
180
- this.view.focus();
181
- }
182
- upload(file) {
183
- if (!this.view || !this.imageUploader) {
184
- return;
185
- }
186
- if (this.view.state.selection.$from.parent.inlineContent) {
187
- this.imagePlugin.startImageUpload(this.view, file, this.imageUploader, this.schema);
188
- }
189
- this.view.focus();
190
- }
191
- }
192
- NaturalEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NaturalEditorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: DOCUMENT }, { token: i2.MatDialog }, { token: i3.ImagePlugin }], target: i0.ɵɵFactoryTarget.Component });
193
- NaturalEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.9", type: NaturalEditorComponent, selector: "natural-editor", inputs: { imageUploader: "imageUploader" }, outputs: { contentChange: "contentChange", save: "save" }, providers: [ImagePlugin], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"menu-container\" *ngIf=\"menu\">\n <div class=\"menu\">\n <button mat-button *ngIf=\"save.observed\" (click)=\"save.emit()\" i18n-matTooltip matTooltip=\"Enregistrer\">\n <mat-icon>save</mat-icon>\n </button>\n\n <mat-button-toggle-group multiple>\n <mat-button-toggle\n *ngIf=\"menu.toggleStrong\"\n [disabled]=\"menu.toggleStrong.disabled\"\n [checked]=\"menu.toggleStrong.active\"\n (click)=\"run($event, 'toggleStrong')\"\n i18n-matTooltip\n matTooltip=\"Gras\"\n >\n <mat-icon>format_bold</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleEm\"\n [disabled]=\"menu.toggleEm.disabled\"\n [checked]=\"menu.toggleEm.active\"\n (click)=\"run($event, 'toggleEm')\"\n i18n-matTooltip\n matTooltip=\"Italique\"\n >\n <mat-icon>format_italic</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleCode\"\n [disabled]=\"menu.toggleCode.disabled\"\n [checked]=\"menu.toggleCode.active\"\n (click)=\"run($event, 'toggleCode')\"\n i18n-matTooltip\n matTooltip=\"Code\"\n >\n <mat-icon>code</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.toggleLink\"\n [disabled]=\"menu.toggleLink.disabled\"\n [checked]=\"menu.toggleLink.active\"\n (click)=\"run($event, 'toggleLink')\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer un lien...\"\n >\n <mat-icon>insert_link</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button mat-button [matMenuTriggerFor]=\"blockMenu\">\n <span i18n>Type</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #blockMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.makeParagraph\"\n [disabled]=\"menu.makeParagraph.disabled\"\n (click)=\"run($event, 'makeParagraph')\"\n i18n\n >Paragraphe\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeCodeBlock\"\n [disabled]=\"menu.makeCodeBlock.disabled\"\n (click)=\"run($event, 'makeCodeBlock')\"\n i18n\n >Code\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead1\"\n [disabled]=\"menu.makeHead1.disabled\"\n (click)=\"run($event, 'makeHead1')\"\n i18n\n >Titre 1\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead2\"\n [disabled]=\"menu.makeHead2.disabled\"\n (click)=\"run($event, 'makeHead2')\"\n i18n\n >Titre 2\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead3\"\n [disabled]=\"menu.makeHead3.disabled\"\n (click)=\"run($event, 'makeHead3')\"\n i18n\n >Titre 3\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead4\"\n [disabled]=\"menu.makeHead4.disabled\"\n (click)=\"run($event, 'makeHead4')\"\n i18n\n >Titre 4\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead5\"\n [disabled]=\"menu.makeHead5.disabled\"\n (click)=\"run($event, 'makeHead5')\"\n i18n\n >Titre 5\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.makeHead6\"\n [disabled]=\"menu.makeHead6.disabled\"\n (click)=\"run($event, 'makeHead6')\"\n i18n\n >Titre 6\n </button>\n </mat-menu>\n\n <button mat-button [matMenuTriggerFor]=\"tableMenu\" *ngIf=\"menu.addColumnBefore\">\n <span i18n>Tableau</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #tableMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngIf=\"menu.insertTable\"\n [disabled]=\"menu.insertTable.disabled\"\n (click)=\"run($event, 'insertTable')\"\n i18n\n >Ins\u00E9rer un tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteTable\"\n [disabled]=\"menu.deleteTable.disabled\"\n (click)=\"run($event, 'deleteTable')\"\n i18n\n >Supprimer le tableau\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.mergeCells\"\n [disabled]=\"menu.mergeCells.disabled\"\n (click)=\"run($event, 'mergeCells')\"\n i18n\n >Fusionner les cellules\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.splitCell\"\n [disabled]=\"menu.splitCell.disabled\"\n (click)=\"run($event, 'splitCell')\"\n i18n\n >Scinder les cellules\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnBefore\"\n [disabled]=\"menu.addColumnBefore.disabled\"\n (click)=\"run($event, 'addColumnBefore')\"\n i18n\n >Ins\u00E9rer une colonne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addColumnAfter\"\n [disabled]=\"menu.addColumnAfter.disabled\"\n (click)=\"run($event, 'addColumnAfter')\"\n i18n\n >Ins\u00E9rer une colonne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteColumn\"\n [disabled]=\"menu.deleteColumn.disabled\"\n (click)=\"run($event, 'deleteColumn')\"\n i18n\n >Supprimer la colonne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.addRowBefore\"\n [disabled]=\"menu.addRowBefore.disabled\"\n (click)=\"run($event, 'addRowBefore')\"\n i18n\n >Ins\u00E9rer une ligne avant\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.addRowAfter\"\n [disabled]=\"menu.addRowAfter.disabled\"\n (click)=\"run($event, 'addRowAfter')\"\n i18n\n >Ins\u00E9rer une ligne apr\u00E8s\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.deleteRow\"\n [disabled]=\"menu.deleteRow.disabled\"\n (click)=\"run($event, 'deleteRow')\"\n i18n\n >Supprimer la ligne\n </button>\n\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderColumn\"\n [disabled]=\"menu.toggleHeaderColumn.disabled\"\n (click)=\"run($event, 'toggleHeaderColumn')\"\n i18n\n >Ent\u00EAte de colonne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderRow\"\n [disabled]=\"menu.toggleHeaderRow.disabled\"\n (click)=\"run($event, 'toggleHeaderRow')\"\n i18n\n >Ent\u00EAte de ligne\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.toggleHeaderCell\"\n [disabled]=\"menu.toggleHeaderCell.disabled\"\n (click)=\"run($event, 'toggleHeaderCell')\"\n i18n\n >Ent\u00EAte de cellule\n </button>\n </mat-menu>\n\n <button\n mat-button\n *ngIf=\"imageUploader\"\n naturalFileDrop\n [selectable]=\"true\"\n [broadcast]=\"false\"\n i18n-matTooltip\n matTooltip=\"Ins\u00E9rer une image\"\n (fileChange)=\"upload($event)\"\n >\n <mat-icon>insert_photo</mat-icon>\n </button>\n\n <mat-button-toggle-group *ngIf=\"menu.alignLeft\">\n <mat-button-toggle\n *ngIf=\"menu.alignLeft\"\n [disabled]=\"menu.alignLeft.disabled\"\n [checked]=\"menu.alignLeft.active\"\n (click)=\"run($event, 'alignLeft')\"\n i18n-matTooltip\n matTooltip=\"Aligner gauche\"\n >\n <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignCenter\"\n [disabled]=\"menu.alignCenter.disabled\"\n [checked]=\"menu.alignCenter.active\"\n (click)=\"run($event, 'alignCenter')\"\n i18n-matTooltip\n matTooltip=\"Centrer\"\n >\n <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignRight\"\n [disabled]=\"menu.alignRight.disabled\"\n [checked]=\"menu.alignRight.active\"\n (click)=\"run($event, 'alignRight')\"\n i18n-matTooltip\n matTooltip=\"Aligner droite\"\n >\n <mat-icon>format_align_right</mat-icon>\n </mat-button-toggle>\n\n <mat-button-toggle\n *ngIf=\"menu.alignJustify\"\n [disabled]=\"menu.alignJustify.disabled\"\n [checked]=\"menu.alignJustify.active\"\n (click)=\"run($event, 'alignJustify')\"\n i18n-matTooltip\n matTooltip=\"Justifier\"\n >\n <mat-icon>format_align_justify</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n\n <button\n mat-button\n *ngIf=\"menu.undo\"\n [disabled]=\"menu.undo.disabled\"\n (click)=\"run($event, 'undo')\"\n i18n-matTooltip\n matTooltip=\"Annuler\"\n >\n <mat-icon>undo</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.redo\"\n [disabled]=\"menu.redo.disabled\"\n (click)=\"run($event, 'redo')\"\n i18n-matTooltip\n matTooltip=\"Refaire\"\n >\n <mat-icon>redo</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapBulletList && menu.wrapBulletList.show\"\n [disabled]=\"menu.wrapBulletList.disabled\"\n (click)=\"run($event, 'wrapBulletList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 puce\"\n >\n <mat-icon>format_list_bulleted</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapOrderedList && menu.wrapOrderedList.show\"\n [disabled]=\"menu.wrapOrderedList.disabled\"\n (click)=\"run($event, 'wrapOrderedList')\"\n i18n-matTooltip\n matTooltip=\"Liste \u00E0 num\u00E9ro\"\n >\n <mat-icon>format_list_numbered</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.wrapBlockQuote && menu.wrapBlockQuote.show\"\n [disabled]=\"menu.wrapBlockQuote.disabled\"\n (click)=\"run($event, 'wrapBlockQuote')\"\n i18n-matTooltip\n matTooltip=\"Citation\"\n >\n <mat-icon>format_quote</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.joinUp && menu.joinUp.show\"\n [disabled]=\"menu.joinUp.disabled\"\n (click)=\"run($event, 'joinUp')\"\n i18n-matTooltip\n matTooltip=\"Fusionner avec l'\u00E9l\u00E9ment du haut\"\n >\n <mat-icon>move_up</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.lift && menu.lift.show\"\n [disabled]=\"menu.lift.disabled\"\n (click)=\"run($event, 'lift')\"\n i18n-matTooltip\n matTooltip=\"D\u00E9sindenter\"\n >\n <mat-icon>format_indent_decrease</mat-icon>\n </button>\n\n <button\n mat-button\n *ngIf=\"menu.selectParentNode && menu.selectParentNode.show\"\n [disabled]=\"menu.selectParentNode.disabled\"\n (click)=\"run($event, 'selectParentNode')\"\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner l'\u00E9l\u00E9ment parent\"\n >\n <mat-icon>select_all</mat-icon>\n </button>\n </div>\n</div>\n<div #editor></div>\n", styles: [".menu{border-bottom:1px solid;display:flex;flex-wrap:wrap;padding:10px 18px}.menu-container{position:sticky;top:-20px;z-index:999}::ng-deep .ProseMirror{position:relative}::ng-deep .ProseMirror{word-wrap:break-word;white-space:pre-wrap;-webkit-font-variant-ligatures:none;font-feature-settings:none;font-variant-ligatures:none}::ng-deep .ProseMirror pre{white-space:pre-wrap}::ng-deep .ProseMirror li{position:relative}::ng-deep .ProseMirror-hideselection *::selection{background:transparent}::ng-deep .ProseMirror-hideselection *::-moz-selection{background:transparent}::ng-deep .ProseMirror-hideselection{caret-color:transparent}::ng-deep .ProseMirror-selectednode{outline:2px solid #8cf}::ng-deep li.ProseMirror-selectednode{outline:none}::ng-deep li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid black;animation:ProseMirror-cursor-blink 1.1s steps(2,start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}::ng-deep .ProseMirror-example-setup-style hr{padding:2px 10px;border:none;margin:1em 0}::ng-deep .ProseMirror-example-setup-style hr:after{content:\"\";display:block;height:1px;background-color:silver;line-height:2px}::ng-deep .ProseMirror ul,::ng-deep .ProseMirror ol{padding-left:30px}::ng-deep .ProseMirror blockquote{padding-left:1em;border-left:3px solid #eee;margin-left:0;margin-right:0}::ng-deep .ProseMirror-example-setup-style img{cursor:default}::ng-deep .ProseMirror p:first-child,::ng-deep .ProseMirror h1:first-child,::ng-deep .ProseMirror h2:first-child,::ng-deep .ProseMirror h3:first-child,::ng-deep .ProseMirror h4:first-child,::ng-deep .ProseMirror h5:first-child,::ng-deep .ProseMirror h6:first-child{margin-top:10px}::ng-deep .ProseMirror{padding:4px 8px 4px 14px;line-height:1.2;outline:none}::ng-deep .ProseMirror p{margin-bottom:1em}::ng-deep .ProseMirror .tableWrapper{overflow-x:auto}::ng-deep .ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}::ng-deep .ProseMirror td,::ng-deep .ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}::ng-deep .ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}::ng-deep .ProseMirror.resize-cursor{cursor:col-resize}::ng-deep .ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,.4);pointer-events:none}::ng-deep .ProseMirror table{margin:0}::ng-deep .ProseMirror th,::ng-deep .ProseMirror td{min-width:1em;border:1px solid #ddd;padding:3px 5px}::ng-deep .ProseMirror .tableWrapper{margin:1em 0}::ng-deep .ProseMirror th{font-weight:bold;text-align:left}::ng-deep placeholder{display:block;width:50px;height:50px;background-size:500% 100%!important;animation:gradient 3s none infinite}@keyframes gradient{0%{background-position:100% 100%}to{background-position:0 0}}\n"], components: [{ type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i11.NaturalFileDropDirective, selector: ":not([naturalFileSelect])[naturalFileDrop]", outputs: ["fileOver"] }] });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NaturalEditorComponent, decorators: [{
195
- type: Component,
196
- args: [{
197
- selector: 'natural-editor',
198
- templateUrl: './editor.component.html',
199
- styleUrls: ['./editor.component.scss'],
200
- providers: [ImagePlugin],
201
- }]
202
- }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
203
- type: Optional
204
- }, {
205
- type: Self
206
- }] }, { type: Document, decorators: [{
207
- type: Inject,
208
- args: [DOCUMENT]
209
- }] }, { type: i2.MatDialog }, { type: i3.ImagePlugin }]; }, propDecorators: { editor: [{
210
- type: ViewChild,
211
- args: ['editor', { read: ElementRef, static: true }]
212
- }], contentChange: [{
213
- type: Output
214
- }], imageUploader: [{
215
- type: Input
216
- }], save: [{
217
- type: Output
218
- }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzlFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsV0FBVyxFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBQyxjQUFjLEVBQUUsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFP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LE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkY7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7O21IQXZNUSxzQkFBc0IsdUVBcUNuQixRQUFRO3VHQXJDWCxzQkFBc0IsZ0pBRnBCLENBQUMsV0FBVyxDQUFDLHVHQUtJLFVBQVUsMkNDbEQxQyx1bGJBMFlBOzJGRDNWYSxzQkFBc0I7a0JBTmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLHlCQUF5QjtvQkFDdEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDM0I7OzBCQXFDUSxRQUFROzswQkFBSSxJQUFJOzhCQUM0QixRQUFROzBCQUFwRCxNQUFNOzJCQUFDLFFBQVE7OEZBbEMyQyxNQUFNO3NCQUFwRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFM0IsYUFBYTtzQkFBdEMsTUFBTTtnQkFRUyxhQUFhO3NCQUE1QixLQUFLO2dCQW9Cb0IsSUFBSTtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5pbXBvcnQge0VkaXRvclN0YXRlLCBQbHVnaW4sIFRyYW5zYWN0aW9ufSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQge0RPTVBhcnNlciwgRE9NU2VyaWFsaXplciwgU2NoZW1hfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge2NvbHVtblJlc2l6aW5nLCBnb1RvTmV4dENlbGwsIHRhYmxlRWRpdGluZ30gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcbmltcG9ydCB7a2V5bWFwfSBmcm9tICdwcm9zZW1pcnJvci1rZXltYXAnO1xuaW1wb3J0IHtJbWFnZVBsdWdpbiwgSW1hZ2VVcGxvYWRlcn0gZnJvbSAnLi4vdXRpbHMvaW1hZ2UnO1xuaW1wb3J0IHthZHZhbmNlZFNjaGVtYSwgYmFzaWNTY2hlbWF9IGZyb20gJy4uL3V0aWxzL3NjaGVtYSc7XG5pbXBvcnQge2J1aWxkTWVudUl0ZW1zLCBLZXksIE1lbnVJdGVtc30gZnJvbSAnLi4vdXRpbHMvbWVudSc7XG5pbXBvcnQge2hpc3Rvcnl9IGZyb20gJ3Byb3NlbWlycm9yLWhpc3RvcnknO1xuaW1wb3J0IHtiYXNlS2V5bWFwfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XG5pbXBvcnQge2Ryb3BDdXJzb3J9IGZyb20gJ3Byb3NlbWlycm9yLWRyb3BjdXJzb3InO1xuaW1wb3J0IHtnYXBDdXJzb3J9IGZyb20gJ3Byb3NlbWlycm9yLWdhcGN1cnNvcic7XG5pbXBvcnQge2J1aWxkSW5wdXRSdWxlc30gZnJvbSAnLi4vdXRpbHMvaW5wdXRydWxlcyc7XG5pbXBvcnQge2J1aWxkS2V5bWFwfSBmcm9tICcuLi91dGlscy9rZXltYXAnO1xuXG4vKipcbiAqIFByb3NlbWlycm9yIGNvbXBvbmVudFxuICpcbiAqIFVzYWdlIDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1lZGl0b3IgWyhuZ01vZGVsKV09XCJodG1sU3RyaW5nXCI+PC9uYXR1cmFsLWVkaXRvcj5cbiAqIGBgYFxuICovXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbSW1hZ2VQbHVnaW5dLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHZpZXc6IEVkaXRvclZpZXcgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRvcicsIHtyZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWV9KSBwcml2YXRlIGVkaXRvciE6IEVsZW1lbnRSZWY7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNvbnRlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIHVwbG9hZCBhbiBpbWFnZS5cbiAgICAgKlxuICAgICAqIElmIGdpdmVuIGl0IHdpbGwgZW5hYmxlIGFkdmFuY2VkIHNjaGVtYSwgaW5jbHVkaW5nIGltYWdlIGFuZCB0YWJsZXMuXG4gICAgICogSXQgbXVzdCBiZSBnaXZlbiBvbiBpbml0aWFsaXphdGlvbiBhbmQgY2Fubm90IGJlIGNoYW5nZWQgbGF0ZXIgb24uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGltYWdlVXBsb2FkZXI6IEltYWdlVXBsb2FkZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgc2NoZW1hOiBTY2hlbWEgPSBiYXNpY1NjaGVtYTtcblxuICAgIC8qKlxuICAgICAqIEludGVyZmFjZSB3aXRoIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgICogTm90aWZpZXMgcGFyZW50IG1vZGVsIC8gZm9ybSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEhUTUwgc3RyaW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb250ZW50ID0gJyc7XG5cbiAgICBwdWJsaWMgbWVudTogTWVudUl0ZW1zIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBJZiBzdWJzY3JpYmVkIHRvLCB0aGVuIHRoZSBzYXZlIGJ1dHRvbiB3aWxsIGJlIHNob3duIGFuZCBjbGljayBldmVudHMgZm9yd2FyZGVkXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZVBsdWdpbjogSW1hZ2VQbHVnaW4sXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2NoZW1hID0gdGhpcy5pbWFnZVVwbG9hZGVyID8gYWR2YW5jZWRTY2hlbWEgOiBiYXNpY1NjaGVtYTtcbiAgICAgICAgdGhpcy5tZW51ID0gYnVpbGRNZW51SXRlbXModGhpcy5zY2hlbWEsIHRoaXMuZGlhbG9nKTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IERPTVNlcmlhbGl6ZXIuZnJvbVNjaGVtYSh0aGlzLnNjaGVtYSk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5jcmVhdGVTdGF0ZSgpO1xuXG4gICAgICAgIHRoaXMudmlldyA9IG5ldyBFZGl0b3JWaWV3KHRoaXMuZWRpdG9yLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIGRpc3BhdGNoVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmlldykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLnZpZXcuc3RhdGUuYXBwbHkodHJhbnNhY3Rpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMudmlldy51cGRhdGVTdGF0ZShuZXdTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm0gZG9jIGludG8gSFRNTCBzdHJpbmdcbiAgICAgICAgICAgICAgICBjb25zdCBkb20gPSBzZXJpYWxpemVyLnNlcmlhbGl6ZUZyYWdtZW50KHRoaXMudmlldy5zdGF0ZS5kb2MgYXMgYW55KTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpO1xuICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGRvbSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDb250ZW50ID0gZWwuaW5uZXJIVE1MO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQgPT09IG5ld0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudCA9IGVsLmlubmVySFRNTDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5jb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50Q2hhbmdlLmVtaXQodGhpcy5jb250ZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiB2YWwgIT09IHRoaXMuY29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlldyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZVN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnZpZXcudXBkYXRlU3RhdGUoc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVTdGF0ZSgpOiBFZGl0b3JTdGF0ZSB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgICAgIHRlbXBsYXRlLmlubmVySFRNTCA9ICc8ZGl2PicgKyB0aGlzLmNvbnRlbnQgKyAnPC9kaXY+JztcbiAgICAgICAgaWYgKCF0ZW1wbGF0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoaWxkIG9mIHRlbXBsYXRlIGVsZW1lbnQgY291bGQgbm90IGJlIGNyZWF0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlciA9IERPTVBhcnNlci5mcm9tU2NoZW1hKHRoaXMuc2NoZW1hKTtcbiAgICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlKHRlbXBsYXRlLmZpcnN0Q2hpbGQpO1xuXG4gICAgICAgIHJldHVybiBFZGl0b3JTdGF0ZS5jcmVhdGUoe1xuICAgICAgICAgICAgZG9jOiBkb2MsXG4gICAgICAgICAgICBwbHVnaW5zOiB0aGlzLmNyZWF0ZVBsdWdpbnMoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQbHVnaW5zKCk6IFBsdWdpbltdIHtcbiAgICAgICAgY29uc3QgaXNNYWMgPSAhIXRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaCgvTWFjLyk7XG5cbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFtcbiAgICAgICAgICAgIGJ1aWxkSW5wdXRSdWxlcyh0aGlzLnNjaGVtYSksXG4gICAgICAgICAgICBrZXltYXAoYnVpbGRLZXltYXAodGhpcy5zY2hlbWEsIGlzTWFjKSksXG4gICAgICAgICAgICBrZXltYXAoYmFzZUtleW1hcCksXG4gICAgICAgICAgICBkcm9wQ3Vyc29yKCksXG4gICAgICAgICAgICBnYXBDdXJzb3IoKSxcbiAgICAgICAgICAgIGhpc3RvcnkoKSxcbiAgICAgICAgICAgIG5ldyBQbHVnaW4oe1xuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtjbGFzczogJ1Byb3NlTWlycm9yLWV4YW1wbGUtc2V0dXAtc3R5bGUnfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgUGx1Z2luKHtcbiAgICAgICAgICAgICAgICB2aWV3OiAoKSA9PiB0aGlzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuc2NoZW1hID09PSBhZHZhbmNlZFNjaGVtYSkge1xuICAgICAgICAgICAgcGx1Z2lucy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VQbHVnaW4ucGx1Z2luLFxuICAgICAgICAgICAgICAgIGNvbHVtblJlc2l6aW5nKHVuZGVmaW5lZCBhcyBhbnkpLFxuICAgICAgICAgICAgICAgIHRhYmxlRWRpdGluZygpLFxuICAgICAgICAgICAgICAgIGtleW1hcCh7XG4gICAgICAgICAgICAgICAgICAgIFRhYjogZ29Ub05leHRDZWxsKDEpLFxuICAgICAgICAgICAgICAgICAgICAnU2hpZnQtVGFiJzogZ29Ub05leHRDZWxsKC0xKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGx1Z2lucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgYnkgUHJvc2VtaXJyb3Igd2hlbmV2ZXIgdGhlIGVkaXRvciBzdGF0ZSBjaGFuZ2VzLiBTbyB3ZSB1cGRhdGUgb3VyIG1lbnUgc3RhdGVzLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3IHx8ICF0aGlzLm1lbnUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBPYmplY3QudmFsdWVzKHRoaXMubWVudSkpIHtcbiAgICAgICAgICAgIGl0ZW0udXBkYXRlKHRoaXMudmlldywgdGhpcy52aWV3LnN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAvLyBUT0RPIGRpc2FibGUgZWRpdG9yID9cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMudmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnZpZXcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bihldmVudDogRXZlbnQsIGtleTogS2V5KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3IHx8ICF0aGlzLm1lbnUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1lbnVba2V5XTtcbiAgICAgICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQgfHwgIWl0ZW0uc2hvdykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5zcGVjLnJ1bih0aGlzLnZpZXcuc3RhdGUsIHRoaXMudmlldy5kaXNwYXRjaCwgdGhpcy52aWV3LCBldmVudCk7XG4gICAgICAgIHRoaXMudmlldy5mb2N1cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGxvYWQoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlldyB8fCAhdGhpcy5pbWFnZVVwbG9hZGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aWV3LnN0YXRlLnNlbGVjdGlvbi4kZnJvbS5wYXJlbnQuaW5saW5lQ29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZVBsdWdpbi5zdGFydEltYWdlVXBsb2FkKHRoaXMudmlldywgZmlsZSwgdGhpcy5pbWFnZVVwbG9hZGVyLCB0aGlzLnNjaGVtYSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZpZXcuZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXJcIiAqbmdJZj1cIm1lbnVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKm5nSWY9XCJzYXZlLm9ic2VydmVkXCIgKGNsaWNrKT1cInNhdmUuZW1pdCgpXCIgaTE4bi1tYXRUb29sdGlwIG1hdFRvb2x0aXA9XCJFbnJlZ2lzdHJlclwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgbXVsdGlwbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlU3Ryb25nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVTdHJvbmcuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUudG9nZ2xlU3Ryb25nLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVTdHJvbmcnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkdyYXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYm9sZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlRW1cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LnRvZ2dsZUVtLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVFbScpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiSXRhbGlxdWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfaXRhbGljPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVDb2RlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVDb2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LnRvZ2dsZUNvZGUuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUNvZGUnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNvZGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb2RlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVMaW5rXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVMaW5rLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LnRvZ2dsZUxpbmsuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUxpbmsnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkluc8OpcmVyIHVuIGxpZW4uLi5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbnNlcnRfbGluazwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYmxvY2tNZW51XCI+XG4gICAgICAgICAgICA8c3BhbiBpMThuPlR5cGU8L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1tZW51ICNibG9ja01lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlUGFyYWdyYXBoXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlUGFyYWdyYXBoLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VQYXJhZ3JhcGgnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5QYXJhZ3JhcGhlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VDb2RlQmxvY2tcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VDb2RlQmxvY2suZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUNvZGVCbG9jaycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkNvZGVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQxXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDEuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQxJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgMVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkMi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDInKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSAyXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQzLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkMycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQ0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQ0JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgNFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkNS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDUnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSA1XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkNlwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQ2LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkNicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDZcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGFibGVNZW51XCIgKm5nSWY9XCJtZW51LmFkZENvbHVtbkJlZm9yZVwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5UYWJsZWF1PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtbWVudSAjdGFibGVNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuaW5zZXJ0VGFibGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lmluc2VydFRhYmxlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2luc2VydFRhYmxlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW4gdGFibGVhdVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5kZWxldGVUYWJsZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlVGFibGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnZGVsZXRlVGFibGUnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5TdXBwcmltZXIgbGUgdGFibGVhdVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tZXJnZUNlbGxzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tZXJnZUNlbGxzLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21lcmdlQ2VsbHMnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5GdXNpb25uZXIgbGVzIGNlbGx1bGVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnNwbGl0Q2VsbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuc3BsaXRDZWxsLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3NwbGl0Q2VsbCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlNjaW5kZXIgbGVzIGNlbGx1bGVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFkZENvbHVtbkJlZm9yZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWRkQ29sdW1uQmVmb3JlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FkZENvbHVtbkJlZm9yZScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkluc8OpcmVyIHVuZSBjb2xvbm5lIGF2YW50XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFkZENvbHVtbkFmdGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hZGRDb2x1bW5BZnRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhZGRDb2x1bW5BZnRlcicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkluc8OpcmVyIHVuZSBjb2xvbm5lIGFwcsOoc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5kZWxldGVDb2x1bW5cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmRlbGV0ZUNvbHVtbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdkZWxldGVDb2x1bW4nKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5TdXBwcmltZXIgbGEgY29sb25uZVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hZGRSb3dCZWZvcmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFkZFJvd0JlZm9yZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhZGRSb3dCZWZvcmUnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5JbnPDqXJlciB1bmUgbGlnbmUgYXZhbnRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWRkUm93QWZ0ZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFkZFJvd0FmdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FkZFJvd0FmdGVyJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW5lIGxpZ25lIGFwcsOoc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5kZWxldGVSb3dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmRlbGV0ZVJvdy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdkZWxldGVSb3cnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5TdXBwcmltZXIgbGEgbGlnbmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlSGVhZGVyQ29sdW1uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVIZWFkZXJDb2x1bW4uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlSGVhZGVyQ29sdW1uJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+RW50w6p0ZSBkZSBjb2xvbm5lXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZUhlYWRlclJvd1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlSGVhZGVyUm93LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUhlYWRlclJvdycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkVudMOqdGUgZGUgbGlnbmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlSGVhZGVyQ2VsbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlSGVhZGVyQ2VsbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVIZWFkZXJDZWxsJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+RW50w6p0ZSBkZSBjZWxsdWxlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImltYWdlVXBsb2FkZXJcIlxuICAgICAgICAgICAgbmF0dXJhbEZpbGVEcm9wXG4gICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFticm9hZGNhc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiSW5zw6lyZXIgdW5lIGltYWdlXCJcbiAgICAgICAgICAgIChmaWxlQ2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmluc2VydF9waG90bzwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCAqbmdJZj1cIm1lbnUuYWxpZ25MZWZ0XCI+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWxpZ25MZWZ0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hbGlnbkxlZnQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUuYWxpZ25MZWZ0LmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhbGlnbkxlZnQnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFsaWduZXIgZ2F1Y2hlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2FsaWduX2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFsaWduQ2VudGVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hbGlnbkNlbnRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS5hbGlnbkNlbnRlci5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWxpZ25DZW50ZXInKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNlbnRyZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fY2VudGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnblJpZ2h0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hbGlnblJpZ2h0LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduUmlnaHQuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduUmlnaHQnKVwiXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFsaWduZXIgZHJvaXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2FsaWduX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnbkp1c3RpZnlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduSnVzdGlmeS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS5hbGlnbkp1c3RpZnkuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduSnVzdGlmeScpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiSnVzdGlmaWVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2FsaWduX2p1c3RpZnk8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUudW5kb1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS51bmRvLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndW5kbycpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFubnVsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+dW5kbzwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS5yZWRvXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnJlZG8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdyZWRvJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiUmVmYWlyZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5yZWRvPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LndyYXBCdWxsZXRMaXN0ICYmIG1lbnUud3JhcEJ1bGxldExpc3Quc2hvd1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS53cmFwQnVsbGV0TGlzdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3dyYXBCdWxsZXRMaXN0JylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTGlzdGUgw6AgcHVjZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfbGlzdF9idWxsZXRlZDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS53cmFwT3JkZXJlZExpc3QgJiYgbWVudS53cmFwT3JkZXJlZExpc3Quc2hvd1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS53cmFwT3JkZXJlZExpc3QuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd3cmFwT3JkZXJlZExpc3QnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMaXN0ZSDDoCBudW3DqXJvXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9saXN0X251bWJlcmVkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LndyYXBCbG9ja1F1b3RlICYmIG1lbnUud3JhcEJsb2NrUXVvdGUuc2hvd1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS53cmFwQmxvY2tRdW90ZS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3dyYXBCbG9ja1F1b3RlJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiQ2l0YXRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X3F1b3RlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LmpvaW5VcCAmJiBtZW51LmpvaW5VcC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmpvaW5VcC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2pvaW5VcCcpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkZ1c2lvbm5lciBhdmVjIGwnw6lsw6ltZW50IGR1IGhhdXRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+bW92ZV91cDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS5saWZ0ICYmIG1lbnUubGlmdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmxpZnQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdsaWZ0JylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRMOpc2luZGVudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9pbmRlbnRfZGVjcmVhc2U8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUuc2VsZWN0UGFyZW50Tm9kZSAmJiBtZW51LnNlbGVjdFBhcmVudE5vZGUuc2hvd1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5zZWxlY3RQYXJlbnROb2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnc2VsZWN0UGFyZW50Tm9kZScpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlPDqWxlY3Rpb25uZXIgbCfDqWzDqW1lbnQgcGFyZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPnNlbGVjdF9hbGw8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAjZWRpdG9yPjwvZGl2PlxuIl19
@@ -1,82 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { NaturalEditorComponent } from './editor/editor.component';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatButtonToggleModule } from '@angular/material/button-toggle';
6
- import { MatToolbarModule } from '@angular/material/toolbar';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { MatMenuModule } from '@angular/material/menu';
9
- import { LinkDialogComponent } from './link-dialog/link-dialog.component';
10
- import { ReactiveFormsModule } from '@angular/forms';
11
- import { MatDialogModule } from '@angular/material/dialog';
12
- import { MatFormFieldModule } from '@angular/material/form-field';
13
- import { MatInputModule } from '@angular/material/input';
14
- import { MatTooltipModule } from '@angular/material/tooltip';
15
- import { NaturalFileModule } from '@ecodev/natural';
16
- import { MatDividerModule } from '@angular/material/divider';
17
- import * as i0 from "@angular/core";
18
- const imports = [
19
- CommonModule,
20
- MatButtonModule,
21
- MatButtonToggleModule,
22
- MatDialogModule,
23
- MatFormFieldModule,
24
- MatIconModule,
25
- MatInputModule,
26
- MatMenuModule,
27
- MatToolbarModule,
28
- MatTooltipModule,
29
- ReactiveFormsModule,
30
- NaturalFileModule,
31
- MatDividerModule,
32
- ];
33
- export class NaturalEditorModule {
34
- }
35
- NaturalEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NaturalEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
- NaturalEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NaturalEditorModule, declarations: [NaturalEditorComponent, LinkDialogComponent], imports: [CommonModule,
37
- MatButtonModule,
38
- MatButtonToggleModule,
39
- MatDialogModule,
40
- MatFormFieldModule,
41
- MatIconModule,
42
- MatInputModule,
43
- MatMenuModule,
44
- MatToolbarModule,
45
- MatTooltipModule,
46
- ReactiveFormsModule,
47
- NaturalFileModule,
48
- MatDividerModule], exports: [CommonModule,
49
- MatButtonModule,
50
- MatButtonToggleModule,
51
- MatDialogModule,
52
- MatFormFieldModule,
53
- MatIconModule,
54
- MatInputModule,
55
- MatMenuModule,
56
- MatToolbarModule,
57
- MatTooltipModule,
58
- ReactiveFormsModule,
59
- NaturalFileModule,
60
- MatDividerModule, NaturalEditorComponent] });
61
- NaturalEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NaturalEditorModule, imports: [[...imports], CommonModule,
62
- MatButtonModule,
63
- MatButtonToggleModule,
64
- MatDialogModule,
65
- MatFormFieldModule,
66
- MatIconModule,
67
- MatInputModule,
68
- MatMenuModule,
69
- MatToolbarModule,
70
- MatTooltipModule,
71
- ReactiveFormsModule,
72
- NaturalFileModule,
73
- MatDividerModule] });
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NaturalEditorModule, decorators: [{
75
- type: NgModule,
76
- args: [{
77
- declarations: [NaturalEditorComponent, LinkDialogComponent],
78
- imports: [...imports],
79
- exports: [...imports, NaturalEditorComponent],
80
- }]
81
- }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQUUzRCxNQUFNLE9BQU8sR0FBRztJQUNaLFlBQVk7SUFDWixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtDQUNuQixDQUFDO0FBT0YsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQUpiLHNCQUFzQixFQUFFLG1CQUFtQixhQWhCMUQsWUFBWTtRQUNaLGVBQWU7UUFDZixxQkFBcUI7UUFDckIsZUFBZTtRQUNmLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsZ0JBQWdCLGFBWmhCLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGdCQUFnQixFQU1NLHNCQUFzQjtpSEFFbkMsbUJBQW1CLFlBSG5CLENBQUMsR0FBRyxPQUFPLENBQUMsRUFqQnJCLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGdCQUFnQjsyRkFRUCxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUM7b0JBQzNELE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO29CQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXR1cmFsRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuL2VkaXRvci9lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRCdXR0b25Ub2dnbGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHtNYXRUb29sYmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHtMaW5rRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0RGlhbG9nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TmF0dXJhbEZpbGVNb2R1bGV9IGZyb20gJ0BlY29kZXYvbmF0dXJhbCc7XG5pbXBvcnQge01hdERpdmlkZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuXG5jb25zdCBpbXBvcnRzID0gW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5hdHVyYWxGaWxlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05hdHVyYWxFZGl0b3JDb21wb25lbnQsIExpbmtEaWFsb2dDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBleHBvcnRzOiBbLi4uaW1wb3J0cywgTmF0dXJhbEVkaXRvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxFZGl0b3JNb2R1bGUge31cbiJdfQ==
@@ -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,39 +0,0 @@
1
- /**
2
- * One item of the menu.
3
- *
4
- * This is the equivalent of `MenuItem` but without all the rendering logic since we use Angular
5
- * templates for rendering. Also it caches the state of the item everytime the editor state changes,
6
- * so Angular can query the state as often as needed without performance hit.
7
- */
8
- export class Item {
9
- constructor(spec) {
10
- this.spec = spec;
11
- /**
12
- * Whether the item is 'active' (for example, the item for toggling the strong mark might be active when the cursor is in strong text).
13
- */
14
- this.active = false;
15
- /**
16
- * Button is shown but disabled, because the item cannot be (un-)applied
17
- */
18
- this.disabled = false;
19
- /**
20
- * Whether the item is shown at the moment
21
- */
22
- this.show = true;
23
- }
24
- /**
25
- * Update the item state according to the editor state
26
- */
27
- update(view, state) {
28
- if (this.spec.active) {
29
- this.active = this.spec.active(state);
30
- }
31
- if (this.spec.enable) {
32
- this.disabled = !this.spec.enable(state);
33
- }
34
- if (this.spec.select) {
35
- this.show = this.spec.select(state);
36
- }
37
- }
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sSUFBSTtJQWdCYixZQUE0QixJQUFrQjtRQUFsQixTQUFJLEdBQUosSUFBSSxDQUFjO1FBZjlDOztXQUVHO1FBQ0ksV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUNJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFeEI7O1dBRUc7UUFDSSxTQUFJLEdBQUcsSUFBSSxDQUFDO0lBRThCLENBQUM7SUFFbEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsSUFBZ0IsRUFBRSxLQUFrQjtRQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVudUl0ZW1TcGVjfSBmcm9tICdwcm9zZW1pcnJvci1tZW51JztcbmltcG9ydCB7RWRpdG9yU3RhdGV9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7RWRpdG9yVmlld30gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XG5cbi8qKlxuICogT25lIGl0ZW0gb2YgdGhlIG1lbnUuXG4gKlxuICogVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBgTWVudUl0ZW1gIGJ1dCB3aXRob3V0IGFsbCB0aGUgcmVuZGVyaW5nIGxvZ2ljIHNpbmNlIHdlIHVzZSBBbmd1bGFyXG4gKiB0ZW1wbGF0ZXMgZm9yIHJlbmRlcmluZy4gQWxzbyBpdCBjYWNoZXMgdGhlIHN0YXRlIG9mIHRoZSBpdGVtIGV2ZXJ5dGltZSB0aGUgZWRpdG9yIHN0YXRlIGNoYW5nZXMsXG4gKiBzbyBBbmd1bGFyIGNhbiBxdWVyeSB0aGUgc3RhdGUgYXMgb2Z0ZW4gYXMgbmVlZGVkIHdpdGhvdXQgcGVyZm9ybWFuY2UgaGl0LlxuICovXG5leHBvcnQgY2xhc3MgSXRlbSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgaXRlbSBpcyAnYWN0aXZlJyAoZm9yIGV4YW1wbGUsIHRoZSBpdGVtIGZvciB0b2dnbGluZyB0aGUgc3Ryb25nIG1hcmsgbWlnaHQgYmUgYWN0aXZlIHdoZW4gdGhlIGN1cnNvciBpcyBpbiBzdHJvbmcgdGV4dCkuXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQnV0dG9uIGlzIHNob3duIGJ1dCBkaXNhYmxlZCwgYmVjYXVzZSB0aGUgaXRlbSBjYW5ub3QgYmUgKHVuLSlhcHBsaWVkXG4gICAgICovXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBpdGVtIGlzIHNob3duIGF0IHRoZSBtb21lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvdyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgc3BlYzogTWVudUl0ZW1TcGVjKSB7fVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBpdGVtIHN0YXRlIGFjY29yZGluZyB0byB0aGUgZWRpdG9yIHN0YXRlXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZSh2aWV3OiBFZGl0b3JWaWV3LCBzdGF0ZTogRWRpdG9yU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3BlYy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zcGVjLmFjdGl2ZShzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zcGVjLmVuYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICF0aGlzLnNwZWMuZW5hYmxlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNwZWMuc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNob3cgPSB0aGlzLnNwZWMuc2VsZWN0KHN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==