@dignite-ng/expand.file-explorer 0.0.3 → 0.0.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.
Files changed (137) hide show
  1. package/config/{src/enums/index.ts → enums/index.d.ts} +1 -1
  2. package/config/enums/route-names.d.ts +3 -0
  3. package/config/file-config.module.d.ts +8 -0
  4. package/config/index.d.ts +5 -0
  5. package/config/{src/providers/index.ts → providers/index.d.ts} +1 -1
  6. package/config/providers/route.provider.d.ts +8 -0
  7. package/config/{src/public-api.ts → public-api.d.ts} +3 -3
  8. package/esm2022/config/dignite-ng-expand.file-explorer-config.mjs +5 -0
  9. package/esm2022/config/enums/index.mjs +2 -0
  10. package/esm2022/config/enums/route-names.mjs +2 -0
  11. package/esm2022/config/file-config.module.mjs +19 -0
  12. package/esm2022/config/providers/index.mjs +2 -0
  13. package/esm2022/config/providers/route.provider.mjs +24 -0
  14. package/esm2022/config/public-api.mjs +4 -0
  15. package/esm2022/dignite-ng-expand.file-explorer.mjs +5 -0
  16. package/esm2022/lib/components/dome/file-dome.component.mjs +32 -0
  17. package/esm2022/lib/components/file-edit/file-edit.component.mjs +104 -0
  18. package/esm2022/lib/components/file-modal/file-modal.component.mjs +272 -0
  19. package/esm2022/lib/components/file-modal-tree/file-modal-tree.component.mjs +195 -0
  20. package/esm2022/lib/components/file-picker/file-picker.component.mjs +65 -0
  21. package/esm2022/lib/components/index.mjs +6 -0
  22. package/esm2022/lib/file-explorer-routing.module.mjs +25 -0
  23. package/esm2022/lib/file-explorer.module.mjs +88 -0
  24. package/esm2022/lib/previews/file-preview.component.mjs +100 -0
  25. package/esm2022/lib/previews/index.mjs +3 -0
  26. package/esm2022/lib/previews/models.mjs +92 -0
  27. package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +48 -0
  28. package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +3 -0
  29. package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +2 -0
  30. package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +60 -0
  31. package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +3 -0
  32. package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +2 -0
  33. package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +4 -0
  34. package/esm2022/lib/proxy/dignite/index.mjs +3 -0
  35. package/esm2022/lib/proxy/index.mjs +5 -0
  36. package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +3 -0
  37. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +2 -0
  38. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +2 -0
  39. package/esm2022/lib/proxy/microsoft/extensions/index.mjs +3 -0
  40. package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +2 -0
  41. package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +2 -0
  42. package/esm2022/lib/proxy/microsoft/index.mjs +5 -0
  43. package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +2 -0
  44. package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +2 -0
  45. package/esm2022/lib/proxy/microsoft/net/http/index.mjs +3 -0
  46. package/esm2022/lib/proxy/microsoft/net/index.mjs +3 -0
  47. package/esm2022/lib/proxy/volo/abp/content/index.mjs +2 -0
  48. package/esm2022/lib/proxy/volo/abp/content/models.mjs +2 -0
  49. package/esm2022/lib/proxy/volo/abp/index.mjs +3 -0
  50. package/esm2022/lib/proxy/volo/index.mjs +3 -0
  51. package/esm2022/lib/services/file-api.service.mjs +66 -0
  52. package/esm2022/lib/services/index.mjs +2 -0
  53. package/esm2022/public-api.mjs +9 -0
  54. package/fesm2022/dignite-ng-expand.file-explorer-config.mjs +47 -0
  55. package/fesm2022/dignite-ng-expand.file-explorer-config.mjs.map +1 -0
  56. package/fesm2022/dignite-ng-expand.file-explorer.mjs +1169 -0
  57. package/fesm2022/dignite-ng-expand.file-explorer.mjs.map +1 -0
  58. package/index.d.ts +5 -0
  59. package/lib/components/dome/file-dome.component.d.ts +19 -0
  60. package/lib/components/file-edit/file-edit.component.d.ts +38 -0
  61. package/lib/components/file-modal/file-modal.component.d.ts +93 -0
  62. package/lib/components/file-modal-tree/file-modal-tree.component.d.ts +66 -0
  63. package/lib/components/file-picker/file-picker.component.d.ts +26 -0
  64. package/lib/components/index.d.ts +5 -0
  65. package/lib/file-explorer-routing.module.d.ts +7 -0
  66. package/lib/file-explorer.module.d.ts +19 -0
  67. package/lib/previews/file-preview.component.d.ts +47 -0
  68. package/lib/previews/index.d.ts +2 -0
  69. package/lib/previews/models.d.ts +5 -0
  70. package/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.d.ts +17 -0
  71. package/{src/lib/proxy/dignite/file-explorer/directories/models.ts → lib/proxy/dignite/file-explorer/directories/models.d.ts} +29 -35
  72. package/lib/proxy/dignite/file-explorer/files/file-descriptor.service.d.ts +20 -0
  73. package/lib/proxy/dignite/file-explorer/files/models.d.ts +50 -0
  74. package/{src/lib/proxy/microsoft/asp-net-core/mvc/models.ts → lib/proxy/microsoft/asp-net-core/mvc/models.d.ts} +10 -12
  75. package/lib/proxy/microsoft/extensions/primitives/models.d.ts +8 -0
  76. package/{src/lib/proxy/microsoft/net/http/headers/models.ts → lib/proxy/microsoft/net/http/headers/models.d.ts} +6 -7
  77. package/lib/proxy/volo/abp/content/models.d.ts +5 -0
  78. package/lib/services/file-api.service.d.ts +14 -0
  79. package/lib/services/index.d.ts +1 -0
  80. package/package.json +21 -2
  81. package/{src/public-api.ts → public-api.d.ts} +1 -5
  82. package/config/ng-package.json +0 -7
  83. package/config/src/enums/route-names.ts +0 -15
  84. package/config/src/file-config.module.ts +0 -12
  85. package/config/src/providers/route.provider.ts +0 -26
  86. package/ng-package.json +0 -7
  87. package/src/lib/components/dome/file-dome.component.html +0 -18
  88. package/src/lib/components/dome/file-dome.component.scss +0 -0
  89. package/src/lib/components/dome/file-dome.component.spec.ts +0 -21
  90. package/src/lib/components/dome/file-dome.component.ts +0 -33
  91. package/src/lib/components/file-edit/file-edit.component.html +0 -29
  92. package/src/lib/components/file-edit/file-edit.component.scss +0 -0
  93. package/src/lib/components/file-edit/file-edit.component.spec.ts +0 -21
  94. package/src/lib/components/file-edit/file-edit.component.ts +0 -98
  95. package/src/lib/components/file-modal/file-modal.component.html +0 -112
  96. package/src/lib/components/file-modal/file-modal.component.scss +0 -56
  97. package/src/lib/components/file-modal/file-modal.component.spec.ts +0 -21
  98. package/src/lib/components/file-modal/file-modal.component.ts +0 -284
  99. package/src/lib/components/file-modal-tree/file-modal-tree.component.html +0 -63
  100. package/src/lib/components/file-modal-tree/file-modal-tree.component.scss +0 -0
  101. package/src/lib/components/file-modal-tree/file-modal-tree.component.spec.ts +0 -21
  102. package/src/lib/components/file-modal-tree/file-modal-tree.component.ts +0 -207
  103. package/src/lib/components/file-picker/file-picker.component.html +0 -28
  104. package/src/lib/components/file-picker/file-picker.component.scss +0 -0
  105. package/src/lib/components/file-picker/file-picker.component.spec.ts +0 -21
  106. package/src/lib/components/file-picker/file-picker.component.ts +0 -58
  107. package/src/lib/components/index.ts +0 -5
  108. package/src/lib/file-explorer-routing.module.ts +0 -18
  109. package/src/lib/file-explorer.module.ts +0 -46
  110. package/src/lib/proxy/README.md +0 -17
  111. package/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts +0 -65
  112. package/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts +0 -86
  113. package/src/lib/proxy/dignite/file-explorer/files/models.ts +0 -58
  114. package/src/lib/proxy/generate-proxy.json +0 -11810
  115. package/src/lib/proxy/microsoft/extensions/primitives/models.ts +0 -9
  116. package/src/lib/proxy/volo/abp/content/models.ts +0 -6
  117. package/src/lib/services/file-api.service.ts +0 -59
  118. package/src/lib/services/index.ts +0 -1
  119. package/tsconfig.lib.json +0 -14
  120. package/tsconfig.lib.prod.json +0 -10
  121. package/tsconfig.spec.json +0 -14
  122. /package/{src/lib/proxy/dignite/file-explorer/directories/index.ts → lib/proxy/dignite/file-explorer/directories/index.d.ts} +0 -0
  123. /package/{src/lib/proxy/dignite/file-explorer/files/index.ts → lib/proxy/dignite/file-explorer/files/index.d.ts} +0 -0
  124. /package/{src/lib/proxy/dignite/file-explorer/index.ts → lib/proxy/dignite/file-explorer/index.d.ts} +0 -0
  125. /package/{src/lib/proxy/dignite/index.ts → lib/proxy/dignite/index.d.ts} +0 -0
  126. /package/{src/lib/proxy/index.ts → lib/proxy/index.d.ts} +0 -0
  127. /package/{src/lib/proxy/microsoft/asp-net-core/index.ts → lib/proxy/microsoft/asp-net-core/index.d.ts} +0 -0
  128. /package/{src/lib/proxy/microsoft/asp-net-core/mvc/index.ts → lib/proxy/microsoft/asp-net-core/mvc/index.d.ts} +0 -0
  129. /package/{src/lib/proxy/microsoft/extensions/index.ts → lib/proxy/microsoft/extensions/index.d.ts} +0 -0
  130. /package/{src/lib/proxy/microsoft/extensions/primitives/index.ts → lib/proxy/microsoft/extensions/primitives/index.d.ts} +0 -0
  131. /package/{src/lib/proxy/microsoft/index.ts → lib/proxy/microsoft/index.d.ts} +0 -0
  132. /package/{src/lib/proxy/microsoft/net/http/headers/index.ts → lib/proxy/microsoft/net/http/headers/index.d.ts} +0 -0
  133. /package/{src/lib/proxy/microsoft/net/http/index.ts → lib/proxy/microsoft/net/http/index.d.ts} +0 -0
  134. /package/{src/lib/proxy/microsoft/net/index.ts → lib/proxy/microsoft/net/index.d.ts} +0 -0
  135. /package/{src/lib/proxy/volo/abp/content/index.ts → lib/proxy/volo/abp/content/index.d.ts} +0 -0
  136. /package/{src/lib/proxy/volo/abp/index.ts → lib/proxy/volo/abp/index.d.ts} +0 -0
  137. /package/{src/lib/proxy/volo/index.ts → lib/proxy/volo/index.d.ts} +0 -0
