nuxeo-development-framework 2.0.8 → 3.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/bundles/nuxeo-development-framework.umd.js +8335 -455
- 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/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 +313 -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 +256 -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 +1004 -0
- package/esm2015/lib/components/file-manger/file-manger.module.js +275 -0
- package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +8 -2
- package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +2 -2
- 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 +741 -0
- package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
- package/esm2015/lib/shared-services/mainfolder.service.js +157 -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 +64 -1
- package/fesm2015/nuxeo-development-framework.js +7628 -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/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 +169 -0
- package/lib/components/file-manger/file-manger.module.d.ts +55 -0
- package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +2 -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 +89 -0
- package/lib/shared-services/global-pdftron.service.d.ts +10 -0
- package/lib/shared-services/mainfolder.service.d.ts +29 -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 +61 -0
package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
2
|
+
import { FormGroup, FormControl, Validators } from '@angular/forms';
|
|
3
|
+
import { Component, Inject } from '@angular/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../../shared-services/publishing-document.service";
|
|
6
|
+
import * as i2 from "@angular/material/dialog";
|
|
7
|
+
import * as i3 from "../../../custom-toastr/services/custom-toastr.service";
|
|
8
|
+
import * as i4 from "@ngx-translate/core";
|
|
9
|
+
import * as i5 from "@ng-select/ng-select";
|
|
10
|
+
import * as i6 from "@angular/forms";
|
|
11
|
+
import * as i7 from "../../../../directive/rtl/set-rtl.directive";
|
|
12
|
+
import * as i8 from "@angular/common";
|
|
13
|
+
export class PublishDialogComponent {
|
|
14
|
+
constructor(publishing, dialogRef, data, tosterService, translate) {
|
|
15
|
+
this.publishing = publishing;
|
|
16
|
+
this.dialogRef = dialogRef;
|
|
17
|
+
this.data = data;
|
|
18
|
+
this.tosterService = tosterService;
|
|
19
|
+
this.translate = translate;
|
|
20
|
+
this.sections = [];
|
|
21
|
+
this.subscribtion = [];
|
|
22
|
+
this.startPublishing = false;
|
|
23
|
+
this.renditionList = [
|
|
24
|
+
{
|
|
25
|
+
name: this.translate.instant('publishDocs.none'),
|
|
26
|
+
value: 'none'
|
|
27
|
+
},
|
|
28
|
+
/*{
|
|
29
|
+
name: this.translate.instant('publishDocs.defaultRendition'),
|
|
30
|
+
value: 'defaultRendition'
|
|
31
|
+
},*/
|
|
32
|
+
{
|
|
33
|
+
name: this.translate.instant('publishDocs.thumbnail'),
|
|
34
|
+
value: 'thumbnail'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: this.translate.instant('publishDocs.pdf'),
|
|
38
|
+
value: 'pdf'
|
|
39
|
+
},
|
|
40
|
+
/*{
|
|
41
|
+
name: this.translate.instant('publishDocs.zipExport'),
|
|
42
|
+
value: 'zipExport'
|
|
43
|
+
},*/
|
|
44
|
+
/*{
|
|
45
|
+
name: this.translate.instant('publishDocs.xmlExport'),
|
|
46
|
+
value: 'xmlExport'
|
|
47
|
+
},*/
|
|
48
|
+
];
|
|
49
|
+
this.initialRenditionValue = this.renditionList[0].value;
|
|
50
|
+
this.PublicationForm = new FormGroup({
|
|
51
|
+
target: new FormControl(null, Validators.required),
|
|
52
|
+
defaultRendition: new FormControl(),
|
|
53
|
+
renditionName: new FormControl(),
|
|
54
|
+
});
|
|
55
|
+
this.subscribtion.concat([this.publishing.getPublishingSections().subscribe((res) => {
|
|
56
|
+
this.sections = res.entries;
|
|
57
|
+
})]);
|
|
58
|
+
}
|
|
59
|
+
ngOnInit() {
|
|
60
|
+
}
|
|
61
|
+
close() {
|
|
62
|
+
this.dialogRef.close();
|
|
63
|
+
}
|
|
64
|
+
publish() {
|
|
65
|
+
this.startPublishing = true;
|
|
66
|
+
let params = {
|
|
67
|
+
"mySection": this.PublicationForm.get('target').value
|
|
68
|
+
};
|
|
69
|
+
if (this.data.PublishType == "File") {
|
|
70
|
+
let Id;
|
|
71
|
+
switch (this.PublicationForm.get('renditionName').value) {
|
|
72
|
+
case 'none': {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
// case 'defaultRendition': { params["defaultRendition"] = true; break; }
|
|
76
|
+
default: params["myRenditionName"] = this.PublicationForm.get('renditionName').value;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
let Id;
|
|
80
|
+
(this.data.PublishType == "File") ? Id = (this.fetchedVersionDoc) ? this.fetchedVersionDoc.versionDocId : this.data.file.uid : Id = (this.fetchedVersionDoc) ? this.fetchedVersionDoc.versionDocId : this.data.id;
|
|
81
|
+
this.subscribtion.concat([this.publishing.publishDocument(Id, params).subscribe(res => {
|
|
82
|
+
if (res) {
|
|
83
|
+
this.publishing.newPublished.next(true);
|
|
84
|
+
(this.data.PublishType == "File") ? this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.publishDocument_success") : this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.publishFolder_success");
|
|
85
|
+
setTimeout(() => {
|
|
86
|
+
this.close();
|
|
87
|
+
}, 500);
|
|
88
|
+
}
|
|
89
|
+
}, err => {
|
|
90
|
+
(this.data.PublishType == "File") ? this.tosterService.show('error', 'TOASTER.ERROR', 'TOASTER.publishDocument_fail') : this.tosterService.show('error', 'TOASTER.ERROR', 'TOASTER.publishFolder_fail');
|
|
91
|
+
this.startPublishing = false;
|
|
92
|
+
})]);
|
|
93
|
+
}
|
|
94
|
+
ngOnDestroy() {
|
|
95
|
+
this.subscribtion.forEach(sub => sub.unsubscribe());
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
PublishDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PublishDialogComponent, deps: [{ token: i1.PublishingDocumentService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.CustomToastrService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
PublishDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: PublishDialogComponent, selector: "app-publish-dialog", ngImport: i0, template: "<form [formGroup]=\"PublicationForm\" class=\"h-full\" SetRtl>\r\n <span class=\"text-gray-900 text-lg\">\r\n {{ \"publishDocs.publishDialogTitle\" | translate }}\r\n </span>\r\n <div class=\"flex flex-col justify-between h-full\">\r\n <!--Form Section-->\r\n <div class=\"mt-2\" *ngIf=\"!startPublishing; else loading\">\r\n <div class=\"mb-3\">\r\n <label class=\"text-base font-bold mb-0\">\r\n {{ \"publishDocs.target\" | translate }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <ng-select [items]=\"sections\" bindLabel=\"title\" bindValue=\"uid\"\r\n [placeholder]=\"'publishDocs.targetPlaceholder' | translate\" formControlName=\"target\">\r\n </ng-select>\r\n <div *ngIf=\"PublicationForm.get('target').touched && PublicationForm.get('target').errors?.required\">\r\n <span class=\"text-red-500 text-base\">\r\n {{ \"publishDocs.target\" | translate }}\r\n {{ \"VALIDATORS.REQUIRED\" | translate }}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"data.PublishType == 'File'\" class=\"mb-3\">\r\n <label class=\"text-base font-bold mb-0\">\r\n {{ \"publishDocs.rendition\" | translate }}\r\n </label>\r\n <ng-select [items]=\"renditionList\" bindLabel=\"name\" bindValue=\"value\"\r\n [(ngModel)]=\"initialRenditionValue\" formControlName=\"renditionName\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <ng-template #loading>\r\n <span class=\"flex h-full justify-center items-center\"> {{ \"publishDocs.doingPublish\" | translate }}</span>\r\n </ng-template>\r\n <!--Buttons Section-->\r\n <div class=\"d-flex justify-end mb-10\">\r\n <button class=\"cancelation-button\" (click)=\"close()\">\r\n {{ \"BUTTONS.Cancel\" | translate }}\r\n </button>\r\n <button class=\"submission-button\" (click)=\"publish()\" [disabled]=\"!PublicationForm.valid\">\r\n {{ \"BUTTONS.PUBLISH\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</form>", styles: [""], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.SetRtlDirective, selector: "[SetRtl]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i4.TranslatePipe } });
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PublishDialogComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{
|
|
103
|
+
selector: 'app-publish-dialog',
|
|
104
|
+
templateUrl: './publish-dialog.component.html',
|
|
105
|
+
styleUrls: ['./publish-dialog.component.scss']
|
|
106
|
+
}]
|
|
107
|
+
}], ctorParameters: function () { return [{ type: i1.PublishingDocumentService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
|
|
108
|
+
type: Inject,
|
|
109
|
+
args: [MAT_DIALOG_DATA]
|
|
110
|
+
}] }, { type: i3.CustomToastrService }, { type: i4.TranslateService }]; } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3B1Ymxpc2gtZGlhbG9nL3B1Ymxpc2gtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9wdWJsaXNoLWRpYWxvZy9wdWJsaXNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVNyRSxNQUFNLE9BQU8sc0JBQXNCO0lBcUNqQyxZQUFvQixVQUFxQyxFQUMvQyxTQUErQyxFQUN2QixJQUFJLEVBQzVCLGFBQWtDLEVBQ2xDLFNBQTJCO1FBSmpCLGVBQVUsR0FBVixVQUFVLENBQTJCO1FBQy9DLGNBQVMsR0FBVCxTQUFTLENBQXNDO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQUE7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBeENyQyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGtCQUFhLEdBQUc7WUFDZDtnQkFDRSxJ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QzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQzs7MEJBd0NJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFB1Ymxpc2hpbmdEb2N1bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvcHVibGlzaGluZy1kb2N1bWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXB1Ymxpc2gtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHVibGlzaC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3B1Ymxpc2gtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgc2VjdGlvbnMgPSBbXTtcclxuICBzdWJzY3JpYnRpb246IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgc3RhcnRQdWJsaXNoaW5nID0gZmFsc2U7XHJcbiAgZmV0Y2hlZFZlcnNpb25Eb2M6IGFueTtcclxuICByZW5kaXRpb25MaXN0ID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdwdWJsaXNoRG9jcy5ub25lJyksXHJcbiAgICAgIHZhbHVlOiAnbm9uZSdcclxuICAgIH0sXHJcbiAgICAvKntcclxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncHVibGlzaERvY3MuZGVmYXVsdFJlbmRpdGlvbicpLFxyXG4gICAgICB2YWx1ZTogJ2RlZmF1bHRSZW5kaXRpb24nXHJcbiAgICB9LCovXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3B1Ymxpc2hEb2NzLnRodW1ibmFpbCcpLFxyXG4gICAgICB2YWx1ZTogJ3RodW1ibmFpbCdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3B1Ymxpc2hEb2NzLnBkZicpLFxyXG4gICAgICB2YWx1ZTogJ3BkZidcclxuICAgIH0sXHJcbiAgICAvKntcclxuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncHVibGlzaERvY3MuemlwRXhwb3J0JyksXHJcbiAgICAgIHZhbHVlOiAnemlwRXhwb3J0J1xyXG4gICAgfSwqL1xyXG4gICAgLyp7XHJcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3B1Ymxpc2hEb2NzLnhtbEV4cG9ydCcpLFxyXG4gICAgICB2YWx1ZTogJ3htbEV4cG9ydCdcclxuICAgIH0sKi9cclxuICBdO1xyXG4gIGluaXRpYWxSZW5kaXRpb25WYWx1ZSA9IHRoaXMucmVuZGl0aW9uTGlzdFswXS52YWx1ZVxyXG4gIFB1YmxpY2F0aW9uRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB0YXJnZXQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgIGRlZmF1bHRSZW5kaXRpb246IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgcmVuZGl0aW9uTmFtZTogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgfSlcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHB1Ymxpc2hpbmc6IFB1Ymxpc2hpbmdEb2N1bWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFB1Ymxpc2hEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhLFxyXG4gICAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJ0aW9uLmNvbmNhdChbdGhpcy5wdWJsaXNoaW5nLmdldFB1Ymxpc2hpbmdTZWN0aW9ucygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZWN0aW9ucyA9IHJlcy5lbnRyaWVzXHJcbiAgICB9KV0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIHB1Ymxpc2goKSB7XHJcbiAgICB0aGlzLnN0YXJ0UHVibGlzaGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBcIm15U2VjdGlvblwiOiB0aGlzLlB1YmxpY2F0aW9uRm9ybS5nZXQoJ3RhcmdldCcpLnZhbHVlXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kYXRhLlB1Ymxpc2hUeXBlID09IFwiRmlsZVwiKSB7XHJcbiAgICAgIGxldCBJZDtcclxuICAgICAgc3dpdGNoICh0aGlzLlB1YmxpY2F0aW9uRm9ybS5nZXQoJ3JlbmRpdGlvbk5hbWUnKS52YWx1ZSkge1xyXG4gICAgICAgIGNhc2UgJ25vbmUnOiB7IGJyZWFrOyB9XHJcbiAgICAgICAgLy8gY2FzZSAnZGVmYXVsdFJlbmRpdGlvbic6IHsgcGFyYW1zW1wiZGVmYXVsdFJlbmRpdGlvblwiXSA9IHRydWU7IGJyZWFrOyB9XHJcbiAgICAgICAgZGVmYXVsdDogcGFyYW1zW1wibXlSZW5kaXRpb25OYW1lXCJdID0gdGhpcy5QdWJsaWNhdGlvbkZvcm0uZ2V0KCdyZW5kaXRpb25OYW1lJykudmFsdWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IElkXHJcbiAgICAodGhpcy5kYXRhLlB1Ymxpc2hUeXBlID09IFwiRmlsZVwiKSA/IElkID0gKHRoaXMuZmV0Y2hlZFZlcnNpb25Eb2MpID8gdGhpcy5mZXRjaGVkVmVyc2lvbkRvYy52ZXJzaW9uRG9jSWQgOiB0aGlzLmRhdGEuZmlsZS51aWQgOiBJZCA9ICh0aGlzLmZldGNoZWRWZXJzaW9uRG9jKSA/IHRoaXMuZmV0Y2hlZFZlcnNpb25Eb2MudmVyc2lvbkRvY0lkIDogdGhpcy5kYXRhLmlkO1xyXG4gICAgdGhpcy5zdWJzY3JpYnRpb24uY29uY2F0KFt0aGlzLnB1Ymxpc2hpbmcucHVibGlzaERvY3VtZW50KElkLCBwYXJhbXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5wdWJsaXNoaW5nLm5ld1B1Ymxpc2hlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgICh0aGlzLmRhdGEuUHVibGlzaFR5cGUgPT0gXCJGaWxlXCIpID8gIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5wdWJsaXNoRG9jdW1lbnRfc3VjY2Vzc1wiKSA6ICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnc3VjY2VzcycsICdUT0FTVEVSLlNVQ0NFU1MnLCBcIlRPQVNURVIucHVibGlzaEZvbGRlcl9zdWNjZXNzXCIpXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfVxyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgKHRoaXMuZGF0YS5QdWJsaXNoVHlwZSA9PSBcIkZpbGVcIikgPyB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLnB1Ymxpc2hEb2N1bWVudF9mYWlsJykgOiB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLnB1Ymxpc2hGb2xkZXJfZmFpbCcpO1xyXG4gICAgICB0aGlzLnN0YXJ0UHVibGlzaGluZyA9IGZhbHNlO1xyXG4gICAgfSldKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlidGlvbi5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiUHVibGljYXRpb25Gb3JtXCIgY2xhc3M9XCJoLWZ1bGxcIiBTZXRSdGw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1sZ1wiPlxyXG4gICAgICAgIHt7IFwicHVibGlzaERvY3MucHVibGlzaERpYWxvZ1RpdGxlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBoLWZ1bGxcIj5cclxuICAgICAgICA8IS0tRm9ybSBTZWN0aW9uLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cIiFzdGFydFB1Ymxpc2hpbmc7IGVsc2UgbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZCBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgXCJwdWJsaXNoRG9jcy50YXJnZXRcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInNlY3Rpb25zXCIgYmluZExhYmVsPVwidGl0bGVcIiBiaW5kVmFsdWU9XCJ1aWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncHVibGlzaERvY3MudGFyZ2V0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwidGFyZ2V0XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJQdWJsaWNhdGlvbkZvcm0uZ2V0KCd0YXJnZXQnKS50b3VjaGVkICYmIFB1YmxpY2F0aW9uRm9ybS5nZXQoJ3RhcmdldCcpLmVycm9ycz8ucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJwdWJsaXNoRG9jcy50YXJnZXRcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcIlZBTElEQVRPUlMuUkVRVUlSRURcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGEuUHVibGlzaFR5cGUgPT0gJ0ZpbGUnXCIgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBcInB1Ymxpc2hEb2NzLnJlbmRpdGlvblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBbaXRlbXNdPVwicmVuZGl0aW9uTGlzdFwiIGJpbmRMYWJlbD1cIm5hbWVcIiBiaW5kVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbml0aWFsUmVuZGl0aW9uVmFsdWVcIiBmb3JtQ29udHJvbE5hbWU9XCJyZW5kaXRpb25OYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaC1mdWxsIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiPiB7eyBcInB1Ymxpc2hEb2NzLmRvaW5nUHVibGlzaFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPCEtLUJ1dHRvbnMgU2VjdGlvbi0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1lbmQgbWItMTBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkJVVFRPTlMuQ2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiIChjbGljayk9XCJwdWJsaXNoKClcIiBbZGlzYWJsZWRdPVwiIVB1YmxpY2F0aW9uRm9ybS52YWxpZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLlBVQkxJU0hcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+Il19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { DxFormComponent } from 'devextreme-angular';
|
|
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 "@angular/forms";
|
|
11
|
+
import * as i7 from "@angular/common";
|
|
12
|
+
import * as i8 from "@ngx-translate/core";
|
|
13
|
+
export class RenameComponent {
|
|
14
|
+
constructor(fileManagerService, customToastrService) {
|
|
15
|
+
this.fileManagerService = fileManagerService;
|
|
16
|
+
this.customToastrService = customToastrService;
|
|
17
|
+
this.visibleChange = new EventEmitter();
|
|
18
|
+
this.refresh = new EventEmitter();
|
|
19
|
+
this.rtlEnabled = false;
|
|
20
|
+
this.formData = {};
|
|
21
|
+
this.loading = false;
|
|
22
|
+
this._visible = false;
|
|
23
|
+
}
|
|
24
|
+
set visible(value) {
|
|
25
|
+
if (this._visible === value) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this._visible = value;
|
|
29
|
+
this.visibleChange.emit(this._visible);
|
|
30
|
+
}
|
|
31
|
+
get visible() {
|
|
32
|
+
return this._visible;
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
}
|
|
36
|
+
onFormSubmit(e) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
this.loading = true;
|
|
40
|
+
if (this.formData.title !== this.selectedItems.name) {
|
|
41
|
+
this.fileManagerService
|
|
42
|
+
.renameFolder(this.formData, this.selectedItems.id)
|
|
43
|
+
.subscribe((res) => {
|
|
44
|
+
this.loading = false;
|
|
45
|
+
this.refresh.next(true);
|
|
46
|
+
this.form.instance.resetValues();
|
|
47
|
+
this.visible = false;
|
|
48
|
+
this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_RENAMED');
|
|
49
|
+
}, (err) => {
|
|
50
|
+
this.loading = false;
|
|
51
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_RENAMED_ERROR');
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.loading = false;
|
|
56
|
+
this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.TITLES_ARE_MATCHED');
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
RenameComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: RenameComponent, deps: [{ token: i1.FileManagerService }, { token: i2.CustomToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
RenameComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: RenameComponent, selector: "app-rename", inputs: { visible: "visible", rtlEnabled: "rtlEnabled", selectedItems: "selectedItems", directory: "directory" }, outputs: { visibleChange: "visibleChange", refresh: "refresh" }, viewQueries: [{ propertyName: "form", first: true, predicate: DxFormComponent, descendants: true }], ngImport: i0, template: "<dx-popup class=\"popUpParent\" [rtlEnabled]=\"rtlEnabled\" id=\"photo-popup\" [width]=\"500\" [height]=\"185\"\r\n closeOnOutsideClick=\"true\" [title]=\"selectedItems?.name\" [(visible)]=\"visible\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <form (submit)=\"onFormSubmit($event)\">\r\n <dx-form class=\"form-wrapper\" #form [formData]=\"formData\" [disabled]=\"loading\">\r\n <dxi-item dataField=\"title\" editorType=\"dxTextBox\">\r\n <dxo-label class=\"text-base font-bold\" text=\"{{ 'CREATE.TITLE' | translate }}\"></dxo-label>\r\n <dxi-validation-rule type=\"required\" message=\"Title is required\"></dxi-validation-rule>\r\n </dxi-item>\r\n <dxi-item itemType=\"button\">\r\n <dxo-button-options width=\"30%\" type=\"danger\" [useSubmitBehavior]=\"true\"\r\n [template]=\"'renameTemplate'\">\r\n </dxo-button-options>\r\n </dxi-item>\r\n <ng-container *dxTemplate=\"let item of 'renameTemplate'\">\r\n <span class=\"dx-button-text\">\r\n <ng-container *ngIf=\"loading; else notLoading\">\r\n <dx-load-indicator width=\"24px\" height=\"24px\" [visible]=\"true\"></dx-load-indicator>\r\n </ng-container>\r\n <ng-template #notLoading>{{\r\n \"FILE_MANAGER.RENAME\" | translate\r\n }}</ng-template>\r\n </span>\r\n </ng-container>\r\n </dx-form>\r\n </form>\r\n </div>\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.DxFormComponent, selector: "dx-form", inputs: ["accessKey", "activeStateEnabled", "alignItemLabels", "alignItemLabelsInAllGroups", "colCount", "colCountByScreen", "customizeItem", "disabled", "elementAttr", "focusStateEnabled", "formData", "height", "hint", "hoverStateEnabled", "items", "labelLocation", "labelMode", "minColWidth", "optionalMark", "readOnly", "requiredMark", "requiredMessage", "rtlEnabled", "screenByWidth", "scrollingEnabled", "showColonAfterLabel", "showOptionalMark", "showRequiredMark", "showValidationSummary", "tabIndex", "validationGroup", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onEditorEnterKey", "onFieldDataChanged", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "alignItemLabelsChange", "alignItemLabelsInAllGroupsChange", "colCountChange", "colCountByScreenChange", "customizeItemChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formDataChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemsChange", "labelLocationChange", "labelModeChange", "minColWidthChange", "optionalMarkChange", "readOnlyChange", "requiredMarkChange", "requiredMessageChange", "rtlEnabledChange", "screenByWidthChange", "scrollingEnabledChange", "showColonAfterLabelChange", "showOptionalMarkChange", "showRequiredMarkChange", "showValidationSummaryChange", "tabIndexChange", "validationGroupChange", "visibleChange", "widthChange"] }, { type: i4.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "linkAttr", "url", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { type: i4.DxoLabelComponent, selector: "dxo-label", inputs: ["connectorColor", "connectorWidth", "customizeText", "font", "format", "indent", "visible", "horizontalAlignment", "position", "text", "verticalAlignment", "alignment", "customizeHint", "displayMode", "indentFromAxis", "overlappingBehavior", "rotationAngle", "staggeringSpacing", "template", "textOverflow", "wordWrap", "argumentFormat", "backgroundColor", "border", "connector", "displayFormat", "horizontalOffset", "showForZeroValues", "verticalOffset", "hideFirstOrLast", "indentFromTick", "useRangeColors", "location", "showColon", "radialOffset", "topIndent", "shadow", "useNodeColors", "dataField", "enabled"] }, { type: i4.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { type: i4.DxoButtonOptionsComponent, selector: "dxo-button-options", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"] }], directives: [{ type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i8.TranslatePipe } });
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: RenameComponent, decorators: [{
|
|
64
|
+
type: Component,
|
|
65
|
+
args: [{
|
|
66
|
+
selector: 'app-rename',
|
|
67
|
+
templateUrl: './rename.component.html',
|
|
68
|
+
styleUrls: ['./rename.component.scss']
|
|
69
|
+
}]
|
|
70
|
+
}], ctorParameters: function () { return [{ type: i1.FileManagerService }, { type: i2.CustomToastrService }]; }, propDecorators: { form: [{
|
|
71
|
+
type: ViewChild,
|
|
72
|
+
args: [DxFormComponent, { static: false }]
|
|
73
|
+
}], visible: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], visibleChange: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}], refresh: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}], rtlEnabled: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], selectedItems: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], directory: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}] } });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9yZW5hbWUvcmVuYW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9yZW5hbWUvcmVuYW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7OztBQVFyRCxNQUFNLE9BQU8sZUFBZTtJQTJCMUIsWUFDVSxrQkFBc0MsRUFDcEMsbUJBQXdDO1FBRDFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWZwRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUtuQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBRW5CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztJQUtiLENBQUM7SUE3QkwsSUFDSSxPQUFPLENBQUMsS0FBVTtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFxQkQsUUFBUTtJQUNSLENBQUM7SUFFSyxZQUFZLENBQUMsQ0FBQzs7WUFDbEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxrQkFBa0I7cUJBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO3FCQUNsRCxTQUFTLENBQ04sQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDekIsU0FBUyxFQUNULGlCQUFpQixFQUNqQiwwQkFBMEIsQ0FDN0IsQ0FBQztnQkFDTixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDekIsT0FBTyxFQUNQLGVBQWUsRUFDZixnQ0FBZ0MsQ0FDbkMsQ0FBQztnQkFDTixDQUFDLENBQ0osQ0FBQzthQUNUO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUN6QixPQUFPLEVBQ1AsZUFBZSxFQUNmLDRCQUE0QixDQUMvQixDQUFDO2FBQ0w7UUFDTCxDQUFDO0tBQUE7OzRHQXZFWSxlQUFlO2dHQUFmLGVBQWUsMlFBQ2YsZUFBZSxnRENWNUIsMnJEQTJCVzsyRkRsQkUsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsV0FBVyxFQUFFLHlCQUF5QjtvQkFDdEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDOzJJQUVnRCxJQUFJO3NCQUFsRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRXpDLE9BQU87c0JBRFYsS0FBSztnQkFZTixhQUFhO3NCQURaLE1BQU07Z0JBR1AsT0FBTztzQkFETixNQUFNO2dCQUdQLFVBQVU7c0JBRFQsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhGb3JtQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVuYW1lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVuYW1lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZW5hbWUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVuYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKER4Rm9ybUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZvcm06IER4Rm9ybUNvbXBvbmVudDtcclxuICBASW5wdXQoKVxyXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl92aXNpYmxlID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl92aXNpYmxlKTtcclxuICB9XHJcbiAgZ2V0IHZpc2libGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcclxuICB9XHJcbiAgQE91dHB1dCgpXHJcbiAgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKVxyXG4gIHJ0bEVuYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkSXRlbXM6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIGRpcmVjdG9yeTogYW55O1xyXG4gIGZvcm1EYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG4gIF92aXNpYmxlID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZpbGVNYW5hZ2VyU2VydmljZTogRmlsZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGN1c3RvbVRvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2VcclxuXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkZvcm1TdWJtaXQoZSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmZvcm1EYXRhLnRpdGxlICE9PSB0aGlzLnNlbGVjdGVkSXRlbXMubmFtZSkge1xyXG4gICAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZW5hbWVGb2xkZXIodGhpcy5mb3JtRGF0YSwgdGhpcy5zZWxlY3RlZEl0ZW1zLmlkKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5pbnN0YW5jZS5yZXNldFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdUT0FTVEVSLlNVQ0NFU1MnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9SRU5BTUVEJ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnVE9BU1RFUi5FUlJPUicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdUT0FTVEVSLkRPQ1VNRU5UX1JFTkFNRURfRVJST1InXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgICAgICdlcnJvcicsXHJcbiAgICAgICAgICAgICdUT0FTVEVSLkVSUk9SJyxcclxuICAgICAgICAgICAgJ1RPQVNURVIuVElUTEVTX0FSRV9NQVRDSEVEJ1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxufVxyXG4iLCI8ZHgtcG9wdXAgY2xhc3M9XCJwb3BVcFBhcmVudFwiIFtydGxFbmFibGVkXT1cInJ0bEVuYWJsZWRcIiBpZD1cInBob3RvLXBvcHVwXCIgW3dpZHRoXT1cIjUwMFwiIFtoZWlnaHRdPVwiMTg1XCJcclxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s9XCJ0cnVlXCIgW3RpdGxlXT1cInNlbGVjdGVkSXRlbXM/Lm5hbWVcIiBbKHZpc2libGUpXT1cInZpc2libGVcIj5cclxuICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cclxuICAgICAgICA8Zm9ybSAoc3VibWl0KT1cIm9uRm9ybVN1Ym1pdCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkeC1mb3JtIGNsYXNzPVwiZm9ybS13cmFwcGVyXCIgI2Zvcm0gW2Zvcm1EYXRhXT1cImZvcm1EYXRhXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkeGktaXRlbSBkYXRhRmllbGQ9XCJ0aXRsZVwiIGVkaXRvclR5cGU9XCJkeFRleHRCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWxhYmVsIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZFwiIHRleHQ9XCJ7eyAnQ1JFQVRFLlRJVExFJyB8IHRyYW5zbGF0ZSB9fVwiPjwvZHhvLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiIG1lc3NhZ2U9XCJUaXRsZSBpcyByZXF1aXJlZFwiPjwvZHhpLXZhbGlkYXRpb24tcnVsZT5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gaXRlbVR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHhvLWJ1dHRvbi1vcHRpb25zIHdpZHRoPVwiMzAlXCIgdHlwZT1cImRhbmdlclwiIFt1c2VTdWJtaXRCZWhhdmlvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cIidyZW5hbWVUZW1wbGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2R4by1idXR0b24tb3B0aW9ucz5cclxuICAgICAgICAgICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkeFRlbXBsYXRlPVwibGV0IGl0ZW0gb2YgJ3JlbmFtZVRlbXBsYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHgtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmc7IGVsc2Ugbm90TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWxvYWQtaW5kaWNhdG9yIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keC1sb2FkLWluZGljYXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TG9hZGluZz57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJGSUxFX01BTkFHRVIuUkVOQU1FXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9keC1mb3JtPlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG48L2R4LXBvcHVwPiJdfQ==
|