@cuby-ui/core 0.0.330 → 0.0.332

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.
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from '@angular/core';
1
2
  import type { CuiFileData } from '../../interfaces/file-response-data';
2
3
  import { EditorToolComponent } from '../editor-tool/editor-tool.component';
3
4
  import * as i0 from "@angular/core";
@@ -35,10 +36,12 @@ export declare class EditorAttachesToolComponent extends EditorToolComponent {
35
36
  };
36
37
  file?: CuiFileData;
37
38
  title: string;
39
+ readonly fileClicked: EventEmitter<CuiFileData>;
38
40
  protected get color(): string;
39
41
  protected get isShowLoadButton(): boolean;
42
+ protected onFileClick(): void;
40
43
  protected onPreventEnter(event: KeyboardEvent): void;
41
44
  private checkKey;
42
45
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorAttachesToolComponent, never>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<EditorAttachesToolComponent, "ng-component", never, { "file": { "alias": "file"; "required": true; }; "title": { "alias": "title"; "required": true; }; }, {}, never, never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<EditorAttachesToolComponent, "ng-component", never, { "file": { "alias": "file"; "required": true; }; "title": { "alias": "title"; "required": true; }; }, { "fileClicked": "fileClicked"; }, never, never, true, never>;
44
47
  }
@@ -4,6 +4,7 @@ import { CuiFileUploaderConfig } from '../../utils/file-uploader';
4
4
  export declare const EDITOR_ATTACHES_TOOL_SELECTOR = "cc-editor-attaches-tool";
5
5
  export interface CuiAttachesToolConfig extends CuiFileUploaderConfig {
6
6
  readonly buttonContent: string;
7
+ readonly fileClicked: (file: CuiFileData) => void;
7
8
  }
