@dignite-ng/expand.file-explorer 3.0.0-rc.3 → 3.0.0-rc.5

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 { ConfigStateService, EnvironmentService } from '@abp/ng.core';
1
2
  import { ChangeDetectorRef, Component, inject, Input, ViewChild } from '@angular/core';
2
3
  import { Validators } from '@angular/forms';
3
4
  import * as i0 from "@angular/core";
@@ -15,6 +16,8 @@ export class FileExplorerControlComponent {
15
16
  this.formConfiguration = '';
16
17
  /**文件容器名称 */
17
18
  this.FileContainerName = '';
19
+ this.configState = inject(ConfigStateService);
20
+ this.environment = inject(EnvironmentService);
18
21
  /**选择文件-弹窗的-已选定的文件 */
19
22
  this.selectedFileGroup = [];
20
23
  }
@@ -58,6 +61,11 @@ export class FileExplorerControlComponent {
58
61
  this.formConfiguration = this._fields.field.formConfiguration;
59
62
  this.FileContainerName = this.formConfiguration['FileExplorer.FileContainerName'];
60
63
  if (this._selected && this._selected.length > 0) {
64
+ this._selected.map((el) => {
65
+ if (!el['url']) {
66
+ el['url'] = this.GetImageUrl(el.blobName, el.containerName, el.tenantId);
67
+ }
68
+ });
61
69
  this.selectedFileGroup = this._selected;
62
70
  }
63
71
  let newControl = this.fb.control(this._selected, ValidatorsArray);
@@ -65,6 +73,12 @@ export class FileExplorerControlComponent {
65
73
  resolve(true);
66
74
  });
67
75
  }
76
+ GetImageUrl(value, ...args) {
77
+ let tenantId = args[1];
78
+ const environment = this.environment.getEnvironment();
79
+ let imgUrl = `${environment.apis.default.url}/api/file-explorer/files/${args[0]}/${value}?__tenant=${tenantId}&timer=${new Date().getTime()}`;
80
+ return value ? imgUrl : '';
81
+ }
68
82
  /**_selectedFile改变回调 */
69
83
  _selectedFileChange(event) {
70
84
  this.selectedFileGroup = event;
@@ -91,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
91
105
  type: ViewChild,
92
106
  args: ['submitclick', { static: true }]
93
107
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWxlLWV4cGxvcmVyL2ZpbGUtZXhwbG9yZXItY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vZmlsZS1leHBsb3Jlci9maWxlLWV4cGxvcmVyLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVVuQyxZQUFZO1FBQ1osWUFBTyxHQUFRLEVBQUUsQ0FBQztRQTRCVixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFVeEMsVUFBVTtRQUNWLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQUM1QixZQUFZO1FBQ1osc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBa0I1QixxQkFBcUI7UUFDckIsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO0lBdkVRLENBQUM7SUFJdkMsSUFDVyxNQUFNLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUlELElBQ1csTUFB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QURoQixLQUFLO2dCQVNLLE1BQU07c0JBRGhCLEtBQUs7Z0JBU0ssZUFBZTtzQkFEekIsS0FBSztnQkFTSyxRQUFRO3NCQURsQixLQUFLO2dCQU1zQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2ZlLWZpbGUtZXhwbG9yZXItY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWV4cGxvcmVyLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWV4cGxvcmVyLWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUV4cGxvcmVyQ29udHJvbENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBfZW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5KHY6IGFueSkge1xuICAgIHRoaXMuX2VudGl0eSA9IHY7XG4gICAgaWYgKHYpIHRoaXMuZGF0YUxvYWRlZCgpO1xuICB9XG5cbiAgLyoq5a2X5q616YWN572u5YiX6KGoICovXG4gIF9maWVsZHM6IGFueSA9ICcnO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZpZWxkcyh2OiBhbnkpIHtcbiAgICB0aGlzLl9maWVsZHMgPSB2O1xuICAgIGlmICh2KSB0aGlzLmRhdGFMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKueItue6p+Wtl+auteWQjeensO+8jOeUqOS6juS4uuihqOWNleiuvue9ruaOp+S7tui1i+WAvCAqL1xuICBfcGFyZW50RmlsZWROYW1lOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFyZW50RmlsZWROYW1lKHY6IGFueSkge1xuICAgIHRoaXMuX3BhcmVudEZpbGVkTmFtZSA9IHY7XG4gICAgaWYgKHYpIHRoaXMuZGF0YUxvYWRlZCgpO1xuICB9XG5cbiAgLyoq54i257qn5a2X5q615ZCN56ew77yM55So5LqO5Li66KGo5Y2V6K6+572u5o6n5Lu26LWL5YC8ICovXG4gIF9zZWxlY3RlZDogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gdjtcbiAgICBpZiAodiAmJiB2Lmxlbmd0aCA+IDApIHRoaXMuZGF0YUxvYWRlZCgpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICBnZXQgZXh0cmFQcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdHkuZ2V0KCdleHRyYVByb3BlcnRpZXMnKSBhcyBGb3JtR3JvdXA7XG4gIH1cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAvKirmlbDmja7liqDovb3lrozmiJAgKi9cbiAgYXN5bmMgZGF0YUxvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5fZmllbGRzICYmIHRoaXMuX2VudGl0eSAmJiB0aGlzLl9wYXJlbnRGaWxlZE5hbWUpIHtcbiAgICAgIGF3YWl0IHRoaXMuQWZ0ZXJJbml0KCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIOaJi+WKqOinpuWPkeWPmOabtOajgOa1i1xuICAgICAgdGhpcy5zdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAvKirlrZfmrrXphY3nva4gKi9cbiAgZm9ybUNvbmZpZ3VyYXRpb246IGFueSA9ICcnO1xuICAvKirmlofku7blrrnlmajlkI3np7AgKi9cbiAgRmlsZUNvbnRhaW5lck5hbWU6IGFueSA9ICcnO1xuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBsZXQgVmFsaWRhdG9yc0FycmF5ID0gW107XG4gICAgICBpZiAodGhpcy5fZmllbGRzLnJlcXVpcmVkKSB7XG4gICAgICAgIFZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbiA9IHRoaXMuX2ZpZWxkcy5maWVsZC5mb3JtQ29uZmlndXJhdGlvbjtcbiAgICAgIHRoaXMuRmlsZUNvbnRhaW5lck5hbWUgPSB0aGlzLmZvcm1Db25maWd1cmF0aW9uWydGaWxlRXhwbG9yZXIuRmlsZUNvbnRhaW5lck5hbWUnXTtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLl9zZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlR3JvdXAgPSB0aGlzLl9zZWxlY3RlZDtcbiAgICAgIH1cbiAgICAgIGxldCBuZXdDb250cm9sID0gdGhpcy5mYi5jb250cm9sKHRoaXMuX3NlbGVjdGVkLCBWYWxpZGF0b3JzQXJyYXkpO1xuICAgICAgdGhpcy5leHRyYVByb3BlcnRpZXMuc2V0Q29udHJvbCh0aGlzLl9maWVsZHMuZmllbGQubmFtZSwgbmV3Q29udHJvbCk7XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoq6YCJ5oup5paH5Lu2LeW8ueeql+eahC3lt7LpgInlrprnmoTmlofku7YgKi9cbiAgc2VsZWN0ZWRGaWxlR3JvdXA6IGFueVtdID0gW107XG5cbiAgLyoqX3NlbGVjdGVkRmlsZeaUueWPmOWbnuiwgyAqL1xuICBfc2VsZWN0ZWRGaWxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVHcm91cCA9IGV2ZW50O1xuICAgIGxldCBmaWVsZE5hbWUgPSB0aGlzLl9maWVsZHMuZmllbGQubmFtZTtcbiAgICBsZXQgb2JqID0ge307XG4gICAgb2JqW2ZpZWxkTmFtZV0gPSBldmVudDtcbiAgICB0aGlzLmV4dHJhUHJvcGVydGllcy5wYXRjaFZhbHVlKG9iaik7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiX2VudGl0eVwiPlxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImV4dHJhUHJvcGVydGllc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiICpuZ0lmPVwiX2ZpZWxkcy5kaXNwbGF5TmFtZVwiPnt7IF9maWVsZHMuZGlzcGxheU5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGZlLWZpbGUtcGlja2VyIFtzZWxlY3RGb3JtRmlsZV09XCJzZWxlY3RlZEZpbGVHcm91cFwiIFttdWx0aXBsZV09XCJmb3JtQ29uZmlndXJhdGlvblsnRmlsZUV4cGxvcmVyLlVwbG9hZEZpbGVNdWx0aXBsZSddXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRGaWxlQ2hhbmdlKT1cIl9zZWxlY3RlZEZpbGVDaGFuZ2UoJGV2ZW50KVwiIFtmaWxlQ29udGFpbmVyTmFtZV09XCJGaWxlQ29udGFpbmVyTmFtZVwiPjwvZmUtZmlsZS1waWNrZXI+XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZCBkLWJsb2NrXCIgKm5nSWY9XCJfZmllbGRzLmZpZWxkLmRlc2NyaXB0aW9uXCI+e3tfZmllbGRzLmZpZWxkLmRlc2NyaXB0aW9ufX08L3NtYWxsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuPC9mb3JtPiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWxlLWV4cGxvcmVyL2ZpbGUtZXhwbG9yZXItY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vZmlsZS1leHBsb3Jlci9maWxlLWV4cGxvcmVyLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBUXBFLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFVbkMsWUFBWTtRQUNaLFlBQU8sR0FBUSxFQUFFLENBQUM7UUE2QlYsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBVXhDLFVBQVU7UUFDVixzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsWUFBWTtRQUNaLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQXVCcEIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUN4QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBUWhELHFCQUFxQjtRQUNyQixzQkFBaUIsR0FBVSxFQUFFLENBQUM7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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdmZS1maWxlLWV4cGxvcmVyLWNvbnRyb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1leHBsb3Jlci1jb250cm9sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1leHBsb3Jlci1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVFeHBsb3JlckNvbnRyb2xDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVudGl0eSh2OiBhbnkpIHtcbiAgICB0aGlzLl9lbnRpdHkgPSB2O1xuICAgIGlmICh2KSB0aGlzLmRhdGFMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKuWtl+autemFjee9ruWIl+ihqCAqL1xuICBfZmllbGRzOiBhbnkgPSAnJztcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWVsZHModjogYW55KSB7XG4gICAgdGhpcy5fZmllbGRzID0gdjtcbiAgICBpZiAodikgdGhpcy5kYXRhTG9hZGVkKCk7XG4gIH1cblxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cbiAgX3BhcmVudEZpbGVkTmFtZTogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhcmVudEZpbGVkTmFtZSh2OiBhbnkpIHtcbiAgICB0aGlzLl9wYXJlbnRGaWxlZE5hbWUgPSB2O1xuICAgIGlmICh2KSB0aGlzLmRhdGFMb2FkZWQoKTtcbiAgfVxuXG4gIC8qKueItue6p+Wtl+auteWQjeensO+8jOeUqOS6juS4uuihqOWNleiuvue9ruaOp+S7tui1i+WAvCAqL1xuICBfc2VsZWN0ZWQ6IGFueTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHY7XG4gICAgXG4gICAgaWYgKHYgJiYgdi5sZW5ndGggPiAwKSB0aGlzLmRhdGFMb2FkZWQoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgZ2V0IGV4dHJhUHJvcGVydGllcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5LmdldCgnZXh0cmFQcm9wZXJ0aWVzJykgYXMgRm9ybUdyb3VwO1xuICB9XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgLyoq5pWw5o2u5Yqg6L295a6M5oiQICovXG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkcyAmJiB0aGlzLl9lbnRpdHkgJiYgdGhpcy5fcGFyZW50RmlsZWROYW1lKSB7XG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyDmiYvliqjop6blj5Hlj5jmm7Tmo4DmtYtcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoq5a2X5q616YWN572uICovXG4gIGZvcm1Db25maWd1cmF0aW9uOiBhbnkgPSAnJztcbiAgLyoq5paH5Lu25a655Zmo5ZCN56ewICovXG4gIEZpbGVDb250YWluZXJOYW1lOiBhbnkgPSAnJztcbiAgQWZ0ZXJJbml0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgbGV0IFZhbGlkYXRvcnNBcnJheSA9IFtdO1xuICAgICAgaWYgKHRoaXMuX2ZpZWxkcy5yZXF1aXJlZCkge1xuICAgICAgICBWYWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24gPSB0aGlzLl9maWVsZHMuZmllbGQuZm9ybUNvbmZpZ3VyYXRpb247XG4gICAgICB0aGlzLkZpbGVDb250YWluZXJOYW1lID0gdGhpcy5mb3JtQ29uZmlndXJhdGlvblsnRmlsZUV4cGxvcmVyLkZpbGVDb250YWluZXJOYW1lJ107XG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZC5tYXAoKGVsOmFueSk9PntcbiAgICAgICAgICBpZighZWxbJ3VybCddKXtcbiAgICAgICAgICAgIGVsWyd1cmwnXT10aGlzLkdldEltYWdlVXJsKGVsLmJsb2JOYW1lLGVsLmNvbnRhaW5lck5hbWUsZWwudGVuYW50SWQpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZUdyb3VwID0gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgICBsZXQgbmV3Q29udHJvbCA9IHRoaXMuZmIuY29udHJvbCh0aGlzLl9zZWxlY3RlZCwgVmFsaWRhdG9yc0FycmF5KTtcbiAgICAgIHRoaXMuZXh0cmFQcm9wZXJ0aWVzLnNldENvbnRyb2wodGhpcy5fZmllbGRzLmZpZWxkLm5hbWUsIG5ld0NvbnRyb2wpO1xuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnU3RhdGUgPSBpbmplY3QoQ29uZmlnU3RhdGVTZXJ2aWNlKVxuICBwcml2YXRlIGVudmlyb25tZW50ID0gaW5qZWN0KEVudmlyb25tZW50U2VydmljZSlcbiAgR2V0SW1hZ2VVcmwodmFsdWU6IHVua25vd24sIC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24ge1xuICAgIGxldCB0ZW5hbnRJZCA9IGFyZ3NbMV1cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKTtcbiAgICBsZXQgaW1nVXJsID1gJHtlbnZpcm9ubWVudC5hcGlzLmRlZmF1bHQudXJsfS9hcGkvZmlsZS1leHBsb3Jlci9maWxlcy8ke2FyZ3NbMF19LyR7dmFsdWV9P19fdGVuYW50PSR7dGVuYW50SWR9JnRpbWVyPSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YFxuICAgIHJldHVybiB2YWx1ZT9pbWdVcmw6JydcbiAgfVxuXG4gIC8qKumAieaLqeaWh+S7ti3lvLnnqpfnmoQt5bey6YCJ5a6a55qE5paH5Lu2ICovXG4gIHNlbGVjdGVkRmlsZUdyb3VwOiBhbnlbXSA9IFtdO1xuXG4gIC8qKl9zZWxlY3RlZEZpbGXmlLnlj5jlm57osIMgKi9cbiAgX3NlbGVjdGVkRmlsZUNoYW5nZShldmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlR3JvdXAgPSBldmVudDtcbiAgICBsZXQgZmllbGROYW1lID0gdGhpcy5fZmllbGRzLmZpZWxkLm5hbWU7XG4gICAgbGV0IG9iaiA9IHt9O1xuICAgIG9ialtmaWVsZE5hbWVdID0gZXZlbnQ7XG4gICAgdGhpcy5leHRyYVByb3BlcnRpZXMucGF0Y2hWYWx1ZShvYmopO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9lbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJleHRyYVByb3BlcnRpZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cIl9maWVsZHMuZGlzcGxheU5hbWVcIj57eyBfZmllbGRzLmRpc3BsYXlOYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxmZS1maWxlLXBpY2tlciBbc2VsZWN0Rm9ybUZpbGVdPVwic2VsZWN0ZWRGaWxlR3JvdXBcIiBbbXVsdGlwbGVdPVwiZm9ybUNvbmZpZ3VyYXRpb25bJ0ZpbGVFeHBsb3Jlci5VcGxvYWRGaWxlTXVsdGlwbGUnXVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZUNoYW5nZSk9XCJfc2VsZWN0ZWRGaWxlQ2hhbmdlKCRldmVudClcIiBbZmlsZUNvbnRhaW5lck5hbWVdPVwiRmlsZUNvbnRhaW5lck5hbWVcIj48L2ZlLWZpbGUtcGlja2VyPlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtbXV0ZWQgZC1ibG9ja1wiICpuZ0lmPVwiX2ZpZWxkcy5maWVsZC5kZXNjcmlwdGlvblwiPnt7X2ZpZWxkcy5maWVsZC5kZXNjcmlwdGlvbn19PC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cbjwvZm9ybT4iXX0=
@@ -76,6 +76,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
76
76
  // FileExplorerControlComponent,
77
77
  ],
78
78
  providers: [
79
+ // GetImageUrlPipe
79
80
  // // [Required]
80
81
  // ListService,
81
82
  // // [Optional]
@@ -85,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
85
86
  ],
86
87
  }]
