@acorex-platform/module-document-management-client 2.0.0-next.15 → 2.0.0-next.17
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/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-ouqn86NW.mjs} +27 -27
- package/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs.map → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-ouqn86NW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-B-MJAd6K.mjs → acorex-platform-module-document-management-client-attachment-view-skeleton.component-BJiGxy0q.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-B-MJAd6K.mjs.map → acorex-platform-module-document-management-client-attachment-view-skeleton.component-BJiGxy0q.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-BcxGDjeF.mjs → acorex-platform-module-document-management-client-attachment-widget.component-B0apv8oL.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-BcxGDjeF.mjs.map → acorex-platform-module-document-management-client-attachment-widget.component-B0apv8oL.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-TKzt2KvO.mjs → acorex-platform-module-document-management-client-details-view.component-e0-r7tOA.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-TKzt2KvO.mjs.map → acorex-platform-module-document-management-client-details-view.component-e0-r7tOA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-DoQC3ylx.mjs → acorex-platform-module-document-management-client-distribute-document.command-ClaZpJxL.mjs} +49 -6
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-ClaZpJxL.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs → acorex-platform-module-document-management-client-distribute-document.command.util-BH09ggCd.mjs} +34 -8
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command.util-BH09ggCd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-B4BDB97X.mjs → acorex-platform-module-document-management-client-drive-choose.component-ByQZpkzB.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-B4BDB97X.mjs.map → acorex-platform-module-document-management-client-drive-choose.component-ByQZpkzB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-q5QaDA3U.mjs → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-BfUGecdc.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-q5QaDA3U.mjs.map → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-BfUGecdc.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view.component-DWuhN497.mjs → acorex-platform-module-document-management-client-large-icons-view.component-BAR0i7Fe.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view.component-DWuhN497.mjs.map → acorex-platform-module-document-management-client-large-icons-view.component-BAR0i7Fe.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-tiles-view.component-ClRmDSXY.mjs → acorex-platform-module-document-management-client-large-tiles-view.component-D-lTrz1r.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-tiles-view.component-ClRmDSXY.mjs.map → acorex-platform-module-document-management-client-large-tiles-view.component-D-lTrz1r.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-uO3rSIL6.mjs → acorex-platform-module-document-management-client-list-view-skeleton.component-DuwOFiOX.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-uO3rSIL6.mjs.map → acorex-platform-module-document-management-client-list-view-skeleton.component-DuwOFiOX.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-list-view.component-DOqc7vC9.mjs → acorex-platform-module-document-management-client-list-view.component-0Rp9eJI4.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-list-view.component-DOqc7vC9.mjs.map → acorex-platform-module-document-management-client-list-view.component-0Rp9eJI4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-B87Xj3s6.mjs → acorex-platform-module-document-management-client-open-document.command-C1p9kzNu.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-B87Xj3s6.mjs.map → acorex-platform-module-document-management-client-open-document.command-C1p9kzNu.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-MLT9W3J0.mjs → acorex-platform-module-document-management-client-request-document-review.command-CkbGudeb.mjs} +12 -5
- package/fesm2022/acorex-platform-module-document-management-client-request-document-review.command-CkbGudeb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-sign-distributed-document.command-BqLS0leG.mjs → acorex-platform-module-document-management-client-sign-distributed-document.command-vGwi8Ssi.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-sign-distributed-document.command-BqLS0leG.mjs.map → acorex-platform-module-document-management-client-sign-distributed-document.command-vGwi8Ssi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-sign-document-review.command-Ccl9iY7j.mjs → acorex-platform-module-document-management-client-sign-document-review.command-C1cy6Ivm.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-sign-document-review.command-Ccl9iY7j.mjs.map → acorex-platform-module-document-management-client-sign-document-review.command-C1cy6Ivm.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-DCjsVs5n.mjs → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-C8FPhbsI.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-DCjsVs5n.mjs.map → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-C8FPhbsI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view.component-DbO9rbel.mjs → acorex-platform-module-document-management-client-small-icons-view.component-Di6dWcxr.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view.component-DbO9rbel.mjs.map → acorex-platform-module-document-management-client-small-icons-view.component-Di6dWcxr.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-CO9d4ytu.mjs → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-DuonROkJ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-CO9d4ytu.mjs.map → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-DuonROkJ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view.component-Ci2m67vw.mjs → acorex-platform-module-document-management-client-small-tiles-view.component-BqToMMgD.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view.component-Ci2m67vw.mjs.map → acorex-platform-module-document-management-client-small-tiles-view.component-BqToMMgD.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-BsziEhNt.mjs → acorex-platform-module-document-management-client-upload-document.command-tfOxVVer.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-BsziEhNt.mjs.map → acorex-platform-module-document-management-client-upload-document.command-tfOxVVer.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
- package/package.json +2 -2
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-DoQC3ylx.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-request-document-review.command-MLT9W3J0.mjs.map +0 -1
|
@@ -6,7 +6,7 @@ import * as i1$1 from '@angular/common';
|
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
8
|
import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
9
|
-
import { A as AXPDocumentExplorerViewModel } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
9
|
+
import { A as AXPDocumentExplorerViewModel } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-ouqn86NW.mjs';
|
|
10
10
|
|
|
11
11
|
class AXMDocumentExplorerAttachmentViewSkeletonComponent {
|
|
12
12
|
constructor() {
|
|
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
24
24
|
}] });
|
|
25
25
|
|
|
26
26
|
export { AXMDocumentExplorerAttachmentViewSkeletonComponent };
|
|
27
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-view-skeleton.component-
|
|
27
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-view-skeleton.component-BJiGxy0q.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-view-skeleton.component-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-view-skeleton.component-BJiGxy0q.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-view-skeleton.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-view-skeleton.component.html"],"sourcesContent":["import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n@Component({\n selector: 'axm-document-explorer-attachment-view-skeleton',\n templateUrl: './attachment-view-skeleton.component.html',\n styleUrl: './attachment-view-skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXMDocumentExplorerAttachmentViewSkeletonComponent {\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n\n protected readonly folderPlaceholders = [0, 1, 2];\n protected readonly filePlaceholders = [0, 1];\n protected readonly flatPlaceholders = [0, 1, 2, 3, 4];\n}\n","@if (vm.groupByType()) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.folders' | translate | async }}</h3>\n </div>\n <div class=\"__content\">\n @for (item of folderPlaceholders; track item) {\n <div class=\"__item\">\n <ax-skeleton [animated]=\"true\" class=\"__icon\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"__name\"></ax-skeleton>\n </div>\n }\n </div>\n </div>\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.files' | translate | async }}</h3>\n </div>\n <div class=\"__content\">\n @for (item of filePlaceholders; track item) {\n <div class=\"__item\">\n <ax-skeleton [animated]=\"true\" class=\"__icon\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"__name\"></ax-skeleton>\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"__content\">\n @for (item of flatPlaceholders; track item) {\n <div class=\"__item\">\n <ax-skeleton [animated]=\"true\" class=\"__icon\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"__name\"></ax-skeleton>\n </div>\n }\n </div>\n}\n"],"names":["i2"],"mappings":";;;;;;;;;;MAaa,kDAAkD,CAAA;AAP/D,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;QAEzC,IAAA,CAAA,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,IAAA;8GANY,kDAAkD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kDAAkD,0GCb/D,+xCAqCA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,kIAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAElD,kDAAkD,EAAA,UAAA,EAAA,CAAA;kBAP9D,SAAS;+BACE,gDAAgD,EAAA,eAAA,EAGzC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+xCAAA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA;;;"}
|
|
@@ -8,7 +8,7 @@ import * as i0 from '@angular/core';
|
|
|
8
8
|
import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
9
9
|
import * as i1 from '@angular/common';
|
|
10
10
|
import { CommonModule } from '@angular/common';
|
|
11
|
-
import { A as AXPDocumentExplorerViewModel, j as AXMDocumentManagerService, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
11
|
+
import { A as AXPDocumentExplorerViewModel, j as AXMDocumentManagerService, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-ouqn86NW.mjs';
|
|
12
12
|
|
|
13
13
|
class AXMDocumentExplorerAttachmentComponent {
|
|
14
14
|
constructor() {
|
|
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
34
34
|
}] });
|
|
35
35
|
|
|
36
36
|
export { AXMDocumentExplorerAttachmentComponent };
|
|
37
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-widget.component-
|
|
37
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-widget.component-B0apv8oL.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-widget.component-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-widget.component-B0apv8oL.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPElementDataDirective } from '@acorex-platform/framework-client/core';\n\nimport { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXMDocumentManagerService } from '../../../shared';\nimport { AXMDocumentExpirationBadgeComponent } from '../../../shared/components/document-expiration-badge/document-expiration-badge.component';\nimport { AXMDocumentVersionBadgeComponent } from '../../../shared/components/document-version-badge/document-version-badge.component';\nimport { AXMFolderExpirationBadgesComponent } from '../../../shared/components/folder-expiration-badges/folder-expiration-badges.component';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n@Component({\n selector: 'axm-document-explorer-attachment-widget',\n templateUrl: './attachment-widget.component.html',\n styleUrls: ['./attachment-widget.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXButtonModule,\n AXTranslationModule,\n AXPElementDataDirective,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n],\n})\nexport class AXMDocumentExplorerAttachmentComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n protected readonly driveService = inject(AXMDocumentManagerService);\n}\n","@if (vm.groupByType()) {\n @if (vm.filteredFolders().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.folders' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.filteredFiles().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.files' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n} @else {\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n}\n"],"names":["i2"],"mappings":";;;;;;;;;;;;MAgCa,sCAAsC,CAAA;AAlBnD,IAAA,WAAA,GAAA;AAmBY,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACpE,IAAA;8GAHY,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,mGChCnD,ujKAoIA,EAAA,MAAA,EAAA,CAAA,giEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/GI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,iBAAiB,8BACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,+BACnB,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,mCAAmC,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,gCAAgC,yFAChC,kCAAkC,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAGzB,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAlBlD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,cAGvC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,KAAK,EAAA,OAAA,EACrC;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,cAAc;wBACd,cAAc;wBACd,mBAAmB;wBACnB,uBAAuB;wBACvB,mCAAmC;wBACnC,gCAAgC;wBAChC,kCAAkC;AACrC,qBAAA,EAAA,QAAA,EAAA,ujKAAA,EAAA,MAAA,EAAA,CAAA,giEAAA,CAAA,EAAA;;;"}
|
|
@@ -16,7 +16,7 @@ import * as i0 from '@angular/core';
|
|
|
16
16
|
import { inject, DestroyRef, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
17
17
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
18
18
|
import { isEqual } from 'lodash-es';
|
|
19
|
-
import { A as AXPDocumentExplorerViewModel, r as readNodeMetaDataValue, d as collectFolderScopedMetaDataList, e as collectDocumentScopedMetaDataList, f as flattenMetaDataColumns, g as collectLookupKeys, h as collectDocumentTypeIds, i as collectDocumentTypeNames, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
19
|
+
import { A as AXPDocumentExplorerViewModel, r as readNodeMetaDataValue, d as collectFolderScopedMetaDataList, e as collectDocumentScopedMetaDataList, f as flattenMetaDataColumns, g as collectLookupKeys, h as collectDocumentTypeIds, i as collectDocumentTypeNames, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-ouqn86NW.mjs';
|
|
20
20
|
import { mergeMetaDataLists } from '@acorex-platform/module-data-management-client/contracts';
|
|
21
21
|
|
|
22
22
|
//#region ----- Imports -----
|
|
@@ -562,4 +562,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
562
562
|
}], ctorParameters: () => [] });
|
|
563
563
|
|
|
564
564
|
export { AXMDocumentExplorerDetailsViewComponent };
|
|
565
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-details-view.component-
|
|
565
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-details-view.component-e0-r7tOA.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-document-management-client-details-view.component-TKzt2KvO.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/details/details-view.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/details/details-view.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { RootConfig } from '@acorex-platform/module-document-management-client/contracts';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPElementDataDirective } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXDataSource, AXDataSourceQuery, AXDataSourceSortOption } from '@acorex/cdk/common';\nimport { AXDataTableModule, AXDataTableRowDbClick } from '@acorex/components/data-table';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport type { AXMMetaDataBuilderValue } from '@acorex-platform/module-data-management-client/contracts';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isEqual } from 'lodash-es';\nimport { AXMDocumentExpirationBadgeComponent } from '../../../shared/components/document-expiration-badge/document-expiration-badge.component';\nimport { AXMDocumentVersionBadgeComponent } from '../../../shared/components/document-version-badge/document-version-badge.component';\nimport { AXMFolderExpirationBadgesComponent } from '../../../shared/components/folder-expiration-badges/folder-expiration-badges.component';\nimport { AXMDocumentExplorerNode } from '../../../shared/document-manager.types';\nimport {\n collectDocumentScopedMetaDataList,\n collectFolderScopedMetaDataList,\n mergeMetaDataLists,\n} from '../../../shared/folder-metadata.util';\nimport {\n collectDocumentTypeIds,\n collectDocumentTypeNames,\n collectLookupKeys,\n flattenMetaDataColumns,\n readNodeMetaDataValue,\n type HomogeneousGridColumn,\n} from '../../../shared/homogeneous-folder-grid.util';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype ExplorerGridRow = Record<string, unknown> & {\n id: string;\n node: AXMDocumentExplorerNode;\n};\n\ntype LookupRow = {\n id: string;\n displayName?: unknown;\n title?: unknown;\n name?: unknown;\n username?: unknown;\n};\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './details-view.component.html',\n styleUrls: ['./details-view.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXPElementDataDirective,\n AXDataTableModule,\n AXFormatModule,\n AXDateTimeModule,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n AXTranslationModule,\n ],\n})\nexport class AXMDocumentExplorerDetailsViewComponent {\n //#region ----- Services & Dependencies -----\n\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly documentTypeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)\n .data<string, { id: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly metadataColumns = signal<HomogeneousGridColumn[]>([]);\n private readonly lookupLabels = signal<Record<string, string>>({});\n private readonly showRowIndexColumnEnabled = signal(false);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly showIndexColumn = computed(() => this.showRowIndexColumnEnabled());\n\n protected readonly attributeColumns = computed<HomogeneousGridColumn[]>(() => {\n const kind = this.vm.homogeneousGrid()?.kind;\n if (kind === 'folder') {\n return [\n { name: 'name', title: '@general:terms.common.name', kind: 'attribute' },\n { name: 'description', title: '@general:terms.common.description', kind: 'attribute' },\n { name: 'items', title: '@document-management:explorer.grid.columns.items', kind: 'attribute', format: 'number' },\n { name: 'size', title: '@document-management:terms.common.size', kind: 'attribute', format: 'filesize' },\n { name: 'modifiedAt', title: '@document-management:terms.timestamps.modified-at', kind: 'attribute', format: 'datetime' },\n ];\n }\n return [\n { name: 'name', title: '@general:terms.common.title', kind: 'attribute' },\n { name: 'description', title: '@general:terms.common.description', kind: 'attribute' },\n { name: 'size', title: '@document-management:terms.common.size', kind: 'attribute', format: 'filesize' },\n { name: 'expirationDate', title: '@document-management:terms.document.expire-date', kind: 'attribute', format: 'date' },\n { name: 'version', title: '@document-management:terms.common.version', kind: 'attribute' },\n { name: 'modifiedAt', title: '@document-management:terms.timestamps.modified-at', kind: 'attribute', format: 'datetime' },\n ];\n });\n\n protected readonly columns = computed(() => [...this.attributeColumns(), ...this.metadataColumns()]);\n\n protected readonly gridNodes = computed<AXMDocumentExplorerNode[]>(() => {\n const kind = this.vm.homogeneousGrid()?.kind;\n if (kind === 'folder') {\n return this.vm.filteredFolders();\n }\n if (kind === 'document') {\n return this.vm.filteredFiles();\n }\n return [...this.vm.filteredFolders(), ...this.vm.filteredFiles()];\n });\n\n protected readonly gridRows = computed<ExplorerGridRow[]>(() => {\n const columns = this.columns();\n return this.gridNodes().map((node) => {\n const row: ExplorerGridRow = {\n ...this.flattenForm(node.metaDataForm),\n id: node.id,\n node,\n };\n for (const column of columns) {\n const raw =\n column.kind === 'metadata'\n ? (this.metadataValue(node, column) ?? row[column.name])\n : this.attributeValue(node, column);\n row[column.name] = this.sortableValue(raw, column);\n }\n return row;\n });\n });\n\n protected readonly selectedRows = computed(() => {\n const selectedIds = new Set(this.vm.selectedNodes().map((node) => node.id));\n return this.gridRows().filter((row) => selectedIds.has(row.id));\n });\n\n protected readonly allowSelection = computed(() => this.vm.selectionMode() !== 'none');\n\n //#endregion\n\n //#region ----- Data Source -----\n\n protected readonly dataSource = new AXDataSource<ExplorerGridRow>({\n key: 'id',\n pageSize: 20,\n load: async (query: AXDataSourceQuery) => {\n let rows = [...this.gridRows()];\n const search = this.extractSearchText(query.filter);\n if (search) {\n const needle = search.toLowerCase();\n rows = rows.filter((row) =>\n this.columns().some((column) => String(row[column.name] ?? '').toLowerCase().includes(needle)),\n );\n }\n const sort = this.keepExclusiveSort(query);\n if (sort?.field) {\n const field = sort.field;\n const direction = sort.dir === 'desc' ? -1 : 1;\n rows.sort((left, right) => this.compareValues(left[field], right[field]) * direction);\n }\n const skip = query.skip ?? 0;\n const take = query.take ?? 20;\n return { items: rows.slice(skip, skip + take), total: rows.length };\n },\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n void this.syncShowRowIndexColumnSetting();\n this.settingsService.onLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.syncShowRowIndexColumnSetting();\n });\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.syncShowRowIndexColumnSetting();\n });\n\n effect(() => {\n const match = this.vm.homogeneousGrid();\n const nodes = this.gridNodes();\n void this.loadMetadataColumns(match?.kind ?? null, nodes);\n });\n\n effect(() => {\n const columns = this.metadataColumns();\n const nodes = this.gridNodes();\n void this.loadLookupLabels(columns, nodes);\n });\n\n effect(() => {\n this.gridRows();\n this.dataSource.refresh();\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected handleSelectedRowsChange(rows: unknown[]): void {\n const next = (rows ?? [])\n .map(\n (row) =>\n this.asGridRow(row)?.node ?? this.gridRow(row)?.node ?? this.nodeById(this.readRowId(row)),\n )\n .filter((node): node is AXMDocumentExplorerNode => node != null);\n const current = this.vm.selectedNodes();\n if (isEqual(current.map((node) => node.id), next.map((node) => node.id))) {\n return;\n }\n this.vm.setSelectedNodes(next);\n }\n\n protected handleRowDbClick(event: AXDataTableRowDbClick): void {\n this.openNode(this.nodeFromTableEvent(event));\n }\n\n protected openNode(node: AXMDocumentExplorerNode | null | undefined): void {\n if (!node) {\n return;\n }\n if (node.type === 'folder') {\n this.vm.navigateToFolder(node.id);\n return;\n }\n void this.vm.openFileOnDoubleClick(node);\n }\n\n protected openRowContextMenu(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n const host = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;\n if (!host) {\n return;\n }\n host.dispatchEvent(\n new MouseEvent('contextmenu', {\n bubbles: true,\n cancelable: true,\n clientX: event.clientX,\n clientY: event.clientY,\n view: window,\n }),\n );\n }\n\n //#endregion\n\n //#region ----- Display -----\n\n protected gridRow(item: unknown): ExplorerGridRow | null {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const wrapped = item as { data?: unknown };\n return this.asGridRow(wrapped.data) ?? this.asGridRow(item);\n }\n\n protected cellValue(item: unknown, column: HomogeneousGridColumn): unknown {\n const row = this.gridRow(item);\n if (row && Object.prototype.hasOwnProperty.call(row, column.name)) {\n return row[column.name];\n }\n if (item == null || typeof item !== 'object') {\n return undefined;\n }\n const wrapped = item as { data?: Record<string, unknown>; value?: unknown };\n if (wrapped.data && typeof wrapped.data === 'object' && Object.prototype.hasOwnProperty.call(wrapped.data, column.name)) {\n return wrapped.data[column.name];\n }\n if (Object.prototype.hasOwnProperty.call(item, column.name)) {\n return (item as Record<string, unknown>)[column.name];\n }\n if ('value' in wrapped) {\n return wrapped.value;\n }\n return undefined;\n }\n\n protected attributeValue(node: AXMDocumentExplorerNode, column: HomogeneousGridColumn): unknown {\n switch (column.name) {\n case 'name':\n return node.type === 'file' ? node.title || node.name : node.name;\n case 'description':\n return node.description;\n case 'items':\n return node.itemsCount ?? node.childrenCount ?? node.children?.length ?? 0;\n case 'size':\n return node.size || 0;\n case 'expirationDate':\n return node.expirationDate;\n case 'version':\n return node.version;\n case 'modifiedAt':\n return node.modifiedAt ?? this.auditAt(node, 'updated') ?? this.auditAt(node, 'created');\n default:\n return undefined;\n }\n }\n\n protected metadataValue(node: AXMDocumentExplorerNode, column: HomogeneousGridColumn): unknown {\n const raw = readNodeMetaDataValue(node, column.name);\n if (!column.lookup) {\n return raw;\n }\n return this.resolveLookupDisplay(raw, column);\n }\n\n protected displayText(value: unknown): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (Array.isArray(value)) {\n return value.map((item) => this.displayText(item)).filter(Boolean).join(', ');\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n const title =\n row['displayName'] ?? row['title'] ?? row['displayTitle'] ?? row['name'] ?? row['text'] ?? row['username'];\n if (title != null) {\n return this.translationService.resolve(title as never) ?? this.displayText(title);\n }\n return this.translationService.resolve(value as never) ?? '';\n }\n return String(value);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadMetadataColumns(\n kind: 'folder' | 'document' | null,\n nodes: AXMDocumentExplorerNode[],\n ): Promise<void> {\n if (!kind || nodes.length === 0) {\n this.metadataColumns.set([]);\n return;\n }\n try {\n const types = await this.loadDocumentTypes(nodes);\n if (types.length === 0) {\n this.metadataColumns.set([]);\n return;\n }\n const list =\n kind === 'folder'\n ? collectFolderScopedMetaDataList(types)\n : mergeMetaDataLists(types.map((type) => collectDocumentScopedMetaDataList(type?.metaDataList)));\n this.metadataColumns.set(\n flattenMetaDataColumns(list, (title) => this.translationService.resolve(title as never) ?? ''),\n );\n } catch {\n this.metadataColumns.set([]);\n }\n }\n\n private async loadLookupLabels(\n columns: HomogeneousGridColumn[],\n nodes: AXMDocumentExplorerNode[],\n ): Promise<void> {\n const lookupColumns = columns.filter((column) => column.lookup?.entity);\n if (lookupColumns.length === 0 || nodes.length === 0) {\n if (Object.keys(this.lookupLabels()).length > 0) {\n this.lookupLabels.set({});\n }\n return;\n }\n\n const idsByEntity = new Map<string, { textField: string; ids: Set<string> }>();\n for (const column of lookupColumns) {\n const lookup = column.lookup;\n if (!lookup) {\n continue;\n }\n const bucket = idsByEntity.get(lookup.entity) ?? { textField: lookup.textField, ids: new Set<string>() };\n for (const node of nodes) {\n for (const id of collectLookupKeys(readNodeMetaDataValue(node, column.name), lookup.valueField)) {\n bucket.ids.add(id);\n }\n }\n idsByEntity.set(lookup.entity, bucket);\n }\n\n const labels: Record<string, string> = {};\n for (const [entityName, bucket] of idsByEntity) {\n const ids = [...bucket.ids];\n if (ids.length === 0) {\n continue;\n }\n const [moduleName, entity] = entityName.split('.');\n if (!moduleName || !entity) {\n continue;\n }\n try {\n const data = this.entityService\n .withEntity(moduleName, entity)\n .data<string, LookupRow>();\n const result = await data.query({\n skip: 0,\n take: Math.max(ids.length, 1),\n filter: { field: 'id', operator: { type: 'in' }, value: ids },\n });\n for (const row of result?.items ?? []) {\n const id = typeof row.id === 'string' ? row.id : '';\n if (!id) {\n continue;\n }\n const text = this.lookupLabelFromRow(row, bucket.textField);\n if (text) {\n labels[id] = text;\n }\n }\n } catch {\n // Keep the raw stored id when the lookup entity cannot be loaded.\n }\n }\n\n if (!isEqual(this.lookupLabels(), labels)) {\n this.lookupLabels.set(labels);\n }\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private async loadDocumentTypes(\n nodes: AXMDocumentExplorerNode[],\n ): Promise<Array<{ id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }>> {\n const loaded: Array<{ id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }> = [];\n const seen = new Set<string>();\n const remember = (type: { id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue } | null | undefined) => {\n if (!type) {\n return;\n }\n const key = String(type.id ?? type.name ?? '').trim();\n if (!key || seen.has(key)) {\n return;\n }\n seen.add(key);\n if (type.name) {\n seen.add(type.name);\n }\n loaded.push(type);\n };\n\n for (const id of collectDocumentTypeIds(nodes)) {\n try {\n remember(await this.documentTypeData.byKey(id));\n } catch {\n /* keep looking by name */\n }\n }\n\n const missingNames = collectDocumentTypeNames(nodes).filter((name) => !seen.has(name));\n if (missingNames.length === 0) {\n return loaded;\n }\n\n const res = await this.documentTypeData.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'name',\n operator: { type: 'in' },\n value: missingNames,\n },\n });\n for (const type of res?.items ?? []) {\n remember(type);\n }\n return loaded;\n }\n\n private flattenForm(form: unknown): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n const visit = (value: unknown) => {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return;\n }\n for (const [key, nested] of Object.entries(value as Record<string, unknown>)) {\n if (!(key in out)) {\n out[key] = nested;\n }\n visit(nested);\n }\n };\n visit(form);\n return out;\n }\n\n private auditAt(node: AXMDocumentExplorerNode, kind: 'updated' | 'created'): unknown {\n const row = node as AXMDocumentExplorerNode & {\n updated?: { at?: unknown };\n created?: { at?: unknown };\n auditInfo?: { updated?: { at?: unknown }; created?: { at?: unknown } };\n };\n return row[kind]?.at ?? row.auditInfo?.[kind]?.at;\n }\n\n private resolveLookupDisplay(value: unknown, column: HomogeneousGridColumn): string {\n const lookup = column.lookup;\n if (!lookup) {\n return this.displayText(value);\n }\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n const fromObject = this.displayText(value);\n if (fromObject) {\n return fromObject;\n }\n }\n const keys = collectLookupKeys(value, lookup.valueField);\n if (keys.length === 0) {\n return this.displayText(value);\n }\n const labels = this.lookupLabels();\n return keys.map((id) => labels[id] || id).filter(Boolean).join(', ');\n }\n\n private lookupLabelFromRow(row: LookupRow, textField: string): string {\n const fields: Record<string, unknown> = { ...row };\n return this.displayText(\n fields[textField] ?? row.displayName ?? row.title ?? row.name ?? row.username,\n );\n }\n\n private sortableValue(value: unknown, column: HomogeneousGridColumn): unknown {\n if (column.format === 'date' || column.format === 'datetime') {\n return value ?? null;\n }\n if (column.format === 'filesize' || column.format === 'number') {\n return typeof value === 'number' ? value : Number(value ?? 0);\n }\n return this.displayText(value);\n }\n\n private compareValues(left: unknown, right: unknown): number {\n if (left == null && right == null) {\n return 0;\n }\n if (left == null) {\n return -1;\n }\n if (right == null) {\n return 1;\n }\n if (left instanceof Date || right instanceof Date) {\n return new Date(left as never).getTime() - new Date(right as never).getTime();\n }\n if (typeof left === 'number' && typeof right === 'number') {\n return left - right;\n }\n return String(left).localeCompare(String(right), undefined, { numeric: true, sensitivity: 'base' });\n }\n\n private keepExclusiveSort(query: AXDataSourceQuery): AXDataSourceSortOption | undefined {\n const sorts = Array.isArray(query.sort) ? query.sort : [];\n if (sorts.length === 0) {\n return undefined;\n }\n const last = sorts[sorts.length - 1];\n const field = String(last?.field ?? '').trim();\n if (!field) {\n return undefined;\n }\n const exclusive: AXDataSourceSortOption = {\n field,\n dir: last.dir === 'desc' ? 'desc' : 'asc',\n };\n if (sorts.length > 1) {\n query.sort.splice(0, query.sort.length, exclusive);\n }\n return exclusive;\n }\n\n private extractSearchText(filter: unknown): string {\n if (!filter || typeof filter !== 'object') {\n return '';\n }\n const row = filter as { operator?: { type?: string }; value?: unknown; filters?: unknown[] };\n if (row.operator?.type === 'contains' && typeof row.value === 'string') {\n return row.value;\n }\n if (Array.isArray(row.filters)) {\n for (const child of row.filters) {\n const found = this.extractSearchText(child);\n if (found) {\n return found;\n }\n }\n }\n return '';\n }\n\n private nodeFromTableEvent(event: unknown): AXMDocumentExplorerNode | null {\n if (event == null || typeof event !== 'object') {\n return null;\n }\n const payload = event as { data?: unknown; row?: unknown };\n return (\n this.asGridRow(payload.data)?.node ??\n this.asGridRow(payload.row)?.node ??\n this.gridRow(payload.data)?.node ??\n this.gridRow(payload.row)?.node ??\n this.nodeById(this.readRowId(payload.data) ?? this.readRowId(payload.row) ?? this.readRowId(event))\n );\n }\n\n private readRowId(value: unknown): string | null {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const id = (value as { id?: unknown }).id;\n return typeof id === 'string' && id.trim() ? id : null;\n }\n\n private nodeById(id: string | null): AXMDocumentExplorerNode | null {\n if (!id) {\n return null;\n }\n return this.gridRows().find((row) => row.id === id)?.node ?? null;\n }\n\n private asGridRow(value: unknown): ExplorerGridRow | null {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const row = value as Partial<ExplorerGridRow>;\n if (!row.id || row.node == null) {\n return null;\n }\n return row as ExplorerGridRow;\n }\n\n private async syncShowRowIndexColumnSetting(): Promise<void> {\n try {\n const value = await this.settingsService.get<boolean>(AXPCommonSettings.ShowRowIndexColumn);\n this.showRowIndexColumnEnabled.set(value ?? false);\n } catch {\n this.showRowIndexColumnEnabled.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n"],"names":["i2","i3","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AA4DA;AAEA;MAmBa,uCAAuC,CAAA;;;AAsHlD,IAAA,WAAA,GAAA;;AAnHmB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC;AACtC,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACxE,aAAA,IAAI,EAAiF;;;QAMvE,IAAA,CAAA,eAAe,GAAG,MAAM,CAA0B,EAAE;4FAAC;QACrD,IAAA,CAAA,YAAY,GAAG,MAAM,CAAyB,EAAE;yFAAC;QACjD,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,KAAK;sGAAC;;;QAMvC,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE;4FAAC;AAElE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAA0B,MAAK;YAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,IAAI;AAC5C,YAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACrB,OAAO;oBACL,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE;oBACxE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,WAAW,EAAE;AACtF,oBAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,kDAAkD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;AACjH,oBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,wCAAwC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE;AACxG,oBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE;iBAC1H;YACH;YACA,OAAO;gBACL,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE,IAAI,EAAE,WAAW,EAAE;gBACzE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,WAAW,EAAE;AACtF,gBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,wCAAwC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE;AACxG,gBAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,iDAAiD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;gBACvH,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,2CAA2C,EAAE,IAAI,EAAE,WAAW,EAAE;AAC1F,gBAAA,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE;aAC1H;QACH,CAAC;6FAAC;AAEiB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oFAAC;AAEjF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAA4B,MAAK;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,IAAI;AAC5C,YAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,gBAAA,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;YAClC;AACA,YAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACvB,gBAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YAChC;AACA,YAAA,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACnE,CAAC;sFAAC;AAEiB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAoB,MAAK;AAC7D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACnC,gBAAA,MAAM,GAAG,GAAoB;AAC3B,oBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;oBACtC,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI;iBACL;AACD,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,oBAAA,MAAM,GAAG,GACP,MAAM,CAAC,IAAI,KAAK;AACd,2BAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;0BACrD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC;AACvC,oBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;gBACpD;AACA,gBAAA,OAAO,GAAG;AACZ,YAAA,CAAC,CAAC;QACJ,CAAC;qFAAC;AAEiB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;yFAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,MAAM;2FAAC;;;QAMnE,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAkB;AAChE,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,IAAI,EAAE,OAAO,KAAwB,KAAI;gBACvC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnD,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;AACnC,oBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KACrB,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAC/F;gBACH;gBACA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC1C,gBAAA,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;oBAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;gBACvF;AACA,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5B,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;gBAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACrE,CAAC;AACF,SAAA,CAAC;AAOA,QAAA,KAAK,IAAI,CAAC,6BAA6B,EAAE;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACrF,YAAA,KAAK,IAAI,CAAC,6BAA6B,EAAE;AAC3C,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACtF,YAAA,KAAK,IAAI,CAAC,6BAA6B,EAAE;AAC3C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC;AAC3D,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;YAC9B,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;;;AAMU,IAAA,wBAAwB,CAAC,IAAe,EAAA;AAChD,QAAA,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE;AACrB,aAAA,GAAG,CACF,CAAC,GAAG,KACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAE7F,MAAM,CAAC,CAAC,IAAI,KAAsC,IAAI,IAAI,IAAI,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;YACxE;QACF;AACA,QAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAChC;AAEU,IAAA,gBAAgB,CAAC,KAA4B,EAAA;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C;AAEU,IAAA,QAAQ,CAAC,IAAgD,EAAA;QACjE,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC;QACF;QACA,KAAK,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;IAC1C;AAEU,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAC5C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,YAAY,WAAW,GAAG,KAAK,CAAC,aAAa,GAAG,IAAI;QACpF,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AACA,QAAA,IAAI,CAAC,aAAa,CAChB,IAAI,UAAU,CAAC,aAAa,EAAE;AAC5B,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CAAC,CACH;IACH;;;AAMU,IAAA,OAAO,CAAC,IAAa,EAAA;QAC7B,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;QACA,MAAM,OAAO,GAAG,IAA0B;AAC1C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7D;IAEU,SAAS,CAAC,IAAa,EAAE,MAA6B,EAAA;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;AACjE,YAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACzB;QACA,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5C,YAAA,OAAO,SAAS;QAClB;QACA,MAAM,OAAO,GAAG,IAA2D;AAC3E,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YACvH,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC;AACA,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;AAC3D,YAAA,OAAQ,IAAgC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvD;AACA,QAAA,IAAI,OAAO,IAAI,OAAO,EAAE;YACtB,OAAO,OAAO,CAAC,KAAK;QACtB;AACA,QAAA,OAAO,SAAS;IAClB;IAEU,cAAc,CAAC,IAA6B,EAAE,MAA6B,EAAA;AACnF,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACnE,YAAA,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,WAAW;AACzB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC5E,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC;AACvB,YAAA,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,cAAc;AAC5B,YAAA,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,OAAO;AACrB,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1F,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;IAEU,aAAa,CAAC,IAA6B,EAAE,MAA6B,EAAA;QAClF,MAAM,GAAG,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,GAAG;QACZ;QACA,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/C;AAEU,IAAA,WAAW,CAAC,KAAc,EAAA;QAClC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACxF,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/E;AACA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,GAAG,GAAG,KAAgC;AAC5C,YAAA,MAAM,KAAK,GACT,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;AAC5G,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAc,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACnF;YACA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAc,CAAC,IAAI,EAAE;QAC9D;AACA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;;;AAMQ,IAAA,MAAM,mBAAmB,CAC/B,IAAkC,EAClC,KAAgC,EAAA;QAEhC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B;QACF;AACA,QAAA,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACjD,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B;YACF;AACA,YAAA,MAAM,IAAI,GACR,IAAI,KAAK;AACP,kBAAE,+BAA+B,CAAC,KAAK;kBACrC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,iCAAiC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,eAAe,CAAC,GAAG,CACtB,sBAAsB,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAc,CAAC,IAAI,EAAE,CAAC,CAC/F;QACH;AAAE,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B;IACF;AAEQ,IAAA,MAAM,gBAAgB,CAC5B,OAAgC,EAChC,KAAgC,EAAA;AAEhC,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACvE,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B;YACA;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmD;AAC9E,QAAA,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;AAClC,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;YAC5B,IAAI,CAAC,MAAM,EAAE;gBACX;YACF;YACA,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,GAAG,EAAU,EAAE;AACxG,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,gBAAA,KAAK,MAAM,EAAE,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE;AAC/F,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB;YACF;YACA,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QACxC;QAEA,MAAM,MAAM,GAA2B,EAAE;QACzC,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,WAAW,EAAE;YAC9C,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB;YACF;AACA,YAAA,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAClD,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE;gBAC1B;YACF;AACA,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC;AACf,qBAAA,UAAU,CAAC,UAAU,EAAE,MAAM;AAC7B,qBAAA,IAAI,EAAqB;AAC5B,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;AAC9B,oBAAA,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,oBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;AAC9D,iBAAA,CAAC;gBACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE;AACrC,oBAAA,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE;oBACnD,IAAI,CAAC,EAAE,EAAE;wBACP;oBACF;AACA,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;oBAC3D,IAAI,IAAI,EAAE;AACR,wBAAA,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI;oBACnB;gBACF;YACF;AAAE,YAAA,MAAM;;YAER;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B;IACF;;;IAMQ,MAAM,iBAAiB,CAC7B,KAAgC,EAAA;QAEhC,MAAM,MAAM,GAAkF,EAAE;AAChG,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;AAC9B,QAAA,MAAM,QAAQ,GAAG,CAAC,IAA+F,KAAI;YACnH,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;AACA,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACrD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB;AACA,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI;gBACF,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD;AAAE,YAAA,MAAM;;YAER;QACF;QAEA,MAAM,YAAY,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtF,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,MAAM;QACf;QAEA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AACxB,gBAAA,KAAK,EAAE,YAAY;AACpB,aAAA;AACF,SAAA,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE;YACnC,QAAQ,CAAC,IAAI,CAAC;QAChB;AACA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,WAAW,CAAC,IAAa,EAAA;QAC/B,MAAM,GAAG,GAA4B,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,CAAC,KAAc,KAAI;AAC/B,YAAA,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtE;YACF;AACA,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;AAC5E,gBAAA,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE;AACjB,oBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM;gBACnB;gBACA,KAAK,CAAC,MAAM,CAAC;YACf;AACF,QAAA,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;AACX,QAAA,OAAO,GAAG;IACZ;IAEQ,OAAO,CAAC,IAA6B,EAAE,IAA2B,EAAA;QACxE,MAAM,GAAG,GAAG,IAIX;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE;IACnD;IAEQ,oBAAoB,CAAC,KAAc,EAAE,MAA6B,EAAA;AACxE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAC5B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAChC;AACA,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC1C,IAAI,UAAU,EAAE;AACd,gBAAA,OAAO,UAAU;YACnB;QACF;QACA,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;AACxD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAChC;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACtE;IAEQ,kBAAkB,CAAC,GAAc,EAAE,SAAiB,EAAA;AAC1D,QAAA,MAAM,MAAM,GAA4B,EAAE,GAAG,GAAG,EAAE;QAClD,OAAO,IAAI,CAAC,WAAW,CACrB,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAC9E;IACH;IAEQ,aAAa,CAAC,KAAc,EAAE,MAA6B,EAAA;AACjE,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;YAC5D,OAAO,KAAK,IAAI,IAAI;QACtB;AACA,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC9D,YAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/D;AACA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAChC;IAEQ,aAAa,CAAC,IAAa,EAAE,KAAc,EAAA;QACjD,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACjC,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAO,CAAC,CAAC;QACX;AACA,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,CAAC;QACV;QACA,IAAI,IAAI,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,EAAE;AACjD,YAAA,OAAO,IAAI,IAAI,CAAC,IAAa,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAc,CAAC,CAAC,OAAO,EAAE;QAC/E;QACA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzD,OAAO,IAAI,GAAG,KAAK;QACrB;QACA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACrG;AAEQ,IAAA,iBAAiB,CAAC,KAAwB,EAAA;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE;AACzD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;QACA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC9C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,SAAS,GAA2B;YACxC,KAAK;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;SAC1C;AACD,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QACpD;AACA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,iBAAiB,CAAC,MAAe,EAAA;QACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,EAAE;QACX;QACA,MAAM,GAAG,GAAG,MAAgF;AAC5F,QAAA,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE;YACtE,OAAO,GAAG,CAAC,KAAK;QAClB;QACA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC9B,YAAA,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC3C,IAAI,KAAK,EAAE;AACT,oBAAA,OAAO,KAAK;gBACd;YACF;QACF;AACA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,kBAAkB,CAAC,KAAc,EAAA;QACvC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9C,YAAA,OAAO,IAAI;QACb;QACA,MAAM,OAAO,GAAG,KAA0C;QAC1D,QACE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI;YAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI;YACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvG;AAEQ,IAAA,SAAS,CAAC,KAAc,EAAA;QAC9B,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,EAAE,GAAI,KAA0B,CAAC,EAAE;AACzC,QAAA,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IACxD;AAEQ,IAAA,QAAQ,CAAC,EAAiB,EAAA;QAChC,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,IAAI;QACb;QACA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,IAAI,IAAI;IACnE;AAEQ,IAAA,SAAS,CAAC,KAAc,EAAA;QAC9B,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9C,YAAA,OAAO,IAAI;QACb;QACA,MAAM,GAAG,GAAG,KAAiC;QAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;AAC/B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,GAAsB;IAC/B;AAEQ,IAAA,MAAM,6BAA6B,GAAA;AACzC,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAU,iBAAiB,CAAC,kBAAkB,CAAC;YAC3F,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;QACpD;AAAE,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3C;IACF;8GAnlBW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,wECjFpD,sgLAsIA,EAAA,MAAA,EAAA,CAAA,ulKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,uBAAuB,6FACvB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,gBAAgB,+BAChB,mCAAmC,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,gCAAgC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,kCAAkC,0FAClC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGV,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAjBnD,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,uBAAuB;wBACvB,iBAAiB;wBACjB,cAAc;wBACd,gBAAgB;wBAChB,mCAAmC;wBACnC,gCAAgC;wBAChC,kCAAkC;wBAClC,mBAAmB;AACpB,qBAAA,EAAA,QAAA,EAAA,sgLAAA,EAAA,MAAA,EAAA,CAAA,ulKAAA,CAAA,EAAA;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-details-view.component-e0-r7tOA.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/details/details-view.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/details/details-view.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { RootConfig } from '@acorex-platform/module-document-management-client/contracts';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPElementDataDirective } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXDataSource, AXDataSourceQuery, AXDataSourceSortOption } from '@acorex/cdk/common';\nimport { AXDataTableModule, AXDataTableRowDbClick } from '@acorex/components/data-table';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport type { AXMMetaDataBuilderValue } from '@acorex-platform/module-data-management-client/contracts';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isEqual } from 'lodash-es';\nimport { AXMDocumentExpirationBadgeComponent } from '../../../shared/components/document-expiration-badge/document-expiration-badge.component';\nimport { AXMDocumentVersionBadgeComponent } from '../../../shared/components/document-version-badge/document-version-badge.component';\nimport { AXMFolderExpirationBadgesComponent } from '../../../shared/components/folder-expiration-badges/folder-expiration-badges.component';\nimport { AXMDocumentExplorerNode } from '../../../shared/document-manager.types';\nimport {\n collectDocumentScopedMetaDataList,\n collectFolderScopedMetaDataList,\n mergeMetaDataLists,\n} from '../../../shared/folder-metadata.util';\nimport {\n collectDocumentTypeIds,\n collectDocumentTypeNames,\n collectLookupKeys,\n flattenMetaDataColumns,\n readNodeMetaDataValue,\n type HomogeneousGridColumn,\n} from '../../../shared/homogeneous-folder-grid.util';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype ExplorerGridRow = Record<string, unknown> & {\n id: string;\n node: AXMDocumentExplorerNode;\n};\n\ntype LookupRow = {\n id: string;\n displayName?: unknown;\n title?: unknown;\n name?: unknown;\n username?: unknown;\n};\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './details-view.component.html',\n styleUrls: ['./details-view.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXPElementDataDirective,\n AXDataTableModule,\n AXFormatModule,\n AXDateTimeModule,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n AXTranslationModule,\n ],\n})\nexport class AXMDocumentExplorerDetailsViewComponent {\n //#region ----- Services & Dependencies -----\n\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly documentTypeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)\n .data<string, { id: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly metadataColumns = signal<HomogeneousGridColumn[]>([]);\n private readonly lookupLabels = signal<Record<string, string>>({});\n private readonly showRowIndexColumnEnabled = signal(false);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly showIndexColumn = computed(() => this.showRowIndexColumnEnabled());\n\n protected readonly attributeColumns = computed<HomogeneousGridColumn[]>(() => {\n const kind = this.vm.homogeneousGrid()?.kind;\n if (kind === 'folder') {\n return [\n { name: 'name', title: '@general:terms.common.name', kind: 'attribute' },\n { name: 'description', title: '@general:terms.common.description', kind: 'attribute' },\n { name: 'items', title: '@document-management:explorer.grid.columns.items', kind: 'attribute', format: 'number' },\n { name: 'size', title: '@document-management:terms.common.size', kind: 'attribute', format: 'filesize' },\n { name: 'modifiedAt', title: '@document-management:terms.timestamps.modified-at', kind: 'attribute', format: 'datetime' },\n ];\n }\n return [\n { name: 'name', title: '@general:terms.common.title', kind: 'attribute' },\n { name: 'description', title: '@general:terms.common.description', kind: 'attribute' },\n { name: 'size', title: '@document-management:terms.common.size', kind: 'attribute', format: 'filesize' },\n { name: 'expirationDate', title: '@document-management:terms.document.expire-date', kind: 'attribute', format: 'date' },\n { name: 'version', title: '@document-management:terms.common.version', kind: 'attribute' },\n { name: 'modifiedAt', title: '@document-management:terms.timestamps.modified-at', kind: 'attribute', format: 'datetime' },\n ];\n });\n\n protected readonly columns = computed(() => [...this.attributeColumns(), ...this.metadataColumns()]);\n\n protected readonly gridNodes = computed<AXMDocumentExplorerNode[]>(() => {\n const kind = this.vm.homogeneousGrid()?.kind;\n if (kind === 'folder') {\n return this.vm.filteredFolders();\n }\n if (kind === 'document') {\n return this.vm.filteredFiles();\n }\n return [...this.vm.filteredFolders(), ...this.vm.filteredFiles()];\n });\n\n protected readonly gridRows = computed<ExplorerGridRow[]>(() => {\n const columns = this.columns();\n return this.gridNodes().map((node) => {\n const row: ExplorerGridRow = {\n ...this.flattenForm(node.metaDataForm),\n id: node.id,\n node,\n };\n for (const column of columns) {\n const raw =\n column.kind === 'metadata'\n ? (this.metadataValue(node, column) ?? row[column.name])\n : this.attributeValue(node, column);\n row[column.name] = this.sortableValue(raw, column);\n }\n return row;\n });\n });\n\n protected readonly selectedRows = computed(() => {\n const selectedIds = new Set(this.vm.selectedNodes().map((node) => node.id));\n return this.gridRows().filter((row) => selectedIds.has(row.id));\n });\n\n protected readonly allowSelection = computed(() => this.vm.selectionMode() !== 'none');\n\n //#endregion\n\n //#region ----- Data Source -----\n\n protected readonly dataSource = new AXDataSource<ExplorerGridRow>({\n key: 'id',\n pageSize: 20,\n load: async (query: AXDataSourceQuery) => {\n let rows = [...this.gridRows()];\n const search = this.extractSearchText(query.filter);\n if (search) {\n const needle = search.toLowerCase();\n rows = rows.filter((row) =>\n this.columns().some((column) => String(row[column.name] ?? '').toLowerCase().includes(needle)),\n );\n }\n const sort = this.keepExclusiveSort(query);\n if (sort?.field) {\n const field = sort.field;\n const direction = sort.dir === 'desc' ? -1 : 1;\n rows.sort((left, right) => this.compareValues(left[field], right[field]) * direction);\n }\n const skip = query.skip ?? 0;\n const take = query.take ?? 20;\n return { items: rows.slice(skip, skip + take), total: rows.length };\n },\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n void this.syncShowRowIndexColumnSetting();\n this.settingsService.onLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.syncShowRowIndexColumnSetting();\n });\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.syncShowRowIndexColumnSetting();\n });\n\n effect(() => {\n const match = this.vm.homogeneousGrid();\n const nodes = this.gridNodes();\n void this.loadMetadataColumns(match?.kind ?? null, nodes);\n });\n\n effect(() => {\n const columns = this.metadataColumns();\n const nodes = this.gridNodes();\n void this.loadLookupLabels(columns, nodes);\n });\n\n effect(() => {\n this.gridRows();\n this.dataSource.refresh();\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected handleSelectedRowsChange(rows: unknown[]): void {\n const next = (rows ?? [])\n .map(\n (row) =>\n this.asGridRow(row)?.node ?? this.gridRow(row)?.node ?? this.nodeById(this.readRowId(row)),\n )\n .filter((node): node is AXMDocumentExplorerNode => node != null);\n const current = this.vm.selectedNodes();\n if (isEqual(current.map((node) => node.id), next.map((node) => node.id))) {\n return;\n }\n this.vm.setSelectedNodes(next);\n }\n\n protected handleRowDbClick(event: AXDataTableRowDbClick): void {\n this.openNode(this.nodeFromTableEvent(event));\n }\n\n protected openNode(node: AXMDocumentExplorerNode | null | undefined): void {\n if (!node) {\n return;\n }\n if (node.type === 'folder') {\n this.vm.navigateToFolder(node.id);\n return;\n }\n void this.vm.openFileOnDoubleClick(node);\n }\n\n protected openRowContextMenu(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n const host = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;\n if (!host) {\n return;\n }\n host.dispatchEvent(\n new MouseEvent('contextmenu', {\n bubbles: true,\n cancelable: true,\n clientX: event.clientX,\n clientY: event.clientY,\n view: window,\n }),\n );\n }\n\n //#endregion\n\n //#region ----- Display -----\n\n protected gridRow(item: unknown): ExplorerGridRow | null {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const wrapped = item as { data?: unknown };\n return this.asGridRow(wrapped.data) ?? this.asGridRow(item);\n }\n\n protected cellValue(item: unknown, column: HomogeneousGridColumn): unknown {\n const row = this.gridRow(item);\n if (row && Object.prototype.hasOwnProperty.call(row, column.name)) {\n return row[column.name];\n }\n if (item == null || typeof item !== 'object') {\n return undefined;\n }\n const wrapped = item as { data?: Record<string, unknown>; value?: unknown };\n if (wrapped.data && typeof wrapped.data === 'object' && Object.prototype.hasOwnProperty.call(wrapped.data, column.name)) {\n return wrapped.data[column.name];\n }\n if (Object.prototype.hasOwnProperty.call(item, column.name)) {\n return (item as Record<string, unknown>)[column.name];\n }\n if ('value' in wrapped) {\n return wrapped.value;\n }\n return undefined;\n }\n\n protected attributeValue(node: AXMDocumentExplorerNode, column: HomogeneousGridColumn): unknown {\n switch (column.name) {\n case 'name':\n return node.type === 'file' ? node.title || node.name : node.name;\n case 'description':\n return node.description;\n case 'items':\n return node.itemsCount ?? node.childrenCount ?? node.children?.length ?? 0;\n case 'size':\n return node.size || 0;\n case 'expirationDate':\n return node.expirationDate;\n case 'version':\n return node.version;\n case 'modifiedAt':\n return node.modifiedAt ?? this.auditAt(node, 'updated') ?? this.auditAt(node, 'created');\n default:\n return undefined;\n }\n }\n\n protected metadataValue(node: AXMDocumentExplorerNode, column: HomogeneousGridColumn): unknown {\n const raw = readNodeMetaDataValue(node, column.name);\n if (!column.lookup) {\n return raw;\n }\n return this.resolveLookupDisplay(raw, column);\n }\n\n protected displayText(value: unknown): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (Array.isArray(value)) {\n return value.map((item) => this.displayText(item)).filter(Boolean).join(', ');\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n const title =\n row['displayName'] ?? row['title'] ?? row['displayTitle'] ?? row['name'] ?? row['text'] ?? row['username'];\n if (title != null) {\n return this.translationService.resolve(title as never) ?? this.displayText(title);\n }\n return this.translationService.resolve(value as never) ?? '';\n }\n return String(value);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadMetadataColumns(\n kind: 'folder' | 'document' | null,\n nodes: AXMDocumentExplorerNode[],\n ): Promise<void> {\n if (!kind || nodes.length === 0) {\n this.metadataColumns.set([]);\n return;\n }\n try {\n const types = await this.loadDocumentTypes(nodes);\n if (types.length === 0) {\n this.metadataColumns.set([]);\n return;\n }\n const list =\n kind === 'folder'\n ? collectFolderScopedMetaDataList(types)\n : mergeMetaDataLists(types.map((type) => collectDocumentScopedMetaDataList(type?.metaDataList)));\n this.metadataColumns.set(\n flattenMetaDataColumns(list, (title) => this.translationService.resolve(title as never) ?? ''),\n );\n } catch {\n this.metadataColumns.set([]);\n }\n }\n\n private async loadLookupLabels(\n columns: HomogeneousGridColumn[],\n nodes: AXMDocumentExplorerNode[],\n ): Promise<void> {\n const lookupColumns = columns.filter((column) => column.lookup?.entity);\n if (lookupColumns.length === 0 || nodes.length === 0) {\n if (Object.keys(this.lookupLabels()).length > 0) {\n this.lookupLabels.set({});\n }\n return;\n }\n\n const idsByEntity = new Map<string, { textField: string; ids: Set<string> }>();\n for (const column of lookupColumns) {\n const lookup = column.lookup;\n if (!lookup) {\n continue;\n }\n const bucket = idsByEntity.get(lookup.entity) ?? { textField: lookup.textField, ids: new Set<string>() };\n for (const node of nodes) {\n for (const id of collectLookupKeys(readNodeMetaDataValue(node, column.name), lookup.valueField)) {\n bucket.ids.add(id);\n }\n }\n idsByEntity.set(lookup.entity, bucket);\n }\n\n const labels: Record<string, string> = {};\n for (const [entityName, bucket] of idsByEntity) {\n const ids = [...bucket.ids];\n if (ids.length === 0) {\n continue;\n }\n const [moduleName, entity] = entityName.split('.');\n if (!moduleName || !entity) {\n continue;\n }\n try {\n const data = this.entityService\n .withEntity(moduleName, entity)\n .data<string, LookupRow>();\n const result = await data.query({\n skip: 0,\n take: Math.max(ids.length, 1),\n filter: { field: 'id', operator: { type: 'in' }, value: ids },\n });\n for (const row of result?.items ?? []) {\n const id = typeof row.id === 'string' ? row.id : '';\n if (!id) {\n continue;\n }\n const text = this.lookupLabelFromRow(row, bucket.textField);\n if (text) {\n labels[id] = text;\n }\n }\n } catch {\n // Keep the raw stored id when the lookup entity cannot be loaded.\n }\n }\n\n if (!isEqual(this.lookupLabels(), labels)) {\n this.lookupLabels.set(labels);\n }\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private async loadDocumentTypes(\n nodes: AXMDocumentExplorerNode[],\n ): Promise<Array<{ id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }>> {\n const loaded: Array<{ id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }> = [];\n const seen = new Set<string>();\n const remember = (type: { id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue } | null | undefined) => {\n if (!type) {\n return;\n }\n const key = String(type.id ?? type.name ?? '').trim();\n if (!key || seen.has(key)) {\n return;\n }\n seen.add(key);\n if (type.name) {\n seen.add(type.name);\n }\n loaded.push(type);\n };\n\n for (const id of collectDocumentTypeIds(nodes)) {\n try {\n remember(await this.documentTypeData.byKey(id));\n } catch {\n /* keep looking by name */\n }\n }\n\n const missingNames = collectDocumentTypeNames(nodes).filter((name) => !seen.has(name));\n if (missingNames.length === 0) {\n return loaded;\n }\n\n const res = await this.documentTypeData.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'name',\n operator: { type: 'in' },\n value: missingNames,\n },\n });\n for (const type of res?.items ?? []) {\n remember(type);\n }\n return loaded;\n }\n\n private flattenForm(form: unknown): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n const visit = (value: unknown) => {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return;\n }\n for (const [key, nested] of Object.entries(value as Record<string, unknown>)) {\n if (!(key in out)) {\n out[key] = nested;\n }\n visit(nested);\n }\n };\n visit(form);\n return out;\n }\n\n private auditAt(node: AXMDocumentExplorerNode, kind: 'updated' | 'created'): unknown {\n const row = node as AXMDocumentExplorerNode & {\n updated?: { at?: unknown };\n created?: { at?: unknown };\n auditInfo?: { updated?: { at?: unknown }; created?: { at?: unknown } };\n };\n return row[kind]?.at ?? row.auditInfo?.[kind]?.at;\n }\n\n private resolveLookupDisplay(value: unknown, column: HomogeneousGridColumn): string {\n const lookup = column.lookup;\n if (!lookup) {\n return this.displayText(value);\n }\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n const fromObject = this.displayText(value);\n if (fromObject) {\n return fromObject;\n }\n }\n const keys = collectLookupKeys(value, lookup.valueField);\n if (keys.length === 0) {\n return this.displayText(value);\n }\n const labels = this.lookupLabels();\n return keys.map((id) => labels[id] || id).filter(Boolean).join(', ');\n }\n\n private lookupLabelFromRow(row: LookupRow, textField: string): string {\n const fields: Record<string, unknown> = { ...row };\n return this.displayText(\n fields[textField] ?? row.displayName ?? row.title ?? row.name ?? row.username,\n );\n }\n\n private sortableValue(value: unknown, column: HomogeneousGridColumn): unknown {\n if (column.format === 'date' || column.format === 'datetime') {\n return value ?? null;\n }\n if (column.format === 'filesize' || column.format === 'number') {\n return typeof value === 'number' ? value : Number(value ?? 0);\n }\n return this.displayText(value);\n }\n\n private compareValues(left: unknown, right: unknown): number {\n if (left == null && right == null) {\n return 0;\n }\n if (left == null) {\n return -1;\n }\n if (right == null) {\n return 1;\n }\n if (left instanceof Date || right instanceof Date) {\n return new Date(left as never).getTime() - new Date(right as never).getTime();\n }\n if (typeof left === 'number' && typeof right === 'number') {\n return left - right;\n }\n return String(left).localeCompare(String(right), undefined, { numeric: true, sensitivity: 'base' });\n }\n\n private keepExclusiveSort(query: AXDataSourceQuery): AXDataSourceSortOption | undefined {\n const sorts = Array.isArray(query.sort) ? query.sort : [];\n if (sorts.length === 0) {\n return undefined;\n }\n const last = sorts[sorts.length - 1];\n const field = String(last?.field ?? '').trim();\n if (!field) {\n return undefined;\n }\n const exclusive: AXDataSourceSortOption = {\n field,\n dir: last.dir === 'desc' ? 'desc' : 'asc',\n };\n if (sorts.length > 1) {\n query.sort.splice(0, query.sort.length, exclusive);\n }\n return exclusive;\n }\n\n private extractSearchText(filter: unknown): string {\n if (!filter || typeof filter !== 'object') {\n return '';\n }\n const row = filter as { operator?: { type?: string }; value?: unknown; filters?: unknown[] };\n if (row.operator?.type === 'contains' && typeof row.value === 'string') {\n return row.value;\n }\n if (Array.isArray(row.filters)) {\n for (const child of row.filters) {\n const found = this.extractSearchText(child);\n if (found) {\n return found;\n }\n }\n }\n return '';\n }\n\n private nodeFromTableEvent(event: unknown): AXMDocumentExplorerNode | null {\n if (event == null || typeof event !== 'object') {\n return null;\n }\n const payload = event as { data?: unknown; row?: unknown };\n return (\n this.asGridRow(payload.data)?.node ??\n this.asGridRow(payload.row)?.node ??\n this.gridRow(payload.data)?.node ??\n this.gridRow(payload.row)?.node ??\n this.nodeById(this.readRowId(payload.data) ?? this.readRowId(payload.row) ?? this.readRowId(event))\n );\n }\n\n private readRowId(value: unknown): string | null {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const id = (value as { id?: unknown }).id;\n return typeof id === 'string' && id.trim() ? id : null;\n }\n\n private nodeById(id: string | null): AXMDocumentExplorerNode | null {\n if (!id) {\n return null;\n }\n return this.gridRows().find((row) => row.id === id)?.node ?? null;\n }\n\n private asGridRow(value: unknown): ExplorerGridRow | null {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const row = value as Partial<ExplorerGridRow>;\n if (!row.id || row.node == null) {\n return null;\n }\n return row as ExplorerGridRow;\n }\n\n private async syncShowRowIndexColumnSetting(): Promise<void> {\n try {\n const value = await this.settingsService.get<boolean>(AXPCommonSettings.ShowRowIndexColumn);\n this.showRowIndexColumnEnabled.set(value ?? false);\n } catch {\n this.showRowIndexColumnEnabled.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n"],"names":["i2","i3","i4"],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ import { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/en
|
|
|
9
9
|
import { RootConfig, AXPContentDocumentsPermissionKeys, stampDocumentDistributionFormValues, AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, isDocumentReviewRequired, isDocumentReviewMetadataComplete, highestDocumentVersionNumber, DOCUMENT_DISTRIBUTION_WORKFLOW_NAME } from '@acorex-platform/module-document-management-client/contracts';
|
|
10
10
|
import * as i0 from '@angular/core';
|
|
11
11
|
import { inject, Injectable } from '@angular/core';
|
|
12
|
-
import { j as AXMDocumentManagerService, m as AXPDocumentManagementService, s as sourcesAllowDocumentDistribution, n as collectDocumentTypeKeys } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
13
|
-
import { a as asTrimmedId, b as asDisplayName,
|
|
12
|
+
import { j as AXMDocumentManagerService, m as AXPDocumentManagementService, s as sourcesAllowDocumentDistribution, n as collectDocumentTypeKeys } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-ouqn86NW.mjs';
|
|
13
|
+
import { a as asTrimmedId, b as asDisplayName, r as resolveCreatedEntityId, m as mapWithConcurrency, u as unwrapLookupBoundValue, i as isLookupSelectAllValue, l as lookupSelectAllExcludedIds, c as asUserIds } from './acorex-platform-module-document-management-client-distribute-document.command.util-BH09ggCd.mjs';
|
|
14
14
|
|
|
15
15
|
//#region ----- Imports -----
|
|
16
16
|
//#endregion
|
|
@@ -21,11 +21,19 @@ const TASK_ENTITY_NAME = `${TASK_MODULE}.${TASK_ENTITY}`;
|
|
|
21
21
|
const TASK_TYPE_ENTITY = 'TaskType';
|
|
22
22
|
const TASK_STATUS_ENTITY = 'TaskStatus';
|
|
23
23
|
const TASK_ASSIGNMENT_ENTITY = 'TaskAssignment';
|
|
24
|
+
const USER_MODULE = 'SecurityManagement';
|
|
25
|
+
const USER_ENTITY = 'User';
|
|
24
26
|
const MOCK_DOCUMENT_DISTRIBUTION_TASK_TYPE_ID = 'pm-mock-task-type-document-distribution';
|
|
25
27
|
const DOCUMENT_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.document.name}`;
|
|
26
28
|
const FOLDER_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.folder.name}`;
|
|
27
29
|
const I18N = '@document-management:distribute';
|
|
28
30
|
const ASSIGNEE_CREATE_CONCURRENCY = 3;
|
|
31
|
+
const USER_QUERY_PAGE_SIZE = 1000;
|
|
32
|
+
const ACTIVE_USER_FILTER = {
|
|
33
|
+
field: 'effectiveState',
|
|
34
|
+
operator: { type: 'equal' },
|
|
35
|
+
value: 'active',
|
|
36
|
+
};
|
|
29
37
|
//#endregion
|
|
30
38
|
//#region ----- Helpers -----
|
|
31
39
|
function asItems(value) {
|
|
@@ -107,6 +115,7 @@ class AXMDistributeDocumentCommand {
|
|
|
107
115
|
this.documentTypeData = this.entityService
|
|
108
116
|
.withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)
|
|
109
117
|
.data();
|
|
118
|
+
this.userData = this.entityService.withEntity(USER_MODULE, USER_ENTITY).data();
|
|
110
119
|
}
|
|
111
120
|
//#endregion
|
|
112
121
|
//#region ----- Command Implementation -----
|
|
@@ -226,12 +235,14 @@ class AXMDistributeDocumentCommand {
|
|
|
226
235
|
})
|
|
227
236
|
.formField(`${I18N}.fields.assignees`, (field) => {
|
|
228
237
|
field.path('assigneeIds');
|
|
229
|
-
|
|
238
|
+
const assigneeLookup = {
|
|
230
239
|
entity: 'SecurityManagement.User',
|
|
231
240
|
multiple: true,
|
|
232
241
|
look: 'lookup',
|
|
233
242
|
validations: [{ rule: 'required' }],
|
|
234
|
-
|
|
243
|
+
filter: ACTIVE_USER_FILTER,
|
|
244
|
+
};
|
|
245
|
+
field.lookupBox(assigneeLookup);
|
|
235
246
|
});
|
|
236
247
|
})
|
|
237
248
|
.setActions((actions) => {
|
|
@@ -244,13 +255,13 @@ class AXMDistributeDocumentCommand {
|
|
|
244
255
|
}
|
|
245
256
|
const ctx = dialogRef.context();
|
|
246
257
|
const title = (ctx.title ?? '').trim();
|
|
247
|
-
const assigneeIds = asUserIds(ctx.assigneeIds);
|
|
248
258
|
if (!title) {
|
|
249
259
|
throw new Error(`${I18N}.errors.title-required`);
|
|
250
260
|
}
|
|
251
261
|
if (!ctx.dueDate) {
|
|
252
262
|
throw new Error(`${I18N}.errors.due-date-required`);
|
|
253
263
|
}
|
|
264
|
+
const assigneeIds = await this.resolveAssigneeIds(ctx.assigneeIds);
|
|
254
265
|
if (assigneeIds.length === 0) {
|
|
255
266
|
throw new Error(`${I18N}.errors.assignees-required`);
|
|
256
267
|
}
|
|
@@ -523,6 +534,38 @@ class AXMDistributeDocumentCommand {
|
|
|
523
534
|
const result = await this.taskTypeData.query({ skip: 0, take: 200 });
|
|
524
535
|
return (asItems(result).find((row) => row.workflowConfig?.workflowName?.trim() === DOCUMENT_DISTRIBUTION_WORKFLOW_NAME) ?? null);
|
|
525
536
|
}
|
|
537
|
+
async resolveAssigneeIds(value) {
|
|
538
|
+
const bound = unwrapLookupBoundValue(value);
|
|
539
|
+
if (isLookupSelectAllValue(bound)) {
|
|
540
|
+
const excluded = new Set(lookupSelectAllExcludedIds(bound));
|
|
541
|
+
const ids = await this.loadAllUserIds();
|
|
542
|
+
return ids.filter((id) => !excluded.has(id));
|
|
543
|
+
}
|
|
544
|
+
return asUserIds(bound);
|
|
545
|
+
}
|
|
546
|
+
async loadAllUserIds() {
|
|
547
|
+
const ids = [];
|
|
548
|
+
let skip = 0;
|
|
549
|
+
for (;;) {
|
|
550
|
+
const result = await this.userData.query({
|
|
551
|
+
skip,
|
|
552
|
+
take: USER_QUERY_PAGE_SIZE,
|
|
553
|
+
filter: ACTIVE_USER_FILTER,
|
|
554
|
+
});
|
|
555
|
+
const rows = asItems(result);
|
|
556
|
+
for (const row of rows) {
|
|
557
|
+
const id = asTrimmedId(row);
|
|
558
|
+
if (id && !ids.includes(id)) {
|
|
559
|
+
ids.push(id);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
if (rows.length < USER_QUERY_PAGE_SIZE) {
|
|
563
|
+
break;
|
|
564
|
+
}
|
|
565
|
+
skip += USER_QUERY_PAGE_SIZE;
|
|
566
|
+
}
|
|
567
|
+
return ids;
|
|
568
|
+
}
|
|
526
569
|
async loadStatuses(taskTypeId) {
|
|
527
570
|
const result = await this.taskStatusData.query({
|
|
528
571
|
skip: 0,
|
|
@@ -592,4 +635,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
592
635
|
}] });
|
|
593
636
|
|
|
594
637
|
export { AXMDistributeDocumentCommand };
|
|
595
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command-
|
|
638
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command-ClaZpJxL.mjs.map
|