8
9
  export interface CuiAttachesToolOptions {
9
10
  readonly api: API;
@@ -3,25 +3,27 @@ import type { CuiFileData } from '../interfaces';
3
3
  import type { CuiAttachesToolConfig, CuiAttachesToolData } from '../components/editor-attaches-tool/editor-attaches-tool.options';
4
4
  import { CuiFileUploader } from '../utils/file-uploader';
5
5
  export declare class CuiAttachesTool {
6
+ private readonly abortController;
7
+ private readonly abortSignal;
8
+ private attachesTool;
9
+ private selectedFile;
6
10
  api: API;
7
11
  config: CuiAttachesToolConfig;
8
12
  blockApi?: BlockAPI;
9
13
  readOnly: boolean;
10
14
  data: CuiAttachesToolData;
11
15
  uploader: CuiFileUploader;
12
- private attachesTool;
13
- private selectedFile;
14
16
  static get isReadOnlySupported(): boolean;
15
17
  static get toolbox(): ToolboxConfig;
16
18
  constructor(options: {
17
19
  api: API;
18
20
  });
19
- onSelectFile: () => void;
20
- appendCallback(): void;
21
21
  render(): HTMLElement;
22
22
  save(): CuiAttachesToolData;
23
23
  removed(): void;
24
- changeCaption(event: Event): void;
24
+ changeCaption: (event: Event) => void;
25
+ selectFile: () => void;
26
+ clickFile: () => void;
25
27
  set file(file: CuiFileData);
26
28
  private onUpload;
27
29
  private uploadingFailed;
@@ -1,5 +1,5 @@
1
1
  import { NgIf, UpperCasePipe } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { TranslocoDirective } from '@jsverse/transloco';
5
5
  import { CuiSvgModule } from '../../../components';
@@ -41,6 +41,7 @@ export class EditorAttachesToolComponent extends EditorToolComponent {
41
41
  json: '#2988f0',
42
42
  csv: '#11AE3D'
43
43
  };
44
+ this.fileClicked = new EventEmitter();
44
45
  }
45
46
  get color() {
46
47
  return this.Extensions[this.file?.extension];
@@ -48,6 +49,9 @@ export class EditorAttachesToolComponent extends EditorToolComponent {
48
49
  get isShowLoadButton() {
49
50
  return !this.file && !this.isCaptionShown && !this.isLoading;
50
51
  }
52
+ onFileClick() {
53
+ this.fileClicked.emit(this.file);
54
+ }
51
55
  onPreventEnter(event) {
52
56
  if (this.checkKey(event)) {
53
57
  return;
@@ -59,18 +63,20 @@ export class EditorAttachesToolComponent extends EditorToolComponent {
59
63
  return event.key !== 'Enter';
60
64
  }
61
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorAttachesToolComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EditorAttachesToolComponent, isStandalone: true, selector: "ng-component", inputs: { file: "file", title: "title" }, host: { properties: { "class._hidden": "isShowLoadButton" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i1.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EditorAttachesToolComponent, isStandalone: true, selector: "ng-component", inputs: { file: "file", title: "title" }, outputs: { fileClicked: "fileClicked" }, host: { properties: { "class._hidden": "isShowLoadButton" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n (click)=\"onFileClick()\"\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i1.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
67
  }
64
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorAttachesToolComponent, decorators: [{
65
69
  type: Component,
66
70
  args: [{ standalone: true, imports: [CuiSvgModule, FileSizePipe, FormsModule, UpperCasePipe, NgIf, TranslocoDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
67
71
  '[class._hidden]': 'isShowLoadButton'
68
- }, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"] }]
72
+ }, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n (click)=\"onFileClick()\"\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"] }]
69
73
  }], propDecorators: { file: [{
70
74
  type: Input,
71
75
  args: [{ required: true }]
72
76
  }], title: [{
73
77
  type: Input,
74
78
  args: [{ required: true }]
79
+ }], fileClicked: [{
80
+ type: Output
75
81
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWF0dGFjaGVzLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3ItYXR0YWNoZXMtdG9vbC9lZGl0b3ItYXR0YWNoZXMtdG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL2VkaXRvci1hdHRhY2hlcy10b29sL2VkaXRvci1hdHRhY2hlcy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVkxRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsbUJBQW1CO0lBVnBFOztRQVd1QixlQUFVLEdBQUc7WUFDNUIsR0FBRyxFQUFFLFNBQVM7WUFDZCxJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsSUFBSSxFQUFFLFNBQVM7WUFDZixHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLElBQUksRUFBRSxTQUFTO1lBQ2YsR0FBRyxFQUFFLFNBQVM7U0FDakIsQ0FBQztLQTRCTDtJQXBCRyxJQUFjLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUF5QyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELElBQWMsZ0JBQWdCO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakUsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFvQjtRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFvQjtRQUNqQyxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDO0lBQ2pDLENBQUM7K0dBMURRLDJCQUEyQjttR0FBM0IsMkJBQTJCLHdNQ3BCeEMsa3JEQWlEQSxvd0REckNjLFlBQVksbUtBQUUsWUFBWSxnREFBRSxXQUFXLDBCQUFFLGFBQWEsa0RBQUUsSUFBSSw2RkFBRSxrQkFBa0I7OzRGQVFqRiwyQkFBMkI7a0JBVnZDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxtQkFHMUUsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixpQkFBaUIsRUFBRSxrQkFBa0I7cUJBQ3hDOzhCQW9DTSxJQUFJO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlsQixLQUFLO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgQ3VpU3ZnTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB0eXBlIHsgQ3VpRmlsZURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZpbGUtcmVzcG9uc2UtZGF0YSc7XHJcbmltcG9ydCB7IEVkaXRvclRvb2xDb21wb25lbnQgfSBmcm9tICcuLi9lZGl0b3ItdG9vbC9lZGl0b3ItdG9vbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlU2l6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9maWxlLXNpemUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ3VpU3ZnTW9kdWxlLCBGaWxlU2l6ZVBpcGUsIEZvcm1zTW9kdWxlLCBVcHBlckNhc2VQaXBlLCBOZ0lmLCBUcmFuc2xvY29EaXJlY3RpdmVdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci1hdHRhY2hlcy10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2VkaXRvci1hdHRhY2hlcy10b29sLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnW2NsYXNzLl9oaWRkZW5dJzogJ2lzU2hvd0xvYWRCdXR0b24nXHJcbiAgICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JBdHRhY2hlc1Rvb2xDb21wb25lbnQgZXh0ZW5kcyBFZGl0b3JUb29sQ29tcG9uZW50IHtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBFeHRlbnNpb25zID0ge1xyXG4gICAgICAgIGRvYzogJyMxNDgzRTknLFxyXG4gICAgICAgIGRvY3g6ICcjMTQ4M0U5JyxcclxuICAgICAgICBvZHQ6ICcjMTQ4M0U5JyxcclxuICAgICAgICBwZGY6ICcjREIyRjJGJyxcclxuICAgICAgICBydGY6ICcjNzQ0RkRDJyxcclxuICAgICAgICB0ZXg6ICcjNWE1YTViJyxcclxuICAgICAgICB0eHQ6ICcjNWE1YTViJyxcclxuICAgICAgICBwcHR4OiAnI0UzNTIwMCcsXHJcbiAgICAgICAgcHB0OiAnI0UzNTIwMCcsXHJcbiAgICAgICAgbXAzOiAnI2VhYjQ1NicsXHJcbiAgICAgICAgbXA0OiAnI2Y2NzZhNicsXHJcbiAgICAgICAgeGxzOiAnIzExQUUzRCcsXHJcbiAgICAgICAgaHRtbDogJyMyOTg4ZjAnLFxyXG4gICAgICAgIGh0bTogJyMyOTg4ZjAnLFxyXG4gICAgICAgIHBuZzogJyNBQTIyODQnLFxyXG4gICAgICAgIGpwZzogJyNEMTMzNTknLFxyXG4gICAgICAgIGpwZWc6ICcjRDEzMzU5JyxcclxuICAgICAgICBnaWY6ICcjZjZhZjc2JyxcclxuICAgICAgICB6aXA6ICcjNGY1NjZmJyxcclxuICAgICAgICByYXI6ICcjNGY1NjZmJyxcclxuICAgICAgICBleGU6ICcjZTI2ZjZmJyxcclxuICAgICAgICBzdmc6ICcjYmY1MjUyJyxcclxuICAgICAgICBrZXk6ICcjMDBCMkZGJyxcclxuICAgICAgICBza2V0Y2g6ICcjRkZDNzAwJyxcclxuICAgICAgICBhaTogJyNGQjYwMUQnLFxyXG4gICAgICAgIHBzZDogJyMzODhhZTUnLFxyXG4gICAgICAgIGRtZzogJyNlMjZmNmYnLFxyXG4gICAgICAgIGpzb246ICcjMjk4OGYwJyxcclxuICAgICAgICBjc3Y6ICcjMTFBRTNEJ1xyXG4gICAgfTtcclxuXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGZpbGU/OiBDdWlGaWxlRGF0YTtcclxuXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHRpdGxlITogc3RyaW5nO1xyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgY29sb3IoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5FeHRlbnNpb25zW3RoaXMuZmlsZT8uZXh0ZW5zaW9uIGFzIGtleW9mIHR5cGVvZiB0aGlzLkV4dGVuc2lvbnNdO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgaXNTaG93TG9hZEJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZmlsZSAmJiAhdGhpcy5pc0NhcHRpb25TaG93biAmJiAhdGhpcy5pc0xvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uUHJldmVudEVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tLZXkoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0tleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBldmVudC5rZXkgIT09ICdFbnRlcic7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgcHJlbG9hZGVyXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImZpbGU7IGVsc2UgYnV0dG9uVGVtcGxhdGVcIiBjbGFzcz1cImZpbGVcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25cIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGZpbGUuZXh0ZW5zaW9uIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXBsYWNlaG9sZGVyPVwie3sgdCgnRklMRV9USVRMRScpIH19Li4uXCJcclxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmNvbnRlbnRlZGl0YWJsZV09XCIhcmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAocGFzdGUpPVwib25UaXRsZVBhc3RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblByZXZlbnRFbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uVGl0bGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlLnNpemU7IGxldCBzaXplXCIgY2xhc3M9XCJzaXplXCI+e3sgc2l6ZSB8IGZpbGVTaXplIH19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgW2hyZWZdPVwiZmlsZS51cmxcIlxyXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgZG93bmxvYWRcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8Y3VpLXN2ZyBpY29uPVwiY3VpSWNvbkNoZXZyb25Eb3duU21cIiAvPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNidXR0b25UZW1wbGF0ZT5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtjbGFzc109XCJbJ3NlbGVjdC1idG4nLCB0aGlzLmFwaS5zdHlsZXMuYnV0dG9uXVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEZpbGUoKVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGN1aS1zdmcgaWNvbj1cImN1aUljb25QYXBlcmNsaXBTbVwiIC8+XHJcbiAgICAgICAgICAgICZuYnNwO3t7IGJ1dHRvbkNvbnRlbnQgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI3ByZWxvYWRlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZWxvYWRlclwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWF0dGFjaGVzLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvY29tcG9uZW50cy9lZGl0b3ItYXR0YWNoZXMtdG9vbC9lZGl0b3ItYXR0YWNoZXMtdG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL2VkaXRvci1hdHRhY2hlcy10b29sL2VkaXRvci1hdHRhY2hlcy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBWTFELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFWcEU7O1FBV3VCLGVBQVUsR0FBRztZQUM1QixHQUFHLEVBQUUsU0FBUztZQUNkLElBQUksRUFBRSxTQUFTO1lBQ2YsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLElBQUksRUFBRSxTQUFTO1lBQ2YsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLElBQUksRUFBRSxTQUFTO1lBQ2YsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsTUFBTSxFQUFFLFNBQVM7WUFDakIsRUFBRSxFQUFFLFNBQVM7WUFDYixHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsSUFBSSxFQUFFLFNBQVM7WUFDZixHQUFHLEVBQUUsU0FBUztTQUNqQixDQUFDO1FBU2MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO0tBMEJqRTtJQXhCRyxJQUFjLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUF5QyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELElBQWMsZ0JBQWdCO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakUsQ0FBQztJQUVTLFdBQVc7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBb0I7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNYLENBQUM7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBb0I7UUFDakMsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQztJQUNqQyxDQUFDOytHQWpFUSwyQkFBMkI7bUdBQTNCLDJCQUEyQixpUENwQnhDLDJuREErQ0Esb3dERG5DYyxZQUFZLG1LQUFFLFlBQVksZ0RBQUUsV0FBVywwQkFBRSxhQUFhLGtEQUFFLElBQUksNkZBQUUsa0JBQWtCOzs0RkFRakYsMkJBQTJCO2tCQVZ2QyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsbUJBRzFFLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsaUJBQWlCLEVBQUUsa0JBQWtCO3FCQUN4Qzs4QkFvQ00sSUFBSTtzQkFEVixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsS0FBSztzQkFEWCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJVCxXQUFXO3NCQUQxQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IEN1aVN2Z01vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgdHlwZSB7IEN1aUZpbGVEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWxlLXJlc3BvbnNlLWRhdGEnO1xyXG5pbXBvcnQgeyBFZGl0b3JUb29sQ29tcG9uZW50IH0gZnJvbSAnLi4vZWRpdG9yLXRvb2wvZWRpdG9yLXRvb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVNpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZmlsZS1zaXplLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0N1aVN2Z01vZHVsZSwgRmlsZVNpemVQaXBlLCBGb3Jtc01vZHVsZSwgVXBwZXJDYXNlUGlwZSwgTmdJZiwgVHJhbnNsb2NvRGlyZWN0aXZlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3ItYXR0YWNoZXMtdG9vbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0b3ItYXR0YWNoZXMtdG9vbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJ1tjbGFzcy5faGlkZGVuXSc6ICdpc1Nob3dMb2FkQnV0dG9uJ1xyXG4gICAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50IGV4dGVuZHMgRWRpdG9yVG9vbENvbXBvbmVudCB7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgRXh0ZW5zaW9ucyA9IHtcclxuICAgICAgICBkb2M6ICcjMTQ4M0U5JyxcclxuICAgICAgICBkb2N4OiAnIzE0ODNFOScsXHJcbiAgICAgICAgb2R0OiAnIzE0ODNFOScsXHJcbiAgICAgICAgcGRmOiAnI0RCMkYyRicsXHJcbiAgICAgICAgcnRmOiAnIzc0NEZEQycsXHJcbiAgICAgICAgdGV4OiAnIzVhNWE1YicsXHJcbiAgICAgICAgdHh0OiAnIzVhNWE1YicsXHJcbiAgICAgICAgcHB0eDogJyNFMzUyMDAnLFxyXG4gICAgICAgIHBwdDogJyNFMzUyMDAnLFxyXG4gICAgICAgIG1wMzogJyNlYWI0NTYnLFxyXG4gICAgICAgIG1wNDogJyNmNjc2YTYnLFxyXG4gICAgICAgIHhsczogJyMxMUFFM0QnLFxyXG4gICAgICAgIGh0bWw6ICcjMjk4OGYwJyxcclxuICAgICAgICBodG06ICcjMjk4OGYwJyxcclxuICAgICAgICBwbmc6ICcjQUEyMjg0JyxcclxuICAgICAgICBqcGc6ICcjRDEzMzU5JyxcclxuICAgICAgICBqcGVnOiAnI0QxMzM1OScsXHJcbiAgICAgICAgZ2lmOiAnI2Y2YWY3NicsXHJcbiAgICAgICAgemlwOiAnIzRmNTY2ZicsXHJcbiAgICAgICAgcmFyOiAnIzRmNTY2ZicsXHJcbiAgICAgICAgZXhlOiAnI2UyNmY2ZicsXHJcbiAgICAgICAgc3ZnOiAnI2JmNTI1MicsXHJcbiAgICAgICAga2V5OiAnIzAwQjJGRicsXHJcbiAgICAgICAgc2tldGNoOiAnI0ZGQzcwMCcsXHJcbiAgICAgICAgYWk6ICcjRkI2MDFEJyxcclxuICAgICAgICBwc2Q6ICcjMzg4YWU1JyxcclxuICAgICAgICBkbWc6ICcjZTI2ZjZmJyxcclxuICAgICAgICBqc29uOiAnIzI5ODhmMCcsXHJcbiAgICAgICAgY3N2OiAnIzExQUUzRCdcclxuICAgIH07XHJcblxyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyBmaWxlPzogQ3VpRmlsZURhdGE7XHJcblxyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyB0aXRsZSE6IHN0cmluZztcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBmaWxlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VpRmlsZURhdGE+KCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkV4dGVuc2lvbnNbdGhpcy5maWxlPy5leHRlbnNpb24gYXMga2V5b2YgdHlwZW9mIHRoaXMuRXh0ZW5zaW9uc107XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBpc1Nob3dMb2FkQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5maWxlICYmICF0aGlzLmlzQ2FwdGlvblNob3duICYmICF0aGlzLmlzTG9hZGluZztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25GaWxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxlQ2xpY2tlZC5lbWl0KHRoaXMuZmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uUHJldmVudEVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tLZXkoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0tleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBldmVudC5rZXkgIT09ICdFbnRlcic7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgcHJlbG9hZGVyXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImZpbGU7IGVsc2UgYnV0dG9uVGVtcGxhdGVcIiBjbGFzcz1cImZpbGVcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImljb25cIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGZpbGUuZXh0ZW5zaW9uIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXBsYWNlaG9sZGVyPVwie3sgdCgnRklMRV9USVRMRScpIH19Li4uXCJcclxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmNvbnRlbnRlZGl0YWJsZV09XCIhcmVhZE9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAocGFzdGUpPVwib25UaXRsZVBhc3RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblByZXZlbnRFbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uVGl0bGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlLnNpemU7IGxldCBzaXplXCIgY2xhc3M9XCJzaXplXCI+e3sgc2l6ZSB8IGZpbGVTaXplIH19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsZUNsaWNrKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxjdWktc3ZnIGljb249XCJjdWlJY29uQ2hldnJvbkRvd25TbVwiIC8+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgW2NsYXNzXT1cIlsnc2VsZWN0LWJ0bicsIHRoaXMuYXBpLnN0eWxlcy5idXR0b25dXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0RmlsZSgpXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8Y3VpLXN2ZyBpY29uPVwiY3VpSWNvblBhcGVyY2xpcFNtXCIgLz5cclxuICAgICAgICAgICAgJm5ic3A7e3sgYnV0dG9uQ29udGVudCB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlbG9hZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJlbG9hZGVyXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWF0dGFjaGVzLXRvb2wub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2NvbXBvbmVudHMvZWRpdG9yLWF0dGFjaGVzLXRvb2wvZWRpdG9yLWF0dGFjaGVzLXRvb2wub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVBJIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ3VpRmlsZURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZpbGUtcmVzcG9uc2UtZGF0YSc7XHJcbmltcG9ydCB7IEN1aUZpbGVVcGxvYWRlckNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUtdXBsb2FkZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVESVRPUl9BVFRBQ0hFU19UT09MX1NFTEVDVE9SID0gJ2NjLWVkaXRvci1hdHRhY2hlcy10b29sJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpQXR0YWNoZXNUb29sQ29uZmlnIGV4dGVuZHMgQ3VpRmlsZVVwbG9hZGVyQ29uZmlnIHtcclxuICByZWFkb25seSBidXR0b25Db250ZW50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpQXR0YWNoZXNUb29sT3B0aW9ucyB7XHJcbiAgcmVhZG9ubHkgYXBpOiBBUEk7XHJcbiAgcmVhZG9ubHkgY29uZmlnOiBDdWlBdHRhY2hlc1Rvb2xDb25maWc7XHJcbiAgcmVhZG9ubHkgb25TZWxlY3RGaWxlOiAoKSA9PiB2b2lkO1xyXG4gIHJlYWRvbmx5IHJlYWRPbmx5OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEN1aUF0dGFjaGVzVG9vbERhdGEge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZmlsZTogQ3VpRmlsZURhdGE7XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWF0dGFjaGVzLXRvb2wub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2NvbXBvbmVudHMvZWRpdG9yLWF0dGFjaGVzLXRvb2wvZWRpdG9yLWF0dGFjaGVzLXRvb2wub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVBJIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ3VpRmlsZURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZpbGUtcmVzcG9uc2UtZGF0YSc7XHJcbmltcG9ydCB7IEN1aUZpbGVVcGxvYWRlckNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUtdXBsb2FkZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVESVRPUl9BVFRBQ0hFU19UT09MX1NFTEVDVE9SID0gJ2NjLWVkaXRvci1hdHRhY2hlcy10b29sJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpQXR0YWNoZXNUb29sQ29uZmlnIGV4dGVuZHMgQ3VpRmlsZVVwbG9hZGVyQ29uZmlnIHtcclxuICAgIHJlYWRvbmx5IGJ1dHRvbkNvbnRlbnQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IGZpbGVDbGlja2VkOiAoZmlsZTogQ3VpRmlsZURhdGEpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpQXR0YWNoZXNUb29sT3B0aW9ucyB7XHJcbiAgICByZWFkb25seSBhcGk6IEFQSTtcclxuICAgIHJlYWRvbmx5IGNvbmZpZzogQ3VpQXR0YWNoZXNUb29sQ29uZmlnO1xyXG4gICAgcmVhZG9ubHkgb25TZWxlY3RGaWxlOiAoKSA9PiB2b2lkO1xyXG4gICAgcmVhZG9ubHkgcmVhZE9ubHk6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpQXR0YWNoZXNUb29sRGF0YSB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgZmlsZTogQ3VpRmlsZURhdGE7XHJcbn1cclxuIl19
@@ -12,8 +12,16 @@ export class CuiAttachesTool {
12
12
  };
13
13
  }
14
14
  constructor(options) {
15
+ this.abortController = new AbortController();
16
+ this.abortSignal = this.abortController.signal;
15
17
  this.selectedFile = null;
16
- this.onSelectFile = () => {
18
+ this.changeCaption = (event) => {
19
+ const customEvent = event;
20
+ const value = customEvent.detail;
21
+ this.data.title = value;
22
+ this.blockApi?.dispatchChange();
23
+ };
24
+ this.selectFile = () => {
17
25
  return this.uploader.selectFile({
18
26
  fileSelected: (file) => {
19
27
  this.attachesTool.isLoading = true;
@@ -22,24 +30,25 @@ export class CuiAttachesTool {
22
30
  }
23
31
  });
24
32
  };
33
+ this.clickFile = () => {
34
+ this.config.fileClicked(this.data.file);
35
+ };
25
36
  const { api, readOnly, config, data, block } = options;
26
37
  this.blockApi = block;
27
38
  this.api = api;
28
39
  this.readOnly = readOnly;
29
40
  this.config = {
30
- load: config?.load ?? (() => { }),
31
41
  field: config?.field ?? 'file',
32
42
  types: config?.types ?? '*',
33
43
  endpoint: config?.endpoint ?? '',
34
44
  buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),
35
45
  additionalRequestHeaders: config?.additionalRequestHeaders ?? {},
46
+ load: config?.load ?? (() => { }),
47
+ fileClicked: config?.fileClicked ?? (() => { })
36
48
  };
37
49
  this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));
38
50
  this.data = data;
39
51
  }
40
- appendCallback() {
41
- this.onSelectFile();
42
- }
43
52
  render() {
44
53
  this.attachesTool = document.createElement(EDITOR_ATTACHES_TOOL_SELECTOR);
45
54
  this.attachesTool.api = this.api;
@@ -47,22 +56,16 @@ export class CuiAttachesTool {
47
56
  this.attachesTool.title = this.data.title ?? '';
48
57
  this.attachesTool.readOnly = this.readOnly;
49
58
  this.attachesTool.buttonContent = this.config.buttonContent;
50
- this.attachesTool.addEventListener('fileSelected', this.onSelectFile);
51
- this.attachesTool.addEventListener('captionChanged', this.changeCaption.bind(this));
59
+ this.attachesTool.addEventListener('fileSelected', this.selectFile, { signal: this.abortSignal });
60
+ this.attachesTool.addEventListener('fileClicked', this.clickFile, { signal: this.abortSignal });
61
+ this.attachesTool.addEventListener('captionChanged', this.changeCaption, { signal: this.abortSignal });
52
62
  return this.attachesTool;
53
63
  }
54
64
  save() {
55
65
  return this.data;
56
66
  }
57
67
  removed() {
58
- this.attachesTool.removeEventListener('fileSelected', this.onSelectFile);
59
- this.attachesTool.removeEventListener('captionChanged', this.changeCaption);
60
- }
61
- changeCaption(event) {
62
- const customEvent = event;
63
- const value = customEvent.detail;
64
- this.data.title = value;
65
- this.blockApi?.dispatchChange();
68
+ this.abortController.abort();
66
69
  }
67
70
  set file(file) {
68
71
  this.data.title = file.name;
@@ -93,4 +96,4 @@ export class CuiAttachesTool {
93
96
  this.attachesTool.isLoading = false;
94
97
  }
95
98
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoZXMudG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3Rvb2xzL2F0dGFjaGVzLnRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVTNDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxNQUFNLE9BQU8sZUFBZTtJQVVuQixNQUFNLEtBQUssbUJBQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sS0FBSyxPQUFPO1FBQ3ZCLE9BQU87WUFDTCxJQUFJLEVBQUUsU0FBUyxDQUFDLGtCQUFrQjtZQUNsQyxLQUFLLEVBQUUsTUFBTTtTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxPQUFxQjtRQWJ6QixpQkFBWSxHQUFzQixJQUFJLENBQUM7UUFnQ3hDLGlCQUFZLEdBQUcsR0FBUyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQzlCLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUV6QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQTNCQSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQWtGLENBQUM7UUFFbEksSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFL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QzdCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUssQ0FBQztJQUN2QyxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQTZCO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFdkIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTtZQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUNsRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJO1lBQzVCLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUc7U0FDdkIsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBDVUlfSUNPTlMgfSBmcm9tICdAY3VieS11aS9pY29ucyc7XHJcbmltcG9ydCB0eXBlIHsgQVBJLCBCbG9ja0FQSSwgQmxvY2tUb29sQ29uc3RydWN0b3JPcHRpb25zLCBUb29sYm94Q29uZmlnIH0gZnJvbSAnQGVkaXRvcmpzL2VkaXRvcmpzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ3VpQW5ndWxhckVsZW1lbnQsIEN1aUZpbGVEYXRhLCBDdWlGaWxlUmVzcG9uc2VEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IEVkaXRvckF0dGFjaGVzVG9vbENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRpdG9yLWF0dGFjaGVzLXRvb2wvZWRpdG9yLWF0dGFjaGVzLXRvb2wuY29tcG9uZW50JztcclxuaW1wb3J0IHR5cGUge1xyXG4gIEN1aUF0dGFjaGVzVG9vbENvbmZpZyxcclxuICBDdWlBdHRhY2hlc1Rvb2xEYXRhXHJcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGl0b3ItYXR0YWNoZXMtdG9vbC9lZGl0b3ItYXR0YWNoZXMtdG9vbC5vcHRpb25zJztcclxuaW1wb3J0IHsgRURJVE9SX0FUVEFDSEVTX1RPT0xfU0VMRUNUT1IgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkaXRvci1hdHRhY2hlcy10b29sL2VkaXRvci1hdHRhY2hlcy10b29sLm9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWlGaWxlVXBsb2FkZXIgfSBmcm9tICcuLi91dGlscy9maWxlLXVwbG9hZGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDdWlBdHRhY2hlc1Rvb2wge1xyXG4gIHB1YmxpYyBhcGk6IEFQSTtcclxuICBwdWJsaWMgY29uZmlnOiBDdWlBdHRhY2hlc1Rvb2xDb25maWc7XHJcbiAgcHVibGljIGJsb2NrQXBpPzogQmxvY2tBUEk7XHJcbiAgcHVibGljIHJlYWRPbmx5OiBib29sZWFuO1xyXG4gIHB1YmxpYyBkYXRhOiBDdWlBdHRhY2hlc1Rvb2xEYXRhO1xyXG4gIHB1YmxpYyB1cGxvYWRlcjogQ3VpRmlsZVVwbG9hZGVyO1xyXG4gIHByaXZhdGUgYXR0YWNoZXNUb29sITogQ3VpQW5ndWxhckVsZW1lbnQ8RWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50PjtcclxuICBwcml2YXRlIHNlbGVjdGVkRmlsZTogQ3VpTnVsbGFibGU8RmlsZT4gPSBudWxsO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldCBpc1JlYWRPbmx5U3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldCB0b29sYm94KCk6IFRvb2xib3hDb25maWcge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWNvbjogQ1VJX0lDT05TLmN1aUljb25QYXBlcmNsaXBTbSxcclxuICAgICAgdGl0bGU6ICdGaWxlJ1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHsgYXBpOiBBUEkgfSkge1xyXG4gICAgY29uc3QgeyBhcGksIHJlYWRPbmx5LCBjb25maWcsIGRhdGEsIGJsb2NrIH0gPSBvcHRpb25zIGFzIEJsb2NrVG9vbENvbnN0cnVjdG9yT3B0aW9uczxDdWlBdHRhY2hlc1Rvb2xEYXRhLCBDdWlBdHRhY2hlc1Rvb2xDb25maWc+O1xyXG5cclxuICAgIHRoaXMuYmxvY2tBcGkgPSBibG9jaztcclxuICAgIHRoaXMuYXBpID0gYXBpO1xyXG4gICAgdGhpcy5yZWFkT25seSA9IHJlYWRPbmx5O1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIGxvYWQ6IGNvbmZpZz8ubG9hZCA/PyAoKCkgPT4geyB9KSxcclxuICAgICAgZmllbGQ6IGNvbmZpZz8uZmllbGQgPz8gJ2ZpbGUnLFxyXG4gICAgICB0eXBlczogY29uZmlnPy50eXBlcyA/PyAnKicsXHJcbiAgICAgIGVuZHBvaW50OiBjb25maWc/LmVuZHBvaW50ID8/ICcnLFxyXG4gICAgICBidXR0b25Db250ZW50OiBjb25maWc/LmJ1dHRvbkNvbnRlbnQgPz8gdGhpcy5hcGkuaTE4bi50KCdTZWxlY3QgYSBGaWxlJyksXHJcbiAgICAgIGFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVyczogY29uZmlnPy5hZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMgPz8ge30sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMudXBsb2FkZXIgPSBuZXcgQ3VpRmlsZVVwbG9hZGVyKHRoaXMuY29uZmlnLCB0aGlzLm9uVXBsb2FkLmJpbmQodGhpcyksIHRoaXMudXBsb2FkaW5nRmFpbGVkLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbGVjdEZpbGUgPSAoKTogdm9pZCA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlci5zZWxlY3RGaWxlKHtcclxuICAgICAgZmlsZVNlbGVjdGVkOiAoZmlsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoZXNUb29sLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG5cclxuICAgICAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEZpbGUoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBhcHBlbmRDYWxsYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMub25TZWxlY3RGaWxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVuZGVyKCk6IEhUTUxFbGVtZW50IHtcclxuICAgIHRoaXMuYXR0YWNoZXNUb29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcclxuICAgICAgRURJVE9SX0FUVEFDSEVTX1RPT0xfU0VMRUNUT1JcclxuICAgICkgYXMgQ3VpQW5ndWxhckVsZW1lbnQ8RWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50PjtcclxuXHJcbiAgICB0aGlzLmF0dGFjaGVzVG9vbC5hcGkgPSB0aGlzLmFwaTtcclxuICAgIHRoaXMuYXR0YWNoZXNUb29sLmZpbGUgPSB0aGlzLmRhdGEuZmlsZSA/PyAnJztcclxuICAgIHRoaXMuYXR0YWNoZXNUb29sLnRpdGxlID0gdGhpcy5kYXRhLnRpdGxlID8/ICcnO1xyXG4gICAgdGhpcy5hdHRhY2hlc1Rvb2wucmVhZE9ubHkgPSB0aGlzLnJlYWRPbmx5O1xyXG4gICAgdGhpcy5hdHRhY2hlc1Rvb2wuYnV0dG9uQ29udGVudCA9IHRoaXMuY29uZmlnLmJ1dHRvbkNvbnRlbnQ7XHJcblxyXG4gICAgdGhpcy5hdHRhY2hlc1Rvb2wuYWRkRXZlbnRMaXN0ZW5lcignZmlsZVNlbGVjdGVkJywgdGhpcy5vblNlbGVjdEZpbGUpO1xyXG4gICAgdGhpcy5hdHRhY2hlc1Rvb2wuYWRkRXZlbnRMaXN0ZW5lcignY2FwdGlvbkNoYW5nZWQnLCB0aGlzLmNoYW5nZUNhcHRpb24uYmluZCh0aGlzKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoZXNUb29sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmUoKTogQ3VpQXR0YWNoZXNUb29sRGF0YSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF0dGFjaGVzVG9vbC5yZW1vdmVFdmVudExpc3RlbmVyKCdmaWxlU2VsZWN0ZWQnLCB0aGlzLm9uU2VsZWN0RmlsZSk7XHJcbiAgICB0aGlzLmF0dGFjaGVzVG9vbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjYXB0aW9uQ2hhbmdlZCcsIHRoaXMuY2hhbmdlQ2FwdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlQ2FwdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGN1c3RvbUV2ZW50LmRldGFpbDtcclxuICAgIHRoaXMuZGF0YS50aXRsZSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuYmxvY2tBcGk/LmRpc3BhdGNoQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGZpbGUoZmlsZTogQ3VpRmlsZURhdGEpIHtcclxuICAgIHRoaXMuZGF0YS50aXRsZSA9IGZpbGUubmFtZSE7XHJcbiAgICB0aGlzLmRhdGEuZmlsZSA9IHtcclxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICBleHRlbnNpb246IGZpbGUubmFtZT8uc3BsaXQoJy4nKS5wb3AoKSxcclxuICAgICAgc2l6ZTogZmlsZS5zaXplLFxyXG4gICAgICB1cmw6IGZpbGUudXJsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5hdHRhY2hlc1Rvb2wuZmlsZSA9IHsgLi4udGhpcy5kYXRhLmZpbGUgfTtcclxuICAgIHRoaXMuYXR0YWNoZXNUb29sLnRpdGxlID0gZmlsZS5uYW1lITtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25VcGxvYWQocmVzcG9uc2U6IEN1aUZpbGVSZXNwb25zZURhdGEpOiB2b2lkIHtcclxuICAgIGlmICghcmVzcG9uc2Uuc3VjY2VzcyB8fCAhcmVzcG9uc2UuZmlsZSB8fCAhdGhpcy5zZWxlY3RlZEZpbGUpIHtcclxuICAgICAgdGhpcy51cGxvYWRpbmdGYWlsZWQoKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGUgPSB7XHJcbiAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWUsXHJcbiAgICAgIGV4dGVuc2lvbjogdGhpcy5zZWxlY3RlZEZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLFxyXG4gICAgICBzaXplOiB0aGlzLnNlbGVjdGVkRmlsZS5zaXplLFxyXG4gICAgICB1cmw6IHJlc3BvbnNlLmZpbGUudXJsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5hdHRhY2hlc1Rvb2wuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZGluZ0ZhaWxlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0YWNoZXNUb29sLmZpbGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmF0dGFjaGVzVG9vbC5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoZXMudG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL3Rvb2xzL2F0dGFjaGVzLnRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVTNDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxNQUFNLE9BQU8sZUFBZTtJQWNqQixNQUFNLEtBQUssbUJBQW1CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLEtBQUssT0FBTztRQUNyQixPQUFPO1lBQ0gsSUFBSSxFQUFFLFNBQVMsQ0FBQyxrQkFBa0I7WUFDbEMsS0FBSyxFQUFFLE1BQU07U0FDaEIsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZLE9BQXFCO1FBeEJoQixvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUduRCxpQkFBWSxHQUFzQixJQUFJLENBQUM7UUFrRXhDLGtCQUFhLEdBQUcsQ0FBQyxLQUFZLEVBQVEsRUFBRTtZQUMxQyxNQUFNLFdBQVcsR0FBRyxLQUFvQixDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBRXhCLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFBO1FBRU0sZUFBVSxHQUFHLEdBQVMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUM1QixZQUFZLEVBQUUsQ0FBQyxJQUFJLEVB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QUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO1lBQ2xELElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7WUFDNUIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztTQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDdWlOdWxsYWJsZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB7IENVSV9JQ09OUyB9IGZyb20gJ0BjdWJ5LXVpL2ljb25zJztcclxuaW1wb3J0IHR5cGUgeyBBUEksIEJsb2NrQVBJLCBCbG9ja1Rvb2xDb25zdHJ1Y3Rvck9wdGlvbnMsIFRvb2xib3hDb25maWcgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBDdWlBbmd1bGFyRWxlbWVudCwgQ3VpRmlsZURhdGEsIEN1aUZpbGVSZXNwb25zZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgRWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGl0b3ItYXR0YWNoZXMtdG9vbC9lZGl0b3ItYXR0YWNoZXMtdG9vbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgICBDdWlBdHRhY2hlc1Rvb2xDb25maWcsXHJcbiAgICBDdWlBdHRhY2hlc1Rvb2xEYXRhXHJcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGl0b3ItYXR0YWNoZXMtdG9vbC9lZGl0b3ItYXR0YWNoZXMtdG9vbC5vcHRpb25zJztcclxuaW1wb3J0IHsgRURJVE9SX0FUVEFDSEVTX1RPT0xfU0VMRUNUT1IgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkaXRvci1hdHRhY2hlcy10b29sL2VkaXRvci1hdHRhY2hlcy10b29sLm9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWlGaWxlVXBsb2FkZXIgfSBmcm9tICcuLi91dGlscy9maWxlLXVwbG9hZGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDdWlBdHRhY2hlc1Rvb2wge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFib3J0U2lnbmFsID0gdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xyXG5cclxuICAgIHByaXZhdGUgYXR0YWNoZXNUb29sITogQ3VpQW5ndWxhckVsZW1lbnQ8RWRpdG9yQXR0YWNoZXNUb29sQ29tcG9uZW50PjtcclxuICAgIHByaXZhdGUgc2VsZWN0ZWRGaWxlOiBDdWlOdWxsYWJsZTxGaWxlPiA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIGFwaTogQVBJO1xyXG4gICAgcHVibGljIGNvbmZpZzogQ3VpQXR0YWNoZXNUb29sQ29uZmlnO1xyXG4gICAgcHVibGljIGJsb2NrQXBpPzogQmxvY2tBUEk7XHJcbiAgICBwdWJsaWMgcmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgZGF0YTogQ3VpQXR0YWNoZXNUb29sRGF0YTtcclxuICAgIHB1YmxpYyB1cGxvYWRlcjogQ3VpRmlsZVVwbG9hZGVyO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGlzUmVhZE9ubHlTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQgdG9vbGJveCgpOiBUb29sYm94Q29uZmlnIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpY29uOiBDVUlfSUNPTlMuY3VpSWNvblBhcGVyY2xpcFNtLFxyXG4gICAgICAgICAgICB0aXRsZTogJ0ZpbGUnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7IGFwaTogQVBJIH0pIHtcclxuICAgICAgICBjb25zdCB7IGFwaSwgcmVhZE9ubHksIGNvbmZpZywgZGF0YSwgYmxvY2sgfSA9IG9wdGlvbnMgYXMgQmxvY2tUb29sQ29uc3RydWN0b3JPcHRpb25zPEN1aUF0dGFjaGVzVG9vbERhdGEsIEN1aUF0dGFjaGVzVG9vbENvbmZpZz47XHJcblxyXG4gICAgICAgIHRoaXMuYmxvY2tBcGkgPSBibG9jaztcclxuICAgICAgICB0aGlzLmFwaSA9IGFwaTtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5ID0gcmVhZE9ubHk7XHJcbiAgICAgICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBjb25maWc/LmZpZWxkID8/ICdmaWxlJyxcclxuICAgICAgICAgICAgdHlwZXM6IGNvbmZpZz8udHlwZXMgPz8gJyonLFxyXG4gICAgICAgICAgICBlbmRwb2ludDogY29uZmlnPy5lbmRwb2ludCA/PyAnJyxcclxuICAgICAgICAgICAgYnV0dG9uQ29udGVudDogY29uZmlnPy5idXR0b25Db250ZW50ID8/IHRoaXMuYXBpLmkxOG4udCgnU2VsZWN0IGEgRmlsZScpLFxyXG4gICAgICAgICAgICBhZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnM6IGNvbmZpZz8uYWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzID8/IHt9LFxyXG4gICAgICAgICAgICBsb2FkOiBjb25maWc/LmxvYWQgPz8gKCgpID0+IHsgfSksXHJcbiAgICAgICAgICAgIGZpbGVDbGlja2VkOiBjb25maWc/LmZpbGVDbGlja2VkID8/ICgoKSA9PiB7IH0pXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRlciA9IG5ldyBDdWlGaWxlVXBsb2FkZXIodGhpcy5jb25maWcsIHRoaXMub25VcGxvYWQuYmluZCh0aGlzKSwgdGhpcy51cGxvYWRpbmdGYWlsZWQuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVuZGVyKCk6IEhUTUxFbGVtZW50IHtcclxuICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXHJcbiAgICAgICAgICAgIEVESVRPUl9BVFRBQ0hFU19UT09MX1NFTEVDVE9SXHJcbiAgICAgICAgKSBhcyBDdWlBbmd1bGFyRWxlbWVudDxFZGl0b3JBdHRhY2hlc1Rvb2xDb21wb25lbnQ+O1xyXG5cclxuICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbC5hcGkgPSB0aGlzLmFwaTtcclxuICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbC5maWxlID0gdGhpcy5kYXRhLmZpbGUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hlc1Rvb2wudGl0bGUgPSB0aGlzLmRhdGEudGl0bGUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hlc1Rvb2wucmVhZE9ubHkgPSB0aGlzLnJlYWRPbmx5O1xyXG4gICAgICAgIHRoaXMuYXR0YWNoZXNUb29sLmJ1dHRvbkNvbnRlbnQgPSB0aGlzLmNvbmZpZy5idXR0b25Db250ZW50O1xyXG5cclxuICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbC5hZGRFdmVudExpc3RlbmVyKCdmaWxlU2VsZWN0ZWQnLCB0aGlzLnNlbGVjdEZpbGUsIHsgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsIH0pO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoZXNUb29sLmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbGVDbGlja2VkJywgdGhpcy5jbGlja0ZpbGUsIHsgc2lnbmFsOiB0aGlzLmFib3J0U2lnbmFsIH0pO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoZXNUb29sLmFkZEV2ZW50TGlzdGVuZXIoJ2NhcHRpb25DaGFuZ2VkJywgdGhpcy5jaGFuZ2VDYXB0aW9uLCB7IHNpZ25hbDogdGhpcy5hYm9ydFNpZ25hbCB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0YWNoZXNUb29sO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzYXZlKCk6IEN1aUF0dGFjaGVzVG9vbERhdGEge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlQ2FwdGlvbiA9IChldmVudDogRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50O1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gY3VzdG9tRXZlbnQuZGV0YWlsO1xyXG4gICAgICAgIHRoaXMuZGF0YS50aXRsZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICB0aGlzLmJsb2NrQXBpPy5kaXNwYXRjaENoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZWxlY3RGaWxlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLnNlbGVjdEZpbGUoe1xyXG4gICAgICAgICAgICBmaWxlU2VsZWN0ZWQ6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbC5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXIudXBsb2FkRmlsZShmaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBwdWJsaWMgY2xpY2tGaWxlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmZpbGVDbGlja2VkKHRoaXMuZGF0YS5maWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IGZpbGUoZmlsZTogQ3VpRmlsZURhdGEpIHtcclxuICAgICAgICB0aGlzLmRhdGEudGl0bGUgPSBmaWxlLm5hbWUhO1xyXG4gICAgICAgIHRoaXMuZGF0YS5maWxlID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAgIGV4dGVuc2lvbjogZmlsZS5uYW1lPy5zcGxpdCgnLicpLnBvcCgpLFxyXG4gICAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXHJcbiAgICAgICAgICAgIHVybDogZmlsZS51cmxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYXR0YWNoZXNUb29sLmZpbGUgPSB7IC4uLnRoaXMuZGF0YS5maWxlIH07XHJcbiAgICAgICAgdGhpcy5hdHRhY2hlc1Rvb2wudGl0bGUgPSBmaWxlLm5hbWUhO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25VcGxvYWQocmVzcG9uc2U6IEN1aUZpbGVSZXNwb25zZURhdGEpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlLnN1Y2Nlc3MgfHwgIXJlc3BvbnNlLmZpbGUgfHwgIXRoaXMuc2VsZWN0ZWRGaWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nRmFpbGVkKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpbGUgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWUsXHJcbiAgICAgICAgICAgIGV4dGVuc2lvbjogdGhpcy5zZWxlY3RlZEZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLFxyXG4gICAgICAgICAgICBzaXplOiB0aGlzLnNlbGVjdGVkRmlsZS5zaXplLFxyXG4gICAgICAgICAgICB1cmw6IHJlc3BvbnNlLmZpbGUudXJsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbC5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwbG9hZGluZ0ZhaWxlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmF0dGFjaGVzVG9vbC5maWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoZXNUb29sLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -5354,6 +5354,7 @@ class EditorAttachesToolComponent extends EditorToolComponent {
5354
5354
  json: '#2988f0',
5355
5355
  csv: '#11AE3D'
5356
5356
  };
5357
+ this.fileClicked = new EventEmitter();
5357
5358
  }
5358
5359
  get color() {
5359
5360
  return this.Extensions[this.file?.extension];
@@ -5361,6 +5362,9 @@ class EditorAttachesToolComponent extends EditorToolComponent {
5361
5362
  get isShowLoadButton() {
5362
5363
  return !this.file && !this.isCaptionShown && !this.isLoading;
5363
5364
  }
5365
+ onFileClick() {
5366
+ this.fileClicked.emit(this.file);
5367
+ }
5364
5368
  onPreventEnter(event) {
5365
5369
  if (this.checkKey(event)) {
5366
5370
  return;
@@ -5372,19 +5376,21 @@ class EditorAttachesToolComponent extends EditorToolComponent {
5372
5376
  return event.key !== 'Enter';
5373
5377
  }
5374
5378
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorAttachesToolComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EditorAttachesToolComponent, isStandalone: true, selector: "ng-component", inputs: { file: "file", title: "title" }, host: { properties: { "class._hidden": "isShowLoadButton" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5379
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EditorAttachesToolComponent, isStandalone: true, selector: "ng-component", inputs: { file: "file", title: "title" }, outputs: { fileClicked: "fileClicked" }, host: { properties: { "class._hidden": "isShowLoadButton" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n (click)=\"onFileClick()\"\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5376
5380
  }
5377
5381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditorAttachesToolComponent, decorators: [{
5378
5382
  type: Component,
5379
5383
  args: [{ standalone: true, imports: [CuiSvgModule, FileSizePipe, FormsModule, UpperCasePipe, NgIf, TranslocoDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
5380
5384
  '[class._hidden]': 'isShowLoadButton'
5381
- }, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n [href]=\"file.url\"\r\n target=\"_blank\"\r\n download\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"] }]
5385
+ }, template: "<ng-container *ngIf=\"!isLoading; else preloader\">\r\n <ng-container *transloco=\"let t\">\r\n <div *ngIf=\"file; else buttonTemplate\" class=\"file\">\r\n <div\r\n class=\"icon\"\r\n [style.backgroundColor]=\"color\"\r\n >\r\n {{ file.extension | uppercase }}\r\n </div>\r\n <div class=\"info\">\r\n <div\r\n class=\"title\"\r\n attr.data-placeholder=\"{{ t('FILE_TITLE') }}...\"\r\n [innerHTML]=\"title\"\r\n [attr.contenteditable]=\"!readOnly\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keydown)=\"onPreventEnter($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n ></div>\r\n <div *ngIf=\"file.size; let size\" class=\"size\">{{ size | fileSize }}</div>\r\n </div>\r\n <a\r\n class=\"download\"\r\n (click)=\"onFileClick()\"\r\n >\r\n <cui-svg icon=\"cuiIconChevronDownSm\" />\r\n </a>\r\n </div>\r\n <ng-template #buttonTemplate>\r\n <button\r\n [class]=\"['select-btn', this.api.styles.button]\"\r\n (click)=\"onSelectFile()\"\r\n type=\"button\"\r\n >\r\n <cui-svg icon=\"cuiIconPaperclipSm\" />\r\n &nbsp;{{ buttonContent }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #preloader>\r\n <div class=\"wrapper\">\r\n <div class=\"preloader\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [":host{padding-top:6px;padding-bottom:6px;font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font);display:block}:host._hidden{display:none}.file{padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-radius:10px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-10)}.info{display:flex;flex-direction:column;gap:2px;width:85%}.icon{padding:6px 2px;font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:flex-end;border-radius:8px;width:35px;height:35px;color:var(--cui-gray-0)}.title{font-weight:400;font-size:14px;line-height:20px;outline:none}.size{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-500)}.download{padding:6px;margin-left:auto;border-radius:8px;color:var(--cui-base-0);background:var(--cui-base-50)}.wrapper{display:flex;flex-direction:column;margin-bottom:10px;border:1px solid var(--cui-base-200);border-radius:10px;min-height:50px;background-color:var(--cui-base-0)}.wrapper._loaded{min-height:auto}.preloader{width:30px;height:30px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-position:center center}@keyframes preloader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preloader:after{content:\"\";position:absolute;z-index:3;width:30px;height:30px;border-radius:50%;border:2px solid var(--cui-base-200);border-top-color:var(--cui-blue-600);left:50%;top:50%;margin-top:-15px;margin-left:-15px;animation:preloader-spin 2s infinite linear;box-sizing:border-box}.title[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.select-btn{display:flex;align-items:center;justify-content:center;width:100%}\n"] }]
5382
5386
  }], propDecorators: { file: [{
5383
5387
  type: Input,
5384
5388
  args: [{ required: true }]
5385
5389
  }], title: [{
5386
5390
  type: Input,
5387
5391
  args: [{ required: true }]
5392
+ }], fileClicked: [{
5393
+ type: Output
5388
5394
  }] } });
5389
5395
 
5390
5396
  const EDITOR_ATTACHES_TOOL_SELECTOR = 'cc-editor-attaches-tool';
@@ -6082,8 +6088,16 @@ class CuiAttachesTool {
6082
6088
  };
6083
6089
  }
6084
6090
  constructor(options) {
6091
+ this.abortController = new AbortController();
6092
+ this.abortSignal = this.abortController.signal;
6085
6093
  this.selectedFile = null;
6086
- this.onSelectFile = () => {
6094
+ this.changeCaption = (event) => {
6095
+ const customEvent = event;
6096
+ const value = customEvent.detail;
6097
+ this.data.title = value;
6098
+ this.blockApi?.dispatchChange();
6099
+ };
6100
+ this.selectFile = () => {
6087
6101
  return this.uploader.selectFile({
6088
6102
  fileSelected: (file) => {
6089
6103
  this.attachesTool.isLoading = true;
@@ -6092,24 +6106,25 @@ class CuiAttachesTool {
6092
6106
  }
6093
6107
  });
6094
6108
  };
6109
+ this.clickFile = () => {
6110
+ this.config.fileClicked(this.data.file);
6111
+ };
6095
6112
  const { api, readOnly, config, data, block } = options;
6096
6113
  this.blockApi = block;
6097
6114
  this.api = api;
6098
6115
  this.readOnly = readOnly;
6099
6116
  this.config = {
6100
- load: config?.load ?? (() => { }),
6101
6117
  field: config?.field ?? 'file',
6102
6118
  types: config?.types ?? '*',
6103
6119
  endpoint: config?.endpoint ?? '',
6104
6120
  buttonContent: config?.buttonContent ?? this.api.i18n.t('Select a File'),
6105
6121
  additionalRequestHeaders: config?.additionalRequestHeaders ?? {},
6122
+ load: config?.load ?? (() => { }),
6123
+ fileClicked: config?.fileClicked ?? (() => { })
6106
6124
  };
6107
6125
  this.uploader = new CuiFileUploader(this.config, this.onUpload.bind(this), this.uploadingFailed.bind(this));
6108
6126
  this.data = data;
6109
6127
  }
6110
- appendCallback() {
6111
- this.onSelectFile();
6112
- }
6113
6128
  render() {
6114
6129
  this.attachesTool = document.createElement(EDITOR_ATTACHES_TOOL_SELECTOR);
6115
6130
  this.attachesTool.api = this.api;
@@ -6117,22 +6132,16 @@ class CuiAttachesTool {
6117
6132
  this.attachesTool.title = this.data.title ?? '';
6118
6133
  this.attachesTool.readOnly = this.readOnly;
6119
6134
  this.attachesTool.buttonContent = this.config.buttonContent;
6120
- this.attachesTool.addEventListener('fileSelected', this.onSelectFile);
6121
- this.attachesTool.addEventListener('captionChanged', this.changeCaption.bind(this));
6135
+ this.attachesTool.addEventListener('fileSelected', this.selectFile, { signal: this.abortSignal });
6136
+ this.attachesTool.addEventListener('fileClicked', this.clickFile, { signal: this.abortSignal });
6137
+ this.attachesTool.addEventListener('captionChanged', this.changeCaption, { signal: this.abortSignal });
6122
6138
  return this.attachesTool;
6123
6139
  }
6124
6140
  save() {
6125
6141
  return this.data;
6126
6142
  }
6127
6143
  removed() {
6128
- this.attachesTool.removeEventListener('fileSelected', this.onSelectFile);
6129
- this.attachesTool.removeEventListener('captionChanged', this.changeCaption);
6130
- }
6131
- changeCaption(event) {
6132
- const customEvent = event;
6133
- const value = customEvent.detail;
6134
- this.data.title = value;
6135
- this.blockApi?.dispatchChange();
6144
+ this.abortController.abort();
6136
6145
  }
6137
6146
  set file(file) {
6138
6147
  this.data.title = file.name;