@@ -0,0 +1,195 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { of } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../proxy/dignite/file-explorer/directories";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@abp/ng.theme.shared";
8
+ import * as i4 from "../../services/file-api.service";
9
+ import * as i5 from "@abp/ng.core";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@ngx-validate/core";
12
+ import * as i8 from "@ng-bootstrap/ng-bootstrap";
13
+ import * as i9 from "ng-zorro-antd/tree";
14
+ var that;
15
+ class FileModalTreeComponent {
16
+ _DescriptorService;
17
+ fb;
18
+ toaster;
19
+ _FileApiService;
20
+ _LocalizationService;
21
+ constructor(_DescriptorService, fb, toaster, _FileApiService, _LocalizationService) {
22
+ this._DescriptorService = _DescriptorService;
23
+ this.fb = fb;
24
+ this.toaster = toaster;
25
+ this._FileApiService = _FileApiService;
26
+ this._LocalizationService = _LocalizationService;
27
+ that = this;
28
+ }
29
+ /**文件分组列表 */
30
+ fileGroupList = [];
31
+ /**选择的tree节点 */
32
+ _theSelectedTreeNode = '';
33
+ set theSelectedTreeNode(v) {
34
+ this._theSelectedTreeNode = v;
35
+ if (v.length > 0) {
36
+ this.loadData();
37
+ }
38
+ }
39
+ /**正在编辑的节点 */
40
+ theNodeBeingEdited = '';
41
+ /**已展开的节点 */
42
+ anExpandedNode = [];
43
+ /**图片容器 */
44
+ _fileContainerName;
45
+ /**tree节点选择回调 */
46
+ nodeClick = new EventEmitter();
47
+ set fileContainerName(v) {
48
+ if (v) {
49
+ this._fileContainerName = v;
50
+ this.loadData();
51
+ }
52
+ }
53
+ handleClick = (event) => event.stopPropagation();
54
+ loadData() {
55
+ if (this._fileContainerName) {
56
+ this.getFileGroupList();
57
+ }
58
+ }
59
+ /**获取文件分组 */
60
+ getFileGroupList() {
61
+ this._DescriptorService.getList({
62
+ containerName: this._fileContainerName,
63
+ }).subscribe(async (res) => {
64
+ this.fileGroupList = await this.setTheValueOfTheNodeRecursively(res.items);
65
+ });
66
+ }
67
+ /**递归设置节点的值 */
68
+ setTheValueOfTheNodeRecursively(array) {
69
+ return new Promise((reslove, rejects) => {
70
+ array.forEach((el) => {
71
+ el.title = el.name;
72
+ el.key = el.id;
73
+ el.expanded = this.anExpandedNode.includes(el.key);
74
+ if (el.children.length > 0) {
75
+ this.setTheValueOfTheNodeRecursively(el.children);
76
+ }
77
+ });
78
+ reslove(array);
79
+ });
80
+ }
81
+ /**tree-拖拽 */
82
+ nzEvent(event) {
83
+ }
84
+ /**tree-拖拽 -验证*/
85
+ beforeDrop(arg) {
86
+ if (arg.pos === 0 || arg.pos === 1) {
87
+ that._DescriptorService.move(arg.dragNode.key, {
88
+ "parentId": arg.pos === 1 ? (arg.node.parentNode?.key || '') : arg.node.key,
89
+ "order": arg.pos === 1 ? arg.node.origin.order + 1 : arg.node.origin.children.length + 1
90
+ }).subscribe(res => {
91
+ // that.toaster.success("拖拽完成");
92
+ that.getFileGroupList();
93
+ });
94
+ return of(true);
95
+ }
96
+ else {
97
+ return of(false);
98
+ }
99
+ }
100
+ /**tree--选择节点 */
101
+ activeNode(event) {
102
+ this._theSelectedTreeNode = event.node;
103
+ this.nodeClick.emit(event.node);
104
+ }
105
+ /**判断节点是否选中 */
106
+ isNodeSelected = (el) => el.key === this._theSelectedTreeNode?.key;
107
+ /**点击展开树节点图标触发 */
108
+ nzExpandChange(event) {
109
+ let anExpandedNode = this.anExpandedNode;
110
+ if (anExpandedNode.includes(event.node.key)) {
111
+ anExpandedNode = anExpandedNode.filter(key => key !== event.node.key);
112
+ }
113
+ else {
114
+ anExpandedNode.push(event.node.key);
115
+ }
116
+ this.anExpandedNode = anExpandedNode;
117
+ }
118
+ /**增加分组 */
119
+ addDescriptorBtn(items = '', edit = false) {
120
+ this.ModalDescriptorOpen = true;
121
+ this.ModalDescriptorForm = this.fb.group({
122
+ containerName: [this._fileContainerName || '', Validators.required],
123
+ name: ['', Validators.required],
124
+ parentId: [items?.key || '', Validators.required],
125
+ });
126
+ /**编辑 */
127
+ if (edit) {
128
+ this.theNodeBeingEdited = items.origin;
129
+ this.ModalDescriptorForm.patchValue({
130
+ name: items.origin.name
131
+ });
132
+ }
133
+ }
134
+ /**删除分组 */
135
+ deleteDescriptorBtn(node) {
136
+ this._DescriptorService.delete(node.key).subscribe(res => {
137
+ // this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
138
+ this.ModalDescriptorOpen = false;
139
+ if (this.theNodeBeingEdited.key == node.key)
140
+ this.theNodeBeingEdited = '';
141
+ this.getFileGroupList();
142
+ });
143
+ }
144
+ /**分组 */
145
+ /**模态框-状态-是否打开 */
146
+ ModalDescriptorOpen = false;
147
+ /**模态框-descriptor-繁忙状态-用于确定模态的繁忙状态是否为真 */
148
+ ModalDescriptorBusy = false;
149
+ /**模态框-descriptor-表单 */
150
+ ModalDescriptorForm;
151
+ /**模态框-descriptor-表单--控件模板-动态赋值表单控件 */
152
+ ModalFormDescriptorSubmit;
153
+ /**模态框-descriptor-状态改变回调 */
154
+ ModalDescriptorVisibleChange(event) {
155
+ if (!event) {
156
+ this.ModalDescriptorForm = undefined;
157
+ this.theNodeBeingEdited = '';
158
+ return;
159
+ }
160
+ }
161
+ /**f分组模态框保存 */
162
+ createOrEditSave() {
163
+ let input = this.ModalDescriptorForm.value;
164
+ if (this.theNodeBeingEdited) {
165
+ this._DescriptorService.update(this.theNodeBeingEdited.key, input).subscribe(res => {
166
+ // this.toaster.success("保存成功");
167
+ this.ModalDescriptorOpen = false;
168
+ this.getFileGroupList();
169
+ });
170
+ return;
171
+ }
172
+ this._DescriptorService.create(input).subscribe(res => {
173
+ // this.toaster.success("保存成功");
174
+ this.ModalDescriptorOpen = false;
175
+ this.getFileGroupList();
176
+ });
177
+ }
178
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileModalTreeComponent, deps: [{ token: i1.FileDescriptorService }, { token: i2.FormBuilder }, { token: i3.ToasterService }, { token: i4.FileApiService }, { token: i5.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
179
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileModalTreeComponent, selector: "fe-file-modal-tree", inputs: { theSelectedTreeNode: "theSelectedTreeNode", fileContainerName: "fileContainerName" }, outputs: { nodeClick: "nodeClick" }, viewQueries: [{ propertyName: "ModalFormDescriptorSubmit", first: true, predicate: ["ModalFormDescriptorSubmit"], descendants: true }], ngImport: i0, template: "<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 (ngSubmit)=\"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>", styles: [""], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i5.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i8.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i8.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i8.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i8.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i9.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckBoxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
180
+ }
181
+ export { FileModalTreeComponent };
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileModalTreeComponent, decorators: [{
183
+ type: Component,
184
+ args: [{ selector: 'fe-file-modal-tree', template: "<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 (ngSubmit)=\"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>" }]
185
+ }], ctorParameters: function () { return [{ type: i1.FileDescriptorService }, { type: i2.FormBuilder }, { type: i3.ToasterService }, { type: i4.FileApiService }, { type: i5.LocalizationService }]; }, propDecorators: { theSelectedTreeNode: [{
186
+ type: Input
187
+ }], nodeClick: [{
188
+ type: Output
189
+ }], fileContainerName: [{
190
+ type: Input
191
+ }], ModalFormDescriptorSubmit: [{
192
+ type: ViewChild,
193
+ args: ['ModalFormDescriptorSubmit', { static: false }]
194
+ }] } });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tb2RhbC10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbW9kYWwtdHJlZS9maWxlLW1vZGFsLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tb2RhbC10cmVlL2ZpbGUtbW9kYWwtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtwRSxPQUFPLEVBQUcsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQUczQixJQUFJLElBQUksQ0FBQztBQUNULE1BS2Esc0JBQXNCO0lBRXZCO0lBQ0E7SUFDQTtJQUNEO0lBQ0E7SUFMVCxZQUNVLGtCQUEyRCxFQUMzRCxFQUFlLEVBQ2YsT0FBdUIsRUFDeEIsZUFBK0IsRUFDL0Isb0JBQXlDO1FBSnhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBeUM7UUFDM0QsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBRWhELElBQUksR0FBRyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsWUFBWTtJQUNaLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFFMUIsZUFBZTtJQUNmLG9CQUFvQixHQUFRLEVBQUUsQ0FBQztJQUMvQixJQUNXLG1CQUFtQixDQUFDLENB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QVM7K0JBQ0Usb0JBQW9CO2tPQXFCbkIsbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWtCSSxTQUFTO3NCQUFsQixNQUFNO2dCQUlJLGlCQUFpQjtzQkFEM0IsS0FBSztnQkEwSHFELHlCQUF5QjtzQkFBbkYsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnpGb3JtYXRFbWl0RXZlbnQgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUnO1xuaW1wb3J0ICogYXMgRGVzY3JpcHRvclNlcnZpY2UgZnJvbSAnLi4vLi4vcHJveHkvZGlnbml0ZS9maWxlLWV4cGxvcmVyL2RpcmVjdG9yaWVzJztcbmltcG9ydCB7ICBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IE56Rm9ybWF0QmVmb3JlRHJvcEV2ZW50IH0gZnJvbSAnbmctem9ycm8tYW50ZC90cmVlJztcbmltcG9ydCB7ICBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWxlLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xudmFyIHRoYXQ7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLW1vZGFsLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1tb2RhbC10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1tb2RhbC10cmVlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX0Rlc2NyaXB0b3JTZXJ2aWNlOiBEZXNjcmlwdG9yU2VydmljZS5GaWxlRGVzY3JpcHRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcbiAgICBwdWJsaWMgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgICBwdWJsaWMgX0xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXG4gICkge1xuICAgIHRoYXQgPSB0aGlzXG4gIH1cblxuICAvKirmlofku7bliIbnu4TliJfooaggKi9cbiAgZmlsZUdyb3VwTGlzdDogYW55W10gPSBbXTtcblxuICAvKirpgInmi6nnmoR0cmVl6IqC54K5ICovXG4gIF90aGVTZWxlY3RlZFRyZWVOb2RlOiBhbnkgPSAnJztcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0aGVTZWxlY3RlZFRyZWVOb2RlKHY6IGFueSkge1xuICAgIHRoaXMuX3RoZVNlbGVjdGVkVHJlZU5vZGUgPSB2O1xuICAgIGlmICh2Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZERhdGEoKVxuICAgIH1cbiAgfVxuXG4gIC8qKuato+WcqOe8lui+keeahOiKgueCuSAqL1xuICB0aGVOb2RlQmVpbmdFZGl0ZWQ6IGFueSA9ICcnO1xuXG4gIC8qKuW3suWxleW8gOeahOiKgueCuSAqL1xuICBhbkV4cGFuZGVkTm9kZTogYW55W10gPSBbXTtcblxuICAvKirlm77niYflrrnlmaggKi9cbiAgX2ZpbGVDb250YWluZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqdHJlZeiKgueCuemAieaLqeWbnuiwgyAqL1xuICBAT3V0cHV0KCkgbm9kZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWxlQ29udGFpbmVyTmFtZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fZmlsZUNvbnRhaW5lck5hbWUgPSB2O1xuICAgICAgdGhpcy5sb2FkRGF0YSgpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gIGxvYWREYXRhKCkge1xuICAgIGlmICh0aGlzLl9maWxlQ29udGFpbmVyTmFtZSkge1xuICAgICAgdGhpcy5nZXRGaWxlR3JvdXBMaXN0KClcbiAgICB9XG4gIH1cblxuXG4gIC8qKuiOt+WPluaWh+S7tuWIhue7hCAqL1xuICBnZXRGaWxlR3JvdXBMaXN0KCkge1xuICAgIHRoaXMuX0Rlc2NyaXB0b3JTZXJ2aWNlLmdldExpc3Qoe1xuICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5fZmlsZUNvbnRhaW5lck5hbWUsXG4gICAgfSkuc3Vic2NyaWJlKGFzeW5jIChyZXMpID0+IHtcbiAgICAgIHRoaXMuZmlsZUdyb3VwTGlzdCA9IGF3YWl0IHRoaXMuc2V0VGhlVmFsdWVPZlRoZU5vZGVSZWN1cnNpdmVseShyZXMuaXRlbXMpXG4gICAgfSlcbiAgfVxuICBcbiAgLyoq6YCS5b2S6K6+572u6IqC54K555qE5YC8ICovXG4gIHNldFRoZVZhbHVlT2ZUaGVOb2RlUmVjdXJzaXZlbHkoYXJyYXk6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc2xvdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGFycmF5LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGVsLnRpdGxlID0gZWwubmFtZVxuICAgICAgICBlbC5rZXkgPSBlbC5pZFxuICAgICAgICBlbC5leHBhbmRlZCA9IHRoaXMuYW5FeHBhbmRlZE5vZGUuaW5jbHVkZXMoZWwua2V5KVxuICAgICAgICBpZiAoZWwuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuc2V0VGhlVmFsdWVPZlRoZU5vZGVSZWN1cnNpdmVseShlbC5jaGlsZHJlbilcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJlc2xvdmUoYXJyYXkpXG4gICAgfSlcbiAgfVxuXG4gIC8qKnRyZWUt5ouW5ou9ICovXG4gIG56RXZlbnQoZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KTogdm9pZCB7XG4gIH1cblxuICAvKip0cmVlLeaLluaLvSAt6aqM6K+BKi9cbiAgYmVmb3JlRHJvcChhcmc6IE56Rm9ybWF0QmVmb3JlRHJvcEV2ZW50KSB7XG4gICAgaWYgKGFyZy5wb3MgPT09IDAgfHwgYXJnLnBvcyA9PT0gMSkge1xuICAgICAgdGhhdC5fRGVzY3JpcHRvclNlcnZpY2UubW92ZShhcmcuZHJhZ05vZGUua2V5LCB7XG4gICAgICAgIFwicGFyZW50SWRcIjogYXJnLnBvcyA9PT0gMSA/IChhcmcubm9kZS5wYXJlbnROb2RlPy5rZXl8fCcnKSA6IGFyZy5ub2RlLmtleSxcbiAgICAgICAgXCJvcmRlclwiOiBhcmcucG9zID09PSAxID8gYXJnLm5vZGUub3JpZ2luLm9yZGVyICsgMSA6IGFyZy5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggKyAxXG4gICAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgLy8gdGhhdC50b2FzdGVyLnN1Y2Nlc3MoXCLmi5bmi73lrozmiJBcIik7XG4gICAgICAgIHRoYXQuZ2V0RmlsZUdyb3VwTGlzdCgpXG4gICAgICB9KVxuICAgICAgcmV0dXJuIG9mKHRydWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqdHJlZS0t6YCJ5oup6IqC54K5ICovXG4gIGFjdGl2ZU5vZGUoZXZlbnQpIHtcbiAgICB0aGlzLl90aGVTZWxlY3RlZFRyZWVOb2RlID0gZXZlbnQubm9kZVxuICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoZXZlbnQubm9kZSlcbiAgfVxuXG4gIC8qKuWIpOaWreiKgueCueaYr+WQpumAieS4rSAqL1xuICBpc05vZGVTZWxlY3RlZCA9IChlbCkgPT4gZWwua2V5ID09PSB0aGlzLl90aGVTZWxlY3RlZFRyZWVOb2RlPy5rZXlcblxuICAvKirngrnlh7vlsZXlvIDmoJHoioLngrnlm77moIfop6blj5EgKi9cbiAgbnpFeHBhbmRDaGFuZ2UoZXZlbnQpIHtcbiAgICBsZXQgYW5FeHBhbmRlZE5vZGUgPSB0aGlzLmFuRXhwYW5kZWROb2RlXG4gICAgaWYgKGFuRXhwYW5kZWROb2RlLmluY2x1ZGVzKGV2ZW50Lm5vZGUua2V5KSkge1xuICAgICAgYW5FeHBhbmRlZE5vZGUgPSBhbkV4cGFuZGVkTm9kZS5maWx0ZXIoa2V5ID0+IGtleSAhPT0gZXZlbnQubm9kZS5rZXkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFuRXhwYW5kZWROb2RlLnB1c2goZXZlbnQubm9kZS5rZXkpXG4gICAgfVxuICAgIHRoaXMuYW5FeHBhbmRlZE5vZGUgPSBhbkV4cGFuZGVkTm9kZVxuICB9XG5cblxuICAvKirlop7liqDliIbnu4QgKi9cbiAgYWRkRGVzY3JpcHRvckJ0bihpdGVtczogYW55ID0gJycsIGVkaXQgPSBmYWxzZSkge1xuICAgIHRoaXMuTW9kYWxEZXNjcmlwdG9yT3BlbiA9IHRydWVcbiAgICB0aGlzLk1vZGFsRGVzY3JpcHRvckZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGNvbnRhaW5lck5hbWU6IFt0aGlzLl9maWxlQ29udGFpbmVyTmFtZSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcGFyZW50SWQ6IFtpdGVtcz8ua2V5IHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KVxuICAgIC8qKue8lui+kSAqL1xuICAgIGlmIChlZGl0KSB7XG4gICAgICB0aGlzLnRoZU5vZGVCZWluZ0VkaXRlZCA9IGl0ZW1zLm9yaWdpblxuICAgICAgdGhpcy5Nb2RhbERlc2NyaXB0b3JGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBuYW1lOiBpdGVtcy5vcmlnaW4ubmFtZVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKirliKDpmaTliIbnu4QgKi9cbiAgZGVsZXRlRGVzY3JpcHRvckJ0bihub2RlKSB7XG4gICAgdGhpcy5fRGVzY3JpcHRvclNlcnZpY2UuZGVsZXRlKG5vZGUua2V5KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIC8vIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlN1Y2Nlc3NmdWxseURlbGV0ZWRgKSk7XG4gICAgICB0aGlzLk1vZGFsRGVzY3JpcHRvck9wZW4gPSBmYWxzZVxuICAgICAgaWYgKHRoaXMudGhlTm9kZUJlaW5nRWRpdGVkLmtleSA9PSBub2RlLmtleSkgdGhpcy50aGVOb2RlQmVpbmdFZGl0ZWQgPSAnJ1xuICAgICAgdGhpcy5nZXRGaWxlR3JvdXBMaXN0KClcbiAgICB9KVxuICB9XG5cbiAgXG5cbiAgLyoq5YiG57uEICovXG4gIC8qKuaooeaAgeahhi3nirbmgIEt5piv5ZCm5omT5byAICovXG4gIE1vZGFsRGVzY3JpcHRvck9wZW46IGJvb2xlYW4gPSBmYWxzZVxuXG4gIC8qKuaooeaAgeahhi1kZXNjcmlwdG9yLee5geW/meeKtuaAgS3nlKjkuo7noa7lrprmqKHmgIHnmoTnuYHlv5nnirbmgIHmmK/lkKbkuLrnnJ8gKi9cbiAgTW9kYWxEZXNjcmlwdG9yQnVzeTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgLyoq5qih5oCB5qGGLWRlc2NyaXB0b3It6KGo5Y2VICovXG4gIE1vZGFsRGVzY3JpcHRvckZvcm06IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgXG4gIC8qKuaooeaAgeahhi1kZXNjcmlwdG9yLeihqOWNlS0t5o6n5Lu25qih5p2/LeWKqOaAgei1i+WAvOihqOWNleaOp+S7tiAqL1xuICBAVmlld0NoaWxkKCdNb2RhbEZvcm1EZXNjcmlwdG9yU3VibWl0JywgeyBzdGF0aWM6IGZhbHNlIH0pIE1vZGFsRm9ybURlc2NyaXB0b3JTdWJtaXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoq5qih5oCB5qGGLWRlc2NyaXB0b3It54q25oCB5pS55Y+Y5Zue6LCDICovXG4gIE1vZGFsRGVzY3JpcHRvclZpc2libGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICB0aGlzLk1vZGFsRGVzY3JpcHRvckZvcm0gPSB1bmRlZmluZWRcbiAgICAgIHRoaXMudGhlTm9kZUJlaW5nRWRpdGVkID0gJydcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8qKmbliIbnu4TmqKHmgIHmoYbkv53lrZggKi9cbiAgY3JlYXRlT3JFZGl0U2F2ZSgpIHtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLk1vZGFsRGVzY3JpcHRvckZvcm0udmFsdWVcbiAgICBpZiAodGhpcy50aGVOb2RlQmVpbmdFZGl0ZWQpIHtcbiAgICAgIHRoaXMuX0Rlc2NyaXB0b3JTZXJ2aWNlLnVwZGF0ZSh0aGlzLnRoZU5vZGVCZWluZ0VkaXRlZC5rZXksIGlucHV0KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgLy8gdGhpcy50b2FzdGVyLnN1Y2Nlc3MoXCLkv53lrZjmiJDlip9cIik7XG4gICAgICAgIHRoaXMuTW9kYWxEZXNjcmlwdG9yT3BlbiA9IGZhbHNlXG4gICAgICAgIHRoaXMuZ2V0RmlsZUdyb3VwTGlzdCgpXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuX0Rlc2NyaXB0b3JTZXJ2aWNlLmNyZWF0ZShpbnB1dCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAvLyB0aGlzLnRvYXN0ZXIuc3VjY2VzcyhcIuS/neWtmOaIkOWKn1wiKTtcbiAgICAgIHRoaXMuTW9kYWxEZXNjcmlwdG9yT3BlbiA9IGZhbHNlXG4gICAgICB0aGlzLmdldEZpbGVHcm91cExpc3QoKVxuICAgIH0pXG4gIH1cblxuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyICBwLTAgbWItMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGg2IGNsYXNzPVwiaDYgbWItMFwiPnt7J0ZpbGVFeHBsb3Jlcjo6TXlEaXJlY3RvcmllcycgfCBhYnBMb2NhbGl6YXRpb259fTwvaDY+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtcy0yXCIgKGNsaWNrLnN0b3ApPVwiYWRkRGVzY3JpcHRvckJ0bigpXCI+PGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYnV0dG9uPlxuPC9kaXY+XG48bnotdHJlZSBbbnpEYXRhXT1cImZpbGVHcm91cExpc3RcIiBjbGFzcz1cIm5nLXpvcnJvLWFudGQtdHJlZVwiIG56RHJhZ2dhYmxlIG56QmxvY2tOb2RlIG56U2hvd0ljb25cbiAgICBbbnpFeHBhbmRlZEljb25dPVwibXVsdGlFeHBhbmRlZEljb25UcGxcIiAobnpPbkRyb3ApPVwibnpFdmVudCgkZXZlbnQpXCIgW256QmVmb3JlRHJvcF09XCJiZWZvcmVEcm9wXCJcbiAgICAobnpDbGljayk9XCJhY3RpdmVOb2RlKCRldmVudClcIiAobnpFeHBhbmRDaGFuZ2UpPVwibnpFeHBhbmRDaGFuZ2UoJGV2ZW50KVwiIFtuelRyZWVUZW1wbGF0ZV09XCJuelRyZWVUZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjbnpUcmVlVGVtcGxhdGUgbGV0LW5vZGUgbGV0LW9yaWdpbj1cIm9yaWdpblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLW5vZGUgZC1pbmxpbmUtYmxvY2sgICBuZy1zdGFyLWluc2VydGVkIGRyb3Bkb3duXCIgW3RpdGxlXT1cIm5vZGUudGl0bGVcIj5cbiAgICAgICAgICAgIDxkaXYgI2Ryb3Bkb3duPVwibmdiRHJvcGRvd25cIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgbmdiRHJvcGRvd24gcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGFpbmVyPVwiYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNOb2RlU2VsZWN0ZWQobm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gIHAtMCBweC0xXCI+e3sgbm9kZS50aXRsZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSAgcC0wXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIiBuZ2JEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRyb3Bkb3duLXRvZ2dsZV09XCJmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2FyZXQtZG93biB0ZXh0LW11dGVkIHAtMVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJhZGREZXNjcmlwdG9yQnRuKG5vZGUpXCI+e3snRmlsZUV4cGxvcmVyOjpOZXdEaXJlY3RvcnknIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cImFkZERlc2NyaXB0b3JCdG4obm9kZSx0cnVlKVwiPnt7J0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJkZWxldGVEZXNjcmlwdG9yQnRuKG5vZGUpXCI+e3snQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNtdWx0aUV4cGFuZGVkSWNvblRwbCBsZXQtbm9kZSBsZXQtb3JpZ2luPVwib3JpZ2luXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxpIFtjbGFzc109XCJub2RlLmlzRXhwYW5kZWQgPyAnZmFzIGZhLWNhcmV0LWRvd24nIDogJ2ZhcyBmYS1jYXJldC1yaWdodCdcIj48L2k+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L256LXRyZWU+XG5cblxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cIk1vZGFsRGVzY3JpcHRvck9wZW5cIiBbYnVzeV09XCJNb2RhbERlc2NyaXB0b3JCdXN5XCJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJNb2RhbERlc2NyaXB0b3JWaXNpYmxlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICAgICAgPGgzPnt7dGhlTm9kZUJlaW5nRWRpdGVkPygnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uKTooJ0ZpbGVFeHBsb3Jlcjo6TmV3RGlyZWN0b3J5JyB8IGFicExvY2FsaXphdGlvbil9fTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVyUmVmPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1wdWxzZSBmYS1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiTW9kYWxEZXNjcmlwdG9yRm9ybTsgZWxzZSBsb2FkZXJSZWZcIj5cbiAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwic2l0ZXMtbW9kYWwtZm9ybVwiICNteUZvcm09XCJuZ0Zvcm1cIiBbZm9ybUdyb3VwXT1cIk1vZGFsRGVzY3JpcHRvckZvcm1cIlxuICAgICAgICAgICAgICAgIChuZ1N1Ym1pdCk9XCJjcmVhdGVPckVkaXRTYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjTW9kYWxGb3JtRGVzY3JpcHRvclN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snRmlsZUV4cGxvcmVyOjpEaXJlY3RvcnlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3snQWJwVWk6OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJNb2RhbEZvcm1EZXNjcmlwdG9yU3VibWl0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKVwiPnt7J0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD4iXX0=
@@ -0,0 +1,65 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/file-api.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@abp/ng.core";
6
+ import * as i4 from "../file-modal/file-modal.component";
7
+ import * as i5 from "../../previews/file-preview.component";
8
+ class FilePickerComponent {
9
+ _FileApiService;
10
+ constructor(_FileApiService) {
11
+ this._FileApiService = _FileApiService;
12
+ }
13
+ /**是否多选 */
14
+ _multiple = false;
15
+ set multiple(v) {
16
+ this._multiple = v;
17
+ }
18
+ /**图片容器 */
19
+ _fileContainerName = 'images';
20
+ set fileContainerName(v) {
21
+ this._fileContainerName = v;
22
+ }
23
+ /**已选定的文件 */
24
+ selectFormFile;
25
+ ngOnChanges(changes) {
26
+ let selectFormFilengOnChanges = changes.selectFormFile['currentValue'];
27
+ if (selectFormFilengOnChanges.length > 0) {
28
+ this._fileShowTable = selectFormFilengOnChanges;
29
+ }
30
+ }
31
+ selectedFileChange = new EventEmitter();
32
+ _fileShowTable = [];
33
+ /**表格选择的文件回调 */
34
+ _selectFilefn(event) {
35
+ let _fileShowTable = this._FileApiService.deepClone(event);
36
+ this._fileShowTable = _fileShowTable;
37
+ this.selectFormFile = _fileShowTable;
38
+ this.selectedFileChange.emit(_fileShowTable);
39
+ }
40
+ /**模态框-状态-是否打开 */
41
+ ModalOpen = false;
42
+ /**删除文件表格项 */
43
+ deleteFileTableItem(i, file) {
44
+ this._fileShowTable.splice(i, 1);
45
+ this.selectFormFile = this._fileShowTable;
46
+ this.selectedFileChange.emit([]);
47
+ this.selectedFileChange.emit(this.selectFormFile);
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerComponent, deps: [{ token: i1.FileApiService }], target: i0.ɵɵFactoryTarget.Component });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilePickerComponent, selector: "fe-file-picker", inputs: { multiple: "multiple", fileContainerName: "fileContainerName", selectFormFile: "selectFormFile" }, outputs: { selectedFileChange: "selectedFileChange" }, usesOnChanges: true, ngImport: i0, template: "<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\" [name]=\"item.name\" [type]=\"item.mimeType\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(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", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i4.FileModalComponent, selector: "fe-file-modal", inputs: ["fileContainerName", "multiple", "limit", "visible", "selectPickerFile"], outputs: ["visibleChange", "selectFilefn"] }, { kind: "component", type: i5.FilePreviewComponent, selector: "fe-file-preview", inputs: ["width", "src", "preview", "type", "name"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
51
+ }
52
+ export { FilePickerComponent };
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerComponent, decorators: [{
54
+ type: Component,
55
+ args: [{ selector: 'fe-file-picker', template: "<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\" [name]=\"item.name\" [type]=\"item.mimeType\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(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" }]
56
+ }], ctorParameters: function () { return [{ type: i1.FileApiService }]; }, propDecorators: { multiple: [{
57
+ type: Input
58
+ }], fileContainerName: [{
59
+ type: Input
60
+ }], selectFormFile: [{
61
+ type: Input
62
+ }], selectedFileChange: [{
63
+ type: Output
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBOEMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFHMUksTUFLYSxtQkFBbUI7SUFJcEI7SUFEVixZQUNVLGVBQStCO1FBQS9CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUV6QyxDQUFDO0lBRUEsVUFBVTtJQUNWLFNBQVMsR0FBWSxLQUFLLENBQUE7SUFDMUIsSUFDVyxRQUFRLENBQUMsQ0FBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUYsVUFBVTtJQUNWLGtCQUFrQixHQUFXLFFBQVEsQ0FBQTtJQUNyQyxJQUNXLGlCQUFpQixDQUFDLENBQVM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWTtJQUNILGNBQWMsQ0FBTTtJQUU3QixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSx5QkFBeUIsR0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3BFLElBQUcseUJBQXlCLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFDLHlCQUF5QixDQUFBO1NBQzlDO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFFakQsY0FBYyxHQUFVLEVBQUUsQ0FBQTtJQUUxQixlQUFlO0lBQ2YsYUFBYSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxjQUFjLEdBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRSxjQUFjLENBQUE7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBQyxjQUFjLENBQUE7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLFNBQVMsR0FBWSxLQUFLLENBQUE7SUFFMUIsYUFBYTtJQUNiLG1CQUFtQixDQUFDLENBQUMsRUFBRSxJQUFJO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUE7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNuRCxDQUFDO3dHQXJEVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw4T0NSaEMsaWdEQWdDQTs7U0R4QmEsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO3FHQWVkLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUksaUJBQWlCO3NCQUQzQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBU0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtYXBpLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlc3tcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICAgLyoq5piv5ZCm5aSa6YCJICovXG4gICBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgQElucHV0KClcbiAgIHB1YmxpYyBzZXQgbXVsdGlwbGUodjogYm9vbGVhbikge1xuICAgICB0aGlzLl9tdWx0aXBsZSA9IHY7XG4gICB9XG5cbiAgLyoq5Zu+54mH5a655ZmoICovXG4gIF9maWxlQ29udGFpbmVyTmFtZTogc3RyaW5nID0gJ2ltYWdlcydcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWxlQ29udGFpbmVyTmFtZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWxlQ29udGFpbmVyTmFtZSA9IHY7XG4gIH1cblxuICAvKirlt7LpgInlrprnmoTmlofku7YgKi9cbiAgQElucHV0KCkgc2VsZWN0Rm9ybUZpbGU6YW55W11cbiBcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RGb3JtRmlsZW5nT25DaGFuZ2VzPWNoYW5nZXMuc2VsZWN0Rm9ybUZpbGVbJ2N1cnJlbnRWYWx1ZSddXG4gICAgaWYoc2VsZWN0Rm9ybUZpbGVuZ09uQ2hhbmdlcy5sZW5ndGg+MCl7XG4gICAgICB0aGlzLl9maWxlU2hvd1RhYmxlPXNlbGVjdEZvcm1GaWxlbmdPbkNoYW5nZXNcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgX2ZpbGVTaG93VGFibGU6IGFueVtdID0gW11cblxuICAvKirooajmoLzpgInmi6nnmoTmlofku7blm57osIMgKi9cbiAgX3NlbGVjdEZpbGVmbihldmVudDogYW55W10pIHtcbiAgICBsZXQgX2ZpbGVTaG93VGFibGU9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmRlZXBDbG9uZShldmVudClcbiAgICB0aGlzLl9maWxlU2hvd1RhYmxlID1fZmlsZVNob3dUYWJsZVxuICAgIHRoaXMuc2VsZWN0Rm9ybUZpbGU9X2ZpbGVTaG93VGFibGVcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNoYW5nZS5lbWl0KF9maWxlU2hvd1RhYmxlKVxuICB9XG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgS3mmK/lkKbmiZPlvIAgKi9cbiAgTW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2VcblxuICAvKirliKDpmaTmlofku7booajmoLzpobkgKi9cbiAgZGVsZXRlRmlsZVRhYmxlSXRlbShpLCBmaWxlKSB7XG4gICAgdGhpcy5fZmlsZVNob3dUYWJsZS5zcGxpY2UoaSwgMSlcbiAgICB0aGlzLnNlbGVjdEZvcm1GaWxlPXRoaXMuX2ZpbGVTaG93VGFibGVcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNoYW5nZS5lbWl0KFtdKVxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RGb3JtRmlsZSlcbiAgfVxuXG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBtcy0yIGZsb2F0LWVuZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJNb2RhbE9wZW4gPSB0cnVlXCI+e3snRmlsZUV4cGxvcmVyOjpTZWxlY3RGaWxlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG48ZmUtZmlsZS1tb2RhbCBbKHZpc2libGUpXT1cIk1vZGFsT3BlblwiIFtzZWxlY3RQaWNrZXJGaWxlXT1cInNlbGVjdEZvcm1GaWxlXCIgW211bHRpcGxlXT1cIl9tdWx0aXBsZVwiICAoc2VsZWN0RmlsZWZuKT1cIl9zZWxlY3RGaWxlZm4oJGV2ZW50KVwiIFtmaWxlQ29udGFpbmVyTmFtZV09XCJfZmlsZUNvbnRhaW5lck5hbWVcIj48L2ZlLWZpbGUtbW9kYWw+XG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiX2ZpbGVTaG93VGFibGUubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydGaWxlRXhwbG9yZXI6OkZpbGVOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfZmlsZVNob3dUYWJsZTtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZS1maWxlLXByZXZpZXcgW3dpZHRoXT1cIic4MHB4J1wiIFtzcmNdPVwiaXRlbS51cmxcIiBbbmFtZV09XCJpdGVtLm5hbWVcIiBbdHlwZV09XCJpdGVtLm1pbWVUeXBlXCIgW3ByZXZpZXddPVwidHJ1ZVwiPjwvZmUtZmlsZS1wcmV2aWV3PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkID57e19GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShpdGVtLnNpemUpfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0wIGJ0bi1saWdodCBcIiAoY2xpY2suc3RvcCk9XCJkZWxldGVGaWxlVGFibGVJdGVtKGksaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoIHAtMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPlxuXG5cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './dome/file-dome.component';
2
+ export * from './file-edit/file-edit.component';
3
+ export * from './file-modal/file-modal.component';
4
+ export * from './file-modal-tree/file-modal-tree.component';
5
+ export * from './file-picker/file-picker.component';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsaUNBQWlDLENBQUE7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMscUNBQXFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvbWUvZmlsZS1kb21lLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLWVkaXQvZmlsZS1lZGl0LmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLW1vZGFsL2ZpbGUtbW9kYWwuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtbW9kYWwtdHJlZS9maWxlLW1vZGFsLXRyZWUuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudCciXX0=
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { FileDomeComponent } from './components/dome/file-dome.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ const routes = [
7
+ {
8
+ path: 'file-dome',
9
+ component: FileDomeComponent
10
+ },
11
+ ];
12
+ class FileExplorerRoutingModule {
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
15
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
16
+ }
17
+ export { FileExplorerRoutingModule };
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerRoutingModule, decorators: [{
19
+ type: NgModule,
20
+ args: [{
21
+ imports: [RouterModule.forChild(routes)],
22
+ exports: [RouterModule]
23
+ }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9maWxlLWV4cGxvcmVyLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFFMUUsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsaUJBQWlCO0tBQy9CO0NBQ0EsQ0FBQztBQUVGLE1BSWEseUJBQXlCO3dHQUF6Qix5QkFBeUI7eUdBQXpCLHlCQUF5Qix3Q0FGMUIsWUFBWTt5R0FFWCx5QkFBeUIsWUFIMUIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDN0IsWUFBWTs7U0FFWCx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFKckMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmlsZURvbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZG9tZS9maWxlLWRvbWUuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnZmlsZS1kb21lJyxcbiAgICBjb21wb25lbnQ6IEZpbGVEb21lQ29tcG9uZW50XG59LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUV4cGxvcmVyUm91dGluZ01vZHVsZSB7IFxuICBcbn1cbiJdfQ==
@@ -0,0 +1,88 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CoreModule, LIST_QUERY_DEBOUNCE_TIME, ListService } from '@abp/ng.core';
3
+ import { ThemeSharedModule } from '@abp/ng.theme.shared';
4
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
6
+ import { NzTreeModule } from 'ng-zorro-antd/tree';
7
+ import { NgxValidateCoreModule } from '@ngx-validate/core';
8
+ import { FileExplorerRoutingModule } from './file-explorer-routing.module';
9
+ import { FileEditComponent, FilePickerComponent, FileModalComponent, FileModalTreeComponent, FileDomeComponent } from './components';
10
+ import { FilePreviewComponent } from './previews/file-preview.component';
11
+ import * as i0 from "@angular/core";
12
+ class FileExplorerModule {
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerModule, declarations: [FileEditComponent,
15
+ FilePickerComponent,
16
+ FileModalComponent,
17
+ FileModalTreeComponent,
18
+ FileDomeComponent,
19
+ FilePreviewComponent], imports: [FormsModule,
20
+ CoreModule,
21
+ ThemeSharedModule,
22
+ ReactiveFormsModule,
23
+ NgbDropdownModule,
24
+ NzTreeModule,
25
+ NgxValidateCoreModule,
26
+ FileExplorerRoutingModule], exports: [FileEditComponent,
27
+ FilePickerComponent,
28
+ FileModalComponent,
29
+ FileModalTreeComponent,
30
+ FileDomeComponent,
31
+ FilePreviewComponent] });
32
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerModule, providers: [
33
+ // [Required]
34
+ ListService,
35
+ // [Optional]
36
+ // Provide this token if you want a different debounce time.
37
+ // Default is 300. Cannot be 0. Any value below 100 is not recommended.
38
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
39
+ ], imports: [FormsModule,
40
+ CoreModule,
41
+ ThemeSharedModule,
42
+ ReactiveFormsModule,
43
+ NgbDropdownModule,
44
+ NzTreeModule,
45
+ NgxValidateCoreModule,
46
+ FileExplorerRoutingModule] });
47
+ }
48
+ export { FileExplorerModule };
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerModule, decorators: [{
50
+ type: NgModule,
51
+ args: [{
52
+ declarations: [
53
+ FileEditComponent,
54
+ FilePickerComponent,
55
+ FileModalComponent,
56
+ FileModalTreeComponent,
57
+ FileDomeComponent,
58
+ FilePreviewComponent,
59
+ ],
60
+ imports: [
61
+ FormsModule,
62
+ CoreModule,
63
+ ThemeSharedModule,
64
+ ReactiveFormsModule,
65
+ NgbDropdownModule,
66
+ NzTreeModule,
67
+ NgxValidateCoreModule,
68
+ FileExplorerRoutingModule,
69
+ ],
70
+ exports: [
71
+ FileEditComponent,
72
+ FilePickerComponent,
73
+ FileModalComponent,
74
+ FileModalTreeComponent,
75
+ FileDomeComponent,
76
+ FilePreviewComponent
77
+ ],
78
+ providers: [
79
+ // [Required]
80
+ ListService,
81
+ // [Optional]
82
+ // Provide this token if you want a different debounce time.
83
+ // Default is 300. Cannot be 0. Any value below 100 is not recommended.
84
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
85
+ ],
86
+ }]
87
+ }] });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvZmlsZS1leHBsb3Jlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNySSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFDekUsTUFvQ2Esa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixpQkFsQzNCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixpQkFBaUI7WUFDakIsb0JBQW9CLGFBR3BCLFdBQVc7WUFDWCxVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQix5QkFBeUIsYUFHekIsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixvQkFBb0I7eUdBV1gsa0JBQWtCLGFBVGxCO1lBQ1QsYUFBYTtZQUNiLFdBQVc7WUFDWCxhQUFhO1lBQ2IsNERBQTREO1lBQzVELHVFQUF1RTtZQUN2RSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1NBQ3JELFlBeEJDLFdBQVc7WUFDWCxVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQix5QkFBeUI7O1NBbUJoQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFwQzlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7cUJBQ3JCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYiw0REFBNEQ7d0JBQzVELHVFQUF1RTt3QkFDdkUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtxQkFDckQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLCBMaXN0U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOelRyZWVNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IEZpbGVFeHBsb3JlclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2ZpbGUtZXhwbG9yZXItcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZUVkaXRDb21wb25lbnQsIEZpbGVQaWNrZXJDb21wb25lbnQsIEZpbGVNb2RhbENvbXBvbmVudCwgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCwgRmlsZURvbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXdzL2ZpbGUtcHJldmlldy5jb21wb25lbnQnO1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRmlsZUVkaXRDb21wb25lbnQsXG4gICAgRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxDb21wb25lbnQsXG4gICAgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCxcbiAgICBGaWxlRG9tZUNvbXBvbmVudCxcbiAgICBGaWxlUHJldmlld0NvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBOelRyZWVNb2R1bGUsXG4gICAgTmd4VmFsaWRhdGVDb3JlTW9kdWxlLFxuICAgIEZpbGVFeHBsb3JlclJvdXRpbmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWxlRWRpdENvbXBvbmVudCxcbiAgICBGaWxlUGlja2VyQ29tcG9uZW50LFxuICAgIEZpbGVNb2RhbENvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxUcmVlQ29tcG9uZW50LFxuICAgIEZpbGVEb21lQ29tcG9uZW50LFxuICAgIEZpbGVQcmV2aWV3Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIFtSZXF1aXJlZF1cbiAgICBMaXN0U2VydmljZSxcbiAgICAvLyBbT3B0aW9uYWxdXG4gICAgLy8gUHJvdmlkZSB0aGlzIHRva2VuIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IGRlYm91bmNlIHRpbWUuXG4gICAgLy8gRGVmYXVsdCBpcyAzMDAuIENhbm5vdCBiZSAwLiBBbnkgdmFsdWUgYmVsb3cgMTAwIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJNb2R1bGUge1xuXG59XG4iXX0=
@@ -0,0 +1,100 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { ImageTypeOption } from './models';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@abp/ng.core";
7
+ class FilePreviewComponent {
8
+ modalService;
9
+ /**文件宽度 */
10
+ width = '100px';
11
+ /*文件链接 */
12
+ src = '';
13
+ /**是否支持大图预览 */
14
+ preview = true;
15
+ /**文件类型 */
16
+ type = '';
17
+ /**文件名称 */
18
+ name = '';
19
+ /**是否是文件 */
20
+ isImage = true;
21
+ /**是否是视频 */
22
+ isAudio = false;
23
+ /**是否是音频 */
24
+ isVideo = false;
25
+ /**文件类型及图标 */
26
+ _ImageTypeOption = ImageTypeOption;
27
+ constructor(modalService) {
28
+ this.modalService = modalService;
29
+ }
30
+ ngAfterContentInit() {
31
+ //Called after ngOnInit when the component's or directive's content has been initialized.
32
+ //Add 'implements AfterContentInit' to the class.
33
+ if (!this.type) {
34
+ this.type = this.name.includes('.7z') ? '7z' : '';
35
+ }
36
+ this.isImage = this.type.includes('image/');
37
+ this.isAudio = this.type.includes('audio/');
38
+ this.isVideo = this.type.includes('video/');
39
+ }
40
+ /**预览图片 */
41
+ previewImage() {
42
+ }
43
+ /**模态框实例 */
44
+ modalRef;
45
+ /**放大倍数 */
46
+ zoom = 10;
47
+ /**旋转 */
48
+ rotate = 0;
49
+ /**打开预览弹窗 */
50
+ OpenPreviewImage(content) {
51
+ this.modalRef = this.modalService.open(content, {
52
+ fullscreen: true,
53
+ modalDialogClass: 'dignite-preview',
54
+ });
55
+ this.modalRef.result.then((result) => {
56
+ }, (reason) => {
57
+ this.zoom = 10;
58
+ });
59
+ }
60
+ /**放大图像 */
61
+ zoomIn() {
62
+ let zoom = this.zoom;
63
+ if (zoom == 20)
64
+ return;
65
+ zoom++;
66
+ this.zoom = zoom;
67
+ }
68
+ /**缩小图像 */
69
+ zoomOut() {
70
+ let zoom = this.zoom;
71
+ if (zoom == 3)
72
+ return;
73
+ zoom--;
74
+ this.zoom = zoom;
75
+ }
76
+ /**右旋转 */
77
+ RotateRight() {
78
+ if (this.rotate == 360)
79
+ return this.rotate = 0;
80
+ this.rotate += 90;
81
+ }
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePreviewComponent, deps: [{ token: i1.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilePreviewComponent, selector: "fe-file-preview", inputs: { width: "width", src: "src", preview: "preview", type: "type", name: "name" }, ngImport: i0, template: "<div class=\"image_box\" [style]=\"{width:width}\">\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=\"\u53F3\u65CB\u8F6C\" role=\"button\" (click)=\"RotateRight()\"></i>\n <i class=\"mx-2 fa fa-search-minus\" aria-hidden=\"true\" title=\"\u7F29\u5C0F\" role=\"button\" (click)=\"zoomOut()\"></i>\n <i class=\"mx-2 fa fa-search-plus\" aria-hidden=\"true\" title=\"\u653E\u5927\" 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>", styles: [".image_box{text-align:center;position:relative}.image_box img{width:100%}.image_box .img_box:hover .option_box{display:flex}.image_box .option_box{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000040;align-items:center;justify-content:center;display:none;transition:all .2s linear}.image_box .option_box i{cursor:pointer;font-size:18px;color:#fff}.modal-body-preview{transition:all .2s}::ng-deep .dignite-preview .modal-content{background-color:transparent;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }] });
84
+ }
85
+ export { FilePreviewComponent };
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePreviewComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'fe-file-preview', template: "<div class=\"image_box\" [style]=\"{width:width}\">\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=\"\u53F3\u65CB\u8F6C\" role=\"button\" (click)=\"RotateRight()\"></i>\n <i class=\"mx-2 fa fa-search-minus\" aria-hidden=\"true\" title=\"\u7F29\u5C0F\" role=\"button\" (click)=\"zoomOut()\"></i>\n <i class=\"mx-2 fa fa-search-plus\" aria-hidden=\"true\" title=\"\u653E\u5927\" 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>", styles: [".image_box{text-align:center;position:relative}.image_box img{width:100%}.image_box .img_box:hover .option_box{display:flex}.image_box .option_box{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000040;align-items:center;justify-content:center;display:none;transition:all .2s linear}.image_box .option_box i{cursor:pointer;font-size:18px;color:#fff}.modal-body-preview{transition:all .2s}::ng-deep .dignite-preview .modal-content{background-color:transparent;color:#fff}\n"] }]
89
+ }], ctorParameters: function () { return [{ type: i1.NgbModal }]; }, propDecorators: { width: [{
90
+ type: Input
91
+ }], src: [{
92
+ type: Input
93
+ }], preview: [{
94
+ type: Input
95
+ }], type: [{
96
+ type: Input
97
+ }], name: [{
98
+ type: Input
99
+ }] } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9wcmV2aWV3cy9maWxlLXByZXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL3ByZXZpZXdzL2ZpbGUtcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7OztBQUczQyxNQUthLG9CQUFvQjtJQXdCckI7SUF0QlYsVUFBVTtJQUNELEtBQUssR0FBUSxPQUFPLENBQUE7SUFDN0IsU0FBUztJQUNBLEdBQUcsR0FBTSxFQUFFLENBQUE7SUFDcEIsY0FBYztJQUNMLE9BQU8sR0FBTSxJQUFJLENBQUM7SUFDM0IsVUFBVTtJQUNELElBQUksR0FBTSxFQUFFLENBQUE7SUFDckIsVUFBVTtJQUNELElBQUksR0FBTSxFQUFFLENBQUE7SUFFckIsV0FBVztJQUNYLE9BQU8sR0FBRyxJQUFJLENBQUE7SUFDZCxXQUFXO0lBQ1gsT0FBTyxHQUFHLEtBQUssQ0FBQTtJQUNmLFdBQVc7SUFDWCxPQUFPLEdBQUcsS0FBSyxDQUFBO0lBQ2YsYUFBYTtJQUNiLGdCQUFnQixHQUFHLGVBQWUsQ0FBQTtJQUdsQyxZQUNVLFlBQXNCO1FBQXRCLGlCQUFZLEdBQVosWUFBWSxDQUFVO0lBQzVCLENBQUM7SUFDTCxrQkFBa0I7UUFDaEIseUZBQXlGO1FBQ3pGLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVELFVBQVU7SUFDVixZQUFZO0lBRVosQ0FBQztJQUVELFdBQVc7SUFDWCxRQUFRLENBQWU7SUFFdkIsVUFBVTtJQUNWLElBQUksR0FBVyxFQUFFLENBQUE7SUFDakIsUUFBUTtJQUNSLE1BQU0sR0FBVyxDQUFDLENBQUE7SUFHbEIsWUFBWTtJQUNaLGdCQUFnQixDQUFDLE9BQXlCO1FBRXhDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGdCQUFnQixFQUFFLGlCQUFpQjtTQUNwQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3ZCLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDWCxDQUFDLEVBQ0QsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUNELFVBQVU7SUFDVixNQUFNO1FBQ0osSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUNwQixJQUFJLElBQUksSUFBSSxFQUFFO1lBQUUsT0FBTTtRQUN0QixJQUFJLEVBQUUsQ0FBQTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFDRCxVQUFVO0lBQ1YsT0FBTztRQUNMLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDcEIsSUFBSSxJQUFJLElBQUksQ0FBQztZQUFFLE9BQU07UUFDckIsSUFBSSxFQUFFLENBQUE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBQ0QsU0FBUztJQUNULFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDbkIsQ0FBQzt3R0FwRlUsb0JBQW9COzRGQUFwQixvQkFBb0IsK0lDVGpDLDB0REE4QmM7O1NEckJELG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjsrRkFPbEIsS0FBSztzQkFBYixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWFnZVR5cGVPcHRpb24gfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlLWZpbGUtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXByZXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlUHJldmlld0NvbXBvbmVudCB7XG5cbiAgLyoq5paH5Lu25a695bqmICovXG4gIEBJbnB1dCgpIHdpZHRoOiBhbnkgPSAnMTAwcHgnXG4gIC8q5paH5Lu26ZO+5o6lICovXG4gIEBJbnB1dCgpIHNyYzogYW55PScnXG4gIC8qKuaYr+WQpuaUr+aMgeWkp+WbvumihOiniCAqL1xuICBASW5wdXQoKSBwcmV2aWV3OiBhbnk9dHJ1ZTtcbiAgLyoq5paH5Lu257G75Z6LICovXG4gIEBJbnB1dCgpIHR5cGU6IGFueT0nJ1xuICAvKirmlofku7blkI3np7AgKi9cbiAgQElucHV0KCkgbmFtZTogYW55PScnXG5cbiAgLyoq5piv5ZCm5piv5paH5Lu2ICovXG4gIGlzSW1hZ2UgPSB0cnVlXG4gIC8qKuaYr+WQpuaYr+inhumikSAqL1xuICBpc0F1ZGlvID0gZmFsc2VcbiAgLyoq5piv5ZCm5piv6Z+z6aKRICovXG4gIGlzVmlkZW8gPSBmYWxzZVxuICAvKirmlofku7bnsbvlnovlj4rlm77moIcgKi9cbiAgX0ltYWdlVHlwZU9wdGlvbiA9IEltYWdlVHlwZU9wdGlvblxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXG4gICkgeyB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ09uSW5pdCB3aGVuIHRoZSBjb21wb25lbnQncyBvciBkaXJlY3RpdmUncyBjb250ZW50IGhhcyBiZWVuIGluaXRpYWxpemVkLlxuICAgIC8vQWRkICdpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQnIHRvIHRoZSBjbGFzcy5cbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgdGhpcy50eXBlID0gdGhpcy5uYW1lLmluY2x1ZGVzKCcuN3onKSA/ICc3eicgOiAnJ1xuICAgIH1cbiAgICB0aGlzLmlzSW1hZ2UgPSB0aGlzLnR5cGUuaW5jbHVkZXMoJ2ltYWdlLycpXG4gICAgdGhpcy5pc0F1ZGlvID0gdGhpcy50eXBlLmluY2x1ZGVzKCdhdWRpby8nKVxuICAgIHRoaXMuaXNWaWRlbyA9IHRoaXMudHlwZS5pbmNsdWRlcygndmlkZW8vJylcbiAgfVxuXG4gIC8qKumihOiniOWbvueJhyAqL1xuICBwcmV2aWV3SW1hZ2UoKSB7XG5cbiAgfVxuXG4gIC8qKuaooeaAgeahhuWunuS+iyAqL1xuICBtb2RhbFJlZiE6IE5nYk1vZGFsUmVmO1xuXG4gIC8qKuaUvuWkp+WAjeaVsCAqL1xuICB6b29tOiBudW1iZXIgPSAxMFxuICAvKirml4vovawgKi9cbiAgcm90YXRlOiBudW1iZXIgPSAwXG5cblxuICAvKirmiZPlvIDpooTop4jlvLnnqpcgKi9cbiAgT3BlblByZXZpZXdJbWFnZShjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG5cbiAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihjb250ZW50LCB7XG4gICAgICBmdWxsc2NyZWVuOiB0cnVlLFxuICAgICAgbW9kYWxEaWFsb2dDbGFzczogJ2RpZ25pdGUtcHJldmlldycsXG4gICAgfSk7XG4gICAgdGhpcy5tb2RhbFJlZi5yZXN1bHQudGhlbihcbiAgICAgIChyZXN1bHQpID0+IHtcbiAgICAgIH0sXG4gICAgICAocmVhc29uKSA9PiB7XG4gICAgICAgIHRoaXMuem9vbSA9IDEwXG4gICAgICB9LFxuICAgICk7XG4gIH1cbiAgLyoq5pS+5aSn5Zu+5YOPICovXG4gIHpvb21JbigpIHtcbiAgICBsZXQgem9vbSA9IHRoaXMuem9vbVxuICAgIGlmICh6b29tID09IDIwKSByZXR1cm5cbiAgICB6b29tKytcbiAgICB0aGlzLnpvb20gPSB6b29tXG4gIH1cbiAgLyoq57yp5bCP5Zu+5YOPICovXG4gIHpvb21PdXQoKSB7XG4gICAgbGV0IHpvb20gPSB0aGlzLnpvb21cbiAgICBpZiAoem9vbSA9PSAzKSByZXR1cm5cbiAgICB6b29tLS1cbiAgICB0aGlzLnpvb20gPSB6b29tXG4gIH1cbiAgLyoq5Y+z5peL6L2sICovXG4gIFJvdGF0ZVJpZ2h0KCkge1xuICAgIGlmICh0aGlzLnJvdGF0ZSA9PSAzNjApIHJldHVybiB0aGlzLnJvdGF0ZSA9IDBcbiAgICB0aGlzLnJvdGF0ZSArPSA5MFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW1hZ2VfYm94XCIgW3N0eWxlXT1cInt3aWR0aDp3aWR0aH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW1nX2JveFwiICpuZ0lmPVwiaXNJbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwic3JjXCIgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25fYm94XCIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZSBcIiAoY2xpY2suc3RvcCk9XCJPcGVuUHJldmlld0ltYWdlKGNvbnRlbnQpXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YSBbaHJlZl09XCJzcmNcIiBbZG93bmxvYWRdPVwibmFtZVwiIHRhcmdldD5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1maWxlLWF1ZGlvLW8gZnMtMVwiICpuZ0lmPVwiaXNBdWRpb1wiPjwvaT5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1maWxlLXZpZGVvLW8gZnMtMVwiICpuZ0lmPVwiaXNWaWRlb1wiPjwvaT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoaXNJbWFnZXx8aXNBdWRpb3x8aXNWaWRlbylcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX0ltYWdlVHlwZU9wdGlvbjsgbGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZzLTFcIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0udHlwZT09PXR5cGVcIj48L2k+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudCBsZXQtbW9kYWw+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgdy0xMDAgZnMtM1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJteC0yIGZhICBmYSBmYS1yZXBlYXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIuWPs+aXi+i9rFwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiUm90YXRlUmlnaHQoKVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibXgtMiBmYSAgZmEtc2VhcmNoLW1pbnVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCLnvKnlsI9cIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInpvb21PdXQoKVwiPjwvaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibXgtMiBmYSAgZmEtc2VhcmNoLXBsdXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIuaUvuWkp1wiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiem9vbUluKClcIj48L2k+XG4gICAgICAgICAgICA8aSBjbGFzcz1cIm14LTIgZmEgIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKCdDcm9zcyBjbGljaycpXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIFwiPlxuICAgICAgICA8aW1nIHdpZHRoPVwiNDAwXCIgY2xhc3M9XCJtb2RhbC1ib2R5LXByZXZpZXdcIiAgW3NyY109XCJzcmNcIiBbc3R5bGUudHJhbnNmb3JtXT1cIidzY2FsZSgnK3pvb20vMTArJykgcm90YXRlKCcrcm90YXRlKydkZWcpJ1wiICAgPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './file-preview.component';
2
+ export * from './models';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvcHJldmlld3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLFVBQVUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS1wcmV2aWV3LmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnIl19