@cuby-ui/core 0.0.331 → 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.
- package/editor/components/editor-attaches-tool/editor-attaches-tool.component.d.ts +4 -1
- package/editor/components/editor-attaches-tool/editor-attaches-tool.options.d.ts +1 -0
- package/editor/tools/attaches.tool.d.ts +7 -5
- package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.component.mjs +10 -4
- package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.options.mjs +1 -1
- package/esm2022/editor/tools/attaches.tool.mjs +19 -16
- package/fesm2022/cuby-ui-core.mjs +26 -17
- package/fesm2022/cuby-ui-core.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -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)
|
|
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
|
|
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 {{ 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
|
|
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 {{ 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,
|
|
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,
|
|
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.
|
|
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.
|
|
51
|
-
this.attachesTool.addEventListener('
|
|
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.
|
|
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
|
|
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 {{ 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
|
|
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 {{ 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.
|
|
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.
|
|
6121
|
-
this.attachesTool.addEventListener('
|
|
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.
|
|
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;
|