87
88
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvZmlsZS1leHBsb3Jlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUF5QixNQUFNLGNBQWMsQ0FBQztBQUM1SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNySCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7QUF5Q3ZILE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQXRDM0IsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsMkJBQTJCO1lBQzNCLDRCQUE0QixhQUc1QixXQUFXO1lBQ1gsVUFBVTtZQUNWLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIseUJBQXlCLGFBR3pCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixpQkFBaUI7WUFDakIsb0JBQW9COytHQWFYLGtCQUFrQixZQTVCM0IsV0FBVztZQUNYLFVBQVU7WUFDVixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixZQUFZO1lBQ1oscUJBQXFCO1lBQ3JCLHlCQUF5Qjs7MkZBcUJoQixrQkFBa0I7a0JBeEM5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsK0JBQStCO3dCQUMvQixnQ0FBZ0M7cUJBQ2pDO29CQUNELFNBQVMsRUFBRTtvQkFDVCxnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQiwrREFBK0Q7b0JBQy9ELDBFQUEwRTtvQkFDMUUsd0RBQXdEO3FCQUN6RDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE56VHJlZU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xuaW1wb3J0IHsgRmlsZUV4cGxvcmVyUm91dGluZ01vZHVsZSB9IGZyb20gJy4vZmlsZS1leHBsb3Jlci1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBGaWxlRWRpdENvbXBvbmVudCwgRmlsZVBpY2tlckNvbXBvbmVudCwgRmlsZU1vZGFsQ29tcG9uZW50LCBGaWxlTW9kYWxUcmVlQ29tcG9uZW50LCBGaWxlRG9tZUNvbXBvbmVudCwgZmllbEZpZWxkQ29udHJvbEdyb3VwIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZpbGVQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9wcmV2aWV3cy9maWxlLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVFeHBsb3JlckNvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljLWZvcm0vZmlsZS1leHBsb3Jlci9maWxlLWV4cGxvcmVyLWNvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZUV4cGxvcmVyQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9keW5hbWljLWZvcm0vZmlsZS1leHBsb3Jlci9maWxlLWV4cGxvcmVyLWNvbnRyb2wuY29tcG9uZW50JztcbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZpbGVFZGl0Q29tcG9uZW50LFxuICAgIEZpbGVQaWNrZXJDb21wb25lbnQsXG4gICAgRmlsZU1vZGFsQ29tcG9uZW50LFxuICAgIEZpbGVNb2RhbFRyZWVDb21wb25lbnQsXG4gICAgRmlsZURvbWVDb21wb25lbnQsXG4gICAgRmlsZVByZXZpZXdDb21wb25lbnQsXG4gICAgRmlsZUV4cGxvcmVyQ29uZmlnQ29tcG9uZW50LFxuICAgIEZpbGVFeHBsb3JlckNvbnRyb2xDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdiRHJvcGRvd25Nb2R1bGUsXG4gICAgTnpUcmVlTW9kdWxlLFxuICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcbiAgICBGaWxlRXhwbG9yZXJSb3V0aW5nTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRmlsZUVkaXRDb21wb25lbnQsXG4gICAgRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxDb21wb25lbnQsXG4gICAgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCxcbiAgICBGaWxlRG9tZUNvbXBvbmVudCxcbiAgICBGaWxlUHJldmlld0NvbXBvbmVudCxcbiAgICAvLyBGaWxlRXhwbG9yZXJDb25maWdDb21wb25lbnQsXG4gICAgLy8gRmlsZUV4cGxvcmVyQ29udHJvbENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gLy8gW1JlcXVpcmVkXVxuICAgIC8vIExpc3RTZXJ2aWNlLFxuICAgIC8vIC8vIFtPcHRpb25hbF1cbiAgICAvLyAvLyBQcm92aWRlIHRoaXMgdG9rZW4gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgZGVib3VuY2UgdGltZS5cbiAgICAvLyAvLyBEZWZhdWx0IGlzIDMwMC4gQ2Fubm90IGJlIDAuIEFueSB2YWx1ZSBiZWxvdyAxMDAgaXMgbm90IHJlY29tbWVuZGVkLlxuICAgIC8vIHsgcHJvdmlkZTogTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLCB1c2VWYWx1ZTogNTAwIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVFeHBsb3Jlck1vZHVsZSB7XG5cbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvZmlsZS1leHBsb3Jlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUF5QixNQUFNLGNBQWMsQ0FBQztBQUM1SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNySCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7QUEyQ3ZILE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQXZDM0IsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsMkJBQTJCO1lBQzNCLDRCQUE0QixhQUc1QixXQUFXO1lBQ1gsVUFBVTtZQUNWLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIseUJBQXlCLGFBR3pCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixpQkFBaUI7WUFDakIsb0JBQW9COytHQWNYLGtCQUFrQixZQTdCM0IsV0FBVztZQUNYLFVBQVU7WUFDVixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixZQUFZO1lBQ1oscUJBQXFCO1lBQ3JCLHlCQUF5Qjs7MkZBc0JoQixrQkFBa0I7a0JBekM5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsK0JBQStCO3dCQUMvQixnQ0FBZ0M7cUJBQ2pDO29CQUNELFNBQVMsRUFBRTtvQkFDVCxrQkFBa0I7b0JBQ2xCLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLCtEQUErRDtvQkFDL0QsMEVBQTBFO29CQUMxRSx3REFBd0Q7cUJBQ3pEO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTnpUcmVlTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC90cmVlJztcbmltcG9ydCB7IE5neFZhbGlkYXRlQ29yZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9maWxlLWV4cGxvcmVyLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IEZpbGVFZGl0Q29tcG9uZW50LCBGaWxlUGlja2VyQ29tcG9uZW50LCBGaWxlTW9kYWxDb21wb25lbnQsIEZpbGVNb2RhbFRyZWVDb21wb25lbnQsIEZpbGVEb21lQ29tcG9uZW50LCBmaWVsRmllbGRDb250cm9sR3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXdzL2ZpbGUtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZUV4cGxvcmVyQ29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWxlLWV4cGxvcmVyL2ZpbGUtZXhwbG9yZXItY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9maWxlLWV4cGxvcmVyL2ZpbGUtZXhwbG9yZXItY29udHJvbC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaWxlRWRpdENvbXBvbmVudCxcbiAgICBGaWxlUGlja2VyQ29tcG9uZW50LFxuICAgIEZpbGVNb2RhbENvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxUcmVlQ29tcG9uZW50LFxuICAgIEZpbGVEb21lQ29tcG9uZW50LFxuICAgIEZpbGVQcmV2aWV3Q29tcG9uZW50LFxuICAgIEZpbGVFeHBsb3JlckNvbmZpZ0NvbXBvbmVudCxcbiAgICBGaWxlRXhwbG9yZXJDb250cm9sQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29yZU1vZHVsZSxcbiAgICBUaGVtZVNoYXJlZE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIE56VHJlZU1vZHVsZSxcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXG4gICAgRmlsZUV4cGxvcmVyUm91dGluZ01vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEZpbGVFZGl0Q29tcG9uZW50LFxuICAgIEZpbGVQaWNrZXJDb21wb25lbnQsXG4gICAgRmlsZU1vZGFsQ29tcG9uZW50LFxuICAgIEZpbGVNb2RhbFRyZWVDb21wb25lbnQsXG4gICAgRmlsZURvbWVDb21wb25lbnQsXG4gICAgRmlsZVByZXZpZXdDb21wb25lbnQsXG4gICAgLy8gRmlsZUV4cGxvcmVyQ29uZmlnQ29tcG9uZW50LFxuICAgIC8vIEZpbGVFeHBsb3JlckNvbnRyb2xDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIEdldEltYWdlVXJsUGlwZVxuICAgIC8vIC8vIFtSZXF1aXJlZF1cbiAgICAvLyBMaXN0U2VydmljZSxcbiAgICAvLyAvLyBbT3B0aW9uYWxdXG4gICAgLy8gLy8gUHJvdmlkZSB0aGlzIHRva2VuIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IGRlYm91bmNlIHRpbWUuXG4gICAgLy8gLy8gRGVmYXVsdCBpcyAzMDAuIENhbm5vdCBiZSAwLiBBbnkgdmFsdWUgYmVsb3cgMTAwIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICAvLyB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJNb2R1bGUge1xuXG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, Input, EventEmitter, Output, ViewChild, inject, NgModule, ChangeDetectorRef } from '@angular/core';
3
3
  import * as i3 from '@abp/ng.core';
4
- import { ListService, LIST_QUERY_DEBOUNCE_TIME, CoreModule } from '@abp/ng.core';
4
+ import { ListService, LIST_QUERY_DEBOUNCE_TIME, ConfigStateService, EnvironmentService, CoreModule } from '@abp/ng.core';
5
5
  import * as i2$1 from '@abp/ng.theme.shared';
6
6
  import { ThemeSharedModule } from '@abp/ng.theme.shared';
7
7
  import * as i1 from '@angular/forms';
@@ -1044,6 +1044,8 @@ class FileExplorerControlComponent {
1044
1044
  this.formConfiguration = '';
1045
1045
  /**文件容器名称 */
1046
1046
  this.FileContainerName = '';
1047
+ this.configState = inject(ConfigStateService);
1048
+ this.environment = inject(EnvironmentService);
1047
1049
  /**选择文件-弹窗的-已选定的文件 */
1048
1050
  this.selectedFileGroup = [];
1049
1051
  }
@@ -1087,6 +1089,11 @@ class FileExplorerControlComponent {
1087
1089
  this.formConfiguration = this._fields.field.formConfiguration;
1088
1090
  this.FileContainerName = this.formConfiguration['FileExplorer.FileContainerName'];
1089
1091
  if (this._selected && this._selected.length > 0) {
1092
+ this._selected.map((el) => {
1093
+ if (!el['url']) {
1094
+ el['url'] = this.GetImageUrl(el.blobName, el.containerName, el.tenantId);
1095
+ }
1096
+ });
1090
1097
  this.selectedFileGroup = this._selected;
1091
1098
  }
1092
1099
  let newControl = this.fb.control(this._selected, ValidatorsArray);
@@ -1094,6 +1101,12 @@ class FileExplorerControlComponent {
1094
1101
  resolve(true);
1095
1102
  });
1096
1103
  }
1104
+ GetImageUrl(value, ...args) {
1105
+ let tenantId = args[1];
1106
+ const environment = this.environment.getEnvironment();
1107
+ let imgUrl = `${environment.apis.default.url}/api/file-explorer/files/${args[0]}/${value}?__tenant=${tenantId}&timer=${new Date().getTime()}`;
1108
+ return value ? imgUrl : '';
1109
+ }
1097
1110
  /**_selectedFile改变回调 */
1098
1111
  _selectedFileChange(event) {
1099
1112
  this.selectedFileGroup = event;
@@ -1206,6 +1219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
1206
1219
  // FileExplorerControlComponent,
1207
1220
  ],
