ngx-rs-ant 1.4.4 → 1.4.6

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.
@@ -10,10 +10,11 @@ export declare class FileCellTemplateComponent {
10
10
  filename: any;
11
11
  content: any;
12
12
  icon: any;
13
+ supportPreview: boolean;
13
14
  loading: boolean;
14
15
  constructor(service: DataGridService, domSanitizer: DomSanitizer);
15
16
  ngOnInit(): void;
16
- preview(): void;
17
+ preview(tooltip: any): void;
17
18
  download(): void;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<FileCellTemplateComponent, never>;
19
20
  static ɵcmp: i0.ɵɵComponentDeclaration<FileCellTemplateComponent, "rs-file-cell-template", never, { "table": "table"; "oid": "oid"; }, {}, never, never, false, never>;
@@ -1,5 +1,5 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { download_file, file_type_icon, format_file_size, notify_warning } from "../../util/utils";
2
+ import { download_file, file_type_icon, format_file_size, notify_warning, support_preview_ext } from "../../util/utils";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../data-grid.service";
5
5
  import * as i2 from "@angular/platform-browser";
@@ -10,12 +10,18 @@ export class FileCellTemplateComponent {
10
10
  constructor(service, domSanitizer) {
11
11
  this.service = service;
12
12
  this.domSanitizer = domSanitizer;
13
+ this.supportPreview = false;
13
14
  this.loading = false;
14
15
  }
15
16
  ngOnInit() {
16
17
  this.service.getOne('S', 'Attachment', this.oid).subscribe(response => {
17
18
  this.file = response.data;
18
19
  this.filename = this.file.fileName;
20
+ let extName = '';
21
+ if (this.filename.indexOf('.') > -1) {
22
+ extName = this.filename.substring(this.filename.lastIndexOf('.') + 1).toLowerCase();
23
+ }
24
+ this.supportPreview = support_preview_ext().indexOf(extName) > -1;
19
25
  this.content = this.domSanitizer.bypassSecurityTrustHtml(`
20
26
  <table>
21
27
  <tr>
@@ -40,7 +46,7 @@ export class FileCellTemplateComponent {
40
46
  });
41
47
  });
42
48
  }
43
- preview() {
49
+ preview(tooltip) {
44
50
  if (!window.coast.tabManager) {
45
51
  notify_warning('此操作仅能在coast-web项目中执行,type:preview');
46
52
  return;
@@ -66,6 +72,7 @@ export class FileCellTemplateComponent {
66
72
  }
67
73
  }
68
74
  });
75
+ tooltip.instance.hide();
69
76
  }
70
77
  download() {
71
78
  this.loading = true;
@@ -77,13 +84,13 @@ export class FileCellTemplateComponent {
77
84
  }
78
85
  }
79
86
  FileCellTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, deps: [{ token: i1.DataGridService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
80
- FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { table: "table", oid: "oid" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\n {{ filename }}\n <dx-tooltip [target]=\"fileBtn.instance.element()\"\n [position]=\"'top'\"\n [visible]=\"false\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\n (onClick)=\"preview()\" [disabled]=\"loading\"></dx-button>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\n </div>\n </dx-tooltip>\n</dx-button><br/>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
87
+ FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { table: "table", oid: "oid" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
81
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, decorators: [{
82
89
  type: Component,
83
- args: [{ selector: 'rs-file-cell-template', template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\n {{ filename }}\n <dx-tooltip [target]=\"fileBtn.instance.element()\"\n [position]=\"'top'\"\n [visible]=\"false\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\n (onClick)=\"preview()\" [disabled]=\"loading\"></dx-button>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\n </div>\n </dx-tooltip>\n</dx-button><br/>\n" }]
90
+ args: [{ selector: 'rs-file-cell-template', template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n" }]
84
91
  }], ctorParameters: function () { return [{ type: i1.DataGridService }, { type: i2.DomSanitizer }]; }, propDecorators: { table: [{
85
92
  type: Input
86
93
  }], oid: [{
87
94
  type: Input
88
95
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBT2pHLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEMsWUFBb0IsT0FBd0IsRUFBVSxZQUEwQjtRQUE1RCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRmhGLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFJaEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDOzs7O3dEQUlQLElBQUksQ0FBQyxRQUFROzs7O3dEQUliLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDOzs7O3dEQUlwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7OztPQUdyRSxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsU0FBUztZQUNULFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2Qsc0JBQXNCO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBRSxNQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNyQyxjQUFjLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUNwRCxPQUFPO1NBQ1I7UUFDQSxNQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3hDLElBQUksRUFBRSxTQUFTO1lBQ2YsRUFBRSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDcEIsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRTtvQkFDTixTQUFTLEVBQUUsS0FBSztvQkFDaEIsSUFBSSxFQUFFLENBQUM7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLEVBQUU7NEJBQ1QsTUFBTSxFQUFFO2dDQUNOLElBQUksRUFBRSxvQkFBb0I7Z0NBQzFCLFlBQVksRUFBRTtvQ0FDWixFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUc7b0NBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO2lDQUNwQjs2QkFDRjt5QkFDRixDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6RCxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7c0hBL0VVLHlCQUF5QjswR0FBekIseUJBQXlCLHFHQ1Z0QyxtMUJBZ0JBOzJGRE5hLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7aUlBTWpDLEtBQUs7c0JBREosS0FBSztnQkFHTixHQUFHO3NCQURGLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0RhdGFHcmlkU2VydmljZX0gZnJvbSBcIi4uL2RhdGEtZ3JpZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQge2Rvd25sb2FkX2ZpbGUsIGZpbGVfdHlwZV9pY29uLCBmb3JtYXRfZmlsZV9zaXplLCBub3RpZnlfd2FybmluZ30gZnJvbSBcIi4uLy4uL3V0aWwvdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnMtZmlsZS1jZWxsLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLWNlbGwtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZUNlbGxUZW1wbGF0ZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICB0YWJsZTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgb2lkOiBhbnk7XHJcbiAgZmlsZTogYW55O1xyXG4gIGZpbGVuYW1lOiBhbnk7XHJcbiAgY29udGVudDogYW55O1xyXG4gIGljb246IGFueTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogRGF0YUdyaWRTZXJ2aWNlLCBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0T25lKCdTJywgJ0F0dGFjaG1lbnQnLCB0aGlzLm9pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5maWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy5maWxlbmFtZSA9IHRoaXMuZmlsZS5maWxlTmFtZTtcclxuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYFxyXG4gICAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5ZCN56ew77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke3RoaXMuZmlsZW5hbWV9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5aSn5bCP77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke2Zvcm1hdF9maWxlX3NpemUodGhpcy5maWxlLmZpbGVTaXplKX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj7ml7bpl7TvvJo8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPiR7dGhpcy5maWxlLm1vZGlmeVRpbWV9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgYCk7XHJcbiAgICAgIHRoaXMuaWNvbiA9IGZpbGVfdHlwZV9pY29uKHRoaXMuZmlsZW5hbWUpO1xyXG4gICAgICAvLyDph43nu5jooajmoLzlrr3pq5hcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy90aGlzLnRhYmxlLnJlc2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByZXZpZXcoKSB7XHJcbiAgICBpZiAoISh3aW5kb3cgYXMgYW55KS5jb2FzdC50YWJNYW5hZ2VyKSB7XHJcbiAgICAgIG5vdGlmeV93YXJuaW5nKCfmraTmk43kvZzku4Xog73lnKhjb2FzdC13ZWLpobnnm67kuK3miafooYzvvIx0eXBl77yacHJldmlldycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAod2luZG93IGFzIGFueSkuY29hc3QudGFiTWFuYWdlci5hZGQubmV4dCh7XHJcbiAgICAgIHR5cGU6ICdwcmV2aWV3JyxcclxuICAgICAgaWQ6ICdwcmV2aWV3OicgKyB0aGlzLm9pZCxcclxuICAgICAgdGl0bGU6IHRoaXMuZmlsZW5hbWUsXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgZGlyZWN0aW9uOiBcInJvd1wiLFxyXG4gICAgICAgICAgbGlzdDogW3tcclxuICAgICAgICAgICAgdHlwZTogXCJwbHVnaW5cIixcclxuICAgICAgICAgICAgc3R5bGU6IHt9LFxyXG4gICAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgICBuYW1lOiBcImNvYXN0LWZpbGUtcHJldmlld1wiLFxyXG4gICAgICAgICAgICAgIHBsdWdpbkNvbmZpZzoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMub2lkLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5maWxlbmFtZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmRvd25sb2FkQXR0YWNobWVudCh0aGlzLm9pZCkuc3Vic2NyaWJlKGJsb2IgPT4ge1xyXG4gICAgICBkb3dubG9hZF9maWxlKGJsb2IsIHRoaXMuZmlsZW5hbWUsICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGR4LWJ1dHRvbiAjZmlsZUJ0biB0eXBlPVwiZGVmYXVsdFwiIHN0eWxpbmdNb2RlPVwidGV4dFwiPlxuICA8aSBjbGFzcz1cImNvYXN0LWljb24tZmlsZS17e2ljb259fVwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNHB4O1wiPjwvaT5cbiAge3sgZmlsZW5hbWUgfX1cbiAgPGR4LXRvb2x0aXAgW3RhcmdldF09XCJmaWxlQnRuLmluc3RhbmNlLmVsZW1lbnQoKVwiXG4gICAgICAgICAgICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXG4gICAgICAgICAgICAgIFt2aXNpYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3Nob3dFdmVudF09XCInY2xpY2snXCI+XG4gICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxuICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2Rpdj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cImRlZmF1bHRcIiBzdHlsaW5nTW9kZT1cInRleHRcIiBpY29uPVwiY29hc3QtaWNvbiBjb2FzdC1pY29uLWZpbGVcIiB0ZXh0PVwi6aKE6KeIXCJcbiAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicHJldmlldygpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj48L2R4LWJ1dHRvbj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cImRlZmF1bHRcIiBzdHlsaW5nTW9kZT1cInRleHRcIiBpY29uPVwiY29hc3QtaWNvbiBjb2FzdC1pY29uLWRvd25sb2FkXCIgdGV4dD1cIuS4i+i9vVwiXG4gICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRvd25sb2FkKClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2R4LXRvb2x0aXA+XG48L2R4LWJ1dHRvbj48YnIvPlxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBT3RILE1BQU0sT0FBTyx5QkFBeUI7SUFZcEMsWUFBb0IsT0FBd0IsRUFBVSxZQUEwQjtRQUE1RCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSGhGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFJaEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbkMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNyRjtZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDOzs7O3dEQUlQLElBQUksQ0FBQyxRQUFROzs7O3dEQUliLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDOzs7O3dEQUlwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7OztPQUdyRSxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsU0FBUztZQUNULFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2Qsc0JBQXNCO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQVk7UUFDbEIsSUFBSSxDQUFFLE1BQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQ3BELE9BQU87U0FDUjtRQUNBLE1BQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDeEMsSUFBSSxFQUFFLFNBQVM7WUFDZixFQUFFLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHO1lBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNwQixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFO29CQUNOLFNBQVMsRUFBRSxLQUFLO29CQUNoQixJQUFJLEVBQUUsQ0FBQzs0QkFDTCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUsRUFBRTs0QkFDVCxNQUFNLEVBQUU7Z0NBQ04sSUFBSSxFQUFFLG9CQUFvQjtnQ0FDMUIsWUFBWSxFQUFFO29DQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRztvQ0FDWixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7aUNBQ3BCOzZCQUNGO3lCQUNGLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekQsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3NIQXRGVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixxR0NWdEMsdTZCQWlCQTsyRkRQYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO2lJQU1qQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEYXRhR3JpZFNlcnZpY2V9IGZyb20gXCIuLi9kYXRhLWdyaWQuc2VydmljZVwiO1xyXG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtkb3dubG9hZF9maWxlLCBmaWxlX3R5cGVfaWNvbiwgZm9ybWF0X2ZpbGVfc2l6ZSwgbm90aWZ5X3dhcm5pbmcsIHN1cHBvcnRfcHJldmlld19leHR9IGZyb20gXCIuLi8uLi91dGlsL3V0aWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JzLWZpbGUtY2VsbC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtY2VsbC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVDZWxsVGVtcGxhdGVDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGU6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIG9pZDogYW55O1xyXG4gIGZpbGU6IGFueTtcclxuICBmaWxlbmFtZTogYW55O1xyXG4gIGNvbnRlbnQ6IGFueTtcclxuICBpY29uOiBhbnk7XHJcbiAgc3VwcG9ydFByZXZpZXcgPSBmYWxzZTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogRGF0YUdyaWRTZXJ2aWNlLCBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0T25lKCdTJywgJ0F0dGFjaG1lbnQnLCB0aGlzLm9pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5maWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy5maWxlbmFtZSA9IHRoaXMuZmlsZS5maWxlTmFtZTtcclxuICAgICAgbGV0IGV4dE5hbWUgPSAnJztcclxuICAgICAgaWYgKHRoaXMuZmlsZW5hbWUuaW5kZXhPZignLicpID4gLTEpIHtcclxuICAgICAgICBleHROYW1lID0gdGhpcy5maWxlbmFtZS5zdWJzdHJpbmcodGhpcy5maWxlbmFtZS5sYXN0SW5kZXhPZignLicpICsgMSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1cHBvcnRQcmV2aWV3ID0gc3VwcG9ydF9wcmV2aWV3X2V4dCgpLmluZGV4T2YoZXh0TmFtZSkgPiAtMTtcclxuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYFxyXG4gICAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5ZCN56ew77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke3RoaXMuZmlsZW5hbWV9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5aSn5bCP77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke2Zvcm1hdF9maWxlX3NpemUodGhpcy5maWxlLmZpbGVTaXplKX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj7ml7bpl7TvvJo8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPiR7dGhpcy5maWxlLm1vZGlmeVRpbWV9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgYCk7XHJcbiAgICAgIHRoaXMuaWNvbiA9IGZpbGVfdHlwZV9pY29uKHRoaXMuZmlsZW5hbWUpO1xyXG4gICAgICAvLyDph43nu5jooajmoLzlrr3pq5hcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy90aGlzLnRhYmxlLnJlc2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByZXZpZXcodG9vbHRpcDogYW55KSB7XHJcbiAgICBpZiAoISh3aW5kb3cgYXMgYW55KS5jb2FzdC50YWJNYW5hZ2VyKSB7XHJcbiAgICAgIG5vdGlmeV93YXJuaW5nKCfmraTmk43kvZzku4Xog73lnKhjb2FzdC13ZWLpobnnm67kuK3miafooYzvvIx0eXBl77yacHJldmlldycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAod2luZG93IGFzIGFueSkuY29hc3QudGFiTWFuYWdlci5hZGQubmV4dCh7XHJcbiAgICAgIHR5cGU6ICdwcmV2aWV3JyxcclxuICAgICAgaWQ6ICdwcmV2aWV3OicgKyB0aGlzLm9pZCxcclxuICAgICAgdGl0bGU6IHRoaXMuZmlsZW5hbWUsXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgZGlyZWN0aW9uOiBcInJvd1wiLFxyXG4gICAgICAgICAgbGlzdDogW3tcclxuICAgICAgICAgICAgdHlwZTogXCJwbHVnaW5cIixcclxuICAgICAgICAgICAgc3R5bGU6IHt9LFxyXG4gICAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgICBuYW1lOiBcImNvYXN0LWZpbGUtcHJldmlld1wiLFxyXG4gICAgICAgICAgICAgIHBsdWdpbkNvbmZpZzoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMub2lkLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5maWxlbmFtZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdG9vbHRpcC5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWRBdHRhY2htZW50KHRoaXMub2lkKS5zdWJzY3JpYmUoYmxvYiA9PiB7XHJcbiAgICAgIGRvd25sb2FkX2ZpbGUoYmxvYiwgdGhpcy5maWxlbmFtZSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZHgtYnV0dG9uICNmaWxlQnRuIHR5cGU9XCJkZWZhdWx0XCIgc3R5bGluZ01vZGU9XCJ0ZXh0XCI+XHJcbiAgPGkgY2xhc3M9XCJjb2FzdC1pY29uLWZpbGUte3tpY29ufX1cIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDRweDtcIj48L2k+XHJcbiAge3sgZmlsZW5hbWUgfX1cclxuICA8ZHgtdG9vbHRpcCAjdG9vbHRpcFxyXG4gICAgICAgICAgICAgIFt0YXJnZXRdPVwiZmlsZUJ0bi5pbnN0YW5jZS5lbGVtZW50KClcIlxyXG4gICAgICAgICAgICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXHJcbiAgICAgICAgICAgICAgW3Zpc2libGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzaG93RXZlbnRdPVwiJ2NsaWNrJ1wiPlxyXG4gICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxyXG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiY29udGVudFwiPjwvZGl2PlxyXG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgc3R5bGluZ01vZGU9XCJ0ZXh0XCIgaWNvbj1cImNvYXN0LWljb24gY29hc3QtaWNvbi1maWxlXCIgdGV4dD1cIumihOiniFwiXHJcbiAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicHJldmlldyh0b29sdGlwKVwiIFtkaXNhYmxlZF09XCIhc3VwcG9ydFByZXZpZXcgfHwgbG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxyXG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgc3R5bGluZ01vZGU9XCJ0ZXh0XCIgaWNvbj1cImNvYXN0LWljb24gY29hc3QtaWNvbi1kb3dubG9hZFwiIHRleHQ9XCLkuIvovb1cIlxyXG4gICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRvd25sb2FkKClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9keC10b29sdGlwPlxyXG48L2R4LWJ1dHRvbj48YnIvPlxyXG4iXX0=
@@ -20,10 +20,10 @@ export class PdfViewerComponent {
20
20
  }
21
21
  }
22
22
  PdfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
23
- PdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PdfViewerComponent, isStandalone: true, selector: "rs-pdf-viewer", inputs: { src: "src" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "viewer", first: true, predicate: PdfJsViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ng2-pdfjs-viewer\n [openFile]=\"false\"\n [download]=\"false\"\n [viewBookmark]=\"false\"\n>\n</ng2-pdfjs-viewer>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PdfJsViewerModule }, { kind: "component", type: i2.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }] });
23
+ PdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PdfViewerComponent, isStandalone: true, selector: "rs-pdf-viewer", inputs: { src: "src" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "viewer", first: true, predicate: PdfJsViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ng2-pdfjs-viewer\r\n [openFile]=\"false\"\r\n [download]=\"false\"\r\n [viewBookmark]=\"false\"\r\n>\r\n</ng2-pdfjs-viewer>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PdfJsViewerModule }, { kind: "component", type: i2.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }] });
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PdfViewerComponent, decorators: [{
25
25
  type: Component,
26
- args: [{ selector: 'rs-pdf-viewer', standalone: true, imports: [CommonModule, PdfJsViewerModule], template: "<ng2-pdfjs-viewer\n [openFile]=\"false\"\n [download]=\"false\"\n [viewBookmark]=\"false\"\n>\n</ng2-pdfjs-viewer>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"] }]
26
+ args: [{ selector: 'rs-pdf-viewer', standalone: true, imports: [CommonModule, PdfJsViewerModule], template: "<ng2-pdfjs-viewer\r\n [openFile]=\"false\"\r\n [download]=\"false\"\r\n [viewBookmark]=\"false\"\r\n>\r\n</ng2-pdfjs-viewer>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"] }]
27
27
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; }, propDecorators: { src: [{
28
28
  type: Input
29
29
  }], loaded: [{
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
32
32
  type: ViewChild,
33
33
  args: [PdfJsViewerComponent, { static: true }]
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQVV6RSxNQUFNLE9BQU8sa0JBQWtCO0lBTzdCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFIcEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3RCLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQWxCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix3S0FLbEIsb0JBQW9CLDhEQ2pCakMseUhBTUEsb0lERVksWUFBWSw4QkFBRSxpQkFBaUI7MkZBSTlCLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO2lHQU0xQyxHQUFHO3NCQURGLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxNQUFNO2dCQUUwQyxNQUFNO3NCQUF0RCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UGRmSnNWaWV3ZXJDb21wb25lbnQsIFBkZkpzVmlld2VyTW9kdWxlfSBmcm9tIFwibmcyLXBkZmpzLXZpZXdlclwiO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtcGRmLXZpZXdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBkZkpzVmlld2VyTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wZGYtdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgc3JjOiBhbnk7XG4gIEBPdXRwdXQoKVxuICBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBWaWV3Q2hpbGQoUGRmSnNWaWV3ZXJDb21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSB2aWV3ZXIhOiBQZGZKc1ZpZXdlckNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaHR0cC5nZXQodGhpcy5zcmMsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJibG9iXCJcbiAgICB9KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy52aWV3ZXIucGRmU3JjID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLnZpZXdlci5yZWZyZXNoKCk7XG4gICAgICB0aGlzLmxvYWRlZC5lbWl0KCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZzItcGRmanMtdmlld2VyXG4gIFtvcGVuRmlsZV09XCJmYWxzZVwiXG4gIFtkb3dubG9hZF09XCJmYWxzZVwiXG4gIFt2aWV3Qm9va21hcmtdPVwiZmFsc2VcIlxuPlxuPC9uZzItcGRmanMtdmlld2VyPlxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQVV6RSxNQUFNLE9BQU8sa0JBQWtCO0lBTzdCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFIcEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3RCLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQWxCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix3S0FLbEIsb0JBQW9CLDhEQ2pCakMscUlBTUEsb0lERVksWUFBWSw4QkFBRSxpQkFBaUI7MkZBSTlCLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO2lHQU0xQyxHQUFHO3NCQURGLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxNQUFNO2dCQUUwQyxNQUFNO3NCQUF0RCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1BkZkpzVmlld2VyQ29tcG9uZW50LCBQZGZKc1ZpZXdlck1vZHVsZX0gZnJvbSBcIm5nMi1wZGZqcy12aWV3ZXJcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnMtcGRmLXZpZXdlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQZGZKc1ZpZXdlck1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BkZi12aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIHNyYzogYW55O1xyXG4gIEBPdXRwdXQoKVxyXG4gIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAVmlld0NoaWxkKFBkZkpzVmlld2VyQ29tcG9uZW50LCB7c3RhdGljOiB0cnVlfSkgdmlld2VyITogUGRmSnNWaWV3ZXJDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmh0dHAuZ2V0KHRoaXMuc3JjLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJibG9iXCJcclxuICAgIH0pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIHRoaXMudmlld2VyLnBkZlNyYyA9IHJlc3BvbnNlO1xyXG4gICAgICB0aGlzLnZpZXdlci5yZWZyZXNoKCk7XHJcbiAgICAgIHRoaXMubG9hZGVkLmVtaXQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmcyLXBkZmpzLXZpZXdlclxyXG4gIFtvcGVuRmlsZV09XCJmYWxzZVwiXHJcbiAgW2Rvd25sb2FkXT1cImZhbHNlXCJcclxuICBbdmlld0Jvb2ttYXJrXT1cImZhbHNlXCJcclxuPlxyXG48L25nMi1wZGZqcy12aWV3ZXI+XHJcbiJdfQ==
@@ -35,4 +35,4 @@ export * from './util/change-filter';
35
35
  export * from './util/utils';
36
36
  export * from './websocket/websocket.module';
37
37
  export * from './websocket/websocket.service';
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JveC1jb250YWluZXIvYm94LWl0ZW0vaXRlbS1jb25maWcvaXRlbS1jb25maWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYm94LWNvbnRhaW5lci9ib3gtaXRlbS9pdGVtLXN0eWxlL2l0ZW0tc3R5bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYm94LWNvbnRhaW5lci9ib3gtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2JveC1jb250YWluZXIvYm94LWNvbnRhaW5lci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ib3gtY29udGFpbmVyL1BsdWdpbk1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jYW11bmRhLWJwbW4tZWRpdG9yL2NhbXVuZGEtYnBtbi1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2FtdW5kYS1icG1uLWVkaXRvci9jYW11bmRhLWJwbW4tZWRpdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL2RhdGEtZ3JpZC5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL2luc3RhbmNlLWxpbmstdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL21hc3Rlci1kZXRhaWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL3Jvdy1idXR0b25zLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtZ3JpZC9kYXRhLWdyaWQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL2RhdGEtZ3JpZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1kZXRhaWwvZGF0YS1kZXRhaWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1kZXRhaWwvZGF0YS1kZXRhaWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhd2VyL2RyYXdlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmF3ZXIvZHJhd2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdlci9kcmF3ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtcGFyYW1zL2R5bmFtaWMtcGFyYW1zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtcGFyYW1zL3Rvb2x0aXAtY29udGVudC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLXBhcmFtcy9keW5hbWljLXBhcmFtcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS9mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vZm9ybS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24tc2VsZWN0b3IvaWNvbi1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9tb2RhbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvY2hhbmdlLWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwvdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi93ZWJzb2NrZXQvd2Vic29ja2V0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3dlYnNvY2tldC93ZWJzb2NrZXQuc2VydmljZSc7XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JveC1jb250YWluZXIvYm94LWl0ZW0vaXRlbS1jb25maWcvaXRlbS1jb25maWcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9ib3gtY29udGFpbmVyL2JveC1pdGVtL2l0ZW0tc3R5bGUvaXRlbS1zdHlsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2JveC1jb250YWluZXIvYm94LWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2JveC1jb250YWluZXIvYm94LWNvbnRhaW5lci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2JveC1jb250YWluZXIvUGx1Z2luTWFuYWdlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2FtdW5kYS1icG1uLWVkaXRvci9jYW11bmRhLWJwbW4tZWRpdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2FtdW5kYS1icG1uLWVkaXRvci9jYW11bmRhLWJwbW4tZWRpdG9yLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29kZS1lZGl0b3IvY29kZS1lZGl0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWdyaWQvZGF0YS1ncmlkLmZhY3RvcnknO1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtZ3JpZC9pbnN0YW5jZS1saW5rLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL21hc3Rlci1kZXRhaWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWdyaWQvcm93LWJ1dHRvbnMtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWdyaWQvZGF0YS1ncmlkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1ncmlkL2RhdGEtZ3JpZC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWRldGFpbC9kYXRhLWRldGFpbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtZGV0YWlsL2RhdGEtZGV0YWlsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHJhd2VyL2RyYXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RyYXdlci9kcmF3ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kcmF3ZXIvZHJhd2VyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtcGFyYW1zL2R5bmFtaWMtcGFyYW1zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1wYXJhbXMvdG9vbHRpcC1jb250ZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1wYXJhbXMvZHluYW1pYy1wYXJhbXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2Zvcm0ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2Zvcm0uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1zZWxlY3Rvci9pY29uLXNlbGVjdG9yLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC9tb2RhbC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGFsL21vZGFsLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWwvY2hhbmdlLWZpbHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbC91dGlscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vd2Vic29ja2V0L3dlYnNvY2tldC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3dlYnNvY2tldC93ZWJzb2NrZXQuc2VydmljZSc7XHJcbiJdfQ==
@@ -42,27 +42,28 @@ export function format_datetime(date, locale) {
42
42
  export function file_type_icon(name) {
43
43
  const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
44
44
  switch (type) {
45
- case 'xls':
46
- case 'xlsx':
47
- return 'excel';
48
45
  case 'doc':
49
46
  case 'docx':
50
47
  return 'word';
48
+ case 'xls':
49
+ case 'xlsx':
50
+ case 'csv':
51
+ return 'excel';
51
52
  case 'ppt':
52
53
  case 'pptx':
53
54
  return 'ppt';
54
55
  case 'pdf':
55
56
  return 'pdf';
56
57
  case 'txt':
57
- case 'csv':
58
58
  case 'xml':
59
59
  case 'json':
60
60
  case 'js':
61
61
  return 'text';
62
+ case 'png':
62
63
  case 'jpg':
63
64
  case 'jpeg':
64
- case 'png':
65
65
  case 'gif':
66
+ case 'bmp':
66
67
  return 'image';
67
68
  case 'zip':
68
69
  case 'rar':
@@ -73,6 +74,9 @@ export function file_type_icon(name) {
73
74
  return 'unknown';
74
75
  }
75
76
  }
77
+ export function support_preview_ext() {
78
+ return ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp', 'doc', 'docx', 'txt', 'xml', 'json', 'js', 'xls', 'xlsx', 'csv', 'ppt', 'pptx'];
79
+ }
76
80
  export function format_file_size(size) {
77
81
  const labels = ['b', 'Kb', 'Mb', 'Gb'];
78
82
  const count = labels.length - 1;
@@ -161,4 +165,4 @@ export async function validate_group(validationGroup) {
161
165
  }
162
166
  });
163
167
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy91dGlsL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQWU7SUFDMUMsTUFBTSxDQUFDO1FBQ0wsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTztRQUNQLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLE9BQU87S0FDZixFQUFFO1FBQ0QsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLGNBQWM7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZTtJQUM1QyxNQUFNLENBQUM7UUFDTCxXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPO1FBQ1AsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsT0FBTztLQUNmLEVBQUU7UUFDRCxTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsY0FBYztLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE1BQU0sQ0FBQztRQUNMLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU87UUFDUCxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxPQUFPO0tBQ2YsRUFBRTtRQUNELFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFFBQVEsRUFBRSxXQUFXO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVUsRUFBRSxNQUFjO0lBQ3BELE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FB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LE9BQU8sVUFBVSxDQUFDO2lCQUNuQjthQUNGO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFDRixPQUFPLElBQUksT0FBTyxDQUFVLE9BQU8sQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDM0IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFTLENBQUEsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkYsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQjtRQUNELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDdkMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO29CQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2Y7cUJBQU07b0JBQ0wsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFTLENBQUEsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzNFLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNmO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vdGlmeSBmcm9tIFwiZGV2ZXh0cmVtZS91aS9ub3RpZnlcIjtcclxuaW1wb3J0IHtEeFZhbGlkYXRpb25Hcm91cENvbXBvbmVudCwgRHhWYWxpZGF0b3JDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbm90aWZ5X2Vycm9yKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gIG5vdGlmeSh7XHJcbiAgICBkaXNwbGF5VGltZTogMTIwMDAsXHJcbiAgICBtZXNzYWdlLFxyXG4gICAgdHlwZTogJ2Vycm9yJyxcclxuICAgIHdpZHRoOiAnMzAwcHgnXHJcbiAgfSwge1xyXG4gICAgZGlyZWN0aW9uOiAndXAtcHVzaCcsXHJcbiAgICBwb3NpdGlvbjogJ2JvdHRvbSByaWdodCdcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmeV93YXJuaW5nKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gIG5vdGlmeSh7XHJcbiAgICBkaXNwbGF5VGltZTogODAwMCxcclxuICAgIG1lc3NhZ2UsXHJcbiAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICB3aWR0aDogJzMwMHB4J1xyXG4gIH0sIHtcclxuICAgIGRpcmVjdGlvbjogJ3VwLXB1c2gnLFxyXG4gICAgcG9zaXRpb246ICdib3R0b20gcmlnaHQnXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBub3RpZnlfc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcpIHtcclxuICBub3RpZnkoe1xyXG4gICAgZGlzcGxheVRpbWU6IDQwMDAsXHJcbiAgICBtZXNzYWdlLFxyXG4gICAgdHlwZTogJ3N1Y2Nlc3MnLFxyXG4gICAgd2lkdGg6ICczMDBweCdcclxuICB9LCB7XHJcbiAgICBkaXJlY3Rpb246ICdkb3duLXB1c2gnLFxyXG4gICAgcG9zaXRpb246ICd0b3AgcmlnaHQnXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRfZGF0ZShkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykge1xyXG4gIHJldHVybiBmb3JtYXREYXRlKGRhdGUsICd5eXl5L01NL2RkJywgbG9jYWxlLCAnR01UKzgnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdF9kYXRldGltZShkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykge1xyXG4gIHJldHVybiBmb3JtYXREYXRlKGRhdGUsICd5eXl5L01NL2RkIEhIOm1tOnNzJywgbG9jYWxlLCAnR01UKzgnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVfdHlwZV9pY29uKG5hbWU6IHN0cmluZykge1xyXG4gIGNvbnN0IHR5cGUgPSBuYW1lLnN1YnN0cmluZyhuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAneGxzJzpcclxuICAgIGNhc2UgJ3hsc3gnOlxyXG4gICAgICByZXR1cm4gJ2V4Y2VsJztcclxuICAgIGNhc2UgJ2RvYyc6XHJcbiAgICBjYXNlICdkb2N4JzpcclxuICAgICAgcmV0dXJuICd3b3JkJztcclxuICAgIGNhc2UgJ3BwdCc6XHJcbiAgICBjYXNlICdwcHR4JzpcclxuICAgICAgcmV0dXJuICdwcHQnO1xyXG4gICAgY2FzZSAncGRmJzpcclxuICAgICAgcmV0dXJuICdwZGYnO1xyXG4gICAgY2FzZSAndHh0JzpcclxuICAgIGNhc2UgJ2Nzdic6XHJcbiAgICBjYXNlICd4bWwnOlxyXG4gICAgY2FzZSAnanNvbic6XHJcbiAgICBjYXNlICdqcyc6XHJcbiAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICBjYXNlICdqcGcnOlxyXG4gICAgY2FzZSAnanBlZyc6XHJcbiAgICBjYXNlICdwbmcnOlxyXG4gICAgY2FzZSAnZ2lmJzpcclxuICAgICAgcmV0dXJuICdpbWFnZSc7XHJcbiAgICBjYXNlICd6aXAnOlxyXG4gICAgY2FzZSAncmFyJzpcclxuICAgIGNhc2UgJzd6JzpcclxuICAgIGNhc2UgJ2phcic6XHJcbiAgICAgIHJldHVybiAnemlwJztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiAndW5rbm93bic7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0X2ZpbGVfc2l6ZShzaXplOiBudW1iZXIpIHtcclxuICBjb25zdCBsYWJlbHMgPSBbJ2InLCAnS2InLCAnTWInLCAnR2InXTtcclxuICBjb25zdCBjb3VudCA9IGxhYmVscy5sZW5ndGggLSAxO1xyXG4gIGxldCBpID0gMDtcclxuICB3aGlsZSAoaSA8IGNvdW50ICYmIHNpemUgPj0gMTAyNCkge1xyXG4gICAgc2l6ZSAvPSAxMDI0O1xyXG4gICAgaSsrO1xyXG4gIH1cclxuICByZXR1cm4gTWF0aC5yb3VuZChzaXplICogMTAwKSAvIDEwMCArIFwiIFwiICsgbGFiZWxzW2ldO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRfZmlsZShibG9iOiBCbG9iLCBmaWxlbmFtZTogc3RyaW5nLCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XHJcbiAgY29uc3QgdXJsID0gd2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5Om5vbmUnKTtcclxuICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XHJcbiAgYS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZGVjb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKSk7XHJcbiAgYS5jbGljaygpO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbiAgICBhLnJlbW92ZSgpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGUodmFsaWRhdG9yOiBEeFZhbGlkYXRvckNvbXBvbmVudCkge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcclxuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gdmFsaWRhdG9yLmluc3RhbmNlLnZhbGlkYXRlKCk7XHJcbiAgICBpZiAoIXZhbGlkYXRlUmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsaWRhdGVSZXN1bHQuc3RhdHVzID09PSAncGVuZGluZycpIHtcclxuICAgICAgdmFsaWRhdGVSZXN1bHQuY29tcGxldGU/LnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlX2dyb3VwKHZhbGlkYXRpb25Hcm91cDogRHhWYWxpZGF0aW9uR3JvdXBDb21wb25lbnQpIHtcclxuICBjb25zdCB0b3AgPSAodmFsaWRhdGlvbkdyb3VwIGFzIGFueSkuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gIGxldCBzb3VyY2VOb2RlO1xyXG4gIGNvbnN0IHRhcmdldENsYXNzTmFtZSA9ICdkeC1maWVsZCc7XHJcbiAgY29uc3QgZmluZFRhcmdldE5vZGUgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICBzb3VyY2VOb2RlID0gbm9kZTtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucyh0YXJnZXRDbGFzc05hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcclxuICAgICAgICBpZiAobm9kZSA9PT0gdG9wKSB7XHJcbiAgICAgICAgICByZXR1cm4gc291cmNlTm9kZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcclxuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gdmFsaWRhdGlvbkdyb3VwLmluc3RhbmNlLnZhbGlkYXRlKCk7XHJcbiAgICBpZiAoIXZhbGlkYXRlUmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgY29uc3QgYnJva2VuRWxlbWVudCA9ICh2YWxpZGF0ZVJlc3VsdC5icm9rZW5SdWxlcz8uWzBdIGFzIGFueSkudmFsaWRhdG9yLmVsZW1lbnQoKTtcclxuICAgICAgZmluZFRhcmdldE5vZGUoYnJva2VuRWxlbWVudCkuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsaWRhdGVSZXN1bHQuc3RhdHVzID09PSAncGVuZGluZycpIHtcclxuICAgICAgdmFsaWRhdGVSZXN1bHQuY29tcGxldGU/LnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBicm9rZW5FbGVtZW50ID0gKHJlc3VsdC5icm9rZW5SdWxlcz8uWzBdIGFzIGFueSkudmFsaWRhdG9yLmVsZW1lbnQoKTtcclxuICAgICAgICAgIGZpbmRUYXJnZXROb2RlKGJyb2tlbkVsZW1lbnQpLnNjcm9sbEludG9WaWV3KCk7XHJcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy91dGlsL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQWU7SUFDMUMsTUFBTSxDQUFDO1FBQ0wsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTztRQUNQLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLE9BQU87S0FDZixFQUFFO1FBQ0QsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLGNBQWM7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZTtJQUM1QyxNQUFNLENBQUM7UUFDTCxXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPO1FBQ1AsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsT0FBTztLQUNmLEVBQUU7UUFDRCxTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsY0FBYztLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE1BQU0sQ0FBQztRQUNMLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU87UUFDUCxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxPQUFPO0tBQ2YsRUFBRTtRQUNELFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFFBQVEsRUFBRSxXQUFXO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVUsRUFBRSxNQUFjO0lBQ3BELE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FB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QUMsY0FBYyxFQUFFLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDZjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub3RpZnkgZnJvbSBcImRldmV4dHJlbWUvdWkvbm90aWZ5XCI7XHJcbmltcG9ydCB7RHhWYWxpZGF0aW9uR3JvdXBDb21wb25lbnQsIER4VmFsaWRhdG9yQ29tcG9uZW50fSBmcm9tIFwiZGV2ZXh0cmVtZS1hbmd1bGFyXCI7XHJcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmeV9lcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICBub3RpZnkoe1xyXG4gICAgZGlzcGxheVRpbWU6IDEyMDAwLFxyXG4gICAgbWVzc2FnZSxcclxuICAgIHR5cGU6ICdlcnJvcicsXHJcbiAgICB3aWR0aDogJzMwMHB4J1xyXG4gIH0sIHtcclxuICAgIGRpcmVjdGlvbjogJ3VwLXB1c2gnLFxyXG4gICAgcG9zaXRpb246ICdib3R0b20gcmlnaHQnXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBub3RpZnlfd2FybmluZyhtZXNzYWdlOiBzdHJpbmcpIHtcclxuICBub3RpZnkoe1xyXG4gICAgZGlzcGxheVRpbWU6IDgwMDAsXHJcbiAgICBtZXNzYWdlLFxyXG4gICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgd2lkdGg6ICczMDBweCdcclxuICB9LCB7XHJcbiAgICBkaXJlY3Rpb246ICd1cC1wdXNoJyxcclxuICAgIHBvc2l0aW9uOiAnYm90dG9tIHJpZ2h0J1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbm90aWZ5X3N1Y2Nlc3MobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgbm90aWZ5KHtcclxuICAgIGRpc3BsYXlUaW1lOiA0MDAwLFxyXG4gICAgbWVzc2FnZSxcclxuICAgIHR5cGU6ICdzdWNjZXNzJyxcclxuICAgIHdpZHRoOiAnMzAwcHgnXHJcbiAgfSwge1xyXG4gICAgZGlyZWN0aW9uOiAnZG93bi1wdXNoJyxcclxuICAgIHBvc2l0aW9uOiAndG9wIHJpZ2h0J1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0X2RhdGUoZGF0ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBmb3JtYXREYXRlKGRhdGUsICd5eXl5L01NL2RkJywgbG9jYWxlLCAnR01UKzgnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdF9kYXRldGltZShkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGZvcm1hdERhdGUoZGF0ZSwgJ3l5eXkvTU0vZGQgSEg6bW06c3MnLCBsb2NhbGUsICdHTVQrOCcpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmlsZV90eXBlX2ljb24obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCB0eXBlID0gbmFtZS5zdWJzdHJpbmcobmFtZS5sYXN0SW5kZXhPZignLicpICsgMSkudG9Mb2NhbGVMb3dlckNhc2UoKTtcclxuICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIGNhc2UgJ2RvYyc6XHJcbiAgICBjYXNlICdkb2N4JzpcclxuICAgICAgcmV0dXJuICd3b3JkJztcclxuICAgIGNhc2UgJ3hscyc6XHJcbiAgICBjYXNlICd4bHN4JzpcclxuICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgIHJldHVybiAnZXhjZWwnO1xyXG4gICAgY2FzZSAncHB0JzpcclxuICAgIGNhc2UgJ3BwdHgnOlxyXG4gICAgICByZXR1cm4gJ3BwdCc7XHJcbiAgICBjYXNlICdwZGYnOlxyXG4gICAgICByZXR1cm4gJ3BkZic7XHJcbiAgICBjYXNlICd0eHQnOlxyXG4gICAgY2FzZSAneG1sJzpcclxuICAgIGNhc2UgJ2pzb24nOlxyXG4gICAgY2FzZSAnanMnOlxyXG4gICAgICByZXR1cm4gJ3RleHQnO1xyXG4gICAgY2FzZSAncG5nJzpcclxuICAgIGNhc2UgJ2pwZyc6XHJcbiAgICBjYXNlICdqcGVnJzpcclxuICAgIGNhc2UgJ2dpZic6XHJcbiAgICBjYXNlICdibXAnOlxyXG4gICAgICByZXR1cm4gJ2ltYWdlJztcclxuICAgIGNhc2UgJ3ppcCc6XHJcbiAgICBjYXNlICdyYXInOlxyXG4gICAgY2FzZSAnN3onOlxyXG4gICAgY2FzZSAnamFyJzpcclxuICAgICAgcmV0dXJuICd6aXAnO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuICd1bmtub3duJztcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3J0X3ByZXZpZXdfZXh0KCk6IHN0cmluZ1tdIHtcclxuICByZXR1cm4gWydwZGYnLCAncG5nJywgJ2pwZycsICdqcGVnJywgJ2dpZicsICdibXAnLCAnZG9jJywgJ2RvY3gnLCAndHh0JywgJ3htbCcsICdqc29uJywgJ2pzJywgJ3hscycsICd4bHN4JywgJ2NzdicsICdwcHQnLCAncHB0eCddO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0X2ZpbGVfc2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGxhYmVscyA9IFsnYicsICdLYicsICdNYicsICdHYiddO1xyXG4gIGNvbnN0IGNvdW50ID0gbGFiZWxzLmxlbmd0aCAtIDE7XHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChpIDwgY291bnQgJiYgc2l6ZSA+PSAxMDI0KSB7XHJcbiAgICBzaXplIC89IDEwMjQ7XHJcbiAgICBpKys7XHJcbiAgfVxyXG4gIHJldHVybiBNYXRoLnJvdW5kKHNpemUgKiAxMDApIC8gMTAwICsgXCIgXCIgKyBsYWJlbHNbaV07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZF9maWxlKGJsb2I6IEJsb2IsIGZpbGVuYW1lOiBzdHJpbmcsIGNhbGxiYWNrPzogRnVuY3Rpb24pIHtcclxuICBjb25zdCB1cmwgPSB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6bm9uZScpO1xyXG4gIGEuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuICBhLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBkZWNvZGVVUklDb21wb25lbnQoZmlsZW5hbWUpKTtcclxuICBhLmNsaWNrKCk7XHJcbiAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgY2FsbGJhY2soKTtcclxuICAgIH1cclxuICAgIGEucmVtb3ZlKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxpZGF0b3I6IER4VmFsaWRhdG9yQ29tcG9uZW50KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSB2YWxpZGF0b3IuaW5zdGFuY2UudmFsaWRhdGUoKTtcclxuICAgIGlmICghdmFsaWRhdGVSZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0ZVJlc3VsdC5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xyXG4gICAgICB2YWxpZGF0ZVJlc3VsdC5jb21wbGV0ZT8udGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVfZ3JvdXAodmFsaWRhdGlvbkdyb3VwOiBEeFZhbGlkYXRpb25Hcm91cENvbXBvbmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gIGNvbnN0IHRvcCA9ICh2YWxpZGF0aW9uR3JvdXAgYXMgYW55KS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgbGV0IHNvdXJjZU5vZGU7XHJcbiAgY29uc3QgdGFyZ2V0Q2xhc3NOYW1lID0gJ2R4LWZpZWxkJztcclxuICBjb25zdCBmaW5kVGFyZ2V0Tm9kZSA9IChub2RlOiBhbnkpID0+IHtcclxuICAgIHNvdXJjZU5vZGUgPSBub2RlO1xyXG4gICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKHRhcmdldENsYXNzTmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xyXG4gICAgICAgIGlmIChub2RlID09PSB0b3ApIHtcclxuICAgICAgICAgIHJldHVybiBzb3VyY2VOb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSB2YWxpZGF0aW9uR3JvdXAuaW5zdGFuY2UudmFsaWRhdGUoKTtcclxuICAgIGlmICghdmFsaWRhdGVSZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICBjb25zdCBicm9rZW5FbGVtZW50ID0gKHZhbGlkYXRlUmVzdWx0LmJyb2tlblJ1bGVzPy5bMF0gYXMgYW55KS52YWxpZGF0b3IuZWxlbWVudCgpO1xyXG4gICAgICBmaW5kVGFyZ2V0Tm9kZShicm9rZW5FbGVtZW50KS5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0ZVJlc3VsdC5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xyXG4gICAgICB2YWxpZGF0ZVJlc3VsdC5jb21wbGV0ZT8udGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGJyb2tlbkVsZW1lbnQgPSAocmVzdWx0LmJyb2tlblJ1bGVzPy5bMF0gYXMgYW55KS52YWxpZGF0b3IuZWxlbWVudCgpO1xyXG4gICAgICAgICAgZmluZFRhcmdldE5vZGUoYnJva2VuRWxlbWVudCkuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbiJdfQ==
@@ -2470,27 +2470,28 @@ function format_datetime(date, locale) {
2470
2470
  function file_type_icon(name) {
2471
2471
  const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
2472
2472
  switch (type) {
2473
- case 'xls':
2474
- case 'xlsx':
2475
- return 'excel';
2476
2473
  case 'doc':
2477
2474
  case 'docx':
2478
2475
  return 'word';
2476
+ case 'xls':
2477
+ case 'xlsx':
2478
+ case 'csv':
2479
+ return 'excel';
2479
2480
  case 'ppt':
2480
2481
  case 'pptx':
2481
2482
  return 'ppt';
2482
2483
  case 'pdf':
2483
2484
  return 'pdf';
2484
2485
  case 'txt':
2485
- case 'csv':
2486
2486
  case 'xml':
2487
2487
  case 'json':
2488
2488
  case 'js':
2489
2489
  return 'text';
2490
+ case 'png':
2490
2491
  case 'jpg':
2491
2492
  case 'jpeg':
2492
- case 'png':
2493
2493
  case 'gif':
2494
+ case 'bmp':
2494
2495
  return 'image';
2495
2496
  case 'zip':
2496
2497
  case 'rar':
@@ -2501,6 +2502,9 @@ function file_type_icon(name) {
2501
2502
  return 'unknown';
2502
2503
  }
2503
2504
  }
2505
+ function support_preview_ext() {
2506
+ return ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp', 'doc', 'docx', 'txt', 'xml', 'json', 'js', 'xls', 'xlsx', 'csv', 'ppt', 'pptx'];
2507
+ }
2504
2508
  function format_file_size(size) {
2505
2509
  const labels = ['b', 'Kb', 'Mb', 'Gb'];
2506
2510
  const count = labels.length - 1;
@@ -2601,12 +2605,18 @@ class FileCellTemplateComponent {
2601
2605
  constructor(service, domSanitizer) {
2602
2606
  this.service = service;
2603
2607
  this.domSanitizer = domSanitizer;
2608
+ this.supportPreview = false;
2604
2609
  this.loading = false;
2605
2610
  }
2606
2611
  ngOnInit() {
2607
2612
  this.service.getOne('S', 'Attachment', this.oid).subscribe(response => {
2608
2613
  this.file = response.data;
2609
2614
  this.filename = this.file.fileName;
2615
+ let extName = '';
2616
+ if (this.filename.indexOf('.') > -1) {
2617
+ extName = this.filename.substring(this.filename.lastIndexOf('.') + 1).toLowerCase();
2618
+ }
2619
+ this.supportPreview = support_preview_ext().indexOf(extName) > -1;
2610
2620
  this.content = this.domSanitizer.bypassSecurityTrustHtml(`
2611
2621
  <table>
2612
2622
  <tr>
@@ -2631,7 +2641,7 @@ class FileCellTemplateComponent {
2631
2641
  });
2632
2642
  });
2633
2643
  }
2634
- preview() {
2644
+ preview(tooltip) {
2635
2645
  if (!window.coast.tabManager) {
2636
2646
  notify_warning('此操作仅能在coast-web项目中执行,type:preview');
2637
2647
  return;
@@ -2657,6 +2667,7 @@ class FileCellTemplateComponent {
2657
2667
  }
2658
2668
  }
2659
2669
  });
2670
+ tooltip.instance.hide();
2660
2671
  }
2661
2672
  download() {
2662
2673
  this.loading = true;
@@ -2668,10 +2679,10 @@ class FileCellTemplateComponent {
2668
2679
  }
2669
2680
  }
2670
2681
  FileCellTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, deps: [{ token: DataGridService }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2671
- FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { table: "table", oid: "oid" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\n {{ filename }}\n <dx-tooltip [target]=\"fileBtn.instance.element()\"\n [position]=\"'top'\"\n [visible]=\"false\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\n (onClick)=\"preview()\" [disabled]=\"loading\"></dx-button>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\n </div>\n </dx-tooltip>\n</dx-button><br/>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
2682
+ FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { table: "table", oid: "oid" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
2672
2683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, decorators: [{
2673
2684
  type: Component,
2674
- args: [{ selector: 'rs-file-cell-template', template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\n {{ filename }}\n <dx-tooltip [target]=\"fileBtn.instance.element()\"\n [position]=\"'top'\"\n [visible]=\"false\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\n (onClick)=\"preview()\" [disabled]=\"loading\"></dx-button>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\n </div>\n </dx-tooltip>\n</dx-button><br/>\n" }]
2685
+ args: [{ selector: 'rs-file-cell-template', template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n" }]
2675
2686
  }], ctorParameters: function () { return [{ type: DataGridService }, { type: i2$2.DomSanitizer }]; }, propDecorators: { table: [{
2676
2687
  type: Input
2677
2688
  }], oid: [{
@@ -3629,10 +3640,10 @@ class PdfViewerComponent {
3629
3640
  }
3630
3641
  }
3631
3642
  PdfViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
3632
- PdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PdfViewerComponent, isStandalone: true, selector: "rs-pdf-viewer", inputs: { src: "src" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "viewer", first: true, predicate: PdfJsViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ng2-pdfjs-viewer\n [openFile]=\"false\"\n [download]=\"false\"\n [viewBookmark]=\"false\"\n>\n</ng2-pdfjs-viewer>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PdfJsViewerModule }, { kind: "component", type: i2$3.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }] });
3643
+ PdfViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PdfViewerComponent, isStandalone: true, selector: "rs-pdf-viewer", inputs: { src: "src" }, outputs: { loaded: "loaded" }, viewQueries: [{ propertyName: "viewer", first: true, predicate: PdfJsViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ng2-pdfjs-viewer\r\n [openFile]=\"false\"\r\n [download]=\"false\"\r\n [viewBookmark]=\"false\"\r\n>\r\n</ng2-pdfjs-viewer>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PdfJsViewerModule }, { kind: "component", type: i2$3.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }] });
3633
3644
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PdfViewerComponent, decorators: [{
3634
3645
  type: Component,
3635
- args: [{ selector: 'rs-pdf-viewer', standalone: true, imports: [CommonModule, PdfJsViewerModule], template: "<ng2-pdfjs-viewer\n [openFile]=\"false\"\n [download]=\"false\"\n [viewBookmark]=\"false\"\n>\n</ng2-pdfjs-viewer>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"] }]
3646
+ args: [{ selector: 'rs-pdf-viewer', standalone: true, imports: [CommonModule, PdfJsViewerModule], template: "<ng2-pdfjs-viewer\r\n [openFile]=\"false\"\r\n [download]=\"false\"\r\n [viewBookmark]=\"false\"\r\n>\r\n</ng2-pdfjs-viewer>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host ng2-pdfjs-viewer{flex:1}\n"] }]
3636
3647
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; }, propDecorators: { src: [{
3637
3648
  type: Input
3638
3649
  }], loaded: [{
@@ -3809,5 +3820,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3809
3820
  * Generated bundle index. Do not edit.
3810
3821
  */
3811
3822
 
3812
- export { BoxContainerComponent, BoxContainerModule, CamundaBpmnEditorComponent, CamundaBpmnEditorModule, ChangeFilter, CodeEditorComponent, CodeEditorModule, DataDetailComponent, DataDetailModule, DataGridComponent, DataGridFactory, DataGridModule, DataGridService, DrawerComponent, DrawerModule, DrawerService, DynamicParamsComponent, DynamicParamsModule, FormComponent, FormModule, FormService, IconSelectorComponent, IconSelectorModule, InstanceLinkTemplateDirective, ItemConfigComponent, ItemStyleComponent, MasterDetailTemplateDirective, ModalComponent, ModalModule, ModalService, PdfViewerComponent, PluginManager, RowButtonsTemplateDirective, TooltipContentTemplateDirective, WebsocketModule, WebsocketService, download_file, file_type_icon, format_date, format_datetime, format_file_size, notify_error, notify_success, notify_warning, validate, validate_group };
3823
+ export { BoxContainerComponent, BoxContainerModule, CamundaBpmnEditorComponent, CamundaBpmnEditorModule, ChangeFilter, CodeEditorComponent, CodeEditorModule, DataDetailComponent, DataDetailModule, DataGridComponent, DataGridFactory, DataGridModule, DataGridService, DrawerComponent, DrawerModule, DrawerService, DynamicParamsComponent, DynamicParamsModule, FormComponent, FormModule, FormService, IconSelectorComponent, IconSelectorModule, InstanceLinkTemplateDirective, ItemConfigComponent, ItemStyleComponent, MasterDetailTemplateDirective, ModalComponent, ModalModule, ModalService, PdfViewerComponent, PluginManager, RowButtonsTemplateDirective, TooltipContentTemplateDirective, WebsocketModule, WebsocketService, download_file, file_type_icon, format_date, format_datetime, format_file_size, notify_error, notify_success, notify_warning, support_preview_ext, validate, validate_group };
3813
3824
  //# sourceMappingURL=ngx-rs-ant.mjs.map