@dignite-ng/expand.file-explorer 0.0.21 → 0.0.27
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/README.md +24 -24
- package/config/providers/route.provider.d.ts +1 -1
- package/esm2022/config/dignite-ng-expand.file-explorer-config.mjs +1 -1
- package/esm2022/config/enums/index.mjs +1 -1
- package/esm2022/config/enums/route-names.mjs +1 -1
- package/esm2022/config/file-config.module.mjs +5 -5
- package/esm2022/config/providers/index.mjs +1 -1
- package/esm2022/config/providers/route.provider.mjs +1 -1
- package/esm2022/config/public-api.mjs +1 -1
- package/esm2022/dignite-ng-expand.file-explorer.mjs +1 -1
- package/esm2022/lib/components/dome/file-dome.component.mjs +13 -15
- package/esm2022/lib/components/dynamic-form/file-explorer/file-explorer-config.component.mjs +5 -14
- package/esm2022/lib/components/dynamic-form/file-explorer/file-explorer-config.mjs +5 -5
- package/esm2022/lib/components/dynamic-form/file-explorer/file-explorer-control.component.mjs +14 -22
- package/esm2022/lib/components/dynamic-form/file-explorer/index.mjs +1 -1
- package/esm2022/lib/components/dynamic-form/form-control-group.mjs +1 -1
- package/esm2022/lib/components/file-edit/file-edit.component.mjs +19 -23
- package/esm2022/lib/components/file-modal/file-modal.component.mjs +58 -72
- package/esm2022/lib/components/file-modal-tree/file-modal-tree.component.mjs +25 -40
- package/esm2022/lib/components/file-picker/file-picker.component.mjs +14 -17
- package/esm2022/lib/components/index.mjs +1 -1
- package/esm2022/lib/file-explorer-routing.module.mjs +5 -5
- package/esm2022/lib/file-explorer.module.mjs +7 -7
- package/esm2022/lib/previews/file-preview.component.mjs +26 -30
- package/esm2022/lib/previews/index.mjs +1 -1
- package/esm2022/lib/previews/models.mjs +1 -1
- package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +33 -35
- package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +1 -1
- package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +1 -1
- package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +45 -47
- package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +1 -1
- package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +1 -1
- package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +1 -1
- package/esm2022/lib/proxy/dignite/index.mjs +1 -1
- package/esm2022/lib/proxy/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/extensions/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/net/http/index.mjs +1 -1
- package/esm2022/lib/proxy/microsoft/net/index.mjs +1 -1
- package/esm2022/lib/proxy/volo/abp/content/index.mjs +1 -1
- package/esm2022/lib/proxy/volo/abp/content/models.mjs +1 -1
- package/esm2022/lib/proxy/volo/abp/index.mjs +1 -1
- package/esm2022/lib/proxy/volo/index.mjs +1 -1
- package/esm2022/lib/services/file-api.service.mjs +7 -4
- package/esm2022/lib/services/index.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/dignite-ng-expand.file-explorer-config.mjs +4 -4
- package/fesm2022/dignite-ng-expand.file-explorer-config.mjs.map +1 -1
- package/fesm2022/dignite-ng-expand.file-explorer.mjs +255 -303
- package/fesm2022/dignite-ng-expand.file-explorer.mjs.map +1 -1
- package/lib/components/dome/file-dome.component.d.ts +1 -0
- package/lib/components/dynamic-form/file-explorer/file-explorer-config.component.d.ts +1 -1
- package/lib/components/dynamic-form/file-explorer/file-explorer-control.component.d.ts +1 -1
- package/lib/components/file-modal/file-modal.component.d.ts +2 -2
- package/package.json +3 -7
|
@@ -1,44 +1,40 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import { FileApiService } from '../../services/file-api.service';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
import * as i1 from "../../services/file-api.service";
|
|
5
4
|
import * as i2 from "@angular/common";
|
|
6
5
|
import * as i3 from "@abp/ng.core";
|
|
7
6
|
import * as i4 from "../../previews/file-preview.component";
|
|
8
7
|
export class FileEditComponent {
|
|
9
|
-
_FileApiService;
|
|
10
8
|
constructor(_FileApiService) {
|
|
11
9
|
this._FileApiService = _FileApiService;
|
|
10
|
+
/**是否多选 */
|
|
11
|
+
this._multiple = true;
|
|
12
|
+
/**文件数据--已上传的数据 */
|
|
13
|
+
this._fileData = [];
|
|
14
|
+
/** 跟随表单提交--已提交的数据,或选择的数据源--回调*/
|
|
15
|
+
this.fileDataChange = new EventEmitter();
|
|
16
|
+
/**文件大小限制
|
|
17
|
+
* @param 1mb
|
|
18
|
+
*/
|
|
19
|
+
this.sizeLimit = 1048576;
|
|
20
|
+
/**文件表格数据 */
|
|
21
|
+
this.filesTableData = [];
|
|
22
|
+
/** 待删除已上传的文件们*/
|
|
23
|
+
this.deleteTheUploadedFiles = [];
|
|
12
24
|
}
|
|
13
|
-
/**是否多选 */
|
|
14
|
-
_multiple = true;
|
|
15
25
|
set multiple(v) {
|
|
16
26
|
this._multiple = v;
|
|
17
27
|
if (v) { }
|
|
18
28
|
}
|
|
19
|
-
/**文件数据--已上传的数据 */
|
|
20
|
-
_fileData = [];
|
|
21
29
|
set fileData(v) {
|
|
22
30
|
this._fileData = v;
|
|
23
31
|
if (v.length > 0) {
|
|
24
32
|
this.getFileChange({ target: { files: v } });
|
|
25
33
|
}
|
|
26
34
|
}
|
|
27
|
-
/** 跟随表单提交--已提交的数据,或选择的数据源--回调*/
|
|
28
|
-
fileDataChange = new EventEmitter();
|
|
29
|
-
/**文件大小限制
|
|
30
|
-
* @param 1mb
|
|
31
|
-
*/
|
|
32
|
-
sizeLimit = 1048576;
|
|
33
35
|
set limit(v) {
|
|
34
36
|
this.sizeLimit = v;
|
|
35
37
|
}
|
|
36
|
-
/**文件表格数据 */
|
|
37
|
-
filesTableData = [];
|
|
38
|
-
/** 待删除已上传的文件们*/
|
|
39
|
-
deleteTheUploadedFiles = [];
|
|
40
|
-
/**获取文件选择框的元素 */
|
|
41
|
-
fileEdit;
|
|
42
38
|
/**获取文件信息改变 */
|
|
43
39
|
async getFileChange(event) {
|
|
44
40
|
let files = new Array(...event.target.files);
|
|
@@ -82,10 +78,10 @@ export class FileEditComponent {
|
|
|
82
78
|
resolve(files);
|
|
83
79
|
});
|
|
84
80
|
}
|
|
85
|
-
static
|
|
86
|
-
static
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FileEditComponent, deps: [{ token: i1.FileApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: FileEditComponent, selector: "fe-file-edit", inputs: { multiple: "multiple", fileData: "fileData", limit: "limit" }, outputs: { fileDataChange: "fileDataChange" }, viewQueries: [{ propertyName: "fileEdit", first: true, predicate: ["fileEdit"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" (change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.src\" [name]=\"item.name\" [type]=\"item.type\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' |\n abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i4.FilePreviewComponent, selector: "fe-file-preview", inputs: ["width", "src", "preview", "type", "name"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
87
83
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: FileEditComponent, decorators: [{
|
|
89
85
|
type: Component,
|
|
90
86
|
args: [{ selector: 'fe-file-edit', template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" (change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.src\" [name]=\"item.name\" [type]=\"item.type\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' |\n abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>" }]
|
|
91
87
|
}], ctorParameters: () => [{ type: i1.FileApiService }], propDecorators: { multiple: [{
|
|
@@ -100,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
100
96
|
type: ViewChild,
|
|
101
97
|
args: ['fileEdit', { static: true }]
|
|
102
98
|
}] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZWRpdC9maWxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1lZGl0L2ZpbGUtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFPakUsTUFBTSxPQUFPLGlCQUFpQjtJQUVuQjtJQURULFlBQ1MsZUFBK0I7UUFBL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO0lBQ3BDLENBQUM7SUFFTCxVQUFVO0lBQ1YsU0FBUyxHQUFZLElBQUksQ0FBQTtJQUN6QixJQUNXLFFBQVEsQ0FBQyxDQUFVO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUc7SUFDWixDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLFNBQVMsR0FBVSxFQUFFLENBQUE7SUFDckIsSUFDVyxRQUFRLENBQUMsQ0FBUTtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1NBQzdDO0lBQ0gsQ0FBQztJQUNELGdDQUFnQztJ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Q0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7dUdBdkZVLGlCQUFpQjsyRkFBakIsaUJBQWlCLCtSQ1I5QixnZ0RBa0NROzsyRkQxQkssaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7bUZBWWIsUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVFJLGNBQWM7c0JBQXZCLE1BQU07Z0JBT0ksS0FBSztzQkFEZixLQUFLO2dCQVdtQyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtYXBpLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1lZGl0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUVkaXRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgKSB7IH1cblxuICAvKirmmK/lkKblpJrpgIkgKi9cbiAgX211bHRpcGxlOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IHY7XG4gICAgaWYgKHYpIHsgfVxuICB9XG4gIC8qKuaWh+S7tuaVsOaNri0t5bey5LiK5Lyg55qE5pWw5o2uICovXG4gIF9maWxlRGF0YTogYW55W10gPSBbXVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZpbGVEYXRhKHY6IGFueVtdKSB7XG4gICAgdGhpcy5fZmlsZURhdGEgPSB2O1xuICAgIGlmICh2Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ2V0RmlsZUNoYW5nZSh7IHRhcmdldDogeyBmaWxlczogdiB9IH0pXG4gICAgfVxuICB9XG4gIC8qKiDot5/pmo/ooajljZXmj5DkuqQtLeW3suaPkOS6pOeahOaVsOaNru+8jOaIlumAieaLqeeahOaVsOaNrua6kC0t5Zue6LCDKi9cbiAgQE91dHB1dCgpIGZpbGVEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgLyoq5paH5Lu25aSn5bCP6ZmQ5Yi2IFxuICAgKiBAcGFyYW0gMW1iXG4gICovXG4gIHNpemVMaW1pdDogbnVtYmVyID0gMTA0ODU3NlxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxpbWl0KHY6IG51bWJlcikge1xuICAgIHRoaXMuc2l6ZUxpbWl0ID0gdjtcbiAgfVxuXG4gIC8qKuaWh+S7tuihqOagvOaVsOaNriAqL1xuICBmaWxlc1RhYmxlRGF0YTogYW55W10gPSBbXVxuICAvKiog5b6F5Yig6Zmk5bey5LiK5Lyg55qE5paH5Lu25LusKi9cbiAgZGVsZXRlVGhlVXBsb2FkZWRGaWxlczogYW55W10gPSBbXVxuXG4gIC8qKuiOt+WPluaWh+S7tumAieaLqeahhueahOWFg+e0oCAqL1xuICBAVmlld0NoaWxkKCdmaWxlRWRpdCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbGVFZGl0OiBFbGVtZW50UmVmO1xuXG5cbiAgLyoq6I635Y+W5paH5Lu25L+h5oGv5pS55Y+YICovXG4gIGFzeW5jIGdldEZpbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBsZXQgZmlsZXMgPSBuZXcgQXJyYXkoLi4uZXZlbnQudGFyZ2V0LmZpbGVzKVxuICAgIC8qKumcgOimgeetieW+hXNldGZpbGVTaXplVW5pdHPmiafooYzlrozlkI7lnKjmiafooYzlhbbku5bmlrnms5UtLemcgOimgeWujOWWhCAqL1xuICAgIGF3YWl0IHRoaXMud2FpdEZpbGVUb0FkZFRhYmxlKGZpbGVzKVxuICAgIHRoaXMuZmlsZUhhbmRsaW5nKClcbiAgfVxuXG4gIC8qKuetieW+heWwhuaWh+S7tuaVsOaNruWKoOWFpeWIsOaWh+S7tuihqOagvOaVsOaNruS4rSAqL1xuICB3YWl0RmlsZVRvQWRkVGFibGUoZmlsZXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuZmlsZXNUYWJsZURhdGEucHVzaCguLi5hd2FpdCB0aGlzLnNldGZpbGVTaXplVW5pdHMoZmlsZXMpKVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH1cblxuICAvKirliKDpmaTmlofku7booajmoLznmoTpobkgKi9cbiAgZGVsZXRlRmlsZVRhYmxlSXRlbShpbmRleCwgaXRlbSkge1xuICAgIHRoaXMuZmlsZXNUYWJsZURhdGEuc3BsaWNlKGluZGV4LCAxKVxuICAgIGlmIChpdGVtLmlkKSB7XG4gICAgICB0aGlzLmRlbGV0ZVRoZVVwbG9hZGVkRmlsZXMucHVzaChpdGVtKVxuICAgIH1cbiAgICB0aGlzLmZpbGVIYW5kbGluZygpXG4gIH1cblxuICAvKirmlofku7blpITnkIYt6LCD55So5Zue6LCD5Ye95pWwICovXG4gIGZpbGVIYW5kbGluZygpIHtcbiAgICBsZXQgdGhlRmlsZXNUb0JlVXBsb2FkZWQgPSB0aGlzLmZpbGVzVGFibGVEYXRhLmZpbHRlcihlbCA9PiAhZWwuaWQpXG4gICAgLy/liKTmlq3lm77niYflpKflsI/mmK/lkKbotoXov4fpmZDliLYt55So5LqO5Yik5pat6KGo5Y2V5piv5ZCm5YWB6K645o+Q5LqkXG4gICAgbGV0IGlzU3VibWl0ID0gIXRoaXMuZmlsZXNUYWJsZURhdGEuc29tZShlbCA9PiBlbC5zaXplID4gdGhpcy5zaXplTGltaXQpO1xuICAgIHRoaXMuZmlsZURhdGFDaGFuZ2UuZW1pdCh7IHRoZUZpbGVzVG9CZVVwbG9hZGVkLCBkZWxldGVUaGVVcGxvYWRlZEZpbGVzOiB0aGlzLmRlbGV0ZVRoZVVwbG9hZGVkRmlsZXMsIGlzU3VibWl0IH0pXG4gIH1cblxuICAvKirorr7nva7lgLzmlofku7blpKflsI/ljZXkvY0vICovXG4gIGFzeW5jIHNldGZpbGVTaXplVW5pdHMoZmlsZXM6IEZpbGVbXSB8IGFueVtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGxldCBmb3JtYXR0ZWRGaWxlcyA9IFtdXG4gICAgICBmaWxlcy5mb3JFYWNoKGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgIGZpbGUuZmlsZVNpemUgPSB0aGlzLl9GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShmaWxlLnNpemUpXG4gICAgICAgIGZvcm1hdHRlZEZpbGVzLnB1c2goZmlsZSlcbiAgICAgICAgLy/orr7nva7pgInmi6nlm77niYfnmoTmnKzlnLB1cmxcbiAgICAgICAgaWYgKCFmaWxlLnNyYykgZmlsZS5zcmMgPSBhd2FpdCB0aGlzLl9GaWxlQXBpU2VydmljZS5nZXRJbWFnZUxhY29sQmFzZTY0VXJsKGZpbGUpO1xuICAgICAgfSk7XG4gICAgICByZXNvbHZlKGZpbGVzKVxuICAgIH0pXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTJcIj5cbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiICNmaWxlRWRpdCBbbXVsdGlwbGVdPVwiX211bHRpcGxlXCIgKGNoYW5nZSk9XCJnZXRGaWxlQ2hhbmdlKCRldmVudClcIj5cbjwvZGl2PlxuXG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiZmlsZXNUYWJsZURhdGEubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydGaWxlRXhwbG9yZXI6OkZpbGVOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWxlc1RhYmxlRGF0YTtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZS1maWxlLXByZXZpZXcgW3dpZHRoXT1cIic4MHB4J1wiIFtzcmNdPVwiaXRlbS5zcmNcIiBbbmFtZV09XCJpdGVtLm5hbWVcIiBbdHlwZV09XCJpdGVtLnR5cGVcIiBbcHJldmlld109XCJ0cnVlXCI+PC9mZS1maWxlLXByZXZpZXc+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0ubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1kYW5nZXJcIiAqbmdJZj1cIml0ZW0uc2l6ZSA+IHNpemVMaW1pdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3snRmlsZUV4cGxvcmVyOjpFeGNlZWRzTWF4aW11bVNpemUnIHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbjpfRmlsZUFwaVNlcnZpY2UuZm9ybWF0RmlsZVNpemUoc2l6ZUxpbWl0KX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLmZpbGVTaXplfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0wIGJ0bi1saWdodCBcIiAoY2xpY2suc3RvcCk9XCJkZWxldGVGaWxlVGFibGVJdGVtKGksaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoIHAtMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPiJdfQ==
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZWRpdC9maWxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1lZGl0L2ZpbGUtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUTlGLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDUyxlQUErQjtRQUEvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFHeEMsVUFBVTtRQUNWLGNBQVMsR0FBWSxJQUFJLENBQUE7UUFNekIsa0JBQWtCO1FBQ2xCLGNBQVMsR0FBVSxFQUFFLENBQUE7UUFRckIsZ0NBQWdDO1FBQ3RCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUU3Qzs7VUFFRTtRQUNGLGNBQVMsR0FBVyxPQUFPLENBQUE7UUFNM0IsWUFBWTtRQUNaLG1CQUFjLEdBQVUsRUFBRSxDQUFBO1FBQzFCLGdCQUFnQjtRQUNoQiwyQkFBc0IsR0FBVSxFQUFFLENBQUE7SUFqQzlCLENBQUM7SUFJTCxJQUNXLFFBQVEsQ0FBQyxDQUFVO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUdELElBQ1csUUFBUSxDQUFDLENBQVE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFB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QWlCLCtSQ1I5QixnZ0RBa0NROzsyRkQxQkssaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7bUZBWWIsUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVFJLGNBQWM7c0JBQXZCLE1BQU07Z0JBT0ksS0FBSztzQkFEZixLQUFLO2dCQVdtQyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtYXBpLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1lZGl0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUVkaXRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgKSB7IH1cblxuICAvKirmmK/lkKblpJrpgIkgKi9cbiAgX211bHRpcGxlOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IHY7XG4gICAgaWYgKHYpIHsgfVxuICB9XG4gIC8qKuaWh+S7tuaVsOaNri0t5bey5LiK5Lyg55qE5pWw5o2uICovXG4gIF9maWxlRGF0YTogYW55W10gPSBbXVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZpbGVEYXRhKHY6IGFueVtdKSB7XG4gICAgdGhpcy5fZmlsZURhdGEgPSB2O1xuICAgIGlmICh2Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ2V0RmlsZUNoYW5nZSh7IHRhcmdldDogeyBmaWxlczogdiB9IH0pXG4gICAgfVxuICB9XG4gIC8qKiDot5/pmo/ooajljZXmj5DkuqQtLeW3suaPkOS6pOeahOaVsOaNru+8jOaIlumAieaLqeeahOaVsOaNrua6kC0t5Zue6LCDKi9cbiAgQE91dHB1dCgpIGZpbGVEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgLyoq5paH5Lu25aSn5bCP6ZmQ5Yi2IFxuICAgKiBAcGFyYW0gMW1iXG4gICovXG4gIHNpemVMaW1pdDogbnVtYmVyID0gMTA0ODU3NlxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxpbWl0KHY6IG51bWJlcikge1xuICAgIHRoaXMuc2l6ZUxpbWl0ID0gdjtcbiAgfVxuXG4gIC8qKuaWh+S7tuihqOagvOaVsOaNriAqL1xuICBmaWxlc1RhYmxlRGF0YTogYW55W10gPSBbXVxuICAvKiog5b6F5Yig6Zmk5bey5LiK5Lyg55qE5paH5Lu25LusKi9cbiAgZGVsZXRlVGhlVXBsb2FkZWRGaWxlczogYW55W10gPSBbXVxuXG4gIC8qKuiOt+WPluaWh+S7tumAieaLqeahhueahOWFg+e0oCAqL1xuICBAVmlld0NoaWxkKCdmaWxlRWRpdCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbGVFZGl0OiBFbGVtZW50UmVmO1xuXG5cbiAgLyoq6I635Y+W5paH5Lu25L+h5oGv5pS55Y+YICovXG4gIGFzeW5jIGdldEZpbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBsZXQgZmlsZXMgPSBuZXcgQXJyYXkoLi4uZXZlbnQudGFyZ2V0LmZpbGVzKVxuICAgIC8qKumcgOimgeetieW+hXNldGZpbGVTaXplVW5pdHPmiafooYzlrozlkI7lnKjmiafooYzlhbbku5bmlrnms5UtLemcgOimgeWujOWWhCAqL1xuICAgIGF3YWl0IHRoaXMud2FpdEZpbGVUb0FkZFRhYmxlKGZpbGVzKVxuICAgIHRoaXMuZmlsZUhhbmRsaW5nKClcbiAgfVxuXG4gIC8qKuetieW+heWwhuaWh+S7tuaVsOaNruWKoOWFpeWIsOaWh+S7tuihqOagvOaVsOaNruS4rSAqL1xuICB3YWl0RmlsZVRvQWRkVGFibGUoZmlsZXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuZmlsZXNUYWJsZURhdGEucHVzaCguLi5hd2FpdCB0aGlzLnNldGZpbGVTaXplVW5pdHMoZmlsZXMpKVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH1cblxuICAvKirliKDpmaTmlofku7booajmoLznmoTpobkgKi9cbiAgZGVsZXRlRmlsZVRhYmxlSXRlbShpbmRleCwgaXRlbSkge1xuICAgIHRoaXMuZmlsZXNUYWJsZURhdGEuc3BsaWNlKGluZGV4LCAxKVxuICAgIGlmIChpdGVtLmlkKSB7XG4gICAgICB0aGlzLmRlbGV0ZVRoZVVwbG9hZGVkRmlsZXMucHVzaChpdGVtKVxuICAgIH1cbiAgICB0aGlzLmZpbGVIYW5kbGluZygpXG4gIH1cblxuICAvKirmlofku7blpITnkIYt6LCD55So5Zue6LCD5Ye95pWwICovXG4gIGZpbGVIYW5kbGluZygpIHtcbiAgICBsZXQgdGhlRmlsZXNUb0JlVXBsb2FkZWQgPSB0aGlzLmZpbGVzVGFibGVEYXRhLmZpbHRlcihlbCA9PiAhZWwuaWQpXG4gICAgLy/liKTmlq3lm77niYflpKflsI/mmK/lkKbotoXov4fpmZDliLYt55So5LqO5Yik5pat6KGo5Y2V5piv5ZCm5YWB6K645o+Q5LqkXG4gICAgbGV0IGlzU3VibWl0ID0gIXRoaXMuZmlsZXNUYWJsZURhdGEuc29tZShlbCA9PiBlbC5zaXplID4gdGhpcy5zaXplTGltaXQpO1xuICAgIHRoaXMuZmlsZURhdGFDaGFuZ2UuZW1pdCh7IHRoZUZpbGVzVG9CZVVwbG9hZGVkLCBkZWxldGVUaGVVcGxvYWRlZEZpbGVzOiB0aGlzLmRlbGV0ZVRoZVVwbG9hZGVkRmlsZXMsIGlzU3VibWl0IH0pXG4gIH1cblxuICAvKirorr7nva7lgLzmlofku7blpKflsI/ljZXkvY0vICovXG4gIGFzeW5jIHNldGZpbGVTaXplVW5pdHMoZmlsZXM6IEZpbGVbXSB8IGFueVtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGxldCBmb3JtYXR0ZWRGaWxlcyA9IFtdXG4gICAgICBmaWxlcy5mb3JFYWNoKGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgIGZpbGUuZmlsZVNpemUgPSB0aGlzLl9GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShmaWxlLnNpemUpXG4gICAgICAgIGZvcm1hdHRlZEZpbGVzLnB1c2goZmlsZSlcbiAgICAgICAgLy/orr7nva7pgInmi6nlm77niYfnmoTmnKzlnLB1cmxcbiAgICAgICAgaWYgKCFmaWxlLnNyYykgZmlsZS5zcmMgPSBhd2FpdCB0aGlzLl9GaWxlQXBpU2VydmljZS5nZXRJbWFnZUxhY29sQmFzZTY0VXJsKGZpbGUpO1xuICAgICAgfSk7XG4gICAgICByZXNvbHZlKGZpbGVzKVxuICAgIH0pXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTJcIj5cbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiICNmaWxlRWRpdCBbbXVsdGlwbGVdPVwiX211bHRpcGxlXCIgKGNoYW5nZSk9XCJnZXRGaWxlQ2hhbmdlKCRldmVudClcIj5cbjwvZGl2PlxuXG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiZmlsZXNUYWJsZURhdGEubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydGaWxlRXhwbG9yZXI6OkZpbGVOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWxlc1RhYmxlRGF0YTtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZS1maWxlLXByZXZpZXcgW3dpZHRoXT1cIic4MHB4J1wiIFtzcmNdPVwiaXRlbS5zcmNcIiBbbmFtZV09XCJpdGVtLm5hbWVcIiBbdHlwZV09XCJpdGVtLnR5cGVcIiBbcHJldmlld109XCJ0cnVlXCI+PC9mZS1maWxlLXByZXZpZXc+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0ubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1kYW5nZXJcIiAqbmdJZj1cIml0ZW0uc2l6ZSA+IHNpemVMaW1pdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3snRmlsZUV4cGxvcmVyOjpFeGNlZWRzTWF4aW11bVNpemUnIHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbjpfRmlsZUFwaVNlcnZpY2UuZm9ybWF0RmlsZVNpemUoc2l6ZUxpbWl0KX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLmZpbGVTaXplfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0wIGJ0bi1saWdodCBcIiAoY2xpY2suc3RvcCk9XCJkZWxldGVGaWxlVGFibGVJdGVtKGksaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoIHAtMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPiJdfQ==
|