@rs-pk/asset-management 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/bundles/rs-pk-asset-management.umd.js +6474 -0
- package/bundles/rs-pk-asset-management.umd.js.map +1 -0
- package/bundles/rs-pk-asset-management.umd.min.js +16 -0
- package/bundles/rs-pk-asset-management.umd.min.js.map +1 -0
- package/esm2015/lib/asset-management.component.js +147 -0
- package/esm2015/lib/asset-management.module.js +179 -0
- package/esm2015/lib/asset-management.service.js +45 -0
- package/esm2015/lib/components/partial/add-folder-dialog/add-folder-dialog.component.js +143 -0
- package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +373 -0
- package/esm2015/lib/components/partial/asset-item/asset-item.component.js +165 -0
- package/esm2015/lib/components/partial/asset-list/asset-list.component.js +239 -0
- package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +108 -0
- package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +100 -0
- package/esm2015/lib/components/partial/breadcrumb/breadcrumb.component.js +115 -0
- package/esm2015/lib/components/partial/delete-dialog/delete-dialog.component.js +139 -0
- package/esm2015/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.js +148 -0
- package/esm2015/lib/components/partial/file-item/file-item.component.js +136 -0
- package/esm2015/lib/components/partial/file-list/file-list.component.js +72 -0
- package/esm2015/lib/components/partial/folder-item/folder-item.component.js +114 -0
- package/esm2015/lib/components/partial/folder-list/folder-list.component.js +69 -0
- package/esm2015/lib/components/partial/node-details/node-details.component.js +402 -0
- package/esm2015/lib/components/partial/node-tree/node-tree.component.js +330 -0
- package/esm2015/lib/components/partial/search-box/search-box.component.js +158 -0
- package/esm2015/lib/components/partial/sort-items/sort-items.component.js +99 -0
- package/esm2015/lib/components/partial/upload-dialog/upload-dialog.component.js +136 -0
- package/esm2015/lib/components/partial/upload-file/upload-file.component.js +102 -0
- package/esm2015/lib/components/ui/drag-to-resize/drag-to-resize.component.js +96 -0
- package/esm2015/lib/components/ui/input-file/input-file.component.js +49 -0
- package/esm2015/lib/components/ui/modal/modal.component.js +34 -0
- package/esm2015/lib/components/ui/search-not-found/search-not-found.component.js +41 -0
- package/esm2015/lib/configs/admin.config.js +22 -0
- package/esm2015/lib/contanst/data-image.js +12 -0
- package/esm2015/lib/contanst/index.js +6 -0
- package/esm2015/lib/datasources/index.js +6 -0
- package/esm2015/lib/datasources/node-tree.datasource.js +179 -0
- package/esm2015/lib/directives/dialogTrigger.directive.js +47 -0
- package/esm2015/lib/directives/directives.module.js +20 -0
- package/esm2015/lib/directives/dnd.directive.js +57 -0
- package/esm2015/lib/models/asset-file.model.js +57 -0
- package/esm2015/lib/models/asset.model.js +135 -0
- package/esm2015/lib/models/file-type.enum.js +11 -0
- package/esm2015/lib/models/file.model.js +91 -0
- package/esm2015/lib/models/index.js +12 -0
- package/esm2015/lib/models/node-tree.model.js +32 -0
- package/esm2015/lib/models/sort.enum.js +23 -0
- package/esm2015/lib/pipes/datetime.pipe.js +79 -0
- package/esm2015/lib/pipes/file-size.pipe.js +54 -0
- package/esm2015/lib/services/asset.service.js +224 -0
- package/esm2015/lib/services/base.service.js +49 -0
- package/esm2015/lib/services/env-config.service.js +18 -0
- package/esm2015/lib/services/file.service.js +106 -0
- package/esm2015/lib/services/index.js +11 -0
- package/esm2015/lib/services/node-tree.service.js +212 -0
- package/esm2015/lib/services/upload-assets.service.js +203 -0
- package/esm2015/lib/store/actions.action.js +125 -0
- package/esm2015/lib/store/index.js +7 -0
- package/esm2015/lib/store/reducer.js +115 -0
- package/esm2015/public-api.js +34 -0
- package/esm2015/rs-pk-asset-management.js +17 -0
- package/esm5/lib/asset-management.component.js +162 -0
- package/esm5/lib/asset-management.module.js +180 -0
- package/esm5/lib/asset-management.service.js +54 -0
- package/esm5/lib/components/partial/add-folder-dialog/add-folder-dialog.component.js +161 -0
- package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +417 -0
- package/esm5/lib/components/partial/asset-item/asset-item.component.js +184 -0
- package/esm5/lib/components/partial/asset-list/asset-list.component.js +266 -0
- package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +123 -0
- package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +115 -0
- package/esm5/lib/components/partial/breadcrumb/breadcrumb.component.js +138 -0
- package/esm5/lib/components/partial/delete-dialog/delete-dialog.component.js +154 -0
- package/esm5/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.js +166 -0
- package/esm5/lib/components/partial/file-item/file-item.component.js +151 -0
- package/esm5/lib/components/partial/file-list/file-list.component.js +93 -0
- package/esm5/lib/components/partial/folder-item/folder-item.component.js +126 -0
- package/esm5/lib/components/partial/folder-list/folder-list.component.js +82 -0
- package/esm5/lib/components/partial/node-details/node-details.component.js +443 -0
- package/esm5/lib/components/partial/node-tree/node-tree.component.js +413 -0
- package/esm5/lib/components/partial/search-box/search-box.component.js +184 -0
- package/esm5/lib/components/partial/sort-items/sort-items.component.js +107 -0
- package/esm5/lib/components/partial/upload-dialog/upload-dialog.component.js +151 -0
- package/esm5/lib/components/partial/upload-file/upload-file.component.js +130 -0
- package/esm5/lib/components/ui/drag-to-resize/drag-to-resize.component.js +117 -0
- package/esm5/lib/components/ui/input-file/input-file.component.js +55 -0
- package/esm5/lib/components/ui/modal/modal.component.js +39 -0
- package/esm5/lib/components/ui/search-not-found/search-not-found.component.js +43 -0
- package/esm5/lib/configs/admin.config.js +22 -0
- package/esm5/lib/contanst/data-image.js +12 -0
- package/esm5/lib/contanst/index.js +6 -0
- package/esm5/lib/datasources/index.js +6 -0
- package/esm5/lib/datasources/node-tree.datasource.js +239 -0
- package/esm5/lib/directives/dialogTrigger.directive.js +53 -0
- package/esm5/lib/directives/directives.module.js +25 -0
- package/esm5/lib/directives/dnd.directive.js +80 -0
- package/esm5/lib/models/asset-file.model.js +69 -0
- package/esm5/lib/models/asset.model.js +154 -0
- package/esm5/lib/models/file-type.enum.js +11 -0
- package/esm5/lib/models/file.model.js +99 -0
- package/esm5/lib/models/index.js +12 -0
- package/esm5/lib/models/node-tree.model.js +37 -0
- package/esm5/lib/models/sort.enum.js +23 -0
- package/esm5/lib/pipes/datetime.pipe.js +83 -0
- package/esm5/lib/pipes/file-size.pipe.js +63 -0
- package/esm5/lib/services/asset.service.js +274 -0
- package/esm5/lib/services/base.service.js +57 -0
- package/esm5/lib/services/env-config.service.js +18 -0
- package/esm5/lib/services/file.service.js +127 -0
- package/esm5/lib/services/index.js +11 -0
- package/esm5/lib/services/node-tree.service.js +278 -0
- package/esm5/lib/services/upload-assets.service.js +260 -0
- package/esm5/lib/store/actions.action.js +143 -0
- package/esm5/lib/store/index.js +7 -0
- package/esm5/lib/store/reducer.js +116 -0
- package/esm5/public-api.js +34 -0
- package/esm5/rs-pk-asset-management.js +17 -0
- package/fesm2015/rs-pk-asset-management.js +5429 -0
- package/fesm2015/rs-pk-asset-management.js.map +1 -0
- package/fesm5/rs-pk-asset-management.js +6244 -0
- package/fesm5/rs-pk-asset-management.js.map +1 -0
- package/lib/asset-management.component.d.ts +21 -0
- package/lib/asset-management.module.d.ts +5 -0
- package/lib/asset-management.service.d.ts +7 -0
- package/lib/components/partial/add-folder-dialog/add-folder-dialog.component.d.ts +27 -0
- package/lib/components/partial/asset-dialog/asset-dialog.component.d.ts +52 -0
- package/lib/components/partial/asset-item/asset-item.component.d.ts +25 -0
- package/lib/components/partial/asset-list/asset-list.component.d.ts +22 -0
- package/lib/components/partial/asset-management-dialog/asset-management-dialog.component.d.ts +17 -0
- package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +19 -0
- package/lib/components/partial/breadcrumb/breadcrumb.component.d.ts +17 -0
- package/lib/components/partial/delete-dialog/delete-dialog.component.d.ts +24 -0
- package/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.d.ts +28 -0
- package/lib/components/partial/file-item/file-item.component.d.ts +27 -0
- package/lib/components/partial/file-list/file-list.component.d.ts +12 -0
- package/lib/components/partial/folder-item/folder-item.component.d.ts +14 -0
- package/lib/components/partial/folder-list/folder-list.component.d.ts +11 -0
- package/lib/components/partial/node-details/node-details.component.d.ts +29 -0
- package/lib/components/partial/node-tree/node-tree.component.d.ts +34 -0
- package/lib/components/partial/search-box/search-box.component.d.ts +18 -0
- package/lib/components/partial/sort-items/sort-items.component.d.ts +21 -0
- package/lib/components/partial/upload-dialog/upload-dialog.component.d.ts +24 -0
- package/lib/components/partial/upload-file/upload-file.component.d.ts +18 -0
- package/lib/components/ui/drag-to-resize/drag-to-resize.component.d.ts +15 -0
- package/lib/components/ui/input-file/input-file.component.d.ts +9 -0
- package/lib/components/ui/modal/modal.component.d.ts +7 -0
- package/lib/components/ui/search-not-found/search-not-found.component.d.ts +8 -0
- package/lib/configs/admin.config.d.ts +3 -0
- package/lib/contanst/data-image.d.ts +3 -0
- package/lib/contanst/index.d.ts +1 -0
- package/lib/datasources/index.d.ts +1 -0
- package/lib/datasources/node-tree.datasource.d.ts +24 -0
- package/lib/directives/dialogTrigger.directive.d.ts +7 -0
- package/lib/directives/directives.module.d.ts +5 -0
- package/lib/directives/dnd.directive.d.ts +7 -0
- package/lib/models/asset-file.model.d.ts +26 -0
- package/lib/models/asset.model.d.ts +61 -0
- package/lib/models/file-type.enum.d.ts +4 -0
- package/lib/models/file.model.d.ts +41 -0
- package/lib/models/index.d.ts +7 -0
- package/lib/models/node-tree.model.d.ts +9 -0
- package/lib/models/sort.enum.d.ts +9 -0
- package/lib/pipes/datetime.pipe.d.ts +13 -0
- package/lib/pipes/file-size.pipe.d.ts +5 -0
- package/lib/services/asset.service.d.ts +35 -0
- package/lib/services/base.service.d.ts +20 -0
- package/lib/services/env-config.service.d.ts +7 -0
- package/lib/services/file.service.d.ts +13 -0
- package/lib/services/index.d.ts +6 -0
- package/lib/services/node-tree.service.d.ts +24 -0
- package/lib/services/upload-assets.service.d.ts +42 -0
- package/lib/store/actions.action.d.ts +51 -0
- package/lib/store/index.d.ts +2 -0
- package/lib/store/reducer.d.ts +18 -0
- package/package.json +28 -0
- package/public-api.d.ts +26 -0
- package/rs-pk-asset-management.d.ts +12 -0
- package/rs-pk-asset-management.metadata.json +1 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { FlatTreeControl } from '@angular/cdk/tree';
|
|
7
|
+
import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
8
|
+
import { of, Subject } from 'rxjs';
|
|
9
|
+
import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
|
|
10
|
+
import { AssetManagementService } from '../../../asset-management.service';
|
|
11
|
+
import { NodeTreeDataSource } from '../../../datasources';
|
|
12
|
+
import { NodeTreeService } from '../../../services/node-tree.service';
|
|
13
|
+
import { ActionTypes, select } from '../../../store/index';
|
|
14
|
+
var NodeTreeComponent = /** @class */ (function () {
|
|
15
|
+
function NodeTreeComponent(nodeTreeService, svc, changeDetectorRef) {
|
|
16
|
+
this.nodeTreeService = nodeTreeService;
|
|
17
|
+
this.svc = svc;
|
|
18
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
19
|
+
this.isRoot = false;
|
|
20
|
+
this.homeLoading = false;
|
|
21
|
+
this.loading = false;
|
|
22
|
+
this.unsubscribe$ = new Subject();
|
|
23
|
+
this.getLevel = (/**
|
|
24
|
+
* @param {?} node
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
function (node) { return node.level; });
|
|
28
|
+
this.isExpandable = (/**
|
|
29
|
+
* @param {?} node
|
|
30
|
+
* @return {?}
|
|
31
|
+
*/
|
|
32
|
+
function (node) { return node.expandable; });
|
|
33
|
+
this.hasChild = (/**
|
|
34
|
+
* @param {?} _
|
|
35
|
+
* @param {?} _nodeData
|
|
36
|
+
* @return {?}
|
|
37
|
+
*/
|
|
38
|
+
function (_, _nodeData) { return _nodeData.expandable; });
|
|
39
|
+
this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
|
|
40
|
+
this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @return {?}
|
|
44
|
+
*/
|
|
45
|
+
NodeTreeComponent.prototype.ngOnInit = /**
|
|
46
|
+
* @return {?}
|
|
47
|
+
*/
|
|
48
|
+
function () {
|
|
49
|
+
this.bindSubscriber();
|
|
50
|
+
this.initialData();
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* @private
|
|
54
|
+
* @return {?}
|
|
55
|
+
*/
|
|
56
|
+
NodeTreeComponent.prototype.initialData = /**
|
|
57
|
+
* @private
|
|
58
|
+
* @return {?}
|
|
59
|
+
*/
|
|
60
|
+
function () {
|
|
61
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
62
|
+
return tslib_1.__generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: true })];
|
|
65
|
+
case 1:
|
|
66
|
+
_a.sent();
|
|
67
|
+
this.changeDetectorRef.detectChanges();
|
|
68
|
+
return [2 /*return*/];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* @private
|
|
75
|
+
* @return {?}
|
|
76
|
+
*/
|
|
77
|
+
NodeTreeComponent.prototype.bindSubscriber = /**
|
|
78
|
+
* @private
|
|
79
|
+
* @return {?}
|
|
80
|
+
*/
|
|
81
|
+
function () {
|
|
82
|
+
var _this = this;
|
|
83
|
+
this.nodeTreeService.loading$
|
|
84
|
+
.pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())
|
|
85
|
+
.subscribe((/**
|
|
86
|
+
* @param {?} loading
|
|
87
|
+
* @return {?}
|
|
88
|
+
*/
|
|
89
|
+
function (loading) {
|
|
90
|
+
_this.homeLoading = loading;
|
|
91
|
+
_this.changeDetectorRef.detectChanges();
|
|
92
|
+
}));
|
|
93
|
+
this.nodeTreeService.initialData$
|
|
94
|
+
.pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())
|
|
95
|
+
.subscribe((/**
|
|
96
|
+
* @param {?} data
|
|
97
|
+
* @return {?}
|
|
98
|
+
*/
|
|
99
|
+
function (data) {
|
|
100
|
+
var rootId = (_this.nodeTreeService.rootFolder || { AssetId: null }).AssetId;
|
|
101
|
+
_this.isRoot = rootId && _this.currentFolderId === rootId;
|
|
102
|
+
_this.dataSource.data = data;
|
|
103
|
+
data.forEach((/**
|
|
104
|
+
* @param {?} node
|
|
105
|
+
* @return {?}
|
|
106
|
+
*/
|
|
107
|
+
function (node) { return _this.nodeTreeService.addNode(node.item, null); }));
|
|
108
|
+
_this.changeDetectorRef.detectChanges();
|
|
109
|
+
}));
|
|
110
|
+
this.dataSource.dataChange
|
|
111
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
112
|
+
.subscribe((/**
|
|
113
|
+
* @param {?} data
|
|
114
|
+
* @return {?}
|
|
115
|
+
*/
|
|
116
|
+
function (data) {
|
|
117
|
+
if (data && data.length) {
|
|
118
|
+
_this.changeDetectorRef.detectChanges();
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
121
|
+
select((/**
|
|
122
|
+
* @param {?} state
|
|
123
|
+
* @return {?}
|
|
124
|
+
*/
|
|
125
|
+
function (state) { return state.currentFolderId; }))
|
|
126
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
127
|
+
.subscribe((/**
|
|
128
|
+
* @param {?} id
|
|
129
|
+
* @return {?}
|
|
130
|
+
*/
|
|
131
|
+
function (id) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
132
|
+
var rootId;
|
|
133
|
+
return tslib_1.__generator(this, function (_a) {
|
|
134
|
+
switch (_a.label) {
|
|
135
|
+
case 0:
|
|
136
|
+
if (!id) return [3 /*break*/, 2];
|
|
137
|
+
rootId = (this.nodeTreeService.rootFolder || { AssetId: null }).AssetId;
|
|
138
|
+
this.isRoot = rootId && id === rootId;
|
|
139
|
+
this.currentFolderId = id;
|
|
140
|
+
return [4 /*yield*/, this.nodeTreeService.updateBreadcrumb(id)];
|
|
141
|
+
case 1:
|
|
142
|
+
_a.sent();
|
|
143
|
+
this.changeDetectorRef.detectChanges();
|
|
144
|
+
_a.label = 2;
|
|
145
|
+
case 2: return [2 /*return*/];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}); }));
|
|
149
|
+
select((/**
|
|
150
|
+
* @param {?} state
|
|
151
|
+
* @return {?}
|
|
152
|
+
*/
|
|
153
|
+
function (state) { return state.reloadCurrentFolder; }))
|
|
154
|
+
.pipe(takeUntil(this.unsubscribe$), switchMap((/**
|
|
155
|
+
* @param {?} res
|
|
156
|
+
* @return {?}
|
|
157
|
+
*/
|
|
158
|
+
function (res) { return of(res); })))
|
|
159
|
+
.subscribe((/**
|
|
160
|
+
* @return {?}
|
|
161
|
+
*/
|
|
162
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
163
|
+
return tslib_1.__generator(this, function (_a) {
|
|
164
|
+
switch (_a.label) {
|
|
165
|
+
case 0: return [4 /*yield*/, this.handleReloadFolder(this.currentFolderId)];
|
|
166
|
+
case 1:
|
|
167
|
+
_a.sent();
|
|
168
|
+
this.changeDetectorRef.detectChanges();
|
|
169
|
+
return [2 /*return*/];
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}); }));
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* @param {?} node
|
|
176
|
+
* @return {?}
|
|
177
|
+
*/
|
|
178
|
+
NodeTreeComponent.prototype.selectNode = /**
|
|
179
|
+
* @param {?} node
|
|
180
|
+
* @return {?}
|
|
181
|
+
*/
|
|
182
|
+
function (node) {
|
|
183
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
184
|
+
var id;
|
|
185
|
+
return tslib_1.__generator(this, function (_a) {
|
|
186
|
+
switch (_a.label) {
|
|
187
|
+
case 0:
|
|
188
|
+
id = node.item.AssetId;
|
|
189
|
+
if (id === this.currentFolderId) {
|
|
190
|
+
this.svc.dispatch({
|
|
191
|
+
type: ActionTypes.RELOAD_CURRENT_NODE,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.svc.dispatch({
|
|
196
|
+
type: ActionTypes.SET_CURRENT_FOLDER_ID,
|
|
197
|
+
payload: id,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return [4 /*yield*/, this.handleReloadFolder(id)];
|
|
201
|
+
case 1:
|
|
202
|
+
_a.sent();
|
|
203
|
+
this.changeDetectorRef.detectChanges();
|
|
204
|
+
return [2 /*return*/];
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* @return {?}
|
|
211
|
+
*/
|
|
212
|
+
NodeTreeComponent.prototype.backToHome = /**
|
|
213
|
+
* @return {?}
|
|
214
|
+
*/
|
|
215
|
+
function () {
|
|
216
|
+
this.initialData();
|
|
217
|
+
var rootId = this.nodeTreeService.rootFolder.AssetId;
|
|
218
|
+
if (this.currentFolderId === rootId) {
|
|
219
|
+
this.svc.dispatch({
|
|
220
|
+
type: ActionTypes.RELOAD_CURRENT_NODE,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* @param {?} node
|
|
226
|
+
* @return {?}
|
|
227
|
+
*/
|
|
228
|
+
NodeTreeComponent.prototype.checked = /**
|
|
229
|
+
* @param {?} node
|
|
230
|
+
* @return {?}
|
|
231
|
+
*/
|
|
232
|
+
function (node) {
|
|
233
|
+
return this.currentFolderId && this.currentFolderId === node.item.AssetId;
|
|
234
|
+
};
|
|
235
|
+
/**
|
|
236
|
+
* @param {?} node
|
|
237
|
+
* @return {?}
|
|
238
|
+
*/
|
|
239
|
+
NodeTreeComponent.prototype.disabled = /**
|
|
240
|
+
* @param {?} node
|
|
241
|
+
* @return {?}
|
|
242
|
+
*/
|
|
243
|
+
function (node) {
|
|
244
|
+
return node.expandable;
|
|
245
|
+
};
|
|
246
|
+
/**
|
|
247
|
+
* @param {?} node
|
|
248
|
+
* @return {?}
|
|
249
|
+
*/
|
|
250
|
+
NodeTreeComponent.prototype.getParent = /**
|
|
251
|
+
* @param {?} node
|
|
252
|
+
* @return {?}
|
|
253
|
+
*/
|
|
254
|
+
function (node) {
|
|
255
|
+
/** @type {?} */
|
|
256
|
+
var currentLevel = this.getLevel(node);
|
|
257
|
+
if (currentLevel < 1) {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
/** @type {?} */
|
|
261
|
+
var startIndex = this.dataSource.data.indexOf(node) - 1;
|
|
262
|
+
for (var i = startIndex; i >= 0; i--) {
|
|
263
|
+
/** @type {?} */
|
|
264
|
+
var currentNode = this.dataSource.data[i];
|
|
265
|
+
if (this.getLevel(currentNode) < currentLevel) {
|
|
266
|
+
return currentNode;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* @param {?} id
|
|
272
|
+
* @return {?}
|
|
273
|
+
*/
|
|
274
|
+
NodeTreeComponent.prototype.getNodeById = /**
|
|
275
|
+
* @param {?} id
|
|
276
|
+
* @return {?}
|
|
277
|
+
*/
|
|
278
|
+
function (id) {
|
|
279
|
+
return this.treeControl.dataNodes.find((/**
|
|
280
|
+
* @param {?} node
|
|
281
|
+
* @return {?}
|
|
282
|
+
*/
|
|
283
|
+
function (node) { return node.item.AssetId === id; }));
|
|
284
|
+
};
|
|
285
|
+
/**
|
|
286
|
+
* @private
|
|
287
|
+
* @param {?} id
|
|
288
|
+
* @return {?}
|
|
289
|
+
*/
|
|
290
|
+
NodeTreeComponent.prototype.handleReloadFolder = /**
|
|
291
|
+
* @private
|
|
292
|
+
* @param {?} id
|
|
293
|
+
* @return {?}
|
|
294
|
+
*/
|
|
295
|
+
function (id) {
|
|
296
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
297
|
+
var node, parent_1, updatedNode, updatedNode;
|
|
298
|
+
return tslib_1.__generator(this, function (_a) {
|
|
299
|
+
switch (_a.label) {
|
|
300
|
+
case 0:
|
|
301
|
+
if (!id || this.loading) {
|
|
302
|
+
return [2 /*return*/];
|
|
303
|
+
}
|
|
304
|
+
this.loading = true;
|
|
305
|
+
node = this.getNodeById(id);
|
|
306
|
+
if (!node) return [3 /*break*/, 8];
|
|
307
|
+
parent_1 = this.getParent(node);
|
|
308
|
+
if (!parent_1) return [3 /*break*/, 4];
|
|
309
|
+
return [4 /*yield*/, this.dataSource.reloadNode(parent_1)];
|
|
310
|
+
case 1:
|
|
311
|
+
_a.sent();
|
|
312
|
+
updatedNode = this.getNodeById(id);
|
|
313
|
+
if (!updatedNode) return [3 /*break*/, 3];
|
|
314
|
+
return [4 /*yield*/, this.treeControl.expand(updatedNode)];
|
|
315
|
+
case 2:
|
|
316
|
+
_a.sent();
|
|
317
|
+
_a.label = 3;
|
|
318
|
+
case 3: return [3 /*break*/, 7];
|
|
319
|
+
case 4: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
|
|
320
|
+
case 5:
|
|
321
|
+
_a.sent();
|
|
322
|
+
updatedNode = this.getNodeById(id);
|
|
323
|
+
if (!updatedNode) return [3 /*break*/, 7];
|
|
324
|
+
return [4 /*yield*/, this.treeControl.expand(updatedNode)];
|
|
325
|
+
case 6:
|
|
326
|
+
_a.sent();
|
|
327
|
+
_a.label = 7;
|
|
328
|
+
case 7: return [3 /*break*/, 10];
|
|
329
|
+
case 8: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
|
|
330
|
+
case 9:
|
|
331
|
+
_a.sent();
|
|
332
|
+
_a.label = 10;
|
|
333
|
+
case 10:
|
|
334
|
+
this.loading = false;
|
|
335
|
+
return [2 /*return*/];
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
};
|
|
340
|
+
/**
|
|
341
|
+
* @return {?}
|
|
342
|
+
*/
|
|
343
|
+
NodeTreeComponent.prototype.ngOnDestroy = /**
|
|
344
|
+
* @return {?}
|
|
345
|
+
*/
|
|
346
|
+
function () {
|
|
347
|
+
this.dataSource.data = [];
|
|
348
|
+
this.nodeTreeService.data = [];
|
|
349
|
+
this.unsubscribe$.next();
|
|
350
|
+
this.unsubscribe$.complete();
|
|
351
|
+
};
|
|
352
|
+
NodeTreeComponent.decorators = [
|
|
353
|
+
{ type: Component, args: [{
|
|
354
|
+
selector: 'lib-node-tree',
|
|
355
|
+
template: "<div class=\"node custom-scrollbar node-tree\">\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\n disabled: loading || homeLoading}\">\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\n class=\"node__home--loading\"></mat-spinner>\n <span>Home</span>\n </div>\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\n class=\"node__item\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\n (click)=\"selectNode(node)\">\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\n node.item?.TotalFile\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n (click)=\"selectNode(node)\"\n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\n }\">\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\n node.item.OriginalFileName\" matTreeNodeToggle\n [disabled]=\"node.isLoading\">\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n </mat-tree>\n</div>",
|
|
356
|
+
styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:-ms-grid;display:grid;grid-auto-rows:-webkit-max-content;grid-auto-rows:max-content}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
|
|
357
|
+
}] }
|
|
358
|
+
];
|
|
359
|
+
/** @nocollapse */
|
|
360
|
+
NodeTreeComponent.ctorParameters = function () { return [
|
|
361
|
+
{ type: NodeTreeService },
|
|
362
|
+
{ type: AssetManagementService },
|
|
363
|
+
{ type: ChangeDetectorRef }
|
|
364
|
+
]; };
|
|
365
|
+
NodeTreeComponent.propDecorators = {
|
|
366
|
+
width: [{ type: Input }]
|
|
367
|
+
};
|
|
368
|
+
return NodeTreeComponent;
|
|
369
|
+
}());
|
|
370
|
+
export { NodeTreeComponent };
|
|
371
|
+
if (false) {
|
|
372
|
+
/** @type {?} */
|
|
373
|
+
NodeTreeComponent.prototype.width;
|
|
374
|
+
/** @type {?} */
|
|
375
|
+
NodeTreeComponent.prototype.currentFolderId;
|
|
376
|
+
/** @type {?} */
|
|
377
|
+
NodeTreeComponent.prototype.isRoot;
|
|
378
|
+
/** @type {?} */
|
|
379
|
+
NodeTreeComponent.prototype.homeLoading;
|
|
380
|
+
/** @type {?} */
|
|
381
|
+
NodeTreeComponent.prototype.loading;
|
|
382
|
+
/** @type {?} */
|
|
383
|
+
NodeTreeComponent.prototype.treeControl;
|
|
384
|
+
/** @type {?} */
|
|
385
|
+
NodeTreeComponent.prototype.dataSource;
|
|
386
|
+
/**
|
|
387
|
+
* @type {?}
|
|
388
|
+
* @private
|
|
389
|
+
*/
|
|
390
|
+
NodeTreeComponent.prototype.unsubscribe$;
|
|
391
|
+
/** @type {?} */
|
|
392
|
+
NodeTreeComponent.prototype.getLevel;
|
|
393
|
+
/** @type {?} */
|
|
394
|
+
NodeTreeComponent.prototype.isExpandable;
|
|
395
|
+
/** @type {?} */
|
|
396
|
+
NodeTreeComponent.prototype.hasChild;
|
|
397
|
+
/**
|
|
398
|
+
* @type {?}
|
|
399
|
+
* @private
|
|
400
|
+
*/
|
|
401
|
+
NodeTreeComponent.prototype.nodeTreeService;
|
|
402
|
+
/**
|
|
403
|
+
* @type {?}
|
|
404
|
+
* @private
|
|
405
|
+
*/
|
|
406
|
+
NodeTreeComponent.prototype.svc;
|
|
407
|
+
/**
|
|
408
|
+
* @type {?}
|
|
409
|
+
* @private
|
|
410
|
+
*/
|
|
411
|
+
NodeTreeComponent.prototype.changeDetectorRef;
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bycy1way9hc3NldC1tYW5hZ2VtZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcGFydGlhbC9ub2RlLXRyZWUvbm9kZS10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRDtJQU1FLDJCQUNVLGVBQWdDLEVBQ2hDLEdBQTJCLEVBQzNCLGlCQUFvQztRQUZwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBd0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVl2QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdmLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQTZGM0MsYUFBUTs7OztRQUFHLFVBQUMsSUFBcUIsSUFBSyxPQUFBLElBQUksQ0FBQyxLQUFL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eyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3NldE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXNzZXQtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVUcmVlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IER5bmFtaWNGbGF0Tm9kZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBOb2RlVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub2RlLXRyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlcywgc2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvaW5kZXgnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbm9kZS10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUtdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vZGUtdHJlZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub2RlVHJlZVNlcnZpY2U6IE5vZGVUcmVlU2VydmljZSxcbiAgICBwcml2YXRlIHN2YzogQXNzZXRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxEeW5hbWljRmxhdE5vZGU+KFxuICAgICAgdGhpcy5nZXRMZXZlbCxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlXG4gICAgKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTm9kZVRyZWVEYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIG5vZGVUcmVlU2VydmljZSk7XG4gIH1cblxuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjdXJyZW50Rm9sZGVySWQ6IHN0cmluZztcbiAgcHVibGljIGlzUm9vdCA9IGZhbHNlO1xuICBwdWJsaWMgaG9tZUxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8RHluYW1pY0ZsYXROb2RlPjtcbiAgcHVibGljIGRhdGFTb3VyY2U6IE5vZGVUcmVlRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmluZFN1YnNjcmliZXIoKTtcbiAgICB0aGlzLmluaXRpYWxEYXRhKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMubm9kZVRyZWVTZXJ2aWNlLmluaXRpYWxEYXRhKHsgZGlzcGF0Y2hSb290SWQ6IHRydWUgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRTdWJzY3JpYmVyKCkge1xuICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmxvYWRpbmckXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgobG9hZGluZykgPT4ge1xuICAgICAgICB0aGlzLmhvbWVMb2FkaW5nID0gbG9hZGluZztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmluaXRpYWxEYXRhJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgeyBBc3NldElkOiByb290SWQgfSA9IHRoaXMubm9kZVRyZWVTZXJ2aWNlLnJvb3RGb2xkZXIgfHwge0Fzc2V0SWQ6IG51bGx9O1xuICAgICAgICB0aGlzLmlzUm9vdCA9IHJvb3RJZCAmJiB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9PT0gcm9vdElkO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgobm9kZSkgPT4gdGhpcy5ub2RlVHJlZVNlcnZpY2UuYWRkTm9kZShub2RlLml0ZW0sIG51bGwpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmN1cnJlbnRGb2xkZXJJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChpZCkgPT4ge1xuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICBjb25zdCB7IEFzc2V0SWQ6IHJvb3RJZCB9ID0gdGhpcy5ub2RlVHJlZVNlcnZpY2Uucm9vdEZvbGRlciB8fCB7QXNzZXRJZDogbnVsbH07XG4gICAgICAgICAgdGhpcy5pc1Jvb3QgPSByb290SWQgJiYgaWQgPT09IHJvb3RJZDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGb2xkZXJJZCA9IGlkO1xuICAgICAgICAgIGF3YWl0IHRoaXMubm9kZVRyZWVTZXJ2aWNlLnVwZGF0ZUJyZWFkY3J1bWIoaWQpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnJlbG9hZEN1cnJlbnRGb2xkZXIpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLCBzd2l0Y2hNYXAoKHJlcykgPT4gb2YocmVzKSkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZWxvYWRGb2xkZXIodGhpcy5jdXJyZW50Rm9sZGVySWQpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbGVjdE5vZGUobm9kZTogRHluYW1pY0ZsYXROb2RlKSB7XG4gICAgY29uc3QgeyBBc3NldElkOiBpZCB9ID0gbm9kZS5pdGVtO1xuICAgIGlmIChpZCA9PT0gdGhpcy5jdXJyZW50Rm9sZGVySWQpIHtcbiAgICAgIHRoaXMuc3ZjLmRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogQWN0aW9uVHlwZXMuUkVMT0FEX0NVUlJFTlRfTk9ERSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9DVVJSRU5UX0ZPTERFUl9JRCxcbiAgICAgICAgcGF5bG9hZDogaWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVSZWxvYWRGb2xkZXIoaWQpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGJhY2tUb0hvbWUoKSB7XG4gICAgdGhpcy5pbml0aWFsRGF0YSgpO1xuICAgIGNvbnN0IHsgQXNzZXRJZDogcm9vdElkIH0gPSB0aGlzLm5vZGVUcmVlU2VydmljZS5yb290Rm9sZGVyO1xuICAgIGlmICh0aGlzLmN1cnJlbnRGb2xkZXJJZCA9PT0gcm9vdElkKSB7XG4gICAgICB0aGlzLnN2Yy5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTE9BRF9DVVJSRU5UX05PREUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIGNoZWNrZWQobm9kZTogRHluYW1pY0ZsYXROb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZvbGRlcklkICYmIHRoaXMuY3VycmVudEZvbGRlcklkID09PSBub2RlLml0ZW0uQXNzZXRJZDtcbiAgfVxuXG4gIGRpc2FibGVkKG5vZGU6IER5bmFtaWNGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub2RlLmV4cGFuZGFibGU7XG4gIH1cblxuICBnZXRMZXZlbCA9IChub2RlOiBEeW5hbWljRmxhdE5vZGUpID0+IG5vZGUubGV2ZWw7XG5cbiAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IER5bmFtaWNGbGF0Tm9kZSkgPT4gbm9kZS5leHBhbmRhYmxlO1xuXG4gIGhhc0NoaWxkID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBEeW5hbWljRmxhdE5vZGUpID0+IF9ub2RlRGF0YS5leHBhbmRhYmxlO1xuXG4gIGdldFBhcmVudChub2RlOiBEeW5hbWljRmxhdE5vZGUpOiBEeW5hbWljRmxhdE5vZGUge1xuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHRoaXMuZ2V0TGV2ZWwobm9kZSk7XG5cbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmluZGV4T2Yobm9kZSkgLSAxO1xuXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhW2ldO1xuICAgICAgaWYgKHRoaXMuZ2V0TGV2ZWwoY3VycmVudE5vZGUpIDwgY3VycmVudExldmVsKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXROb2RlQnlJZChpZDogc3RyaW5nKTogRHluYW1pY0ZsYXROb2RlIHtcbiAgICByZXR1cm4gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pdGVtLkFzc2V0SWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUmVsb2FkRm9sZGVyKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGVCeUlkKGlkKTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQobm9kZSk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5yZWxvYWROb2RlKHBhcmVudCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWROb2RlID0gdGhpcy5nZXROb2RlQnlJZChpZCk7XG4gICAgICAgIGlmICh1cGRhdGVkTm9kZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHVwZGF0ZWROb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ub2RlVHJlZVNlcnZpY2UuaW5pdGlhbERhdGEoeyBkaXNwYXRjaFJvb3RJZDogZmFsc2UgfSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWROb2RlID0gdGhpcy5nZXROb2RlQnlJZChpZCk7XG4gICAgICAgIGlmICh1cGRhdGVkTm9kZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHVwZGF0ZWROb2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLm5vZGVUcmVlU2VydmljZS5pbml0aWFsRGF0YSh7IGRpc3BhdGNoUm9vdElkOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IFtdO1xuICAgIHRoaXMubm9kZVRyZWVTZXJ2aWNlLmRhdGEgPSBbXTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { Component } from '@angular/core';
|
|
7
|
+
import { combineLatest } from 'rxjs/internal/observable/combineLatest';
|
|
8
|
+
import { of } from 'rxjs/internal/observable/of';
|
|
9
|
+
import { Subject } from 'rxjs/internal/Subject';
|
|
10
|
+
import { switchMap, takeUntil } from 'rxjs/operators';
|
|
11
|
+
import { AssetManagementService } from '../../../asset-management.service';
|
|
12
|
+
import { AssetService } from '../../../services/asset.service';
|
|
13
|
+
import { ActionTypes, select } from '../../../store';
|
|
14
|
+
var SearchBoxComponent = /** @class */ (function () {
|
|
15
|
+
function SearchBoxComponent(assetService, svc) {
|
|
16
|
+
this.assetService = assetService;
|
|
17
|
+
this.svc = svc;
|
|
18
|
+
this.destroy$ = new Subject();
|
|
19
|
+
this.value = '';
|
|
20
|
+
this.folderId = '';
|
|
21
|
+
this.bindingSubscriber();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @return {?}
|
|
25
|
+
*/
|
|
26
|
+
SearchBoxComponent.prototype.ngOnInit = /**
|
|
27
|
+
* @return {?}
|
|
28
|
+
*/
|
|
29
|
+
function () { };
|
|
30
|
+
/**
|
|
31
|
+
* @private
|
|
32
|
+
* @return {?}
|
|
33
|
+
*/
|
|
34
|
+
SearchBoxComponent.prototype.bindingSubscriber = /**
|
|
35
|
+
* @private
|
|
36
|
+
* @return {?}
|
|
37
|
+
*/
|
|
38
|
+
function () {
|
|
39
|
+
var _this = this;
|
|
40
|
+
select((/**
|
|
41
|
+
* @param {?} state
|
|
42
|
+
* @return {?}
|
|
43
|
+
*/
|
|
44
|
+
function (state) { return state.currentFolderId; }))
|
|
45
|
+
.pipe(takeUntil(this.destroy$), switchMap((/**
|
|
46
|
+
* @param {?} res
|
|
47
|
+
* @return {?}
|
|
48
|
+
*/
|
|
49
|
+
function (res) { return of(res); })))
|
|
50
|
+
.subscribe((/**
|
|
51
|
+
* @param {?} currentFolderId
|
|
52
|
+
* @return {?}
|
|
53
|
+
*/
|
|
54
|
+
function (currentFolderId) { return (_this.folderId = currentFolderId); }));
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* @param {?} event
|
|
58
|
+
* @return {?}
|
|
59
|
+
*/
|
|
60
|
+
SearchBoxComponent.prototype.onChange = /**
|
|
61
|
+
* @param {?} event
|
|
62
|
+
* @return {?}
|
|
63
|
+
*/
|
|
64
|
+
function (event) {
|
|
65
|
+
this.value = ((/** @type {?} */ (event.target))).value;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* @return {?}
|
|
69
|
+
*/
|
|
70
|
+
SearchBoxComponent.prototype.onSubmit = /**
|
|
71
|
+
* @return {?}
|
|
72
|
+
*/
|
|
73
|
+
function () {
|
|
74
|
+
if (!this.value && !this.assetService.keyword) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.assetService.keyword = this.value;
|
|
78
|
+
this.searchByName();
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* @return {?}
|
|
82
|
+
*/
|
|
83
|
+
SearchBoxComponent.prototype.clearSearch = /**
|
|
84
|
+
* @return {?}
|
|
85
|
+
*/
|
|
86
|
+
function () {
|
|
87
|
+
if (!this.assetService.keyword) {
|
|
88
|
+
this.value = '';
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.value = '';
|
|
92
|
+
this.assetService.keyword = '';
|
|
93
|
+
this.searchByName();
|
|
94
|
+
this.assetService.setFolderList(null);
|
|
95
|
+
this.assetService.setAssetList(null);
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* @private
|
|
99
|
+
* @return {?}
|
|
100
|
+
*/
|
|
101
|
+
SearchBoxComponent.prototype.searchByName = /**
|
|
102
|
+
* @private
|
|
103
|
+
* @return {?}
|
|
104
|
+
*/
|
|
105
|
+
function () {
|
|
106
|
+
var _this = this;
|
|
107
|
+
this.svc.dispatch({
|
|
108
|
+
type: ActionTypes.SET_GLOBAL_LOADING,
|
|
109
|
+
payload: true,
|
|
110
|
+
});
|
|
111
|
+
combineLatest([
|
|
112
|
+
this.assetService.getChildrenFolders({ assetId: this.folderId }),
|
|
113
|
+
this.assetService.getChildrenAssets({
|
|
114
|
+
assetId: this.folderId,
|
|
115
|
+
pageIndex: '0',
|
|
116
|
+
}),
|
|
117
|
+
])
|
|
118
|
+
.pipe(takeUntil(this.destroy$))
|
|
119
|
+
.subscribe((/**
|
|
120
|
+
* @param {?} __0
|
|
121
|
+
* @return {?}
|
|
122
|
+
*/
|
|
123
|
+
function (_a) {
|
|
124
|
+
var _b = tslib_1.__read(_a, 2), folders = _b[0], assets = _b[1];
|
|
125
|
+
_this.assetService.setFolderList(folders.Data, folders.Meta.Total);
|
|
126
|
+
_this.assetService.setAssetList(assets.Data.Children, assets.Meta);
|
|
127
|
+
}))
|
|
128
|
+
.add((/**
|
|
129
|
+
* @return {?}
|
|
130
|
+
*/
|
|
131
|
+
function () {
|
|
132
|
+
_this.svc.dispatch({
|
|
133
|
+
type: ActionTypes.SET_GLOBAL_LOADING,
|
|
134
|
+
payload: false,
|
|
135
|
+
});
|
|
136
|
+
}));
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* @return {?}
|
|
140
|
+
*/
|
|
141
|
+
SearchBoxComponent.prototype.ngOnDestroy = /**
|
|
142
|
+
* @return {?}
|
|
143
|
+
*/
|
|
144
|
+
function () {
|
|
145
|
+
this.destroy$.next();
|
|
146
|
+
this.destroy$.complete();
|
|
147
|
+
};
|
|
148
|
+
SearchBoxComponent.decorators = [
|
|
149
|
+
{ type: Component, args: [{
|
|
150
|
+
selector: 'lib-search-box',
|
|
151
|
+
template: "<form (ngSubmit)=\"onSubmit()\">\n <label for=\"search-assets\">\n <mat-icon>search</mat-icon>\n </label>\n <input\n class=\"search-input\"\n id=\"search-assets\"\n [value]=\"value\"\n (input)=\"onChange($event)\"\n matInput\n placeholder=\"Search assets...\"\n autocomplete=\"off\"\n required\n />\n <mat-icon\n [class.visible]=\"value || assetService.keyword\"\n (click)=\"clearSearch()\"\n matTooltip=\"Clear search\"\n >close</mat-icon\n >\n</form>\n",
|
|
152
|
+
styles: [":host::ng-deep{display:flex;align-items:center;width:300px;height:40px}:host::ng-deep form{width:100%;position:relative}:host::ng-deep label{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:rgba(0,0,0,.38);display:flex;align-items:center}:host::ng-deep input.search-input{width:100%;padding:10px 40px;border:1px solid #d8d8d8;border-radius:5px;color:#000;font-size:14px}:host::ng-deep input.search-input+.mat-icon{display:none;position:absolute;right:10px;top:50%;transform:translateY(-50%);color:rgba(0,0,0,.38);font-size:20px;cursor:pointer;align-items:center}:host::ng-deep input.search-input+.mat-icon.visible{display:flex}"]
|
|
153
|
+
}] }
|
|
154
|
+
];
|
|
155
|
+
/** @nocollapse */
|
|
156
|
+
SearchBoxComponent.ctorParameters = function () { return [
|
|
157
|
+
{ type: AssetService },
|
|
158
|
+
{ type: AssetManagementService }
|
|
159
|
+
]; };
|
|
160
|
+
return SearchBoxComponent;
|
|
161
|
+
}());
|
|
162
|
+
export { SearchBoxComponent };
|
|
163
|
+
if (false) {
|
|
164
|
+
/**
|
|
165
|
+
* @type {?}
|
|
166
|
+
* @private
|
|
167
|
+
*/
|
|
168
|
+
SearchBoxComponent.prototype.destroy$;
|
|
169
|
+
/** @type {?} */
|
|
170
|
+
SearchBoxComponent.prototype.value;
|
|
171
|
+
/**
|
|
172
|
+
* @type {?}
|
|
173
|
+
* @private
|
|
174
|
+
*/
|
|
175
|
+
SearchBoxComponent.prototype.folderId;
|
|
176
|
+
/** @type {?} */
|
|
177
|
+
SearchBoxComponent.prototype.assetService;
|
|
178
|
+
/**
|
|
179
|
+
* @type {?}
|
|
180
|
+
* @private
|
|
181
|
+
*/
|
|
182
|
+
SearchBoxComponent.prototype.svc;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcnMtcGsvYXNzZXQtbWFuYWdlbWVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3BhcnRpYWwvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQ7SUFTRSw0QkFDUyxZQUEwQixFQUN6QixHQUEyQjtRQUQ1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUw3QixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNWLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFLcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQzs7OztJQUVELHFDQUFROzs7SUFBUixjQUFZLENBQUM7Ozs7O0lBRUwsOENBQWlCOzs7O0lBQXpCO1FBQUEsaUJBT0M7UUFOQyxNQUFNOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsZUFBZSxFQUFy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QyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0JBaEZGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQiwrZkFBMEM7O2lCQUUzQzs7OztnQkFQUSxZQUFZO2dCQURaLHNCQUFzQjs7SUFxRi9CLHlCQUFDO0NBQUEsQUFqRkQsSUFpRkM7U0E1RVksa0JBQWtCOzs7Ozs7SUFDN0Isc0NBQW1EOztJQUNuRCxtQ0FBa0I7Ozs7O0lBQ2xCLHNDQUFzQjs7SUFFcEIsMENBQWlDOzs7OztJQUNqQyxpQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL2NvbWJpbmVMYXRlc3QnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvb2YnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3ViamVjdCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFzc2V0TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hc3NldC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXNzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXNzZXQuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlcywgc2VsZWN0IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2VhcmNoLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWJveC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgdmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBmb2xkZXJJZCA9ICcnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXNzZXRTZXJ2aWNlOiBBc3NldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdmM6IEFzc2V0TWFuYWdlbWVudFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iaW5kaW5nU3Vic2NyaWJlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHByaXZhdGUgYmluZGluZ1N1YnNjcmliZXIoKSB7XG4gICAgc2VsZWN0KHN0YXRlID0+IHN0YXRlLmN1cnJlbnRGb2xkZXJJZClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIHN3aXRjaE1hcChyZXMgPT4gb2YocmVzKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoY3VycmVudEZvbGRlcklkID0+ICh0aGlzLmZvbGRlcklkID0gY3VycmVudEZvbGRlcklkKSk7XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICghdGhpcy52YWx1ZSAmJiAhdGhpcy5hc3NldFNlcnZpY2Uua2V5d29yZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFzc2V0U2VydmljZS5rZXl3b3JkID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaEJ5TmFtZSgpO1xuICB9XG5cbiAgY2xlYXJTZWFyY2goKSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0U2VydmljZS5rZXl3b3JkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLmtleXdvcmQgPSAnJztcbiAgICB0aGlzLnNlYXJjaEJ5TmFtZSgpO1xuICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEZvbGRlckxpc3QobnVsbCk7XG4gICAgdGhpcy5hc3NldFNlcnZpY2Uuc2V0QXNzZXRMaXN0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hCeU5hbWUoKSB7XG4gICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0dMT0JBTF9MT0FESU5HLFxuICAgICAgcGF5bG9hZDogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLmdldENoaWxkcmVuRm9sZGVycyh7IGFzc2V0SWQ6IHRoaXMuZm9sZGVySWQgfSksXG4gICAgICB0aGlzLmFzc2V0U2VydmljZS5nZXRDaGlsZHJlbkFzc2V0cyh7XG4gICAgICAgIGFzc2V0SWQ6IHRoaXMuZm9sZGVySWQsXG4gICAgICAgIHBhZ2VJbmRleDogJzAnLFxuICAgICAgfSksXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtmb2xkZXJzLCBhc3NldHNdKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzZXRTZXJ2aWNlLnNldEZvbGRlckxpc3QoZm9sZGVycy5EYXRhLCBmb2xkZXJzLk1ldGEuVG90YWwpO1xuICAgICAgICB0aGlzLmFzc2V0U2VydmljZS5zZXRBc3NldExpc3QoYXNzZXRzLkRhdGEuQ2hpbGRyZW4sIGFzc2V0cy5NZXRhKTtcbiAgICAgIH0pXG4gICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdmMuZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9HTE9CQUxfTE9BRElORyxcbiAgICAgICAgICBwYXlsb2FkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|