@acorex/modules 19.4.9 → 19.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/content-management/README.md +3 -0
  2. package/content-management/index.d.ts +6 -0
  3. package/content-management/lib/const.d.ts +19 -0
  4. package/content-management/lib/content-management.module.d.ts +7 -0
  5. package/content-management/lib/entity.provider.d.ts +10 -0
  6. package/content-management/lib/menu.provider.d.ts +5 -0
  7. package/content-management/lib/permission-definition.provider.d.ts +4 -0
  8. package/content-management/lib/search-command.provider.d.ts +4 -0
  9. package/content-management/lib/setting.provider.d.ts +4 -0
  10. package/document-management/lib/features/shared/document-manager.service.d.ts +3 -0
  11. package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-C23PlUCn.mjs +392 -0
  12. package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-C23PlUCn.mjs.map +1 -0
  13. package/fesm2022/acorex-modules-content-management-promotion.entity-D3qRwZhQ.mjs +892 -0
  14. package/fesm2022/acorex-modules-content-management-promotion.entity-D3qRwZhQ.mjs.map +1 -0
  15. package/fesm2022/acorex-modules-content-management.mjs +2 -0
  16. package/fesm2022/acorex-modules-content-management.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs → acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs} +86 -43
  18. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs.map +1 -0
  19. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs → acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs.map → acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs → acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs.map → acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-document-management-details-view.component-CvHIETNf.mjs → acorex-modules-document-management-details-view.component-llMxeeFn.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-document-management-details-view.component-CvHIETNf.mjs.map → acorex-modules-document-management-details-view.component-llMxeeFn.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs → acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs.map → acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-document-management-drive.component-Crh10Z5J.mjs → acorex-modules-document-management-drive.component-BQ2w-PZw.mjs} +3 -2
  28. package/fesm2022/acorex-modules-document-management-drive.component-BQ2w-PZw.mjs.map +1 -0
  29. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs → acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs.map → acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs → acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs.map → acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-document-management-list-view.component-BHEwRA3m.mjs → acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-document-management-list-view.component-BHEwRA3m.mjs.map → acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs → acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs.map → acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs → acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs} +2 -2
  38. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs.map → acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs.map} +1 -1
  39. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs → acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs.map → acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs → acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs.map → acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs.map} +1 -1
  43. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  44. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs → acorex-modules-platform-management-acorex-modules-platform-management-B8aACrqL.mjs} +229 -1226
  45. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-B8aACrqL.mjs.map +1 -0
  46. package/fesm2022/{acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs → acorex-modules-platform-management-list-version.component-DhSicYd3.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs.map → acorex-modules-platform-management-list-version.component-DhSicYd3.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs → acorex-modules-platform-management-settings.provider-CnGAUpof.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs.map → acorex-modules-platform-management-settings.provider-CnGAUpof.mjs.map} +1 -1
  50. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  51. package/package.json +5 -1
  52. package/platform-management/lib/const.d.ts +0 -6
  53. package/platform-management/lib/entities/data-source/data-source.types.d.ts +1 -2
  54. package/platform-management/lib/entities/index.d.ts +0 -1
  55. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs.map +0 -1
  56. package/fesm2022/acorex-modules-document-management-drive.component-Crh10Z5J.mjs.map +0 -1
  57. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs.map +0 -1
  58. package/platform-management/lib/entities/promotion/index.d.ts +0 -4
  59. package/platform-management/lib/features/promotion/components/index.d.ts +0 -1
  60. /package/{platform-management → content-management}/lib/entities/promotion/promotion.datasource.d.ts +0 -0
  61. /package/{platform-management → content-management}/lib/entities/promotion/promotion.entity.d.ts +0 -0
  62. /package/{platform-management → content-management}/lib/entities/promotion/promotion.service.d.ts +0 -0
  63. /package/{platform-management → content-management}/lib/entities/promotion/promotion.types.d.ts +0 -0
  64. /package/{platform-management → content-management}/lib/features/promotion/components/promotion-slot/promotion-slot.component.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-content-management-promotion.entity-D3qRwZhQ.mjs","sources":["../../../../libs/modules/content-management/src/lib/entities/promotion/promotion.entity.ts"],"sourcesContent":["import {\n AXPEntity,\n AXPEntityCommandScope,\n AXPEntityQueryType,\n createAllQueryView,\n createQueryView,\n } from '@acorex/platform/common';\n import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\n import { Injector } from '@angular/core';\n import { RootConfig } from '../../const';\n import { AXPFileListItem } from '@acorex/platform/core';\n import { AXPFileStorageService, AXPFileStorageInfo } from '@acorex/platform/common';\nimport { AXMAppPromotionService } from './promotion.service';\n \n /**\n * Deeply sanitizes an object for storage in IndexedDB by removing non-serializable content\n */\n function sanitizeForStorage(obj: any): any {\n if (!obj) {\n return obj;\n }\n \n // Handle primitive values\n if (typeof obj !== 'object') {\n return obj;\n }\n \n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map(item => sanitizeForStorage(item));\n }\n \n // Handle Date objects\n if (obj instanceof Date) {\n return obj;\n }\n \n // Handle File objects specially\n if (obj instanceof File) {\n // File objects are handled separately, return as is\n return obj;\n }\n \n // Handle Blob objects\n if (obj instanceof Blob) {\n // Blob objects are handled separately\n return obj;\n }\n \n // Handle regular objects\n const cleanedObj: any = {};\n \n for (const [key, value] of Object.entries(obj)) {\n // Skip functions, symbols and other non-serializable types\n if (typeof value === 'function' || typeof value === 'symbol') {\n continue;\n }\n \n // Handle null values\n if (value === null) {\n cleanedObj[key] = null;\n continue;\n }\n \n // Recursively sanitize objects\n if (typeof value === 'object') {\n cleanedObj[key] = sanitizeForStorage(value);\n } else {\n cleanedObj[key] = value;\n }\n }\n \n return cleanedObj;\n }\n \n export async function promotionEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMAppPromotionService);\n const fileStorageService = injector.get(AXPFileStorageService);\n const i18n = RootConfig.config.i18n;\n \n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.promotion.name,\n source: '',\n title: RootConfig.entities.promotion.title,\n formats: {\n individual: RootConfig.entities.promotion.title,\n plural: RootConfig.entities.promotion.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'promotion',\n title: 'Promotion',\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n schema: {\n dataType: 'uuid',\n hidden: true,\n nullable: false,\n readonly: true,\n unique: {\n enabled: true,\n },\n },\n options: {\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'promotion',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'body',\n title: `t(\"body\", { scope: \"${i18n}\" })`,\n groupId: 'promotion',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.richText,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'imageId',\n title: `t(\"Gallery\", { scope: \"${i18n}\" })`,\n groupId: 'promotion',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.fileUploader,\n options: {\n multiple: true,\n \n },\n },\n },\n },\n {\n name: 'contentType',\n title: `t(\"contentType\", { scope: \"${i18n}\" })`,\n groupId: 'promotion',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: [\n { title: 'Media', name: 'media' },\n { title: 'Text', name: 'text' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n // {\n // name: 'shape',\n // title: `t(\"shape\", { scope: \"${i18n}\" })`,\n // groupId: 'promotion',\n // schema: {\n // dataType: 'string',\n // interface: {\n // type: AXPWidgetsCatalog.select,\n // options: {\n // valueField: 'name',\n // textField: 'title',\n // dataSource: [\n // { title: 'Circle', name: 'circle' },\n // { title: 'Square', name: 'square' },\n // ],\n // direction: 'horizontal',\n // multiple: false,\n // accept: '',\n // },\n // },\n // },\n // validations: [\n // {\n // rule: 'required',\n // },\n // ],\n // },\n {\n name: 'placement',\n title: `t(\"placement\", { scope: \"${i18n}\" })`,\n groupId: 'promotion',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: [\n {\n title: 'Side Menu Footer',\n name: 'side-menu-footer',\n options: [\n {\n type: 'text-editor',\n mode: 'edit',\n path: 'name',\n options: {\n placeholder: 'Name',\n defaultValue: 'test',\n },\n },\n ],\n },\n {\n title: 'Side Menu Header',\n name: 'side-menu-header',\n options: [\n {\n type: 'text-editor',\n mode: 'edit',\n path: 'name',\n options: {\n placeholder: 'Name',\n defaultValue: 'test',\n },\n },\n ],\n },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n // {\n // name: \"metadaata\",\n // title: \"Meta Data\",\n // groupId: 'promotion',\n // schema: {\n // dataType: 'object',\n // interface: {\n // type: AXPWidgetsCatalog.text,\n // // children: \"{{ context.eval('placement').options }}\" as any,\n // },\n // }\n //},\n // {\n // name: 'metadata',\n // title: `Meta Data`,\n // groupId: 'promotion',\n // schema: {\n // dataType: 'object',\n // interface: {\n // type: AXPWidgetsCatalog.blockLayout,\n // children: \"{{ context.eval('placement')?.options ?? [] }}\" as any,\n // },\n // },\n // },\n ],\n columns: [{ name: 'title' }, { name: 'placement' }, { name: 'imageId' }],\n commands: {\n create: {\n execute: async (data: any) => {\n data = sanitizeForStorage(data);\n \n const entityPayload = { ...data };\n const filesToUploadAfterSave: Array<{ fileItem: AXPFileListItem, blob: File }> = [];\n // const originalImageIdArray = Array.isArray(entityPayload.imageId) ? [...entityPayload.imageId] : [];\n \n if (entityPayload.imageId && Array.isArray(entityPayload.imageId)) {\n const processedImageIdForEntitySave: any[] = [];\n for (const fileItem of entityPayload.imageId as AXPFileListItem[]) {\n if (fileItem.source?.kind === 'blob' && fileItem.source.value instanceof Blob) {\n filesToUploadAfterSave.push({ fileItem, blob: fileItem.source.value as File });\n processedImageIdForEntitySave.push({\n tempId: fileItem.id,\n name: fileItem.name,\n size: fileItem.size,\n type: (fileItem.source.value as File).type, // Type from blob is reliable\n status: 'pending_upload'\n });\n } else if (fileItem.source?.kind === 'fileId' && fileItem.id && typeof fileItem.source.value === 'string') {\n // If it's a fileId, we assume it's already processed. We don't have type directly on AXPFileListItem.\n // We'll reconstruct it from fileStorageService or it should be part of what's saved if needed.\n processedImageIdForEntitySave.push({\n id: fileItem.id,\n name: fileItem.name,\n size: fileItem.size,\n // type: fileItem.type, // Removed: AXPFileListItem does not have .type\n status: 'uploaded',\n source: { kind: 'fileId', value: fileItem.source.value }\n });\n } else if (fileItem.id && fileItem.name) { // Fallback for items that might be from a previous save\n processedImageIdForEntitySave.push({\n id: fileItem.id,\n name: fileItem.name,\n size: fileItem.size,\n // type: fileItem.type, // Removed: AXPFileListItem does not have .type\n status: fileItem.status, // Preserve existing status\n source: fileItem.source ? { kind: fileItem.source.kind, value: fileItem.source.value } : undefined\n });\n }\n }\n entityPayload.imageId = processedImageIdForEntitySave;\n }\n \n const savedEntityId = await dataService.insertOne(entityPayload);\n // const entityId = savedEntity.id; // Corrected based on typical service return\n \n const finalImageIdReferences: any[] = (entityPayload.imageId || [])\n .filter((f: any) => f.status !== 'pending_upload');\n \n for (const { fileItem, blob } of filesToUploadAfterSave) {\n try {\n if (!fileStorageService) {\n throw new Error('fileStorageService is not available.');\n }\n const fileStorageInfo: AXPFileStorageInfo = await fileStorageService.save({\n file: blob,\n refId: savedEntityId,\n refType: `${RootConfig.module.name}.${RootConfig.entities.promotion.name}` ,\n category: '',\n name: blob.name,\n });\n \n finalImageIdReferences.push({\n id: fileStorageInfo.fileId,\n name: fileStorageInfo.name || blob.name,\n size: fileStorageInfo.size || blob.size,\n type: fileStorageInfo.mimeType || blob.type,\n status: 'uploaded',\n source: { kind: 'fileId', value: fileStorageInfo.fileId }\n });\n } catch (err: any) { // Typed error\n console.error('Error uploading file to FileStorage for entityId:', savedEntityId, 'file:', fileItem.name, err);\n finalImageIdReferences.push({\n tempId: fileItem.id,\n name: fileItem.name,\n size: fileItem.size,\n type: (blob as File).type, // Correctly access type from Blob/File\n status: 'upload_failed',\n error: err.message\n });\n }\n }\n \n if (filesToUploadAfterSave.length > 0) {\n let needsUpdate = true;\n if (entityPayload.imageId && entityPayload.imageId.length === finalImageIdReferences.length) {\n const oldIds = entityPayload.imageId.map((f: any) => f.id || f.tempId).sort().join(',');\n const newIds = finalImageIdReferences.map((f: any) => f.id || f.tempId).sort().join(',');\n if (oldIds === newIds && !finalImageIdReferences.some((f: any) => f.status === 'upload_failed')) {\n needsUpdate = false;\n }\n }\n \n if (needsUpdate) {\n // Assuming updateOne takes the ID and an object of fields to update\n await dataService.updateOne(savedEntityId, { imageId: finalImageIdReferences as any });\n }\n }\n \n return { id: savedEntityId };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n const entityId = data.id;\n const filesToUpload: Array<{ fileItem: AXPFileListItem, blob: File }> = [];\n const processedImageReferences: any[] = []; // Will hold final file objects for DB\n \n // Ensure fileStorageService is available (it's injected at the factory level)\n // const fileStorageService = injector.get(AXPFileStorageService); // Already available in this scope from factory\n \n if (data.imageId && Array.isArray(data.imageId)) {\n for (const fileItem of data.imageId as AXPFileListItem[]) {\n if (fileItem.status === 'deleted') {\n // File marked for deletion. Skip.\n // Optionally, you might want to call fileStorageService.delete(fileId) here\n // if fileItem.id points to an existing stored file and actual deletion is needed.\n // For now, we just disassociate it from the entity.\n continue;\n }\n \n if (fileItem.source?.kind === 'blob' && fileItem.source.value instanceof Blob) {\n filesToUpload.push({ fileItem, blob: fileItem.source.value as File });\n // Actual reference will be added to processedImageReferences after successful upload.\n } else if (fileItem.source?.kind === 'fileId' && fileItem.id && typeof fileItem.source.value === 'string') {\n // This is an existing file, keep its reference.\n processedImageReferences.push({\n id: fileItem.id,\n name: fileItem.name,\n size: fileItem.size,\n status: fileItem.status || 'uploaded', // Default to 'uploaded' if status is missing\n source: { kind: 'fileId', value: fileItem.source.value }\n // 'type' is not typically part of AXPFileListItem for existing fileIds in 'create'\n });\n } else if (fileItem.id && fileItem.name) { \n // Fallback for items that might be from a previous save state (already processed)\n // These are likely already processed files that are being kept.\n processedImageReferences.push({\n id: fileItem.id,\n name: fileItem.name,\n size: fileItem.size,\n status: fileItem.status || 'uploaded',\n source: fileItem.source ? { kind: fileItem.source.kind, value: fileItem.source.value } : undefined\n });\n }\n // Else: unknown fileItem structure, it will be ignored or you can log an error.\n }\n }\n \n // Upload new files and add their successful/failed info to processedImageReferences\n for (const { fileItem, blob } of filesToUpload) {\n try {\n if (!fileStorageService) {\n throw new Error('fileStorageService is not available.');\n }\n const fileStorageInfo: AXPFileStorageInfo = await fileStorageService.save({\n file: blob,\n refId: entityId, // ID of the entity being updated\n refType: `${RootConfig.module.name}.${RootConfig.entities.promotion.name}`,\n category: '', // Add category if applicable\n name: blob.name,\n });\n \n processedImageReferences.push({\n id: fileStorageInfo.fileId,\n name: fileStorageInfo.name || blob.name,\n size: fileStorageInfo.size || blob.size,\n type: fileStorageInfo.mimeType || blob.type, // Store MIME type\n status: 'uploaded',\n source: { kind: 'fileId', value: fileStorageInfo.fileId }\n });\n } catch (err: any) {\n console.error('Error uploading file to FileStorage during update for entityId:', entityId, 'file:', fileItem.name, err);\n processedImageReferences.push({\n tempId: fileItem.id, // Use fileItem.id if it's a unique temp client-side ID, or generate one\n name: fileItem.name,\n size: fileItem.size,\n type: (blob as File).type,\n status: 'upload_failed',\n error: err.message\n });\n }\n }\n \n // Construct the final data payload for the update.\n // Create a mutable copy of the input data.\n const finalUpdatePayload = { ...data };\n // Replace the original imageId array with the newly processed one.\n finalUpdatePayload.imageId = processedImageReferences;\n \n // Sanitize the entire payload before sending it to dataService.updateOne.\n // This ensures that the processedImageReferences (which are plain objects)\n // and all other fields in the payload are clean and serializable.\n const fullySanitizedPayload = sanitizeForStorage(finalUpdatePayload);\n \n return await dataService.updateOne(entityId, fullySanitizedPayload);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id: string) => {\n try {\n // Debug the incoming ID parameter\n console.log('byKey original id parameter:', id, typeof id);\n \n // Ensure id is a valid key for IndexedDB - needs to be string or number\n let validId: string;\n \n // If id is an object (e.g., from router params or complex structure)\n if (typeof id === 'object' && id !== null) {\n if ('id' in id) {\n validId = String((id as any).id);\n } else {\n validId = String(id);\n }\n console.warn('Converted object id to string:', validId);\n } else if (id === undefined || id === null) {\n console.error('Invalid id parameter: null or undefined');\n return null;\n } else {\n // Convert to string to ensure consistency\n validId = String(id);\n }\n \n // Log the ID being used for the query\n console.log('Fetching record with id:', validId, typeof validId);\n \n try {\n const data = await dataService.getOne(validId);\n console.log('getOne result:', data ? 'Data found' : 'No data found');\n \n // If no data was found\n if (!data) {\n console.warn(`No record found with id: ${validId}`);\n return null;\n }\n \n return data;\n } catch (error) {\n console.error(`Error fetching data with ID ${validId}:`, error);\n // Return null instead of throwing to avoid cascading errors\n return null;\n }\n } catch (error) {\n console.error('Critical error in byKey query:', error);\n return null; // Return null instead of throwing to avoid UI errors\n }\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e: any) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'promotion',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'body',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'imageId',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 6,\n },\n },\n },\n },\n {\n name: 'contentType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'shape',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'placement',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'metadata',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 10,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'promotion',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'body',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'imageId',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 6,\n },\n },\n },\n },\n {\n name: 'contentType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'shape',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'placement',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n // {\n // name: 'metadata',\n // layout: {\n // positions: {\n // lg: {\n // colSpan: 12,\n // order: 10,\n // },\n // },\n // },\n // },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'promotion',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'body',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'imageId',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 2,\n },\n },\n },\n },\n {\n name: 'contentType',\n layout: {\n positions: {\n lg: {\n colSpan: 4,\n order: 4,\n },\n },\n },\n },\n {\n name: 'shape',\n layout: {\n positions: {\n lg: {\n colSpan: 4,\n order: 5,\n },\n },\n },\n },\n {\n name: 'placement',\n layout: {\n positions: {\n lg: {\n colSpan: 4,\n order: 6,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'primary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"entity.modify\", { scope: \"common\" })',\n command: 'quick-modify-entity',\n priority: 'secondary',\n type: 'update',\n scope: AXPEntityCommandScope.Individual,\n },\n //TODO: add this to the entity\n {\n title: 't(\"upload.title\", { scope: \"common\" })',\n command: {\n name:'show-file-uploader-popup',\n options:{\n id: '{{ context.eval(\"id\") }}',\n files: '{{ context.eval(\"imageId\") }}',\n multiple: true,\n accept: '.jpg,.jpeg,.png,.gif,.webp',\n key: 'imageId',\n }\n },\n priority: 'secondary',\n type: 'update',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),\n createQueryView('media', `t(\"media\", { scope: \"${i18n}\" })`, true, {\n conditions: [\n {\n name: 'contentType.name',\n operator: {\n type: 'equal',\n },\n value: 'media',\n },\n ],\n }),\n createQueryView('text', `t(\"text\", { scope: \"${i18n}\" })`, true, {\n conditions: [\n {\n name: 'contentType.name',\n operator: {\n type: 'equal',\n },\n value: 'text',\n },\n ],\n }),\n ],\n },\n },\n },\n };\n \n return entityDef;\n }\n "],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { a as AXMContentManagementModule, b as AXMEntityProvider, c as AXMMenuProvider, d as AXMSearchCommandProvider, e as AXMSettingProvider, R as RootConfig } from './acorex-modules-content-management-acorex-modules-content-management-C23PlUCn.mjs';
2
+ //# sourceMappingURL=acorex-modules-content-management.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-content-management.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -3519,7 +3519,7 @@ class AXMDocumentManagerService {
3519
3519
  * Moves a node to another location
3520
3520
  */
3521
3521
  async moveTo(options) {
3522
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs')).AXMDocumentDriveChooseComponent;
3522
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs')).AXMDocumentDriveChooseComponent;
3523
3523
  const popup = await this.popupService.open(comp, {
3524
3524
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
3525
3525
  data: {
@@ -3552,7 +3552,7 @@ class AXMDocumentManagerService {
3552
3552
  * Copies a node to another location
3553
3553
  */
3554
3554
  async copyTo(options) {
3555
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs')).AXMDocumentDriveChooseComponent;
3555
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs')).AXMDocumentDriveChooseComponent;
3556
3556
  const popup = await this.popupService.open(comp, {
3557
3557
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
3558
3558
  data: {
@@ -3600,7 +3600,7 @@ class AXMDocumentManagerService {
3600
3600
  * Searches for folders by term within a scope
3601
3601
  */
3602
3602
  async searchFolders(searchTerm, scope, options) {
3603
- const { result: rootNode } = await this.getRoot(scope, options);
3603
+ const { result: rootNode } = options?.folderId ? await this.getFolder(scope, options.folderId, options) : await this.getRoot(scope, options);
3604
3604
  const folders = await this.folderService.searchFolders(searchTerm, rootNode.id);
3605
3605
  return folders.map((folder) => this.mapFolderDtoToFolderNode(folder));
3606
3606
  }
@@ -3608,7 +3608,7 @@ class AXMDocumentManagerService {
3608
3608
  * Searches for files by term within a scope
3609
3609
  */
3610
3610
  async searchFiles(searchTerm, scope, options) {
3611
- const { result: rootNode } = await this.getRoot(scope, options);
3611
+ const { result: rootNode } = options?.folderId ? await this.getFolder(scope, options.folderId, options) : await this.getRoot(scope, options);
3612
3612
  const files = await this.documentService.searchFiles(searchTerm, rootNode.id);
3613
3613
  return files.map((file) => this.mapFileToNode(file));
3614
3614
  }
@@ -3662,23 +3662,30 @@ class AXMDocumentManagerService {
3662
3662
  });
3663
3663
  if (result.data != null) {
3664
3664
  const { uploads, ...metaContext } = result.data.context;
3665
- for (const u of uploads) {
3666
- const fileInfo = u;
3665
+ for (const listItem of uploads) { // listItem is AXPFileListItem
3666
+ let actualFile;
3667
+ if (listItem.source?.kind === 'blob' && listItem.source.value instanceof Blob) {
3668
+ actualFile = listItem.source.value;
3669
+ }
3670
+ if (!actualFile) {
3671
+ console.warn(`Skipping item without a valid blob source in uploadFileByType: ${listItem.name}`);
3672
+ continue;
3673
+ }
3667
3674
  const f = await this.fileService.save({
3668
3675
  category: 'document',
3669
- file: fileInfo,
3676
+ file: actualFile,
3670
3677
  refId: folderId,
3671
3678
  refType: `${RootConfig.module.name}.${RootConfig.entities.folder.name}`,
3672
- name: fileInfo.name ?? '',
3679
+ name: listItem.name,
3673
3680
  });
3674
3681
  await this.fileService.commit(f.fileId);
3675
- const file = await this.documentService.insertOne({
3682
+ await this.documentService.insertOne({
3676
3683
  fileId: f.fileId,
3677
3684
  meta: metaContext,
3678
3685
  parentId: folderId,
3679
- size: fileInfo.size,
3680
- name: fileInfo.name ?? '',
3681
- title: fileInfo.name ?? '',
3686
+ size: listItem.size ?? 0,
3687
+ name: listItem.name,
3688
+ title: listItem.name,
3682
3689
  });
3683
3690
  }
3684
3691
  return true;
@@ -3703,26 +3710,37 @@ class AXMDocumentManagerService {
3703
3710
  const resultData = [];
3704
3711
  if (result.data != null) {
3705
3712
  const { uploads, ...metaContext } = result.data.context;
3706
- for (const u of uploads) {
3707
- const fileInfo = u;
3708
- await this.fileService.commit(u.fileId);
3709
- const file = await this.documentService.insertOne({
3710
- fileId: fileInfo.fileId,
3713
+ for (const listItem of uploads) { // listItem is AXPFileListItem
3714
+ let storageFileId;
3715
+ if (listItem.source?.kind === 'fileId' && typeof listItem.source.value === 'string') {
3716
+ storageFileId = listItem.source.value;
3717
+ }
3718
+ else if (listItem.id) {
3719
+ storageFileId = listItem.id;
3720
+ console.warn(`Using listItem.id as storageFileId for virtual upload: ${listItem.name}. Verify this is the intended fallback.`);
3721
+ }
3722
+ if (!storageFileId) {
3723
+ console.error(`Cannot determine storageFileId for virtual upload: ${listItem.name}`);
3724
+ continue;
3725
+ }
3726
+ await this.fileService.commit(storageFileId);
3727
+ const documentEntityId = await this.documentService.insertOne({
3728
+ fileId: storageFileId,
3711
3729
  meta: metaContext,
3712
3730
  parentId: 'virtual',
3713
- size: fileInfo.size,
3714
- name: fileInfo.name ?? '',
3715
- title: fileInfo.name ?? '',
3731
+ size: listItem.size ?? 0,
3732
+ name: listItem.name,
3733
+ title: listItem.name,
3716
3734
  });
3717
3735
  resultData.push({
3718
- id: file,
3719
- name: fileInfo.name ?? '',
3736
+ id: documentEntityId,
3737
+ name: listItem.name,
3720
3738
  parentId: 'virtual',
3721
3739
  type: 'file',
3722
3740
  storageType: 'virtual',
3723
- size: fileInfo.size,
3741
+ size: listItem.size ?? 0,
3724
3742
  meta: metaContext,
3725
- fileId: fileInfo.fileId
3743
+ fileId: storageFileId
3726
3744
  });
3727
3745
  }
3728
3746
  return resultData;
@@ -3813,7 +3831,7 @@ class AXMDocumentManagerService {
3813
3831
  * Shows folder edit dialog
3814
3832
  */
3815
3833
  async showFolderEditDialog(node) {
3816
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs'))
3834
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs'))
3817
3835
  .AXMCreateFolderDialog;
3818
3836
  const popup = await this.popupService.open(comp, {
3819
3837
  title: await this.translate.translateAsync('@document-management:actions.update-folder'),
@@ -3827,7 +3845,7 @@ class AXMDocumentManagerService {
3827
3845
  * Shows create folder dialog
3828
3846
  */
3829
3847
  async showCreateFolderDialog(parentId) {
3830
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs'))
3848
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs'))
3831
3849
  .AXMCreateFolderDialog;
3832
3850
  const popup = await this.popupService.open(comp, {
3833
3851
  title: await this.translate.translateAsync('@document-management:actions.create-folder'),
@@ -3841,7 +3859,7 @@ class AXMDocumentManagerService {
3841
3859
  * Shows rename popup for a node
3842
3860
  */
3843
3861
  async showRenamePopup(node) {
3844
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs'))
3862
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs'))
3845
3863
  .AXMRenameNodeDialog;
3846
3864
  const popup = await this.popupService.open(comp, {
3847
3865
  title: 't("actions.rename")',
@@ -3867,7 +3885,7 @@ class AXMDocumentManagerService {
3867
3885
  * Shows choose file dialog
3868
3886
  */
3869
3887
  async showChooseFileDialog(scope) {
3870
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs')).AXMDocumentDriveChooseComponent;
3888
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs')).AXMDocumentDriveChooseComponent;
3871
3889
  const result = await this.popupService.open(comp, {
3872
3890
  title: await this.translate.translateAsync('@document-management:actions.choose-from-drive'),
3873
3891
  data: {
@@ -5029,13 +5047,13 @@ class AXMDocumentExplorerComponent {
5029
5047
  this.showContextMenu = input(true);
5030
5048
  this.view = signal(null);
5031
5049
  this.viewMap = {
5032
- list: async () => (await import('./acorex-modules-document-management-list-view.component-BHEwRA3m.mjs')).AXMDocumentExplorerListViewComponent,
5033
- 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
5034
- 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
5035
- details: async () => (await import('./acorex-modules-document-management-details-view.component-CvHIETNf.mjs')).AXMDocumentExplorerDetailsViewComponent,
5036
- 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
5037
- 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
5038
- 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs')).AXMDocumentExplorerAttachmentComponent,
5050
+ list: async () => (await import('./acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs')).AXMDocumentExplorerListViewComponent,
5051
+ 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
5052
+ 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
5053
+ details: async () => (await import('./acorex-modules-document-management-details-view.component-llMxeeFn.mjs')).AXMDocumentExplorerDetailsViewComponent,
5054
+ 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
5055
+ 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
5056
+ 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs')).AXMDocumentExplorerAttachmentComponent,
5039
5057
  };
5040
5058
  this.#effect = effect(() => {
5041
5059
  if (this.vm.loadingFolderId() == null) {
@@ -5144,9 +5162,34 @@ class AXPFileUploaderWidgetExtensionComponent {
5144
5162
  }
5145
5163
  async chooseFromDrive(scope) {
5146
5164
  const result = await this.driveService.showChooseFileDialog(scope);
5147
- const files = await Promise.all(result.map(async (item) => (await this.fileStorageService.getInfo(item.fileId)).binary));
5148
- console.log(files);
5149
- //this.host.setValue([...this.host.getValue(), ...files]);
5165
+ const files = (await Promise.all(result.map(async (item) => {
5166
+ if (!item.fileId || item.isFolder) {
5167
+ return null;
5168
+ }
5169
+ try {
5170
+ const storageInfo = await this.fileStorageService.getInfo(item.fileId);
5171
+ if (!storageInfo) {
5172
+ console.warn(`Could not retrieve storage info for fileId: ${item.fileId}`);
5173
+ return null;
5174
+ }
5175
+ return {
5176
+ id: storageInfo.fileId,
5177
+ name: storageInfo.name || item.name || 'Unnamed File',
5178
+ size: storageInfo.size,
5179
+ type: storageInfo.mimeType,
5180
+ status: 'uploaded', // Files from drive are considered uploaded
5181
+ source: {
5182
+ kind: 'blob',
5183
+ value: new Blob([storageInfo.binary], { type: storageInfo.mimeType })
5184
+ }
5185
+ };
5186
+ }
5187
+ catch (error) {
5188
+ console.error(`Error processing fileId ${item.fileId}:`, error);
5189
+ return null;
5190
+ }
5191
+ }))).filter(Boolean);
5192
+ this.host.setValue([...this.host.getValue(), ...files]);
5150
5193
  }
5151
5194
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetExtensionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5152
5195
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileUploaderWidgetExtensionComponent, isStandalone: true, selector: "axp-file-uploader-widget-extension", providers: [], ngImport: i0, template: `
@@ -5239,11 +5282,11 @@ function routesFacory() {
5239
5282
  children: [
5240
5283
  {
5241
5284
  path: '',
5242
- loadComponent: () => import('./acorex-modules-document-management-drive.component-Crh10Z5J.mjs').then((c) => c.AXMDocumentDriveComponent),
5285
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-BQ2w-PZw.mjs').then((c) => c.AXMDocumentDriveComponent),
5243
5286
  },
5244
5287
  {
5245
5288
  path: ':id',
5246
- loadComponent: () => import('./acorex-modules-document-management-drive.component-Crh10Z5J.mjs').then((c) => c.AXMDocumentDriveComponent),
5289
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-BQ2w-PZw.mjs').then((c) => c.AXMDocumentDriveComponent),
5247
5290
  },
5248
5291
  ],
5249
5292
  },
@@ -5288,7 +5331,7 @@ class AXMDocumentManagementModule {
5288
5331
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
5289
5332
  useFactory: async () => {
5290
5333
  const injector = inject(Injector);
5291
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs')).AXMPermissionDefinitionProvider;
5334
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs')).AXMPermissionDefinitionProvider;
5292
5335
  return new provider(injector);
5293
5336
  },
5294
5337
  multi: true,
@@ -5388,7 +5431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5388
5431
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
5389
5432
  useFactory: async () => {
5390
5433
  const injector = inject(Injector);
5391
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs')).AXMPermissionDefinitionProvider;
5434
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs')).AXMPermissionDefinitionProvider;
5392
5435
  return new provider(injector);
5393
5436
  },
5394
5437
  multi: true,
@@ -5417,4 +5460,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5417
5460
  */
5418
5461
 
5419
5462
  export { AXPDocumentExplorerViewModel as A, AXMFolderService as B, AXMFolderServiceImpl as C, AXMEntityProvider as D, AXMMenuProvider as E, AXMSearchCommandProvider as F, AXMSettingProvider as G, RootConfig as R, AXMDocumentManagerService as a, AXMDocumentExplorerComponent as b, AXMFolderPathBreadcrumbsComponent as c, AXMPermissionsKeys as d, AXMDocumentTypeService as e, AXMDocumentManagementModule as f, documentFactory as g, AXMDocumentManagementDocumentEntityModule as h, AXMDocumentService as i, AXMDocumentServiceImpl as j, documentTypeFactory as k, AXMDocumentManagementDocumentTypeEntityModule as l, AXMDocumentTypeServiceImpl as m, documentTypeMetaDefinitionfactory as n, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as o, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as p, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as q, documentTypeMetaValueFactory as r, AXMDocumentManagementDocumentTypeMetaValueEntityModule as s, AXMDocumentManagementDocumentTypeMetaValueEntityService as t, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as u, documentTypeStatusDefinitionFactory as v, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as w, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as x, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as y, folderFactory as z };
5420
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs.map
5463
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs.map