qms-angular 1.0.86 → 1.0.87

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 (89) hide show
  1. package/bundles/qms-angular.umd.js +6802 -207
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/components/comment/comment.js +6 -3
  4. package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +3 -3
  5. package/esm2015/lib/components/related/content/related-content.component.js +2 -2
  6. package/esm2015/lib/components/table/table.module.js +4 -4
  7. package/esm2015/lib/directives/file-upload/file-upload-multiple-selector.directive.js +3 -1
  8. package/esm2015/lib/directives/file-upload/file-upload-selector.directive.js +3 -1
  9. package/esm2015/lib/directives/file-upload/file-upload.directive.js +1 -1
  10. package/esm2015/lib/model/en.js +63 -2
  11. package/esm2015/lib/model/no.js +63 -2
  12. package/esm2015/lib/qms-ckeditor-components/common/flowchart/config/halo.function.js +87 -0
  13. package/esm2015/lib/qms-ckeditor-components/common/flowchart/config/inspector.function.js +3767 -0
  14. package/esm2015/lib/qms-ckeditor-components/common/flowchart/config/selection.function.js +56 -0
  15. package/esm2015/lib/qms-ckeditor-components/common/flowchart/config/stencil.function.js +1003 -0
  16. package/esm2015/lib/qms-ckeditor-components/common/flowchart/config/toolbar.function.js +302 -0
  17. package/esm2015/lib/qms-ckeditor-components/common/flowchart/models/app-shapes.js +320 -0
  18. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/keyboard-service.js +69 -0
  19. package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.js +412 -0
  20. package/esm2015/lib/qms-ckeditor-components/common/flowchart/themes/theme-picker.js +80 -0
  21. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.js +1 -1
  22. package/esm2015/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.js +2 -2
  23. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +2 -2
  24. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.js +2 -2
  25. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.js +317 -0
  26. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +2 -2
  27. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.js +2 -2
  28. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +2 -2
  29. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +2 -2
  30. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +2 -2
  31. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +2 -2
  32. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.js +2 -2
  33. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +31 -1
  34. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +4 -2
  35. package/esm2015/public-api.js +7 -1
  36. package/esm2015/qms-angular.js +2 -1
  37. package/fesm2015/qms-angular.js +6744 -194
  38. package/fesm2015/qms-angular.js.map +1 -1
  39. package/lib/components/comment/comment.d.ts +1 -0
  40. package/lib/model/en.d.ts +61 -0
  41. package/lib/model/no.d.ts +61 -0
  42. package/lib/qms-ckeditor-components/common/flowchart/config/halo.function.d.ts +37 -0
  43. package/lib/qms-ckeditor-components/common/flowchart/config/inspector.function.d.ts +7 -0
  44. package/lib/qms-ckeditor-components/common/flowchart/config/selection.function.d.ts +39 -0
  45. package/lib/qms-ckeditor-components/common/flowchart/config/stencil.function.d.ts +11 -0
  46. package/lib/qms-ckeditor-components/common/flowchart/config/toolbar.function.d.ts +224 -0
  47. package/lib/qms-ckeditor-components/common/flowchart/models/app-shapes.d.ts +58 -0
  48. package/lib/qms-ckeditor-components/common/flowchart/service/keyboard-service.d.ts +16 -0
  49. package/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.d.ts +56 -0
  50. package/lib/qms-ckeditor-components/common/flowchart/themes/theme-picker.d.ts +35 -0
  51. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.d.ts +2 -0
  52. package/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.d.ts +41 -0
  53. package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +4 -0
  54. package/lib.theme.scss +4 -0
  55. package/package.json +1 -1
  56. package/public-api.d.ts +6 -0
  57. package/qms-angular.d.ts +1 -0
  58. package/qms-angular.metadata.json +1 -1
  59. package/src/assets/fonts/OpenSans/OpenSans.woff2 +0 -0
  60. package/src/assets/jointjs/images/delete-icon-modern.png +0 -0
  61. package/src/assets/jointjs/images/reset-icon-modern.png +0 -0
  62. package/src/assets/jointjs/images/save-icon-modern.png +0 -0
  63. package/src/assets/jointjs/images/to-front-icon-modern.png +0 -0
  64. package/src/assets/jointjs/images/toback-icon-modern.png +0 -0
  65. package/src/assets/jointjs/images/toolbar-icons-material.png +0 -0
  66. package/src/assets/jointjs/images/toolbar-icons-modern.png +0 -0
  67. package/src/assets/jointjs/scss/rappid.scss +326 -0
  68. package/src/assets/jointjs/scss/theme-picker.scss +22 -0
  69. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  70. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  71. package/src/assets/qms-ckeditor-plugin/package-lock.json +12634 -345
  72. package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +2 -2
  73. package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorService.js +9 -0
  74. package/src/assets/qms-ckeditor-plugin/src/plugins/flowchart/flowchartdialogcommand.js +47 -0
  75. package/src/assets/qms-ckeditor-plugin/src/plugins/flowchart/qmsCKEditorFlowchartPlugin.js +30 -0
  76. package/src/assets/qms-ckeditor-plugin/src/themes/icons/flowchart.svg +507 -0
  77. package/src/lib/components/comment/comment.scss +1 -0
  78. package/src/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.scss +1 -0
  79. package/src/lib/qms-ckeditor-components/common/flowchart/assets/image-icon1.svg +1 -0
  80. package/src/lib/qms-ckeditor-components/common/flowchart/assets/image-icon2.svg +6 -0
  81. package/src/lib/qms-ckeditor-components/common/flowchart/assets/image-icon3.svg +11 -0
  82. package/src/lib/qms-ckeditor-components/common/flowchart/assets/image-icon4.svg +8 -0
  83. package/src/lib/qms-ckeditor-components/common/flowchart/assets/member-female.png +0 -0
  84. package/src/lib/qms-ckeditor-components/common/flowchart/assets/member-male.png +0 -0
  85. package/src/lib/qms-ckeditor-components/common/flowchart/assets/no-color-icon.svg +72 -0
  86. package/src/lib/qms-ckeditor-components/common/flowchart/assets/toolbar-icons-material.png +0 -0
  87. package/src/lib/qms-ckeditor-components/common/flowchart/assets/toolbar-icons-modern.png +0 -0
  88. package/src/lib/qms-ckeditor-components/common/flowchart/assets/transparent-icon.svg +50 -0
  89. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.scss +68 -0
