myrta-ui 1.1.78 → 1.1.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/form/editor/editor.component.mjs +69 -1
- package/fesm2015/myrta-ui.mjs +71 -1
- package/fesm2015/myrta-ui.mjs.map +1 -1
- package/fesm2020/myrta-ui.mjs +68 -0
- package/fesm2020/myrta-ui.mjs.map +1 -1
- package/lib/components/form/editor/editor.component.d.ts +4 -0
- package/package.json +3 -1
|
@@ -54,8 +54,12 @@ export class EditorComponent {
|
|
|
54
54
|
beautifyHTML: true,
|
|
55
55
|
addNewLine: true,
|
|
56
56
|
createAttributes: {},
|
|
57
|
+
disablePlugins: ['paste'],
|
|
57
58
|
events: {
|
|
58
59
|
getIcon: changeIconsFunction,
|
|
60
|
+
paste: (event) => {
|
|
61
|
+
this.handlePaste(event);
|
|
62
|
+
},
|
|
59
63
|
},
|
|
60
64
|
// uploader: {
|
|
61
65
|
// insertImageAsBase64URI: true
|
|
@@ -217,6 +221,70 @@ export class EditorComponent {
|
|
|
217
221
|
this.updateValue(this.editorElementRef.editor.value);
|
|
218
222
|
}
|
|
219
223
|
}
|
|
224
|
+
handlePaste(event) {
|
|
225
|
+
if (!event.clipboardData) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const { clipboardData } = event;
|
|
229
|
+
const htmlData = clipboardData.getData('text/html');
|
|
230
|
+
const hasHtmlImage = htmlData?.includes('<img');
|
|
231
|
+
const hasImage = Array.from(clipboardData.items).some(item => item.type.startsWith('image/'));
|
|
232
|
+
if (!hasImage && !hasHtmlImage) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
event.preventDefault();
|
|
236
|
+
event.stopPropagation();
|
|
237
|
+
const { editor } = this.editorElementRef;
|
|
238
|
+
const plainText = clipboardData.getData('text/plain');
|
|
239
|
+
if (htmlData) {
|
|
240
|
+
const tempDiv = document.createElement('div');
|
|
241
|
+
tempDiv.innerHTML = htmlData;
|
|
242
|
+
this.removeImageNodes(tempDiv);
|
|
243
|
+
if (this.hasContent(tempDiv)) {
|
|
244
|
+
this.insertNodes(editor, tempDiv);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (plainText) {
|
|
249
|
+
editor.s.insertHTML(plainText);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
removeImageNodes(container) {
|
|
253
|
+
container.querySelectorAll('img').forEach(img => img.remove());
|
|
254
|
+
const comments = [];
|
|
255
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_COMMENT, null);
|
|
256
|
+
let node;
|
|
257
|
+
while (node = walker.nextNode()) {
|
|
258
|
+
comments.push(node);
|
|
259
|
+
}
|
|
260
|
+
comments.forEach(comment => comment.parentNode?.removeChild(comment));
|
|
261
|
+
const emptyElements = container.querySelectorAll('p, div, span, br');
|
|
262
|
+
emptyElements.forEach(el => {
|
|
263
|
+
if (el.tagName === 'BR' && !el.nextSibling && !el.previousSibling) {
|
|
264
|
+
el.remove();
|
|
265
|
+
}
|
|
266
|
+
else if (!el.textContent?.trim() && el.children.length === 0) {
|
|
267
|
+
el.remove();
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
container.querySelectorAll('p, div').forEach(el => {
|
|
271
|
+
if (el.children.length === 1 && el.innerHTML.trim() === '<br>') {
|
|
272
|
+
el.remove();
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
hasContent(container) {
|
|
277
|
+
return !!container.textContent?.trim() || container.children.length > 0;
|
|
278
|
+
}
|
|
279
|
+
insertNodes(editor, container) {
|
|
280
|
+
const nodes = Array.from(container.childNodes).map(node => node.cloneNode(true));
|
|
281
|
+
nodes.forEach(node => {
|
|
282
|
+
if (node.nodeType === Node.ELEMENT_NODE ||
|
|
283
|
+
(node.nodeType === Node.TEXT_NODE && node.textContent?.trim())) {
|
|
284
|
+
editor.s.insertNode(node);
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}
|
|
220
288
|
}
|
|
221
289
|
EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
222
290
|
EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EditorComponent, selector: "mrx-editor", inputs: { fields: "fields", toolbar: "toolbar", maxLength: "maxLength", minHeight: "minHeight", customClasses: "customClasses", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", iframe: "iframe", config: "config", defaultInlineStyle: "defaultInlineStyle", defaultActionOnPaste: "defaultActionOnPaste", askBeforePasteHTML: "askBeforePasteHTML", editHTMLDocumentMode: "editHTMLDocumentMode", askBeforePasteFromWord: "askBeforePasteFromWord", defaultMode: "defaultMode", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid" }, outputs: { changed: "changed", modelChange: "modelChange", blurred: "blurred" }, providers: [
|
|
@@ -283,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
283
351
|
}], blurred: [{
|
|
284
352
|
type: Output
|
|
285
353
|
}] } });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQWU1RSxNQUFNLE9BQU8sZUFBZTtJQW9GMUIsWUFBb0IsZUFBa0M7UUFBbEMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBbkY5QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQW1CLEtBQUssQ0FBQztRQUVsQyxrQkFBYSxHQUFRO1lBQzFC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M0IsU0FBUzsrQkFDRSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3dHQXVEZSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFHVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFeUIsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFWixPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2hhbmdlSWNvbnNGdW5jdGlvbiB9IGZyb20gJy4vbW9kdWxlcy9jaGFuZ2UtaWNvbi1tb2R1bGUnO1xuaW1wb3J0IHsgZGVmYXVsdFRvb2xiYXIgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBwb3B1cFRvb2xiYXJzIH0gZnJvbSAnLi9jb25maWcvcG9wdXBzLXRvb2xiYXInO1xuaW1wb3J0IHsgVG9vbGJhckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3Rvb2xiYXIubW9kZWwnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21yeC1hdXRvc2F2ZS9tcngtYXV0b3NhdmUuc2VydmljZSc7XG5pbXBvcnQgeyBkZWZhdWx0SW5saW5lU3R5bGVDb25zdGFudCB9IGZyb20gJy4vY29uZmlnL2RlZmF1bHQtaW5saW5lLXN0eWxlJztcbmltcG9ydCB7IElucHV0RWRpdG9yTW9kZUVudW0sIElucHV0RWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL2VkaXRvci5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXJ4LWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50Lmxlc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2lzSW5pdCA9IGZhbHNlO1xuICBwdWJsaWMgdmFsdWUgPSAnJztcbiAgcHVibGljIHZhbHVlTGVuZ3RoID0gMDtcbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcblxuICBwdWJsaWMgZGVmYXVsdENvbmZpZzogYW55ID0ge1xuICAgIC4uLmRlZmF1bHRUb29sYmFyLFxuICAgIHBvcHVwOiBwb3B1cFRvb2xiYXJzLFxuICAgIGRlZmF1bHRNb2RlOiBJbnB1dEVkaXRvck1vZGVFbnVtLk1PREVfV1lTSVdZRyxcbiAgICBsYW5ndWFnZTogJ3J1JyxcbiAgICBzaG93Q2hhcnNDb3VudGVyOiBmYWxzZSxcbiAgICBzaG93V29yZHNDb3VudGVyOiBmYWxzZSxcbiAgICBsaW1pdEhUTUw6IHRydWUsXG4gICAgc2hvd1hQYXRoSW5TdGF0dXNiYXI6IGZhbHNlLFxuICAgIGxpbms6IHtcbiAgICAgIG5vRm9sbG93Q2hlY2tib3g6IGZhbHNlXG4gICAgfSxcbiAgICBtaW5IZWlnaHQ6IDExMCxcbiAgICBpZnJhbWU6IGZhbHNlLFxuICAgIGltYWdlRGVmYXVsdFdpZHRoOiAyMDAsXG4gICAgZWRpdEhUTUxEb2N1bWVudE1vZGU6IGZhbHNlLFxuICAgIGNsZWFuSFRNTDoge1xuICAgICAgZmlsbEVtcHR5UGFyYWdyYXBoOiB0cnVlXG4gICAgfSxcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgdG9vbGJhckFkYXB0aXZlOiBmYWxzZSxcbiAgICB0b29sYmFySW5saW5lOiB0cnVlLFxuICAgIHRvb2xiYXJJbmxpbmVGb3JTZWxlY3Rpb246IGZhbHNlLFxuICAgIHRvb2xiYXJJbmxpbmVEaXNhYmxlRm9yOiBbXSxcbiAgICB0b29sYmFySW5saW5lRGlzYWJsZWRCdXR0b25zOiBbJ3NvdXJjZSddLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICByZWFkb25seTogZmFsc2UsXG4gICAgYXNrQmVmb3JlUGFzdGVIVE1MOiBmYWxzZSxcbiAgICBkZWZhdWx0QWN0aW9uT25QYXN0ZTogJ2luc2VydF9vbmx5X3RleHQnLFxuICAgIGFza0JlZm9yZVBhc3RlRnJvbVdvcmQ6IGZhbHNlLFxuICAgIGhpZGVQb3dlcmVkQnlKb2RpdDogdHJ1ZSxcbiAgICBiZWF1dGlmeUhUTUw6IHRydWUsXG4gICAgYWRkTmV3TGluZTogdHJ1ZSxcbiAgICBjcmVhdGVBdHRyaWJ1dGVzOiB7fSxcbiAgICBldmVudHM6IHtcbiAgICAgIGdldEljb246IGNoYW5nZUljb25zRnVuY3Rpb24sXG4gICAgfSxcbiAgICAvLyB1cGxvYWRlcjoge1xuICAgIC8vICAgaW5zZXJ0SW1hZ2VBc0Jhc2U2NFVSSTogdHJ1ZVxuICAgIC8vIH0sXG4gICAgLy8gbGltaXRDaGFyczogMTAsXG4gICAgLy8gbGltaXRIVE1MOiAxNzAsXG4gICAgLy8gY29sb3JzOiBbJyNmZjAwMDAnLCAnIzAwZmYwMCcsICcjMDAwMGZmJywgJyMwMDAwZmYnLCAnIzAwMDBmZicsICcjMDAwMGZmJywgJy8nLCAnIzAwMDBmZiddLFxuICB9O1xuXG4gIC8vIFNBVkUgU1RBVEVcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XG5cbiAgQElucHV0KCkgcHVibGljIHRvb2xiYXIhOiBUb29sYmFyQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgbWF4TGVuZ3RoID0gMDtcbiAgQElucHV0KCkgcHVibGljIG1pbkhlaWdodCA9IDExMDtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlmcmFtZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IGFueSA9IHRoaXMuZGVmYXVsdENvbmZpZztcblxuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdElubGluZVN0eWxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0QWN0aW9uT25QYXN0ZSA9ICdpbnNlcnRfb25seV90ZXh0JztcbiAgQElucHV0KCkgcHVibGljIGFza0JlZm9yZVBhc3RlSFRNTCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgZWRpdEhUTUxEb2N1bWVudE1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFza0JlZm9yZVBhc3RlRnJvbVdvcmQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRNb2RlOiBJbnB1dEVkaXRvck1vZGVFbnVtID0gSW5wdXRFZGl0b3JNb2RlRW51bS5NT0RFX1dZU0lXWUc7XG5cbiAgLy8gVkFMSURBVEVcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdlZGl0b3JFbGVtZW50UmVmJykgZWRpdG9yRWxlbWVudFJlZiE6IGFueTtcblxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dEVkaXRvclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBibHVycmVkOiBFdmVudEVtaXR0ZXI8SW5wdXRFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0RWRpdG9yVmFsdWVXaXRoSWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Rvb2xiYXInXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uY2hhbmdlc1sndG9vbGJhciddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydtYXhMZW5ndGgnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgbGltaXRDaGFyczogY2hhbmdlc1snbWF4TGVuZ3RoJ10uY3VycmVudFZhbHVlfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3BsYWNlaG9sZGVyJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIHBsYWNlaG9sZGVyOiBjaGFuZ2VzWydwbGFjZWhvbGRlciddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBkaXNhYmxlZDogY2hhbmdlc1snZGlzYWJsZWQnXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sncmVhZG9ubHknXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgcmVhZG9ubHk6IGNoYW5nZXNbJ3JlYWRvbmx5J10uY3VycmVudFZhbHVlfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2lmcmFtZSddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBpZnJhbWU6IGNoYW5nZXNbJ2lmcmFtZSddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0SW5saW5lU3R5bGUnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmRlZmF1bHRDb25maWcsXG4gICAgICAgIGNyZWF0ZUF0dHJpYnV0ZXM6IHsuLi50aGlzLmRlZmF1bHRDb25maWcuY3JlYXRlQXR0cmlidXRlcywgLi4uZGVmYXVsdElubGluZVN0eWxlQ29uc3RhbnR9XG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZWRpdEhUTUxEb2N1bWVudE1vZGUnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmRlZmF1bHRDb25maWcsXG4gICAgICAgIGVkaXRIVE1MRG9jdW1lbnRNb2RlOiBjaGFuZ2VzWydlZGl0SFRNTERvY3VtZW50TW9kZSddLmN1cnJlbnRWYWx1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2Fza0JlZm9yZVBhc3RlSFRNTCddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBhc2tCZWZvcmVQYXN0ZUhUTUw6IGNoYW5nZXNbJ2Fza0JlZm9yZVBhc3RlSFRNTCddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgICAgICBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkJ10uY3VycmVudFZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdE1vZGUnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgZGVmYXVsdE1vZGU6IGNoYW5nZXNbJ2RlZmF1bHRNb2RlJ10uY3VycmVudFZhbHVlfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRBY3Rpb25PblBhc3RlJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgICAgICBkZWZhdWx0QWN0aW9uT25QYXN0ZTogY2hhbmdlc1snZGVmYXVsdEFjdGlvbk9uUGFzdGUnXS5jdXJyZW50VmFsdWVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydtaW5IZWlnaHQnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgbWluSGVpZ2h0OiBjaGFuZ2VzWydtaW5IZWlnaHQnXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2lzSW52YWxpZFZhbHVlTGVuZ3RoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA8IHRoaXMudmFsdWVMZW5ndGggJiYgdGhpcy5tYXhMZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCBnZXRJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0ludmFsaWRWYWx1ZUxlbmd0aCB8fCB0aGlzLmludmFsaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdldEludmFsaWRNZXNzYWdlKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkVmFsdWVMZW5ndGggPyAn0J/RgNC10LLRi9GI0LXQvdC+INC00L7Qv9GD0YHRgtC40LzQvtC1INC30L3QsNGH0LXQvdC40LUg0YHQuNC80LLQvtC70L7QsicgOiB0aGlzLmludmFsaWRNZXNzYWdlO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgPyAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2NsZWFuZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVkaXRvckVsZW1lbnRSZWYuZWRpdG9yLnZhbHVlLnJlcGxhY2UoLyAmbmJzcDsvZywgJyZuYnNwOycpLnJlcGxhY2UoLyZuYnNwOyAvZywgJyZuYnNwOycpO1xuICB9XG5cbiAgcHVibGljIGluc2VydFBvc2l0aW9uVGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmVkaXRvckVsZW1lbnRSZWYuZWRpdG9yLnMuaW5zZXJ0SFRNTCh0ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VGb2N1c2VkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgfTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XG4gIH07XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5fc2FuaXRpemVWYWx1ZShvdXRzaWRlVmFsdWUpO1xuICAgIGlmIChvdXRzaWRlVmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pc0luaXQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2FuaXRpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5yZXBsYWNlKC88c2NyaXB0XFxiW148XSooPzooPyE8XFwvc2NyaXB0Pik8W148XSopKjxcXC9zY3JpcHQ+L2dpLCAnJykgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUNoYXJ0c0NvdW50KCkge1xuICAgIHRoaXMudmFsdWVMZW5ndGggPSB0aGlzLl9jbGVhbmVkVmFsdWUubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMuX2NhbGN1bGF0ZUNoYXJ0c0NvdW50KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRoaXMuX2NsZWFuZWRWYWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBpbnNpZGVWYWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGluc2lkZVZhbHVlKTtcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGluc2lkZVZhbHVlLCBpZDogdGhpcy51dWlkfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKGluc2lkZVZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQmx1cih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY2hhbmdlRm9jdXNlZCh2YWx1ZSk7XG4gICAgdGhpcy5ibHVycmVkLmVtaXQoe3ZhbHVlOiB0aGlzLnZhbHVlLCBpZDogdGhpcy51dWlkfSk7XG5cbiAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgdGhpcy5fY2xlYW5lZFZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnRSZWYuZWRpdG9yLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5lZGl0b3JFbGVtZW50UmVmLmVkaXRvci52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibXJ4LWVkaXRvclwiXG4gIFtjbGFzcy5tcngtaW5wdXQtZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImdldEludmFsaWRcIlxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXG4+XG4gIDxqb2RpdC1lZGl0b3JcbiAgICAjZWRpdG9yRWxlbWVudFJlZlxuICAgIFtjb25maWddPVwiZGVmYXVsdENvbmZpZ1wiXG4gICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxuICAgIChvbkZvY3VzKT1cImNoYW5nZUZvY3VzZWQodHJ1ZSlcIlxuICAgIChvbkJsdXIpPVwib25CbHVyKGZhbHNlKVwiXG4gID48L2pvZGl0LWVkaXRvcj5cblxuICA8bXJ4LWVycm9yLW1lc3NhZ2VcbiAgICAqbmdJZj1cImdldEludmFsaWQgJiYgZ2V0SW52YWxpZE1lc3NhZ2VcIlxuICAgIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRJbnZhbGlkTWVzc2FnZVwiXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxuXG4gIDxtcngtc2F2ZS1zdGF0ZSB0eXBlPVwiZWRpdG9yXCIgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XG5cbiAgPG1yeC1jaGFycy1sZWZ0XG4gICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgbWF4TGVuZ3RoXCJcbiAgICBbdmFsdWVMZW5ndGhdPVwidmFsdWVMZW5ndGhcIlxuICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgPjwvbXJ4LWNoYXJzLWxlZnQ+XG48L2Rpdj5cbiJdfQ==
|
|
354
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQWU1RSxNQUFNLE9BQU8sZUFBZTtJQXdGMUIsWUFBb0IsZUFBa0M7UUFBbEMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBdkY5QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQW1CLEtBQUssQ0FBQztRQUVsQyxrQkFBYSxHQUFRO1lBQzFC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a0JBYjNCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjt3R0EyRGUsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1Usc0JBQXNCO3NCQUFyQyxLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRXlCLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRVosT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNoYW5nZUljb25zRnVuY3Rpb24gfSBmcm9tICcuL21vZHVsZXMvY2hhbmdlLWljb24tbW9kdWxlJztcbmltcG9ydCB7IGRlZmF1bHRUb29sYmFyIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgcG9wdXBUb29sYmFycyB9IGZyb20gJy4vY29uZmlnL3BvcHVwcy10b29sYmFyJztcbmltcG9ydCB7IFRvb2xiYXJDb25maWcgfSBmcm9tICcuL21vZGVscy90b29sYmFyLm1vZGVsJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tcngtYXV0b3NhdmUvbXJ4LWF1dG9zYXZlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVmYXVsdElubGluZVN0eWxlQ29uc3RhbnQgfSBmcm9tICcuL2NvbmZpZy9kZWZhdWx0LWlubGluZS1zdHlsZSc7XG5pbXBvcnQgeyBJbnB1dEVkaXRvck1vZGVFbnVtLCBJbnB1dEVkaXRvclZhbHVlV2l0aElkIH0gZnJvbSAnLi9lZGl0b3IuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21yeC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5sZXNzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVkaXRvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9pc0luaXQgPSBmYWxzZTtcbiAgcHVibGljIHZhbHVlID0gJyc7XG4gIHB1YmxpYyB2YWx1ZUxlbmd0aCA9IDA7XG4gIHB1YmxpYyBpc0ZvY3VzZWQ6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG5cbiAgcHVibGljIGRlZmF1bHRDb25maWc6IGFueSA9IHtcbiAgICAuLi5kZWZhdWx0VG9vbGJhcixcbiAgICBwb3B1cDogcG9wdXBUb29sYmFycyxcbiAgICBkZWZhdWx0TW9kZTogSW5wdXRFZGl0b3JNb2RlRW51bS5NT0RFX1dZU0lXWUcsXG4gICAgbGFuZ3VhZ2U6ICdydScsXG4gICAgc2hvd0NoYXJzQ291bnRlcjogZmFsc2UsXG4gICAgc2hvd1dvcmRzQ291bnRlcjogZmFsc2UsXG4gICAgbGltaXRIVE1MOiB0cnVlLFxuICAgIHNob3dYUGF0aEluU3RhdHVzYmFyOiBmYWxzZSxcbiAgICBsaW5rOiB7XG4gICAgICBub0ZvbGxvd0NoZWNrYm94OiBmYWxzZVxuICAgIH0sXG4gICAgbWluSGVpZ2h0OiAxMTAsXG4gICAgaWZyYW1lOiBmYWxzZSxcbiAgICBpbWFnZURlZmF1bHRXaWR0aDogMjAwLFxuICAgIGVkaXRIVE1MRG9jdW1lbnRNb2RlOiBmYWxzZSxcbiAgICBjbGVhbkhUTUw6IHtcbiAgICAgIGZpbGxFbXB0eVBhcmFncmFwaDogdHJ1ZVxuICAgIH0sXG4gICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgIHRvb2xiYXJBZGFwdGl2ZTogZmFsc2UsXG4gICAgdG9vbGJhcklubGluZTogdHJ1ZSxcbiAgICB0b29sYmFySW5saW5lRm9yU2VsZWN0aW9uOiBmYWxzZSxcbiAgICB0b29sYmFySW5saW5lRGlzYWJsZUZvcjogW10sXG4gICAgdG9vbGJhcklubGluZURpc2FibGVkQnV0dG9uczogWydzb3VyY2UnXSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgIGFza0JlZm9yZVBhc3RlSFRNTDogZmFsc2UsXG4gICAgZGVmYXVsdEFjdGlvbk9uUGFzdGU6ICdpbnNlcnRfb25seV90ZXh0JyxcbiAgICBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkOiBmYWxzZSxcbiAgICBoaWRlUG93ZXJlZEJ5Sm9kaXQ6IHRydWUsXG4gICAgYmVhdXRpZnlIVE1MOiB0cnVlLFxuICAgIGFkZE5ld0xpbmU6IHRydWUsXG4gICAgY3JlYXRlQXR0cmlidXRlczoge30sXG4gICAgZGlzYWJsZVBsdWdpbnM6IFsgJ3Bhc3RlJ10sXG4gICAgZXZlbnRzOiB7XG4gICAgICBnZXRJY29uOiBjaGFuZ2VJY29uc0Z1bmN0aW9uLFxuICAgICAgcGFzdGU6IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVQYXN0ZShldmVudCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgLy8gdXBsb2FkZXI6IHtcbiAgICAvLyAgIGluc2VydEltYWdlQXNCYXNlNjRVUkk6IHRydWVcbiAgICAvLyB9LFxuICAgIC8vIGxpbWl0Q2hhcnM6IDEwLFxuICAgIC8vIGxpbWl0SFRNTDogMTcwLFxuICAgIC8vIGNvbG9yczogWycjZmYwMDAwJywgJyMwMGZmMDAnLCAnIzAwMDBmZicsICcjMDAwMGZmJywgJyMwMDAwZmYnLCAnIzAwMDBmZicsICcvJywgJyMwMDAwZmYnXSxcbiAgfTtcblxuICAvLyBTQVZFIFNUQVRFXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKTtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sYmFyITogVG9vbGJhckNvbmZpZztcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aCA9IDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5IZWlnaHQgPSAxMTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZnJhbWUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBhbnkgPSB0aGlzLmRlZmF1bHRDb25maWc7XG5cbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRJbmxpbmVTdHlsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgZGVmYXVsdEFjdGlvbk9uUGFzdGUgPSAnaW5zZXJ0X29ubHlfdGV4dCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhc2tCZWZvcmVQYXN0ZUhUTUwgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGVkaXRIVE1MRG9jdW1lbnRNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhc2tCZWZvcmVQYXN0ZUZyb21Xb3JkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0TW9kZTogSW5wdXRFZGl0b3JNb2RlRW51bSA9IElucHV0RWRpdG9yTW9kZUVudW0uTU9ERV9XWVNJV1lHO1xuXG4gIC8vIFZBTElEQVRFXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnZWRpdG9yRWxlbWVudFJlZicpIGVkaXRvckVsZW1lbnRSZWYhOiBhbnk7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXRFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElucHV0RWRpdG9yVmFsdWVXaXRoSWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYmx1cnJlZDogRXZlbnRFbWl0dGVyPElucHV0RWRpdG9yVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dEVkaXRvclZhbHVlV2l0aElkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0b29sYmFyJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNoYW5nZXNbJ3Rvb2xiYXInXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snbWF4TGVuZ3RoJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIGxpbWl0Q2hhcnM6IGNoYW5nZXNbJ21heExlbmd0aCddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydwbGFjZWhvbGRlciddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCBwbGFjZWhvbGRlcjogY2hhbmdlc1sncGxhY2Vob2xkZXInXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgZGlzYWJsZWQ6IGNoYW5nZXNbJ2Rpc2FibGVkJ10uY3VycmVudFZhbHVlfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3JlYWRvbmx5J10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIHJlYWRvbmx5OiBjaGFuZ2VzWydyZWFkb25seSddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpZnJhbWUnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgaWZyYW1lOiBjaGFuZ2VzWydpZnJhbWUnXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdElubGluZVN0eWxlJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgICAgICBjcmVhdGVBdHRyaWJ1dGVzOiB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLmNyZWF0ZUF0dHJpYnV0ZXMsIC4uLmRlZmF1bHRJbmxpbmVTdHlsZUNvbnN0YW50fVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2VkaXRIVE1MRG9jdW1lbnRNb2RlJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgICAgICBlZGl0SFRNTERvY3VtZW50TW9kZTogY2hhbmdlc1snZWRpdEhUTUxEb2N1bWVudE1vZGUnXS5jdXJyZW50VmFsdWVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gey4uLnRoaXMuZGVmYXVsdENvbmZpZywgYXNrQmVmb3JlUGFzdGVIVE1MOiBjaGFuZ2VzWydhc2tCZWZvcmVQYXN0ZUhUTUwnXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snYXNrQmVmb3JlUGFzdGVGcm9tV29yZCddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcbiAgICAgICAgYXNrQmVmb3JlUGFzdGVGcm9tV29yZDogY2hhbmdlc1snYXNrQmVmb3JlUGFzdGVGcm9tV29yZCddLmN1cnJlbnRWYWx1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRNb2RlJ10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIGRlZmF1bHRNb2RlOiBjaGFuZ2VzWydkZWZhdWx0TW9kZSddLmN1cnJlbnRWYWx1ZX07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0QWN0aW9uT25QYXN0ZSddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdENvbmZpZyxcbiAgICAgICAgZGVmYXVsdEFjdGlvbk9uUGFzdGU6IGNoYW5nZXNbJ2RlZmF1bHRBY3Rpb25PblBhc3RlJ10uY3VycmVudFZhbHVlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snbWluSGVpZ2h0J10pIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsuLi50aGlzLmRlZmF1bHRDb25maWcsIG1pbkhlaWdodDogY2hhbmdlc1snbWluSGVpZ2h0J10uY3VycmVudFZhbHVlfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWV9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9pc0ludmFsaWRWYWx1ZUxlbmd0aCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXhMZW5ndGggPCB0aGlzLnZhbHVlTGVuZ3RoICYmIHRoaXMubWF4TGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ2V0SW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkVmFsdWVMZW5ndGggfHwgdGhpcy5pbnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGdldCBnZXRJbnZhbGlkTWVzc2FnZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSW52YWxpZFZhbHVlTGVuZ3RoID8gJ9Cf0YDQtdCy0YvRiNC10L3QviDQtNC+0L/Rg9GB0YLQuNC80L7QtSDQt9C90LDRh9C10L3QuNC1INGB0LjQvNCy0L7Qu9C+0LInIDogdGhpcy5pbnZhbGlkTWVzc2FnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID8gJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDogdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9jbGVhbmVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JFbGVtZW50UmVmLmVkaXRvci52YWx1ZS5yZXBsYWNlKC8gJm5ic3A7L2csICcmbmJzcDsnKS5yZXBsYWNlKC8mbmJzcDsgL2csICcmbmJzcDsnKTtcbiAgfVxuXG4gIHB1YmxpYyBpbnNlcnRQb3NpdGlvblRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5lZGl0b3JFbGVtZW50UmVmLmVkaXRvci5zLmluc2VydEhUTUwodGV4dCk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlRm9jdXNlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIH07XG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xuICB9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuX3Nhbml0aXplVmFsdWUob3V0c2lkZVZhbHVlKTtcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5faXNJbml0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Nhbml0aXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUucmVwbGFjZSgvPHNjcmlwdFxcYltePF0qKD86KD8hPFxcL3NjcmlwdD4pPFtePF0qKSo8XFwvc2NyaXB0Pi9naSwgJycpIDogdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVDaGFydHNDb3VudCgpIHtcbiAgICB0aGlzLnZhbHVlTGVuZ3RoID0gdGhpcy5fY2xlYW5lZFZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICB0aGlzLl9jYWxjdWxhdGVDaGFydHNDb3VudCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiB0aGlzLl9jbGVhbmVkVmFsdWUubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gaW5zaWRlVmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBpbnNpZGVWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pO1xuICAgICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkJsdXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNoYW5nZUZvY3VzZWQodmFsdWUpO1xuICAgIHRoaXMuYmx1cnJlZC5lbWl0KHt2YWx1ZTogdGhpcy52YWx1ZSwgaWQ6IHRoaXMudXVpZH0pO1xuXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHRoaXMuX2NsZWFuZWRWYWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgdGhpcy5lZGl0b3JFbGVtZW50UmVmLmVkaXRvci52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZWRpdG9yRWxlbWVudFJlZi5lZGl0b3IudmFsdWUpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgaGFuZGxlUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCFldmVudC5jbGlwYm9hcmREYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge2NsaXBib2FyZERhdGF9ID0gZXZlbnQ7XG4gICAgY29uc3QgaHRtbERhdGEgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGhhc0h0bWxJbWFnZSA9IGh0bWxEYXRhPy5pbmNsdWRlcygnPGltZycpO1xuICAgIGNvbnN0IGhhc0ltYWdlID0gQXJyYXkuZnJvbShjbGlwYm9hcmREYXRhLml0ZW1zKS5zb21lKGl0ZW0gPT4gaXRlbS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKTtcblxuICAgIGlmICghaGFzSW1hZ2UgJiYgIWhhc0h0bWxJbWFnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5lZGl0b3JFbGVtZW50UmVmO1xuICAgIGNvbnN0IHBsYWluVGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuXG4gICAgaWYgKGh0bWxEYXRhKSB7XG4gICAgICBjb25zdCB0ZW1wRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0ZW1wRGl2LmlubmVySFRNTCA9IGh0bWxEYXRhO1xuICAgICAgdGhpcy5yZW1vdmVJbWFnZU5vZGVzKHRlbXBEaXYpO1xuXG4gICAgICBpZiAodGhpcy5oYXNDb250ZW50KHRlbXBEaXYpKSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCB0ZW1wRGl2KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwbGFpblRleHQpIHtcbiAgICAgIGVkaXRvci5zLmluc2VydEhUTUwocGxhaW5UZXh0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUltYWdlTm9kZXMoY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKS5mb3JFYWNoKGltZyA9PiBpbWcucmVtb3ZlKCkpO1xuXG4gICAgY29uc3QgY29tbWVudHMgPSBbXTtcbiAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIE5vZGVGaWx0ZXIuU0hPV19DT01NRU5ULFxuICAgICAgICBudWxsXG4gICAgKTtcblxuICAgIGxldCBub2RlO1xuICAgIHdoaWxlIChub2RlID0gd2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAgIGNvbW1lbnRzLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGNvbW1lbnRzLmZvckVhY2goY29tbWVudCA9PiBjb21tZW50LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGNvbW1lbnQpKTtcblxuICAgIGNvbnN0IGVtcHR5RWxlbWVudHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgncCwgZGl2LCBzcGFuLCBicicpO1xuICAgIGVtcHR5RWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ0JSJyAmJiAhZWwubmV4dFNpYmxpbmcgJiYgIWVsLnByZXZpb3VzU2libGluZykge1xuICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFlbC50ZXh0Q29udGVudD8udHJpbSgpICYmIGVsLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdwLCBkaXYnKS5mb3JFYWNoKGVsID0+IHtcbiAgICAgIGlmIChlbC5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgZWwuaW5uZXJIVE1MLnRyaW0oKSA9PT0gJzxicj4nKSB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNDb250ZW50KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFjb250YWluZXIudGV4dENvbnRlbnQ/LnRyaW0oKSB8fCBjb250YWluZXIuY2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaW5zZXJ0Tm9kZXMoZWRpdG9yOiBhbnksIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBub2RlcyA9IEFycmF5LmZyb20oY29udGFpbmVyLmNoaWxkTm9kZXMpLm1hcChub2RlID0+IG5vZGUuY2xvbmVOb2RlKHRydWUpKTtcblxuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgfHxcbiAgICAgICAgICAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgJiYgbm9kZS50ZXh0Q29udGVudD8udHJpbSgpKSkge1xuICAgICAgICBlZGl0b3Iucy5pbnNlcnROb2RlKG5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibXJ4LWVkaXRvclwiXG4gIFtjbGFzcy5tcngtaW5wdXQtZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImdldEludmFsaWRcIlxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXG4+XG4gIDxqb2RpdC1lZGl0b3JcbiAgICAjZWRpdG9yRWxlbWVudFJlZlxuICAgIFtjb25maWddPVwiZGVmYXVsdENvbmZpZ1wiXG4gICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxuICAgIChvbkZvY3VzKT1cImNoYW5nZUZvY3VzZWQodHJ1ZSlcIlxuICAgIChvbkJsdXIpPVwib25CbHVyKGZhbHNlKVwiXG4gID48L2pvZGl0LWVkaXRvcj5cblxuICA8bXJ4LWVycm9yLW1lc3NhZ2VcbiAgICAqbmdJZj1cImdldEludmFsaWQgJiYgZ2V0SW52YWxpZE1lc3NhZ2VcIlxuICAgIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRJbnZhbGlkTWVzc2FnZVwiXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxuXG4gIDxtcngtc2F2ZS1zdGF0ZSB0eXBlPVwiZWRpdG9yXCIgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XG5cbiAgPG1yeC1jaGFycy1sZWZ0XG4gICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgbWF4TGVuZ3RoXCJcbiAgICBbdmFsdWVMZW5ndGhdPVwidmFsdWVMZW5ndGhcIlxuICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgPjwvbXJ4LWNoYXJzLWxlZnQ+XG48L2Rpdj5cbiJdfQ==
|
package/fesm2015/myrta-ui.mjs
CHANGED
|
@@ -10557,8 +10557,11 @@ class EditorComponent {
|
|
|
10557
10557
|
noFollowCheckbox: false
|
|
10558
10558
|
}, minHeight: 110, iframe: false, imageDefaultWidth: 200, editHTMLDocumentMode: false, cleanHTML: {
|
|
10559
10559
|
fillEmptyParagraph: true
|
|
10560
|
-
}, placeholder: '', toolbarAdaptive: false, toolbarInline: true, toolbarInlineForSelection: false, toolbarInlineDisableFor: [], toolbarInlineDisabledButtons: ['source'], disabled: false, readonly: false, askBeforePasteHTML: false, defaultActionOnPaste: 'insert_only_text', askBeforePasteFromWord: false, hidePoweredByJodit: true, beautifyHTML: true, addNewLine: true, createAttributes: {}, events: {
|
|
10560
|
+
}, placeholder: '', toolbarAdaptive: false, toolbarInline: true, toolbarInlineForSelection: false, toolbarInlineDisableFor: [], toolbarInlineDisabledButtons: ['source'], disabled: false, readonly: false, askBeforePasteHTML: false, defaultActionOnPaste: 'insert_only_text', askBeforePasteFromWord: false, hidePoweredByJodit: true, beautifyHTML: true, addNewLine: true, createAttributes: {}, disablePlugins: ['paste'], events: {
|
|
10561
10561
|
getIcon: changeIconsFunction,
|
|
10562
|
+
paste: (event) => {
|
|
10563
|
+
this.handlePaste(event);
|
|
10564
|
+
},
|
|
10562
10565
|
} });
|
|
10563
10566
|
// SAVE STATE
|
|
10564
10567
|
this.uuid = v4();
|
|
@@ -10701,6 +10704,73 @@ class EditorComponent {
|
|
|
10701
10704
|
this.updateValue(this.editorElementRef.editor.value);
|
|
10702
10705
|
}
|
|
10703
10706
|
}
|
|
10707
|
+
handlePaste(event) {
|
|
10708
|
+
if (!event.clipboardData) {
|
|
10709
|
+
return;
|
|
10710
|
+
}
|
|
10711
|
+
const { clipboardData } = event;
|
|
10712
|
+
const htmlData = clipboardData.getData('text/html');
|
|
10713
|
+
const hasHtmlImage = htmlData === null || htmlData === void 0 ? void 0 : htmlData.includes('<img');
|
|
10714
|
+
const hasImage = Array.from(clipboardData.items).some(item => item.type.startsWith('image/'));
|
|
10715
|
+
if (!hasImage && !hasHtmlImage) {
|
|
10716
|
+
return;
|
|
10717
|
+
}
|
|
10718
|
+
event.preventDefault();
|
|
10719
|
+
event.stopPropagation();
|
|
10720
|
+
const { editor } = this.editorElementRef;
|
|
10721
|
+
const plainText = clipboardData.getData('text/plain');
|
|
10722
|
+
if (htmlData) {
|
|
10723
|
+
const tempDiv = document.createElement('div');
|
|
10724
|
+
tempDiv.innerHTML = htmlData;
|
|
10725
|
+
this.removeImageNodes(tempDiv);
|
|
10726
|
+
if (this.hasContent(tempDiv)) {
|
|
10727
|
+
this.insertNodes(editor, tempDiv);
|
|
10728
|
+
return;
|
|
10729
|
+
}
|
|
10730
|
+
}
|
|
10731
|
+
if (plainText) {
|
|
10732
|
+
editor.s.insertHTML(plainText);
|
|
10733
|
+
}
|
|
10734
|
+
}
|
|
10735
|
+
removeImageNodes(container) {
|
|
10736
|
+
container.querySelectorAll('img').forEach(img => img.remove());
|
|
10737
|
+
const comments = [];
|
|
10738
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_COMMENT, null);
|
|
10739
|
+
let node;
|
|
10740
|
+
while (node = walker.nextNode()) {
|
|
10741
|
+
comments.push(node);
|
|
10742
|
+
}
|
|
10743
|
+
comments.forEach(comment => { var _a; return (_a = comment.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(comment); });
|
|
10744
|
+
const emptyElements = container.querySelectorAll('p, div, span, br');
|
|
10745
|
+
emptyElements.forEach(el => {
|
|
10746
|
+
var _a;
|
|
10747
|
+
if (el.tagName === 'BR' && !el.nextSibling && !el.previousSibling) {
|
|
10748
|
+
el.remove();
|
|
10749
|
+
}
|
|
10750
|
+
else if (!((_a = el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) && el.children.length === 0) {
|
|
10751
|
+
el.remove();
|
|
10752
|
+
}
|
|
10753
|
+
});
|
|
10754
|
+
container.querySelectorAll('p, div').forEach(el => {
|
|
10755
|
+
if (el.children.length === 1 && el.innerHTML.trim() === '<br>') {
|
|
10756
|
+
el.remove();
|
|
10757
|
+
}
|
|
10758
|
+
});
|
|
10759
|
+
}
|
|
10760
|
+
hasContent(container) {
|
|
10761
|
+
var _a;
|
|
10762
|
+
return !!((_a = container.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || container.children.length > 0;
|
|
10763
|
+
}
|
|
10764
|
+
insertNodes(editor, container) {
|
|
10765
|
+
const nodes = Array.from(container.childNodes).map(node => node.cloneNode(true));
|
|
10766
|
+
nodes.forEach(node => {
|
|
10767
|
+
var _a;
|
|
10768
|
+
if (node.nodeType === Node.ELEMENT_NODE ||
|
|
10769
|
+
(node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim()))) {
|
|
10770
|
+
editor.s.insertNode(node);
|
|
10771
|
+
}
|
|
10772
|
+
});
|
|
10773
|
+
}
|
|
10704
10774
|
}
|
|
10705
10775
|
EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: EditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10706
10776
|
EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: EditorComponent, selector: "mrx-editor", inputs: { fields: "fields", toolbar: "toolbar", maxLength: "maxLength", minHeight: "minHeight", customClasses: "customClasses", placeholder: "placeholder", disabled: "disabled", readonly: "readonly", iframe: "iframe", config: "config", defaultInlineStyle: "defaultInlineStyle", defaultActionOnPaste: "defaultActionOnPaste", askBeforePasteHTML: "askBeforePasteHTML", editHTMLDocumentMode: "editHTMLDocumentMode", askBeforePasteFromWord: "askBeforePasteFromWord", defaultMode: "defaultMode", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid" }, outputs: { changed: "changed", modelChange: "modelChange", blurred: "blurred" }, providers: [
|