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.
Files changed (136) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +8335 -455
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +84 -0
  4. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +35 -0
  5. package/esm2015/lib/components/activities-log/activities-log.module.js +30 -0
  6. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +54 -0
  7. package/esm2015/lib/components/attachment-item/attachment-item.module.js +44 -0
  8. package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +40 -0
  9. package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +157 -0
  10. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +30 -0
  11. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +30 -0
  12. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +44 -0
  13. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +140 -0
  14. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +24 -0
  15. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +177 -0
  16. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +43 -0
  17. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +39 -0
  18. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +34 -0
  19. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +132 -0
  20. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +119 -0
  21. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +91 -0
  22. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +455 -0
  23. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +26 -0
  24. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +77 -0
  25. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +114 -0
  26. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +80 -0
  27. package/esm2015/lib/components/file-manger/components/move/move.component.js +108 -0
  28. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +111 -0
  29. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +86 -0
  30. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +313 -0
  31. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +294 -0
  32. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +256 -0
  33. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +64 -0
  34. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +71 -0
  35. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +358 -0
  36. package/esm2015/lib/components/file-manger/file-manager.abstract.js +1004 -0
  37. package/esm2015/lib/components/file-manger/file-manger.module.js +275 -0
  38. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +8 -2
  39. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +2 -2
  40. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +51 -0
  41. package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +30 -0
  42. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +177 -0
  43. package/esm2015/lib/components/permissions/permission.service.js +118 -0
  44. package/esm2015/lib/components/permissions/permissions/permissions.component.js +232 -0
  45. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +117 -0
  46. package/esm2015/lib/components/permissions/permissions.module.js +71 -0
  47. package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +47 -0
  48. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +27 -0
  49. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +116 -0
  50. package/esm2015/lib/components/user/user/user.component.js +29 -0
  51. package/esm2015/lib/components/user/user.module.js +30 -0
  52. package/esm2015/lib/directive/directive.module.js +9 -4
  53. package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +46 -0
  54. package/esm2015/lib/shared/libraryShared.module.js +1 -4
  55. package/esm2015/lib/shared-services/dialog-mangment.service.js +61 -0
  56. package/esm2015/lib/shared-services/dynamic-form.service.js +241 -0
  57. package/esm2015/lib/shared-services/file-manager.adapter.js +74 -0
  58. package/esm2015/lib/shared-services/file-manager.service.js +741 -0
  59. package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
  60. package/esm2015/lib/shared-services/mainfolder.service.js +157 -0
  61. package/esm2015/lib/shared-services/publishing-document.service.js +202 -0
  62. package/esm2015/lib/shared-services/recently-viewed.service.js +57 -0
  63. package/esm2015/lib/shared-services/shared-docs.service.js +135 -0
  64. package/esm2015/lib/shared-services/shared-services.module.js +20 -0
  65. package/esm2015/lib/shared-services/upload-file.service.js +29 -0
  66. package/esm2015/lib/shared-services/upload-managment.service.js +151 -0
  67. package/esm2015/lib/shared-services/user.service.js +54 -0
  68. package/esm2015/public-api.js +64 -1
  69. package/fesm2015/nuxeo-development-framework.js +7628 -154
  70. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  71. package/lib/components/activities-log/activities-log/activities-log.component.d.ts +23 -0
  72. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +9 -0
  73. package/lib/components/activities-log/activities-log.module.d.ts +10 -0
  74. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +21 -0
  75. package/lib/components/attachment-item/attachment-item.module.d.ts +13 -0
  76. package/lib/components/attachment-modal/attachment-modal.module.d.ts +12 -0
  77. package/lib/components/attachment-modal/attachments/attachments.component.d.ts +50 -0
  78. package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
  79. package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +10 -0
  80. package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +17 -0
  81. package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +8 -0
  82. package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +8 -0
  83. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +137 -0
  84. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +12 -0
  85. package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +13 -0
  86. package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +11 -0
  87. package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +31 -0
  88. package/lib/components/file-manger/components/copy/copy.component.d.ts +32 -0
  89. package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +24 -0
  90. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +108 -0
  91. package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +11 -0
  92. package/lib/components/file-manger/components/delete/delete.component.d.ts +30 -0
  93. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +56 -0
  94. package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +23 -0
  95. package/lib/components/file-manger/components/move/move.component.d.ts +32 -0
  96. package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +32 -0
  97. package/lib/components/file-manger/components/rename/rename.component.d.ts +25 -0
  98. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +95 -0
  99. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +58 -0
  100. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +62 -0
  101. package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +34 -0
  102. package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +24 -0
  103. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +194 -0
  104. package/lib/components/file-manger/file-manager.abstract.d.ts +169 -0
  105. package/lib/components/file-manger/file-manger.module.d.ts +55 -0
  106. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +2 -0
  107. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +17 -0
  108. package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +10 -0
  109. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +44 -0
  110. package/lib/components/permissions/permission.service.d.ts +21 -0
  111. package/lib/components/permissions/permissions/permissions.component.d.ts +48 -0
  112. package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +22 -0
  113. package/lib/components/permissions/permissions.module.d.ts +21 -0
  114. package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +13 -0
  115. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +10 -0
  116. package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +33 -0
  117. package/lib/components/user/user/user.component.d.ts +12 -0
  118. package/lib/components/user/user.module.d.ts +10 -0
  119. package/lib/directive/directive.module.d.ts +3 -2
  120. package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +11 -0
  121. package/lib/shared/libraryShared.module.d.ts +1 -1
  122. package/lib/shared-services/dialog-mangment.service.d.ts +15 -0
  123. package/lib/shared-services/dynamic-form.service.d.ts +24 -0
  124. package/lib/shared-services/file-manager.adapter.d.ts +48 -0
  125. package/lib/shared-services/file-manager.service.d.ts +89 -0
  126. package/lib/shared-services/global-pdftron.service.d.ts +10 -0
  127. package/lib/shared-services/mainfolder.service.d.ts +29 -0
  128. package/lib/shared-services/publishing-document.service.d.ts +25 -0
  129. package/lib/shared-services/recently-viewed.service.d.ts +17 -0
  130. package/lib/shared-services/shared-docs.service.d.ts +21 -0
  131. package/lib/shared-services/shared-services.module.d.ts +7 -0
  132. package/lib/shared-services/upload-file.service.d.ts +10 -0
  133. package/lib/shared-services/upload-managment.service.d.ts +72 -0
  134. package/lib/shared-services/user.service.d.ts +12 -0
  135. package/package.json +7 -6
  136. package/public-api.d.ts +61 -0
@@ -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==