@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
@@ -0,0 +1,213 @@
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 { goToNextCell, tableEditing } from 'prosemirror-tables';
7
+ import { keymap } from 'prosemirror-keymap';
8
+ import { ImagePlugin } from '../utils/image';
9
+ import { advancedSchema, basicSchema } from '../utils/schema/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
+ const isMac = !!this.document.defaultView?.navigator.platform.match(/Mac/);
122
+ const plugins = [
123
+ buildInputRules(this.schema),
124
+ keymap(buildKeymap(this.schema, isMac)),
125
+ keymap(baseKeymap),
126
+ dropCursor(),
127
+ gapCursor(),
128
+ history(),
129
+ new Plugin({
130
+ props: {
131
+ attributes: { class: 'ProseMirror-example-setup-style' },
132
+ },
133
+ }),
134
+ new Plugin({
135
+ view: () => this,
136
+ }),
137
+ ];
138
+ if (this.schema === advancedSchema) {
139
+ plugins.push(this.imagePlugin.plugin, tableEditing(), keymap({
140
+ Tab: goToNextCell(1),
141
+ 'Shift-Tab': goToNextCell(-1),
142
+ }));
143
+ }
144
+ return plugins;
145
+ }
146
+ /**
147
+ * Called by Prosemirror whenever the editor state changes. So we update our menu states.
148
+ */
149
+ update() {
150
+ if (!this.view || !this.menu) {
151
+ return;
152
+ }
153
+ for (const item of Object.values(this.menu)) {
154
+ item.update(this.view, this.view.state);
155
+ }
156
+ }
157
+ registerOnChange(fn) {
158
+ this.onChange = fn;
159
+ }
160
+ registerOnTouched(fn) { }
161
+ setDisabledState(isDisabled) {
162
+ // TODO disable editor ?
163
+ }
164
+ ngOnDestroy() {
165
+ if (this.view) {
166
+ this.view.destroy();
167
+ this.view = null;
168
+ }
169
+ }
170
+ run(event, key) {
171
+ if (!this.view || !this.menu) {
172
+ return;
173
+ }
174
+ const item = this.menu[key];
175
+ if (!item || item.disabled || !item.show) {
176
+ return;
177
+ }
178
+ item.spec.run(this.view.state, this.view.dispatch, this.view, event);
179
+ this.view.focus();
180
+ }
181
+ upload(file) {
182
+ if (!this.view || !this.imageUploader) {
183
+ return;
184
+ }
185
+ if (this.view.state.selection.$from.parent.inlineContent) {
186
+ this.imagePlugin.startImageUpload(this.view, file, this.imageUploader, this.schema);
187
+ }
188
+ this.view.focus();
189
+ }
190
+ }
191
+ NaturalEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEditorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: DOCUMENT }, { token: i2.MatDialog }, { token: i3.ImagePlugin }], target: i0.ɵɵFactoryTarget.Component });
192
+ NaturalEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", 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\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.paragraphClass\"\n [disabled]=\"menu.paragraphClass.disabled\"\n (click)=\"run($event, 'paragraphClass')\"\n i18n\n >Classe...\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 <button\n mat-menu-item\n *ngIf=\"menu.cellBackgroundColor\"\n [disabled]=\"menu.cellBackgroundColor.disabled\"\n (click)=\"run($event, 'cellBackgroundColor')\"\n i18n\n >Couleur de fond...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableClass\"\n [disabled]=\"menu.tableClass.disabled\"\n (click)=\"run($event, 'tableClass')\"\n i18n\n >Classe...\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:700;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-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], 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"] }] });
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEditorComponent, decorators: [{
194
+ type: Component,
195
+ args: [{ selector: 'natural-editor', providers: [ImagePlugin], 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\n <mat-divider></mat-divider>\n\n <button\n mat-menu-item\n *ngIf=\"menu.paragraphClass\"\n [disabled]=\"menu.paragraphClass.disabled\"\n (click)=\"run($event, 'paragraphClass')\"\n i18n\n >Classe...\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 <button\n mat-menu-item\n *ngIf=\"menu.cellBackgroundColor\"\n [disabled]=\"menu.cellBackgroundColor.disabled\"\n (click)=\"run($event, 'cellBackgroundColor')\"\n i18n\n >Couleur de fond...\n </button>\n <button\n mat-menu-item\n *ngIf=\"menu.tableClass\"\n [disabled]=\"menu.tableClass.disabled\"\n (click)=\"run($event, 'tableClass')\"\n i18n\n >Classe...\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:700;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"] }]
196
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
197
+ type: Optional
198
+ }, {
199
+ type: Self
200
+ }] }, { type: Document, decorators: [{
201
+ type: Inject,
202
+ args: [DOCUMENT]
203
+ }] }, { type: i2.MatDialog }, { type: i3.ImagePlugin }]; }, propDecorators: { editor: [{
204
+ type: ViewChild,
205
+ args: ['editor', { read: ElementRef, static: true }]
206
+ }], contentChange: [{
207
+ type: Output
208
+ }], imageUploader: [{
209
+ type: Input
210
+ }], save: [{
211
+ type: Output
212
+ }] } });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxXQUFXLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsY0FBYyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFV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UyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkY7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7O21IQXRNUSxzQkFBc0IsdUVBcUNuQixRQUFRO3VHQXJDWCxzQkFBc0IsZ0pBRnBCLENBQUMsV0FBVyxDQUFDLHVHQUtJLFVBQVUsMkNDbEQxQyw0L2NBcWFBOzJGRHRYYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0ksZ0JBQWdCLGFBR2YsQ0FBQyxXQUFXLENBQUM7OzBCQXNDbkIsUUFBUTs7MEJBQUksSUFBSTs4QkFDNEIsUUFBUTswQkFBcEQsTUFBTTsyQkFBQyxRQUFROzhGQWxDMkMsTUFBTTtzQkFBcEUsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRTNCLGFBQWE7c0JBQXRDLE1BQU07Z0JBUVMsYUFBYTtzQkFBNUIsS0FBSztnQkFvQm9CLElBQUk7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0VkaXRvclZpZXd9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xuaW1wb3J0IHtFZGl0b3JTdGF0ZSwgUGx1Z2luLCBUcmFuc2FjdGlvbn0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHtET01QYXJzZXIsIERPTVNlcmlhbGl6ZXIsIFNjaGVtYX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtnb1RvTmV4dENlbGwsIHRhYmxlRWRpdGluZ30gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcbmltcG9ydCB7a2V5bWFwfSBmcm9tICdwcm9zZW1pcnJvci1rZXltYXAnO1xuaW1wb3J0IHtJbWFnZVBsdWdpbiwgSW1hZ2VVcGxvYWRlcn0gZnJvbSAnLi4vdXRpbHMvaW1hZ2UnO1xuaW1wb3J0IHthZHZhbmNlZFNjaGVtYSwgYmFzaWNTY2hlbWF9IGZyb20gJy4uL3V0aWxzL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHtidWlsZE1lbnVJdGVtcywgS2V5LCBNZW51SXRlbXN9IGZyb20gJy4uL3V0aWxzL21lbnUnO1xuaW1wb3J0IHtoaXN0b3J5fSBmcm9tICdwcm9zZW1pcnJvci1oaXN0b3J5JztcbmltcG9ydCB7YmFzZUtleW1hcH0gZnJvbSAncHJvc2VtaXJyb3ItY29tbWFuZHMnO1xuaW1wb3J0IHtkcm9wQ3Vyc29yfSBmcm9tICdwcm9zZW1pcnJvci1kcm9wY3Vyc29yJztcbmltcG9ydCB7Z2FwQ3Vyc29yfSBmcm9tICdwcm9zZW1pcnJvci1nYXBjdXJzb3InO1xuaW1wb3J0IHtidWlsZElucHV0UnVsZXN9IGZyb20gJy4uL3V0aWxzL2lucHV0cnVsZXMnO1xuaW1wb3J0IHtidWlsZEtleW1hcH0gZnJvbSAnLi4vdXRpbHMva2V5bWFwJztcblxuLyoqXG4gKiBQcm9zZW1pcnJvciBjb21wb25lbnRcbiAqXG4gKiBVc2FnZSA6XG4gKlxuICogYGBgaHRtbFxuICogPG5hdHVyYWwtZWRpdG9yIFsobmdNb2RlbCldPVwiaHRtbFN0cmluZ1wiPjwvbmF0dXJhbC1lZGl0b3I+XG4gKiBgYGBcbiAqL1xuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1lZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0ltYWdlUGx1Z2luXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSB2aWV3OiBFZGl0b3JWaWV3IHwgbnVsbCA9IG51bGw7XG5cbiAgICBAVmlld0NoaWxkKCdlZGl0b3InLCB7cmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlfSkgcHJpdmF0ZSBlZGl0b3IhOiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjb250ZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byB1cGxvYWQgYW4gaW1hZ2UuXG4gICAgICpcbiAgICAgKiBJZiBnaXZlbiBpdCB3aWxsIGVuYWJsZSBhZHZhbmNlZCBzY2hlbWEsIGluY2x1ZGluZyBpbWFnZSBhbmQgdGFibGVzLlxuICAgICAqIEl0IG11c3QgYmUgZ2l2ZW4gb24gaW5pdGlhbGl6YXRpb24gYW5kIGNhbm5vdCBiZSBjaGFuZ2VkIGxhdGVyIG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVVwbG9hZGVyOiBJbWFnZVVwbG9hZGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIHNjaGVtYTogU2NoZW1hID0gYmFzaWNTY2hlbWE7XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcmZhY2Ugd2l0aCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgICAqIE5vdGlmaWVzIHBhcmVudCBtb2RlbCAvIGZvcm0gY29udHJvbGxlclxuICAgICAqL1xuICAgIHByaXZhdGUgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBIVE1MIHN0cmluZ1xuICAgICAqL1xuICAgIHByaXZhdGUgY29udGVudCA9ICcnO1xuXG4gICAgcHVibGljIG1lbnU6IE1lbnVJdGVtcyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogSWYgc3Vic2NyaWJlZCB0bywgdGhlbiB0aGUgc2F2ZSBidXR0b24gd2lsbCBiZSBzaG93biBhbmQgY2xpY2sgZXZlbnRzIGZvcndhcmRlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGltYWdlUGx1Z2luOiBJbWFnZVBsdWdpbixcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY2hlbWEgPSB0aGlzLmltYWdlVXBsb2FkZXIgPyBhZHZhbmNlZFNjaGVtYSA6IGJhc2ljU2NoZW1hO1xuICAgICAgICB0aGlzLm1lbnUgPSBidWlsZE1lbnVJdGVtcyh0aGlzLnNjaGVtYSwgdGhpcy5kaWFsb2cpO1xuICAgICAgICBjb25zdCBzZXJpYWxpemVyID0gRE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKHRoaXMuc2NoZW1hKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZVN0YXRlKCk7XG5cbiAgICAgICAgdGhpcy52aWV3ID0gbmV3IEVkaXRvclZpZXcodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgZGlzcGF0Y2hUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHRoaXMudmlldy5zdGF0ZS5hcHBseSh0cmFuc2FjdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnVwZGF0ZVN0YXRlKG5ld1N0YXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybSBkb2MgaW50byBIVE1MIHN0cmluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvbSA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplRnJhZ21lbnQodGhpcy52aWV3LnN0YXRlLmRvYyBhcyBhbnkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoZG9tKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBlbC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudCA9PT0gbmV3Q29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gZWwuaW5uZXJIVE1MO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRDaGFuZ2UuZW1pdCh0aGlzLmNvbnRlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmIHZhbCAhPT0gdGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB2YWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aWV3ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY3JlYXRlU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMudmlldy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVN0YXRlKCk6IEVkaXRvclN0YXRlIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ18nKTtcbiAgICAgICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gJzxkaXY+JyArIHRoaXMuY29udGVudCArICc8L2Rpdj4nO1xuICAgICAgICBpZiAoIXRlbXBsYXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2hpbGQgb2YgdGVtcGxhdGUgZWxlbWVudCBjb3VsZCBub3QgYmUgY3JlYXRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VyID0gRE9NUGFyc2VyLmZyb21TY2hlbWEodGhpcy5zY2hlbWEpO1xuICAgICAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2UodGVtcGxhdGUuZmlyc3RDaGlsZCk7XG5cbiAgICAgICAgcmV0dXJuIEVkaXRvclN0YXRlLmNyZWF0ZSh7XG4gICAgICAgICAgICBkb2M6IGRvYyxcbiAgICAgICAgICAgIHBsdWdpbnM6IHRoaXMuY3JlYXRlUGx1Z2lucygpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVBsdWdpbnMoKTogUGx1Z2luW10ge1xuICAgICAgICBjb25zdCBpc01hYyA9ICEhdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ubmF2aWdhdG9yLnBsYXRmb3JtLm1hdGNoKC9NYWMvKTtcblxuICAgICAgICBjb25zdCBwbHVnaW5zID0gW1xuICAgICAgICAgICAgYnVpbGRJbnB1dFJ1bGVzKHRoaXMuc2NoZW1hKSxcbiAgICAgICAgICAgIGtleW1hcChidWlsZEtleW1hcCh0aGlzLnNjaGVtYSwgaXNNYWMpKSxcbiAgICAgICAgICAgIGtleW1hcChiYXNlS2V5bWFwKSxcbiAgICAgICAgICAgIGRyb3BDdXJzb3IoKSxcbiAgICAgICAgICAgIGdhcEN1cnNvcigpLFxuICAgICAgICAgICAgaGlzdG9yeSgpLFxuICAgICAgICAgICAgbmV3IFBsdWdpbih7XG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge2NsYXNzOiAnUHJvc2VNaXJyb3ItZXhhbXBsZS1zZXR1cC1zdHlsZSd9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBQbHVnaW4oe1xuICAgICAgICAgICAgICAgIHZpZXc6ICgpID0+IHRoaXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5zY2hlbWEgPT09IGFkdmFuY2VkU2NoZW1hKSB7XG4gICAgICAgICAgICBwbHVnaW5zLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZVBsdWdpbi5wbHVnaW4sXG4gICAgICAgICAgICAgICAgdGFibGVFZGl0aW5nKCksXG4gICAgICAgICAgICAgICAga2V5bWFwKHtcbiAgICAgICAgICAgICAgICAgICAgVGFiOiBnb1RvTmV4dENlbGwoMSksXG4gICAgICAgICAgICAgICAgICAgICdTaGlmdC1UYWInOiBnb1RvTmV4dENlbGwoLTEpLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwbHVnaW5zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBQcm9zZW1pcnJvciB3aGVuZXZlciB0aGUgZWRpdG9yIHN0YXRlIGNoYW5nZXMuIFNvIHdlIHVwZGF0ZSBvdXIgbWVudSBzdGF0ZXMuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXcgfHwgIXRoaXMubWVudSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIE9iamVjdC52YWx1ZXModGhpcy5tZW51KSkge1xuICAgICAgICAgICAgaXRlbS51cGRhdGUodGhpcy52aWV3LCB0aGlzLnZpZXcuc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE8gZGlzYWJsZSBlZGl0b3IgP1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMudmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuKGV2ZW50OiBFdmVudCwga2V5OiBLZXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXcgfHwgIXRoaXMubWVudSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMubWVudVtrZXldO1xuICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCB8fCAhaXRlbS5zaG93KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnNwZWMucnVuKHRoaXMudmlldy5zdGF0ZSwgdGhpcy52aWV3LmRpc3BhdGNoLCB0aGlzLnZpZXcsIGV2ZW50KTtcbiAgICAgICAgdGhpcy52aWV3LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwbG9hZChmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3IHx8ICF0aGlzLmltYWdlVXBsb2FkZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpZXcuc3RhdGUuc2VsZWN0aW9uLiRmcm9tLnBhcmVudC5pbmxpbmVDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luLnN0YXJ0SW1hZ2VVcGxvYWQodGhpcy52aWV3LCBmaWxlLCB0aGlzLmltYWdlVXBsb2FkZXIsIHRoaXMuc2NoZW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmlldy5mb2N1cygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiICpuZ0lmPVwibWVudVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAqbmdJZj1cInNhdmUub2JzZXJ2ZWRcIiAoY2xpY2spPVwic2F2ZS5lbWl0KClcIiBpMThuLW1hdFRvb2x0aXAgbWF0VG9vbHRpcD1cIkVucmVnaXN0cmVyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBtdWx0aXBsZT5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVTdHJvbmdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZVN0cm9uZy5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS50b2dnbGVTdHJvbmcuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZVN0cm9uZycpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiR3Jhc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9ib2xkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVFbVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUudG9nZ2xlRW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUudG9nZ2xlRW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUVtJylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJJdGFsaXF1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9pdGFsaWM8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZUNvZGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUNvZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUudG9nZ2xlQ29kZS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlQ29kZScpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQ29kZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNvZGU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnRvZ2dsZUxpbmtcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUxpbmsuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUudG9nZ2xlTGluay5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlTGluaycpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiSW5zw6lyZXIgdW4gbGllbi4uLlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmluc2VydF9saW5rPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJibG9ja01lbnVcIj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+VHlwZTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bWF0LW1lbnUgI2Jsb2NrTWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VQYXJhZ3JhcGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VQYXJhZ3JhcGguZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZVBhcmFncmFwaCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlBhcmFncmFwaGVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUNvZGVCbG9ja1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUNvZGVCbG9jay5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlQ29kZUJsb2NrJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+Q29kZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDFcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkMS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDEnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSAxXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkMlwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkMicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQzJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgM1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tYWtlSGVhZDRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lm1ha2VIZWFkNC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdtYWtlSGVhZDQnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5UaXRyZSA0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lm1ha2VIZWFkNVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubWFrZUhlYWQ1LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21ha2VIZWFkNScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlRpdHJlIDVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUubWFrZUhlYWQ2XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tYWtlSGVhZDYuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnbWFrZUhlYWQ2JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+VGl0cmUgNlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5wYXJhZ3JhcGhDbGFzc1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUucGFyYWdyYXBoQ2xhc3MuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAncGFyYWdyYXBoQ2xhc3MnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5DbGFzc2UuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwidGFibGVNZW51XCIgKm5nSWY9XCJtZW51LmFkZENvbHVtbkJlZm9yZVwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5UYWJsZWF1PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxtYXQtbWVudSAjdGFibGVNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuaW5zZXJ0VGFibGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Lmluc2VydFRhYmxlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2luc2VydFRhYmxlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW4gdGFibGVhdVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5kZWxldGVUYWJsZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlVGFibGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnZGVsZXRlVGFibGUnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5TdXBwcmltZXIgbGUgdGFibGVhdVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5tZXJnZUNlbGxzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5tZXJnZUNlbGxzLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ21lcmdlQ2VsbHMnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5GdXNpb25uZXIgbGVzIGNlbGx1bGVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LnNwbGl0Q2VsbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuc3BsaXRDZWxsLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3NwbGl0Q2VsbCcpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlNjaW5kZXIgbGVzIGNlbGx1bGVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmNlbGxCYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmNlbGxCYWNrZ3JvdW5kQ29sb3IuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnY2VsbEJhY2tncm91bmRDb2xvcicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkNvdWxldXIgZGUgZm9uZC4uLlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50YWJsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50YWJsZUNsYXNzLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RhYmxlQ2xhc3MnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5DbGFzc2UuLi5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWRkQ29sdW1uQmVmb3JlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS5hZGRDb2x1bW5CZWZvcmUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWRkQ29sdW1uQmVmb3JlJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW5lIGNvbG9ubmUgYXZhbnRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWRkQ29sdW1uQWZ0ZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFkZENvbHVtbkFmdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FkZENvbHVtbkFmdGVyJylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+SW5zw6lyZXIgdW5lIGNvbG9ubmUgYXByw6hzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmRlbGV0ZUNvbHVtblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlQ29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2RlbGV0ZUNvbHVtbicpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlN1cHByaW1lciBsYSBjb2xvbm5lXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFkZFJvd0JlZm9yZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWRkUm93QmVmb3JlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FkZFJvd0JlZm9yZScpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPkluc8OpcmVyIHVuZSBsaWduZSBhdmFudFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hZGRSb3dBZnRlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWRkUm93QWZ0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWRkUm93QWZ0ZXInKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5JbnPDqXJlciB1bmUgbGlnbmUgYXByw6hzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmRlbGV0ZVJvd1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuZGVsZXRlUm93LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2RlbGV0ZVJvdycpXCJcbiAgICAgICAgICAgICAgICBpMThuXG4gICAgICAgICAgICAgICAgPlN1cHByaW1lciBsYSBsaWduZVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVIZWFkZXJDb2x1bW5cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnRvZ2dsZUhlYWRlckNvbHVtbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd0b2dnbGVIZWFkZXJDb2x1bW4nKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5FbnTDqnRlIGRlIGNvbG9ubmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUudG9nZ2xlSGVhZGVyUm93XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVIZWFkZXJSb3cuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAndG9nZ2xlSGVhZGVyUm93JylcIlxuICAgICAgICAgICAgICAgIGkxOG5cbiAgICAgICAgICAgICAgICA+RW50w6p0ZSBkZSBsaWduZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS50b2dnbGVIZWFkZXJDZWxsXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudS50b2dnbGVIZWFkZXJDZWxsLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3RvZ2dsZUhlYWRlckNlbGwnKVwiXG4gICAgICAgICAgICAgICAgaTE4blxuICAgICAgICAgICAgICAgID5FbnTDqnRlIGRlIGNlbGx1bGVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW1hZ2VVcGxvYWRlclwiXG4gICAgICAgICAgICBuYXR1cmFsRmlsZURyb3BcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2Jyb2FkY2FzdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJJbnPDqXJlciB1bmUgaW1hZ2VcIlxuICAgICAgICAgICAgKGZpbGVDaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+aW5zZXJ0X3Bob3RvPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwICpuZ0lmPVwibWVudS5hbGlnbkxlZnRcIj5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5hbGlnbkxlZnRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduTGVmdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWVudS5hbGlnbkxlZnQuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2FsaWduTGVmdCcpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQWxpZ25lciBnYXVjaGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuYWxpZ25DZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduQ2VudGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduQ2VudGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdhbGlnbkNlbnRlcicpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQ2VudHJlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9hbGlnbl9jZW50ZXI8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFsaWduUmlnaHRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LmFsaWduUmlnaHQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm1lbnUuYWxpZ25SaWdodC5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWxpZ25SaWdodCcpXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQWxpZ25lciBkcm9pdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmFsaWduSnVzdGlmeVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuYWxpZ25KdXN0aWZ5LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJtZW51LmFsaWduSnVzdGlmeS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnYWxpZ25KdXN0aWZ5JylcIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJKdXN0aWZpZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fanVzdGlmeTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS51bmRvXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnVuZG8uZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICd1bmRvJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiQW5udWxlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj51bmRvPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LnJlZG9cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUucmVkby5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3JlZG8nKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJSZWZhaXJlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPnJlZG88L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUud3JhcEJ1bGxldExpc3QgJiYgbWVudS53cmFwQnVsbGV0TGlzdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBCdWxsZXRMaXN0LmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnd3JhcEJ1bGxldExpc3QnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMaXN0ZSDDoCBwdWNlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9saXN0X2J1bGxldGVkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LndyYXBPcmRlcmVkTGlzdCAmJiBtZW51LndyYXBPcmRlcmVkTGlzdC5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBPcmRlcmVkTGlzdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ3dyYXBPcmRlcmVkTGlzdCcpXCJcbiAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkxpc3RlIMOgIG51bcOpcm9cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2xpc3RfbnVtYmVyZWQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUud3JhcEJsb2NrUXVvdGUgJiYgbWVudS53cmFwQmxvY2tRdW90ZS5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LndyYXBCbG9ja1F1b3RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnd3JhcEJsb2NrUXVvdGUnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDaXRhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5mb3JtYXRfcXVvdGU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1lbnUuam9pblVwICYmIG1lbnUuam9pblVwLnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUuam9pblVwLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW4oJGV2ZW50LCAnam9pblVwJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRnVzaW9ubmVyIGF2ZWMgbCfDqWzDqW1lbnQgZHUgaGF1dFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3ZlX3VwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZW51LmxpZnQgJiYgbWVudS5saWZ0LnNob3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1lbnUubGlmdC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicnVuKCRldmVudCwgJ2xpZnQnKVwiXG4gICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEw6lzaW5kZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2luZGVudF9kZWNyZWFzZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWVudS5zZWxlY3RQYXJlbnROb2RlICYmIG1lbnUuc2VsZWN0UGFyZW50Tm9kZS5zaG93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51LnNlbGVjdFBhcmVudE5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bigkZXZlbnQsICdzZWxlY3RQYXJlbnROb2RlJylcIlxuICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiU8OpbGVjdGlvbm5lciBsJ8OpbMOpbWVudCBwYXJlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+c2VsZWN0X2FsbDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICNlZGl0b3I+PC9kaXY+XG4iXX0=
@@ -0,0 +1,90 @@
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, NaturalIconModule } from '@ecodev/natural';
16
+ import { MatDividerModule } from '@angular/material/divider';
17
+ import { ColorDialogComponent } from './color-dialog/color-dialog.component';
18
+ import { ClassDialogComponent } from './class-dialog/class-dialog.component';
19
+ import { NaturalCustomCssDirective } from './custom-css/custom-css.directive';
20
+ import * as i0 from "@angular/core";
21
+ const imports = [
22
+ CommonModule,
23
+ MatButtonModule,
24
+ MatButtonToggleModule,
25
+ MatDialogModule,
26
+ MatDividerModule,
27
+ MatFormFieldModule,
28
+ MatIconModule,
29
+ MatInputModule,
30
+ MatMenuModule,
31
+ MatToolbarModule,
32
+ MatTooltipModule,
33
+ NaturalFileModule,
34
+ NaturalIconModule,
35
+ ReactiveFormsModule,
36
+ ];
37
+ const declarationsToExport = [NaturalEditorComponent, NaturalCustomCssDirective];
38
+ export class NaturalEditorModule {
39
+ }
40
+ NaturalEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
41
+ NaturalEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEditorModule, declarations: [ClassDialogComponent, ColorDialogComponent, LinkDialogComponent, NaturalEditorComponent, NaturalCustomCssDirective], imports: [CommonModule,
42
+ MatButtonModule,
43
+ MatButtonToggleModule,
44
+ MatDialogModule,
45
+ MatDividerModule,
46
+ MatFormFieldModule,
47
+ MatIconModule,
48
+ MatInputModule,
49
+ MatMenuModule,
50
+ MatToolbarModule,
51
+ MatTooltipModule,
52
+ NaturalFileModule,
53
+ NaturalIconModule,
54
+ ReactiveFormsModule], exports: [CommonModule,
55
+ MatButtonModule,
56
+ MatButtonToggleModule,
57
+ MatDialogModule,
58
+ MatDividerModule,
59
+ MatFormFieldModule,
60
+ MatIconModule,
61
+ MatInputModule,
62
+ MatMenuModule,
63
+ MatToolbarModule,
64
+ MatTooltipModule,
65
+ NaturalFileModule,
66
+ NaturalIconModule,
67
+ ReactiveFormsModule, NaturalEditorComponent, NaturalCustomCssDirective] });
68
+ NaturalEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEditorModule, imports: [[...imports], CommonModule,
69
+ MatButtonModule,
70
+ MatButtonToggleModule,
71
+ MatDialogModule,
72
+ MatDividerModule,
73
+ MatFormFieldModule,
74
+ MatIconModule,
75
+ MatInputModule,
76
+ MatMenuModule,
77
+ MatToolbarModule,
78
+ MatTooltipModule,
79
+ NaturalFileModule,
80
+ NaturalIconModule,
81
+ ReactiveFormsModule] });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NaturalEditorModule, decorators: [{
83
+ type: NgModule,
84
+ args: [{
85
+ declarations: [ClassDialogComponent, ColorDialogComponent, LinkDialogComponent, ...declarationsToExport],
86
+ imports: [...imports],
87
+ exports: [...imports, ...declarationsToExport],
88
+ }]
89
+ }] });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOztBQUU1RSxNQUFNLE9BQU8sR0FBRztJQUNaLFlBQVk7SUFDWixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixtQkFBbUI7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0FBT2pGLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFKYixvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFIcEQsc0JBQXNCLEVBQUUseUJBQXlCLGFBaEIzRSxZQUFZO1FBQ1osZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsbUJBQW1CLGFBYm5CLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixjQUFjO1FBQ2QsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixtQkFBbUIsRUFHTyxzQkFBc0IsRUFBRSx5QkFBeUI7aUhBT2xFLG1CQUFtQixZQUhuQixDQUFDLEdBQUcsT0FBTyxDQUFDLEVBcEJyQixZQUFZO1FBQ1osZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsbUJBQW1COzJGQVVWLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLG9CQUFvQixDQUFDO29CQUN4RyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXR1cmFsRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuL2VkaXRvci9lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRCdXR0b25Ub2dnbGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHtNYXRUb29sYmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHtMaW5rRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0RGlhbG9nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TmF0dXJhbEZpbGVNb2R1bGUsIE5hdHVyYWxJY29uTW9kdWxlfSBmcm9tICdAZWNvZGV2L25hdHVyYWwnO1xuaW1wb3J0IHtNYXREaXZpZGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7Q29sb3JEaWFsb2dDb21wb25lbnR9IGZyb20gJy4vY29sb3ItZGlhbG9nL2NvbG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtDbGFzc0RpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi9jbGFzcy1kaWFsb2cvY2xhc3MtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxDdXN0b21Dc3NEaXJlY3RpdmV9IGZyb20gJy4vY3VzdG9tLWNzcy9jdXN0b20tY3NzLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGltcG9ydHMgPSBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTmF0dXJhbEZpbGVNb2R1bGUsXG4gICAgTmF0dXJhbEljb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbl07XG5cbmNvbnN0IGRlY2xhcmF0aW9uc1RvRXhwb3J0ID0gW05hdHVyYWxFZGl0b3JDb21wb25lbnQsIE5hdHVyYWxDdXN0b21Dc3NEaXJlY3RpdmVdO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0NsYXNzRGlhbG9nQ29tcG9uZW50LCBDb2xvckRpYWxvZ0NvbXBvbmVudCwgTGlua0RpYWxvZ0NvbXBvbmVudCwgLi4uZGVjbGFyYXRpb25zVG9FeHBvcnRdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBleHBvcnRzOiBbLi4uaW1wb3J0cywgLi4uZGVjbGFyYXRpb25zVG9FeHBvcnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsRWRpdG9yTW9kdWxlIHt9XG4iXX0=
@@ -27,16 +27,13 @@ export class LinkDialogComponent {
27
27
  this.dialogRef.close(this.form.value);
28
28
  }
