@cleavelandprice/ngx-lib 4.2.0 → 4.2.1

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.
@@ -27,18 +27,6 @@ export class EditorComponent extends EditorComponentBase {
27
27
  this.#dlg = inject(MatDialog);
28
28
  this.#activeDirectoryService = inject(ActiveDirectoryService);
29
29
  }
30
- writeValue(obj) {
31
- throw new Error('Method not implemented.');
32
- }
33
- registerOnChange(fn) {
34
- throw new Error('Method not implemented.');
35
- }
36
- registerOnTouched(fn) {
37
- throw new Error('Method not implemented.');
38
- }
39
- setDisabledState(isDisabled) {
40
- throw new Error('Method not implemented.');
41
- }
42
30
  #dlgRef;
43
31
  #dlg;
44
32
  #activeDirectoryService;
@@ -160,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
160
148
  multi: true
161
149
  }], template: "@if (users()) {\n <form>\n <quill-editor name=\"editor\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n [placeholder]=\"placeholder() ?? ''\"\n [format]=\"format()\"\n [style.height]=\"fullscreen() ? fullscreenHeight() : height()\"\n [style.width]=\"fullscreen() ? fullscreenWidth() : width()\"\n [readOnly]=\"readonly() ?? false\"\n [class.readonly]=\"readonly() && applyReadonlyStyle()\"\n [class.no-toolbar]=\"!showToolbar()\"\n [class.no-border]=\"!showBorder()\"\n [modules]=\"modules\"\n (onBlur)=\"onBlur.emit($event)\"\n (onContentChanged)=\"onContentChanged.emit($event)\"\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\n (onEditorCreated)=\"onEditorCreated.emit()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\n @if (showToolbar()) {\n <div quill-editor-toolbar>\n <ng-container [ngTemplateOutlet]=\"toolbar\"/>\n <ng-container [ngTemplateOutlet]=\"editorSize\"/>\n </div>\n }\n </quill-editor>\n </form>\n}\n\n<ng-template #toolbar>\n <div>\n <ng-container [ngTemplateOutlet]=\"fontStyle\"/>\n <ng-container [ngTemplateOutlet]=\"blockStyle\"/>\n <ng-container [ngTemplateOutlet]=\"headingStyle\"/>\n <ng-container [ngTemplateOutlet]=\"listStyle\"/>\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"/>\n <ng-container [ngTemplateOutlet]=\"indentStyle\"/>\n <ng-container [ngTemplateOutlet]=\"rtl\"/>\n <ng-container [ngTemplateOutlet]=\"fontSize\"/>\n <ng-container [ngTemplateOutlet]=\"heading\"/>\n <ng-container [ngTemplateOutlet]=\"color\"/>\n <ng-container [ngTemplateOutlet]=\"font\"/>\n <ng-container [ngTemplateOutlet]=\"align\"/>\n <ng-container [ngTemplateOutlet]=\"clean\"/>\n <ng-container [ngTemplateOutlet]=\"formula\"/>\n <ng-container [ngTemplateOutlet]=\"media\"/>\n </div>\n</ng-template>\n\n<ng-template #fontStyle>\n @if (showFontStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.bold!) {\n <button class=\"ql-bold\" [matTooltip]=\"tooltip(config()!.tooltips!.bold!)\"></button>\n }\n @if (config()!.buttons!.italic!) {\n <button class=\"ql-italic\" [matTooltip]=\"tooltip(config()!.tooltips!.italic!)\"></button>\n }\n @if (config()!.buttons!.underline!) {\n <button class=\"ql-underline\" [matTooltip]=\"tooltip(config()!.tooltips!.underline!)\"></button>\n }\n @if (config()!.buttons!.strike!) {\n <button class=\"ql-strike\" [matTooltip]=\"tooltip(config()!.tooltips!.strike!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #blockStyle>\n @if (showBlockStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.blockquote!) {\n <button class=\"ql-blockquote\" [matTooltip]=\"tooltip(config()!.tooltips!.blockquote!)\"></button>\n }\n @if (config()!.buttons!.codeblock!) {\n <button class=\"ql-code-block\" [matTooltip]=\"tooltip(config()!.tooltips!.codeblock!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #headingStyle>\n @if (showQuickHeadingStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.h1!) {\n <button class=\"ql-header\" value=\"1\" [matTooltip]=\"tooltip(config()!.tooltips!.h1!)\"></button>\n }\n @if (config()!.buttons!.h2!) {\n <button class=\"ql-header\" value=\"2\" [matTooltip]=\"tooltip(config()!.tooltips!.h2!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #listStyle>\n @if (showListStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.ordered!) {\n <button class=\"ql-list\" value=\"ordered\" [matTooltip]=\"tooltip(config()!.tooltips!.ordered!)\"></button>\n }\n @if (config()!.buttons!.bulleted!) {\n <button class=\"ql-list\" value=\"bullet\" [matTooltip]=\"tooltip(config()!.tooltips!.bulleted!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #scriptStyle>\n @if (showScriptStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.subScript!) {\n <button class=\"ql-script\" value=\"sub\" [matTooltip]=\"tooltip(config()!.tooltips!.subScript!)\"></button>\n }\n @if (config()!.buttons!.superScript!) {\n <button class=\"ql-script\" value=\"super\" [matTooltip]=\"tooltip(config()!.tooltips!.superScript!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #indentStyle>\n @if (showIndentStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.decreaseIndent!) {\n <button class=\"ql-indent\" value=\"-1\" [matTooltip]=\"tooltip(config()!.tooltips!.decreaseIndent!)\"></button>\n }\n @if (config()!.buttons!.increaseIndent!) {\n <button class=\"ql-indent\" value=\"+1\" [matTooltip]=\"tooltip(config()!.tooltips!.increaseIndent!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #rtl>\n @if (config()!.buttons!.rtl!) {\n <span class=\"ql-formats\">\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config()!.tooltips!.rtl!)\"></button>\n </span>\n }\n</ng-template>\n\n<ng-template #fontSize>\n @if (config()!.buttons!.fontSize!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.fontSize!)\">\n <select class=\"ql-size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #heading>\n @if (config()!.buttons!.headingStyle!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.headingStyle!)\">\n <select class=\"ql-header\">\n <option value=\"1\"></option>\n <option value=\"2\"></option>\n <option value=\"3\"></option>\n <option value=\"4\"></option>\n <option value=\"5\"></option>\n <option value=\"6\"></option>\n <option selected=\"selected\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #color>\n @if (config()!.buttons!.color!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.color!)\">\n <select class=\"ql-color\"></select>\n <select class=\"ql-background\"></select>\n </span>\n }\n</ng-template>\n\n<ng-template #font>\n @if (config()!.buttons!.font!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.font!)\">\n <select class=\"ql-font\">\n <option selected></option>\n <option value=\"serif\"></option>\n <option value=\"monospace\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #align>\n @if (config()!.buttons!.align!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.align!)\">\n <select class=\"ql-align\">\n <option selected></option>\n <option value=\"center\"></option>\n <option value=\"right\"></option>\n <option value=\"justify\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #clean>\n @if (config()!.buttons!.clean!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.clean!)\">\n <button class=\"ql-clean\"></button>\n </span>\n }\n</ng-template>\n\n<ng-template #media>\n @if (showMedia) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.link!) {\n <button class=\"ql-link\" [matTooltip]=\"tooltip(config()!.tooltips!.link!)\"></button>\n }\n @if (config()!.buttons!.image!) {\n <button class=\"ql-image\" [matTooltip]=\"tooltip(config()!.tooltips!.image!)\"></button>\n }\n @if (config()!.buttons!.video!) {\n <button class=\"ql-video\" [matTooltip]=\"tooltip(config()!.tooltips!.video!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #editorSize>\n <div>\n @if (config()!.buttons!.rawEditor!) {\n <span class=\"ql-formats\">\n <button id=\"rawdog\"\n [matTooltip]=\"tooltip(config()!.tooltips!.rawEditor!)\">\n <mat-icon (click)=\"rawEdit()\">\n code\n </mat-icon>\n </button>\n </span>\n }\n\n @if (config()!.buttons!.editorSize!) {\n <span class=\"ql-formats\">\n <button id=\"fullscreen\"\n [matTooltip]=\"tooltip(fullscreen() ?\n (fullscreenMode() === 'expand' ? config()!.tooltips!.minimize! : config()!.tooltips!.popin!) :\n (fullscreenMode() === 'expand' ? config()!.tooltips!.maximize! : config()!.tooltips!.popout!))\">\n <mat-icon (click)=\"toggleFullscreen()\">\n {{ fullscreen() ?\n (fullscreenMode() === 'expand' ? config()!.icons!.minimize! : config()!.icons!.popin!) :\n (fullscreenMode() === 'expand' ? config()!.icons!.maximize! : config()!.icons!.popout!)\n }}\n </mat-icon>\n </button>\n </span>\n }\n </div>\n</ng-template>\n\n<ng-template #formula>\n @if (config()!.buttons!.formula!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.formula!)\">\n <button class=\"ql-formula\"></button>\n </span>\n }\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"] }]