@@ -0,0 +1,412 @@
1
+ /*! Rappid v3.3.0 - HTML5 Diagramming Framework
2
+
3
+ Copyright (c) 2021 client IO
4
+
5
+ 2021-02-12
6
+
7
+
8
+ This Source Code Form is subject to the terms of the Rappid License
9
+ , v. 2.0. If a copy of the Rappid License was not distributed with this
10
+ file, You can obtain one at http://jointjs.com/license/rappid_v2.txt
11
+ or from the Rappid archive as was distributed by client IO. See the LICENSE file.*/
12
+ import { __awaiter } from "tslib";
13
+ // import * as joint from '@clientio/rappid'
14
+ import * as dagre from 'dagre';
15
+ import * as _ from 'lodash';
16
+ import * as appShapes from '../models/app-shapes';
17
+ import HaloFunction from '../config/halo.function';
18
+ import StencilFunction from '../config/stencil.function';
19
+ import ToolbartFunction from '../config/toolbar.function';
20
+ import InspectorFunction from '../config/inspector.function';
21
+ import { FlowChartConst } from '../../constants/ckeditorFlowchart.const';
22
+ class KitchenSinkService {
23
+ constructor(el, keyboardService, LANG) {
24
+ // backwards compatibility for older shapes
25
+ this.exportStylesheet = '.scalable * { vector-effect: non-scaling-stroke }';
26
+ this.el = el;
27
+ // apply current joint js theme
28
+ const view = new joint.mvc.View({ el });
29
+ view.delegateEvents({
30
+ 'mouseup input[type="range"]': (evt) => evt.target.blur()
31
+ });
32
+ this.keyboardService = keyboardService;
33
+ this.LANG = LANG;
34
+ }
35
+ startRappid() {
36
+ joint.setTheme('modern');
37
+ this.initializePaper();
38
+ this.initializeStencil();
39
+ this.initializeSelection();
40
+ this.initializeToolsAndInspector();
41
+ this.initializeNavigator();
42
+ this.initializeToolbar();
43
+ this.initializeKeyboardShortcuts();
44
+ this.initializeTooltips();
45
+ }
46
+ initializePaper() {
47
+ const graph = this.graph = new joint.dia.Graph({}, {
48
+ cellNamespace: appShapes
49
+ });
50
+ graph.on('add', (cell, collection, opt) => {
51
+ if (opt.stencil) {
52
+ return joint.ui.Inspector.create('.inspector-container', _.extend({
53
+ cell: cell
54
+ }, InspectorFunction.getInspectorConfiguration(this.LANG)[cell.get('type')]));
55
+ }
56
+ });
57
+ this.commandManager = new joint.dia.CommandManager({ graph: graph });
58
+ const paper = this.paper = new joint.dia.Paper({
59
+ width: 1000,
60
+ height: 1000,
61
+ gridSize: 10,
62
+ drawGrid: true,
63
+ model: graph,
64
+ cellViewNamespace: appShapes,
65
+ defaultLink: new appShapes.app.Link(),
66
+ defaultConnectionPoint: appShapes.app.Link.connectionPoint,
67
+ interactive: { linkMove: false },
68
+ async: true,
69
+ sorting: joint.dia.Paper.sorting.APPROX
70
+ });
71
+ paper.on('blank:mousewheel', _.partial(this.onMousewheel, null), this);
72
+ paper.on('cell:mousewheel', this.onMousewheel.bind(this));
73
+ this.snaplines = new joint.ui.Snaplines({ paper: paper });
74
+ const paperScroller = this.paperScroller = new joint.ui.PaperScroller({
75
+ paper,
76
+ autoResizePaper: true,
77
+ scrollWhileDragging: true,
78
+ cursor: 'grab'
79
+ });
80
+ this.renderPlugin('.paper-container', paperScroller);
81
+ paperScroller.render().center();
82
+ }
83
+ initializeStencil() {
84
+ this.stencil = new joint.ui.Stencil({
85
+ paper: this.paperScroller,
86
+ snaplines: this.snaplines,
87
+ width: 240,
88
+ groups: StencilFunction.getStencilGroups(),
89
+ dropAnimation: true,
90
+ groupsToggleButtons: true,
91
+ paperOptions: function () {
92
+ return {
93
+ model: new joint.dia.Graph({}, {
94
+ cellNamespace: appShapes
95
+ }),
96
+ cellViewNamespace: appShapes
97
+ };
98
+ },
99
+ search: {
100
+ '*': ['type', 'attrs/text/text', 'attrs/root/dataTooltip', 'attrs/label/text'],
101
+ 'org.Member': ['attrs/.rank/text', 'attrs/root/dataTooltip', 'attrs/.name/text']
102
+ },
103
+ // Use default Grid Layout
104
+ layout: true,
105
+ // Remove tooltip definition from clone
106
+ dragStartClone: (cell) => cell.clone().removeAttr('root/dataTooltip')
107
+ });
108
+ this.renderPlugin('.stencil-container', this.stencil);
109
+ this.stencil.load(StencilFunction.getStencilShapes(this.LANG));
110
+ }
111
+ initializeSelection() {
112
+ this.clipboard = new joint.ui.Clipboard();
113
+ this.selection = new joint.ui.Selection({ paper: this.paper, useModelGeometry: true });
114
+ this.selection.collection.on('reset add remove', this.onSelectionChange.bind(this));
115
+ const keyboard = this.keyboardService.keyboard;
116
+ // Initiate selecting when the user grabs the blank area of the paper while the Shift key is pressed.
117
+ // Otherwise, initiate paper pan.
118
+ this.paper.on('blank:pointerdown', (evt, x, y) => {
119
+ if (keyboard.isActive('shift', evt)) {
120
+ this.selection.startSelecting(evt);
121
+ }
122
+ else {
123
+ this.selection.collection.reset([]);
124
+ this.paperScroller.startPanning(evt);
125
+ this.paper.removeTools();
126
+ }
127
+ });
128
+ this.paper.on('element:pointerdown', (elementView, evt) => {
129
+ // Select an element if CTRL/Meta key is pressed while the element is clicked.
130
+ if (keyboard.isActive('ctrl meta', evt)) {
131
+ if (this.selection.collection.find(function (cell) { return cell.isLink(); })) {
132
+ // Do not allow mixing links and elements in the selection
133
+ this.selection.collection.reset([elementView.model]);
134
+ }
135
+ else {
136
+ this.selection.collection.add(elementView.model);
137
+ }
138
+ }
139
+ });
140
+ this.selection.on('selection-box:pointerdown', (elementView, evt) => {
141
+ // Unselect an element if the CTRL/Meta key is pressed while a selected element is clicked.
142
+ if (keyboard.isActive('ctrl meta', evt)) {
143
+ evt.preventDefault();
144
+ this.selection.collection.remove(elementView.model);
145
+ }
146
+ });
147
+ }
148
+ getImageContent() {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ return new Promise((resolve) => {
151
+ this.paper.toPNG((imageData) => {
152
+ resolve(imageData);
153
+ });
154
+ });
155
+ });
156
+ }
157
+ getJsonContent() {
158
+ return JSON.stringify(this.graph.toJSON());
159
+ }
160
+ onSelectionChange() {
161
+ const { paper, selection } = this;
162
+ const { collection } = selection;
163
+ paper.removeTools();
164
+ joint.ui.Halo.clear(paper);
165
+ joint.ui.FreeTransform.clear(paper);
166
+ joint.ui.Inspector.close();
167
+ if (collection.length === 1) {
168
+ const primaryCell = collection.first();
169
+ const primaryCellView = paper.requireView(primaryCell);
170
+ selection.destroySelectionBox(primaryCell);
171
+ this.selectPrimaryCell(primaryCellView);
172
+ }
173
+ else if (collection.length === 2) {
174
+ collection.each(function (cell) {
175
+ selection.createSelectionBox(cell);
176
+ });
177
+ }
178
+ }
179
+ selectPrimaryCell(cellView) {
180
+ const cell = cellView.model;
181
+ if (cell.isElement()) {
182
+ this.selectPrimaryElement(cellView);
183
+ }
184
+ else {
185
+ this.selectPrimaryLink(cellView);
186
+ }
187
+ joint.ui.Inspector.create('.inspector-container', _.extend({
188
+ cell: cell
189
+ }, InspectorFunction.getInspectorConfiguration(this.LANG)[cell.get('type')]));
190
+ }
191
+ selectPrimaryElement(elementView) {
192
+ const element = elementView.model;
193
+ new joint.ui.FreeTransform({
194
+ cellView: elementView,
195
+ allowRotation: false,
196
+ preserveAspectRatio: !!element.get('preserveAspectRatio'),
197
+ allowOrthogonalResize: element.get('allowOrthogonalResize') !== false
198
+ }).render();
199
+ new joint.ui.Halo({
200
+ cellView: elementView,
201
+ handles: HaloFunction.getHaloConfiguration(this.LANG),
202
+ useModelGeometry: true
203
+ }).render();
204
+ }
205
+ selectPrimaryLink(linkView) {
206
+ const ns = joint.linkTools;
207
+ const toolsView = new joint.dia.ToolsView({
208
+ name: 'link-pointerdown',
209
+ tools: [
210
+ new ns.Vertices(),
211
+ new ns.SourceAnchor(),
212
+ new ns.TargetAnchor(),
213
+ new ns.SourceArrowhead(),
214
+ new ns.TargetArrowhead(),
215
+ new ns.Segments,
216
+ new ns.Boundary({ padding: 15 }),
217
+ new ns.Remove({ offset: -20, distance: 40 })
218
+ ]
219
+ });
220
+ linkView.addTools(toolsView);
221
+ }
222
+ initializeToolsAndInspector() {
223
+ this.paper.on('cell:pointerup', (cellView) => {
224
+ const cell = cellView.model;
225
+ const { collection } = this.selection;
226
+ if (collection.includes(cell)) {
227
+ return;
228
+ }
229
+ collection.reset([cell]);
230
+ });
231
+ this.paper.on('link:mouseenter', (linkView) => {
232
+ // Open tool only if there is none yet
233
+ if (linkView.hasTools()) {
234
+ return;
235
+ }
236
+ const ns = joint.linkTools;
237
+ const toolsView = new joint.dia.ToolsView({
238
+ name: 'link-hover',
239
+ tools: [
240
+ new ns.Vertices({ vertexAdding: false }),
241
+ new ns.SourceArrowhead(),
242
+ new ns.TargetArrowhead()
243
+ ]
244
+ });
245
+ linkView.addTools(toolsView);
246
+ });
247
+ this.paper.on('link:mouseleave', (linkView) => {
248
+ // Remove only the hover tool, not the pointerdown tool
249
+ if (linkView.hasTools('link-hover')) {
250
+ linkView.removeTools();
251
+ }
252
+ });
253
+ this.graph.on('change', (cell, opt) => {
254
+ if (!cell.isLink() || !opt.inspector) {
255
+ return;
256
+ }
257
+ const ns = joint.linkTools;
258
+ const toolsView = new joint.dia.ToolsView({
259
+ name: 'link-inspected',
260
+ tools: [
261
+ new ns.Boundary({ padding: 15 }),
262
+ ]
263
+ });
264
+ cell.findView(this.paper).addTools(toolsView);
265
+ });
266
+ }
267
+ initializeNavigator() {
268
+ const navigator = this.navigator = new joint.ui.Navigator({
269
+ width: 240,
270
+ height: 115,
271
+ paperScroller: this.paperScroller,
272
+ zoom: false,
273
+ paperOptions: {
274
+ async: true,
275
+ sorting: joint.dia.Paper.sorting.NONE,
276
+ elementView: appShapes.NavigatorElementView,
277
+ linkView: appShapes.NavigatorLinkView,
278
+ cellViewNamespace: { /* no other views are accessible in the navigator */}
279
+ }
280
+ });
281
+ this.renderPlugin('.navigator-container', navigator);
282
+ }
283
+ initializeToolbar() {
284
+ const { groups, tools } = ToolbartFunction.getToolbarConfiguration(this.LANG);
285
+ this.toolbar = new joint.ui.Toolbar({
286
+ groups,
287
+ tools,
288
+ autoToggle: true,
289
+ references: {
290
+ paperScroller: this.paperScroller,
291
+ commandManager: this.commandManager
292
+ }
293
+ });
294
+ this.toolbar.on({
295
+ 'svg:pointerclick': this.openAsSVG.bind(this),
296
+ 'png:pointerclick': this.openAsPNG.bind(this),
297
+ 'to-front:pointerclick': this.applyOnSelection.bind(this, 'toFront'),
298
+ 'to-back:pointerclick': this.applyOnSelection.bind(this, 'toBack'),
299
+ 'layout:pointerclick': this.layoutDirectedGraph.bind(this),
300
+ 'snapline:change': this.changeSnapLines.bind(this),
301
+ 'clear:pointerclick': this.graph.clear.bind(this.graph),
302
+ 'print:pointerclick': this.paper.print.bind(this.paper),
303
+ 'grid-size:change': this.paper.setGridSize.bind(this.paper),
304
+ 'selectTemplate:option:select': this.onChangeTemplate,
305
+ 'deleteTemplate:pointerclick': this.onDeleteTemplate,
306
+ 'saveAsTemplate:pointerclick': this.onSaveAsTemplate,
307
+ 'resetTemplate:pointerclick': this.onResetTemplate
308
+ });
309
+ this.renderPlugin('.toolbar-container', this.toolbar);
310
+ }
311
+ applyOnSelection(method) {
312
+ this.graph.startBatch('selection');
313
+ this.selection.collection.models.forEach(function (model) { model[method](); });
314
+ this.graph.stopBatch('selection');
315
+ }
316
+ changeSnapLines(checked) {
317
+ if (checked) {
318
+ this.snaplines.startListening();
319
+ this.stencil.options.snaplines = this.snaplines;
320
+ }
321
+ else {
322
+ this.snaplines.stopListening();
323
+ this.stencil.options.snaplines = null;
324
+ }
325
+ }
326
+ initializeKeyboardShortcuts() {
327
+ this.keyboardService.create(this.graph, this.clipboard, this.selection, this.paperScroller, this.commandManager);
328
+ }
329
+ initializeTooltips() {
330
+ return new joint.ui.Tooltip({
331
+ rootTarget: document.body,
332
+ target: '[data-tooltip]',
333
+ direction: joint.ui.Tooltip.TooltipArrowPosition.Auto,
334
+ padding: 10
335
+ });
336
+ }
337
+ openAsSVG() {
338
+ this.paper.hideTools().toSVG((svg) => {
339
+ new joint.ui.Lightbox({
340
+ image: 'data:image/svg+xml,' + encodeURIComponent(svg),
341
+ downloadable: true,
342
+ fileName: 'Rappid'
343
+ }).open();
344
+ this.paper.showTools();
345
+ }, {
346
+ preserveDimensions: true,
347
+ convertImagesToDataUris: true,
348
+ useComputedStyles: false,
349
+ stylesheet: this.exportStylesheet
350
+ });
351
+ }
352
+ openAsPNG() {
353
+ this.paper.hideTools().toPNG((dataURL) => {
354
+ new joint.ui.Lightbox({
355
+ image: dataURL,
356
+ downloadable: true,
357
+ fileName: 'Rappid'
358
+ }).open();
359
+ this.paper.showTools();
360
+ }, {
361
+ padding: 10,
362
+ useComputedStyles: false,
363
+ stylesheet: this.exportStylesheet
364
+ });
365
+ }
366
+ onMousewheel(cellView, evt, ox, oy, delta) {
367
+ if (this.keyboardService.keyboard.isActive('alt', evt)) {
368
+ evt.preventDefault();
369
+ this.paperScroller.zoom(delta * 0.2, { min: 0.2, max: 5, grid: 0.2, ox, oy });
370
+ }
371
+ }
372
+ layoutDirectedGraph() {
373
+ joint.layout.DirectedGraph.layout(this.graph, {
374
+ graphlib: dagre.graphlib,
375
+ dagre: dagre,
376
+ setVertices: true,
377
+ rankDir: 'TB',
378
+ marginX: 100,
379
+ marginY: 100
380
+ });
381
+ this.paperScroller.centerContent();
382
+ }
383
+ renderPlugin(selector, plugin) {
384
+ this.el.querySelector(selector).appendChild(plugin.el);
385
+ plugin.render();
386
+ }
387
+ onChangeTemplate(event) {
388
+ if (event.jsonContent) {
389
+ window[FlowChartConst.KS_SELECTED_FLOWCHART_ID] = event.flowChartId;
390
+ window[FlowChartConst.KS_SELECTED_JSONCONTENT] = event.jsonContent;
391
+ window.postMessage(FlowChartConst.KS_CHANGE_TEMPLATE, '*');
392
+ }
393
+ }
394
+ onDeleteTemplate(event) {
395
+ if (window[FlowChartConst.KS_IS_SELECTED_TEMPLATE]) {
396
+ window.postMessage(FlowChartConst.KS_DELETE_TEMPLATE, '*');
397
+ }
398
+ else {
399
+ window.postMessage(FlowChartConst.MUST_SELECT_TEMPLATE, '*');
400
+ }
401
+ }
402
+ onSaveAsTemplate() {
403
+ window.postMessage(FlowChartConst.KS_SAVE_AS_TEMPLATE, '*');
404
+ }
405
+ onResetTemplate() {
406
+ if (window[FlowChartConst.KS_IS_SELECTED_TEMPLATE]) {
407
+ window.postMessage(FlowChartConst.KS_RESET_TEMPLATE, '*');
408
+ }
409
+ }
410
+ }
411
+ export default KitchenSinkService;
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0Y2hlbnNpbmstc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tbW9uL2Zsb3djaGFydC9zZXJ2aWNlL2tpdGNoZW5zaW5rLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7b0ZBVW9GOztBQUVwRiw0Q0FBNEM7QUFDNUMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxLQUFLLFNBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLFlBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLGdCQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8saUJBQWlCLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXpFLE1BQU0sa0JBQWtCO0lBNkJwQixZQUNJLEVBQVcsRUFDWCxlQUFnQyxFQUNoQyxJQUFTO1FBNFdiLDJDQUEyQztRQUMzQyxxQkFBZ0IsR0FBRyxtREFBbUQsQ0FBQztRQTNXbkUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFYiwrQkFBK0I7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNoQiw2QkFBNkIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7U0FDNUQsQ0FBQyxDQUFDO1FBRUgsSUFB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QUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBSztRQUNsQixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsRUFBRTtZQUNoRCxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM5RDthQUNJO1lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDaEU7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsRUFBRTtZQUNoRCxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM3RDtJQUNMLENBQUM7Q0FDSjtBQUVELGVBQWUsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgUmFwcGlkIHYzLjMuMCAtIEhUTUw1IERpYWdyYW1taW5nIEZyYW1ld29ya1xyXG5cclxuQ29weXJpZ2h0IChjKSAyMDIxIGNsaWVudCBJT1xyXG5cclxuIDIwMjEtMDItMTIgXHJcblxyXG5cclxuVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBSYXBwaWQgTGljZW5zZVxyXG4sIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBSYXBwaWQgTGljZW5zZSB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpc1xyXG5maWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL2pvaW50anMuY29tL2xpY2Vuc2UvcmFwcGlkX3YyLnR4dFxyXG4gb3IgZnJvbSB0aGUgUmFwcGlkIGFyY2hpdmUgYXMgd2FzIGRpc3RyaWJ1dGVkIGJ5IGNsaWVudCBJTy4gU2VlIHRoZSBMSUNFTlNFIGZpbGUuKi9cclxuXHJcbi8vIGltcG9ydCAqIGFzIGpvaW50IGZyb20gJ0BjbGllbnRpby9yYXBwaWQnXHJcbmltcG9ydCAqIGFzIGRhZ3JlIGZyb20gJ2RhZ3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBLZXlib2FyZFNlcnZpY2UgfSBmcm9tICcuL2tleWJvYXJkLXNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBhcHBTaGFwZXMgZnJvbSAnLi4vbW9kZWxzL2FwcC1zaGFwZXMnO1xyXG5pbXBvcnQgSGFsb0Z1bmN0aW9uIGZyb20gJy4uL2NvbmZpZy9oYWxvLmZ1bmN0aW9uJztcclxuaW1wb3J0IFN0ZW5jaWxGdW5jdGlvbiBmcm9tICcuLi9jb25maWcvc3RlbmNpbC5mdW5jdGlvbic7XHJcbmltcG9ydCBUb29sYmFydEZ1bmN0aW9uIGZyb20gJy4uL2NvbmZpZy90b29sYmFyLmZ1bmN0aW9uJztcclxuaW1wb3J0IEluc3BlY3RvckZ1bmN0aW9uIGZyb20gJy4uL2NvbmZpZy9pbnNwZWN0b3IuZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBGbG93Q2hhcnRDb25zdCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ja2VkaXRvckZsb3djaGFydC5jb25zdCc7XHJcbmRlY2xhcmUgdmFyIGpvaW50OiBhbnk7XHJcbmNsYXNzIEtpdGNoZW5TaW5rU2VydmljZSB7XHJcbiAgICBMQU5HOiBhbnlcclxuICAgIGVsOiBFbGVtZW50O1xyXG5cclxuICAgIC8vIGdyYXBoOiBqb2ludC5kaWEuR3JhcGg7XHJcbiAgICAvLyBwYXBlcjogam9pbnQuZGlhLlBhcGVyO1xyXG4gICAgLy8gcGFwZXJTY3JvbGxlcjogam9pbnQudWkuUGFwZXJTY3JvbGxlcjtcclxuXHJcbiAgICAvLyBjb21tYW5kTWFuYWdlcjogam9pbnQuZGlhLkNvbW1hbmRNYW5hZ2VyO1xyXG4gICAgLy8gc25hcGxpbmVzOiBqb2ludC51aS5TbmFwbGluZXM7XHJcbiAgICAvLyBjbGlwYm9hcmQ6IGpvaW50LnVpLkNsaXBib2FyZDtcclxuICAgIC8vIHNlbGVjdGlvbjogam9pbnQudWkuU2VsZWN0aW9uO1xyXG4gICAgLy8gbmF2aWdhdG9yOiBqb2ludC51aS5OYXZpZ2F0b3I7XHJcbiAgICAvLyBzdGVuY2lsOiBqb2ludC51aS5TdGVuY2lsXHJcbiAgICAvLyB0b29sYmFyOiBqb2ludC51aS5Ub29sYmFyXHJcbiAgICBncmFwaDogYW55O1xyXG4gICAgcGFwZXI6IGFueTtcclxuICAgIHBhcGVyU2Nyb2xsZXI6IGFueTtcclxuXHJcbiAgICBjb21tYW5kTWFuYWdlcjogYW55O1xyXG4gICAgc25hcGxpbmVzOiBhbnk7XHJcbiAgICBjbGlwYm9hcmQ6IGFueTtcclxuICAgIHNlbGVjdGlvbjogYW55O1xyXG4gICAgbmF2aWdhdG9yOiBhbnk7XHJcbiAgICBzdGVuY2lsOiBhbnk7XHJcbiAgICB0b29sYmFyOiBhbnk7XHJcblxyXG4gICAga2V5Ym9hcmRTZXJ2aWNlOiBLZXlib2FyZFNlcnZpY2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgZWw6IEVsZW1lbnQsXHJcbiAgICAgICAga2V5Ym9hcmRTZXJ2aWNlOiBLZXlib2FyZFNlcnZpY2UsXHJcbiAgICAgICAgTEFORzogYW55XHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmVsID0gZWw7XHJcblxyXG4gICAgICAgIC8vIGFwcGx5IGN1cnJlbnQgam9pbnQganMgdGhlbWVcclxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IGpvaW50Lm12Yy5WaWV3KHsgZWwgfSk7XHJcbiAgICAgICAgdmlldy5kZWxlZ2F0ZUV2ZW50cyh7XHJcbiAgICAgICAgICAgICdtb3VzZXVwIGlucHV0W3R5cGU9XCJyYW5nZVwiXSc6IChldnQpID0+IGV2dC50YXJnZXQuYmx1cigpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMua2V5Ym9hcmRTZXJ2aWNlID0ga2V5Ym9hcmRTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuTEFORyA9IExBTkdcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFJhcHBpZCgpIHtcclxuXHJcbiAgICAgICAgam9pbnQuc2V0VGhlbWUoJ21vZGVybicpO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRpYWxpemVQYXBlcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0ZW5jaWwoKTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVTZWxlY3Rpb24oKTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVUb29sc0FuZEluc3BlY3RvcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU5hdmlnYXRvcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRvb2xiYXIoKTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVLZXlib2FyZFNob3J0Y3V0cygpO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRvb2x0aXBzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZVBhcGVyKCkge1xyXG5cclxuICAgICAgICBjb25zdCBncmFwaCA9IHRoaXMuZ3JhcGggPSBuZXcgam9pbnQuZGlhLkdyYXBoKHt9LCB7XHJcbiAgICAgICAgICAgIGNlbGxOYW1lc3BhY2U6IGFwcFNoYXBlc1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBncmFwaC5vbignYWRkJywgKGNlbGw6IGFueSwgY29sbGVjdGlvbjogYW55LCBvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAob3B0LnN0ZW5jaWwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqb2ludC51aS5JbnNwZWN0b3IuY3JlYXRlKCcuaW5zcGVjdG9yLWNvbnRhaW5lcicsIF8uZXh0ZW5kKHtcclxuICAgICAgICAgICAgICAgICAgICBjZWxsOiBjZWxsXHJcbiAgICAgICAgICAgICAgICB9LCBJbnNwZWN0b3JGdW5jdGlvbi5nZXRJbnNwZWN0b3JDb25maWd1cmF0aW9uKHRoaXMuTEFORylbY2VsbC5nZXQoJ3R5cGUnKV0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyID0gbmV3IGpvaW50LmRpYS5Db21tYW5kTWFuYWdlcih7IGdyYXBoOiBncmFwaCB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFwZXIgPSB0aGlzLnBhcGVyID0gbmV3IGpvaW50LmRpYS5QYXBlcih7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMDAsXHJcbiAgICAgICAgICAgIGdyaWRTaXplOiAxMCxcclxuICAgICAgICAgICAgZHJhd0dyaWQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1vZGVsOiBncmFwaCxcclxuICAgICAgICAgICAgY2VsbFZpZXdOYW1lc3BhY2U6IGFwcFNoYXBlcyxcclxuICAgICAgICAgICAgZGVmYXVsdExpbms6IDx1bmtub3duPm5ldyBhcHBTaGFwZXMuYXBwLkxpbmsoKSxcclxuICAgICAgICAgICAgZGVmYXVsdENvbm5lY3Rpb25Qb2ludDogYXBwU2hhcGVzLmFwcC5MaW5rLmNvbm5lY3Rpb25Qb2ludCxcclxuICAgICAgICAgICAgaW50ZXJhY3RpdmU6IHsgbGlua01vdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxyXG4gICAgICAgICAgICBzb3J0aW5nOiBqb2ludC5kaWEuUGFwZXIuc29ydGluZy5BUFBST1hcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcGFwZXIub24oJ2JsYW5rOm1vdXNld2hlZWwnLCBfLnBhcnRpYWwodGhpcy5vbk1vdXNld2hlZWwsIG51bGwpLCB0aGlzKTtcclxuICAgICAgICBwYXBlci5vbignY2VsbDptb3VzZXdoZWVsJywgdGhpcy5vbk1vdXNld2hlZWwuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIHRoaXMuc25hcGxpbmVzID0gbmV3IGpvaW50LnVpLlNuYXBsaW5lcyh7IHBhcGVyOiBwYXBlciB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFwZXJTY3JvbGxlciA9IHRoaXMucGFwZXJTY3JvbGxlciA9IG5ldyBqb2ludC51aS5QYXBlclNjcm9sbGVyKHtcclxuICAgICAgICAgICAgcGFwZXIsXHJcbiAgICAgICAgICAgIGF1dG9SZXNpemVQYXBlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc2Nyb2xsV2hpbGVEcmFnZ2luZzogdHJ1ZSxcclxuICAgICAgICAgICAgY3Vyc29yOiAnZ3JhYidcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJQbHVnaW4oJy5wYXBlci1jb250YWluZXInLCBwYXBlclNjcm9sbGVyKTtcclxuICAgICAgICBwYXBlclNjcm9sbGVyLnJlbmRlcigpLmNlbnRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemVTdGVuY2lsKCkge1xyXG5cclxuICAgICAgICB0aGlzLnN0ZW5jaWwgPSBuZXcgam9pbnQudWkuU3RlbmNpbCh7XHJcbiAgICAgICAgICAgIHBhcGVyOiB0aGlzLnBhcGVyU2Nyb2xsZXIsXHJcbiAgICAgICAgICAgIHNuYXBsaW5lczogdGhpcy5zbmFwbGluZXMsXHJcbiAgICAgICAgICAgIHdpZHRoOiAyNDAsXHJcbiAgICAgICAgICAgIGdyb3VwczogU3RlbmNpbEZ1bmN0aW9uLmdldFN0ZW5jaWxHcm91cHMoKSxcclxuICAgICAgICAgICAgZHJvcEFuaW1hdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgZ3JvdXBzVG9nZ2xlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgcGFwZXJPcHRpb25zOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsOiBuZXcgam9pbnQuZGlhLkdyYXBoKHt9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxOYW1lc3BhY2U6IGFwcFNoYXBlc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGNlbGxWaWV3TmFtZXNwYWNlOiBhcHBTaGFwZXNcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlYXJjaDoge1xyXG4gICAgICAgICAgICAgICAgJyonOiBbJ3R5cGUnLCAnYXR0cnMvdGV4dC90ZXh0JywgJ2F0dHJzL3Jvb3QvZGF0YVRvb2x0aXAnLCAnYXR0cnMvbGFiZWwvdGV4dCddLFxyXG4gICAgICAgICAgICAgICAgJ29yZy5NZW1iZXInOiBbJ2F0dHJzLy5yYW5rL3RleHQnLCAnYXR0cnMvcm9vdC9kYXRhVG9vbHRpcCcsICdhdHRycy8ubmFtZS90ZXh0J11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gVXNlIGRlZmF1bHQgR3JpZCBMYXlvdXRcclxuICAgICAgICAgICAgbGF5b3V0OiB0cnVlLFxyXG4gICAgICAgICAgICAvLyBSZW1vdmUgdG9vbHRpcCBkZWZpbml0aW9uIGZyb20gY2xvbmVcclxuICAgICAgICAgICAgZHJhZ1N0YXJ0Q2xvbmU6IChjZWxsOiBhbnkpID0+IGNlbGwuY2xvbmUoKS5yZW1vdmVBdHRyKCdyb290L2RhdGFUb29sdGlwJylcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnJlbmRlclBsdWdpbignLnN0ZW5jaWwtY29udGFpbmVyJywgdGhpcy5zdGVuY2lsKTtcclxuICAgICAgICB0aGlzLnN0ZW5jaWwubG9hZChTdGVuY2lsRnVuY3Rpb24uZ2V0U3RlbmNpbFNoYXBlcyh0aGlzLkxBTkcpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplU2VsZWN0aW9uKCkge1xyXG5cclxuICAgICAgICB0aGlzLmNsaXBib2FyZCA9IG5ldyBqb2ludC51aS5DbGlwYm9hcmQoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBqb2ludC51aS5TZWxlY3Rpb24oeyBwYXBlcjogdGhpcy5wYXBlciwgdXNlTW9kZWxHZW9tZXRyeTogdHJ1ZSB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jb2xsZWN0aW9uLm9uKCdyZXNldCBhZGQgcmVtb3ZlJywgdGhpcy5vblNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgICAgY29uc3Qga2V5Ym9hcmQgPSB0aGlzLmtleWJvYXJkU2VydmljZS5rZXlib2FyZDtcclxuXHJcbiAgICAgICAgLy8gSW5pdGlhdGUgc2VsZWN0aW5nIHdoZW4gdGhlIHVzZXIgZ3JhYnMgdGhlIGJsYW5rIGFyZWEgb2YgdGhlIHBhcGVyIHdoaWxlIHRoZSBTaGlmdCBrZXkgaXMgcHJlc3NlZC5cclxuICAgICAgICAvLyBPdGhlcndpc2UsIGluaXRpYXRlIHBhcGVyIHBhbi5cclxuICAgICAgICB0aGlzLnBhcGVyLm9uKCdibGFuazpwb2ludGVyZG93bicsIChldnQ6IGFueSwgeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChrZXlib2FyZC5pc0FjdGl2ZSgnc2hpZnQnLCBldnQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zdGFydFNlbGVjdGluZyhldnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY29sbGVjdGlvbi5yZXNldChbXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcGVyU2Nyb2xsZXIuc3RhcnRQYW5uaW5nKGV2dCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcGVyLnJlbW92ZVRvb2xzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXBlci5vbignZWxlbWVudDpwb2ludGVyZG93bicsIChlbGVtZW50VmlldzogYW55LCBldnQ6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gU2VsZWN0IGFuIGVsZW1lbnQgaWYgQ1RSTC9NZXRhIGtleSBpcyBwcmVzc2VkIHdoaWxlIHRoZSBlbGVtZW50IGlzIGNsaWNrZWQuXHJcbiAgICAgICAgICAgIGlmIChrZXlib2FyZC5pc0FjdGl2ZSgnY3RybCBtZXRhJywgZXZ0KSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmNvbGxlY3Rpb24uZmluZChmdW5jdGlvbiAoY2VsbCkgeyByZXR1cm4gY2VsbC5pc0xpbmsoKSB9KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBhbGxvdyBtaXhpbmcgbGlua3MgYW5kIGVsZW1lbnRzIGluIHRoZSBzZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jb2xsZWN0aW9uLnJlc2V0KFtlbGVtZW50Vmlldy5tb2RlbF0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jb2xsZWN0aW9uLmFkZChlbGVtZW50Vmlldy5tb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLm9uKCdzZWxlY3Rpb24tYm94OnBvaW50ZXJkb3duJywgKGVsZW1lbnRWaWV3OiBhbnksIGV2dDogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBVbnNlbGVjdCBhbiBlbGVtZW50IGlmIHRoZSBDVFJML01ldGEga2V5IGlzIHByZXNzZWQgd2hpbGUgYSBzZWxlY3RlZCBlbGVtZW50IGlzIGNsaWNrZWQuXHJcbiAgICAgICAgICAgIGlmIChrZXlib2FyZC5pc0FjdGl2ZSgnY3RybCBtZXRhJywgZXZ0KSkge1xyXG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jb2xsZWN0aW9uLnJlbW92ZShlbGVtZW50Vmlldy5tb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SW1hZ2VDb250ZW50KCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBhcGVyLnRvUE5HKChpbWFnZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoaW1hZ2VEYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SnNvbkNvbnRlbnQoKSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKCkge1xyXG4gICAgICAgIGNvbnN0IHsgcGFwZXIsIHNlbGVjdGlvbiB9ID0gdGhpcztcclxuICAgICAgICBjb25zdCB7IGNvbGxlY3Rpb24gfSA9IHNlbGVjdGlvbjtcclxuICAgICAgICBwYXBlci5yZW1vdmVUb29scygpO1xyXG4gICAgICAgIGpvaW50LnVpLkhhbG8uY2xlYXIocGFwZXIpO1xyXG4gICAgICAgIGpvaW50LnVpLkZyZWVUcmFuc2Zvcm0uY2xlYXIocGFwZXIpO1xyXG4gICAgICAgIGpvaW50LnVpLkluc3BlY3Rvci5jbG9zZSgpO1xyXG4gICAgICAgIGlmIChjb2xsZWN0aW9uLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcmltYXJ5Q2VsbDogYW55ID0gY29sbGVjdGlvbi5maXJzdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmltYXJ5Q2VsbFZpZXcgPSBwYXBlci5yZXF1aXJlVmlldyhwcmltYXJ5Q2VsbCk7XHJcbiAgICAgICAgICAgIHNlbGVjdGlvbi5kZXN0cm95U2VsZWN0aW9uQm94KHByaW1hcnlDZWxsKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcmltYXJ5Q2VsbChwcmltYXJ5Q2VsbFZpZXcpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sbGVjdGlvbi5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9uIChjZWxsOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5jcmVhdGVTZWxlY3Rpb25Cb3goY2VsbCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RQcmltYXJ5Q2VsbChjZWxsVmlldzogYW55KSB7XHJcbiAgICAgICAgY29uc3QgY2VsbCA9IGNlbGxWaWV3Lm1vZGVsO1xyXG4gICAgICAgIGlmIChjZWxsLmlzRWxlbWVudCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJpbWFyeUVsZW1lbnQoY2VsbFZpZXcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJpbWFyeUxpbmsoY2VsbFZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBqb2ludC51aS5JbnNwZWN0b3IuY3JlYXRlKCcuaW5zcGVjdG9yLWNvbnRhaW5lcicsIF8uZXh0ZW5kKHtcclxuICAgICAgICAgICAgY2VsbDogY2VsbFxyXG4gICAgICAgIH0sIEluc3BlY3RvckZ1bmN0aW9uLmdldEluc3BlY3RvckNvbmZpZ3VyYXRpb24odGhpcy5MQU5HKVtjZWxsLmdldCgndHlwZScpXSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdFByaW1hcnlFbGVtZW50KGVsZW1lbnRWaWV3OiBhbnkpIHtcclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRWaWV3Lm1vZGVsO1xyXG5cclxuICAgICAgICBuZXcgam9pbnQudWkuRnJlZVRyYW5zZm9ybSh7XHJcbiAgICAgICAgICAgIGNlbGxWaWV3OiBlbGVtZW50VmlldyxcclxuICAgICAgICAgICAgYWxsb3dSb3RhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86ICEhZWxlbWVudC5nZXQoJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKSxcclxuICAgICAgICAgICAgYWxsb3dPcnRob2dvbmFsUmVzaXplOiBlbGVtZW50LmdldCgnYWxsb3dPcnRob2dvbmFsUmVzaXplJykgIT09IGZhbHNlXHJcbiAgICAgICAgfSkucmVuZGVyKCk7XHJcblxyXG4gICAgICAgIG5ldyBqb2ludC51aS5IYWxvKHtcclxuICAgICAgICAgICAgY2VsbFZpZXc6IGVsZW1lbnRWaWV3LFxyXG4gICAgICAgICAgICBoYW5kbGVzOiBIYWxvRnVuY3Rpb24uZ2V0SGFsb0NvbmZpZ3VyYXRpb24odGhpcy5MQU5HKSxcclxuICAgICAgICAgICAgdXNlTW9kZWxHZW9tZXRyeTogdHJ1ZVxyXG4gICAgICAgIH0pLnJlbmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdFByaW1hcnlMaW5rKGxpbmtWaWV3OiBhbnkpIHtcclxuXHJcbiAgICAgICAgY29uc3QgbnMgPSBqb2ludC5saW5rVG9vbHM7XHJcbiAgICAgICAgY29uc3QgdG9vbHNWaWV3ID0gbmV3IGpvaW50LmRpYS5Ub29sc1ZpZXcoe1xyXG4gICAgICAgICAgICBuYW1lOiAnbGluay1wb2ludGVyZG93bicsXHJcbiAgICAgICAgICAgIHRvb2xzOiBbXHJcbiAgICAgICAgICAgICAgICBuZXcgbnMuVmVydGljZXMoKSxcclxuICAgICAgICAgICAgICAgIG5ldyBucy5Tb3VyY2VBbmNob3IoKSxcclxuICAgICAgICAgICAgICAgIG5ldyBucy5UYXJnZXRBbmNob3IoKSxcclxuICAgICAgICAgICAgICAgIG5ldyBucy5Tb3VyY2VBcnJvd2hlYWQoKSxcclxuICAgICAgICAgICAgICAgIG5ldyBucy5UYXJnZXRBcnJvd2hlYWQoKSxcclxuICAgICAgICAgICAgICAgIG5ldyBucy5TZWdtZW50cyxcclxuICAgICAgICAgICAgICAgIG5ldyBucy5Cb3VuZGFyeSh7IHBhZGRpbmc6IDE1IH0pLFxyXG4gICAgICAgICAgICAgICAgbmV3IG5zLlJlbW92ZSh7IG9mZnNldDogLTIwLCBkaXN0YW5jZTogNDAgfSlcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsaW5rVmlldy5hZGRUb29scyh0b29sc1ZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemVUb29sc0FuZEluc3BlY3RvcigpIHtcclxuXHJcbiAgICAgICAgdGhpcy5wYXBlci5vbignY2VsbDpwb2ludGVydXAnLCAoY2VsbFZpZXc6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gY2VsbFZpZXcubW9kZWw7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29sbGVjdGlvbiB9ID0gdGhpcy5zZWxlY3Rpb247XHJcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uLmluY2x1ZGVzKGNlbGwpKSB7IHJldHVybjsgfVxyXG4gICAgICAgICAgICBjb2xsZWN0aW9uLnJlc2V0KFtjZWxsXSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucGFwZXIub24oJ2xpbms6bW91c2VlbnRlcicsIChsaW5rVmlldzogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBPcGVuIHRvb2wgb25seSBpZiB0aGVyZSBpcyBub25lIHlldFxyXG4gICAgICAgICAgICBpZiAobGlua1ZpZXcuaGFzVG9vbHMoKSkgeyByZXR1cm47IH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5zID0gam9pbnQubGlua1Rvb2xzO1xyXG4gICAgICAgICAgICBjb25zdCB0b29sc1ZpZXcgPSBuZXcgam9pbnQuZGlhLlRvb2xzVmlldyh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnbGluay1ob3ZlcicsXHJcbiAgICAgICAgICAgICAgICB0b29sczogW1xyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBucy5WZXJ0aWNlcyh7IHZlcnRleEFkZGluZzogZmFsc2UgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IG5zLlNvdXJjZUFycm93aGVhZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBucy5UYXJnZXRBcnJvd2hlYWQoKVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxpbmtWaWV3LmFkZFRvb2xzKHRvb2xzVmlldyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucGFwZXIub24oJ2xpbms6bW91c2VsZWF2ZScsIChsaW5rVmlldzogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBSZW1vdmUgb25seSB0aGUgaG92ZXIgdG9vbCwgbm90IHRoZSBwb2ludGVyZG93biB0b29sXHJcbiAgICAgICAgICAgIGlmIChsaW5rVmlldy5oYXNUb29scygnbGluay1ob3ZlcicpKSB7XHJcbiAgICAgICAgICAgICAgICBsaW5rVmlldy5yZW1vdmVUb29scygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZ3JhcGgub24oJ2NoYW5nZScsIChjZWxsOiBhbnksIG9wdDogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNlbGwuaXNMaW5rKCkgfHwgIW9wdC5pbnNwZWN0b3IpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBucyA9IGpvaW50LmxpbmtUb29scztcclxuICAgICAgICAgICAgY29uc3QgdG9vbHNWaWV3ID0gbmV3IGpvaW50LmRpYS5Ub29sc1ZpZXcoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2xpbmstaW5zcGVjdGVkJyxcclxuICAgICAgICAgICAgICAgIHRvb2xzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IG5zLkJvdW5kYXJ5KHsgcGFkZGluZzogMTUgfSksXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY2VsbC5maW5kVmlldyh0aGlzLnBhcGVyKS5hZGRUb29scyh0b29sc1ZpZXcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemVOYXZpZ2F0b3IoKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IG5hdmlnYXRvciA9IHRoaXMubmF2aWdhdG9yID0gbmV3IGpvaW50LnVpLk5hdmlnYXRvcih7XHJcbiAgICAgICAgICAgIHdpZHRoOiAyNDAsXHJcbiAgICAgICAgICAgIGhlaWdodDogMTE1LFxyXG4gICAgICAgICAgICBwYXBlclNjcm9sbGVyOiB0aGlzLnBhcGVyU2Nyb2xsZXIsXHJcbiAgICAgICAgICAgIHpvb206IGZhbHNlLFxyXG4gICAgICAgICAgICBwYXBlck9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc29ydGluZzogam9pbnQuZGlhLlBhcGVyLnNvcnRpbmcuTk9ORSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRWaWV3OiBhcHBTaGFwZXMuTmF2aWdhdG9yRWxlbWVudFZpZXcsXHJcbiAgICAgICAgICAgICAgICBsaW5rVmlldzogYXBwU2hhcGVzLk5hdmlnYXRvckxpbmtWaWV3LFxyXG4gICAgICAgICAgICAgICAgY2VsbFZpZXdOYW1lc3BhY2U6IHsgLyogbm8gb3RoZXIgdmlld3MgYXJlIGFjY2Vzc2libGUgaW4gdGhlIG5hdmlnYXRvciAqLyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJQbHVnaW4oJy5uYXZpZ2F0b3ItY29udGFpbmVyJywgbmF2aWdhdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplVG9vbGJhcigpIHtcclxuICAgICAgICBjb25zdCB7IGdyb3VwcywgdG9vbHMgfSA9IFRvb2xiYXJ0RnVuY3Rpb24uZ2V0VG9vbGJhckNvbmZpZ3VyYXRpb24odGhpcy5MQU5HKTtcclxuICAgICAgICB0aGlzLnRvb2xiYXIgPSBuZXcgam9pbnQudWkuVG9vbGJhcih7XHJcbiAgICAgICAgICAgIGdyb3VwcyxcclxuICAgICAgICAgICAgdG9vbHMsXHJcbiAgICAgICAgICAgIGF1dG9Ub2dnbGU6IHRydWUsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZXM6IHtcclxuICAgICAgICAgICAgICAgIHBhcGVyU2Nyb2xsZXI6IHRoaXMucGFwZXJTY3JvbGxlcixcclxuICAgICAgICAgICAgICAgIGNvbW1hbmRNYW5hZ2VyOiB0aGlzLmNvbW1hbmRNYW5hZ2VyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRvb2xiYXIub24oe1xyXG4gICAgICAgICAgICAnc3ZnOnBvaW50ZXJjbGljayc6IHRoaXMub3BlbkFzU1ZHLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICdwbmc6cG9pbnRlcmNsaWNrJzogdGhpcy5vcGVuQXNQTkcuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgJ3RvLWZyb250OnBvaW50ZXJjbGljayc6IHRoaXMuYXBwbHlPblNlbGVjdGlvbi5iaW5kKHRoaXMsICd0b0Zyb250JyksXHJcbiAgICAgICAgICAgICd0by1iYWNrOnBvaW50ZXJjbGljayc6IHRoaXMuYXBwbHlPblNlbGVjdGlvbi5iaW5kKHRoaXMsICd0b0JhY2snKSxcclxuICAgICAgICAgICAgJ2xheW91dDpwb2ludGVyY2xpY2snOiB0aGlzLmxheW91dERpcmVjdGVkR3JhcGguYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgJ3NuYXBsaW5lOmNoYW5nZSc6IHRoaXMuY2hhbmdlU25hcExpbmVzLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICdjbGVhcjpwb2ludGVyY2xpY2snOiB0aGlzLmdyYXBoLmNsZWFyLmJpbmQodGhpcy5ncmFwaCksXHJcbiAgICAgICAgICAgICdwcmludDpwb2ludGVyY2xpY2snOiB0aGlzLnBhcGVyLnByaW50LmJpbmQodGhpcy5wYXBlciksXHJcbiAgICAgICAgICAgICdncmlkLXNpemU6Y2hhbmdlJzogdGhpcy5wYXBlci5zZXRHcmlkU2l6ZS5iaW5kKHRoaXMucGFwZXIpLFxyXG4gICAgICAgICAgICAnc2VsZWN0VGVtcGxhdGU6b3B0aW9uOnNlbGVjdCc6IHRoaXMub25DaGFuZ2VUZW1wbGF0ZSxcclxuICAgICAgICAgICAgJ2RlbGV0ZVRlbXBsYXRlOnBvaW50ZXJjbGljayc6IHRoaXMub25EZWxldGVUZW1wbGF0ZSxcclxuICAgICAgICAgICAgJ3NhdmVBc1RlbXBsYXRlOnBvaW50ZXJjbGljayc6IHRoaXMub25TYXZlQXNUZW1wbGF0ZSxcclxuICAgICAgICAgICAgJ3Jlc2V0VGVtcGxhdGU6cG9pbnRlcmNsaWNrJzogdGhpcy5vblJlc2V0VGVtcGxhdGVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJQbHVnaW4oJy50b29sYmFyLWNvbnRhaW5lcicsIHRoaXMudG9vbGJhcik7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlPblNlbGVjdGlvbihtZXRob2Q6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZ3JhcGguc3RhcnRCYXRjaCgnc2VsZWN0aW9uJyk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY29sbGVjdGlvbi5tb2RlbHMuZm9yRWFjaChmdW5jdGlvbiAobW9kZWw6IGFueSkgeyBtb2RlbFttZXRob2RdKCk7IH0pO1xyXG4gICAgICAgIHRoaXMuZ3JhcGguc3RvcEJhdGNoKCdzZWxlY3Rpb24nKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VTbmFwTGluZXMoY2hlY2tlZDogYm9vbGVhbikge1xyXG5cclxuICAgICAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBsaW5lcy5zdGFydExpc3RlbmluZygpO1xyXG4gICAgICAgICAgICB0aGlzLnN0ZW5jaWwub3B0aW9ucy5zbmFwbGluZXMgPSB0aGlzLnNuYXBsaW5lcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBsaW5lcy5zdG9wTGlzdGVuaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlbmNpbC5vcHRpb25zLnNuYXBsaW5lcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemVLZXlib2FyZFNob3J0Y3V0cygpIHtcclxuXHJcbiAgICAgICAgdGhpcy5rZXlib2FyZFNlcnZpY2UuY3JlYXRlKFxyXG4gICAgICAgICAgICB0aGlzLmdyYXBoLCB0aGlzLmNsaXBib2FyZCwgdGhpcy5zZWxlY3Rpb24sIHRoaXMucGFwZXJTY3JvbGxlciwgdGhpcy5jb21tYW5kTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZVRvb2x0aXBzKCk6IGFueSB7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgam9pbnQudWkuVG9vbHRpcCh7XHJcbiAgICAgICAgICAgIHJvb3RUYXJnZXQ6IGRvY3VtZW50LmJvZHksXHJcbiAgICAgICAgICAgIHRhcmdldDogJ1tkYXRhLXRvb2x0aXBdJyxcclxuICAgICAgICAgICAgZGlyZWN0aW9uOiBqb2ludC51aS5Ub29sdGlwLlRvb2x0aXBBcnJvd1Bvc2l0aW9uLkF1dG8sXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIG9sZGVyIHNoYXBlc1xyXG4gICAgZXhwb3J0U3R5bGVzaGVldCA9ICcuc2NhbGFibGUgKiB7IHZlY3Rvci1lZmZlY3Q6IG5vbi1zY2FsaW5nLXN0cm9rZSB9JztcclxuXHJcbiAgICBvcGVuQXNTVkcoKSB7XHJcblxyXG4gICAgICAgIHRoaXMucGFwZXIuaGlkZVRvb2xzKCkudG9TVkcoKHN2Zzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIG5ldyBqb2ludC51aS5MaWdodGJveCh7XHJcbiAgICAgICAgICAgICAgICBpbWFnZTogJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KHN2ZyksXHJcbiAgICAgICAgICAgICAgICBkb3dubG9hZGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogJ1JhcHBpZCdcclxuICAgICAgICAgICAgfSkub3BlbigpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcGVyLnNob3dUb29scygpO1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgICAgcHJlc2VydmVEaW1lbnNpb25zOiB0cnVlLFxyXG4gICAgICAgICAgICBjb252ZXJ0SW1hZ2VzVG9EYXRhVXJpczogdHJ1ZSxcclxuICAgICAgICAgICAgdXNlQ29tcHV0ZWRTdHlsZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdHlsZXNoZWV0OiB0aGlzLmV4cG9ydFN0eWxlc2hlZXRcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuQXNQTkcoKSB7XHJcblxyXG4gICAgICAgIHRoaXMucGFwZXIuaGlkZVRvb2xzKCkudG9QTkcoKGRhdGFVUkw6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBuZXcgam9pbnQudWkuTGlnaHRib3goe1xyXG4gICAgICAgICAgICAgICAgaW1hZ2U6IGRhdGFVUkwsXHJcbiAgICAgICAgICAgICAgICBkb3dubG9hZGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogJ1JhcHBpZCdcclxuICAgICAgICAgICAgfSkub3BlbigpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcGVyLnNob3dUb29scygpO1xyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMTAsXHJcbiAgICAgICAgICAgIHVzZUNvbXB1dGVkU3R5bGVzOiBmYWxzZSxcclxuICAgICAgICAgICAgc3R5bGVzaGVldDogdGhpcy5leHBvcnRTdHlsZXNoZWV0XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZXdoZWVsKGNlbGxWaWV3OiBhbnksIGV2dDogYW55LCBveDogbnVtYmVyLCBveTogbnVtYmVyLCBkZWx0YTogbnVtYmVyKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkU2VydmljZS5rZXlib2FyZC5pc0FjdGl2ZSgnYWx0JywgZXZ0KSkge1xyXG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXBlclNjcm9sbGVyLnpvb20oZGVsdGEgKiAwLjIsIHsgbWluOiAwLjIsIG1heDogNSwgZ3JpZDogMC4yLCBveCwgb3kgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxheW91dERpcmVjdGVkR3JhcGgoKSB7XHJcblxyXG4gICAgICAgIGpvaW50LmxheW91dC5EaXJlY3RlZEdyYXBoLmxheW91dCh0aGlzLmdyYXBoLCB7XHJcbiAgICAgICAgICAgIGdyYXBobGliOiBkYWdyZS5ncmFwaGxpYixcclxuICAgICAgICAgICAgZGFncmU6IGRhZ3JlLFxyXG4gICAgICAgICAgICBzZXRWZXJ0aWNlczogdHJ1ZSxcclxuICAgICAgICAgICAgcmFua0RpcjogJ1RCJyxcclxuICAgICAgICAgICAgbWFyZ2luWDogMTAwLFxyXG4gICAgICAgICAgICBtYXJnaW5ZOiAxMDBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXBlclNjcm9sbGVyLmNlbnRlckNvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXJQbHVnaW4oc2VsZWN0b3I6IHN0cmluZywgcGx1Z2luOiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAgICAgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKS5hcHBlbmRDaGlsZChwbHVnaW4uZWwpO1xyXG4gICAgICAgIHBsdWdpbi5yZW5kZXIoKTtcclxuICAgIH1cclxuICAgIG9uQ2hhbmdlVGVtcGxhdGUoZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuanNvbkNvbnRlbnQpIHtcclxuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LktTX1NFTEVDVEVEX0ZMT1dDSEFSVF9JRF0gPSBldmVudC5mbG93Q2hhcnRJZDtcclxuICAgICAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LktTX1NFTEVDVEVEX0pTT05DT05URU5UXSA9IGV2ZW50Lmpzb25Db250ZW50O1xyXG4gICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoRmxvd0NoYXJ0Q29uc3QuS1NfQ0hBTkdFX1RFTVBMQVRFLCAnKicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkRlbGV0ZVRlbXBsYXRlKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHdpbmRvd1tGbG93Q2hhcnRDb25zdC5LU19JU19TRUxFQ1RFRF9URU1QTEFURV0pIHtcclxuICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKEZsb3dDaGFydENvbnN0LktTX0RFTEVURV9URU1QTEFURSwgJyonKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSwgJyonKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TYXZlQXNUZW1wbGF0ZSgpIHtcclxuICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoRmxvd0NoYXJ0Q29uc3QuS1NfU0FWRV9BU19URU1QTEFURSwgJyonKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2V0VGVtcGxhdGUoKSB7XHJcbiAgICAgICAgaWYgKHdpbmRvd1tGbG93Q2hhcnRDb25zdC5LU19JU19TRUxFQ1RFRF9URU1QTEFURV0pIHtcclxuICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKEZsb3dDaGFydENvbnN0LktTX1JFU0VUX1RFTVBMQVRFLCAnKicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgS2l0Y2hlblNpbmtTZXJ2aWNlO1xyXG4iXX0=
@@ -0,0 +1,80 @@
1
+ /*! Rappid v3.2.0 - HTML5 Diagramming Framework
2
+
3
+ Copyright (c) 2015 client IO
4
+
5
+ 2020-06-12
6
+
7
+
8
+ This Source Code Form is subject to the terms of the Rappid License
9
+ , v. 2.0. If a copy of the Rappid License was not distributed with this
10
+ file, You can obtain one at http://jointjs.com/license/rappid_v2.txt
11
+ or from the Rappid archive as was distributed by client IO. See the LICENSE file.*/
12
+ // import * as joint from '@clientio/rappid';
13
+ import * as _ from 'lodash';
14
+ export class ThemePicker extends joint.ui.Toolbar {
15
+ constructor(options) {
16
+ super({
17
+ className: _.result(joint.ui.Toolbar.prototype, 'className') + ' theme-picker'
18
+ });
19
+ this.mainView = options.mainView;
20
+ }
21
+ init() {
22
+ const options = [
23
+ { value: 'modern', content: 'Modern' },
24
+ { value: 'dark', content: 'Dark' },
25
+ { value: 'material', content: 'Material' }
26
+ ];
27
+ const themes = {
28
+ type: 'select-button-group',
29
+ name: 'theme-picker',
30
+ multi: false,
31
+ selected: _.findIndex(options, { value: this.defaultTheme }),
32
+ options,
33
+ attrs: {
34
+ '.joint-select-button-group': {
35
+ 'data-tooltip': 'Change Theme',
36
+ 'data-tooltip-position': 'bottom'
37
+ }
38
+ }
39
+ };
40
+ this.options.tools = [themes];
41
+ this.on('theme-picker:option:select', this.onThemeSelected, this);
42
+ super.init();
43
+ }
44
+ onThemeSelected(option) {
45
+ joint.setTheme(option.value);
46
+ if (this.mainView) {
47
+ this.adjustAppToTheme(this.mainView, option.value);
48
+ }
49
+ }
50
+ adjustAppToTheme(app, theme) {
51
+ // Make the following changes silently without the command manager notice.
52
+ app.commandManager.stopListening();
53
+ // Links in the dark theme would not be visible on the dark background.
54
+ // Note that this overrides custom color
55
+ const linkColor = (theme === 'dark' ? '#f6f6f6' : '#222138');
56
+ const themedLinks = app.graph.getLinks();
57
+ const defaultLink = app.paper.options.defaultLink;
58
+ if (defaultLink instanceof joint.dia.Link) {
59
+ themedLinks.push(defaultLink);
60
+ }
61
+ themedLinks.forEach(function (link) {
62
+ link.attr({
63
+ '.connection': { 'stroke': linkColor },
64
+ '.marker-target': { 'fill': linkColor },
65
+ '.marker-source': { 'fill': linkColor }
66
+ });
67
+ });
68
+ // Material design has no grid shown.
69
+ if (theme === 'material') {
70
+ app.paper.options.drawGrid = false;
71
+ app.paper.clearGrid();
72
+ }
73
+ else {
74
+ app.paper.options.drawGrid = true;
75
+ app.paper.drawGrid();
76
+ }
77
+ app.commandManager.listen();
78
+ }
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21tb24vZmxvd2NoYXJ0L3RoZW1lcy90aGVtZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7b0ZBVW9GO0FBR3BGLDZDQUE2QztBQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQWU1QixNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTztJQUU3QyxZQUFZLE9BQTJDO1FBRW5ELEtBQUssQ0FBQztZQUNGLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsR0FBRyxlQUFlO1NBQ2pGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBS0QsSUFBSTtRQUVBLE1BQU0sT0FBTyxHQUFHO1lBQ1osRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDdEMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7WUFDbEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7U0FDN0MsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHO1lBQ1gsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUQsT0FBTztZQUNQLEtBQUssRUFBRTtnQkFDSCw0QkFBNEIsRUFBRTtvQkFDMUIsY0FBYyxFQUFFLGNBQWM7b0JBQzlCLHVCQUF1QixFQUFFLFFBQVE7aUJBQ3BDO2FBQ0o7U0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBVztRQUV2QixLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBeUIsRUFBRSxLQUFhO1FBR3JELDBFQUEwRTtRQUMxRSxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRW5DLHVFQUF1RTtRQUN2RSx3Q0FBd0M7UUFDeEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ2xELElBQUksV0FBVyxZQUFZLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDakM7UUFFRCxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBUztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNOLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7Z0JBQ3RDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtnQkFDdkMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO2FBQzFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgscUNBQXFDO1FBQ3JDLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUN0QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDekI7YUFBTTtZQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDbEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN4QjtRQUVELEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohIFJhcHBpZCB2My4yLjAgLSBIVE1MNSBEaWFncmFtbWluZyBGcmFtZXdvcmtcclxuXHJcbkNvcHlyaWdodCAoYykgMjAxNSBjbGllbnQgSU9cclxuXHJcbiAyMDIwLTA2LTEyIFxyXG5cclxuXHJcblRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgUmFwcGlkIExpY2Vuc2VcclxuLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgUmFwcGlkIExpY2Vuc2Ugd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXNcclxuZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9qb2ludGpzLmNvbS9saWNlbnNlL3JhcHBpZF92Mi50eHRcclxuIG9yIGZyb20gdGhlIFJhcHBpZCBhcmNoaXZlIGFzIHdhcyBkaXN0cmlidXRlZCBieSBjbGllbnQgSU8uIFNlZSB0aGUgTElDRU5TRSBmaWxlLiovXHJcblxyXG5cclxuLy8gaW1wb3J0ICogYXMgam9pbnQgZnJvbSAnQGNsaWVudGlvL3JhcHBpZCc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuZGVjbGFyZSB2YXIgam9pbnQ6IGFueVxyXG5uYW1lc3BhY2UgVGhlbWVQaWNrZXIge1xyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XHJcbiAgICAgICAgdG9vbHM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+O1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgTWFpblZpZXcge1xyXG4gICAgICAgIGNvbW1hbmRNYW5hZ2VyOiBhbnk7XHJcbiAgICAgICAgcGFwZXI6IGFueTtcclxuICAgICAgICBncmFwaDogYW55O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGhlbWVQaWNrZXIgZXh0ZW5kcyBqb2ludC51aS5Ub29sYmFyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7IG1haW5WaWV3OiBUaGVtZVBpY2tlci5NYWluVmlldyB9KSB7XHJcblxyXG4gICAgICAgIHN1cGVyKHtcclxuICAgICAgICAgICAgY2xhc3NOYW1lOiBfLnJlc3VsdChqb2ludC51aS5Ub29sYmFyLnByb3RvdHlwZSwgJ2NsYXNzTmFtZScpICsgJyB0aGVtZS1waWNrZXInXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubWFpblZpZXcgPSBvcHRpb25zLm1haW5WaWV3O1xyXG4gICAgfVxyXG5cclxuICAgIG9wdGlvbnM6IFRoZW1lUGlja2VyLk9wdGlvbnM7XHJcbiAgICBtYWluVmlldzogVGhlbWVQaWNrZXIuTWFpblZpZXc7XHJcblxyXG4gICAgaW5pdCgpIHtcclxuXHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ21vZGVybicsIGNvbnRlbnQ6ICdNb2Rlcm4nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkYXJrJywgY29udGVudDogJ0RhcmsnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdtYXRlcmlhbCcsIGNvbnRlbnQ6ICdNYXRlcmlhbCcgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IHRoZW1lcyA9IHtcclxuICAgICAgICAgICAgdHlwZTogJ3NlbGVjdC1idXR0b24tZ3JvdXAnLFxyXG4gICAgICAgICAgICBuYW1lOiAndGhlbWUtcGlja2VyJyxcclxuICAgICAgICAgICAgbXVsdGk6IGZhbHNlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZDogXy5maW5kSW5kZXgob3B0aW9ucywgeyB2YWx1ZTogdGhpcy5kZWZhdWx0VGhlbWUgfSksXHJcbiAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICAnLmpvaW50LXNlbGVjdC1idXR0b24tZ3JvdXAnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtdG9vbHRpcCc6ICdDaGFuZ2UgVGhlbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgICdkYXRhLXRvb2x0aXAtcG9zaXRpb24nOiAnYm90dG9tJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnRvb2xzID0gW3RoZW1lc107XHJcbiAgICAgICAgdGhpcy5vbigndGhlbWUtcGlja2VyOm9wdGlvbjpzZWxlY3QnLCB0aGlzLm9uVGhlbWVTZWxlY3RlZCwgdGhpcyk7XHJcblxyXG4gICAgICAgIHN1cGVyLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRoZW1lU2VsZWN0ZWQob3B0aW9uOiBhbnkpIHtcclxuXHJcbiAgICAgICAgam9pbnQuc2V0VGhlbWUob3B0aW9uLnZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5tYWluVmlldykge1xyXG4gICAgICAgICAgICB0aGlzLmFkanVzdEFwcFRvVGhlbWUodGhpcy5tYWluVmlldywgb3B0aW9uLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWRqdXN0QXBwVG9UaGVtZShhcHA6IFRoZW1lUGlja2VyLk1haW5WaWV3LCB0aGVtZTogc3RyaW5nKSB7XHJcblxyXG5cclxuICAgICAgICAvLyBNYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyBzaWxlbnRseSB3aXRob3V0IHRoZSBjb21tYW5kIG1hbmFnZXIgbm90aWNlLlxyXG4gICAgICAgIGFwcC5jb21tYW5kTWFuYWdlci5zdG9wTGlzdGVuaW5nKCk7XHJcblxyXG4gICAgICAgIC8vIExpbmtzIGluIHRoZSBkYXJrIHRoZW1lIHdvdWxkIG5vdCBiZSB2aXNpYmxlIG9uIHRoZSBkYXJrIGJhY2tncm91bmQuXHJcbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgb3ZlcnJpZGVzIGN1c3RvbSBjb2xvclxyXG4gICAgICAgIGNvbnN0IGxpbmtDb2xvciA9ICh0aGVtZSA9PT0gJ2RhcmsnID8gJyNmNmY2ZjYnIDogJyMyMjIxMzgnKTtcclxuXHJcbiAgICAgICAgY29uc3QgdGhlbWVkTGlua3MgPSBhcHAuZ3JhcGguZ2V0TGlua3MoKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0TGluayA9IGFwcC5wYXBlci5vcHRpb25zLmRlZmF1bHRMaW5rO1xyXG4gICAgICAgIGlmIChkZWZhdWx0TGluayBpbnN0YW5jZW9mIGpvaW50LmRpYS5MaW5rKSB7XHJcbiAgICAgICAgICAgIHRoZW1lZExpbmtzLnB1c2goZGVmYXVsdExpbmspO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhlbWVkTGlua3MuZm9yRWFjaChmdW5jdGlvbiAobGluazogYW55KSB7XHJcbiAgICAgICAgICAgIGxpbmsuYXR0cih7XHJcbiAgICAgICAgICAgICAgICAnLmNvbm5lY3Rpb24nOiB7ICdzdHJva2UnOiBsaW5rQ29sb3IgfSxcclxuICAgICAgICAgICAgICAgICcubWFya2VyLXRhcmdldCc6IHsgJ2ZpbGwnOiBsaW5rQ29sb3IgfSxcclxuICAgICAgICAgICAgICAgICcubWFya2VyLXNvdXJjZSc6IHsgJ2ZpbGwnOiBsaW5rQ29sb3IgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gTWF0ZXJpYWwgZGVzaWduIGhhcyBubyBncmlkIHNob3duLlxyXG4gICAgICAgIGlmICh0aGVtZSA9PT0gJ21hdGVyaWFsJykge1xyXG4gICAgICAgICAgICBhcHAucGFwZXIub3B0aW9ucy5kcmF3R3JpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBhcHAucGFwZXIuY2xlYXJHcmlkKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYXBwLnBhcGVyLm9wdGlvbnMuZHJhd0dyaWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBhcHAucGFwZXIuZHJhd0dyaWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFwcC5jb21tYW5kTWFuYWdlci5saXN0ZW4oKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export class QMSCKEditorSaveAsTemplate {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHlCQUF5QjtDQUdyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbiB9IGZyb20gXCIuL3Ftcy1ja2VkaXRvci1icG1uLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JTYXZlQXNUZW1wbGF0ZSB7XHJcbiAgdGVtcGxhdGVUeXBlPzogc3RyaW5nO1xyXG4gIGJwbW4/OiBRTVNDS0VkaXRvckJwbW47XHJcbn1cclxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLHlCQUF5QjtDQUlyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbiB9IGZyb20gXCIuL3Ftcy1ja2VkaXRvci1icG1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRmxvd2NoYXJ0IH0gZnJvbSBcIi4vcW1zLWNrZWRpdG9yLWZsb3djaGFydC5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yU2F2ZUFzVGVtcGxhdGUge1xyXG4gIHRlbXBsYXRlVHlwZT86IHN0cmluZztcclxuICBicG1uPzogUU1TQ0tFZGl0b3JCcG1uO1xyXG4gIGZsb3djaGFydD86IFFNU0NLRWRpdG9yRmxvd2NoYXJ0O1xyXG59XHJcbiJdfQ==
@@ -33,7 +33,7 @@ export class QMSCKEditorConfirmComponent extends QMSCKEditorBaseComponent {
33
33
  QMSCKEditorConfirmComponent.decorators = [
34
34
  { type: Component, args: [{
35
35
  selector: 'app-confirm-popup',
36
- template: "<div\r\n id=\"qmsckeditor-confirm\"\r\n class=\"qmsckeditor qmsckeditor__confirm__container\"\r\n>\r\n <h2>{{ data.title }}</h2>\r\n <div class=\"row ml2 mr-0\" [innerHTML]=\"data.content\"></div>\r\n <div *ngIf=\"!data.isMessage\" class=\"row ml-0 mr-0 mt20\">\r\n <div *ngIf=\"data.isAdvance\" class=\"mt-4\">\r\n <mat-checkbox [(ngModel)]=\"isNotShowAgain\">{{\r\n data.checkText\r\n }}</mat-checkbox>\r\n </div>\r\n <div class=\"qmsckeditor confirm__button__groups ml-auto mt-auto\">\r\n <button mat-button class=\"cancel\" (click)=\"onCancelClick()\">\r\n {{ LANG.QMSCKEDITOR.CANCEL }}\r\n </button>\r\n <button\r\n *ngIf=\"!data.isAdvance\"\r\n mat-button\r\n class=\"confirm ml3\"\r\n (click)=\"onConfirmClick()\"\r\n >\r\n {{ LANG.QMSCKEDITOR.CONFIRM }}\r\n </button>\r\n <button\r\n *ngIf=\"data.isAdvance\"\r\n mat-button\r\n class=\"confirm ml3\"\r\n (click)=\"onAdvanceConfirmClick()\"\r\n >\r\n {{ LANG.QMSCKEDITOR.CONFIRM }}\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"data.isMessage\" class=\"row ml-0 mr-0 mt20\">\r\n <div class=\"ml-auto mt-auto\">\r\n <button mat-button class=\"save ml-3\" (click)=\"onConfirmClick()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n",
36
+ template: "<div\r\n id=\"qmsckeditor-confirm\"\r\n class=\"qmsckeditor qmsckeditor__confirm__container\"\r\n>\r\n <h2>{{ data.title }}</h2>\r\n <div class=\"row ml2 mr-0 me-0\" [innerHTML]=\"data.content\"></div>\r\n <div *ngIf=\"!data.isMessage\" class=\"row ml-0 mr-0 mt20 ms-0 me-0\">\r\n <div *ngIf=\"data.isAdvance\" class=\"mt-4\">\r\n <mat-checkbox [(ngModel)]=\"isNotShowAgain\">{{\r\n data.checkText\r\n }}</mat-checkbox>\r\n </div>\r\n <div class=\"qmsckeditor confirm__button__groups ml-auto mt-auto\">\r\n <button mat-button class=\"cancel\" (click)=\"onCancelClick()\">\r\n {{ LANG.QMSCKEDITOR.CANCEL }}\r\n </button>\r\n <button\r\n *ngIf=\"!data.isAdvance\"\r\n mat-button\r\n class=\"confirm ml3\"\r\n (click)=\"onConfirmClick()\"\r\n >\r\n {{ LANG.QMSCKEDITOR.CONFIRM }}\r\n </button>\r\n <button\r\n *ngIf=\"data.isAdvance\"\r\n mat-button\r\n class=\"confirm ml3\"\r\n (click)=\"onAdvanceConfirmClick()\"\r\n >\r\n {{ LANG.QMSCKEDITOR.CONFIRM }}\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"data.isMessage\" class=\"row ml-0 mr-0 mt20 ms-0 me-0\">\r\n <div class=\"ml-auto mt-auto\">\r\n <button mat-button class=\"save ml-3 ms-3\" (click)=\"onConfirmClick()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n",
37
37
  styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}"]
38
38
  },] }
39
39
  ];
@@ -42,4 +42,4 @@ QMSCKEditorConfirmComponent.ctorParameters = () => [
42
42
  { type: MatDialogRef },
43
43
  { type: QMSCKEditorDialogData, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
44
44
  ];
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBTy9FLE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUFJdkUsWUFDVSxTQUFrQyxFQUNuQyxTQUFvRCxFQUMzQixJQUEyQjtRQUUzRCxLQUFLLEVBQUUsQ0FBQztRQUpBLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQTJDO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQXVCO1FBTDdELG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBUXZCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RGLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0M7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxHQUFHLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7O1lBcENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qix3NENBQW9EOzthQUVyRDs7O1lBVFEsdUJBQXVCO1lBRHZCLFlBQVk7WUFJWixxQkFBcUIsdUJBY3pCLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29uZmlybS1wb3B1cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1jb25maXJtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIExBTkc6IGFueTtcclxuICBpc05vdFNob3dBZ2FpbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGFcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Db25maXJtQ2xpY2soKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uQWR2YW5jZUNvbmZpcm1DbGljaygpIHtcclxuICAgIGNvbnN0IG9iaiA9IHsgaXNDb25maXJtZWQ6IHRydWUsIGlzTm90U2hvd0FnYWluOiB0aGlzLmlzTm90U2hvd0FnYWluIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShvYmopO1xyXG4gIH1cclxufVxyXG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBTy9FLE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUFJdkUsWUFDVSxTQUFrQyxFQUNuQyxTQUFvRCxFQUMzQixJQUEyQjtRQUUzRCxLQUFLLEVBQUUsQ0FBQztRQUpBLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQTJDO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQXVCO1FBTDdELG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBUXZCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RGLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0M7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxHQUFHLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7O1lBcENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixzNkNBQW9EOzthQUVyRDs7O1lBVFEsdUJBQXVCO1lBRHZCLFlBQVk7WUFJWixxQkFBcUIsdUJBY3pCLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29uZmlybS1wb3B1cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1jb25maXJtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIExBTkc6IGFueTtcclxuICBpc05vdFNob3dBZ2FpbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGFcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Db25maXJtQ2xpY2soKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIG9uQWR2YW5jZUNvbmZpcm1DbGljaygpIHtcclxuICAgIGNvbnN0IG9iaiA9IHsgaXNDb25maXJtZWQ6IHRydWUsIGlzTm90U2hvd0FnYWluOiB0aGlzLmlzTm90U2hvd0FnYWluIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShvYmopO1xyXG4gIH1cclxufVxyXG4iXX0=