1208
1221
  providers: [
1222
+ // GetImageUrlPipe
1209
1223
  // // [Required]
1210
1224
  // ListService,
1211
1225
  // // [Optional]
@@ -1 +1 @@
1
- {"version":3,"file":"dignite-ng-expand.file-explorer.mjs","sources":["../../../projects/file-explorer/src/lib/services/file-api.service.ts","../../../projects/file-explorer/src/lib/previews/models.ts","../../../projects/file-explorer/src/lib/previews/file-preview.component.ts","../../../projects/file-explorer/src/lib/previews/file-preview.component.html","../../../projects/file-explorer/src/lib/components/file-edit/file-edit.component.ts","../../../projects/file-explorer/src/lib/components/file-edit/file-edit.component.html","../../../projects/file-explorer/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts","../../../projects/file-explorer/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts","../../../projects/file-explorer/src/lib/components/file-modal-tree/file-modal-tree.component.ts","../../../projects/file-explorer/src/lib/components/file-modal-tree/file-modal-tree.component.html","../../../projects/file-explorer/src/lib/components/file-modal/file-modal.component.ts","../../../projects/file-explorer/src/lib/components/file-modal/file-modal.component.html","../../../projects/file-explorer/src/lib/components/file-picker/file-picker.component.ts","../../../projects/file-explorer/src/lib/components/file-picker/file-picker.component.html","../../../projects/file-explorer/src/lib/components/dome/file-dome.component.ts","../../../projects/file-explorer/src/lib/components/dome/file-dome.component.html","../../../projects/file-explorer/src/lib/file-explorer-routing.module.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-config.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-config.component.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-config.component.html","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-control.component.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-control.component.html","../../../projects/file-explorer/src/lib/components/dynamic-form/form-control-group.ts","../../../projects/file-explorer/src/lib/file-explorer.module.ts","../../../projects/file-explorer/src/public-api.ts","../../../projects/file-explorer/src/dignite-ng-expand.file-explorer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileApiService {\n\n constructor() { }\n\n /**转换文件大小单位 输入k */\n formatFileSize(bytes: any) {\n const units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let size:any = bytes;\n let unitIndex = 0;\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n // 保留两位小数,四舍五入\n size = size.toFixed(1)\n return `${size} ${units[unitIndex]}`;\n }\n /**获取图片的本地连接 */\n getImageLacolBase64Url(file: File) {\n return new Promise((resolve, rejects) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = error => rejects(error);\n })\n }\n /**\n * 深拷贝--方法\n * $api.deepClone() */\n deepClone(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n const result = Array.isArray(obj) ? [] : {};\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n if (obj[key] instanceof Date) {\n result[key] = new Date(obj[key].getTime());\n } else if (obj[key] instanceof RegExp) {\n result[key] = new RegExp(obj[key]);\n } else if (obj[key] instanceof File) {\n result[key]=obj[key]\n } else {\n result[key] = this.deepClone(obj[key]);\n }\n } else {\n result[key] = obj[key];\n }\n }\n }\n return result;\n }\n\n}\n","\r\n\r\nexport let ImageTypeOption=[{\r\n label:'',\r\n type:'image/jpeg',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/webp',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/gif',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/png',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/bmp',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'audio/ogg',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'video/mp4',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'application/pdf',\r\n icon:'fa fa-file-pdf-o',\r\n},{\r\n label:'',\r\n type:'application/msword',\r\n icon:'fa fa-file-word-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n icon:'fa fa-file-word-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.ms-powerpoint',\r\n icon:'fa fa-file-powerpoint-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n icon:'fa fa-file-powerpoint-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.ms-excel',\r\n icon:'fa fa-file-excel-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n icon:'fa fa-file-excel-o',\r\n},{\r\n label:'',\r\n type:'application/x-zip-compressed',\r\n icon:'fa fa-file-archive-o',\r\n},{\r\n label:'',\r\n type:'7z',\r\n icon:'fa fa-file-archive-o',\r\n},{\r\n label:'',\r\n type:'text/plain',\r\n icon:'fa fa-file-text-o',\r\n\r\n},{\r\n label:'',\r\n type:'',\r\n icon:'fa fa-file-o',\r\n}\r\n] ","import { AfterContentInit, Component, Input, TemplateRef } from '@angular/core';\nimport { ImageTypeOption } from './models';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-preview',\n templateUrl: './file-preview.component.html',\n styleUrls: ['./file-preview.component.scss']\n})\nexport class FilePreviewComponent implements AfterContentInit{\n\n /**文件宽度 */\n @Input() width: any = '100px'\n /*文件链接 */\n @Input() src: any = ''\n /**是否支持大图预览 */\n @Input() preview: any = true;\n /**文件类型 */\n @Input() type: any = ''\n /**文件名称 */\n @Input() name: any = ''\n\n /**是否是文件 */\n isImage = true\n /**是否是视频 */\n isAudio = false\n /**是否是音频 */\n isVideo = false\n /**文件类型及图标 */\n _ImageTypeOption = ImageTypeOption\n\n\n constructor(\n private modalService: NgbModal\n ) { }\n \n ngAfterContentInit(): void {\n //Called after ngOnInit when the component's or directive's content has been initialized.\n //Add 'implements AfterContentInit' to the class.\n if (!this.type) {\n this.type = this.name.includes('.7z') ? '7z' : ''\n }\n this.isImage = this.type.includes('image/')\n this.isAudio = this.type.includes('audio/')\n this.isVideo = this.type.includes('video/')\n }\n\n /**预览图片 */\n previewImage() {\n\n }\n\n /**模态框实例 */\n modalRef!: NgbModalRef;\n\n /**放大倍数 */\n zoom: number = 10\n /**旋转 */\n rotate: number = 0\n\n\n /**打开预览弹窗 */\n OpenPreviewImage(content: TemplateRef<any>) {\n\n this.modalRef = this.modalService.open(content, {\n fullscreen: true,\n modalDialogClass: 'dignite-preview',\n });\n this.modalRef.result.then(\n (result) => {\n },\n (reason) => {\n this.zoom = 10\n },\n );\n }\n /**放大图像 */\n zoomIn() {\n let zoom = this.zoom\n if (zoom == 20) return\n zoom++\n this.zoom = zoom\n }\n /**缩小图像 */\n zoomOut() {\n let zoom = this.zoom\n if (zoom == 3) return\n zoom--\n this.zoom = zoom\n }\n /**右旋转 */\n RotateRight() {\n if (this.rotate == 360) return this.rotate = 0\n this.rotate += 90\n }\n}\n","<div class=\"image_box\" [style]=\"{width:width,maxWidth:'100%'}\">\n <div class=\"img_box\" *ngIf=\"isImage\">\n <img [src]=\"src\" />\n <div class=\"option_box\" *ngIf=\"preview\">\n <i class=\"fa fa-eye \" (click.stop)=\"OpenPreviewImage(content)\"></i>\n </div>\n </div>\n <a [href]=\"src\" [download]=\"name\" target>\n <i class=\"fa fa-file-audio-o fs-1\" *ngIf=\"isAudio\"></i>\n <i class=\"fa fa-file-video-o fs-1\" *ngIf=\"isVideo\"></i>\n <ng-container *ngIf=\"!(isImage||isAudio||isVideo)\">\n <ng-container *ngFor=\"let item of _ImageTypeOption; let i=index\">\n <i class=\"fs-1\" [ngClass]=\"item.icon\" *ngIf=\"item.type===type\"></i>\n </ng-container>\n </ng-container>\n </a>\n</div>\n\n<ng-template #content let-modal>\n <div class=\"modal-header\">\n <div class=\"d-flex justify-content-end w-100 fs-3\">\n <i class=\"mx-2 fa fa fa-repeat\" aria-hidden=\"true\" title=\"右旋转\" role=\"button\" (click)=\"RotateRight()\"></i>\n <i class=\"mx-2 fa fa-search-minus\" aria-hidden=\"true\" title=\"缩小\" role=\"button\" (click)=\"zoomOut()\"></i>\n <i class=\"mx-2 fa fa-search-plus\" aria-hidden=\"true\" title=\"放大\" role=\"button\" (click)=\"zoomIn()\"></i>\n <i class=\"mx-2 fa fa-times\" aria-hidden=\"true\" role=\"button\" (click)=\"modal.dismiss('Cross click')\"></i>\n </div>\n </div> \n <div class=\"modal-body d-flex justify-content-center align-items-center \">\n <img width=\"400\" class=\"modal-body-preview\" [src]=\"src\" [style.transform]=\"'scale('+zoom/10+') rotate('+rotate+'deg)'\" >\n </div>\n</ng-template>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n selector: 'fe-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss']\n})\nexport class FileEditComponent {\n constructor(\n public _FileApiService: FileApiService,\n ) { }\n\n /**是否多选 */\n _multiple: boolean = true\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n if (v) { }\n }\n /**文件数据--已上传的数据 */\n _fileData: any[] = []\n @Input()\n public set fileData(v: any[]) {\n this._fileData = v;\n if (v.length > 0) {\n this.getFileChange({ target: { files: v } })\n }\n }\n /** 跟随表单提交--已提交的数据,或选择的数据源--回调*/\n @Output() fileDataChange = new EventEmitter()\n\n /**文件大小限制 \n * @param 1mb\n */\n sizeLimit: number = 1048576\n @Input()\n public set limit(v: number) {\n this.sizeLimit = v;\n }\n\n /**文件表格数据 */\n filesTableData: any[] = []\n /** 待删除已上传的文件们*/\n deleteTheUploadedFiles: any[] = []\n\n /**获取文件选择框的元素 */\n @ViewChild('fileEdit', { static: true }) fileEdit: ElementRef;\n\n\n /**获取文件信息改变 */\n async getFileChange(event) {\n let files = new Array(...event.target.files)\n /**需要等待setfileSizeUnits执行完后在执行其他方法--需要完善 */\n await this.waitFileToAddTable(files)\n this.fileHandling()\n }\n\n /**等待将文件数据加入到文件表格数据中 */\n waitFileToAddTable(files) {\n return new Promise(async (resolve, rejects) => {\n this.filesTableData.push(...await this.setfileSizeUnits(files))\n resolve(true)\n })\n }\n\n /**删除文件表格的项 */\n deleteFileTableItem(index, item) {\n this.filesTableData.splice(index, 1)\n if (item.id) {\n this.deleteTheUploadedFiles.push(item)\n }\n this.fileHandling()\n }\n\n /**文件处理-调用回调函数 */\n fileHandling() {\n let theFilesToBeUploaded = this.filesTableData.filter(el => !el.id)\n //判断图片大小是否超过限制-用于判断表单是否允许提交\n let isSubmit = !this.filesTableData.some(el => el.size > this.sizeLimit);\n this.fileDataChange.emit({ theFilesToBeUploaded, deleteTheUploadedFiles: this.deleteTheUploadedFiles, isSubmit })\n }\n\n /**设置值文件大小单位/ */\n async setfileSizeUnits(files: File[] | any[]): Promise<any> {\n return new Promise((resolve, rejects) => {\n let formattedFiles = []\n files.forEach(async (file) => {\n file.fileSize = this._FileApiService.formatFileSize(file.size)\n formattedFiles.push(file)\n //设置选择图片的本地url\n if (!file.src) file.src = await this._FileApiService.getImageLacolBase64Url(file);\n });\n resolve(files)\n })\n }\n\n}\n","<div class=\"input-group mb-3\">\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>","import type { CreateFileInput, FileContainerConfigurationDto, FileDescriptorDto, GetFilesInput, ImageResizeInput, UpdateFileInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport type { FileResult } from '../../../microsoft/asp-net-core/mvc/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileDescriptorService {\r\n apiName = 'FileExplorer';\r\n \r\n\r\n create = (input: CreateFileInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'POST',\r\n url: '/api/file-explorer/files',\r\n params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },\r\n body: input.file,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/file-explorer/files/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n download = (containerName: string, blobName: string, fileName: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileResult>({\r\n method: 'GET',\r\n url: `/api/file-explorer/files/download/${containerName}/${blobName}`,\r\n params: { fileName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'GET',\r\n url: `/api/file-explorer/files/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getFileContainerConfiguration = (containerName: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileContainerConfigurationDto>({\r\n method: 'GET',\r\n url: '/api/file-explorer/files/configuration',\r\n params: { containerName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFilesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FileDescriptorDto>>({\r\n method: 'GET',\r\n url: '/api/file-explorer/files',\r\n params: { containerName: input.containerName, directoryId: input.directoryId, creatorId: input.creatorId, filter: input.filter, entityId: input.entityId, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getStream = (containerName: string, blobName: string, imageResize?: ImageResizeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, Blob>({\r\n method: 'GET',\r\n responseType: 'blob',\r\n url: `/api/file-explorer/files/${containerName}/${blobName}`,\r\n params: { width: imageResize.width, height: imageResize.height },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateFileInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/files/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateDirectoryInput, DirectoryDescriptorDto, DirectoryDescriptorInfoDto, GetDirectoriesInput, MoveDirectoryInput, UpdateDirectoryInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileDescriptorService {\r\n apiName = 'FileExplorer';\r\n \r\n\r\n create = (input: CreateDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'POST',\r\n url: '/api/file-explorer/directories',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/file-explorer/directories/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'GET',\r\n url: `/api/file-explorer/directories/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetDirectoriesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<DirectoryDescriptorInfoDto>>({\r\n method: 'GET',\r\n url: '/api/file-explorer/directories',\r\n params: { containerName: input.containerName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n move = (id: string, input: MoveDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/directories/${id}/move`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/directories/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport * as DescriptorService from '../../proxy/dignite/file-explorer/directories';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree';\nimport { of } from 'rxjs';\nimport { FileApiService } from '../../services/file-api.service';\nimport { LocalizationService } from '@abp/ng.core';\nvar that;\n@Component({\n selector: 'fe-file-modal-tree',\n templateUrl: './file-modal-tree.component.html',\n styleUrls: ['./file-modal-tree.component.scss']\n})\nexport class FileModalTreeComponent {\n constructor(\n private _DescriptorService: DescriptorService.FileDescriptorService,\n private fb: FormBuilder,\n private toaster: ToasterService,\n public _FileApiService: FileApiService,\n public _LocalizationService: LocalizationService,\n ) {\n that = this\n }\n\n /**文件分组列表 */\n fileGroupList: any[] = [];\n\n /**选择的tree节点 */\n _theSelectedTreeNode: any = '';\n @Input()\n public set theSelectedTreeNode(v: any) {\n this._theSelectedTreeNode = v;\n if (v.length > 0) {\n this.loadData()\n }\n }\n\n /**正在编辑的节点 */\n theNodeBeingEdited: any = '';\n\n /**已展开的节点 */\n anExpandedNode: any[] = [];\n\n /**图片容器 */\n _fileContainerName: string;\n\n /**tree节点选择回调 */\n @Output() nodeClick = new EventEmitter();\n\n\n @Input()\n public set fileContainerName(v: string) {\n if (v) {\n this._fileContainerName = v;\n this.loadData()\n }\n }\n\n handleClick = (event) => event.stopPropagation();\n\n loadData() {\n if (this._fileContainerName) {\n this.getFileGroupList()\n }\n }\n\n\n /**获取文件分组 */\n getFileGroupList() {\n this._DescriptorService.getList({\n containerName: this._fileContainerName,\n }).subscribe(async (res) => {\n this.fileGroupList = await this.setTheValueOfTheNodeRecursively(res.items)\n })\n }\n \n /**递归设置节点的值 */\n setTheValueOfTheNodeRecursively(array: any[]): any {\n return new Promise((reslove, rejects) => {\n array.forEach((el) => {\n el.title = el.name\n el.key = el.id\n el.expanded = this.anExpandedNode.includes(el.key)\n if (el.children.length > 0) {\n this.setTheValueOfTheNodeRecursively(el.children)\n }\n })\n reslove(array)\n })\n }\n\n /**tree-拖拽 */\n nzEvent(event: NzFormatEmitEvent): void {\n }\n\n /**tree-拖拽 -验证*/\n beforeDrop(arg: NzFormatBeforeDropEvent) {\n if (arg.pos === 0 || arg.pos === 1) {\n that._DescriptorService.move(arg.dragNode.key, {\n \"parentId\": arg.pos === 1 ? (arg.node.parentNode?.key||'') : arg.node.key,\n \"order\": arg.pos === 1 ? arg.node.origin.order + 1 : arg.node.origin.children.length + 1\n }).subscribe(res => {\n that.getFileGroupList()\n })\n return of(true)\n } else {\n return of(false);\n }\n }\n\n /**tree--选择节点 */\n activeNode(event) {\n this._theSelectedTreeNode = event.node\n this.nodeClick.emit(event.node)\n }\n\n /**判断节点是否选中 */\n isNodeSelected = (el) => el.key === this._theSelectedTreeNode?.key\n\n /**点击展开树节点图标触发 */\n nzExpandChange(event) {\n let anExpandedNode = this.anExpandedNode\n if (anExpandedNode.includes(event.node.key)) {\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key)\n } else {\n anExpandedNode.push(event.node.key)\n }\n this.anExpandedNode = anExpandedNode\n }\n\n\n /**增加分组 */\n addDescriptorBtn(items: any = '', edit = false) {\n this.ModalDescriptorOpen = true\n this.ModalDescriptorForm = this.fb.group({\n containerName: [this._fileContainerName || '', Validators.required],\n name: ['', Validators.required],\n parentId: [items?.key || '', Validators.required],\n })\n /**编辑 */\n if (edit) {\n this.theNodeBeingEdited = items.origin\n this.ModalDescriptorForm.patchValue({\n name: items.origin.name\n })\n }\n }\n\n /**删除分组 */\n deleteDescriptorBtn(node) {\n this._DescriptorService.delete(node.key).subscribe(res => {\n this.ModalDescriptorOpen = false\n if (this.theNodeBeingEdited.key == node.key) this.theNodeBeingEdited = ''\n this.getFileGroupList()\n })\n }\n\n \n\n /**分组 */\n /**模态框-状态-是否打开 */\n ModalDescriptorOpen: boolean = false\n\n /**模态框-descriptor-繁忙状态-用于确定模态的繁忙状态是否为真 */\n ModalDescriptorBusy: boolean = false\n\n /**模态框-descriptor-表单 */\n ModalDescriptorForm: FormGroup | undefined;\n \n /**模态框-descriptor-表单--控件模板-动态赋值表单控件 */\n @ViewChild('ModalFormDescriptorSubmit', { static: false }) ModalFormDescriptorSubmit: ElementRef;\n\n /**模态框-descriptor-状态改变回调 */\n ModalDescriptorVisibleChange(event) {\n if (!event) {\n this.ModalDescriptorForm = undefined\n this.theNodeBeingEdited = ''\n return\n }\n }\n\n /**f分组模态框保存 */\n createOrEditSave() {\n let input = this.ModalDescriptorForm.value\n if (this.theNodeBeingEdited) {\n this._DescriptorService.update(this.theNodeBeingEdited.key, input).subscribe(res => {\n this.ModalDescriptorOpen = false\n this.getFileGroupList()\n })\n return\n }\n this._DescriptorService.create(input).subscribe(res => {\n this.ModalDescriptorOpen = false\n this.getFileGroupList()\n })\n }\n\n\n\n\n}\n","<div class=\"card-header p-0 mb-1 d-flex justify-content-between align-items-center\">\n <h6 class=\"h6 mb-0\">{{'FileExplorer::MyDirectories' | abpLocalization}}</h6>\n <button type=\"button\" class=\"btn btn-light btn-sm ms-2\" (click.stop)=\"addDescriptorBtn()\"><i\n class=\"fas fa-plus-circle\" aria-hidden=\"true\"></i></button>\n</div>\n<nz-tree [nzData]=\"fileGroupList\" class=\"ng-zorro-antd-tree\" nzDraggable nzBlockNode nzShowIcon\n [nzExpandedIcon]=\"multiExpandedIconTpl\" (nzOnDrop)=\"nzEvent($event)\" [nzBeforeDrop]=\"beforeDrop\"\n (nzClick)=\"activeNode($event)\" (nzExpandChange)=\"nzExpandChange($event)\" [nzTreeTemplate]=\"nzTreeTemplate\">\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div class=\"custom-node d-inline-block ng-star-inserted dropdown\" [title]=\"node.title\">\n <div #dropdown=\"ngbDropdown\" class=\"d-inline-block\" ngbDropdown placement=\"bottom\" container=\"body\">\n <div class=\"btn-group\" [class.selected]=\"isNodeSelected(node)\">\n <button class=\"btn btn-sm p-0 px-1\">{{ node.title }}</button>\n <button class=\"btn btn-sm p-0\" (click)=\"handleClick($event)\" ngbDropdownToggle\n [class.dropdown-toggle]=\"false\" aria-hidden=\"true\">\n <i class=\"fas fa-caret-down text-muted p-1\"></i>\n </button>\n </div>\n <div ngbDropdownMenu>\n <button ngbDropdownItem\n (click.stop)=\"addDescriptorBtn(node)\">{{'FileExplorer::NewDirectory' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"addDescriptorBtn(node,true)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"deleteDescriptorBtn(node)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <ng-container *ngIf=\"node.children.length > 0\">\n <i [class]=\"node.isExpanded ? 'fas fa-caret-down' : 'fas fa-caret-right'\"></i>\n </ng-container>\n </ng-template>\n</nz-tree>\n\n\n<abp-modal [(visible)]=\"ModalDescriptorOpen\" [busy]=\"ModalDescriptorBusy\"\n (visibleChange)=\"ModalDescriptorVisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{theNodeBeingEdited?('AbpUi::Edit' | abpLocalization):('FileExplorer::NewDirectory' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"ModalDescriptorForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"ModalDescriptorForm\"\n (keydown.enter)=\"$event.preventDefault()\" (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #ModalFormDescriptorSubmit style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'FileExplorer::DirectoryName' | abpLocalization}}</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"ModalFormDescriptorSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","import { Component, EventEmitter, Input, Output, SimpleChanges, inject } from '@angular/core';\nimport * as FileService from '../../proxy/dignite/file-explorer/files';\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\nimport { PagedResultDto, ABP, ListService, Rest, RestService, LocalizationService, LIST_QUERY_DEBOUNCE_TIME } from '@abp/ng.core';\nimport { FileDescriptorDto, FileDescriptorService, GetFilesInput } from '../../proxy/dignite/file-explorer/files';\nimport { FileApiService } from '../../services/file-api.service';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nvar that\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-modal',\n templateUrl: './file-modal.component.html',\n styleUrls: ['./file-modal.component.scss'],\n providers: [\n // [Required]\n ListService,\n // [Optional]\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n ]\n})\nexport class FileModalComponent {\n\n constructor(\n private _FileService: FileService.FileDescriptorService,\n private toaster: ToasterService,\n public readonly list: ListService,\n public _FileApiService: FileApiService,\n private restService: RestService,\n private confirmation: ConfirmationService,\n private _LocalizationService: LocalizationService,\n ) {\n that = this\n \n }\n\n private _FileDescriptorService=inject(FileDescriptorService)\n /**获取目录配置 */\n getFilesConfiguration(){\n this._FileDescriptorService.getFileContainerConfiguration(this._fileContainerName).subscribe(res=>{\n this.createDirectoryPermissionName=res?.createDirectoryPermissionName\n })\n }\n /**目录的权限名称 */\n createDirectoryPermissionName:string=null\n\n /**图片容器 */\n _fileContainerName: string\n @Input()\n public set fileContainerName(v: string) {\n if (v) {\n this._fileContainerName = v;\n this.loadData()\n }\n }\n\n /**是否多选 */\n _multiple: boolean = false\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n if (v) { }\n }\n\n /**文件大小限制 \n* @param 1mb\n*/\n sizeLimit: number = 1048576\n @Input()\n public set limit(v: number) {\n this.sizeLimit = v;\n }\n /**父组件传递的模态框状态 */\n @Input()\n public set visible(v: boolean) {\n this.ModalOpen = v;\n if (v) {\n this.loadData()\n }\n }\n\n /**模态框状态回调 */\n @Output() visibleChange = new EventEmitter()\n\n\n\n /**模态框-状态-是否打开 */\n ModalOpen: boolean = false\n\n /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */\n ModalBusy: boolean = false\n\n\n\n /**模态框-状态改变回调 */\n ModalVisibleChange(event) {\n if (!event) {\n this.visibleChange.emit(event)\n return\n }\n }\n\n /**模态框保存 */\n modalSave() {\n let selectedTablearr = this._FileApiService.deepClone(this.selectedTable)\n this.selectFilefn.emit(selectedTablearr)\n\n this.ModalVisibleChange(false)\n }\n /**dignite-file-modal-tree */\n /**选择的tree节点 */\n _theSelectedTreeNode: any = ''\n\n /**初始化数据 */\n loadData() {\n if (this.ModalOpen && this._fileContainerName) {\n this.hookToQuery()\n this.getFilesConfiguration()\n }\n }\n\n /**tree-节点选择 */\n _nodeClick(event) {\n this._theSelectedTreeNode = event\n this.list.get()\n }\n\n /**图片上传-要上传图片的状态文件列表 */\n uploadPictureStatusList: any[] = []\n\n /**图片上传-获取文件信息改变 */\n async getFileChange(event) {\n let files = new Array(...event.target.files)\n this.uploadPictureStatusList = files\n for (const file of files) {\n if (file.size > this.sizeLimit) {\n this.setuploadPictureStatus(file, 2)\n continue;\n }\n await this.uploadingFile(file).then(() => {\n this.setuploadPictureStatus(file, 1)\n this.list.get()\n }).catch(() => {\n this.setuploadPictureStatus(file, 2)\n }); // 等待每个文件上传完成 \n }\n this.list.get()\n let isSubmit = !this.uploadPictureStatusList.some(el => el.status == 2);\n if (isSubmit) {\n // this.toaster.success(\"上传完成\");\n setTimeout(() => {\n this.uploadPictureStatusList = []\n }, 6000)\n }\n }\n\n /**图片上传-设置uploadPictureStatusList的状态 */\n setuploadPictureStatus(file, type) {\n this.uploadPictureStatusList.map(el => {\n if (el == file) el.status = type\n })\n }\n\n\n /**图片上传-递归按顺序上传 */\n uploadingFile(file) {\n return new Promise((resolve, rejects) => {\n let formData = new FormData();\n formData.append('file', file, file.name);\n this.createFile({\n file: formData,\n containerName: this._fileContainerName,\n directoryId: this._theSelectedTreeNode?.key || '',\n entityId: ''\n }).subscribe(res => {\n resolve(true)\n }, (err) => {\n rejects(false)\n })\n })\n }\n\n\n /**文件表格-数据*/\n data: PagedResultDto<FileDescriptorDto> = {\n items: [],\n totalCount: 0,\n };\n\n /**文件表格-条件*/\n filters = {} as GetFilesInput;\n\n /**文件表格-表格自带选择类型 */\n SelectionType = SelectionType;\n\n /**文件表格-选择的表格数据项 */\n selectedTable = []\n\n /**已选定的文件 */\n @Input() selectPickerFile: any[]\n\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n this.selectedTable = this._FileApiService.deepClone(this.selectPickerFile)\n }\n /**当前选择的table项 id */\n nowSelectId: any = ''\n\n /**选择文件回调 */\n @Output() selectFilefn = new EventEmitter<any[]>()\n\n /**文件表格-获取表格数据 */\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) => this._FileService.getList({\n ...query,\n ...this.filters,\n containerName: this._fileContainerName,\n directoryId: this._theSelectedTreeNode.key\n });\n const setData = (list: PagedResultDto<FileDescriptorDto>) => (this.data = list);\n this.list.hookToQuery(getData).subscribe(setData);\n }\n\n /**文件表格-查看所有分组的文件数据 */\n lookAllFile() {\n this._theSelectedTreeNode = ''\n this.list.get()\n }\n\n /**选择表格项 */\n onSelectTableItem({ selected }) {\n this.selectedTable = this._FileApiService.deepClone(selected)\n let selectedTablearr = this.removeDuplicatesById(this.selectedTable)\n if (selected.length > selectedTablearr.length) {\n selectedTablearr = selectedTablearr.filter(el => el.id !== this.nowSelectId)\n }\n this.selectedTable = selectedTablearr\n }\n\n /**删除数组中重复的项 */\n removeDuplicatesById(array) {\n const seenIds = {};\n return array.filter(item => {\n if (!seenIds[item.id]) {\n seenIds[item.id] = true;\n return true;\n }\n return false;\n });\n }\n\n /**一个布尔or函数,可用于检查是否要根据条件选择特定行。 */\n selectCheck = (row, column, value) => {\n this.nowSelectId = row.id\n return true;\n }\n\n /**判断row是否选中 */\n selectedcheckbox = (id) => {\n return this.selectedTable.some(el => el.id == id)\n }\n\n\n\n /**删除图片 */\n deleteFile(file) {\n\n this.confirmation\n .warn('', { key: '', defaultValue: this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`) })\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._FileService.delete(file.id).subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get()\n })\n }\n });\n }\n\n /**关闭文件状态弹窗 */\n closeFileStatusModal() {\n this.uploadPictureStatusList = []\n }\n\n /**创建图片的接口,代理中的file类型不匹配,切换为any类型 */\n createFile = (input: any, config?: Partial<Rest.Config>) =>\n this.restService.request<any, FileDescriptorDto>({\n method: 'POST',\n url: '/api/file-explorer/files',\n params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },\n body: input.file,\n },\n { apiName: 'FileExplorer', ...config });\n}\n","<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" *ngIf=\"createDirectoryPermissionName\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div [class]=\"createDirectoryPermissionName?'col-9':'col-12'\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-3 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" \n (change)=\"getFileChange($event)\" />\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"_multiple?SelectionType.multiClick:SelectionType.single\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <fe-file-preview [width]=\"'80px'\" [src]=\"row.url\" [name]=\"row.name\" [type]=\"row.mimeType\" [preview]=\"true\"></fe-file-preview>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:mm:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card p-1\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\n <thead>\n <tr>\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 uploadPictureStatusList; let i = index\">\n <tr>\n <th scope=\"row\">\n <div>{{ item.name }}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status === 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status === 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n selector: 'fe-file-picker',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss']\n})\nexport class FilePickerComponent implements OnChanges {\n\n\n\n constructor(\n private _FileApiService: FileApiService,\n ) {\n\n }\n\n\n /**是否多选 */\n _multiple: boolean = false\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n }\n\n /**图片容器 */\n _fileContainerName: string = 'Images'\n @Input()\n public set fileContainerName(v: string) {\n this._fileContainerName = v;\n }\n\n /**已选定的文件 */\n @Input() selectFormFile: any[]\n\n ngOnChanges(changes: SimpleChanges): void {\n let selectFormFilengOnChanges = changes.selectFormFile['currentValue']\n if (selectFormFilengOnChanges.length > 0) {\n this._fileShowTable = selectFormFilengOnChanges\n }\n }\n\n @Output() selectedFileChange = new EventEmitter()\n\n _fileShowTable: any[] = []\n\n /**表格选择的文件回调 */\n _selectFilefn(event: any[]) {\n let _fileShowTable = this._FileApiService.deepClone(event)\n this._fileShowTable = _fileShowTable\n this.selectFormFile = _fileShowTable\n this.selectedFileChange.emit(_fileShowTable)\n }\n\n /**模态框-状态-是否打开 */\n ModalOpen: boolean = false\n\n /**删除文件表格项 */\n deleteFileTableItem(i, file) {\n this._fileShowTable.splice(i, 1)\n this.selectFormFile = this._fileShowTable\n this.selectedFileChange.emit([])\n this.selectedFileChange.emit(this.selectFormFile)\n }\n\n}\n","<button class=\"btn btn-sm btn-primary ms-2 float-end\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" [multiple]=\"_multiple\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.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 _fileShowTable;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.url||item.Url\" [name]=\"item.name||item.Name\" [type]=\"item.mimeType||item.MimeType\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name||item.Name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.Size||item.size)}}</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>\n\n\n","import { Component, inject } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-dome',\n templateUrl: './file-dome.component.html',\n styleUrls: ['./file-dome.component.scss']\n})\nexport class FileDomeComponent {\n\n /**跟随表单提交--已提交的数据,或选择的数据源 */\n fileSubmittedData: any[] = []\n\n /**跟随表单提交--待提交的数据\n * \n * @param 待上传的文件们\n * @param 待删除已上传的文件们\n */\n fileDataToBeSubmitted: any\n\nprivate FileApiService=inject(FileApiService)\n /**跟随表单提交--数据发生改变回调 */\n fileDataChange(event) {\n this.fileDataToBeSubmitted = event\n }\n\n /**选择文件-弹窗的-已选定的文件 */\n selectedFileGroup:any[]=[]\n\n /**_selectedFile改变回调 */\n _selectedFileChange(event) {\n this.selectedFileGroup = event\n }\n}\n","<div class=\"row\">\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-edit [(fileData)]=\"fileSubmittedData\" (fileDataChange)=\"fileDataChange($event)\"></fe-file-edit>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" fileContainerName=\"SampleContainer\" (selectedFileChange)=\"_selectedFileChange($event)\" ></fe-file-picker>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FileDomeComponent } from './components/dome/file-dome.component';\n\nconst routes: Routes = [\n {\n path: 'file-dome',\n component: FileDomeComponent\n},\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class FileExplorerRoutingModule { \n \n}\n","import { FormControl, Validators } from \"@angular/forms\";\r\n\r\nexport class FileExplorerConfig {\r\n\r\n\r\n /**文件容器名称 */\r\n 'FileExplorer.FileContainerName': any = ['', [Validators.required]];\r\n /**多选 */\r\n 'FileExplorer.UploadFileMultiple': any = [false, []];\r\n \r\n\r\n constructor(data?: FileExplorerConfig) {\r\n if (data) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n this[key] = data[key];\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n}","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { FileExplorerConfig } from './file-explorer-config';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-explorer-config',\n templateUrl: './file-explorer-config.component.html',\n styleUrls: ['./file-explorer-config.component.scss']\n})\nexport class FileExplorerConfigComponent {\n constructor(\n private fb: FormBuilder,\n ) { }\n /**表单控件类型 */\n _type: any\n @Input()\n public set type(v: any) {\n this._type = v\n this.dataLoaded()\n }\n /**表单实体 */\n _Entity: FormGroup | undefined\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded()\n }\n /**选择的表单信息 */\n _selected: any\n @Input()\n public set selected(v: any) {\n this._selected = v\n\n this.dataLoaded()\n }\n get formConfiguration() {\n return this._Entity.get('formConfiguration') as FormGroup\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this._Entity.setControl('formConfiguration', this.fb.group(new FileExplorerConfig()))\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration\n })\n }\n resolve(true)\n })\n }\n}\n","<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'DigniteAbpDynamicFormsFileExplorer::FileContainerName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"FileExplorer.FileContainerName\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"FileExplorer.UploadFileMultiple\" id=\"flexRadioDefault1\">\n <label class=\"form-check-label\" for=\"flexRadioDefault1\">\n {{'DigniteAbpDynamicFormsFileExplorer::UploadFileMultiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-explorer-control',\n templateUrl: './file-explorer-control.component.html',\n styleUrls: ['./file-explorer-control.component.scss'],\n})\nexport class FileExplorerControlComponent {\n constructor(private fb: FormBuilder) {}\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n if (v) this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n if (v) this.dataLoaded();\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n if (v) this.dataLoaded();\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n if (v && v.length > 0) this.dataLoaded();\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity.get('extraProperties') as FormGroup;\n }\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n /**字段配置 */\n formConfiguration: any = '';\n /**文件容器名称 */\n FileContainerName: any = '';\n AfterInit() {\n return new Promise((resolve, rejects) => {\n let ValidatorsArray = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n this.formConfiguration = this._fields.field.formConfiguration;\n this.FileContainerName = this.formConfiguration['FileExplorer.FileContainerName'];\n if (this._selected && this._selected.length > 0) {\n this.selectedFileGroup = this._selected;\n }\n let newControl = this.fb.control(this._selected, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n\n /**选择文件-弹窗的-已选定的文件 */\n selectedFileGroup: any[] = [];\n\n /**_selectedFile改变回调 */\n _selectedFileChange(event) {\n this.selectedFileGroup = event;\n let fieldName = this._fields.field.name;\n let obj = {};\n obj[fieldName] = event;\n this.extraProperties.patchValue(obj);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" [multiple]=\"formConfiguration['FileExplorer.UploadFileMultiple']\"\n (selectedFileChange)=\"_selectedFileChange($event)\" [fileContainerName]=\"FileContainerName\"></fe-file-picker>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","// import { TableConfigComponent, TableControlComponent, MatrixConfigComponent, MatrixControlComponent } from \"@dignite-ng/expand.cms\";\r\nimport { Type } from \"@angular/core\";\r\nimport { FileExplorerConfigComponent, FileExplorerControlComponent } from \"./file-explorer\";\r\n\r\nexport interface FieldControlGroupInterfaces {\r\n displayName: string\r\n name: string\r\n // type: TextEditMode,\r\n /**\r\n * 动态表单控件\r\n */\r\n fieldComponent?: Type<any>;\r\n\r\n /**\r\n * 表单控件配置组件\r\n */\r\n fieldConfigComponent?: Type<any>;\r\n\r\n /**\r\n * 条目列表中显示的组件\r\n */\r\n fieldViewComponent?: Type<any>;\r\n}\r\n\r\n\r\n\r\n/**\r\n * 表单控件分组-包含配置,控件,显示的数组\r\n */\r\nexport const fielFieldControlGroup: FieldControlGroupInterfaces[] = [\r\n \r\n {\r\n displayName: '文件管理',\r\n name: 'FileExplorer',\r\n fieldConfigComponent: FileExplorerConfigComponent,\r\n fieldComponent: FileExplorerControlComponent,\r\n // fieldViewComponent:TextBoxViewComponent,\r\n }\r\n];\r\nexport function getExcludeAssignControl(typeName) {\r\n // return FieldControlGroup.filter(el => el.name !== typeName)\r\n return fielFieldControlGroup\r\n}\r\n\r\nexport function AddFieldControlGroup(array=[]) {\r\n fielFieldControlGroup.push(...array)\r\n}","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { FileExplorerRoutingModule } from './file-explorer-routing.module';\nimport { FileEditComponent, FilePickerComponent, FileModalComponent, FileModalTreeComponent, FileDomeComponent, fielFieldControlGroup } from './components';\nimport { FilePreviewComponent } from './previews/file-preview.component';\nimport { FileExplorerConfigComponent } from './components/dynamic-form/file-explorer/file-explorer-config.component';\nimport { FileExplorerControlComponent } from './components/dynamic-form/file-explorer/file-explorer-control.component';\n@NgModule({\n declarations: [\n FileEditComponent,\n FilePickerComponent,\n FileModalComponent,\n FileModalTreeComponent,\n FileDomeComponent,\n FilePreviewComponent,\n FileExplorerConfigComponent,\n FileExplorerControlComponent,\n ],\n imports: [\n FormsModule,\n CoreModule,\n ThemeSharedModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n NzTreeModule,\n NgxValidateCoreModule,\n FileExplorerRoutingModule,\n ],\n exports: [\n FileEditComponent,\n FilePickerComponent,\n FileModalComponent,\n FileModalTreeComponent,\n FileDomeComponent,\n FilePreviewComponent,\n // FileExplorerConfigComponent,\n // FileExplorerControlComponent,\n ],\n providers: [\n // // [Required]\n // ListService,\n // // [Optional]\n // // Provide this token if you want a different debounce time.\n // // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n // { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n ],\n})\nexport class FileExplorerModule {\n\n}\n","/*\n * Public API Surface of file-explorer\n */\n\n\nexport * from './lib/file-explorer.module';\nexport * from './lib/components/dynamic-form/form-control-group';\nexport * from './lib/components';\n// export * from './lib/services';\n// export * from './lib/proxy';\nexport * from './lib/previews';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.FileApiService","i4.FilePreviewComponent","FileDescriptorService","that","i1.FileDescriptorService","i2","i3","i4.FileApiService","i5","i6","i7","i7.FileModalTreeComponent","i8.FilePreviewComponent","i4.FileModalComponent","i5.FilePreviewComponent","i1.FileEditComponent","i2.FilePickerComponent","i4.FilePickerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"dignite-ng-expand.file-explorer.mjs","sources":["../../../projects/file-explorer/src/lib/services/file-api.service.ts","../../../projects/file-explorer/src/lib/previews/models.ts","../../../projects/file-explorer/src/lib/previews/file-preview.component.ts","../../../projects/file-explorer/src/lib/previews/file-preview.component.html","../../../projects/file-explorer/src/lib/components/file-edit/file-edit.component.ts","../../../projects/file-explorer/src/lib/components/file-edit/file-edit.component.html","../../../projects/file-explorer/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts","../../../projects/file-explorer/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts","../../../projects/file-explorer/src/lib/components/file-modal-tree/file-modal-tree.component.ts","../../../projects/file-explorer/src/lib/components/file-modal-tree/file-modal-tree.component.html","../../../projects/file-explorer/src/lib/components/file-modal/file-modal.component.ts","../../../projects/file-explorer/src/lib/components/file-modal/file-modal.component.html","../../../projects/file-explorer/src/lib/components/file-picker/file-picker.component.ts","../../../projects/file-explorer/src/lib/components/file-picker/file-picker.component.html","../../../projects/file-explorer/src/lib/components/dome/file-dome.component.ts","../../../projects/file-explorer/src/lib/components/dome/file-dome.component.html","../../../projects/file-explorer/src/lib/file-explorer-routing.module.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-config.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-config.component.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-config.component.html","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-control.component.ts","../../../projects/file-explorer/src/lib/components/dynamic-form/file-explorer/file-explorer-control.component.html","../../../projects/file-explorer/src/lib/components/dynamic-form/form-control-group.ts","../../../projects/file-explorer/src/lib/file-explorer.module.ts","../../../projects/file-explorer/src/public-api.ts","../../../projects/file-explorer/src/dignite-ng-expand.file-explorer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileApiService {\n\n constructor() { }\n\n /**转换文件大小单位 输入k */\n formatFileSize(bytes: any) {\n const units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let size:any = bytes;\n let unitIndex = 0;\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n // 保留两位小数,四舍五入\n size = size.toFixed(1)\n return `${size} ${units[unitIndex]}`;\n }\n /**获取图片的本地连接 */\n getImageLacolBase64Url(file: File) {\n return new Promise((resolve, rejects) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = error => rejects(error);\n })\n }\n /**\n * 深拷贝--方法\n * $api.deepClone() */\n deepClone(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n const result = Array.isArray(obj) ? [] : {};\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n if (obj[key] instanceof Date) {\n result[key] = new Date(obj[key].getTime());\n } else if (obj[key] instanceof RegExp) {\n result[key] = new RegExp(obj[key]);\n } else if (obj[key] instanceof File) {\n result[key]=obj[key]\n } else {\n result[key] = this.deepClone(obj[key]);\n }\n } else {\n result[key] = obj[key];\n }\n }\n }\n return result;\n }\n\n}\n","\r\n\r\nexport let ImageTypeOption=[{\r\n label:'',\r\n type:'image/jpeg',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/webp',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/gif',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/png',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'image/bmp',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'audio/ogg',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'video/mp4',\r\n icon:'',\r\n},{\r\n label:'',\r\n type:'application/pdf',\r\n icon:'fa fa-file-pdf-o',\r\n},{\r\n label:'',\r\n type:'application/msword',\r\n icon:'fa fa-file-word-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n icon:'fa fa-file-word-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.ms-powerpoint',\r\n icon:'fa fa-file-powerpoint-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n icon:'fa fa-file-powerpoint-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.ms-excel',\r\n icon:'fa fa-file-excel-o',\r\n},{\r\n label:'',\r\n type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n icon:'fa fa-file-excel-o',\r\n},{\r\n label:'',\r\n type:'application/x-zip-compressed',\r\n icon:'fa fa-file-archive-o',\r\n},{\r\n label:'',\r\n type:'7z',\r\n icon:'fa fa-file-archive-o',\r\n},{\r\n label:'',\r\n type:'text/plain',\r\n icon:'fa fa-file-text-o',\r\n\r\n},{\r\n label:'',\r\n type:'',\r\n icon:'fa fa-file-o',\r\n}\r\n] ","import { AfterContentInit, Component, Input, TemplateRef } from '@angular/core';\nimport { ImageTypeOption } from './models';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-preview',\n templateUrl: './file-preview.component.html',\n styleUrls: ['./file-preview.component.scss']\n})\nexport class FilePreviewComponent implements AfterContentInit{\n\n /**文件宽度 */\n @Input() width: any = '100px'\n /*文件链接 */\n @Input() src: any = ''\n /**是否支持大图预览 */\n @Input() preview: any = true;\n /**文件类型 */\n @Input() type: any = ''\n /**文件名称 */\n @Input() name: any = ''\n\n /**是否是文件 */\n isImage = true\n /**是否是视频 */\n isAudio = false\n /**是否是音频 */\n isVideo = false\n /**文件类型及图标 */\n _ImageTypeOption = ImageTypeOption\n\n\n constructor(\n private modalService: NgbModal\n ) { }\n \n ngAfterContentInit(): void {\n //Called after ngOnInit when the component's or directive's content has been initialized.\n //Add 'implements AfterContentInit' to the class.\n if (!this.type) {\n this.type = this.name.includes('.7z') ? '7z' : ''\n }\n this.isImage = this.type.includes('image/')\n this.isAudio = this.type.includes('audio/')\n this.isVideo = this.type.includes('video/')\n }\n\n /**预览图片 */\n previewImage() {\n\n }\n\n /**模态框实例 */\n modalRef!: NgbModalRef;\n\n /**放大倍数 */\n zoom: number = 10\n /**旋转 */\n rotate: number = 0\n\n\n /**打开预览弹窗 */\n OpenPreviewImage(content: TemplateRef<any>) {\n\n this.modalRef = this.modalService.open(content, {\n fullscreen: true,\n modalDialogClass: 'dignite-preview',\n });\n this.modalRef.result.then(\n (result) => {\n },\n (reason) => {\n this.zoom = 10\n },\n );\n }\n /**放大图像 */\n zoomIn() {\n let zoom = this.zoom\n if (zoom == 20) return\n zoom++\n this.zoom = zoom\n }\n /**缩小图像 */\n zoomOut() {\n let zoom = this.zoom\n if (zoom == 3) return\n zoom--\n this.zoom = zoom\n }\n /**右旋转 */\n RotateRight() {\n if (this.rotate == 360) return this.rotate = 0\n this.rotate += 90\n }\n}\n","<div class=\"image_box\" [style]=\"{width:width,maxWidth:'100%'}\">\n <div class=\"img_box\" *ngIf=\"isImage\">\n <img [src]=\"src\" />\n <div class=\"option_box\" *ngIf=\"preview\">\n <i class=\"fa fa-eye \" (click.stop)=\"OpenPreviewImage(content)\"></i>\n </div>\n </div>\n <a [href]=\"src\" [download]=\"name\" target>\n <i class=\"fa fa-file-audio-o fs-1\" *ngIf=\"isAudio\"></i>\n <i class=\"fa fa-file-video-o fs-1\" *ngIf=\"isVideo\"></i>\n <ng-container *ngIf=\"!(isImage||isAudio||isVideo)\">\n <ng-container *ngFor=\"let item of _ImageTypeOption; let i=index\">\n <i class=\"fs-1\" [ngClass]=\"item.icon\" *ngIf=\"item.type===type\"></i>\n </ng-container>\n </ng-container>\n </a>\n</div>\n\n<ng-template #content let-modal>\n <div class=\"modal-header\">\n <div class=\"d-flex justify-content-end w-100 fs-3\">\n <i class=\"mx-2 fa fa fa-repeat\" aria-hidden=\"true\" title=\"右旋转\" role=\"button\" (click)=\"RotateRight()\"></i>\n <i class=\"mx-2 fa fa-search-minus\" aria-hidden=\"true\" title=\"缩小\" role=\"button\" (click)=\"zoomOut()\"></i>\n <i class=\"mx-2 fa fa-search-plus\" aria-hidden=\"true\" title=\"放大\" role=\"button\" (click)=\"zoomIn()\"></i>\n <i class=\"mx-2 fa fa-times\" aria-hidden=\"true\" role=\"button\" (click)=\"modal.dismiss('Cross click')\"></i>\n </div>\n </div> \n <div class=\"modal-body d-flex justify-content-center align-items-center \">\n <img width=\"400\" class=\"modal-body-preview\" [src]=\"src\" [style.transform]=\"'scale('+zoom/10+') rotate('+rotate+'deg)'\" >\n </div>\n</ng-template>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n selector: 'fe-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss']\n})\nexport class FileEditComponent {\n constructor(\n public _FileApiService: FileApiService,\n ) { }\n\n /**是否多选 */\n _multiple: boolean = true\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n if (v) { }\n }\n /**文件数据--已上传的数据 */\n _fileData: any[] = []\n @Input()\n public set fileData(v: any[]) {\n this._fileData = v;\n if (v.length > 0) {\n this.getFileChange({ target: { files: v } })\n }\n }\n /** 跟随表单提交--已提交的数据,或选择的数据源--回调*/\n @Output() fileDataChange = new EventEmitter()\n\n /**文件大小限制 \n * @param 1mb\n */\n sizeLimit: number = 1048576\n @Input()\n public set limit(v: number) {\n this.sizeLimit = v;\n }\n\n /**文件表格数据 */\n filesTableData: any[] = []\n /** 待删除已上传的文件们*/\n deleteTheUploadedFiles: any[] = []\n\n /**获取文件选择框的元素 */\n @ViewChild('fileEdit', { static: true }) fileEdit: ElementRef;\n\n\n /**获取文件信息改变 */\n async getFileChange(event) {\n let files = new Array(...event.target.files)\n /**需要等待setfileSizeUnits执行完后在执行其他方法--需要完善 */\n await this.waitFileToAddTable(files)\n this.fileHandling()\n }\n\n /**等待将文件数据加入到文件表格数据中 */\n waitFileToAddTable(files) {\n return new Promise(async (resolve, rejects) => {\n this.filesTableData.push(...await this.setfileSizeUnits(files))\n resolve(true)\n })\n }\n\n /**删除文件表格的项 */\n deleteFileTableItem(index, item) {\n this.filesTableData.splice(index, 1)\n if (item.id) {\n this.deleteTheUploadedFiles.push(item)\n }\n this.fileHandling()\n }\n\n /**文件处理-调用回调函数 */\n fileHandling() {\n let theFilesToBeUploaded = this.filesTableData.filter(el => !el.id)\n //判断图片大小是否超过限制-用于判断表单是否允许提交\n let isSubmit = !this.filesTableData.some(el => el.size > this.sizeLimit);\n this.fileDataChange.emit({ theFilesToBeUploaded, deleteTheUploadedFiles: this.deleteTheUploadedFiles, isSubmit })\n }\n\n /**设置值文件大小单位/ */\n async setfileSizeUnits(files: File[] | any[]): Promise<any> {\n return new Promise((resolve, rejects) => {\n let formattedFiles = []\n files.forEach(async (file) => {\n file.fileSize = this._FileApiService.formatFileSize(file.size)\n formattedFiles.push(file)\n //设置选择图片的本地url\n if (!file.src) file.src = await this._FileApiService.getImageLacolBase64Url(file);\n });\n resolve(files)\n })\n }\n\n}\n","<div class=\"input-group mb-3\">\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>","import type { CreateFileInput, FileContainerConfigurationDto, FileDescriptorDto, GetFilesInput, ImageResizeInput, UpdateFileInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport type { FileResult } from '../../../microsoft/asp-net-core/mvc/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileDescriptorService {\r\n apiName = 'FileExplorer';\r\n \r\n\r\n create = (input: CreateFileInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'POST',\r\n url: '/api/file-explorer/files',\r\n params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },\r\n body: input.file,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/file-explorer/files/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n download = (containerName: string, blobName: string, fileName: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileResult>({\r\n method: 'GET',\r\n url: `/api/file-explorer/files/download/${containerName}/${blobName}`,\r\n params: { fileName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'GET',\r\n url: `/api/file-explorer/files/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getFileContainerConfiguration = (containerName: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileContainerConfigurationDto>({\r\n method: 'GET',\r\n url: '/api/file-explorer/files/configuration',\r\n params: { containerName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFilesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FileDescriptorDto>>({\r\n method: 'GET',\r\n url: '/api/file-explorer/files',\r\n params: { containerName: input.containerName, directoryId: input.directoryId, creatorId: input.creatorId, filter: input.filter, entityId: input.entityId, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getStream = (containerName: string, blobName: string, imageResize?: ImageResizeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, Blob>({\r\n method: 'GET',\r\n responseType: 'blob',\r\n url: `/api/file-explorer/files/${containerName}/${blobName}`,\r\n params: { width: imageResize.width, height: imageResize.height },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateFileInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/files/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateDirectoryInput, DirectoryDescriptorDto, DirectoryDescriptorInfoDto, GetDirectoriesInput, MoveDirectoryInput, UpdateDirectoryInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileDescriptorService {\r\n apiName = 'FileExplorer';\r\n \r\n\r\n create = (input: CreateDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'POST',\r\n url: '/api/file-explorer/directories',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/file-explorer/directories/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'GET',\r\n url: `/api/file-explorer/directories/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetDirectoriesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<DirectoryDescriptorInfoDto>>({\r\n method: 'GET',\r\n url: '/api/file-explorer/directories',\r\n params: { containerName: input.containerName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n move = (id: string, input: MoveDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/directories/${id}/move`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/directories/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport * as DescriptorService from '../../proxy/dignite/file-explorer/directories';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree';\nimport { of } from 'rxjs';\nimport { FileApiService } from '../../services/file-api.service';\nimport { LocalizationService } from '@abp/ng.core';\nvar that;\n@Component({\n selector: 'fe-file-modal-tree',\n templateUrl: './file-modal-tree.component.html',\n styleUrls: ['./file-modal-tree.component.scss']\n})\nexport class FileModalTreeComponent {\n constructor(\n private _DescriptorService: DescriptorService.FileDescriptorService,\n private fb: FormBuilder,\n private toaster: ToasterService,\n public _FileApiService: FileApiService,\n public _LocalizationService: LocalizationService,\n ) {\n that = this\n }\n\n /**文件分组列表 */\n fileGroupList: any[] = [];\n\n /**选择的tree节点 */\n _theSelectedTreeNode: any = '';\n @Input()\n public set theSelectedTreeNode(v: any) {\n this._theSelectedTreeNode = v;\n if (v.length > 0) {\n this.loadData()\n }\n }\n\n /**正在编辑的节点 */\n theNodeBeingEdited: any = '';\n\n /**已展开的节点 */\n anExpandedNode: any[] = [];\n\n /**图片容器 */\n _fileContainerName: string;\n\n /**tree节点选择回调 */\n @Output() nodeClick = new EventEmitter();\n\n\n @Input()\n public set fileContainerName(v: string) {\n if (v) {\n this._fileContainerName = v;\n this.loadData()\n }\n }\n\n handleClick = (event) => event.stopPropagation();\n\n loadData() {\n if (this._fileContainerName) {\n this.getFileGroupList()\n }\n }\n\n\n /**获取文件分组 */\n getFileGroupList() {\n this._DescriptorService.getList({\n containerName: this._fileContainerName,\n }).subscribe(async (res) => {\n this.fileGroupList = await this.setTheValueOfTheNodeRecursively(res.items)\n })\n }\n \n /**递归设置节点的值 */\n setTheValueOfTheNodeRecursively(array: any[]): any {\n return new Promise((reslove, rejects) => {\n array.forEach((el) => {\n el.title = el.name\n el.key = el.id\n el.expanded = this.anExpandedNode.includes(el.key)\n if (el.children.length > 0) {\n this.setTheValueOfTheNodeRecursively(el.children)\n }\n })\n reslove(array)\n })\n }\n\n /**tree-拖拽 */\n nzEvent(event: NzFormatEmitEvent): void {\n }\n\n /**tree-拖拽 -验证*/\n beforeDrop(arg: NzFormatBeforeDropEvent) {\n if (arg.pos === 0 || arg.pos === 1) {\n that._DescriptorService.move(arg.dragNode.key, {\n \"parentId\": arg.pos === 1 ? (arg.node.parentNode?.key||'') : arg.node.key,\n \"order\": arg.pos === 1 ? arg.node.origin.order + 1 : arg.node.origin.children.length + 1\n }).subscribe(res => {\n that.getFileGroupList()\n })\n return of(true)\n } else {\n return of(false);\n }\n }\n\n /**tree--选择节点 */\n activeNode(event) {\n this._theSelectedTreeNode = event.node\n this.nodeClick.emit(event.node)\n }\n\n /**判断节点是否选中 */\n isNodeSelected = (el) => el.key === this._theSelectedTreeNode?.key\n\n /**点击展开树节点图标触发 */\n nzExpandChange(event) {\n let anExpandedNode = this.anExpandedNode\n if (anExpandedNode.includes(event.node.key)) {\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key)\n } else {\n anExpandedNode.push(event.node.key)\n }\n this.anExpandedNode = anExpandedNode\n }\n\n\n /**增加分组 */\n addDescriptorBtn(items: any = '', edit = false) {\n this.ModalDescriptorOpen = true\n this.ModalDescriptorForm = this.fb.group({\n containerName: [this._fileContainerName || '', Validators.required],\n name: ['', Validators.required],\n parentId: [items?.key || '', Validators.required],\n })\n /**编辑 */\n if (edit) {\n this.theNodeBeingEdited = items.origin\n this.ModalDescriptorForm.patchValue({\n name: items.origin.name\n })\n }\n }\n\n /**删除分组 */\n deleteDescriptorBtn(node) {\n this._DescriptorService.delete(node.key).subscribe(res => {\n this.ModalDescriptorOpen = false\n if (this.theNodeBeingEdited.key == node.key) this.theNodeBeingEdited = ''\n this.getFileGroupList()\n })\n }\n\n \n\n /**分组 */\n /**模态框-状态-是否打开 */\n ModalDescriptorOpen: boolean = false\n\n /**模态框-descriptor-繁忙状态-用于确定模态的繁忙状态是否为真 */\n ModalDescriptorBusy: boolean = false\n\n /**模态框-descriptor-表单 */\n ModalDescriptorForm: FormGroup | undefined;\n \n /**模态框-descriptor-表单--控件模板-动态赋值表单控件 */\n @ViewChild('ModalFormDescriptorSubmit', { static: false }) ModalFormDescriptorSubmit: ElementRef;\n\n /**模态框-descriptor-状态改变回调 */\n ModalDescriptorVisibleChange(event) {\n if (!event) {\n this.ModalDescriptorForm = undefined\n this.theNodeBeingEdited = ''\n return\n }\n }\n\n /**f分组模态框保存 */\n createOrEditSave() {\n let input = this.ModalDescriptorForm.value\n if (this.theNodeBeingEdited) {\n this._DescriptorService.update(this.theNodeBeingEdited.key, input).subscribe(res => {\n this.ModalDescriptorOpen = false\n this.getFileGroupList()\n })\n return\n }\n this._DescriptorService.create(input).subscribe(res => {\n this.ModalDescriptorOpen = false\n this.getFileGroupList()\n })\n }\n\n\n\n\n}\n","<div class=\"card-header p-0 mb-1 d-flex justify-content-between align-items-center\">\n <h6 class=\"h6 mb-0\">{{'FileExplorer::MyDirectories' | abpLocalization}}</h6>\n <button type=\"button\" class=\"btn btn-light btn-sm ms-2\" (click.stop)=\"addDescriptorBtn()\"><i\n class=\"fas fa-plus-circle\" aria-hidden=\"true\"></i></button>\n</div>\n<nz-tree [nzData]=\"fileGroupList\" class=\"ng-zorro-antd-tree\" nzDraggable nzBlockNode nzShowIcon\n [nzExpandedIcon]=\"multiExpandedIconTpl\" (nzOnDrop)=\"nzEvent($event)\" [nzBeforeDrop]=\"beforeDrop\"\n (nzClick)=\"activeNode($event)\" (nzExpandChange)=\"nzExpandChange($event)\" [nzTreeTemplate]=\"nzTreeTemplate\">\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div class=\"custom-node d-inline-block ng-star-inserted dropdown\" [title]=\"node.title\">\n <div #dropdown=\"ngbDropdown\" class=\"d-inline-block\" ngbDropdown placement=\"bottom\" container=\"body\">\n <div class=\"btn-group\" [class.selected]=\"isNodeSelected(node)\">\n <button class=\"btn btn-sm p-0 px-1\">{{ node.title }}</button>\n <button class=\"btn btn-sm p-0\" (click)=\"handleClick($event)\" ngbDropdownToggle\n [class.dropdown-toggle]=\"false\" aria-hidden=\"true\">\n <i class=\"fas fa-caret-down text-muted p-1\"></i>\n </button>\n </div>\n <div ngbDropdownMenu>\n <button ngbDropdownItem\n (click.stop)=\"addDescriptorBtn(node)\">{{'FileExplorer::NewDirectory' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"addDescriptorBtn(node,true)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"deleteDescriptorBtn(node)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <ng-container *ngIf=\"node.children.length > 0\">\n <i [class]=\"node.isExpanded ? 'fas fa-caret-down' : 'fas fa-caret-right'\"></i>\n </ng-container>\n </ng-template>\n</nz-tree>\n\n\n<abp-modal [(visible)]=\"ModalDescriptorOpen\" [busy]=\"ModalDescriptorBusy\"\n (visibleChange)=\"ModalDescriptorVisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{theNodeBeingEdited?('AbpUi::Edit' | abpLocalization):('FileExplorer::NewDirectory' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"ModalDescriptorForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"ModalDescriptorForm\"\n (keydown.enter)=\"$event.preventDefault()\" (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #ModalFormDescriptorSubmit style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'FileExplorer::DirectoryName' | abpLocalization}}</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"ModalFormDescriptorSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","import { Component, EventEmitter, Input, Output, SimpleChanges, inject } from '@angular/core';\nimport * as FileService from '../../proxy/dignite/file-explorer/files';\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\nimport { PagedResultDto, ABP, ListService, Rest, RestService, LocalizationService, LIST_QUERY_DEBOUNCE_TIME } from '@abp/ng.core';\nimport { FileDescriptorDto, FileDescriptorService, GetFilesInput } from '../../proxy/dignite/file-explorer/files';\nimport { FileApiService } from '../../services/file-api.service';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nvar that\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-modal',\n templateUrl: './file-modal.component.html',\n styleUrls: ['./file-modal.component.scss'],\n providers: [\n // [Required]\n ListService,\n // [Optional]\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n ]\n})\nexport class FileModalComponent {\n\n constructor(\n private _FileService: FileService.FileDescriptorService,\n private toaster: ToasterService,\n public readonly list: ListService,\n public _FileApiService: FileApiService,\n private restService: RestService,\n private confirmation: ConfirmationService,\n private _LocalizationService: LocalizationService,\n ) {\n that = this\n \n }\n\n private _FileDescriptorService=inject(FileDescriptorService)\n /**获取目录配置 */\n getFilesConfiguration(){\n this._FileDescriptorService.getFileContainerConfiguration(this._fileContainerName).subscribe(res=>{\n this.createDirectoryPermissionName=res?.createDirectoryPermissionName\n })\n }\n /**目录的权限名称 */\n createDirectoryPermissionName:string=null\n\n /**图片容器 */\n _fileContainerName: string\n @Input()\n public set fileContainerName(v: string) {\n if (v) {\n this._fileContainerName = v;\n this.loadData()\n }\n }\n\n /**是否多选 */\n _multiple: boolean = false\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n if (v) { }\n }\n\n /**文件大小限制 \n* @param 1mb\n*/\n sizeLimit: number = 1048576\n @Input()\n public set limit(v: number) {\n this.sizeLimit = v;\n }\n /**父组件传递的模态框状态 */\n @Input()\n public set visible(v: boolean) {\n this.ModalOpen = v;\n if (v) {\n this.loadData()\n }\n }\n\n /**模态框状态回调 */\n @Output() visibleChange = new EventEmitter()\n\n\n\n /**模态框-状态-是否打开 */\n ModalOpen: boolean = false\n\n /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */\n ModalBusy: boolean = false\n\n\n\n /**模态框-状态改变回调 */\n ModalVisibleChange(event) {\n if (!event) {\n this.visibleChange.emit(event)\n return\n }\n }\n\n /**模态框保存 */\n modalSave() {\n let selectedTablearr = this._FileApiService.deepClone(this.selectedTable)\n this.selectFilefn.emit(selectedTablearr)\n\n this.ModalVisibleChange(false)\n }\n /**dignite-file-modal-tree */\n /**选择的tree节点 */\n _theSelectedTreeNode: any = ''\n\n /**初始化数据 */\n loadData() {\n if (this.ModalOpen && this._fileContainerName) {\n this.hookToQuery()\n this.getFilesConfiguration()\n }\n }\n\n /**tree-节点选择 */\n _nodeClick(event) {\n this._theSelectedTreeNode = event\n this.list.get()\n }\n\n /**图片上传-要上传图片的状态文件列表 */\n uploadPictureStatusList: any[] = []\n\n /**图片上传-获取文件信息改变 */\n async getFileChange(event) {\n let files = new Array(...event.target.files)\n this.uploadPictureStatusList = files\n for (const file of files) {\n if (file.size > this.sizeLimit) {\n this.setuploadPictureStatus(file, 2)\n continue;\n }\n await this.uploadingFile(file).then(() => {\n this.setuploadPictureStatus(file, 1)\n this.list.get()\n }).catch(() => {\n this.setuploadPictureStatus(file, 2)\n }); // 等待每个文件上传完成 \n }\n this.list.get()\n let isSubmit = !this.uploadPictureStatusList.some(el => el.status == 2);\n if (isSubmit) {\n // this.toaster.success(\"上传完成\");\n setTimeout(() => {\n this.uploadPictureStatusList = []\n }, 6000)\n }\n }\n\n /**图片上传-设置uploadPictureStatusList的状态 */\n setuploadPictureStatus(file, type) {\n this.uploadPictureStatusList.map(el => {\n if (el == file) el.status = type\n })\n }\n\n\n /**图片上传-递归按顺序上传 */\n uploadingFile(file) {\n return new Promise((resolve, rejects) => {\n let formData = new FormData();\n formData.append('file', file, file.name);\n this.createFile({\n file: formData,\n containerName: this._fileContainerName,\n directoryId: this._theSelectedTreeNode?.key || '',\n entityId: ''\n }).subscribe(res => {\n resolve(true)\n }, (err) => {\n rejects(false)\n })\n })\n }\n\n\n /**文件表格-数据*/\n data: PagedResultDto<FileDescriptorDto> = {\n items: [],\n totalCount: 0,\n };\n\n /**文件表格-条件*/\n filters = {} as GetFilesInput;\n\n /**文件表格-表格自带选择类型 */\n SelectionType = SelectionType;\n\n /**文件表格-选择的表格数据项 */\n selectedTable = []\n\n /**已选定的文件 */\n @Input() selectPickerFile: any[]\n\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n this.selectedTable = this._FileApiService.deepClone(this.selectPickerFile)\n }\n /**当前选择的table项 id */\n nowSelectId: any = ''\n\n /**选择文件回调 */\n @Output() selectFilefn = new EventEmitter<any[]>()\n\n /**文件表格-获取表格数据 */\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) => this._FileService.getList({\n ...query,\n ...this.filters,\n containerName: this._fileContainerName,\n directoryId: this._theSelectedTreeNode.key\n });\n const setData = (list: PagedResultDto<FileDescriptorDto>) => (this.data = list);\n this.list.hookToQuery(getData).subscribe(setData);\n }\n\n /**文件表格-查看所有分组的文件数据 */\n lookAllFile() {\n this._theSelectedTreeNode = ''\n this.list.get()\n }\n\n /**选择表格项 */\n onSelectTableItem({ selected }) {\n this.selectedTable = this._FileApiService.deepClone(selected)\n let selectedTablearr = this.removeDuplicatesById(this.selectedTable)\n if (selected.length > selectedTablearr.length) {\n selectedTablearr = selectedTablearr.filter(el => el.id !== this.nowSelectId)\n }\n this.selectedTable = selectedTablearr\n }\n\n /**删除数组中重复的项 */\n removeDuplicatesById(array) {\n const seenIds = {};\n return array.filter(item => {\n if (!seenIds[item.id]) {\n seenIds[item.id] = true;\n return true;\n }\n return false;\n });\n }\n\n /**一个布尔or函数,可用于检查是否要根据条件选择特定行。 */\n selectCheck = (row, column, value) => {\n this.nowSelectId = row.id\n return true;\n }\n\n /**判断row是否选中 */\n selectedcheckbox = (id) => {\n return this.selectedTable.some(el => el.id == id)\n }\n\n\n\n /**删除图片 */\n deleteFile(file) {\n\n this.confirmation\n .warn('', { key: '', defaultValue: this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`) })\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._FileService.delete(file.id).subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get()\n })\n }\n });\n }\n\n /**关闭文件状态弹窗 */\n closeFileStatusModal() {\n this.uploadPictureStatusList = []\n }\n\n /**创建图片的接口,代理中的file类型不匹配,切换为any类型 */\n createFile = (input: any, config?: Partial<Rest.Config>) =>\n this.restService.request<any, FileDescriptorDto>({\n method: 'POST',\n url: '/api/file-explorer/files',\n params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },\n body: input.file,\n },\n { apiName: 'FileExplorer', ...config });\n}\n","<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" *ngIf=\"createDirectoryPermissionName\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div [class]=\"createDirectoryPermissionName?'col-9':'col-12'\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-3 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" \n (change)=\"getFileChange($event)\" />\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"_multiple?SelectionType.multiClick:SelectionType.single\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <fe-file-preview [width]=\"'80px'\" [src]=\"row.url\" [name]=\"row.name\" [type]=\"row.mimeType\" [preview]=\"true\"></fe-file-preview>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:mm:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card p-1\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\n <thead>\n <tr>\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 uploadPictureStatusList; let i = index\">\n <tr>\n <th scope=\"row\">\n <div>{{ item.name }}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status === 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status === 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n selector: 'fe-file-picker',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss']\n})\nexport class FilePickerComponent implements OnChanges {\n\n\n\n constructor(\n private _FileApiService: FileApiService,\n ) {\n\n }\n\n\n /**是否多选 */\n _multiple: boolean = false\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n }\n\n /**图片容器 */\n _fileContainerName: string = 'Images'\n @Input()\n public set fileContainerName(v: string) {\n this._fileContainerName = v;\n }\n\n /**已选定的文件 */\n @Input() selectFormFile: any[]\n\n ngOnChanges(changes: SimpleChanges): void {\n let selectFormFilengOnChanges = changes.selectFormFile['currentValue']\n if (selectFormFilengOnChanges.length > 0) {\n this._fileShowTable = selectFormFilengOnChanges\n }\n }\n\n @Output() selectedFileChange = new EventEmitter()\n\n _fileShowTable: any[] = []\n\n /**表格选择的文件回调 */\n _selectFilefn(event: any[]) {\n let _fileShowTable = this._FileApiService.deepClone(event)\n this._fileShowTable = _fileShowTable\n this.selectFormFile = _fileShowTable\n this.selectedFileChange.emit(_fileShowTable)\n }\n\n /**模态框-状态-是否打开 */\n ModalOpen: boolean = false\n\n /**删除文件表格项 */\n deleteFileTableItem(i, file) {\n this._fileShowTable.splice(i, 1)\n this.selectFormFile = this._fileShowTable\n this.selectedFileChange.emit([])\n this.selectedFileChange.emit(this.selectFormFile)\n }\n\n}\n","<button class=\"btn btn-sm btn-primary ms-2 float-end\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" [multiple]=\"_multiple\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.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 _fileShowTable;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.url||item.Url\" [name]=\"item.name||item.Name\" [type]=\"item.mimeType||item.MimeType\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name||item.Name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.Size||item.size)}}</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>\n\n\n","import { Component, inject } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-dome',\n templateUrl: './file-dome.component.html',\n styleUrls: ['./file-dome.component.scss']\n})\nexport class FileDomeComponent {\n\n /**跟随表单提交--已提交的数据,或选择的数据源 */\n fileSubmittedData: any[] = []\n\n /**跟随表单提交--待提交的数据\n * \n * @param 待上传的文件们\n * @param 待删除已上传的文件们\n */\n fileDataToBeSubmitted: any\n\nprivate FileApiService=inject(FileApiService)\n /**跟随表单提交--数据发生改变回调 */\n fileDataChange(event) {\n this.fileDataToBeSubmitted = event\n }\n\n /**选择文件-弹窗的-已选定的文件 */\n selectedFileGroup:any[]=[]\n\n /**_selectedFile改变回调 */\n _selectedFileChange(event) {\n this.selectedFileGroup = event\n }\n}\n","<div class=\"row\">\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-edit [(fileData)]=\"fileSubmittedData\" (fileDataChange)=\"fileDataChange($event)\"></fe-file-edit>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" fileContainerName=\"SampleContainer\" (selectedFileChange)=\"_selectedFileChange($event)\" ></fe-file-picker>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FileDomeComponent } from './components/dome/file-dome.component';\n\nconst routes: Routes = [\n {\n path: 'file-dome',\n component: FileDomeComponent\n},\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class FileExplorerRoutingModule { \n \n}\n","import { FormControl, Validators } from \"@angular/forms\";\r\n\r\nexport class FileExplorerConfig {\r\n\r\n\r\n /**文件容器名称 */\r\n 'FileExplorer.FileContainerName': any = ['', [Validators.required]];\r\n /**多选 */\r\n 'FileExplorer.UploadFileMultiple': any = [false, []];\r\n \r\n\r\n constructor(data?: FileExplorerConfig) {\r\n if (data) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n this[key] = data[key];\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n}","import { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { FileExplorerConfig } from './file-explorer-config';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-explorer-config',\n templateUrl: './file-explorer-config.component.html',\n styleUrls: ['./file-explorer-config.component.scss']\n})\nexport class FileExplorerConfigComponent {\n constructor(\n private fb: FormBuilder,\n ) { }\n /**表单控件类型 */\n _type: any\n @Input()\n public set type(v: any) {\n this._type = v\n this.dataLoaded()\n }\n /**表单实体 */\n _Entity: FormGroup | undefined\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded()\n }\n /**选择的表单信息 */\n _selected: any\n @Input()\n public set selected(v: any) {\n this._selected = v\n\n this.dataLoaded()\n }\n get formConfiguration() {\n return this._Entity.get('formConfiguration') as FormGroup\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n this._Entity.setControl('formConfiguration', this.fb.group(new FileExplorerConfig()))\n if (this._selected && this._selected.formControlName == this._type) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration\n })\n }\n resolve(true)\n })\n }\n}\n","<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'DigniteAbpDynamicFormsFileExplorer::FileContainerName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"FileExplorer.FileContainerName\">\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"FileExplorer.UploadFileMultiple\" id=\"flexRadioDefault1\">\n <label class=\"form-check-label\" for=\"flexRadioDefault1\">\n {{'DigniteAbpDynamicFormsFileExplorer::UploadFileMultiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","import { ConfigStateService, EnvironmentService } from '@abp/ng.core';\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fe-file-explorer-control',\n templateUrl: './file-explorer-control.component.html',\n styleUrls: ['./file-explorer-control.component.scss'],\n})\nexport class FileExplorerControlComponent {\n constructor(private fb: FormBuilder) {}\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n if (v) this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n if (v) this.dataLoaded();\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n if (v) this.dataLoaded();\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n \n if (v && v.length > 0) this.dataLoaded();\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n get extraProperties() {\n return this._entity.get('extraProperties') as FormGroup;\n }\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n /**字段配置 */\n formConfiguration: any = '';\n /**文件容器名称 */\n FileContainerName: any = '';\n AfterInit() {\n return new Promise((resolve, rejects) => {\n let ValidatorsArray = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n this.formConfiguration = this._fields.field.formConfiguration;\n this.FileContainerName = this.formConfiguration['FileExplorer.FileContainerName'];\n if (this._selected && this._selected.length > 0) {\n this._selected.map((el:any)=>{\n if(!el['url']){\n el['url']=this.GetImageUrl(el.blobName,el.containerName,el.tenantId)\n }\n })\n this.selectedFileGroup = this._selected;\n }\n let newControl = this.fb.control(this._selected, ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n\n private configState = inject(ConfigStateService)\n private environment = inject(EnvironmentService)\n GetImageUrl(value: unknown, ...args: unknown[]): unknown {\n let tenantId = args[1]\n const environment = this.environment.getEnvironment();\n let imgUrl =`${environment.apis.default.url}/api/file-explorer/files/${args[0]}/${value}?__tenant=${tenantId}&timer=${new Date().getTime()}`\n return value?imgUrl:''\n }\n\n /**选择文件-弹窗的-已选定的文件 */\n selectedFileGroup: any[] = [];\n\n /**_selectedFile改变回调 */\n _selectedFileChange(event) {\n this.selectedFileGroup = event;\n let fieldName = this._fields.field.name;\n let obj = {};\n obj[fieldName] = event;\n this.extraProperties.patchValue(obj);\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-3\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" [multiple]=\"formConfiguration['FileExplorer.UploadFileMultiple']\"\n (selectedFileChange)=\"_selectedFileChange($event)\" [fileContainerName]=\"FileContainerName\"></fe-file-picker>\n <small class=\"form-text text-muted d-block\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n</form>","// import { TableConfigComponent, TableControlComponent, MatrixConfigComponent, MatrixControlComponent } from \"@dignite-ng/expand.cms\";\r\nimport { Type } from \"@angular/core\";\r\nimport { FileExplorerConfigComponent, FileExplorerControlComponent } from \"./file-explorer\";\r\n\r\nexport interface FieldControlGroupInterfaces {\r\n displayName: string\r\n name: string\r\n // type: TextEditMode,\r\n /**\r\n * 动态表单控件\r\n */\r\n fieldComponent?: Type<any>;\r\n\r\n /**\r\n * 表单控件配置组件\r\n */\r\n fieldConfigComponent?: Type<any>;\r\n\r\n /**\r\n * 条目列表中显示的组件\r\n */\r\n fieldViewComponent?: Type<any>;\r\n}\r\n\r\n\r\n\r\n/**\r\n * 表单控件分组-包含配置,控件,显示的数组\r\n */\r\nexport const fielFieldControlGroup: FieldControlGroupInterfaces[] = [\r\n \r\n {\r\n displayName: '文件管理',\r\n name: 'FileExplorer',\r\n fieldConfigComponent: FileExplorerConfigComponent,\r\n fieldComponent: FileExplorerControlComponent,\r\n // fieldViewComponent:TextBoxViewComponent,\r\n }\r\n];\r\nexport function getExcludeAssignControl(typeName) {\r\n // return FieldControlGroup.filter(el => el.name !== typeName)\r\n return fielFieldControlGroup\r\n}\r\n\r\nexport function AddFieldControlGroup(array=[]) {\r\n fielFieldControlGroup.push(...array)\r\n}","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { FileExplorerRoutingModule } from './file-explorer-routing.module';\nimport { FileEditComponent, FilePickerComponent, FileModalComponent, FileModalTreeComponent, FileDomeComponent, fielFieldControlGroup } from './components';\nimport { FilePreviewComponent } from './previews/file-preview.component';\nimport { FileExplorerConfigComponent } from './components/dynamic-form/file-explorer/file-explorer-config.component';\nimport { FileExplorerControlComponent } from './components/dynamic-form/file-explorer/file-explorer-control.component';\n\n@NgModule({\n declarations: [\n FileEditComponent,\n FilePickerComponent,\n FileModalComponent,\n FileModalTreeComponent,\n FileDomeComponent,\n FilePreviewComponent,\n FileExplorerConfigComponent,\n FileExplorerControlComponent,\n ],\n imports: [\n FormsModule,\n CoreModule,\n ThemeSharedModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n NzTreeModule,\n NgxValidateCoreModule,\n FileExplorerRoutingModule,\n ],\n exports: [\n FileEditComponent,\n FilePickerComponent,\n FileModalComponent,\n FileModalTreeComponent,\n FileDomeComponent,\n FilePreviewComponent,\n // FileExplorerConfigComponent,\n // FileExplorerControlComponent,\n ],\n providers: [\n // GetImageUrlPipe\n // // [Required]\n // ListService,\n // // [Optional]\n // // Provide this token if you want a different debounce time.\n // // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n // { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n ],\n})\nexport class FileExplorerModule {\n\n}\n","/*\n * Public API Surface of file-explorer\n */\n\n\nexport * from './lib/file-explorer.module';\nexport * from './lib/components/dynamic-form/form-control-group';\nexport * from './lib/components';\n// export * from './lib/services';\n// export * from './lib/proxy';\nexport * from './lib/previews';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.FileApiService","i4.FilePreviewComponent","FileDescriptorService","that","i1.FileDescriptorService","i2","i3","i4.FileApiService","i5","i6","i7","i7.FileModalTreeComponent","i8.FilePreviewComponent","i4.FileModalComponent","i5.FilePreviewComponent","i1.FileEditComponent","i2.FilePickerComponent","i4.FilePickerComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAKa,cAAc,CAAA;AAEzB,IAAA,WAAA,GAAA;;AAGA,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACvE,IAAI,IAAI,GAAO,KAAK;QACpB,IAAI,SAAS,GAAG,CAAC;AACjB,QAAA,OAAO,IAAI,IAAI,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,IAAI,IAAI,IAAI;AACZ,YAAA,SAAS,EAAE;;;AAGb,QAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtB,OAAO,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,SAAS,CAAC,EAAE;;;AAGtC,IAAA,sBAAsB,CAAC,IAAU,EAAA;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1B,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1B,aAAC;YACD,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;AAC1C,SAAC,CAAC;;AAEJ;;AAEwB;AACxB,IAAA,SAAS,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,GAAG;AACvD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3C,QAAA,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;AACnB,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AACrD,oBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE;AAC5B,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;AACrC,yBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE;AACrC,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;AAC7B,yBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE;wBACnC,MAAM,CAAC,GAAG,CAAC,GAAC,GAAG,CAAC,GAAG,CAAC;;yBACf;AACL,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;;qBAEnC;oBACL,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;;;;AAI5B,QAAA,OAAO,MAAM;;8GAnDJ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACFM,IAAI,eAAe,GAAC,CAAC;AACxB,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,YAAY;AACjB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,YAAY;AACjB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,WAAW;AAChB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,WAAW;AAChB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,WAAW;AAChB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,WAAW;AAChB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,WAAW;AAChB,QAAA,IAAI,EAAC,EAAE;KACV,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,iBAAiB;AACtB,QAAA,IAAI,EAAC,kBAAkB;KAC1B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,oBAAoB;AACzB,QAAA,IAAI,EAAC,mBAAmB;KAC3B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,yEAAyE;AAC9E,QAAA,IAAI,EAAC,mBAAmB;KAC3B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,+BAA+B;AACpC,QAAA,IAAI,EAAC,yBAAyB;KACjC,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,2EAA2E;AAChF,QAAA,IAAI,EAAC,yBAAyB;KACjC,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,0BAA0B;AAC/B,QAAA,IAAI,EAAC,oBAAoB;KAC5B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,mEAAmE;AACxE,QAAA,IAAI,EAAC,oBAAoB;KAC5B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,8BAA8B;AACnC,QAAA,IAAI,EAAC,sBAAsB;KAC9B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,IAAI;AACT,QAAA,IAAI,EAAC,sBAAsB;KAC9B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,YAAY;AACjB,QAAA,IAAI,EAAC,mBAAmB;KAE3B,EAAC;AACE,QAAA,KAAK,EAAC,EAAE;AACR,QAAA,IAAI,EAAC,EAAE;AACP,QAAA,IAAI,EAAC,eAAe;AACvB;;;MCjEY,oBAAoB,CAAA;AAuB/B,IAAA,WAAA,CACU,YAAsB,EAAA;QAAtB,IAAY,CAAA,YAAA,GAAZ,YAAY;;QArBb,IAAK,CAAA,KAAA,GAAQ,OAAO;;QAEpB,IAAG,CAAA,GAAA,GAAQ,EAAE;;QAEb,IAAO,CAAA,OAAA,GAAQ,IAAI;;QAEnB,IAAI,CAAA,IAAA,GAAQ,EAAE;;QAEd,IAAI,CAAA,IAAA,GAAQ,EAAE;;QAGvB,IAAO,CAAA,OAAA,GAAG,IAAI;;QAEd,IAAO,CAAA,OAAA,GAAG,KAAK;;QAEf,IAAO,CAAA,OAAA,GAAG,KAAK;;QAEf,IAAgB,CAAA,gBAAA,GAAG,eAAe;;QA2BlC,IAAI,CAAA,IAAA,GAAW,EAAE;;QAEjB,IAAM,CAAA,MAAA,GAAW,CAAC;;IAtBlB,kBAAkB,GAAA;;;AAGhB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;;QAEnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;;IAI7C,YAAY,GAAA;;;AAcZ,IAAA,gBAAgB,CAAC,OAAyB,EAAA;QAExC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9C,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,gBAAgB,EAAE,iBAAiB;AACpC,SAAA,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CACvB,CAAC,MAAM,KAAI;AACX,SAAC,EACD,CAAC,MAAM,KAAI;AACT,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AAChB,SAAC,CACF;;;IAGH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;QACpB,IAAI,IAAI,IAAI,EAAE;YAAE;AAChB,QAAA,IAAI,EAAE;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;IAGlB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;QACpB,IAAI,IAAI,IAAI,CAAC;YAAE;AACf,QAAA,IAAI,EAAE;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;IAGlB,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,IAAI,EAAE;;8GApFR,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+ICVjC,2uDA8Bc,EAAA,MAAA,EAAA,CAAA,8eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDpBD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BAEE,iBAAiB,EAAA,QAAA,EAAA,2uDAAA,EAAA,MAAA,EAAA,CAAA,8eAAA,CAAA,EAAA;6EAOlB,KAAK,EAAA,CAAA;sBAAb;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;;;MEbU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CACS,eAA+B,EAAA;QAA/B,IAAe,CAAA,eAAA,GAAf,eAAe;;QAIxB,IAAS,CAAA,SAAA,GAAY,IAAI;;QAOzB,IAAS,CAAA,SAAA,GAAU,EAAE;;AASX,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAE7C;;AAEE;QACF,IAAS,CAAA,SAAA,GAAW,OAAO;;QAO3B,IAAc,CAAA,cAAA,GAAU,EAAE;;QAE1B,IAAsB,CAAA,sBAAA,GAAU,EAAE;;IA7BlC,IACW,QAAQ,CAAC,CAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,EAAE;;IAIT,IACW,QAAQ,CAAC,CAAQ,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;;;IAUhD,IACW,KAAK,CAAC,CAAS,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;;;IAapB,MAAM,aAAa,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;AAE5C,QAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;;;AAIrB,IAAA,kBAAkB,CAAC,KAAK,EAAA;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,OAAO,KAAI;AAC5C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC;AACf,SAAC,CAAC;;;IAIJ,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAA;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;;QAExC,IAAI,CAAC,YAAY,EAAE;;;IAIrB,YAAY,GAAA;AACV,QAAA,IAAI,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;;QAEnE,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AACxE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,EAAE,CAAC;;;IAInH,MAAM,gBAAgB,CAAC,KAAqB,EAAA;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;YACtC,IAAI,cAAc,GAAG,EAAE;AACvB,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,KAAI;AAC3B,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,gBAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;gBAEzB,IAAI,CAAC,IAAI,CAAC,GAAG;AAAE,oBAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACnF,aAAC,CAAC;YACF,OAAO,CAAC,KAAK,CAAC;AAChB,SAAC,CAAC;;8GAtFO,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+RCR9B,ggDAkCQ,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD1BK,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,ggDAAA,EAAA;gFAYb,QAAQ,EAAA,CAAA;sBADlB;gBAQU,QAAQ,EAAA,CAAA;sBADlB;gBAQS,cAAc,EAAA,CAAA;sBAAvB;gBAOU,KAAK,EAAA,CAAA;sBADf;gBAWwC,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;oCEtC5B,qBAAqB,CAAA;AA2EhC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW;QA1E/B,IAAO,CAAA,OAAA,GAAG,cAAc;AAGxB,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAAsB,EAAE,MAA6B,KAC7D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAyB;AAC/C,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,0BAA0B;YAC/B,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;YAClI,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,EAAU,EAAE,MAA6B,KACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;AAClC,YAAA,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAA4B,yBAAA,EAAA,EAAE,CAAE,CAAA;SACtC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB,EAAE,MAA6B,KAClG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAkB;AACxC,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,CAAA,kCAAA,EAAqC,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAE,CAAA;YACrE,MAAM,EAAE,EAAE,QAAQ,EAAE;SACrB,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,GAAG,GAAG,CAAC,EAAU,EAAE,MAA6B,KAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAyB;AAC/C,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAA4B,yBAAA,EAAA,EAAE,CAAE,CAAA;SACtC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,6BAA6B,GAAG,CAAC,aAAqB,EAAE,MAA6B,KACnF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAqC;AAC3D,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,wCAAwC;YAC7C,MAAM,EAAE,EAAE,aAAa,EAAE;SAC1B,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAoB,EAAE,MAA6B,KAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAyC;AAC/D,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,0BAA0B;YAC/B,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;SACrP,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,aAAqB,EAAE,QAAgB,EAAE,WAA8B,EAAE,MAA6B,KACjH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;AAClC,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,GAAG,EAAE,CAAA,yBAAA,EAA4B,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAE,CAAA;AAC5D,YAAA,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;SACjE,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,EAAU,EAAE,KAAsB,EAAE,MAA6B,KACzE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAyB;AAC/C,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAA4B,yBAAA,EAAA,EAAE,CAAE,CAAA;AACrC,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;;8GAzE3B,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEPG,uBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,qBAAqB,CAAA;AAuDhC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW;QAtD/B,IAAO,CAAA,OAAA,GAAG,cAAc;AAGxB,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAA2B,EAAE,MAA6B,KAClE,IAAI,CAAC,WAAW,CAAC,OAAO,CAA8B;AACpD,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,gCAAgC;AACrC,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,EAAU,EAAE,MAA6B,KACjD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;AAClC,YAAA,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAAkC,+BAAA,EAAA,EAAE,CAAE,CAAA;SAC5C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,GAAG,GAAG,CAAC,EAAU,EAAE,MAA6B,KAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAA8B;AACpD,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAkC,+BAAA,EAAA,EAAE,CAAE,CAAA;SAC5C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAA0B,EAAE,MAA6B,KAClE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAkD;AACxE,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,gCAAgC;AACrC,YAAA,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;SAC/C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,IAAI,GAAG,CAAC,EAAU,EAAE,KAAyB,EAAE,MAA6B,KAC1E,IAAI,CAAC,WAAW,CAAC,OAAO,CAA8B;AACpD,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAkC,+BAAA,EAAA,EAAE,CAAO,KAAA,CAAA;AAChD,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,EAAU,EAAE,KAA2B,EAAE,MAA6B,KAC9E,IAAI,CAAC,WAAW,CAAC,OAAO,CAA8B;AACpD,YAAA,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAkC,+BAAA,EAAA,EAAE,CAAE,CAAA;AAC3C,YAAA,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,GAAG,MAAM,EAAE,CAAC;;8GArD3B,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPD;AAUA,IAAII,MAAI;MAMK,sBAAsB,CAAA;IACjC,WACU,CAAA,kBAA2D,EAC3D,EAAe,EACf,OAAuB,EACxB,eAA+B,EAC/B,oBAAyC,EAAA;QAJxC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAO,CAAA,OAAA,GAAP,OAAO;QACR,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;;QAM7B,IAAa,CAAA,aAAA,GAAU,EAAE;;QAGzB,IAAoB,CAAA,oBAAA,GAAQ,EAAE;;QAU9B,IAAkB,CAAA,kBAAA,GAAQ,EAAE;;QAG5B,IAAc,CAAA,cAAA,GAAU,EAAE;;AAMhB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE;QAWxC,IAAW,CAAA,WAAA,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE;;AA2DhD,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,oBAAoB,EAAE,GAAG;;;QA4ClE,IAAmB,CAAA,mBAAA,GAAY,KAAK;;QAGpC,IAAmB,CAAA,mBAAA,GAAY,KAAK;QA/IlCA,MAAI,GAAG,IAAI;;IAQb,IACW,mBAAmB,CAAC,CAAM,EAAA;AACnC,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAC7B,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAChB,IAAI,CAAC,QAAQ,EAAE;;;IAiBnB,IACW,iBAAiB,CAAC,CAAS,EAAA;QACpC,IAAI,CAAC,EAAE;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE;;;IAMnB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,gBAAgB,EAAE;;;;IAM3B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC9B,aAAa,EAAE,IAAI,CAAC,kBAAkB;AACvC,SAAA,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,KAAI;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5E,SAAC,CAAC;;;AAIJ,IAAA,+BAA+B,CAAC,KAAY,EAAA;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACnB,gBAAA,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI;AAClB,gBAAA,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AACd,gBAAA,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;gBAClD,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,oBAAA,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,QAAQ,CAAC;;AAErD,aAAC,CAAC;YACF,OAAO,CAAC,KAAK,CAAC;AAChB,SAAC,CAAC;;;AAIJ,IAAA,OAAO,CAAC,KAAwB,EAAA;;;AAIhC,IAAA,UAAU,CAAC,GAA4B,EAAA;AACrC,QAAA,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE;YAClCA,MAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC7C,UAAU,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAE,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG;AACzE,gBAAA,OAAO,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;AACxF,aAAA,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;gBACjBA,MAAI,CAAC,gBAAgB,EAAE;AACzB,aAAC,CAAC;AACF,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;aACV;AACL,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;;;AAKpB,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,IAAI;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;AAOjC,IAAA,cAAc,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc;QACxC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC3C,YAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;aAChE;YACL,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;AAErC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;;AAKtC,IAAA,gBAAgB,CAAC,KAAa,GAAA,EAAE,EAAE,IAAI,GAAG,KAAK,EAAA;AAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,aAAa,EAAE,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnE,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAClD,SAAA,CAAC;;QAEF,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM;AACtC,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;AAClC,gBAAA,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;AACpB,aAAA,CAAC;;;;AAKN,IAAA,mBAAmB,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACvD,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;YAChC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;AAAE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;YACzE,IAAI,CAAC,gBAAgB,EAAE;AACzB,SAAC,CAAC;;;AAmBJ,IAAA,4BAA4B,CAAC,KAAK,EAAA;QAChC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;AACpC,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;YAC5B;;;;IAKJ,gBAAgB,GAAA;AACd,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC1C,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACjF,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;gBAChC,IAAI,CAAC,gBAAgB,EAAE;AACzB,aAAC,CAAC;YACF;;AAEF,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACpD,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;YAChC,IAAI,CAAC,gBAAgB,EAAE;AACzB,SAAC,CAAC;;8GArLO,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uUChBnC,+0HA8DY,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,MAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD9CC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,+0HAAA,EAAA;4MAqBnB,mBAAmB,EAAA,CAAA;sBAD7B;gBAkBS,SAAS,EAAA,CAAA;sBAAlB;gBAIU,iBAAiB,EAAA,CAAA;sBAD3B;gBAwH0D,yBAAyB,EAAA,CAAA;sBAAnF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;AEtK3D,IAAI,IAAI;MAeK,kBAAkB,CAAA;AAE7B,IAAA,WAAA,CACU,YAA+C,EAC/C,OAAuB,EACf,IAAiB,EAC1B,eAA+B,EAC9B,WAAwB,EACxB,YAAiC,EACjC,oBAAyC,EAAA;QANzC,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO;QACC,IAAI,CAAA,IAAA,GAAJ,IAAI;QACb,IAAe,CAAA,eAAA,GAAf,eAAe;QACd,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;AAMtB,QAAA,IAAA,CAAA,sBAAsB,GAAC,MAAM,CAACN,uBAAqB,CAAC;;QAQ5D,IAA6B,CAAA,6BAAA,GAAQ,IAAI;;QAazC,IAAS,CAAA,SAAA,GAAY,KAAK;AAO1B;;AAEA;QACA,IAAS,CAAA,SAAA,GAAW,OAAO;;AAejB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;;QAK5C,IAAS,CAAA,SAAA,GAAY,KAAK;;QAG1B,IAAS,CAAA,SAAA,GAAY,KAAK;;;QAqB1B,IAAoB,CAAA,oBAAA,GAAQ,EAAE;;QAiB9B,IAAuB,CAAA,uBAAA,GAAU,EAAE;;AAwDnC,QAAA,IAAA,CAAA,IAAI,GAAsC;AACxC,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,UAAU,EAAE,CAAC;SACd;;QAGD,IAAO,CAAA,OAAA,GAAG,EAAmB;;QAG7B,IAAa,CAAA,aAAA,GAAG,aAAa;;QAG7B,IAAa,CAAA,aAAA,GAAG,EAAE;;QAWlB,IAAW,CAAA,WAAA,GAAQ,EAAE;;AAGX,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAS;;QA2ClD,IAAW,CAAA,WAAA,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAI;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI;AACb,SAAC;;AAGD,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,EAAE,KAAI;AACxB,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AACnD,SAAC;;AAyBD,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAU,EAAE,MAA6B,KACrD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAyB;AAC/C,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,0BAA0B;YAC/B,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;YAClI,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,EACC,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QArQzC,IAAI,GAAG,IAAI;;;IAMb,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAE;AAChG,YAAA,IAAI,CAAC,6BAA6B,GAAC,GAAG,EAAE,6BAA6B;AACvE,SAAC,CAAC;;IAOJ,IACW,iBAAiB,CAAC,CAAS,EAAA;QACpC,IAAI,CAAC,EAAE;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE;;;IAMnB,IACW,QAAQ,CAAC,CAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,EAAE;;IAOT,IACW,KAAK,CAAC,CAAS,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;;;IAGpB,IACW,OAAO,CAAC,CAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;QAClB,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,QAAQ,EAAE;;;;AAkBnB,IAAA,kBAAkB,CAAC,KAAK,EAAA;QACtB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B;;;;IAKJ,SAAS,GAAA;AACP,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAExC,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;;IAOhC,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC7C,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,qBAAqB,EAAE;;;;AAKhC,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;;;IAOjB,MAAM,aAAa,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpC;;YAEF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AACvC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACjB,aAAC,CAAC,CAAC,KAAK,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;aACrC,CAAC,CAAC;;AAEL,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACf,QAAA,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;QACvE,IAAI,QAAQ,EAAE;;YAEZ,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE;aAClC,EAAE,IAAI,CAAC;;;;IAKZ,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAG;YACpC,IAAI,EAAE,IAAI,IAAI;AAAE,gBAAA,EAAE,CAAC,MAAM,GAAG,IAAI;AAClC,SAAC,CAAC;;;AAKJ,IAAA,aAAa,CAAC,IAAI,EAAA;QAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,YAAA,IAAI,QAAQ,GAAG,IAAI,QAAQ,EAAE;YAC7B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC;AACd,gBAAA,IAAI,EAAE,QAAQ;gBACd,aAAa,EAAE,IAAI,CAAC,kBAAkB;AACtC,gBAAA,WAAW,EAAE,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,EAAE;AACjD,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;gBACjB,OAAO,CAAC,IAAI,CAAC;AACf,aAAC,EAAE,CAAC,GAAG,KAAI;gBACT,OAAO,CAAC,KAAK,CAAC;AAChB,aAAC,CAAC;AACJ,SAAC,CAAC;;AAsBJ,IAAA,WAAW,CAAC,OAAsB,EAAA;;;AAGhC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC;;;IAS5E,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,CAAC,KAA0B,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACxE,YAAA,GAAG,KAAK;YACR,GAAG,IAAI,CAAC,OAAO;YACf,aAAa,EAAE,IAAI,CAAC,kBAAkB;AACtC,YAAA,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC;AACxC,SAAA,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,CAAC,IAAuC,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;;;IAInD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;;;IAIjB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC7D,IAAI,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;QACpE,IAAI,QAAQ,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE;AAC7C,YAAA,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC;;AAE9E,QAAA,IAAI,CAAC,aAAa,GAAG,gBAAgB;;;AAIvC,IAAA,oBAAoB,CAAC,KAAK,EAAA;QACxB,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAG;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACrB,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;AACvB,gBAAA,OAAO,IAAI;;AAEb,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;;;AAiBJ,IAAA,UAAU,CAAC,IAAI,EAAA;AAEb,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAiC,+BAAA,CAAA,CAAC,EAAE;AACxG,aAAA,SAAS,CAAC,CAAC,MAA2B,KAAI;AACzC,YAAA,IAAI,MAAM,IAAI,SAAS,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAChD,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAA4B,0BAAA,CAAA,CAAC,CAAC;AACrF,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACjB,iBAAC,CAAC;;AAEN,SAAC,CAAC;;;IAIN,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE;;8GArQxB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EATlB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;;YAET,WAAW;;;;AAIX,YAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,GAAG,EAAE;AACrD,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBH,o/NAoHY,EAAA,MAAA,EAAA,CAAA,klDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD9FC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGd,SAAA,EAAA;;wBAET,WAAW;;;;AAIX,wBAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,GAAG,EAAE;AACrD,qBAAA,EAAA,QAAA,EAAA,o/NAAA,EAAA,MAAA,EAAA,CAAA,klDAAA,CAAA,EAAA;4QA8BU,iBAAiB,EAAA,CAAA;sBAD3B;gBAWU,QAAQ,EAAA,CAAA;sBADlB;gBAWU,KAAK,EAAA,CAAA;sBADf;gBAMU,OAAO,EAAA,CAAA;sBADjB;gBASS,aAAa,EAAA,CAAA;sBAAtB;gBAqHQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAWS,YAAY,EAAA,CAAA;sBAArB;;;AEnNH;MASa,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CACU,eAA+B,EAAA;QAA/B,IAAe,CAAA,eAAA,GAAf,eAAe;;QAOzB,IAAS,CAAA,SAAA,GAAY,KAAK;;QAO1B,IAAkB,CAAA,kBAAA,GAAW,QAAQ;AAgB3B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE;QAEjD,IAAc,CAAA,cAAA,GAAU,EAAE;;QAW1B,IAAS,CAAA,SAAA,GAAY,KAAK;;IAnC1B,IACW,QAAQ,CAAC,CAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;;IAKpB,IACW,iBAAiB,CAAC,CAAS,EAAA;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC;;AAM7B,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC;AACtE,QAAA,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,cAAc,GAAG,yBAAyB;;;;AASnD,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;;;IAO9C,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAA;QACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;;8GAvDxC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8OCThC,2jDAgCA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDvBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,2jDAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA;gFAkBf,QAAQ,EAAA,CAAA;sBADlB;gBAQU,iBAAiB,EAAA,CAAA;sBAD3B;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBASS,kBAAkB,EAAA,CAAA;sBAA3B;;;MEnCU,iBAAiB,CAAA;AAN9B,IAAA,WAAA,GAAA;;QASE,IAAiB,CAAA,iBAAA,GAAU,EAAE;AASvB,QAAA,IAAA,CAAA,cAAc,GAAC,MAAM,CAAC,cAAc,CAAC;;QAO3C,IAAiB,CAAA,iBAAA,GAAO,EAAE;AAM3B;;AAXC,IAAA,cAAc,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;;;AAOpC,IAAA,mBAAmB,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;8GAvBrB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,oDCT9B,20BAiBM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDRO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BAEE,cAAc,EAAA,QAAA,EAAA,20BAAA,EAAA;;;AED1B,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,SAAS,EAAE;AACd,KAAA;CACA;MAMY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,0CAF1B,YAAY,CAAA,EAAA,CAAA,CAAA;+GAEX,yBAAyB,EAAA,OAAA,EAAA,CAH1B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY;AACvB,iBAAA;;;MCZY,kBAAkB,CAAA;AAS3B,IAAA,WAAA,CAAY,IAAyB,EAAA;;QALrC,IAAgC,CAAA,gCAAA,CAAA,GAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;;AAEnE,QAAA,IAAA,CAAA,iCAAA,CAAiC,GAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QAIhD,IAAI,IAAI,EAAE;AACN,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;;;;;AAOxC;;MCZY,2BAA2B,CAAA;AACtC,IAAA,WAAA,CACU,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE;AA6BJ,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;;IAzBvC,IACW,IAAI,CAAC,CAAM,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QACd,IAAI,CAAC,UAAU,EAAE;;IAInB,IACW,MAAM,CAAC,CAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;QAChB,IAAI,CAAC,UAAU,EAAE;;IAInB,IACW,QAAQ,CAAC,CAAM,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;QAElB,IAAI,CAAC,UAAU,EAAE;;AAEnB,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAc;;AAK3D,IAAA,MAAM,UAAU,GAAA;QACd,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;;;IAI5C,SAAS,GAAA;QACP,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;AACrF,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,EAAE;AAClE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAChC,oBAAA,GAAG,IAAI,CAAC,SAAS,CAAC;AACnB,iBAAA,CAAC;;YAEJ,OAAO,CAAC,IAAI,CAAC;AACf,SAAC,CAAC;;8GAjDO,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,2PCVxC,y+BAiBO,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDPM,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BAEE,yBAAyB,EAAA,QAAA,EAAA,y+BAAA,EAAA;gFAWxB,IAAI,EAAA,CAAA;sBADd;gBAQU,MAAM,EAAA,CAAA;sBADhB;gBAQU,QAAQ,EAAA,CAAA;sBADlB;gBAS2C,WAAW,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ME7B/B,4BAA4B,CAAA;AACvC,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE;;QAWtB,IAAO,CAAA,OAAA,GAAQ,EAAE;AA6BT,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;;QAWvC,IAAiB,CAAA,iBAAA,GAAQ,EAAE;;QAE3B,IAAiB,CAAA,iBAAA,GAAQ,EAAE;AAuBnB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;;QAShD,IAAiB,CAAA,iBAAA,GAAU,EAAE;;IAlF7B,IACW,MAAM,CAAC,CAAM,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE;;IAK1B,IACW,MAAM,CAAC,CAAM,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE;;IAK1B,IACW,eAAe,CAAC,CAAM,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE;;IAK1B,IACW,QAAQ,CAAC,CAAM,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE;;AAK1C,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAc;;;AAIzD,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzD,YAAA,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;;;IAQ5C,SAAS,GAAA;QACP,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAI;YACtC,IAAI,eAAe,GAAG,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,gBAAA,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;;YAE3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB;YAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC;AACjF,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAM,KAAG;AAC3B,oBAAA,IAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAC;wBACZ,EAAE,CAAC,KAAK,CAAC,GAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAC,EAAE,CAAC,aAAa,EAAC,EAAE,CAAC,QAAQ,CAAC;;AAExE,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS;;AAEzC,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;AACjE,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC;AACf,SAAC,CAAC;;AAKJ,IAAA,WAAW,CAAC,KAAc,EAAE,GAAG,IAAe,EAAA;AAC5C,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;QACrD,IAAI,MAAM,GAAE,CAAA,EAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA,yBAAA,EAA4B,IAAI,CAAC,CAAC,CAAC,CAAI,CAAA,EAAA,KAAK,CAAa,UAAA,EAAA,QAAQ,CAAU,OAAA,EAAA,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA,CAAE;QAC5I,OAAO,KAAK,GAAC,MAAM,GAAC,EAAE;;;AAOxB,IAAA,mBAAmB,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;QACvC,IAAI,GAAG,GAAG,EAAE;AACZ,QAAA,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC;;8GA/F3B,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,oSCVzC,qtBAUO,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAM,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;+BAEE,0BAA0B,EAAA,QAAA,EAAA,qtBAAA,EAAA;gFAUzB,MAAM,EAAA,CAAA;sBADhB;gBASU,MAAM,EAAA,CAAA;sBADhB;gBASU,eAAe,EAAA,CAAA;sBADzB;gBASU,QAAQ,EAAA,CAAA;sBADlB;gBAO2C,WAAW,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEpB5C;;AAEG;AACU,MAAA,qBAAqB,GAAkC;AAE/D,IAAA;AACG,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,oBAAoB,EAAE,2BAA2B;AACjD,QAAA,cAAc,EAAE,4BAA4B;;AAE/C;;AAEC,SAAU,uBAAuB,CAAC,QAAQ,EAAA;;AAE5C,IAAA,OAAO,qBAAqB;AAChC;AAEgB,SAAA,oBAAoB,CAAC,KAAK,GAAC,EAAE,EAAA;AACzC,IAAA,qBAAqB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACxC;;MCQa,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAvC3B,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,iBAAiB;YACjB,oBAAoB;YACpB,2BAA2B;AAC3B,YAAA,4BAA4B,aAG5B,WAAW;YACX,UAAU;YACV,iBAAiB;YACjB,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,qBAAqB;AACrB,YAAA,yBAAyB,aAGzB,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,iBAAiB;YACjB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAcX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YA7B3B,WAAW;YACX,UAAU;YACV,iBAAiB;YACjB,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,qBAAqB;YACrB,yBAAyB,CAAA,EAAA,CAAA,CAAA;;2FAsBhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAzC9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;wBACtB,iBAAiB;wBACjB,oBAAoB;wBACpB,2BAA2B;wBAC3B,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,UAAU;wBACV,iBAAiB;wBACjB,mBAAmB;wBACnB,iBAAiB;wBACjB,YAAY;wBACZ,qBAAqB;wBACrB,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;wBACtB,iBAAiB;wBACjB,oBAAoB;;;AAGrB,qBAAA;AACD,oBAAA,SAAS,EAAE;;;;;;;;AAQV,qBAAA;AACF,iBAAA;;;ACrDD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -26,6 +26,9 @@ export declare class FileExplorerControlComponent {
26
26
  /**文件容器名称 */
27
27
  FileContainerName: any;
28
28
  AfterInit(): Promise<unknown>;
29
+ private configState;
30
+ private environment;
31
+ GetImageUrl(value: unknown, ...args: unknown[]): unknown;
29
32
  /**选择文件-弹窗的-已选定的文件 */
30
33
  selectedFileGroup: any[];
31
34
  /**_selectedFile改变回调 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dignite-ng/expand.file-explorer",
3
- "version": "3.0.0-rc.03",
3
+ "version": "3.0.0-rc.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.1.0",
6
6
  "@angular/core": "^18.1.0"