162
150
  }] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL21lbnRpb24vc3JjL2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9xdWlsbC9tZW50aW9uL3NyYy9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLDZDQUE2QztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBUSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLE9BQU8sZUFBZSxDQUFDO0FBRXZCLHdDQUF3QztBQUN4Qyw0QkFBNEI7QUFFNUIscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFFckQsK0dBQStHO0FBQy9HLHNEQUFzRDtBQUV0RCxZQUFZO0FBRVosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxJQUFJLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1B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LCBmb3J3YXJkUmVmLCBpbmplY3QsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG4vL2ltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UsIFVzZXIgfSBmcm9tICdAY2xlYXZlbGFuZHByaWNlL25neC1saWIvYWN0aXZlLWRpcmVjdG9yeSc7XG5cbmltcG9ydCAncXVpbGwtbWVudGlvbic7XG5cbi8vI3JlZ2lvbiBNb3ZlZCB0byBjbGllbnQgcmVzcG9uc2liaWxpdHlcbi8vaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcblxuLy8gVGhpcyBkb2Vzbid0IHdvcmsgd2hlbiBkb25lIGZyb20gdGhlIGxpYnJhcnkgLSBpdCBtdXN0IGJlIGRvbmUgZnJvbSB0aGUgY2xpZW50IGFwcFxuLy9pbXBvcnQgSW1hZ2VSZXNpemUgZnJvbSAncXVpbGwtaW1hZ2UtcmVzaXplLW1vZHVsZSc7XG4vL1F1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2ltYWdlUmVzaXplJywgSW1hZ2VSZXNpemUpO1xuXG4vLyBUcmVhdGluZyBJbWFnZURyb3AgdGhlIHNhbWUgd2F5IGFzIEltYWdlUmVzaXplLCBldmVuIHRob3VnaCBpdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgcHJvYmxlbSBkZXNjcmliZWQgYWJvdmVcbi8vaW1wb3J0IHsgSW1hZ2VEcm9wIH0gZnJvbSAncXVpbGwtaW1hZ2UtZHJvcC1tb2R1bGUnO1xuXG4vLyNlbmRyZWdpb25cblxuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgYXMgRWRpdG9yQ29tcG9uZW50QmFzZSB9IGZyb20gJ0BjbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9xdWlsbCc7XG5pbXBvcnQgeyBRdWlsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ25neC1xdWlsbCc7XG5pbXBvcnQgeyBEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhbG9nLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcHF1aWxsLWVkaXRvci13aXRoLW1lbnRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBRdWlsbEVkaXRvckNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVkaXRvckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgRWRpdG9yQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIG92ZXJyaWRlIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBvdmVycmlkZSByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgdXNlcnMgPSBtb2RlbDxVc2VyW10+KCk7XG5cbiAgI2RsZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8RWRpdG9yQ29tcG9uZW50PiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgI2RsZyA9IGluamVjdChNYXREaWFsb2cpO1xuICAjYWN0aXZlRGlyZWN0b3J5U2VydmljZSA9IGluamVjdChBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlKTtcbiAgXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIFxuICAgIGlmICghdGhpcy51c2VycygpKSB7XG4gICAgICB0aGlzLiNhY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmdldFVzZXJzKCkuc3Vic2NyaWJlKHVzZXJzID0+XG4gICAgICAgIHRoaXMudXNlcnMuc2V0KHVzZXJzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB0b2dnbGVGdWxsc2NyZWVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5Nb2RlKCkgPT09ICdleHBhbmQnKSB7XG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbi5zZXQoIXRoaXMuZnVsbHNjcmVlbigpKTtcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuQ2hhbmdlZC5lbWl0KHRoaXMuZnVsbHNjcmVlbigpISk7XG4gICAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5mdWxsc2NyZWVuKCkpIHtcbiAgICAgICAgdGhpcy4jZGxnUmVmPy5jbG9zZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGF0YTogRGlhbG9nRGF0YSA9IHtcblxuICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcoKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlcigpLFxuICAgICAgICAgIGZvcm1hdDogdGhpcy5mb3JtYXQoKSEsXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQoKSEsXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHRoaXMuZnVsbHNjcmVlbkhlaWdodCgpISxcbiAgICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICAgIGVuYWJsZVRvb2x0aXBzOiB0aGlzLmVuYWJsZVRvb2x0aXBzKCkhLFxuICAgICAgICAgIGZ1bGxzY3JlZW46IHRydWUsXG4gICAgICAgICAgZnVsbHNjcmVlbk1vZGU6IHRoaXMuZnVsbHNjcmVlbk1vZGUoKSEsXG4gICAgICAgICAgcmVhZG9ubHk6IHRoaXMucmVhZG9ubHkoKSEsXG4gICAgICAgICAgYXBwbHlSZWFkb25seVN0eWxlOiB0aGlzLmFwcGx5UmVhZG9ubHlTdHlsZSgpISxcbiAgICAgICAgICBzaG93VG9vbGJhcjogdGhpcy5zaG93VG9vbGJhcigpISxcbiAgICAgICAgICBzaG93Qm9yZGVyOiB0aGlzLnNob3dCb3JkZXIoKSEsXG4gICAgICAgICAgaW1hZ2VSZXNpemVNb2R1bGU6IHRoaXMuaW1hZ2VSZXNpemVNb2R1bGUoKSEsXG4gICAgICAgICAgaW1hZ2VEcm9wTW9kdWxlOiB0aGlzLmltYWdlRHJvcE1vZHVsZSgpISxcbiAgICAgICAgICBzeW50YXhNb2R1bGU6IHRoaXMuc3ludGF4TW9kdWxlKCkhLFxuICAgICAgICAgIHVzZXJzOiB0aGlzLnVzZXJzKClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLiNkbGcub3BlbihFZGl0b3JDb21wb25lbnQsIHtcbiAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZnVsbHNjcmVlbldpZHRoKCksXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQoKSxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pXG4gICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBtb2R1bGVzKCkge1xuICAgIGlmICghdGhpcy51c2VycygpKSB7IHJldHVybiB7fTsgfVxuXG4gICAgY29uc3QgbW9kdWxlcyA9IHtcbiAgICAgIG1lbnRpb246IHtcbiAgICAgICAgYWxsb3dlZENoYXJzOiAvXltBLVphLXpcXHPDhcOEw5bDpcOkw7ZdKiQvLFxuXG4gICAgICAgIG9uU2VsZWN0OiAoaXRlbTogRE9NU3RyaW5nTWFwLCBpbnNlcnRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcigpIS5xdWlsbEVkaXRvclxuICAgICAgICAgIGluc2VydEl0ZW0oaXRlbSlcbiAgICAgICAgICAvLyBuZWNlc3NhcnkgYmVjYXVzZSBxdWlsbC1tZW50aW9uIHRyaWdnZXJzIGNoYW5nZXMgYXMgJ2FwaScgaW5zdGVhZCBvZiAndXNlcidcbiAgICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4dChlZGl0b3IuZ2V0TGVuZ3RoKCkgLSAxLCAnJywgJ3VzZXInKVxuICAgICAgICB9LFxuXG4gICAgICAgIHNvdXJjZTogKHNlYXJjaFRlcm06IHN0cmluZywgcmVuZGVyTGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZW5kZXJMaXN0KHRoaXMudXNlcnMoKT8ubWFwKHUgPT4gKHsgdmFsdWU6IGAke3UuZGlzcGxheU5hbWV9ICgke3Uuc0FNQWNjb3VudE5hbWUudG9Mb3dlckNhc2UoKX0pYCB9KSksIHNlYXJjaFRlcm0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXM6IGFueVtdID0gW11cblxuICAgICAgICAgICAgdGhpcy51c2VycygpIS5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKGVudHJ5LmRpc3BsYXlOYW1lID8/IGVudHJ5Lm5hbWUpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMSB8fFxuICAgICAgICAgICAgICAgIGVudHJ5LnNBTUFjY291bnROYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCh7IHZhbHVlOiBgJHtlbnRyeS5kaXNwbGF5TmFtZX0gKCR7ZW50cnkuc0FNQWNjb3VudE5hbWUudG9Mb3dlckNhc2UoKX0pYCB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZW5kZXJMaXN0KG1hdGNoZXMsIHNlYXJjaFRlcm0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghdGhpcy5zaG93VG9vbGJhcigpKSB7XG4gICAgICBtb2R1bGVzWyd0b29sYmFyJ10gPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbWFnZVJlc2l6ZU1vZHVsZSgpKSB7XG4gICAgICBtb2R1bGVzWydpbWFnZVJlc2l6ZSddID0ge307XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW1hZ2VEcm9wTW9kdWxlKCkpIHtcbiAgICAgIG1vZHVsZXNbJ2ltYWdlRHJvcCddID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zeW50YXhNb2R1bGUoKSkge1xuICAgICAgbW9kdWxlc1snc3ludGF4J10gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtb2R1bGVzO1xuICB9XG59IiwiQGlmICh1c2VycygpKSB7XG4gIDxmb3JtPlxuICAgIDxxdWlsbC1lZGl0b3IgbmFtZT1cImVkaXRvclwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUNoYW5nZXMoKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSA/PyAnJ1wiXG4gICAgICBbZm9ybWF0XT1cImZvcm1hdCgpXCJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZnVsbHNjcmVlbigpID8gZnVsbHNjcmVlbkhlaWdodCgpIDogaGVpZ2h0KClcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cImZ1bGxzY3JlZW4oKSA/IGZ1bGxzY3JlZW5XaWR0aCgpIDogd2lkdGgoKVwiXG4gICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkoKSA/PyBmYWxzZVwiXG4gICAgICBbY2xhc3MucmVhZG9ubHldPVwicmVhZG9ubHkoKSAmJiBhcHBseVJlYWRvbmx5U3R5bGUoKVwiXG4gICAgICBbY2xhc3Mubm8tdG9vbGJhcl09XCIhc2hvd1Rvb2xiYXIoKVwiXG4gICAgICBbY2xhc3Mubm8tYm9yZGVyXT1cIiFzaG93Qm9yZGVyKClcIlxuICAgICAgW21vZHVsZXNdPVwibW9kdWxlc1wiXG4gICAgICAob25CbHVyKT1cIm9uQmx1ci5lbWl0KCRldmVudClcIlxuICAgICAgKG9uQ29udGVudENoYW5nZWQpPVwib25Db250ZW50Q2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uRWRpdG9yQ2hhbmdlZCk9XCJvbkVkaXRvckNoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIChvbkVkaXRvckNyZWF0ZWQpPVwib25FZGl0b3JDcmVhdGVkLmVtaXQoKVwiXG4gICAgICAob25Gb2N1cyk9XCJvbkZvY3VzLmVtaXQoJGV2ZW50KVwiXG4gICAgICAob25TZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCRldmVudClcIj5cbiAgICAgIEBpZiAoc2hvd1Rvb2xiYXIoKSkge1xuICAgICAgICA8ZGl2IHF1aWxsLWVkaXRvci10b29sYmFyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbGJhclwiLz5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkaXRvclNpemVcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvcXVpbGwtZWRpdG9yPlxuICA8L2Zvcm0+XG59XG5cbjxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cbiAgPGRpdj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvbnRTdHlsZVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJsb2NrU3R5bGVcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nU3R5bGVcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0U3R5bGVcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzY3JpcHRTdHlsZVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImluZGVudFN0eWxlXCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicnRsXCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9udFNpemVcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nXCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sb3JcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb250XCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWxpZ25cIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjbGVhblwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvcm11bGFcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtZWRpYVwiLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZvbnRTdHlsZT5cbiAgQGlmIChzaG93Rm9udFN0eWxlKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5ib2xkISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYm9sZFwiICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuYm9sZCEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5pdGFsaWMhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pdGFsaWNcIiAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaXRhbGljISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnVuZGVybGluZSEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXVuZGVybGluZVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS51bmRlcmxpbmUhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuc3RyaWtlISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtc3RyaWtlXCIgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnN0cmlrZSEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Jsb2NrU3R5bGU+XG4gIEBpZiAoc2hvd0Jsb2NrU3R5bGUpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmJsb2NrcXVvdGUhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1ibG9ja3F1b3RlXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmJsb2NrcXVvdGUhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuY29kZWJsb2NrISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtY29kZS1ibG9ja1wiICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuY29kZWJsb2NrISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZ1N0eWxlPlxuICBAaWYgKHNob3dRdWlja0hlYWRpbmdTdHlsZSkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuaDEhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaDEhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuaDIhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjJcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaDIhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaXN0U3R5bGU+XG4gIEBpZiAoc2hvd0xpc3RTdHlsZSkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEub3JkZXJlZCEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cIm9yZGVyZWRcIiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLm9yZGVyZWQhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuYnVsbGV0ZWQhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saXN0XCIgdmFsdWU9XCJidWxsZXRcIiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmJ1bGxldGVkISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2NyaXB0U3R5bGU+XG4gIEBpZiAoc2hvd1NjcmlwdFN0eWxlKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5zdWJTY3JpcHQhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1YlwiICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnN1YlNjcmlwdCEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5zdXBlclNjcmlwdCEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXNjcmlwdFwiIHZhbHVlPVwic3VwZXJcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuc3VwZXJTY3JpcHQhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbmRlbnRTdHlsZT5cbiAgQGlmIChzaG93SW5kZW50U3R5bGUpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmRlY3JlYXNlSW5kZW50ISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCItMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5kZWNyZWFzZUluZGVudCEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5pbmNyZWFzZUluZGVudCEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWluZGVudFwiIHZhbHVlPVwiKzFcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaW5jcmVhc2VJbmRlbnQhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNydGw+XG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnJ0bCEpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1kaXJlY3Rpb25cIiB2YWx1ZT1cInJ0bFwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5ydGwhKVwiPjwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb250U2l6ZT5cbiAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuZm9udFNpemUhKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmZvbnRTaXplISlcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1zaXplXCI+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzbWFsbFwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibGFyZ2VcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImh1Z2VcIj48L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5oZWFkaW5nU3R5bGUhKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmhlYWRpbmdTdHlsZSEpXCI+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtaGVhZGVyXCI+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIxXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIyXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIzXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI0XCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI1XCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI2XCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiPjwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbG9yPlxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5jb2xvciEpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuY29sb3IhKVwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWNvbG9yXCI+PC9zZWxlY3Q+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYmFja2dyb3VuZFwiPjwvc2VsZWN0PlxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb250PlxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5mb250ISkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5mb250ISlcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1mb250XCI+XG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzZXJpZlwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9ub3NwYWNlXCI+PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWxpZ24+XG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmFsaWduISkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5hbGlnbiEpXCI+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYWxpZ25cIj5cbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNlbnRlclwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmlnaHRcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImp1c3RpZnlcIj48L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjbGVhbj5cbiAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuY2xlYW4hKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmNsZWFuISlcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1jbGVhblwiPjwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZWRpYT5cbiAgQGlmIChzaG93TWVkaWEpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmxpbmshKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saW5rXCIgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5saW5rISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmltYWdlISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW1hZ2VcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaW1hZ2UhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEudmlkZW8hKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC12aWRlb1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS52aWRlbyEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VkaXRvclNpemU+XG4gIDxkaXY+XG4gICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEucmF3RWRpdG9yISkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyYXdkb2dcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5yYXdFZGl0b3IhKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicmF3RWRpdCgpXCI+XG4gICAgICAgICAgICBjb2RlXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuXG4gICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuZWRpdG9yU2l6ZSEpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgICA8YnV0dG9uIGlkPVwiZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChmdWxsc2NyZWVuKCkgP1xuICAgICAgICAgICAgICAgICAgICAoZnVsbHNjcmVlbk1vZGUoKSA9PT0gJ2V4cGFuZCcgPyBjb25maWcoKSEudG9vbHRpcHMhLm1pbmltaXplISA6IGNvbmZpZygpIS50b29sdGlwcyEucG9waW4hKSA6XG4gICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS50b29sdGlwcyEubWF4aW1pemUhIDogY29uZmlnKCkhLnRvb2x0aXBzIS5wb3BvdXQhKSlcIj5cbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiPlxuICAgICAgICAgICAge3sgZnVsbHNjcmVlbigpID9cbiAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS5pY29ucyEubWluaW1pemUhIDogY29uZmlnKCkhLmljb25zIS5wb3BpbiEpIDpcbiAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS5pY29ucyEubWF4aW1pemUhIDogY29uZmlnKCkhLmljb25zIS5wb3BvdXQhKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb3JtdWxhPlxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5mb3JtdWxhISkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5mb3JtdWxhISlcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1mb3JtdWxhXCI+PC9idXR0b24+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL21lbnRpb24vc3JjL2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9xdWlsbC9tZW50aW9uL3NyYy9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLDZDQUE2QztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBUSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLE9BQU8sZUFBZSxDQUFDO0FBRXZCLHdDQUF3QztBQUN4Qyw0QkFBNEI7QUFFNUIscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUN0RCxxREFBcUQ7QUFFckQsK0dBQStHO0FBQy9HLHNEQUFzRDtBQUV0RCxZQUFZO0FBRVosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxJQUFJLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1B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QUFFLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQXZIVSxlQUFlO2tHQUFmLGVBQWUsaVBBTmYsQ0FBQztnQkFDVixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLGlEQzNDSixnc1NBMFFjLHNaRHpPVixXQUFXLHErQkFDWCxPQUFPLDJJQUNQLFVBQVUsaVJBQ1YsZ0JBQWdCLG9KQUNoQixvQkFBb0I7OzJGQVFYLGVBQWU7a0JBbEIzQixTQUFTOytCQUNFLDZCQUE2QixjQUczQixJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixvQkFBb0I7cUJBQ3JCLGFBQ1UsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBmb3J3YXJkUmVmLCBpbmplY3QsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG4vL2ltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UsIFVzZXIgfSBmcm9tICdAY2xlYXZlbGFuZHByaWNlL25neC1saWIvYWN0aXZlLWRpcmVjdG9yeSc7XG5cbmltcG9ydCAncXVpbGwtbWVudGlvbic7XG5cbi8vI3JlZ2lvbiBNb3ZlZCB0byBjbGllbnQgcmVzcG9uc2liaWxpdHlcbi8vaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcblxuLy8gVGhpcyBkb2Vzbid0IHdvcmsgd2hlbiBkb25lIGZyb20gdGhlIGxpYnJhcnkgLSBpdCBtdXN0IGJlIGRvbmUgZnJvbSB0aGUgY2xpZW50IGFwcFxuLy9pbXBvcnQgSW1hZ2VSZXNpemUgZnJvbSAncXVpbGwtaW1hZ2UtcmVzaXplLW1vZHVsZSc7XG4vL1F1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2ltYWdlUmVzaXplJywgSW1hZ2VSZXNpemUpO1xuXG4vLyBUcmVhdGluZyBJbWFnZURyb3AgdGhlIHNhbWUgd2F5IGFzIEltYWdlUmVzaXplLCBldmVuIHRob3VnaCBpdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgcHJvYmxlbSBkZXNjcmliZWQgYWJvdmVcbi8vaW1wb3J0IHsgSW1hZ2VEcm9wIH0gZnJvbSAncXVpbGwtaW1hZ2UtZHJvcC1tb2R1bGUnO1xuXG4vLyNlbmRyZWdpb25cblxuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgYXMgRWRpdG9yQ29tcG9uZW50QmFzZSB9IGZyb20gJ0BjbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9xdWlsbCc7XG5pbXBvcnQgeyBRdWlsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ25neC1xdWlsbCc7XG5pbXBvcnQgeyBEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGlhbG9nLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcHF1aWxsLWVkaXRvci13aXRoLW1lbnRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBRdWlsbEVkaXRvckNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVkaXRvckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgRWRpdG9yQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICB1c2VycyA9IG1vZGVsPFVzZXJbXT4oKTtcblxuICAjZGxnUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxFZGl0b3JDb21wb25lbnQ+LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAjZGxnID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gICNhY3RpdmVEaXJlY3RvcnlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UpO1xuICBcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgXG4gICAgaWYgKCF0aGlzLnVzZXJzKCkpIHtcbiAgICAgIHRoaXMuI2FjdGl2ZURpcmVjdG9yeVNlcnZpY2UuZ2V0VXNlcnMoKS5zdWJzY3JpYmUodXNlcnMgPT5cbiAgICAgICAgdGhpcy51c2Vycy5zZXQodXNlcnMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvZ2dsZUZ1bGxzY3JlZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZnVsbHNjcmVlbk1vZGUoKSA9PT0gJ2V4cGFuZCcpIHtcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuLnNldCghdGhpcy5mdWxsc2NyZWVuKCkpO1xuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2VkLmVtaXQodGhpcy5mdWxsc2NyZWVuKCkhKTtcbiAgICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZ1bGxzY3JlZW4oKSkge1xuICAgICAgICB0aGlzLiNkbGdSZWY/LmNsb3NlKHRoaXMudmFsdWUpO1xuICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbkNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkYXRhOiBEaWFsb2dEYXRhID0ge1xuXG4gICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZygpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnBsYWNlaG9sZGVyKCksXG4gICAgICAgICAgZm9ybWF0OiB0aGlzLmZvcm1hdCgpISxcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuZnVsbHNjcmVlbkhlaWdodCgpISxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIG1heEhlaWdodDogdGhpcy5mdWxsc2NyZWVuSGVpZ2h0KCkhLFxuICAgICAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgZW5hYmxlVG9vbHRpcHM6IHRoaXMuZW5hYmxlVG9vbHRpcHMoKSEsXG4gICAgICAgICAgZnVsbHNjcmVlbjogdHJ1ZSxcbiAgICAgICAgICBmdWxsc2NyZWVuTW9kZTogdGhpcy5mdWxsc2NyZWVuTW9kZSgpISxcbiAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSgpISxcbiAgICAgICAgICBhcHBseVJlYWRvbmx5U3R5bGU6IHRoaXMuYXBwbHlSZWFkb25seVN0eWxlKCkhLFxuICAgICAgICAgIHNob3dUb29sYmFyOiB0aGlzLnNob3dUb29sYmFyKCkhLFxuICAgICAgICAgIHNob3dCb3JkZXI6IHRoaXMuc2hvd0JvcmRlcigpISxcbiAgICAgICAgICBpbWFnZVJlc2l6ZU1vZHVsZTogdGhpcy5pbWFnZVJlc2l6ZU1vZHVsZSgpISxcbiAgICAgICAgICBpbWFnZURyb3BNb2R1bGU6IHRoaXMuaW1hZ2VEcm9wTW9kdWxlKCkhLFxuICAgICAgICAgIHN5bnRheE1vZHVsZTogdGhpcy5zeW50YXhNb2R1bGUoKSEsXG4gICAgICAgICAgdXNlcnM6IHRoaXMudXNlcnMoKVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuI2RsZy5vcGVuKEVkaXRvckNvbXBvbmVudCwge1xuICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgICAgICB3aWR0aDogdGhpcy5mdWxsc2NyZWVuV2lkdGgoKSxcbiAgICAgICAgICBoZWlnaHQ6IHRoaXMuZnVsbHNjcmVlbkhlaWdodCgpLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSlcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5DaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IG1vZHVsZXMoKSB7XG4gICAgaWYgKCF0aGlzLnVzZXJzKCkpIHsgcmV0dXJuIHt9OyB9XG5cbiAgICBjb25zdCBtb2R1bGVzID0ge1xuICAgICAgbWVudGlvbjoge1xuICAgICAgICBhbGxvd2VkQ2hhcnM6IC9eW0EtWmEtelxcc8OFw4TDlsOlw6TDtl0qJC8sXG5cbiAgICAgICAgb25TZWxlY3Q6IChpdGVtOiBET01TdHJpbmdNYXAsIGluc2VydEl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yKCkhLnF1aWxsRWRpdG9yXG4gICAgICAgICAgaW5zZXJ0SXRlbShpdGVtKVxuICAgICAgICAgIC8vIG5lY2Vzc2FyeSBiZWNhdXNlIHF1aWxsLW1lbnRpb24gdHJpZ2dlcnMgY2hhbmdlcyBhcyAnYXBpJyBpbnN0ZWFkIG9mICd1c2VyJ1xuICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KGVkaXRvci5nZXRMZW5ndGgoKSAtIDEsICcnLCAndXNlcicpXG4gICAgICAgIH0sXG5cbiAgICAgICAgc291cmNlOiAoc2VhcmNoVGVybTogc3RyaW5nLCByZW5kZXJMaXN0OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlbmRlckxpc3QodGhpcy51c2VycygpPy5tYXAodSA9PiAoeyB2YWx1ZTogYCR7dS5kaXNwbGF5TmFtZX0gKCR7dS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpfSlgIH0pKSwgc2VhcmNoVGVybSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlczogYW55W10gPSBbXVxuXG4gICAgICAgICAgICB0aGlzLnVzZXJzKCkhLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoZW50cnkuZGlzcGxheU5hbWUgPz8gZW50cnkubmFtZSkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xIHx8XG4gICAgICAgICAgICAgICAgZW50cnkuc0FNQWNjb3VudE5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHsgdmFsdWU6IGAke2VudHJ5LmRpc3BsYXlOYW1lfSAoJHtlbnRyeS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpfSlgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJlbmRlckxpc3QobWF0Y2hlcywgc2VhcmNoVGVybSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLnNob3dUb29sYmFyKCkpIHtcbiAgICAgIG1vZHVsZXNbJ3Rvb2xiYXInXSA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmltYWdlUmVzaXplTW9kdWxlKCkpIHtcbiAgICAgIG1vZHVsZXNbJ2ltYWdlUmVzaXplJ10gPSB7fTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbWFnZURyb3BNb2R1bGUoKSkge1xuICAgICAgbW9kdWxlc1snaW1hZ2VEcm9wJ10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN5bnRheE1vZHVsZSgpKSB7XG4gICAgICBtb2R1bGVzWydzeW50YXgnXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZXM7XG4gIH1cbn0iLCJAaWYgKHVzZXJzKCkpIHtcbiAgPGZvcm0+XG4gICAgPHF1aWxsLWVkaXRvciBuYW1lPVwiZWRpdG9yXCJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQ2hhbmdlcygpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpID8/ICcnXCJcbiAgICAgIFtmb3JtYXRdPVwiZm9ybWF0KClcIlxuICAgICAgW3N0eWxlLmhlaWdodF09XCJmdWxsc2NyZWVuKCkgPyBmdWxsc2NyZWVuSGVpZ2h0KCkgOiBoZWlnaHQoKVwiXG4gICAgICBbc3R5bGUud2lkdGhdPVwiZnVsbHNjcmVlbigpID8gZnVsbHNjcmVlbldpZHRoKCkgOiB3aWR0aCgpXCJcbiAgICAgIFtyZWFkT25seV09XCJyZWFkb25seSgpID8/IGZhbHNlXCJcbiAgICAgIFtjbGFzcy5yZWFkb25seV09XCJyZWFkb25seSgpICYmIGFwcGx5UmVhZG9ubHlTdHlsZSgpXCJcbiAgICAgIFtjbGFzcy5uby10b29sYmFyXT1cIiFzaG93VG9vbGJhcigpXCJcbiAgICAgIFtjbGFzcy5uby1ib3JkZXJdPVwiIXNob3dCb3JkZXIoKVwiXG4gICAgICBbbW9kdWxlc109XCJtb2R1bGVzXCJcbiAgICAgIChvbkJsdXIpPVwib25CbHVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAob25Db250ZW50Q2hhbmdlZCk9XCJvbkNvbnRlbnRDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAob25FZGl0b3JDaGFuZ2VkKT1cIm9uRWRpdG9yQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uRWRpdG9yQ3JlYXRlZCk9XCJvbkVkaXRvckNyZWF0ZWQuZW1pdCgpXCJcbiAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcbiAgICAgIChvblNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgQGlmIChzaG93VG9vbGJhcigpKSB7XG4gICAgICAgIDxkaXYgcXVpbGwtZWRpdG9yLXRvb2xiYXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sYmFyXCIvPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yU2l6ZVwiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9xdWlsbC1lZGl0b3I+XG4gIDwvZm9ybT5cbn1cblxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICA8ZGl2PlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9udFN0eWxlXCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYmxvY2tTdHlsZVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdTdHlsZVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RTdHlsZVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNjcmlwdFN0eWxlXCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5kZW50U3R5bGVcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJydGxcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb250U2l6ZVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2xvclwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvbnRcIi8+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhbGlnblwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNsZWFuXCIvPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9ybXVsYVwiLz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lZGlhXCIvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9udFN0eWxlPlxuICBAaWYgKHNob3dGb250U3R5bGUpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmJvbGQhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1ib2xkXCIgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5ib2xkISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLml0YWxpYyEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWl0YWxpY1wiICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5pdGFsaWMhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEudW5kZXJsaW5lISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtdW5kZXJsaW5lXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnVuZGVybGluZSEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5zdHJpa2UhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zdHJpa2VcIiAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuc3RyaWtlISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYmxvY2tTdHlsZT5cbiAgQGlmIChzaG93QmxvY2tTdHlsZSkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuYmxvY2txdW90ZSEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJsb2NrcXVvdGVcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuYmxvY2txdW90ZSEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5jb2RlYmxvY2shKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1jb2RlLWJsb2NrXCIgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5jb2RlYmxvY2shKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkaW5nU3R5bGU+XG4gIEBpZiAoc2hvd1F1aWNrSGVhZGluZ1N0eWxlKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5oMSEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWhlYWRlclwiIHZhbHVlPVwiMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5oMSEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5oMiEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWhlYWRlclwiIHZhbHVlPVwiMlwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5oMiEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3RTdHlsZT5cbiAgQGlmIChzaG93TGlzdFN0eWxlKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5vcmRlcmVkISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwib3JkZXJlZFwiICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEub3JkZXJlZCEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5idWxsZXRlZCEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cImJ1bGxldFwiICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuYnVsbGV0ZWQhKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzY3JpcHRTdHlsZT5cbiAgQGlmIChzaG93U2NyaXB0U3R5bGUpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnN1YlNjcmlwdCEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXNjcmlwdFwiIHZhbHVlPVwic3ViXCIgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuc3ViU2NyaXB0ISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnN1cGVyU2NyaXB0ISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtc2NyaXB0XCIgdmFsdWU9XCJzdXBlclwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5zdXBlclNjcmlwdCEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2luZGVudFN0eWxlPlxuICBAaWYgKHNob3dJbmRlbnRTdHlsZSkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuZGVjcmVhc2VJbmRlbnQhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIi0xXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmRlY3JlYXNlSW5kZW50ISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmluY3JlYXNlSW5kZW50ISkge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCIrMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5pbmNyZWFzZUluZGVudCEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3J0bD5cbiAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEucnRsISkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWRpcmVjdGlvblwiIHZhbHVlPVwicnRsXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnJ0bCEpXCI+PC9idXR0b24+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZvbnRTaXplPlxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5mb250U2l6ZSEpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuZm9udFNpemUhKVwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLXNpemVcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNtYWxsXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXJnZVwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaHVnZVwiPjwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRpbmc+XG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmhlYWRpbmdTdHlsZSEpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaGVhZGluZ1N0eWxlISlcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1oZWFkZXJcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjFcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjJcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjNcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjRcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjVcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjZcIj48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD1cInNlbGVjdGVkXCI+PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29sb3I+XG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmNvbG9yISkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5jb2xvciEpXCI+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtY29sb3JcIj48L3NlbGVjdD5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1iYWNrZ3JvdW5kXCI+PC9zZWxlY3Q+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZvbnQ+XG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmZvbnQhKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmZvbnQhKVwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWZvbnRcIj5cbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD48L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNlcmlmXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb25vc3BhY2VcIj48L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhbGlnbj5cbiAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuYWxpZ24hKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmFsaWduISlcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1hbGlnblwiPlxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2VudGVyXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJyaWdodFwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwianVzdGlmeVwiPjwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NsZWFuPlxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5jbGVhbiEpIHtcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuY2xlYW4hKVwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNsZWFuXCI+PC9idXR0b24+XG4gICAgPC9zcGFuPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21lZGlhPlxuICBAaWYgKHNob3dNZWRpYSkge1xuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEubGluayEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpbmtcIiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmxpbmshKVwiPjwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuaW1hZ2UhKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbWFnZVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5pbWFnZSEpXCI+PC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS52aWRlbyEpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXZpZGVvXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnZpZGVvISlcIj48L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZWRpdG9yU2l6ZT5cbiAgPGRpdj5cbiAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5yYXdFZGl0b3IhKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJhd2RvZ1wiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnJhd0VkaXRvciEpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJyYXdFZGl0KClcIj5cbiAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5lZGl0b3JTaXplISkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICAgIDxidXR0b24gaWQ9XCJmdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGZ1bGxzY3JlZW4oKSA/XG4gICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS50b29sdGlwcyEubWluaW1pemUhIDogY29uZmlnKCkhLnRvb2x0aXBzIS5wb3BpbiEpIDpcbiAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW5Nb2RlKCkgPT09ICdleHBhbmQnID8gY29uZmlnKCkhLnRvb2x0aXBzIS5tYXhpbWl6ZSEgOiBjb25maWcoKSEudG9vbHRpcHMhLnBvcG91dCEpKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCI+XG4gICAgICAgICAgICB7eyBmdWxsc2NyZWVuKCkgP1xuICAgICAgICAgICAgKGZ1bGxzY3JlZW5Nb2RlKCkgPT09ICdleHBhbmQnID8gY29uZmlnKCkhLmljb25zIS5taW5pbWl6ZSEgOiBjb25maWcoKSEuaWNvbnMhLnBvcGluISkgOlxuICAgICAgICAgICAgKGZ1bGxzY3JlZW5Nb2RlKCkgPT09ICdleHBhbmQnID8gY29uZmlnKCkhLmljb25zIS5tYXhpbWl6ZSEgOiBjb25maWcoKSEuaWNvbnMhLnBvcG91dCEpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Zvcm11bGE+XG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmZvcm11bGEhKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmZvcm11bGEhKVwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWZvcm11bGFcIj48L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gIH1cbjwvbmctdGVtcGxhdGU+Il19
