nuxeo-development-framework 2.0.9 → 3.0.1
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/bundles/nuxeo-development-framework.umd.js +8683 -454
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +84 -0
- package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +35 -0
- package/esm2015/lib/components/activities-log/activities-log.module.js +30 -0
- package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +54 -0
- package/esm2015/lib/components/attachment-item/attachment-item.module.js +44 -0
- package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +40 -0
- package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +157 -0
- package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +30 -0
- package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +30 -0
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +44 -0
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +140 -0
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +24 -0
- package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +177 -0
- package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +43 -0
- package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +39 -0
- package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +34 -0
- package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +132 -0
- package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +264 -0
- package/esm2015/lib/components/file-manger/components/copy/copy.component.js +119 -0
- package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +91 -0
- package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +455 -0
- package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +26 -0
- package/esm2015/lib/components/file-manger/components/delete/delete.component.js +77 -0
- package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +114 -0
- package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +80 -0
- package/esm2015/lib/components/file-manger/components/move/move.component.js +108 -0
- package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +111 -0
- package/esm2015/lib/components/file-manger/components/rename/rename.component.js +86 -0
- package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +314 -0
- package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +294 -0
- package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +257 -0
- package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +64 -0
- package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +71 -0
- package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +358 -0
- package/esm2015/lib/components/file-manger/file-manager.abstract.js +1031 -0
- package/esm2015/lib/components/file-manger/file-manger.module.js +295 -0
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +51 -0
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +30 -0
- package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +177 -0
- package/esm2015/lib/components/permissions/permission.service.js +118 -0
- package/esm2015/lib/components/permissions/permissions/permissions.component.js +232 -0
- package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +117 -0
- package/esm2015/lib/components/permissions/permissions.module.js +71 -0
- package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +47 -0
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +27 -0
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +116 -0
- package/esm2015/lib/components/user/user/user.component.js +29 -0
- package/esm2015/lib/components/user/user.module.js +30 -0
- package/esm2015/lib/directive/directive.module.js +9 -4
- package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +46 -0
- package/esm2015/lib/shared/libraryShared.module.js +1 -4
- package/esm2015/lib/shared-services/dialog-mangment.service.js +61 -0
- package/esm2015/lib/shared-services/dynamic-form.service.js +241 -0
- package/esm2015/lib/shared-services/file-manager.adapter.js +74 -0
- package/esm2015/lib/shared-services/file-manager.service.js +793 -0
- package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
- package/esm2015/lib/shared-services/mainfolder.service.js +160 -0
- package/esm2015/lib/shared-services/publishing-document.service.js +202 -0
- package/esm2015/lib/shared-services/recently-viewed.service.js +57 -0
- package/esm2015/lib/shared-services/shared-docs.service.js +135 -0
- package/esm2015/lib/shared-services/shared-services.module.js +20 -0
- package/esm2015/lib/shared-services/upload-file.service.js +29 -0
- package/esm2015/lib/shared-services/upload-managment.service.js +151 -0
- package/esm2015/lib/shared-services/user.service.js +54 -0
- package/esm2015/public-api.js +65 -1
- package/fesm2015/nuxeo-development-framework.js +7969 -154
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/activities-log/activities-log/activities-log.component.d.ts +23 -0
- package/lib/components/activities-log/activities-log/activities-log.service.d.ts +9 -0
- package/lib/components/activities-log/activities-log.module.d.ts +10 -0
- package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +21 -0
- package/lib/components/attachment-item/attachment-item.module.d.ts +13 -0
- package/lib/components/attachment-modal/attachment-modal.module.d.ts +12 -0
- package/lib/components/attachment-modal/attachments/attachments.component.d.ts +50 -0
- package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
- package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +10 -0
- package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +17 -0
- package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +8 -0
- package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +8 -0
- package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +137 -0
- package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +12 -0
- package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +13 -0
- package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +11 -0
- package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +31 -0
- package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +41 -0
- package/lib/components/file-manger/components/copy/copy.component.d.ts +32 -0
- package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +24 -0
- package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +108 -0
- package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +11 -0
- package/lib/components/file-manger/components/delete/delete.component.d.ts +30 -0
- package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +56 -0
- package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +23 -0
- package/lib/components/file-manger/components/move/move.component.d.ts +32 -0
- package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +32 -0
- package/lib/components/file-manger/components/rename/rename.component.d.ts +25 -0
- package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +95 -0
- package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +58 -0
- package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +62 -0
- package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +34 -0
- package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +24 -0
- package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +194 -0
- package/lib/components/file-manger/file-manager.abstract.d.ts +173 -0
- package/lib/components/file-manger/file-manger.module.d.ts +59 -0
- package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +17 -0
- package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +10 -0
- package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +44 -0
- package/lib/components/permissions/permission.service.d.ts +21 -0
- package/lib/components/permissions/permissions/permissions.component.d.ts +48 -0
- package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +22 -0
- package/lib/components/permissions/permissions.module.d.ts +21 -0
- package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +13 -0
- package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +10 -0
- package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +33 -0
- package/lib/components/user/user/user.component.d.ts +12 -0
- package/lib/components/user/user.module.d.ts +10 -0
- package/lib/directive/directive.module.d.ts +3 -2
- package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +11 -0
- package/lib/shared/libraryShared.module.d.ts +1 -1
- package/lib/shared-services/dialog-mangment.service.d.ts +15 -0
- package/lib/shared-services/dynamic-form.service.d.ts +24 -0
- package/lib/shared-services/file-manager.adapter.d.ts +48 -0
- package/lib/shared-services/file-manager.service.d.ts +94 -0
- package/lib/shared-services/global-pdftron.service.d.ts +10 -0
- package/lib/shared-services/mainfolder.service.d.ts +32 -0
- package/lib/shared-services/publishing-document.service.d.ts +25 -0
- package/lib/shared-services/recently-viewed.service.d.ts +17 -0
- package/lib/shared-services/shared-docs.service.d.ts +21 -0
- package/lib/shared-services/shared-services.module.d.ts +7 -0
- package/lib/shared-services/upload-file.service.d.ts +10 -0
- package/lib/shared-services/upload-managment.service.d.ts +72 -0
- package/lib/shared-services/user.service.d.ts +12 -0
- package/package.json +7 -6
- package/public-api.d.ts +62 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../../../shared-services/file-manager.service";
|
|
4
|
+
import * as i2 from "../../../../shared-services/user.service";
|
|
5
|
+
import * as i3 from "../../../custom-toastr/services/custom-toastr.service";
|
|
6
|
+
import * as i4 from "../../../../Core/services/user/user-preferences.service";
|
|
7
|
+
import * as i5 from "@angular/material/icon";
|
|
8
|
+
import * as i6 from "@angular/material/progress-bar";
|
|
9
|
+
import * as i7 from "@angular/material/checkbox";
|
|
10
|
+
import * as i8 from "../../../display-suitable-icon/display-suitable-icon/display-suitable-icon.component";
|
|
11
|
+
import * as i9 from "@angular/material/tooltip";
|
|
12
|
+
import * as i10 from "@angular/common";
|
|
13
|
+
import * as i11 from "@angular/forms";
|
|
14
|
+
import * as i12 from "@ngx-translate/core";
|
|
15
|
+
export class ClipboardComponent {
|
|
16
|
+
constructor(fileManagerService, userService, customToastrService, userPreferenceService) {
|
|
17
|
+
this.fileManagerService = fileManagerService;
|
|
18
|
+
this.userService = userService;
|
|
19
|
+
this.customToastrService = customToastrService;
|
|
20
|
+
this.userPreferenceService = userPreferenceService;
|
|
21
|
+
this.onClipboardClose = new EventEmitter();
|
|
22
|
+
this.onRefreshFolderTree = new EventEmitter();
|
|
23
|
+
this.clipboardItems = []; // array of id to items in clipboard
|
|
24
|
+
this.preventedGroups = [];
|
|
25
|
+
this.clipboardDocments = []; // array of documents with full details of items in clipboard
|
|
26
|
+
this.enableCopy = false;
|
|
27
|
+
this.enableMove = false;
|
|
28
|
+
this.clipboardLoading = false;
|
|
29
|
+
this.documentSelectedInClipboard = [];
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
this.refreshClipSubscription = this.fileManagerService.onRefreshClipboard.subscribe(res => {
|
|
33
|
+
this.openClipboard();
|
|
34
|
+
});
|
|
35
|
+
this.openClipboard();
|
|
36
|
+
}
|
|
37
|
+
ngOnDestroy() {
|
|
38
|
+
this.refreshClipSubscription ? this.refreshClipSubscription.unsubscribe() : null;
|
|
39
|
+
}
|
|
40
|
+
closeClipboard() {
|
|
41
|
+
this.onClipboardClose.emit();
|
|
42
|
+
this.clipboardDocments = [];
|
|
43
|
+
}
|
|
44
|
+
openClipboard() {
|
|
45
|
+
this.enableCopy = false;
|
|
46
|
+
this.enableMove = false;
|
|
47
|
+
this.clipboardLoading = true;
|
|
48
|
+
if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] && this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] !== '08112021') {
|
|
49
|
+
// get accepted childerns for my current folder
|
|
50
|
+
// if (this.subtypesService.storedSubtypes[this.myCurrecntFolderData.entity.uid]) {
|
|
51
|
+
// this.myTargetFolderAcceptedChildrens = this.subtypesService.storedSubtypes[this.myCurrecntFolderData.entity.uid];
|
|
52
|
+
// } else {
|
|
53
|
+
this.fileManagerService.getClipboardAcceptedTypes(this.myCurrecntFolderData.entity.uid).subscribe(res => {
|
|
54
|
+
this.myTargetFolderAcceptedChildrens = res;
|
|
55
|
+
}, error => {
|
|
56
|
+
this.clipboardLoading = false;
|
|
57
|
+
this.clipboardDocments = [];
|
|
58
|
+
});
|
|
59
|
+
// }
|
|
60
|
+
}
|
|
61
|
+
if (this.clipboardItems.length > 0) {
|
|
62
|
+
this.fileManagerService.getClipboardDocuments(this.clipboardItems).subscribe(res => {
|
|
63
|
+
res.map(document => {
|
|
64
|
+
document['canCopyToTarget'] = (this.canPerformActionInsideTarget(document) && this.checkIfNotTheSameParent(document) && document.canCopy);
|
|
65
|
+
document['canMoveToTarget'] = (this.canPerformActionInsideTarget(document) && this.checkIfNotTheSameParent(document) && document.canMove);
|
|
66
|
+
});
|
|
67
|
+
this.clipboardDocments = res;
|
|
68
|
+
console.log(this.clipboardDocments);
|
|
69
|
+
this.clipboardLoading = false;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.clipboardDocments = [];
|
|
74
|
+
this.clipboardLoading = false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// prevent copying or moving the file to its same place since it is prevented
|
|
78
|
+
// prevent copying or moving the folder inside it self
|
|
79
|
+
checkIfNotTheSameParent(document) {
|
|
80
|
+
// let directory = this.getCurrentDirectory();
|
|
81
|
+
if (document.parentRef !== this.directory.dataItem.id && document.uid !== this.directory.dataItem.id) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
deletefromClipboard(document) {
|
|
89
|
+
let myindex = -1;
|
|
90
|
+
this.clipboardItems.map((id, index) => {
|
|
91
|
+
if (document.uid === id) {
|
|
92
|
+
myindex = index;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
this.clipboardItems.splice(myindex, 1);
|
|
96
|
+
this.customToastrService.show('success', 'TOASTER.SUCCESS', "TOASTER.removed_from_clipboard");
|
|
97
|
+
// let directory = this.getCurrentDirectory();
|
|
98
|
+
// let id =
|
|
99
|
+
// directory.dataItem === undefined
|
|
100
|
+
// ? this.mainFolder
|
|
101
|
+
// : this.getCurrentFolderId(directory);
|
|
102
|
+
// this.reinitializeFolderTree(id, directory);
|
|
103
|
+
this.onRefreshFolderTree.emit();
|
|
104
|
+
this.openClipboard();
|
|
105
|
+
this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
|
|
106
|
+
}
|
|
107
|
+
// function to check if i can perform action on that target folder or not
|
|
108
|
+
canPerformActionInsideTarget(document) {
|
|
109
|
+
var _a;
|
|
110
|
+
//check if target is 'other' type folder or dms folder
|
|
111
|
+
if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] === '08112021' && !this.checkIfInPreventedGroups(this.myCurrecntFolderData.entity.path)) {
|
|
112
|
+
// if my folder is from type others and not in prevented groups
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
else if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] && this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] !== '08112021') {
|
|
116
|
+
//if my folder has code and was not other type folder then check for accepted chilrdrn for that folder to contain this file type
|
|
117
|
+
if (document.isFile === 'File') {
|
|
118
|
+
if (this.myTargetFolderAcceptedChildrens.contextParameters &&
|
|
119
|
+
this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children && Array.isArray(this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children) &&
|
|
120
|
+
this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children.indexOf(document.properties['gdoc:documentTypeCode']) > -1) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
if (this.myTargetFolderAcceptedChildrens.contextParameters &&
|
|
129
|
+
this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children && Array.isArray(this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children) &&
|
|
130
|
+
((_a = this.myTargetFolderAcceptedChildrens.contextParameters) === null || _a === void 0 ? void 0 : _a.accepted_children.indexOf(document.properties['dmsfolder:documentTypeCode'])) > -1) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// prevent action to this target
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// function to check if this path not belong to group that is prevented from creating folder of type others
|
|
144
|
+
checkIfInPreventedGroups(path) {
|
|
145
|
+
// if in prevented froup rturn true else return false
|
|
146
|
+
console.log(path);
|
|
147
|
+
let myDepartment = this.userService.getUserDepartmentFromPath(path);
|
|
148
|
+
let exist = this.preventedGroups.indexOf(myDepartment) > -1 ? true : false;
|
|
149
|
+
return exist;
|
|
150
|
+
}
|
|
151
|
+
copyFromInsideClipboard() {
|
|
152
|
+
let clipboardSelectedItems = [];
|
|
153
|
+
let clipboardSelectedItemsLength = 0;
|
|
154
|
+
// seperate selected items in seperate array
|
|
155
|
+
this.clipboardDocments.map((doc, index) => {
|
|
156
|
+
// can't copy file in the same place it exist and can't copy folder inside it self
|
|
157
|
+
if (doc.isSelected && doc.parentRef !== this.directory.dataItem.id && doc.uid !== this.directory.dataItem.id) {
|
|
158
|
+
clipboardSelectedItems.push(doc.uid);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
if (clipboardSelectedItems.length > 0) {
|
|
162
|
+
this.clipboardLoading = true;
|
|
163
|
+
// this.currentPath = '';
|
|
164
|
+
this.fileManagerService
|
|
165
|
+
.copyTo({ id: this.directory.dataItem.id, name: this.directory.dataItem.name }, clipboardSelectedItems.toString())
|
|
166
|
+
.subscribe((res) => {
|
|
167
|
+
// remove selected items from clipboard after action is done
|
|
168
|
+
this.removeItemsAfterActionDone(clipboardSelectedItems);
|
|
169
|
+
this.clipboardLoading = false;
|
|
170
|
+
this.onClipboardClose.emit();
|
|
171
|
+
this.onRefreshFolderTree.emit();
|
|
172
|
+
this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_COPIED');
|
|
173
|
+
}, (err) => {
|
|
174
|
+
this.clipboardLoading = false;
|
|
175
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_ERROR');
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_DESTINATION_ERROR');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
moveFromInsideClipboard() {
|
|
183
|
+
let clipboardSelectedItems = [];
|
|
184
|
+
let clipboardSelectedItemsLength = 0;
|
|
185
|
+
// seperate selected items in seperate array
|
|
186
|
+
this.clipboardDocments.map((doc, index) => {
|
|
187
|
+
// can't move file in the same place it exist and can't move folder inside it self
|
|
188
|
+
if (doc.isSelected && doc.parentRef !== this.directory.dataItem.id && doc.uid !== this.directory.dataItem.id) {
|
|
189
|
+
clipboardSelectedItems.push(doc.uid);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
if (clipboardSelectedItems.length > 0) {
|
|
193
|
+
this.clipboardLoading = true;
|
|
194
|
+
this.fileManagerService
|
|
195
|
+
.moveTo({ id: this.directory.dataItem.id, name: this.directory.dataItem.name }, clipboardSelectedItems.toString())
|
|
196
|
+
.subscribe((res) => {
|
|
197
|
+
// remove selected items from clipboard after action is done
|
|
198
|
+
this.removeItemsAfterActionDone(clipboardSelectedItems);
|
|
199
|
+
this.clipboardLoading = false;
|
|
200
|
+
this.onClipboardClose.emit();
|
|
201
|
+
this.onRefreshFolderTree.emit();
|
|
202
|
+
this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_MOVED');
|
|
203
|
+
}, (err) => {
|
|
204
|
+
this.clipboardLoading = false;
|
|
205
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_ERROR');
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
else
|
|
209
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_DESTINATION_ERROR');
|
|
210
|
+
}
|
|
211
|
+
removeItemsAfterActionDone(selectedItems) {
|
|
212
|
+
this.clipboardItems = this.clipboardItems.filter(function (el) {
|
|
213
|
+
return !selectedItems.includes(el);
|
|
214
|
+
});
|
|
215
|
+
this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
|
|
216
|
+
}
|
|
217
|
+
checking() {
|
|
218
|
+
this.enableCopy = false;
|
|
219
|
+
this.enableMove = false;
|
|
220
|
+
this.documentSelectedInClipboard = [];
|
|
221
|
+
// console.log(this.clipboardDocments);
|
|
222
|
+
this.clipboardDocments.map(document => {
|
|
223
|
+
// wokring with only selected documents
|
|
224
|
+
if (document.isSelected === true) {
|
|
225
|
+
// document['canCopyToTarget'] = (this.canPerformActionInsideTarget(document) && document.canCopy);
|
|
226
|
+
// document['canMoveToTarget'] = (this.canPerformActionInsideTarget(document) && document.canMove)
|
|
227
|
+
this.documentSelectedInClipboard.push(document);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
if (this.documentSelectedInClipboard.length > 0) {
|
|
231
|
+
this.enableCopy = this.documentSelectedInClipboard.every(item => {
|
|
232
|
+
return item.canCopyToTarget === true;
|
|
233
|
+
});
|
|
234
|
+
this.enableMove = this.documentSelectedInClipboard.every(item => {
|
|
235
|
+
return item.canMoveToTarget === true;
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
console.log(this.documentSelectedInClipboard);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
ClipboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ClipboardComponent, deps: [{ token: i1.FileManagerService }, { token: i2.UserService }, { token: i3.CustomToastrService }, { token: i4.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
242
|
+
ClipboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ClipboardComponent, selector: "lib-clipboard", inputs: { clipboardItems: "clipboardItems", myCurrecntFolderData: "myCurrecntFolderData", preventedGroups: "preventedGroups", directory: "directory" }, outputs: { onClipboardClose: "onClipboardClose", onRefreshFolderTree: "onRefreshFolderTree" }, ngImport: i0, template: "<div class=\"clipboard-side-section relative\">\n\n <div class=\"p-3 h-full\">\n <div class=\"clipboard-header flex justify-between items-center border-b-2\">\n <span class=\"flex text-gray-500 font-bold items-center\">\n <span class=\"text-4xl bi bi-clipboard\"></span>\n <span class=\"mx-2 text-xl\">{{'clipboard' | translate}}</span>\n </span>\n <mat-icon class=\"close-icon text-gray-500 cursor-pointer\" (click)=\"closeClipboard()\"\n [matTooltip]=\"'BUTTONS.CLOSE' | translate\">close</mat-icon>\n </div>\n <!-- <div class=\"h-full font-bold d-flex justify-center items-center\" *ngIf=\"clipboardLoading\">\n {{ \"loading\" | translate }}\n </div> -->\n <div class=\"w-full h-px bg-gray-200 mb-3\" *ngIf=\"clipboardLoading\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <div class=\"clipboard-content flex flex-col justify-between items-between\">\n <div class=\"h-full flex justify-center items-center text-gray-500\"\n *ngIf=\"clipboardDocments.length === 0\">{{'no_clipboard_items' | translate}}</div>\n\n <div class=\"px-2 h-5/6 overflow-y-auto\" *ngIf=\"clipboardDocments.length > 0\">\n <div class=\"border-b-2\" *ngFor=\"let document of clipboardDocments\">\n <div class=\"py-1 w-82 flex items-center justify-between\">\n <div class=\"flex items-center w-5/6\">\n <mat-checkbox [(ngModel)]=\"document.isSelected\" (change)=\"checking()\"> </mat-checkbox>\n <div class=\"flex w-full\">\n <!-- <title-with-icon class=\"w-1/6 -my-1.5\" [context]=\"document\"\n [showTitle]=\"false\"></title-with-icon> -->\n <app-display-suitable-icon class=\"mx-1\" [data]=\"document\" [size]=\"'40px'\"></app-display-suitable-icon>\n\n <!-- -->\n <div *ngIf=\"document.isFile === 'File'\"\n class=\"justify-center flex flex-col flex-1 flex-grow-0 w-5/6\">\n <div class=\"text-base text-gray-500 font-bold truncate\"\n [title]=\"document.properties?.['file:content']?.['name']\"\n [alt]=\"document.properties?.['file:content']?.['name']\">\n {{document['title']}}\n </div>\n <div class=\"text-gray-500 text-sm text-nowrap\">\n {{((document.properties?.['file:content']?.['length']) / (1024 *\n 1024)).toFixed(2) }}\n MB\n </div>\n </div>\n <div class=\"\n d-flex\n items-center\n text-base text-gray-500\n font-bold\n \" *ngIf=\"document.isFile === 'Folder'\">\n {{ document?.title }}\n </div>\n </div>\n </div>\n <span [matTooltip]=\"'BUTTONS.REMOVE_CLIPBOARD' | translate\"\n class=\"cursor-pointer w-5 h-5 rounded-full border-2 flex justify-center items-center border-gray-500 \"\n (click)=\"deletefromClipboard(document)\">\n <span class=\"text-gray-500 bi bi-x text-lg flex items-center\"></span>\n </span>\n </div>\n <div class=\"text-md text-gray-500 text-center my-2\">\n <span *ngIf=\"document.canCopyToTarget && !document.canMoveToTarget\">{{'can_copy_only' |\n translate}}</span>\n <span *ngIf=\"!document.canCopyToTarget && document.canMoveToTarget\">{{'can_move_only' |\n translate}}</span>\n <span *ngIf=\"document.canCopyToTarget && document.canMoveToTarget\">{{'can_copy_and_move' |\n translate}}</span>\n <span\n *ngIf=\"!document.canCopyToTarget && !document.canMoveToTarget\">{{'can_not_copy_and_move'\n | translate}}</span>\n </div>\n </div>\n\n </div>\n <div class=\"h-1/6 flex w-full justify-center items-center\">\n <button class=\"submission-button mx-2\" [disabled]=\"!enableCopy\"\n (click)=\"copyFromInsideClipboard()\">{{'BUTTONS.COPY' | translate}}</button>\n <button class=\"submission-button mx-2\" [disabled]=\"!enableMove\"\n (click)=\"moveFromInsideClipboard()\">{{'BUTTONS.MOVE' | translate}}</button>\n </div>\n </div>\n </div>\n\n <div class=\"bg-transparent absolute top-0 bottom-0 left-0 right-0 \" *ngIf=\"clipboardLoading\">\n\n </div>\n</div>", styles: [".clipboard-side-section{width:0px;overflow-x:hidden;height:91vh;background-color:#fff;overflow:hidden;border:1px solid lightgray;z-index:999;transition:.1s ease-in-out;border-bottom:none}.clipboard-side-section .clipboard-header{height:60px}.clipboard-side-section .clipboard-content{height:calc(100% - 60px)}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i8.DisplaySuitableIconComponent, selector: "app-display-suitable-icon", inputs: ["data", "size", "dataType", "archive"] }], directives: [{ type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ClipboardComponent, decorators: [{
|
|
244
|
+
type: Component,
|
|
245
|
+
args: [{
|
|
246
|
+
selector: 'lib-clipboard',
|
|
247
|
+
templateUrl: './clipboard.component.html',
|
|
248
|
+
styleUrls: ['./clipboard.component.scss'],
|
|
249
|
+
encapsulation: ViewEncapsulation.None
|
|
250
|
+
}]
|
|
251
|
+
}], ctorParameters: function () { return [{ type: i1.FileManagerService }, { type: i2.UserService }, { type: i3.CustomToastrService }, { type: i4.UserPreferencesService }]; }, propDecorators: { onClipboardClose: [{
|
|
252
|
+
type: Output
|
|
253
|
+
}], onRefreshFolderTree: [{
|
|
254
|
+
type: Output
|
|
255
|
+
}], clipboardItems: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], myCurrecntFolderData: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], preventedGroups: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], directory: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}] } });
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWE3RyxNQUFNLE9BQU8sa0JBQWtCO0lBaUI3QixZQUFvQixrQkFBc0MsRUFDaEQsV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLHFCQUE2QztRQUhuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQWxCN0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLG1CQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1FBRXpELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRzlCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQyxDQUFDLDZEQUE2RDtRQUNyRixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxL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QUNuRyxrR0FBa0c7Z0JBQ2xHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OytHQXhRVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw0U0NiL0IsaTJLQXVGTTsyRkQxRU8sa0JBQWtCO2tCQU45QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzBNQUdXLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdXNlci91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jbGlwYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2xpcGJvYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBPdXRwdXQoKSBvbkNsaXBib2FyZENsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZWZyZXNoRm9sZGVyVHJlZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBjbGlwYm9hcmRJdGVtcyA9IFtdOyAvLyBhcnJheSBvZiBpZCB0byBpdGVtcyBpbiBjbGlwYm9hcmRcbiAgQElucHV0KCkgbXlDdXJyZWNudEZvbGRlckRhdGE7XG4gIEBJbnB1dCgpIHByZXZlbnRlZEdyb3VwcyA9IFtdO1xuICBASW5wdXQoKSBkaXJlY3Rvcnk7XG5cbiAgY2xpcGJvYXJkRG9jbWVudHMgPSBbXTsgLy8gYXJyYXkgb2YgZG9jdW1lbnRzIHdpdGggZnVsbCBkZXRhaWxzIG9mIGl0ZW1zIGluIGNsaXBib2FyZFxuICBlbmFibGVDb3B5ID0gZmFsc2U7XG4gIGVuYWJsZU1vdmUgPSBmYWxzZTtcbiAgY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICBkb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQgPSBbXTtcbiAgbXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucztcbiAgcmVmcmVzaENsaXBTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlTWFuYWdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaENsaXBTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5vblJlZnJlc2hDbGlwYm9hcmQuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLm9wZW5DbGlwYm9hcmQoKTtcbiAgICB9KVxuICAgIHRoaXMub3BlbkNsaXBib2FyZCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQ2xpcFN1YnNjcmlwdGlvbiA/IHRoaXMucmVmcmVzaENsaXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XG4gIH1cbiAgY2xvc2VDbGlwYm9hcmQoKSB7XG4gICAgdGhpcy5vbkNsaXBib2FyZENsb3NlLmVtaXQoKTtcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzID0gW107XG4gIH1cblxuICBvcGVuQ2xpcGJvYXJkKCkge1xuICAgIHRoaXMuZW5hYmxlQ29weSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlTW92ZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMubXlDdXJyZWNudEZvbGRlckRhdGEuZW50aXR5LnByb3BlcnRpZXNbJ2Rtc2ZvbGRlcjpkb2N1bWVudFR5cGVDb2RlJ10gJiYgdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAhPT0gJzA4MTEyMDIxJykge1xuICAgICAgLy8gZ2V0IGFjY2VwdGVkIGNoaWxkZXJucyBmb3IgbXkgY3VycmVudCBmb2xkZXJcbiAgICAgIC8vIGlmICh0aGlzLnN1YnR5cGVzU2VydmljZS5zdG9yZWRTdWJ0eXBlc1t0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS51aWRdKSB7XG4gICAgICAvLyAgICAgdGhpcy5teVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zID0gdGhpcy5zdWJ0eXBlc1NlcnZpY2Uuc3RvcmVkU3VidHlwZXNbdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkudWlkXTtcbiAgICAgIC8vIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5nZXRDbGlwYm9hcmRBY2NlcHRlZFR5cGVzKHRoaXMubXlDdXJyZWNudEZvbGRlckRhdGEuZW50aXR5LnVpZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucyA9IHJlcztcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkRG9jbWVudHMgPSBbXTtcbiAgICAgIH0pXG4gICAgICAvLyB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNsaXBib2FyZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLmdldENsaXBib2FyZERvY3VtZW50cyh0aGlzLmNsaXBib2FyZEl0ZW1zKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgcmVzLm1hcChkb2N1bWVudCA9PiB7XG4gICAgICAgICAgZG9jdW1lbnRbJ2NhbkNvcHlUb1RhcmdldCddID0gKHRoaXMuY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkgJiYgdGhpcy5jaGVja0lmTm90VGhlU2FtZVBhcmVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuY2FuQ29weSk7XG4gICAgICAgICAgZG9jdW1lbnRbJ2Nhbk1vdmVUb1RhcmdldCddID0gKHRoaXMuY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkgJiYgdGhpcy5jaGVja0lmTm90VGhlU2FtZVBhcmVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuY2FuTW92ZSlcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IHJlcztcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5jbGlwYm9hcmREb2NtZW50cyk7XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IFtdO1xuICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJldmVudCBjb3B5aW5nIG9yIG1vdmluZyB0aGUgZmlsZSB0byBpdHMgc2FtZSBwbGFjZSBzaW5jZSBpdCBpcyBwcmV2ZW50ZWQgXG4gIC8vIHByZXZlbnQgY29weWluZyBvciBtb3ZpbmcgdGhlIGZvbGRlciBpbnNpZGUgaXQgc2VsZlxuICBjaGVja0lmTm90VGhlU2FtZVBhcmVudChkb2N1bWVudCkge1xuICAgIC8vIGxldCBkaXJlY3RvcnkgPSB0aGlzLmdldEN1cnJlbnREaXJlY3RvcnkoKTtcbiAgICBpZiAoZG9jdW1lbnQucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2N1bWVudC51aWQgIT09IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLmlkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBkZWxldGVmcm9tQ2xpcGJvYXJkKGRvY3VtZW50KSB7XG4gICAgbGV0IG15aW5kZXggPSAtMTtcbiAgICB0aGlzLmNsaXBib2FyZEl0ZW1zLm1hcCgoaWQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZG9jdW1lbnQudWlkID09PSBpZCkge1xuICAgICAgICBteWluZGV4ID0gaW5kZXhcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuY2xpcGJvYXJkSXRlbXMuc3BsaWNlKG15aW5kZXgsIDEpO1xuICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5yZW1vdmVkX2Zyb21fY2xpcGJvYXJkXCIpO1xuICAgIC8vIGxldCBkaXJlY3RvcnkgPSB0aGlzLmdldEN1cnJlbnREaXJlY3RvcnkoKTtcbiAgICAvLyBsZXQgaWQgPVxuICAgIC8vICAgICBkaXJlY3RvcnkuZGF0YUl0ZW0gPT09IHVuZGVmaW5lZFxuICAgIC8vICAgICAgICAgPyB0aGlzLm1haW5Gb2xkZXJcbiAgICAvLyAgICAgICAgIDogdGhpcy5nZXRDdXJyZW50Rm9sZGVySWQoZGlyZWN0b3J5KTtcbiAgICAvLyB0aGlzLnJlaW5pdGlhbGl6ZUZvbGRlclRyZWUoaWQsIGRpcmVjdG9yeSk7XG4gICAgdGhpcy5vblJlZnJlc2hGb2xkZXJUcmVlLmVtaXQoKTtcbiAgICB0aGlzLm9wZW5DbGlwYm9hcmQoKTtcbiAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5zZXQoJ2NsaXBib2FyZEl0ZW1zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5jbGlwYm9hcmRJdGVtcykpO1xuICB9XG5cbiAgLy8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgaSBjYW4gcGVyZm9ybSBhY3Rpb24gb24gdGhhdCB0YXJnZXQgZm9sZGVyIG9yIG5vdCBcbiAgY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkge1xuICAgIC8vY2hlY2sgaWYgdGFyZ2V0IGlzICdvdGhlcicgdHlwZSBmb2xkZXIgb3IgZG1zIGZvbGRlclxuICAgIGlmICh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddID09PSAnMDgxMTIwMjEnICYmICF0aGlzLmNoZWNrSWZJblByZXZlbnRlZEdyb3Vwcyh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wYXRoKSkge1xuICAgICAgLy8gaWYgbXkgZm9sZGVyIGlzIGZyb20gdHlwZSBvdGhlcnMgYW5kIG5vdCBpbiBwcmV2ZW50ZWQgZ3JvdXBzXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAmJiB0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddICE9PSAnMDgxMTIwMjEnKSB7XG4gICAgICAvL2lmIG15IGZvbGRlciBoYXMgY29kZSBhbmQgd2FzIG5vdCBvdGhlciB0eXBlIGZvbGRlciB0aGVuIGNoZWNrIGZvciBhY2NlcHRlZCBjaGlscmRybiBmb3IgdGhhdCBmb2xkZXIgdG8gY29udGFpbiB0aGlzIGZpbGUgdHlwZVxuICAgICAgaWYgKGRvY3VtZW50LmlzRmlsZSA9PT0gJ0ZpbGUnKSB7XG4gICAgICAgIGlmICh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMgJiZcbiAgICAgICAgICB0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMuYWNjZXB0ZWRfY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheSh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMuYWNjZXB0ZWRfY2hpbGRyZW4pICYmXG4gICAgICAgICAgdGhpcy5teVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zLmNvbnRleHRQYXJhbWV0ZXJzLmFjY2VwdGVkX2NoaWxkcmVuLmluZGV4T2YoZG9jdW1lbnQucHJvcGVydGllc1snZ2RvYzpkb2N1bWVudFR5cGVDb2RlJ10pID4gLTEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycyAmJlxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbikgJiZcbiAgICAgICAgICB0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnM/LmFjY2VwdGVkX2NoaWxkcmVuLmluZGV4T2YoZG9jdW1lbnQucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHByZXZlbnQgYWN0aW9uIHRvIHRoaXMgdGFyZ2V0IFxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gIH1cblxuICAvLyBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGlzIHBhdGggbm90IGJlbG9uZyB0byBncm91cCB0aGF0IGlzIHByZXZlbnRlZCBmcm9tIGNyZWF0aW5nIGZvbGRlciBvZiB0eXBlIG90aGVyc1xuICBjaGVja0lmSW5QcmV2ZW50ZWRHcm91cHMocGF0aCkge1xuICAgIC8vIGlmIGluIHByZXZlbnRlZCBmcm91cCBydHVybiB0cnVlIGVsc2UgcmV0dXJuIGZhbHNlXG4gICAgY29uc29sZS5sb2cocGF0aCk7XG4gICAgbGV0IG15RGVwYXJ0bWVudCA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aChwYXRoKTtcbiAgICBsZXQgZXhpc3QgPSB0aGlzLnByZXZlbnRlZEdyb3Vwcy5pbmRleE9mKG15RGVwYXJ0bWVudCkgPiAtMSA/IHRydWUgOiBmYWxzZTtcbiAgICByZXR1cm4gZXhpc3Q7XG4gIH1cblxuICBjb3B5RnJvbUluc2lkZUNsaXBib2FyZCgpIHtcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIGxldCBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zTGVuZ3RoID0gMDtcbiAgICAvLyBzZXBlcmF0ZSBzZWxlY3RlZCBpdGVtcyBpbiBzZXBlcmF0ZSBhcnJheSBcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xuICAgICAgLy8gY2FuJ3QgY29weSBmaWxlIGluIHRoZSBzYW1lIHBsYWNlIGl0IGV4aXN0IGFuZCBjYW4ndCBjb3B5IGZvbGRlciBpbnNpZGUgaXQgc2VsZiBcbiAgICAgIGlmIChkb2MuaXNTZWxlY3RlZCAmJiBkb2MucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2MudWlkICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCkge1xuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNsaXBib2FyZFNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIC8vICAgIHRoaXMuY3VycmVudFBhdGggPSAnJztcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXG4gICAgICAgIC5jb3B5VG8oeyBpZDogdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQsIG5hbWU6IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLm5hbWUgfSwgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy50b1N0cmluZygpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBpdGVtcyBmcm9tIGNsaXBib2FyZCBhZnRlciBhY3Rpb24gaXMgZG9uZVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtc0FmdGVyQWN0aW9uRG9uZShjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vbkNsaXBib2FyZENsb3NlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRm9sZGVyVHJlZS5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcbiAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfQ09QSUVEJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXG4gICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICdUT0FTVEVSLkVSUk9SJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfQ09QSUVEX0VSUk9SJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxuICAgICAgICAnZXJyb3InLFxuICAgICAgICAnVE9BU1RFUi5FUlJPUicsXG4gICAgICAgICdUT0FTVEVSLkRPQ1VNRU5UX0NPUElFRF9ERVNUSU5BVElPTl9FUlJPUidcbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxuICBtb3ZlRnJvbUluc2lkZUNsaXBib2FyZCgpIHtcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIGxldCBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zTGVuZ3RoID0gMDtcbiAgICAvLyBzZXBlcmF0ZSBzZWxlY3RlZCBpdGVtcyBpbiBzZXBlcmF0ZSBhcnJheSBcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xuICAgICAgLy8gY2FuJ3QgbW92ZSBmaWxlIGluIHRoZSBzYW1lIHBsYWNlIGl0IGV4aXN0IGFuZCBjYW4ndCBtb3ZlIGZvbGRlciBpbnNpZGUgaXQgc2VsZiBcbiAgICAgIGlmIChkb2MuaXNTZWxlY3RlZCAmJiBkb2MucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2MudWlkICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCkge1xuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNsaXBib2FyZFNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXG4gICAgICAgIC5tb3ZlVG8oeyBpZDogdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQsIG5hbWU6IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLm5hbWUgfSwgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy50b1N0cmluZygpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBpdGVtcyBmcm9tIGNsaXBib2FyZCBhZnRlciBhY3Rpb24gaXMgZG9uZVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtc0FmdGVyQWN0aW9uRG9uZShjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vbkNsaXBib2FyZENsb3NlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRm9sZGVyVHJlZS5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcbiAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRUQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcbiAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRVJST1InLFxuICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9NT1ZFRF9FUlJPUidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZVxuICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXG4gICAgICAgICdlcnJvcicsXG4gICAgICAgICdUT0FTVEVSLkVSUk9SJyxcbiAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRURfREVTVElOQVRJT05fRVJST1InXG4gICAgICApO1xuICB9XG5cbiAgcmVtb3ZlSXRlbXNBZnRlckFjdGlvbkRvbmUoc2VsZWN0ZWRJdGVtcykge1xuICAgIHRoaXMuY2xpcGJvYXJkSXRlbXMgPSB0aGlzLmNsaXBib2FyZEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgIHJldHVybiAhc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhlbCk7XG4gICAgfSk7XG4gICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2Uuc2V0KCdjbGlwYm9hcmRJdGVtcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2xpcGJvYXJkSXRlbXMpKTtcbiAgfVxuXG4gIGNoZWNraW5nKCkge1xuICAgIHRoaXMuZW5hYmxlQ29weSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlTW92ZSA9IGZhbHNlO1xuICAgIHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkID0gW107XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jbGlwYm9hcmREb2NtZW50cyk7XG4gICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cy5tYXAoZG9jdW1lbnQgPT4ge1xuICAgICAgLy8gd29rcmluZyB3aXRoIG9ubHkgc2VsZWN0ZWQgZG9jdW1lbnRzIFxuICAgICAgaWYgKGRvY3VtZW50LmlzU2VsZWN0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gZG9jdW1lbnRbJ2NhbkNvcHlUb1RhcmdldCddID0gKHRoaXMuY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkgJiYgZG9jdW1lbnQuY2FuQ29weSk7XG4gICAgICAgIC8vIGRvY3VtZW50WydjYW5Nb3ZlVG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbk1vdmUpXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkLnB1c2goZG9jdW1lbnQpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5lbmFibGVDb3B5ID0gdGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQuZXZlcnkoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLmNhbkNvcHlUb1RhcmdldCA9PT0gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICB0aGlzLmVuYWJsZU1vdmUgPSB0aGlzLmRvY3VtZW50U2VsZWN0ZWRJbkNsaXBib2FyZC5ldmVyeShpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2FuTW92ZVRvVGFyZ2V0ID09PSB0cnVlO1xuICAgICAgfSlcbiAgICB9XG4gICAgY29uc29sZS5sb2codGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjbGlwYm9hcmQtc2lkZS1zZWN0aW9uIHJlbGF0aXZlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC0zIGgtZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpcGJvYXJkLWhlYWRlciBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IHRleHQtZ3JheS01MDAgZm9udC1ib2xkIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC00eGwgYmkgYmktY2xpcGJvYXJkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMiB0ZXh0LXhsXCI+e3snY2xpcGJvYXJkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2UtaWNvbiB0ZXh0LWdyYXktNTAwIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlQ2xpcGJvYXJkKClcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidCVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImgtZnVsbCBmb250LWJvbGQgZC1mbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiY2xpcGJvYXJkTG9hZGluZ1wiPlxuICAgICAgICAgICAge3sgXCJsb2FkaW5nXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtcHggYmctZ3JheS0yMDAgbWItM1wiICpuZ0lmPVwiY2xpcGJvYXJkTG9hZGluZ1wiPlxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpcGJvYXJkLWNvbnRlbnQgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtYmV0d2VlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB0ZXh0LWdyYXktNTAwXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNsaXBib2FyZERvY21lbnRzLmxlbmd0aCA9PT0gMFwiPnt7J25vX2NsaXBib2FyZF9pdGVtcycgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBoLTUvNiBvdmVyZmxvdy15LWF1dG9cIiAqbmdJZj1cImNsaXBib2FyZERvY21lbnRzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWItMlwiICpuZ0Zvcj1cImxldCBkb2N1bWVudCBvZiBjbGlwYm9hcmREb2NtZW50c1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMSB3LTgyIGZsZXggIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3LTUvNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJkb2N1bWVudC5pc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJjaGVja2luZygpXCI+IDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aXRsZS13aXRoLWljb24gY2xhc3M9XCJ3LTEvNiAtbXktMS41XCIgW2NvbnRleHRdPVwiZG9jdW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiPjwvdGl0bGUtd2l0aC1pY29uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWRpc3BsYXktc3VpdGFibGUtaWNvbiBjbGFzcz1cIm14LTFcIiBbZGF0YV09XCJkb2N1bWVudFwiIFtzaXplXT1cIic0MHB4J1wiPjwvYXBwLWRpc3BsYXktc3VpdGFibGUtaWNvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvY3VtZW50LmlzRmlsZSA9PT0gJ0ZpbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jZW50ZXIgZmxleCBmbGV4LWNvbCBmbGV4LTEgZmxleC1ncm93LTAgdy01LzZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJkb2N1bWVudC5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJkb2N1bWVudC5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZG9jdW1lbnRbJ3RpdGxlJ119fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soKGRvY3VtZW50LnByb3BlcnRpZXM/LlsnZmlsZTpjb250ZW50J10/LlsnbGVuZ3RoJ10pIC8gKDEwMjQgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQpKS50b0ZpeGVkKDIpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYmFzZSB0ZXh0LWdyYXktNTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1ib2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAqbmdJZj1cImRvY3VtZW50LmlzRmlsZSA9PT0gJ0ZvbGRlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50Py50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW21hdFRvb2x0aXBdPVwiJ0JVVFRPTlMuUkVNT1ZFX0NMSVBCT0FSRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdy01IGgtNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgYm9yZGVyLWdyYXktNTAwIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZWZyb21DbGlwYm9hcmQoZG9jdW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGJpIGJpLXggdGV4dC1sZyBmbGV4IGl0ZW1zLWNlbnRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIHRleHQtZ3JheS01MDAgdGV4dC1jZW50ZXIgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb2N1bWVudC5jYW5Db3B5VG9UYXJnZXQgJiYgIWRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9jb3B5X29ubHknIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWRvY3VtZW50LmNhbkNvcHlUb1RhcmdldCAmJiBkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fbW92ZV9vbmx5JyB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvY3VtZW50LmNhbkNvcHlUb1RhcmdldCAmJiBkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fY29weV9hbmRfbW92ZScgfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkb2N1bWVudC5jYW5Db3B5VG9UYXJnZXQgJiYgIWRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9ub3RfY29weV9hbmRfbW92ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xLzYgZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIG14LTJcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZUNvcHlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weUZyb21JbnNpZGVDbGlwYm9hcmQoKVwiPnt7J0JVVFRPTlMuQ09QWScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiBteC0yXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVNb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVGcm9tSW5zaWRlQ2xpcGJvYXJkKClcIj57eydCVVRUT05TLk1PVkUnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJiZy10cmFuc3BhcmVudCBhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cblxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { DxFormComponent } from 'devextreme-angular';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../../shared-services/file-manager.service";
|
|
6
|
+
import * as i2 from "../../../custom-toastr/services/custom-toastr.service";
|
|
7
|
+
import * as i3 from "devextreme-angular";
|
|
8
|
+
import * as i4 from "devextreme-angular/ui/nested";
|
|
9
|
+
import * as i5 from "devextreme-angular/core";
|
|
10
|
+
import * as i6 from "@ngx-translate/core";
|
|
11
|
+
export class CopyComponent {
|
|
12
|
+
constructor(fileManagerService, customToastrService) {
|
|
13
|
+
this.fileManagerService = fileManagerService;
|
|
14
|
+
this.customToastrService = customToastrService;
|
|
15
|
+
this.visibleChange = new EventEmitter();
|
|
16
|
+
this.getSelectedFolder = new EventEmitter();
|
|
17
|
+
this.rtlEnabled = false;
|
|
18
|
+
this.formData = {};
|
|
19
|
+
this.disable = true;
|
|
20
|
+
this._visible = false;
|
|
21
|
+
this.createTreeNodeChildren = (parent) => {
|
|
22
|
+
let myparent = parent ? parent.key : this.rootFolder;
|
|
23
|
+
let myobs;
|
|
24
|
+
if (myparent === 'root') {
|
|
25
|
+
// when it is root of file list then used passed root entries and for root of
|
|
26
|
+
// my files or any other folder use getting childs for that folder with its id
|
|
27
|
+
myobs = this.fileManagerService.parseNodeChildren(of(this.rootEntries), parent);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
myobs = this.fileManagerService.createTreeNodeChildren(myparent);
|
|
31
|
+
}
|
|
32
|
+
return myobs;
|
|
33
|
+
// console.log(parent);
|
|
34
|
+
// let obs = (
|
|
35
|
+
// parent
|
|
36
|
+
// ? this.fileManagerService.getTreeNodeChildren(parent)
|
|
37
|
+
// : of(
|
|
38
|
+
// this.rootEntries
|
|
39
|
+
// )
|
|
40
|
+
// )
|
|
41
|
+
// return this.fileManagerService.parseNodeChildren(obs, parent);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
set visible(value) {
|
|
45
|
+
if (this._visible === value) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this._visible = value;
|
|
49
|
+
this.visibleChange.emit(this._visible);
|
|
50
|
+
}
|
|
51
|
+
get visible() {
|
|
52
|
+
return this._visible;
|
|
53
|
+
}
|
|
54
|
+
ngOnInit() {
|
|
55
|
+
}
|
|
56
|
+
cancel() {
|
|
57
|
+
this.visible = false;
|
|
58
|
+
}
|
|
59
|
+
selectItem(e) {
|
|
60
|
+
this.disable = false;
|
|
61
|
+
this.currentItem = e.itemData;
|
|
62
|
+
}
|
|
63
|
+
copy(answer) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
if (this.currentItem.canCopyToDestination) {
|
|
66
|
+
if (((_b = (_a = this.directory) === null || _a === void 0 ? void 0 : _a.dataItem) === null || _b === void 0 ? void 0 : _b.id) !== this.currentItem.id &&
|
|
67
|
+
!this.currentItem.entity.path.includes(this.selectedItem.name)) {
|
|
68
|
+
// this.currentPath = '';
|
|
69
|
+
this.fileManagerService
|
|
70
|
+
.copyTo(this.currentItem, this.selectedItems)
|
|
71
|
+
.subscribe((res) => {
|
|
72
|
+
this.visible = answer;
|
|
73
|
+
this.getSelectedFolder.next(this.currentItem.id);
|
|
74
|
+
this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_COPIED');
|
|
75
|
+
}, (err) => {
|
|
76
|
+
this.visible = true;
|
|
77
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_ERROR');
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
else
|
|
81
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.FAILED_TO_COPY');
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.NO_PERMISSION');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
CopyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: CopyComponent, deps: [{ token: i1.FileManagerService }, { token: i2.CustomToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
89
|
+
CopyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: CopyComponent, selector: "app-copy", inputs: { visible: "visible", rtlEnabled: "rtlEnabled", selectedItem: "selectedItem", rootFolder: "rootFolder", rootEntries: "rootEntries", selectedItems: "selectedItems", directory: "directory" }, outputs: { visibleChange: "visibleChange", getSelectedFolder: "getSelectedFolder" }, viewQueries: [{ propertyName: "form", first: true, predicate: DxFormComponent, descendants: true }], ngImport: i0, template: "<dx-popup class=\"popUpParent\" [rtlEnabled]=\"rtlEnabled\" id=\"photo-popup\" [width]=\"500\" [height]=\"500\"\r\n title=\"{{ 'FILE_MANAGER.COPY_OR_MOVE' | translate }}\" [(visible)]=\"visible\" [showTitle]=\"true\"\r\n [closeOnOutsideClick]=\"true\">\r\n <div class=\"p-4\" *dxTemplate=\"let data of 'content'\">\r\n <dx-scroll-view width=\"100%\" height=\"100%\">\r\n <div class=\"form\">\r\n <dx-tree-view [rtlEnabled]=\"rtlEnabled\" id=\"treeList\" [rootValue]=\"rootFolder\" keyExpr=\"id\"\r\n displayExpr=\"name\" hasItemsExpr=\"isExpanded\" dataStructure=\"plain\"\r\n [createChildren]=\"createTreeNodeChildren\" [width]=\"465\" (onItemClick)=\"selectItem($event)\">\r\n </dx-tree-view>\r\n </div>\r\n </dx-scroll-view>\r\n </div>\r\n <dxi-toolbar-item toolbar=\"bottom\">\r\n <button class=\"cancelation-button px-5\" (click)=\"cancel()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n </dxi-toolbar-item>\r\n <dxi-toolbar-item toolbar=\"bottom\" [disabled]=\"disable\">\r\n <button class=\"submission-button px-5\" (click)=\"copy(false)\">\r\n {{ \"BUTTONS.COPY\" | translate }}\r\n </button>\r\n </dxi-toolbar-item>\r\n</dx-popup>", styles: [""], components: [{ type: i3.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { type: i3.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { type: i3.DxTreeViewComponent, selector: "dx-tree-view", inputs: ["accessKey", "activeStateEnabled", "animationEnabled", "collapseIcon", "createChildren", "dataSource", "dataStructure", "disabled", "disabledExpr", "displayExpr", "elementAttr", "expandAllEnabled", "expandedExpr", "expandEvent", "expandIcon", "expandNodesRecursive", "focusStateEnabled", "hasItemsExpr", "height", "hint", "hoverStateEnabled", "itemHoldTimeout", "items", "itemsExpr", "itemTemplate", "keyExpr", "noDataText", "parentIdExpr", "rootValue", "rtlEnabled", "scrollDirection", "searchEditorOptions", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "searchValue", "selectAllText", "selectByClick", "selectedExpr", "selectionMode", "selectNodesRecursive", "showCheckBoxesMode", "tabIndex", "useNativeScrolling", "virtualModeEnabled", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onItemClick", "onItemCollapsed", "onItemContextMenu", "onItemExpanded", "onItemHold", "onItemRendered", "onItemSelectionChanged", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "accessKeyChange", "activeStateEnabledChange", "animationEnabledChange", "collapseIconChange", "createChildrenChange", "dataSourceChange", "dataStructureChange", "disabledChange", "disabledExprChange", "displayExprChange", "elementAttrChange", "expandAllEnabledChange", "expandedExprChange", "expandEventChange", "expandIconChange", "expandNodesRecursiveChange", "focusStateEnabledChange", "hasItemsExprChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemHoldTimeoutChange", "itemsChange", "itemsExprChange", "itemTemplateChange", "keyExprChange", "noDataTextChange", "parentIdExprChange", "rootValueChange", "rtlEnabledChange", "scrollDirectionChange", "searchEditorOptionsChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "searchValueChange", "selectAllTextChange", "selectByClickChange", "selectedExprChange", "selectionModeChange", "selectNodesRecursiveChange", "showCheckBoxesModeChange", "tabIndexChange", "useNativeScrollingChange", "virtualModeEnabledChange", "visibleChange", "widthChange"] }, { type: i4.DxiToolbarItemComponent, selector: "dxi-toolbar-item", inputs: ["cssClass", "disabled", "html", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "template", "text", "toolbar", "visible", "widget"] }], directives: [{ type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }], pipes: { "translate": i6.TranslatePipe } });
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: CopyComponent, decorators: [{
|
|
91
|
+
type: Component,
|
|
92
|
+
args: [{
|
|
93
|
+
selector: 'app-copy',
|
|
94
|
+
templateUrl: './copy.component.html',
|
|
95
|
+
styleUrls: ['./copy.component.scss']
|
|
96
|
+
}]
|
|
97
|
+
}], ctorParameters: function () { return [{ type: i1.FileManagerService }, { type: i2.CustomToastrService }]; }, propDecorators: { form: [{
|
|
98
|
+
type: ViewChild,
|
|
99
|
+
args: [DxFormComponent, { static: false }]
|
|
100
|
+
}], visible: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], visibleChange: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], getSelectedFolder: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}], rtlEnabled: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], selectedItem: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], rootFolder: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], rootEntries: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], selectedItems: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], directory: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}] } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY29weS9jb3B5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jb3B5L2NvcHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUzFCLE1BQU0sT0FBTyxhQUFhO0lBaUN4QixZQUNVLGtCQUFzQyxFQUNwQyxtQkFBd0M7UUFEMUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBckJwRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBV25CLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFvQmpCLDJCQUFzQixHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFN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Q3hCLENBQUM7U0FDSDtJQUNILENBQUM7OzBHQW5IVSxhQUFhOzhGQUFiLGFBQWEsaVhBQ2IsZUFBZSxnRENaNUIsc3pDQXVCVzsyRkRaRSxhQUFhO2tCQUx6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixXQUFXLEVBQUUsdUJBQXVCO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDckM7MklBRWdELElBQUk7c0JBQWxELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFekMsT0FBTztzQkFEVixLQUFLO2dCQVlOLGFBQWE7c0JBRFosTUFBTTtnQkFHUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sV0FBVztzQkFEVixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhGb3JtQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvcHknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3B5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3B5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoRHhGb3JtQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgZm9ybTogRHhGb3JtQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZpc2libGUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX3Zpc2libGUgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMuX3Zpc2libGUpO1xyXG4gIH1cclxuICBnZXQgdmlzaWJsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xyXG4gIH1cclxuICBAT3V0cHV0KClcclxuICB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgZ2V0U2VsZWN0ZWRGb2xkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKVxyXG4gIHJ0bEVuYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkSXRlbTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgcm9vdEZvbGRlcjogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgcm9vdEVudHJpZXM6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkSXRlbXM6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIGRpcmVjdG9yeTogYW55O1xyXG4gIGZvcm1EYXRhOiBhbnkgPSB7fTtcclxuICBkaXNhYmxlID0gdHJ1ZTtcclxuICBfdmlzaWJsZSA9IGZhbHNlO1xyXG4gIGN1cnJlbnRJdGVtO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmaWxlTWFuYWdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBjdXN0b21Ub2FzdHJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKGUpIHtcclxuICAgIHRoaXMuZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50SXRlbSA9IGUuaXRlbURhdGE7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUcmVlTm9kZUNoaWxkcmVuID0gKHBhcmVudCkgPT4ge1xyXG4gICAgbGV0IG15cGFyZW50ID0gcGFyZW50ID8gcGFyZW50LmtleSA6IHRoaXMucm9vdEZvbGRlcjtcclxuICAgIGxldCBteW9icztcclxuICAgIGlmIChteXBhcmVudCA9PT0gJ3Jvb3QnKSB7XHJcbiAgICAgIC8vIHdoZW4gaXQgaXMgcm9vdCBvZiBmaWxlIGxpc3QgdGhlbiB1c2VkIHBhc3NlZCByb290IGVudHJpZXMgYW5kIGZvciByb290IG9mIFxyXG4gICAgICAvLyBteSBmaWxlcyBvciBhbnkgb3RoZXIgZm9sZGVyIHVzZSBnZXR0aW5nIGNoaWxkcyBmb3IgdGhhdCBmb2xkZXIgd2l0aCBpdHMgaWRcclxuICAgICAgbXlvYnMgPSB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5wYXJzZU5vZGVDaGlsZHJlbihvZih0aGlzLnJvb3RFbnRyaWVzKSwgcGFyZW50KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBteW9icyA9IHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLmNyZWF0ZVRyZWVOb2RlQ2hpbGRyZW4obXlwYXJlbnQpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbXlvYnM7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhwYXJlbnQpO1xyXG4gICAgLy8gbGV0IG9icyA9IChcclxuICAgIC8vICAgcGFyZW50XHJcbiAgICAvLyAgICAgPyB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5nZXRUcmVlTm9kZUNoaWxkcmVuKHBhcmVudClcclxuICAgIC8vICAgICA6IG9mKFxyXG4gICAgLy8gICAgICAgdGhpcy5yb290RW50cmllc1xyXG4gICAgLy8gICAgIClcclxuICAgIC8vIClcclxuICAgIC8vIHJldHVybiB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5wYXJzZU5vZGVDaGlsZHJlbihvYnMsIHBhcmVudCk7XHJcbiAgfVxyXG5cclxuICBjb3B5KGFuc3dlcikge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEl0ZW0uY2FuQ29weVRvRGVzdGluYXRpb24pIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZGlyZWN0b3J5Py5kYXRhSXRlbT8uaWQgIT09IHRoaXMuY3VycmVudEl0ZW0uaWQgJiZcclxuICAgICAgICAhdGhpcy5jdXJyZW50SXRlbS5lbnRpdHkucGF0aC5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkSXRlbS5uYW1lKVxyXG4gICAgICApIHtcclxuICAgICAgICAvLyB0aGlzLmN1cnJlbnRQYXRoID0gJyc7XHJcbiAgICAgICAgdGhpcy5maWxlTWFuYWdlclNlcnZpY2VcclxuICAgICAgICAgIC5jb3B5VG8odGhpcy5jdXJyZW50SXRlbSwgdGhpcy5zZWxlY3RlZEl0ZW1zKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGFuc3dlcjtcclxuICAgICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkRm9sZGVyLm5leHQodGhpcy5jdXJyZW50SXRlbS5pZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAgICAgICAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcclxuICAgICAgICAgICAgICAgICdUT0FTVEVSLkRPQ1VNRU5UX0NPUElFRCdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcclxuICAgICAgICAgICAgICAgICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9DT1BJRURfRVJST1InXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICAgJ1RPQVNURVIuRVJST1InLFxyXG4gICAgICAgICAgJ1RPQVNURVIuRkFJTEVEX1RPX0NPUFknXHJcbiAgICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICdlcnJvcicsXHJcbiAgICAgICAgJ1RPQVNURVIuRVJST1InLFxyXG4gICAgICAgICdUT0FTVEVSLk5PX1BFUk1JU1NJT04nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkeC1wb3B1cCBjbGFzcz1cInBvcFVwUGFyZW50XCIgW3J0bEVuYWJsZWRdPVwicnRsRW5hYmxlZFwiIGlkPVwicGhvdG8tcG9wdXBcIiBbd2lkdGhdPVwiNTAwXCIgW2hlaWdodF09XCI1MDBcIlxyXG4gICAgdGl0bGU9XCJ7eyAnRklMRV9NQU5BR0VSLkNPUFlfT1JfTU9WRScgfCB0cmFuc2xhdGUgfX1cIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbc2hvd1RpdGxlXT1cInRydWVcIlxyXG4gICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNFwiICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgPGR4LXNjcm9sbC12aWV3IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkeC10cmVlLXZpZXcgW3J0bEVuYWJsZWRdPVwicnRsRW5hYmxlZFwiIGlkPVwidHJlZUxpc3RcIiBbcm9vdFZhbHVlXT1cInJvb3RGb2xkZXJcIiBrZXlFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwibmFtZVwiIGhhc0l0ZW1zRXhwcj1cImlzRXhwYW5kZWRcIiBkYXRhU3RydWN0dXJlPVwicGxhaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjcmVhdGVDaGlsZHJlbl09XCJjcmVhdGVUcmVlTm9kZUNoaWxkcmVuXCIgW3dpZHRoXT1cIjQ2NVwiIChvbkl0ZW1DbGljayk9XCJzZWxlY3RJdGVtKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZHgtdHJlZS12aWV3PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4LXNjcm9sbC12aWV3PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZHhpLXRvb2xiYXItaXRlbSB0b29sYmFyPVwiYm90dG9tXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvbiBweC01XCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5DQU5DRUxcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9keGktdG9vbGJhci1pdGVtPlxyXG4gICAgPGR4aS10b29sYmFyLWl0ZW0gdG9vbGJhcj1cImJvdHRvbVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIHB4LTVcIiAoY2xpY2spPVwiY29weShmYWxzZSlcIj5cclxuICAgICAgICAgICAge3sgXCJCVVRUT05TLkNPUFlcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9keGktdG9vbGJhci1pdGVtPlxyXG48L2R4LXBvcHVwPiJdfQ==
|