29
29
  }
30
- LinkDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: LinkDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
31
- LinkDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.9", type: LinkDialogComponent, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>Ins\u00E9rer un lien</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n>URL</mat-label>\n <input matInput [formControl]=\"hrefControl\" (keydown.enter)=\"maybeConfirm()\" />\n <mat-error *ngIf=\"hrefControl.hasError('required')\" i18n>Ce champ est requis</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label i18n>Titre</mat-label>\n <input matInput [formControl]=\"titleControl\" (keydown.enter)=\"maybeConfirm()\" />\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-button [mat-dialog-close] i18n>Annuler</button>\n <button mat-stroked-button (click)=\"maybeConfirm()\" [disabled]=\"!form.valid\"><span i18n>Valider</span></button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;flex-direction:row;justify-content:flex-end}mat-dialog-content{width:70vw;max-width:60em;display:grid}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3.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"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatError, selector: "mat-error", inputs: ["id"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: LinkDialogComponent, decorators: [{
30
+ LinkDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LinkDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
31
+ LinkDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: LinkDialogComponent, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>Ins\u00E9rer un lien</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n>URL</mat-label>\n <input matInput [formControl]=\"hrefControl\" (keydown.enter)=\"maybeConfirm()\" />\n <mat-error *ngIf=\"hrefControl.hasError('required')\" i18n>Ce champ est requis</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label i18n>Titre</mat-label>\n <input matInput [formControl]=\"titleControl\" (keydown.enter)=\"maybeConfirm()\" />\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-button [mat-dialog-close] i18n>Annuler</button>\n <button mat-stroked-button (click)=\"maybeConfirm()\" [disabled]=\"!form.valid\"><span i18n>Valider</span></button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;flex-direction:row;justify-content:flex-end}mat-dialog-content{width:70vw;max-width:60em;display:grid}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.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"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatError, selector: "mat-error", inputs: ["id"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LinkDialogComponent, decorators: [{
33
33
  type: Component,
34
- args: [{
35
- templateUrl: './link-dialog.component.html',
36
- styleUrls: ['./link-dialog.component.scss'],
37
- }]
34
+ args: [{ template: "<h2 i18n mat-dialog-title>Ins\u00E9rer un lien</h2>\n\n<mat-dialog-content [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n>URL</mat-label>\n <input matInput [formControl]=\"hrefControl\" (keydown.enter)=\"maybeConfirm()\" />\n <mat-error *ngIf=\"hrefControl.hasError('required')\" i18n>Ce champ est requis</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label i18n>Titre</mat-label>\n <input matInput [formControl]=\"titleControl\" (keydown.enter)=\"maybeConfirm()\" />\n </mat-form-field>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-button [mat-dialog-close] i18n>Annuler</button>\n <button mat-stroked-button (click)=\"maybeConfirm()\" [disabled]=\"!form.valid\"><span i18n>Valider</span></button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;flex-direction:row;justify-content:flex-end}mat-dialog-content{width:70vw;max-width:60em;display:grid}\n"] }]
38
35
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
39
36
  type: Inject,
40
37
  args: [MAT_DIALOG_DATA]
41
38
  }] }, { type: i1.MatDialogRef }]; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi9saW5rLWRpYWxvZy9saW5rLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBV3hDLE1BQU0sT0FBTyxtQkFBbUI7SUFRNUIsWUFDNkIsSUFBb0IsRUFDckMsU0FBNEQ7UUFBNUQsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFUeEQsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGlCQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsU0FBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDM0IsQ0FBQyxDQUFDO1FBTUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLFlBQVk7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sT0FBTztRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Z0hBckJRLG1CQUFtQixrQkFTaEIsZUFBZTtvR0FUbEIsbUJBQW1CLG9EQ2RoQyxpekJBa0JBOzJGREphLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztpQkFDOUM7OzBCQVVRLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpZlZhbGlkfSBmcm9tICdAZWNvZGV2L25hdHVyYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtEaWFsb2dEYXRhIHtcbiAgICBocmVmOiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9saW5rLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGluay1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlua0RpYWxvZ0NvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGhyZWZDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGl0bGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBocmVmOiB0aGlzLmhyZWZDb250cm9sLFxuICAgICAgICB0aXRsZTogdGhpcy50aXRsZUNvbnRyb2wsXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGE6IExpbmtEaWFsb2dEYXRhLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPExpbmtEaWFsb2dDb21wb25lbnQsIExpbmtEaWFsb2dEYXRhPixcbiAgICApIHtcbiAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXliZUNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jb25maXJtKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5mb3JtLnZhbHVlKTtcbiAgICB9XG59XG4iLCI8aDIgaTE4biBtYXQtZGlhbG9nLXRpdGxlPkluc8OpcmVyIHVuIGxpZW48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50IFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPlVSTDwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImhyZWZDb250cm9sXCIgKGtleWRvd24uZW50ZXIpPVwibWF5YmVDb25maXJtKClcIiAvPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaHJlZkNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiBpMThuPkNlIGNoYW1wIGVzdCByZXF1aXM8L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPlRpdHJlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGl0bGVDb250cm9sXCIgKGtleWRvd24uZW50ZXIpPVwibWF5YmVDb25maXJtKClcIiAvPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdIGkxOG4+QW5udWxlcjwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJtYXliZUNvbmZpcm0oKVwiIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiPjxzcGFuIGkxOG4+VmFsaWRlcjwvc3Bhbj48L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC1lZGl0b3Ivc3JjL2xpYi9saW5rLWRpYWxvZy9saW5rLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL2xpbmstZGlhbG9nL2xpbmstZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBV3hDLE1BQU0sT0FBTyxtQkFBbUI7SUFRNUIsWUFDNkIsSUFBb0IsRUFDckMsU0FBNEQ7UUFBNUQsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFUeEQsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELGlCQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsU0FBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDM0IsQ0FBQyxDQUFDO1FBTUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLFlBQVk7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sT0FBTztRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Z0hBckJRLG1CQUFtQixrQkFTaEIsZUFBZTtvR0FUbEIsbUJBQW1CLG9EQ2RoQyxpekJBa0JBOzJGREphLG1CQUFtQjtrQkFKL0IsU0FBUzs7OzBCQWFELE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpZlZhbGlkfSBmcm9tICdAZWNvZGV2L25hdHVyYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtEaWFsb2dEYXRhIHtcbiAgICBocmVmOiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9saW5rLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGluay1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlua0RpYWxvZ0NvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGhyZWZDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGl0bGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBocmVmOiB0aGlzLmhyZWZDb250cm9sLFxuICAgICAgICB0aXRsZTogdGhpcy50aXRsZUNvbnRyb2wsXG4gICAgfSk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBMaW5rRGlhbG9nRGF0YSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxMaW5rRGlhbG9nQ29tcG9uZW50LCBMaW5rRGlhbG9nRGF0YT4sXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWF5YmVDb25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZlZhbGlkKHRoaXMuZm9ybSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY29uZmlybSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgfVxufVxuIiwiPGgyIGkxOG4gbWF0LWRpYWxvZy10aXRsZT5JbnPDqXJlciB1biBsaWVuPC9oMj5cblxuPG1hdC1kaWFsb2ctY29udGVudCBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj5VUkw8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJocmVmQ29udHJvbFwiIChrZXlkb3duLmVudGVyKT1cIm1heWJlQ29uZmlybSgpXCIgLz5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImhyZWZDb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgaTE4bj5DZSBjaGFtcCBlc3QgcmVxdWlzPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj5UaXRyZTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInRpdGxlQ29udHJvbFwiIChrZXlkb3duLmVudGVyKT1cIm1heWJlQ29uZmlybSgpXCIgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXSBpMThuPkFubnVsZXI8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwibWF5YmVDb25maXJtKClcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIj48c3BhbiBpMThuPlZhbGlkZXI8L3NwYW4+PC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==