@@ -22,18 +22,6 @@ class EditorComponent extends EditorComponent$1 {
22
22
  this.#dlg = inject(MatDialog);
23
23
  this.#activeDirectoryService = inject(ActiveDirectoryService);
24
24
  }
25
- writeValue(obj) {
26
- throw new Error('Method not implemented.');
27
- }
28
- registerOnChange(fn) {
29
- throw new Error('Method not implemented.');
30
- }
31
- registerOnTouched(fn) {
32
- throw new Error('Method not implemented.');
33
- }
34
- setDisabledState(isDisabled) {
35
- throw new Error('Method not implemented.');
36
- }
37
25
  #dlgRef;
38
26
  #dlg;
39
27
  #activeDirectoryService;
@@ -1 +1 @@
1
- {"version":3,"file":"cleavelandprice-ngx-lib-quill-mention.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/components/editor/editor.component.ts","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/components/editor/editor.component.html","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/quill-mention.module.ts","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/quill-mention.api.ts","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/cleavelandprice-ngx-lib-quill-mention.ts"],"sourcesContent":["import { Component, OnInit, forwardRef, inject, model } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n//import { FormGroup } from '@angular/forms';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ActiveDirectoryService, User } from '@cleavelandprice/ngx-lib/active-directory';\n\nimport 'quill-mention';\n\n//#region Moved to client responsibility\n//import Quill from 'quill';\n\n// This doesn't work when done from the library - it must be done from the client app\n//import ImageResize from 'quill-image-resize-module';\n//Quill.register('modules/imageResize', ImageResize);\n\n// Treating ImageDrop the same way as ImageResize, even though it doesn't have the same problem described above\n//import { ImageDrop } from 'quill-image-drop-module';\n\n//#endregion\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditorComponent as EditorComponentBase } from '@cleavelandprice/ngx-lib/quill';\nimport { QuillEditorComponent } from 'ngx-quill';\nimport { DialogData } from '../../model/dialog-data';\n\n@Component({\n selector: 'cpquill-editor-with-mention',\n templateUrl: './editor.component.html',\n styleUrl: './editor.component.scss',\n standalone: true,\n imports: [\n FormsModule,\n MatIcon,\n MatTooltip,\n NgTemplateOutlet,\n QuillEditorComponent,\n ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true\n }]\n})\nexport class EditorComponent extends EditorComponentBase implements OnInit, ControlValueAccessor {\n override writeValue(obj: any): void {\n throw new Error('Method not implemented.');\n }\n override registerOnChange(fn: any): void {\n throw new Error('Method not implemented.');\n }\n override registerOnTouched(fn: any): void {\n throw new Error('Method not implemented.');\n }\n setDisabledState?(isDisabled: boolean): void {\n throw new Error('Method not implemented.');\n }\n users = model<User[]>();\n\n #dlgRef = inject(MatDialogRef<EditorComponent>, { optional: true });\n #dlg = inject(MatDialog);\n #activeDirectoryService = inject(ActiveDirectoryService);\n \n override ngOnInit(): void {\n this.initialize();\n \n if (!this.users()) {\n this.#activeDirectoryService.getUsers().subscribe(users =>\n this.users.set(users)\n );\n }\n }\n\n override toggleFullscreen(): void {\n if (this.fullscreenMode() === 'expand') {\n this.fullscreen.set(!this.fullscreen());\n this.fullscreenChanged.emit(this.fullscreen()!);\n }\n else {\n if (this.fullscreen()) {\n this.#dlgRef?.close(this.value);\n this.fullscreenChanged.emit(false);\n } else {\n const data: DialogData = {\n\n value: this.value,\n config: this.config(),\n placeholder: this.placeholder(),\n format: this.format()!,\n height: this.fullscreenHeight()!,\n width: '100%',\n maxHeight: this.fullscreenHeight()!,\n maxWidth: '100%',\n enableTooltips: this.enableTooltips()!,\n fullscreen: true,\n fullscreenMode: this.fullscreenMode()!,\n readonly: this.readonly()!,\n applyReadonlyStyle: this.applyReadonlyStyle()!,\n showToolbar: this.showToolbar()!,\n showBorder: this.showBorder()!,\n imageResizeModule: this.imageResizeModule()!,\n imageDropModule: this.imageDropModule()!,\n syntaxModule: this.syntaxModule()!,\n users: this.users()\n };\n\n this.#dlg.open(EditorComponent, {\n disableClose: true,\n width: this.fullscreenWidth(),\n height: this.fullscreenHeight(),\n data\n })\n .afterClosed()\n .subscribe(value => {\n this.value = value;\n this.updateChanges();\n });\n\n this.fullscreenChanged.emit(true);\n }\n }\n }\n\n override get modules() {\n if (!this.users()) { return {}; }\n\n const modules = {\n mention: {\n allowedChars: /^[A-Za-z\\sÅÄÖåäö]*$/,\n\n onSelect: (item: DOMStringMap, insertItem: any) => {\n const editor = this.editor()!.quillEditor\n insertItem(item)\n // necessary because quill-mention triggers changes as 'api' instead of 'user'\n editor.insertText(editor.getLength() - 1, '', 'user')\n },\n\n source: (searchTerm: string, renderList: any) => {\n if (searchTerm.length === 0) {\n renderList(this.users()?.map(u => ({ value: `${u.displayName} (${u.sAMAccountName.toLowerCase()})` })), searchTerm)\n } else {\n const matches: any[] = []\n\n this.users()!.forEach((entry) => {\n if (\n (entry.displayName ?? entry.name).toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1 ||\n entry.sAMAccountName.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1\n ) {\n matches.push({ value: `${entry.displayName} (${entry.sAMAccountName.toLowerCase()})` })\n }\n })\n\n renderList(matches, searchTerm)\n }\n }\n }\n };\n\n if (!this.showToolbar()) {\n modules['toolbar'] = [];\n }\n\n if (this.imageResizeModule()) {\n modules['imageResize'] = {};\n }\n\n if (this.imageDropModule()) {\n modules['imageDrop'] = true;\n }\n\n if (this.syntaxModule()) {\n modules['syntax'] = true;\n }\n\n return modules;\n }\n}","@if (users()) {\n <form>\n <quill-editor name=\"editor\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n [placeholder]=\"placeholder() ?? ''\"\n [format]=\"format()\"\n [style.height]=\"fullscreen() ? fullscreenHeight() : height()\"\n [style.width]=\"fullscreen() ? fullscreenWidth() : width()\"\n [readOnly]=\"readonly() ?? false\"\n [class.readonly]=\"readonly() && applyReadonlyStyle()\"\n [class.no-toolbar]=\"!showToolbar()\"\n [class.no-border]=\"!showBorder()\"\n [modules]=\"modules\"\n (onBlur)=\"onBlur.emit($event)\"\n (onContentChanged)=\"onContentChanged.emit($event)\"\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\n (onEditorCreated)=\"onEditorCreated.emit()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\n @if (showToolbar()) {\n <div quill-editor-toolbar>\n <ng-container [ngTemplateOutlet]=\"toolbar\"/>\n <ng-container [ngTemplateOutlet]=\"editorSize\"/>\n </div>\n }\n </quill-editor>\n </form>\n}\n\n<ng-template #toolbar>\n <div>\n <ng-container [ngTemplateOutlet]=\"fontStyle\"/>\n <ng-container [ngTemplateOutlet]=\"blockStyle\"/>\n <ng-container [ngTemplateOutlet]=\"headingStyle\"/>\n <ng-container [ngTemplateOutlet]=\"listStyle\"/>\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"/>\n <ng-container [ngTemplateOutlet]=\"indentStyle\"/>\n <ng-container [ngTemplateOutlet]=\"rtl\"/>\n <ng-container [ngTemplateOutlet]=\"fontSize\"/>\n <ng-container [ngTemplateOutlet]=\"heading\"/>\n <ng-container [ngTemplateOutlet]=\"color\"/>\n <ng-container [ngTemplateOutlet]=\"font\"/>\n <ng-container [ngTemplateOutlet]=\"align\"/>\n <ng-container [ngTemplateOutlet]=\"clean\"/>\n <ng-container [ngTemplateOutlet]=\"formula\"/>\n <ng-container [ngTemplateOutlet]=\"media\"/>\n </div>\n</ng-template>\n\n<ng-template #fontStyle>\n @if (showFontStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.bold!) {\n <button class=\"ql-bold\" [matTooltip]=\"tooltip(config()!.tooltips!.bold!)\"></button>\n }\n @if (config()!.buttons!.italic!) {\n <button class=\"ql-italic\" [matTooltip]=\"tooltip(config()!.tooltips!.italic!)\"></button>\n }\n @if (config()!.buttons!.underline!) {\n <button class=\"ql-underline\" [matTooltip]=\"tooltip(config()!.tooltips!.underline!)\"></button>\n }\n @if (config()!.buttons!.strike!) {\n <button class=\"ql-strike\" [matTooltip]=\"tooltip(config()!.tooltips!.strike!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #blockStyle>\n @if (showBlockStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.blockquote!) {\n <button class=\"ql-blockquote\" [matTooltip]=\"tooltip(config()!.tooltips!.blockquote!)\"></button>\n }\n @if (config()!.buttons!.codeblock!) {\n <button class=\"ql-code-block\" [matTooltip]=\"tooltip(config()!.tooltips!.codeblock!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #headingStyle>\n @if (showQuickHeadingStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.h1!) {\n <button class=\"ql-header\" value=\"1\" [matTooltip]=\"tooltip(config()!.tooltips!.h1!)\"></button>\n }\n @if (config()!.buttons!.h2!) {\n <button class=\"ql-header\" value=\"2\" [matTooltip]=\"tooltip(config()!.tooltips!.h2!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #listStyle>\n @if (showListStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.ordered!) {\n <button class=\"ql-list\" value=\"ordered\" [matTooltip]=\"tooltip(config()!.tooltips!.ordered!)\"></button>\n }\n @if (config()!.buttons!.bulleted!) {\n <button class=\"ql-list\" value=\"bullet\" [matTooltip]=\"tooltip(config()!.tooltips!.bulleted!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #scriptStyle>\n @if (showScriptStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.subScript!) {\n <button class=\"ql-script\" value=\"sub\" [matTooltip]=\"tooltip(config()!.tooltips!.subScript!)\"></button>\n }\n @if (config()!.buttons!.superScript!) {\n <button class=\"ql-script\" value=\"super\" [matTooltip]=\"tooltip(config()!.tooltips!.superScript!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #indentStyle>\n @if (showIndentStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.decreaseIndent!) {\n <button class=\"ql-indent\" value=\"-1\" [matTooltip]=\"tooltip(config()!.tooltips!.decreaseIndent!)\"></button>\n }\n @if (config()!.buttons!.increaseIndent!) {\n <button class=\"ql-indent\" value=\"+1\" [matTooltip]=\"tooltip(config()!.tooltips!.increaseIndent!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #rtl>\n @if (config()!.buttons!.rtl!) {\n <span class=\"ql-formats\">\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config()!.tooltips!.rtl!)\"></button>\n </span>\n }\n</ng-template>\n\n<ng-template #fontSize>\n @if (config()!.buttons!.fontSize!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.fontSize!)\">\n <select class=\"ql-size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #heading>\n @if (config()!.buttons!.headingStyle!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.headingStyle!)\">\n <select class=\"ql-header\">\n <option value=\"1\"></option>\n <option value=\"2\"></option>\n <option value=\"3\"></option>\n <option value=\"4\"></option>\n <option value=\"5\"></option>\n <option value=\"6\"></option>\n <option selected=\"selected\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #color>\n @if (config()!.buttons!.color!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.color!)\">\n <select class=\"ql-color\"></select>\n <select class=\"ql-background\"></select>\n </span>\n }\n</ng-template>\n\n<ng-template #font>\n @if (config()!.buttons!.font!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.font!)\">\n <select class=\"ql-font\">\n <option selected></option>\n <option value=\"serif\"></option>\n <option value=\"monospace\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #align>\n @if (config()!.buttons!.align!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.align!)\">\n <select class=\"ql-align\">\n <option selected></option>\n <option value=\"center\"></option>\n <option value=\"right\"></option>\n <option value=\"justify\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #clean>\n @if (config()!.buttons!.clean!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.clean!)\">\n <button class=\"ql-clean\"></button>\n </span>\n }\n</ng-template>\n\n<ng-template #media>\n @if (showMedia) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.link!) {\n <button class=\"ql-link\" [matTooltip]=\"tooltip(config()!.tooltips!.link!)\"></button>\n }\n @if (config()!.buttons!.image!) {\n <button class=\"ql-image\" [matTooltip]=\"tooltip(config()!.tooltips!.image!)\"></button>\n }\n @if (config()!.buttons!.video!) {\n <button class=\"ql-video\" [matTooltip]=\"tooltip(config()!.tooltips!.video!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #editorSize>\n <div>\n @if (config()!.buttons!.rawEditor!) {\n <span class=\"ql-formats\">\n <button id=\"rawdog\"\n [matTooltip]=\"tooltip(config()!.tooltips!.rawEditor!)\">\n <mat-icon (click)=\"rawEdit()\">\n code\n </mat-icon>\n </button>\n </span>\n }\n\n @if (config()!.buttons!.editorSize!) {\n <span class=\"ql-formats\">\n <button id=\"fullscreen\"\n [matTooltip]=\"tooltip(fullscreen() ?\n (fullscreenMode() === 'expand' ? config()!.tooltips!.minimize! : config()!.tooltips!.popin!) :\n (fullscreenMode() === 'expand' ? config()!.tooltips!.maximize! : config()!.tooltips!.popout!))\">\n <mat-icon (click)=\"toggleFullscreen()\">\n {{ fullscreen() ?\n (fullscreenMode() === 'expand' ? config()!.icons!.minimize! : config()!.icons!.popin!) :\n (fullscreenMode() === 'expand' ? config()!.icons!.maximize! : config()!.icons!.popout!)\n }}\n </mat-icon>\n </button>\n </span>\n }\n </div>\n</ng-template>\n\n<ng-template #formula>\n @if (config()!.buttons!.formula!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.formula!)\">\n <button class=\"ql-formula\"></button>\n </span>\n }\n</ng-template>","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { QuillModule as NgxQuillModule } from 'ngx-quill';\r\nimport { EditorComponent } from './components/editor/editor.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n\r\n NgxQuillModule.forRoot(),\r\n\r\n EditorComponent\r\n ],\r\n exports: [\r\n EditorComponent\r\n ]\r\n})\r\nexport class QuillMentionModule {\r\n static forRoot(): ModuleWithProviders<QuillMentionModule> {\r\n return {\r\n ngModule: QuillMentionModule\r\n };\r\n }\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: QuillMentionModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'QuillMentionModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}","/*export * from './model/buttons';\r\nexport * from './model/config';\r\nexport * from './model/dialog-data';\r\nexport * from './model/icons';\r\nexport * from './model/tooltips';*/\r\n\r\nexport { Buttons, Config, DefaultButtons, DefaultConfig, DefaultIcons, DefaultTooltips, DialogData, Icons, Tooltips } from '@cleavelandprice/ngx-lib/quill';\r\n\r\nexport * from './components/editor/editor.component';\r\n\r\nexport * from './quill-mention.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './quill-mention.api';\n"],"names":["EditorComponentBase","i1","NgxQuillModule"],"mappings":"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"}
1
+ {"version":3,"file":"cleavelandprice-ngx-lib-quill-mention.mjs","sources":["../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/components/editor/editor.component.ts","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/components/editor/editor.component.html","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/quill-mention.module.ts","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/quill-mention.api.ts","../../../../projects/cleavelandprice/ngx-lib/quill/mention/src/cleavelandprice-ngx-lib-quill-mention.ts"],"sourcesContent":["import { Component, OnInit, forwardRef, inject, model } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n//import { FormGroup } from '@angular/forms';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ActiveDirectoryService, User } from '@cleavelandprice/ngx-lib/active-directory';\n\nimport 'quill-mention';\n\n//#region Moved to client responsibility\n//import Quill from 'quill';\n\n// This doesn't work when done from the library - it must be done from the client app\n//import ImageResize from 'quill-image-resize-module';\n//Quill.register('modules/imageResize', ImageResize);\n\n// Treating ImageDrop the same way as ImageResize, even though it doesn't have the same problem described above\n//import { ImageDrop } from 'quill-image-drop-module';\n\n//#endregion\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EditorComponent as EditorComponentBase } from '@cleavelandprice/ngx-lib/quill';\nimport { QuillEditorComponent } from 'ngx-quill';\nimport { DialogData } from '../../model/dialog-data';\n\n@Component({\n selector: 'cpquill-editor-with-mention',\n templateUrl: './editor.component.html',\n styleUrl: './editor.component.scss',\n standalone: true,\n imports: [\n FormsModule,\n MatIcon,\n MatTooltip,\n NgTemplateOutlet,\n QuillEditorComponent,\n ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true\n }]\n})\nexport class EditorComponent extends EditorComponentBase implements OnInit, ControlValueAccessor {\n users = model<User[]>();\n\n #dlgRef = inject(MatDialogRef<EditorComponent>, { optional: true });\n #dlg = inject(MatDialog);\n #activeDirectoryService = inject(ActiveDirectoryService);\n \n override ngOnInit(): void {\n this.initialize();\n \n if (!this.users()) {\n this.#activeDirectoryService.getUsers().subscribe(users =>\n this.users.set(users)\n );\n }\n }\n\n override toggleFullscreen(): void {\n if (this.fullscreenMode() === 'expand') {\n this.fullscreen.set(!this.fullscreen());\n this.fullscreenChanged.emit(this.fullscreen()!);\n }\n else {\n if (this.fullscreen()) {\n this.#dlgRef?.close(this.value);\n this.fullscreenChanged.emit(false);\n } else {\n const data: DialogData = {\n\n value: this.value,\n config: this.config(),\n placeholder: this.placeholder(),\n format: this.format()!,\n height: this.fullscreenHeight()!,\n width: '100%',\n maxHeight: this.fullscreenHeight()!,\n maxWidth: '100%',\n enableTooltips: this.enableTooltips()!,\n fullscreen: true,\n fullscreenMode: this.fullscreenMode()!,\n readonly: this.readonly()!,\n applyReadonlyStyle: this.applyReadonlyStyle()!,\n showToolbar: this.showToolbar()!,\n showBorder: this.showBorder()!,\n imageResizeModule: this.imageResizeModule()!,\n imageDropModule: this.imageDropModule()!,\n syntaxModule: this.syntaxModule()!,\n users: this.users()\n };\n\n this.#dlg.open(EditorComponent, {\n disableClose: true,\n width: this.fullscreenWidth(),\n height: this.fullscreenHeight(),\n data\n })\n .afterClosed()\n .subscribe(value => {\n this.value = value;\n this.updateChanges();\n });\n\n this.fullscreenChanged.emit(true);\n }\n }\n }\n\n override get modules() {\n if (!this.users()) { return {}; }\n\n const modules = {\n mention: {\n allowedChars: /^[A-Za-z\\sÅÄÖåäö]*$/,\n\n onSelect: (item: DOMStringMap, insertItem: any) => {\n const editor = this.editor()!.quillEditor\n insertItem(item)\n // necessary because quill-mention triggers changes as 'api' instead of 'user'\n editor.insertText(editor.getLength() - 1, '', 'user')\n },\n\n source: (searchTerm: string, renderList: any) => {\n if (searchTerm.length === 0) {\n renderList(this.users()?.map(u => ({ value: `${u.displayName} (${u.sAMAccountName.toLowerCase()})` })), searchTerm)\n } else {\n const matches: any[] = []\n\n this.users()!.forEach((entry) => {\n if (\n (entry.displayName ?? entry.name).toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1 ||\n entry.sAMAccountName.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1\n ) {\n matches.push({ value: `${entry.displayName} (${entry.sAMAccountName.toLowerCase()})` })\n }\n })\n\n renderList(matches, searchTerm)\n }\n }\n }\n };\n\n if (!this.showToolbar()) {\n modules['toolbar'] = [];\n }\n\n if (this.imageResizeModule()) {\n modules['imageResize'] = {};\n }\n\n if (this.imageDropModule()) {\n modules['imageDrop'] = true;\n }\n\n if (this.syntaxModule()) {\n modules['syntax'] = true;\n }\n\n return modules;\n }\n}","@if (users()) {\n <form>\n <quill-editor name=\"editor\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"updateChanges()\"\n [placeholder]=\"placeholder() ?? ''\"\n [format]=\"format()\"\n [style.height]=\"fullscreen() ? fullscreenHeight() : height()\"\n [style.width]=\"fullscreen() ? fullscreenWidth() : width()\"\n [readOnly]=\"readonly() ?? false\"\n [class.readonly]=\"readonly() && applyReadonlyStyle()\"\n [class.no-toolbar]=\"!showToolbar()\"\n [class.no-border]=\"!showBorder()\"\n [modules]=\"modules\"\n (onBlur)=\"onBlur.emit($event)\"\n (onContentChanged)=\"onContentChanged.emit($event)\"\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\n (onEditorCreated)=\"onEditorCreated.emit()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\n @if (showToolbar()) {\n <div quill-editor-toolbar>\n <ng-container [ngTemplateOutlet]=\"toolbar\"/>\n <ng-container [ngTemplateOutlet]=\"editorSize\"/>\n </div>\n }\n </quill-editor>\n </form>\n}\n\n<ng-template #toolbar>\n <div>\n <ng-container [ngTemplateOutlet]=\"fontStyle\"/>\n <ng-container [ngTemplateOutlet]=\"blockStyle\"/>\n <ng-container [ngTemplateOutlet]=\"headingStyle\"/>\n <ng-container [ngTemplateOutlet]=\"listStyle\"/>\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"/>\n <ng-container [ngTemplateOutlet]=\"indentStyle\"/>\n <ng-container [ngTemplateOutlet]=\"rtl\"/>\n <ng-container [ngTemplateOutlet]=\"fontSize\"/>\n <ng-container [ngTemplateOutlet]=\"heading\"/>\n <ng-container [ngTemplateOutlet]=\"color\"/>\n <ng-container [ngTemplateOutlet]=\"font\"/>\n <ng-container [ngTemplateOutlet]=\"align\"/>\n <ng-container [ngTemplateOutlet]=\"clean\"/>\n <ng-container [ngTemplateOutlet]=\"formula\"/>\n <ng-container [ngTemplateOutlet]=\"media\"/>\n </div>\n</ng-template>\n\n<ng-template #fontStyle>\n @if (showFontStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.bold!) {\n <button class=\"ql-bold\" [matTooltip]=\"tooltip(config()!.tooltips!.bold!)\"></button>\n }\n @if (config()!.buttons!.italic!) {\n <button class=\"ql-italic\" [matTooltip]=\"tooltip(config()!.tooltips!.italic!)\"></button>\n }\n @if (config()!.buttons!.underline!) {\n <button class=\"ql-underline\" [matTooltip]=\"tooltip(config()!.tooltips!.underline!)\"></button>\n }\n @if (config()!.buttons!.strike!) {\n <button class=\"ql-strike\" [matTooltip]=\"tooltip(config()!.tooltips!.strike!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #blockStyle>\n @if (showBlockStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.blockquote!) {\n <button class=\"ql-blockquote\" [matTooltip]=\"tooltip(config()!.tooltips!.blockquote!)\"></button>\n }\n @if (config()!.buttons!.codeblock!) {\n <button class=\"ql-code-block\" [matTooltip]=\"tooltip(config()!.tooltips!.codeblock!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #headingStyle>\n @if (showQuickHeadingStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.h1!) {\n <button class=\"ql-header\" value=\"1\" [matTooltip]=\"tooltip(config()!.tooltips!.h1!)\"></button>\n }\n @if (config()!.buttons!.h2!) {\n <button class=\"ql-header\" value=\"2\" [matTooltip]=\"tooltip(config()!.tooltips!.h2!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #listStyle>\n @if (showListStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.ordered!) {\n <button class=\"ql-list\" value=\"ordered\" [matTooltip]=\"tooltip(config()!.tooltips!.ordered!)\"></button>\n }\n @if (config()!.buttons!.bulleted!) {\n <button class=\"ql-list\" value=\"bullet\" [matTooltip]=\"tooltip(config()!.tooltips!.bulleted!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #scriptStyle>\n @if (showScriptStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.subScript!) {\n <button class=\"ql-script\" value=\"sub\" [matTooltip]=\"tooltip(config()!.tooltips!.subScript!)\"></button>\n }\n @if (config()!.buttons!.superScript!) {\n <button class=\"ql-script\" value=\"super\" [matTooltip]=\"tooltip(config()!.tooltips!.superScript!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #indentStyle>\n @if (showIndentStyle) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.decreaseIndent!) {\n <button class=\"ql-indent\" value=\"-1\" [matTooltip]=\"tooltip(config()!.tooltips!.decreaseIndent!)\"></button>\n }\n @if (config()!.buttons!.increaseIndent!) {\n <button class=\"ql-indent\" value=\"+1\" [matTooltip]=\"tooltip(config()!.tooltips!.increaseIndent!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #rtl>\n @if (config()!.buttons!.rtl!) {\n <span class=\"ql-formats\">\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config()!.tooltips!.rtl!)\"></button>\n </span>\n }\n</ng-template>\n\n<ng-template #fontSize>\n @if (config()!.buttons!.fontSize!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.fontSize!)\">\n <select class=\"ql-size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #heading>\n @if (config()!.buttons!.headingStyle!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.headingStyle!)\">\n <select class=\"ql-header\">\n <option value=\"1\"></option>\n <option value=\"2\"></option>\n <option value=\"3\"></option>\n <option value=\"4\"></option>\n <option value=\"5\"></option>\n <option value=\"6\"></option>\n <option selected=\"selected\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #color>\n @if (config()!.buttons!.color!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.color!)\">\n <select class=\"ql-color\"></select>\n <select class=\"ql-background\"></select>\n </span>\n }\n</ng-template>\n\n<ng-template #font>\n @if (config()!.buttons!.font!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.font!)\">\n <select class=\"ql-font\">\n <option selected></option>\n <option value=\"serif\"></option>\n <option value=\"monospace\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #align>\n @if (config()!.buttons!.align!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.align!)\">\n <select class=\"ql-align\">\n <option selected></option>\n <option value=\"center\"></option>\n <option value=\"right\"></option>\n <option value=\"justify\"></option>\n </select>\n </span>\n }\n</ng-template>\n\n<ng-template #clean>\n @if (config()!.buttons!.clean!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.clean!)\">\n <button class=\"ql-clean\"></button>\n </span>\n }\n</ng-template>\n\n<ng-template #media>\n @if (showMedia) {\n <span class=\"ql-formats\">\n @if (config()!.buttons!.link!) {\n <button class=\"ql-link\" [matTooltip]=\"tooltip(config()!.tooltips!.link!)\"></button>\n }\n @if (config()!.buttons!.image!) {\n <button class=\"ql-image\" [matTooltip]=\"tooltip(config()!.tooltips!.image!)\"></button>\n }\n @if (config()!.buttons!.video!) {\n <button class=\"ql-video\" [matTooltip]=\"tooltip(config()!.tooltips!.video!)\"></button>\n }\n </span>\n }\n</ng-template>\n\n<ng-template #editorSize>\n <div>\n @if (config()!.buttons!.rawEditor!) {\n <span class=\"ql-formats\">\n <button id=\"rawdog\"\n [matTooltip]=\"tooltip(config()!.tooltips!.rawEditor!)\">\n <mat-icon (click)=\"rawEdit()\">\n code\n </mat-icon>\n </button>\n </span>\n }\n\n @if (config()!.buttons!.editorSize!) {\n <span class=\"ql-formats\">\n <button id=\"fullscreen\"\n [matTooltip]=\"tooltip(fullscreen() ?\n (fullscreenMode() === 'expand' ? config()!.tooltips!.minimize! : config()!.tooltips!.popin!) :\n (fullscreenMode() === 'expand' ? config()!.tooltips!.maximize! : config()!.tooltips!.popout!))\">\n <mat-icon (click)=\"toggleFullscreen()\">\n {{ fullscreen() ?\n (fullscreenMode() === 'expand' ? config()!.icons!.minimize! : config()!.icons!.popin!) :\n (fullscreenMode() === 'expand' ? config()!.icons!.maximize! : config()!.icons!.popout!)\n }}\n </mat-icon>\n </button>\n </span>\n }\n </div>\n</ng-template>\n\n<ng-template #formula>\n @if (config()!.buttons!.formula!) {\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.formula!)\">\n <button class=\"ql-formula\"></button>\n </span>\n }\n</ng-template>","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { QuillModule as NgxQuillModule } from 'ngx-quill';\r\nimport { EditorComponent } from './components/editor/editor.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n\r\n NgxQuillModule.forRoot(),\r\n\r\n EditorComponent\r\n ],\r\n exports: [\r\n EditorComponent\r\n ]\r\n})\r\nexport class QuillMentionModule {\r\n static forRoot(): ModuleWithProviders<QuillMentionModule> {\r\n return {\r\n ngModule: QuillMentionModule\r\n };\r\n }\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: QuillMentionModule) {\r\n if (parentModule) {\r\n throw new Error(\r\n 'QuillMentionModule is already loaded. Import it in the AppModule only');\r\n }\r\n }\r\n}","/*export * from './model/buttons';\r\nexport * from './model/config';\r\nexport * from './model/dialog-data';\r\nexport * from './model/icons';\r\nexport * from './model/tooltips';*/\r\n\r\nexport { Buttons, Config, DefaultButtons, DefaultConfig, DefaultIcons, DefaultTooltips, DialogData, Icons, Tooltips } from '@cleavelandprice/ngx-lib/quill';\r\n\r\nexport * from './components/editor/editor.component';\r\n\r\nexport * from './quill-mention.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './quill-mention.api';\n"],"names":["EditorComponentBase","i1","NgxQuillModule"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "comment": "NGX-LIB primary entry point package.json",
3
3
  "name": "@cleavelandprice/ngx-lib",
4
- "version": "4.2.0",
4
+ "version": "4.2.1",
5
5
  "description": "Angular library providing foundational functionality to Cleaveland-Price applications",
6
6
  "peerDependencies": {
7
7
  "@angular/common": "^17.3.5",
@@ -41,11 +41,11 @@
41
41
  "esm": "./esm2022/active-directory/cleavelandprice-ngx-lib-active-directory.mjs",
42
42
  "default": "./fesm2022/cleavelandprice-ngx-lib-active-directory.mjs"
43
43
  },
44
- "./authentication": {
45
- "types": "./authentication/index.d.ts",
46
- "esm2022": "./esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs",
47
- "esm": "./esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs",
48
- "default": "./fesm2022/cleavelandprice-ngx-lib-authentication.mjs"
44
+ "./msgraph": {
45
+ "types": "./msgraph/index.d.ts",
46
+ "esm2022": "./esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs",
47
+ "esm": "./esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs",
48
+ "default": "./fesm2022/cleavelandprice-ngx-lib-msgraph.mjs"
49
49
  },
50
50
  "./dialog": {
51
51
  "types": "./dialog/index.d.ts",
@@ -53,11 +53,11 @@
53
53
  "esm": "./esm2022/dialog/cleavelandprice-ngx-lib-dialog.mjs",
54
54
  "default": "./fesm2022/cleavelandprice-ngx-lib-dialog.mjs"
55
55
  },
56
- "./msgraph": {
57
- "types": "./msgraph/index.d.ts",
58
- "esm2022": "./esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs",
59
- "esm": "./esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs",
60
- "default": "./fesm2022/cleavelandprice-ngx-lib-msgraph.mjs"
56
+ "./authentication": {
57
+ "types": "./authentication/index.d.ts",
58
+ "esm2022": "./esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs",
59
+ "esm": "./esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs",
60
+ "default": "./fesm2022/cleavelandprice-ngx-lib-authentication.mjs"
61
61
  },
62
62
  "./quill": {
63
63
  "types": "./quill/index.d.ts",
@@ -71,18 +71,18 @@
71
71
  "esm": "./esm2022/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs",
72
72
  "default": "./fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs"
73
73
  },
74
- "./table": {
75
- "types": "./table/index.d.ts",
76
- "esm2022": "./esm2022/table/cleavelandprice-ngx-lib-table.mjs",
77
- "esm": "./esm2022/table/cleavelandprice-ngx-lib-table.mjs",
78
- "default": "./fesm2022/cleavelandprice-ngx-lib-table.mjs"
79
- },
80
74
  "./upload": {
81
75
  "types": "./upload/index.d.ts",
82
76
  "esm2022": "./esm2022/upload/cleavelandprice-ngx-lib-upload.mjs",
83
77
  "esm": "./esm2022/upload/cleavelandprice-ngx-lib-upload.mjs",
84
78
  "default": "./fesm2022/cleavelandprice-ngx-lib-upload.mjs"
85
79
  },
80
+ "./table": {
81
+ "types": "./table/index.d.ts",
82
+ "esm2022": "./esm2022/table/cleavelandprice-ngx-lib-table.mjs",
83
+ "esm": "./esm2022/table/cleavelandprice-ngx-lib-table.mjs",
84
+ "default": "./fesm2022/cleavelandprice-ngx-lib-table.mjs"
85
+ },
86
86
  "./url-utilities": {
87
87
  "types": "./url-utilities/index.d.ts",
88
88
  "esm2022": "./esm2022/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs",
@@ -95,18 +95,18 @@
95
95
  "esm": "./esm2022/active-directory/material/cleavelandprice-ngx-lib-active-directory-material.mjs",
96
96
  "default": "./fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs"
97
97
  },
98
- "./authentication/material": {
99
- "types": "./authentication/material/index.d.ts",
100
- "esm2022": "./esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs",
101
- "esm": "./esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs",
102
- "default": "./fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs"
103
- },
104
98
  "./authentication/object": {
105
99
  "types": "./authentication/object/index.d.ts",
106
100
  "esm2022": "./esm2022/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs",
107
101
  "esm": "./esm2022/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs",
108
102
  "default": "./fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs"
109
103
  },
104
+ "./authentication/material": {
105
+ "types": "./authentication/material/index.d.ts",
106
+ "esm2022": "./esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs",
107
+ "esm": "./esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs",
108
+ "default": "./fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs"
109
+ },
110
110
  "./authentication/token": {
111
111
  "types": "./authentication/token/index.d.ts",
112
112
  "esm2022": "./esm2022/authentication/token/cleavelandprice-ngx-lib-authentication-token.mjs",
@@ -6,10 +6,6 @@ import { EditorComponent as EditorComponentBase } from '@cleavelandprice/ngx-lib
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class EditorComponent extends EditorComponentBase implements OnInit, ControlValueAccessor {
8
8
  #private;
9
- writeValue(obj: any): void;
10
- registerOnChange(fn: any): void;
11
- registerOnTouched(fn: any): void;
12
- setDisabledState?(isDisabled: boolean): void;
13
9
  users: import("@angular/core").ModelSignal<User[] | undefined>;
14
10
  ngOnInit(): void;
15
11
  toggleFullscreen(): void;