@acorex/platform 19.2.4 → 19.2.6

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 (74) hide show
  1. package/common/lib/layout/menu/menu.types.d.ts +2 -1
  2. package/common/lib/utils/export-popup.d.ts +19 -0
  3. package/common/lib/utils/export.service.d.ts +21 -0
  4. package/common/lib/utils/index.d.ts +1 -1
  5. package/common/lib/workflows/common.workflow.d.ts +2 -0
  6. package/fesm2022/acorex-platform-common.mjs +236 -84
  7. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-layout-builder.mjs +12 -8
  9. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-layout-designer.mjs +15 -15
  11. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-entity.mjs +69 -17
  13. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-search.mjs +10 -6
  15. package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bl9f4Rtk.mjs +108 -0
  17. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bl9f4Rtk.mjs.map +1 -0
  18. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-ClNKQnoc.mjs +376 -0
  19. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-ClNKQnoc.mjs.map +1 -0
  20. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs +87 -0
  21. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs.map +1 -0
  22. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B4aBmc5H.mjs +130 -0
  23. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B4aBmc5H.mjs.map +1 -0
  24. package/fesm2022/{acorex-platform-themes-default-error-401.component-BPQ1z42t.mjs → acorex-platform-themes-default-error-401.component-Brx-zHqH.mjs} +3 -3
  25. package/fesm2022/{acorex-platform-themes-default-error-401.component-BPQ1z42t.mjs.map → acorex-platform-themes-default-error-401.component-Brx-zHqH.mjs.map} +1 -1
  26. package/fesm2022/{acorex-platform-themes-default-error-404.component-CGgD5C7q.mjs → acorex-platform-themes-default-error-404.component-C8mJP9D8.mjs} +3 -3
  27. package/fesm2022/{acorex-platform-themes-default-error-404.component-CGgD5C7q.mjs.map → acorex-platform-themes-default-error-404.component-C8mJP9D8.mjs.map} +1 -1
  28. package/fesm2022/{acorex-platform-themes-default-error-offline.component-CkVGS1HQ.mjs → acorex-platform-themes-default-error-offline.component-CwBClgcf.mjs} +3 -3
  29. package/fesm2022/{acorex-platform-themes-default-error-offline.component-CkVGS1HQ.mjs.map → acorex-platform-themes-default-error-offline.component-CwBClgcf.mjs.map} +1 -1
  30. package/fesm2022/acorex-platform-themes-default-search-popup.component-BZJTLnlM.mjs +129 -0
  31. package/fesm2022/acorex-platform-themes-default-search-popup.component-BZJTLnlM.mjs.map +1 -0
  32. package/fesm2022/acorex-platform-themes-default-setting-page.component-oA4kM_-3.mjs +74 -0
  33. package/fesm2022/acorex-platform-themes-default-setting-page.component-oA4kM_-3.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-themes-default-setting-view.component-CJZBhtKE.mjs +71 -0
  35. package/fesm2022/acorex-platform-themes-default-setting-view.component-CJZBhtKE.mjs.map +1 -0
  36. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D_AK8uVB.mjs +118 -0
  37. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D_AK8uVB.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-themes-default.mjs +29 -29
  39. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-themes-shared.mjs +13 -8
  41. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  42. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B53z9A_A.mjs → acorex-platform-widgets-button-widget-designer.component-2iWPztWW.mjs} +2 -2
  43. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B53z9A_A.mjs.map → acorex-platform-widgets-button-widget-designer.component-2iWPztWW.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CHDMlorX.mjs → acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs} +2 -2
  45. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CHDMlorX.mjs.map → acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs.map} +1 -1
  46. package/fesm2022/acorex-platform-widgets.mjs +54 -40
  47. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  48. package/layout/builder/lib/builder/widget-column-renderer.d.ts +3 -1
  49. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +1 -0
  50. package/layout/search/lib/search.viewmodel.d.ts +2 -1
  51. package/package.json +6 -6
  52. package/themes/default/lib/layouts/search-layout/search-popup.component.d.ts +2 -1
  53. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
  54. package/themes/shared/lib/components/layout-elements/layout-header.component.d.ts +1 -1
  55. package/themes/shared/lib/components/layout-elements/layout-list.component.d.ts +1 -1
  56. package/themes/shared/lib/palette.provider.d.ts +2 -2
  57. package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +4 -1
  58. package/common/lib/utils/pdf.service.d.ts +0 -25
  59. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Yq3pzh9K.mjs +0 -108
  60. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Yq3pzh9K.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DarhCaO1.mjs +0 -369
  62. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DarhCaO1.mjs.map +0 -1
  63. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CPG4i72f.mjs +0 -87
  64. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CPG4i72f.mjs.map +0 -1
  65. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs +0 -130
  66. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-themes-default-search-popup.component-ChZHzvG4.mjs +0 -122
  68. package/fesm2022/acorex-platform-themes-default-search-popup.component-ChZHzvG4.mjs.map +0 -1
  69. package/fesm2022/acorex-platform-themes-default-setting-page.component-CGjDwlvq.mjs +0 -74
  70. package/fesm2022/acorex-platform-themes-default-setting-page.component-CGjDwlvq.mjs.map +0 -1
  71. package/fesm2022/acorex-platform-themes-default-setting-view.component-DK9j13yV.mjs +0 -71
  72. package/fesm2022/acorex-platform-themes-default-setting-view.component-DK9j13yV.mjs.map +0 -1
  73. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-C3RJdApv.mjs +0 -118
  74. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-C3RJdApv.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-common.mjs","sources":["../../../../libs/platform/common/src/lib/app/app-startup.service.ts","../../../../libs/platform/common/src/lib/app/app-version.provider.ts","../../../../libs/platform/common/src/lib/app/application.types.ts","../../../../libs/platform/common/src/lib/app/operators.ts","../../../../libs/platform/common/src/lib/data/data-provider.types.ts","../../../../libs/platform/common/src/lib/utils/clipboard-service.ts","../../../../libs/platform/common/src/lib/utils/data-generator.ts","../../../../libs/platform/common/src/lib/utils/pdf.service.ts","../../../../libs/platform/common/src/lib/data/dexie-storage.service.ts","../../../../libs/platform/common/src/lib/data/entity-data-seeder.ts","../../../../libs/platform/common/src/lib/data/entity-storage-service.ts","../../../../libs/platform/common/src/lib/data/operators.service.ts","../../../../libs/platform/common/src/lib/data/filter-middleware.service.ts","../../../../libs/platform/common/src/lib/errors/error-handler-registry.service.ts","../../../../libs/platform/common/src/lib/errors/global-error-handler.ts","../../../../libs/platform/common/src/lib/layout/grid-layout/grid-layout.directive.ts","../../../../libs/platform/common/src/lib/layout/sticky.directive.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot-registery.service.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot-loader.service.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot.directive.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot.module.ts","../../../../libs/platform/common/src/lib/layout/logo/logo.types.ts","../../../../libs/platform/common/src/lib/layout/logo/logo.component.ts","../../../../libs/platform/common/src/lib/layout/logo/logo.component.html","../../../../libs/platform/common/src/lib/layout/menu/menu.provider.ts","../../../../libs/platform/common/src/lib/layout/menu/menu.service.ts","../../../../libs/platform/common/src/lib/layout/menu/search-definition.provider.ts","../../../../libs/platform/common/src/lib/layout/menu/search.provider.ts","../../../../libs/platform/common/src/lib/layout/theme/components/slots/footer-text-slot.component.ts","../../../../libs/platform/common/src/lib/layout/theme/components/slots/navbar-slot.component.ts","../../../../libs/platform/common/src/lib/search/search-definition.builder.ts","../../../../libs/platform/common/src/lib/search/search-definition.provider.ts","../../../../libs/platform/common/src/lib/search/search.provider.ts","../../../../libs/platform/common/src/lib/search/search.service.ts","../../../../libs/platform/common/src/lib/settings/settings.types.ts","../../../../libs/platform/common/src/lib/settings/setting.builder.ts","../../../../libs/platform/common/src/lib/settings/setting-definition.provider.ts","../../../../libs/platform/common/src/lib/settings/settings.provider.ts","../../../../libs/platform/common/src/lib/settings/settings.service.ts","../../../../libs/platform/common/src/lib/workflows/common.workflow.ts","../../../../libs/platform/common/src/lib/workflows/navigate.workflow.ts","../../../../libs/platform/common/src/lib/workflows/error-handler.ts","../../../../libs/platform/common/src/lib/common.module.ts","../../../../libs/platform/common/src/lib/configs/app.config.ts","../../../../libs/platform/common/src/lib/configs/config.types.ts","../../../../libs/platform/common/src/lib/file-storage/file-storage.service.ts","../../../../libs/platform/common/src/lib/file-storage/file-storage.types.ts","../../../../libs/platform/common/src/lib/filters/filters.service.ts","../../../../libs/platform/common/src/lib/store/common.actions.ts","../../../../libs/platform/common/src/acorex-platform-common.ts"],"sourcesContent":["import { Injectable, inject, provideAppInitializer } from '@angular/core';\n\nexport interface AXPStartUpTask {\n name: string;\n statusText: string;\n run: () => Promise<void>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPAppStartUpService {\n private tasks: AXPStartUpTask[] = [];\n\n registerTask(task: AXPStartUpTask) {\n this.tasks.push(task);\n }\n\n async runAllTasks() {\n for (const task of this.tasks) {\n this.updateStatus(task.statusText);\n await task.run();\n }\n }\n\n private updateStatus(status: string) {\n const loadingText = document.querySelector('#loadingText');\n if (loadingText) {\n loadingText.innerHTML = status;\n }\n }\n}\n\nfunction initAppFactory(appInitService: AXPAppStartUpService) {\n return () => appInitService.runAllTasks();\n}\n\nexport const AXPAppStartUpProvider = provideAppInitializer(() => {\n const initializerFn = initAppFactory(inject(AXPAppStartUpService));\n return initializerFn();\n});\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXPAppVersion {\n version: string;\n build: number;\n date: Date;\n}\n\nexport interface AXPAppVersionProvider {\n provider(): Promise<AXPAppVersion>;\n}\n\nexport const AXP_APP_VERSION_PROVIDER = new InjectionToken<AXPAppVersionProvider>('AXP_APP_VERSION_PROVIDER', {\n providedIn: 'root',\n factory: () => {\n return new AXPAppVersionDefaultProvider();\n },\n});\n\nclass AXPAppVersionDefaultProvider implements AXPAppVersionProvider {\n async provider(): Promise<AXPAppVersion> {\n return {\n version: '1.0.0',\n build: 1,\n date: new Date(),\n };\n }\n}\n","import { AXDataSourceOperator, AXStyleColorType } from '@acorex/components/common';\nimport { AXPValidationRules } from '@acorex/platform/core';\nimport { AXPWidgetTypesMap, AXPWidgetValueTransformFunctions } from '@acorex/platform/layout/builder';\nimport { kebabCase } from 'lodash-es';\nimport { AXPGridLayoutOptions } from '../layout';\n\nexport interface AXEntityPropertyWidget {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n path: string;\n id?: string;\n formula?: string;\n children?: AXEntityPropertyWidget[];\n mode: 'view' | 'edit' | 'designer';\n options?: Record<string, any>;\n triggers?: { event: string; action: string; disabled?: boolean }[];\n valueTransforms?: AXPWidgetValueTransformFunctions;\n}\n\nexport enum AXPRelationshipKind {\n Association,\n Composition,\n Aggregation,\n}\n\nexport enum AXPRelationshipCardinality {\n OneToOne,\n OneToMany,\n ManyToMany,\n}\n\nexport interface AXPRelationship {\n id: string;\n from: string;\n to: string;\n kind: AXPRelationshipKind;\n cardinality: AXPRelationshipCardinality;\n}\n\nexport enum AXPEntityCommandScope {\n TypeLevel = 'typeLevel',\n Selected = 'selected',\n Individual = 'individual',\n Section = 'section',\n}\n\nexport enum AXPEntityQueryType {\n Single = 'single',\n List = 'list',\n}\n\nexport interface AXPEntityPropertyLayoutConfig extends AXPGridLayoutOptions {\n label?: {\n visible?: boolean;\n };\n order?: number;\n}\n\nexport interface AXPEntityPropertyGroup {\n id: string;\n title: string;\n description?: string;\n permissions?: string[];\n}\n\nexport interface AXPEntityPropertyView {\n name: string;\n permissions?: string[];\n layout?: AXPEntityPropertyLayoutConfig;\n}\n\nexport interface AXPEntityPropertyUpdateView extends AXPEntityPropertyView { }\n\nexport interface AXPEntityPropertyCreateView extends AXPEntityPropertyView {\n defaultValue?: any;\n}\n\nexport interface AXPEntitySectionView {\n id: string;\n description?: string;\n order?: number;\n layout?: AXPEntityPropertyLayoutConfig;\n}\n\nexport interface AXPEntityProperty {\n name: string;\n title: string;\n description?: string;\n groupId?: string;\n reference?: {\n relationId: string;\n };\n schema: {\n dataType: string;\n nullable?: boolean;\n readonly?: boolean;\n hidden?: boolean;\n defaultValue?: any | string | ((context: any | null) => any);\n unique?: {\n enabled: boolean;\n };\n interface?: Partial<AXEntityPropertyWidget>;\n };\n options?: {\n filter?: {\n advance?: {\n enabled?: boolean;\n widgetType?: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n };\n inline?: {\n enabled?: boolean;\n };\n };\n sort?: {\n enabled?: boolean;\n };\n };\n validations?: AXPValidationRules;\n}\n\nexport interface AXPEntityTableColumn {\n name: string;\n title?: string;\n sort?: {\n enabled?: boolean;\n dir?: 'asc' | 'desc';\n };\n options?: {\n visible?: boolean;\n width?: string;\n dataPath?: string;\n [name: string]: any;\n };\n}\n\nexport interface AXPEntityCommand {\n execute: string | Function; // As runnable expression\n permissions?: string[];\n}\n\nexport interface AXPEntityQuery {\n execute: string | Function; // As runnable expression\n type: AXPEntityQueryType;\n}\n\nexport type AXPCommandActionType =\n | 'create'\n | 'update'\n | 'delete'\n | 'print'\n | 'confirm'\n | 'report'\n | 'info'\n | 'view'\n | 'archive'\n | 'design';\n\nexport interface AXPCommandActionLook {\n color: AXStyleColorType;\n icon: string;\n}\n\nexport type AXPCommandActionPriority = 'primary' | 'secondary';\n\nexport type AXPCommandActionCallback =\n | string\n | {\n name: string;\n options: {\n decoration?: {\n header?: {\n title?: string;\n };\n };\n process?: {\n [name: string]: any;\n };\n [name: string]: any;\n };\n };\n\nexport interface AXPCommandAction extends Partial<AXPCommandActionLook> {\n permissions?: string[];\n command: AXPCommandActionCallback;\n title: string;\n type: AXPCommandActionType;\n priority: 'primary' | 'secondary';\n separated?: boolean;\n}\n\nexport interface AXPEntityAction extends AXPCommandAction {\n scope: AXPEntityCommandScope;\n}\n\nexport interface AXPEntity {\n module: string;\n name: string;\n source: string;\n parentKey?: string;\n title: string;\n formats: {\n individual: string;\n plural: string;\n lookup?: string;\n searchResult?: {\n title: string;\n description?: string;\n };\n };\n relatedEntities?: AXPRelatedEntity[];\n groups?: AXPEntityPropertyGroup[];\n properties: AXPEntityProperty[];\n columns?: AXPEntityTableColumn[];\n commands?: {\n create: AXPEntityCommand | undefined;\n update?: AXPEntityCommand | undefined;\n delete?: AXPEntityCommand | undefined;\n [name: string]: AXPEntityCommand | undefined;\n };\n queries: {\n byKey: AXPEntityQuery;\n list?: AXPEntityQuery;\n lookup?: AXPEntityQuery;\n history?: AXPEntityQuery;\n comments?: AXPEntityQuery;\n [name: string]: AXPEntityQuery | undefined;\n };\n validations?: AXPValidationRules;\n interfaces?: {\n master?: {\n single?: AXPEntityMasterSingleLayoutView;\n list?: AXPEntityMasterListView;\n create?: AXPEntityMasterCreateLayoutView;\n update?: AXPEntityMasterUpdateLayoutView;\n };\n detail?: {\n list?: AXPEntityDetailListView;\n };\n };\n}\n\nexport function getEntityInfo(entity: AXPEntity) {\n return {\n source: `${entity.module}.${entity.name}`,\n module: {\n route: kebabCase(entity.module),\n },\n entity: {\n route: kebabCase(entity.name),\n },\n };\n}\n\nexport function createQueryView(name: string, title: string, fixed: boolean, params: { columns?: string[], conditions?: AXPQueryFilter[], sorts?: AXPQuerySort[] } = { columns: [], conditions: [], sorts: [] }): AXPQueryView {\n params = Object.assign({ columns: [], sorts: [], conditions: [] }, params)\n return {\n name,\n title,\n fixed,\n columns: params.columns ?? [],\n conditions: params.conditions ?? [],\n sorts: params.sorts ?? [],\n };\n}\n\nexport function createAllQueryView(params: { columns?: string[], conditions?: AXPQueryFilter[], sorts?: AXPQuerySort[] } | undefined = { columns: [], sorts: [], conditions: [] }): AXPQueryView {\n params = Object.assign({ columns: [], sorts: [], conditions: [] }, params)\n return createQueryView('all', 't(\"allItem\", { scope: \"common\" })', true,\n { columns: params.columns ?? [], conditions: params.conditions ?? [], sorts: params.sorts ?? [] });\n}\n\n\n\nexport interface AXPRelatedEntity {\n entity: string;\n title?: string;\n columns?: string[];\n conditions?: AXPQueryFilter[];\n // sorts?: AXPQuerySort[];\n}\n\nexport interface AXPAggregate {\n id: string;\n name: string;\n title: string;\n entities: AXPEntity[];\n}\n\nexport interface AXPModule {\n name: string;\n title: string;\n aggregates: AXPAggregate[];\n relationships?: AXPRelationship[];\n}\n\nexport interface AXPApplication {\n name: string;\n title: string;\n modules: AXPModule[];\n}\n\nexport interface AXPEntityMasterLayoutView {\n title?: string;\n sections: AXPEntitySectionView[];\n properties?: AXPEntityPropertyView[];\n}\n\nexport interface AXPEntityMasterCreateLayoutView extends AXPEntityMasterLayoutView {\n steps?: {\n id: string;\n title: string;\n description?: string;\n };\n}\n\nexport interface AXPEntityMasterUpdateLayoutView extends AXPEntityMasterLayoutView { }\n\nexport interface AXPEntityMasterSingleLayoutView extends AXPEntityMasterLayoutView {\n title: string;\n description?: string;\n actions?: AXPEntityAction[];\n}\n\nexport interface AXPEntityMasterListView {\n title?: string;\n description?: string;\n actions?: AXPEntityAction[];\n views: AXPQueryView[];\n}\n\nexport interface AXPEntityDetailListView {\n title?: string;\n description?: string;\n columns: AXPEntityTableColumn[];\n actions?: AXPEntityAction[];\n}\n\nexport interface AXPQueryView {\n name: string;\n fixed: boolean;\n title: string;\n columns: string[];\n conditions: AXPQueryFilter[];\n sorts: AXPQuerySort[];\n indexCol?: boolean;\n pageSize?: number;\n}\n\nexport interface AXPQueryFilter {\n name: string; // entity property name\n operator: AXDataSourceOperator;\n value: any;\n}\n\nexport interface AXPQuerySort {\n name: string; // entity property name\n dir: 'asc' | 'desc';\n}\n\nexport function resolveActionLook(tr: AXPEntityAction): AXPCommandActionLook {\n const icon = 'fa-light';\n switch (tr.type) {\n case 'create':\n return { color: 'primary', icon: `${icon} fa-add` };\n case 'view':\n return { color: 'primary', icon: `${icon} fa-eye` };\n case 'info':\n return { color: 'primary', icon: `${icon} fa-info` };\n case 'delete':\n return { color: 'danger', icon: `${icon} fa-trash-can` };\n case 'update':\n return { color: 'primary', icon: `${icon} fa-pen-to-square` };\n case 'print':\n return { color: 'secondary', icon: `${icon} fa-print` };\n case 'confirm':\n return { color: 'success', icon: `${icon} fa-check` };\n case 'archive':\n return { color: 'primary', icon: `${icon} fa-archive` };\n case 'design':\n return { color: 'primary', icon: `${icon} fa-paintbrush` };\n default:\n return { color: 'primary', icon: '' };\n }\n}\n","export interface AXPFilterOperator {\n name: string;\n title: string;\n hasValue: boolean;\n}\n\nexport const EQ_OPER: AXPFilterOperator = { name: 'equal', title: 'Equal', hasValue: true };\nexport const NOT_EQ_OPER: AXPFilterOperator = { name: 'notEqual', title: 'Not Equal', hasValue: true };\nexport const GT_OPER: AXPFilterOperator = { name: 'greaterThan', title: 'Greater Than', hasValue: true };\nexport const LT_OPER: AXPFilterOperator = { name: 'lessThan', title: 'Less Than', hasValue: true };\nexport const GTE_OPER: AXPFilterOperator = {\n name: 'greaterThanOrEqual',\n title: 'Greater Than or Equal',\n hasValue: true,\n};\nexport const LTE_OPER: AXPFilterOperator = { name: 'lessThanOrEqual', title: 'Less Than or Equal', hasValue: true };\nexport const CONTAINS_OPER: AXPFilterOperator = { name: 'contains', title: 'Contains', hasValue: true };\nexport const NOT_CONTAINS_OPER: AXPFilterOperator = { name: 'notContains', title: 'Does Not Contain', hasValue: true };\nexport const STARTS_WITH_OPER: AXPFilterOperator = { name: 'startsWith', title: 'Starts With', hasValue: true };\nexport const ENDS_WITH_OPER: AXPFilterOperator = { name: 'endsWith', title: 'Ends With', hasValue: true };\nexport const IS_EMPTY_OPER: AXPFilterOperator = { name: 'isEmpty', title: 'Is Empty', hasValue: false };\nexport const IS_NOT_EMPTY_OPER: AXPFilterOperator = { name: 'isNotEmpty', title: 'Is Not Empty', hasValue: false };\nexport const BETWEEN_OPER: AXPFilterOperator = { name: 'between', title: 'Between', hasValue: true };\n\nexport const STRING_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n CONTAINS_OPER,\n NOT_CONTAINS_OPER,\n STARTS_WITH_OPER,\n ENDS_WITH_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n];\n\nexport const NUMBER_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n BETWEEN_OPER,\n GT_OPER,\n GTE_OPER,\n LT_OPER,\n LTE_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n];\n\nexport const BOOLEAN_OPERATORS = [EQ_OPER];\n\nexport const DATE_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n GT_OPER,\n GTE_OPER,\n LT_OPER,\n LTE_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n];\n\nexport const ALL_DEFAULT_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n GT_OPER,\n LT_OPER,\n GTE_OPER,\n LTE_OPER,\n CONTAINS_OPER,\n NOT_CONTAINS_OPER,\n STARTS_WITH_OPER,\n ENDS_WITH_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n BETWEEN_OPER,\n];\n","export abstract class AXPDataProvider {\n abstract insertOne(entity: any, entityItem: any): Promise<any>;\n abstract insertMany(entity: any, entityList: any): Promise<any>;\n abstract getOne(entity: any, id: string): Promise<any>;\n abstract getMany(entity: any, params?: any): Promise<any>;\n abstract updateOne(entity: any, id?: string, data?: { [key: string]: any }): Promise<any>;\n abstract deleteOne(entity: any, id: string): Promise<any>;\n abstract getFirst(entity: any): Promise<any>;\n abstract uploadFile(file: File, title: string, customUrl?: string): Promise<string>;\n abstract updateFile(id:string,file: File, title: string, customUrl?: string): Promise<string>;\n abstract uploadMultipleFiles(files: File[], title: string): Promise<string[]>;\n abstract viewFile(id: string, name: string): Promise<Blob>;\n abstract downloadFile(id: string, name: string): Promise<Blob>;\n}\n","import { AXToastService } from '@acorex/components/toast';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPClipBoardService {\n private toast = inject(AXToastService);\n\n public copy(title: string, value: string) {\n const copyText = document.createElement('input');\n copyText.type = 'text';\n copyText.select();\n copyText.setSelectionRange(0, 99999); // For mobile devices\n copyText.remove();\n navigator.clipboard.writeText(value);\n this.toast.success(`${title} copied!`);\n }\n\n}","export class AXPDataGenerator {\n static uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n }\n\n static number(max: number): number;\n static number(min: number, max: number): number;\n static number(...args: number[]): number {\n let min = 0;\n let max = 100;\n if (args.length == 1)\n max = args[0]\n if (args.length == 2) {\n min = args[0]\n max = args[1]\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static date(): Date;\n static date(start: Date): Date;\n static date(start: Date, end: Date): Date;\n static date(...args: any[]): Date {\n let start = new Date(2000, 0, 1);\n let end = new Date();\n\n if (args.length === 1) {\n start = args[0];\n } else if (args.length === 2) {\n start = args[0];\n end = args[1];\n }\n\n const startTime = start.getTime();\n const endTime = end.getTime();\n return new Date(startTime + Math.random() * (endTime - startTime));\n }\n\n\n static array<T>(length: number = 5, generator: () => T): T[] {\n return Array.from({ length }, generator);\n }\n\n static pick<T>(items: T[]): T\n static pick<T>(items: T[], count: number): T[];\n static pick<T>(...args: any[]): T | T[] {\n if (args.length < 1) {\n throw new Error('Invalid parameters');\n }\n const items: T[] = args[0];\n const count: number = args[1] ?? 1\n if (count < 1) {\n throw new Error('Count must be at least 1');\n }\n\n // If the count is greater than the number of items, just return a shuffled copy of the array\n if (count >= items.length) {\n return [...items].sort(() => Math.random() - 0.5);\n }\n\n // Shuffle the array and slice the first 'count' elements\n const shuffled = items.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; // Swap elements\n }\n return count == 1 ? shuffled.slice(0, count)[0] : shuffled.slice(0, count);\n }\n\n static string(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n static boolean(): boolean {\n return Math.random() >= 0.5;\n }\n\n static item<T>(array: T[] = []): T | undefined {\n return array.length > 0 ? array[Math.floor(Math.random() * array.length)] : undefined;\n }\n\n static color(): string {\n const color = Math.floor(Math.random() * 16777215).toString(16);\n return `#${color.padStart(6, '0')}`;\n }\n\n static alphanumeric(length: number = 10): string {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static alphabet(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n\n static phone(): string {\n const areaCode = this.number(100, 999);\n const exchangeCode = this.number(100, 999);\n const lineNumber = this.number(1000, 9999);\n return `${areaCode}-${exchangeCode}-${lineNumber}`;\n }\n\n static firstName(): string {\n const firstNames = ['John', 'Allen', 'Jak', 'Rose', 'Kate', 'Liam', 'Olivia', 'Noah', 'Emma', 'Ava'];\n return this.pick(firstNames);\n }\n\n static lastName(): string {\n const lastNames = ['Gates', 'Jonsen', 'Smith', 'Ford', 'Jakson', 'Brown', 'Johnson', 'Williams', 'Jones', 'Garcia'];\n return this.pick(lastNames);\n }\n\n static email(): string;\n static email(firstName: string, lastName: string): string;\n static email(...args: any[]): string {\n const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'example.com'];\n const domain = this.pick(domains);\n const separator = this.pick(['.', '_', '']);\n const randomSuffix = this.boolean() ? this.number(1, 99).toString() : '';\n\n if (args.length === 2) {\n const firstName = args[0].toLowerCase();\n const lastName = args[1].toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n } else {\n const firstName = this.firstName().toLowerCase();\n const lastName = this.lastName().toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n }\n\n static country(): string {\n const countries = ['USA', 'Canada', 'Mexico', 'Germany', 'France', 'Japan', 'Australia'];\n return this.pick(countries);\n }\n\n static city(): string {\n const cities = ['New York', 'Los Angeles', 'Toronto', 'Vancouver', 'Berlin', 'Paris', 'Tokyo', 'Sydney'];\n return this.pick(cities);\n }\n\n static state(): string {\n const states = ['NY', 'CA', 'TX', 'ON', 'BC', 'NSW', 'BER', 'IDF', 'TYO'];\n return this.pick(states);\n }\n\n static address(): string {\n const streets = ['Main St', 'High St', 'Maple Ave', 'Oak St', 'Pine St', 'Cedar St'];\n const streetNumber = this.number(100, 9999);\n const street = this.pick(streets);\n const city = this.city();\n const state = this.state();\n const zip = this.number(10000, 99999);\n const country = this.country();\n return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;\n }\n}\n","// AXPPdfService\nimport { inject, Injectable, RendererFactory2 } from '@angular/core';\n\nexport enum AXPPdfPageSize {\n A4 = 'a4',\n A5 = 'a5',\n Letter = 'letter',\n Legal = 'legal',\n Custom = 'custom' // Handle custom sizes\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPPdfService {\n private renderer = inject(RendererFactory2).createRenderer(null, null);\n\n async generatePdfBlob(div: string | HTMLElement, options: { pageSize?: AXPPdfPageSize | { width: number, height: number } } = {}): Promise<string> {\n const { jsPDF } = await import('jspdf');\n const html2canvas = (await import('html2canvas')).default;\n\n const element = typeof div === 'string' ? document.getElementById(div) : div;\n\n if (!element) {\n console.error('Element not found.');\n return Promise.reject('Element not found.');\n }\n\n const { pageSize = AXPPdfPageSize.A4 } = options;\n let pdf;\n\n if (typeof pageSize === 'string' && pageSize !== AXPPdfPageSize.Custom) {\n pdf = new jsPDF({\n orientation: 'portrait',\n format: pageSize\n });\n } else if (typeof pageSize !== 'string') {\n const { width, height } = pageSize;\n pdf = new jsPDF({\n orientation: 'portrait',\n unit: 'pt',\n format: [width, height]\n });\n } else {\n return Promise.reject(\"Invalid page size.\");\n }\n\n const canvas = await html2canvas(element);\n const imageData = canvas.toDataURL('image/png');\n const imgProps = pdf.getImageProperties(imageData);\n const pdfWidth = pdf.internal.pageSize.getWidth();\n const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;\n\n pdf.addImage(imageData, 'PNG', 0, 0, pdfWidth, pdfHeight);\n return pdf.output('bloburl') as any as string;\n }\n\n async printPdf(div: string | HTMLElement, options: { pageSize?: AXPPdfPageSize | { width: number, height: number } } = {}): Promise<void> {\n const blobUrl = await this.generatePdfBlob(div, options).catch(err => {\n console.error('Failed to generate PDF', err);\n return null;\n });\n\n if (!blobUrl) return;\n\n const iframe = this.renderer.createElement('iframe');\n this.renderer.setStyle(iframe, 'display', 'none');\n this.renderer.appendChild(document.body, iframe);\n\n iframe.src = blobUrl;\n iframe.onload = () => {\n setTimeout(() => {\n iframe.contentWindow.print();\n }, 1000);\n };\n\n // Add a button or some UI element that allows the user to manually signal they are done printing\n // const finishButton = this.renderer.createElement('button');\n // this.renderer.setProperty(finishButton, 'innerText', 'Finish Printing');\n // this.renderer.listen(finishButton, 'click', () => {\n // this.renderer.removeChild(document.body, iframe);\n // this.renderer.removeChild(document.body, finishButton);\n // });\n // this.renderer.appendChild(document.body, finishButton);\n }\n}\n","import { applyFilterArray, applySortArray } from '@acorex/platform/core';\nimport Dexie from 'dexie';\nimport { AXPDataGenerator } from '../utils';\nimport { AXPPagedListResult, AXPQueryRequest } from './data.types';\nimport { AXPEntityStorageService } from './entity-storage-service';\n\nexport class AXPDexieEntityStorageService extends Dexie implements AXPEntityStorageService<string, any> {\n constructor() {\n super('ACoreXPlatform');\n this.version(1).stores({\n 'entity-store': '++id, entityName, [entityName+id]',\n });\n }\n\n get dbName(): string {\n return 'ACoreXPlatform';\n }\n\n async initial<T = any>(entityName: string, collection: T[]): Promise<T[]> {\n const exists = await this.table('entity-store').where({ entityName }).count();\n if (exists === 0) {\n await this.table('entity-store').bulkAdd(collection.map((item) => ({ ...item, entityName })));\n }\n return collection;\n }\n\n async getOne<T = any>(entityName: string, id: string): Promise<T> {\n return await this.table('entity-store').where({ entityName, id: id }).first();\n }\n\n async updateOne<T = any>(entityName: string, id: string, keyValue: { [key: string]: any }): Promise<T> {\n await this.table('entity-store').where({ entityName, id: id }).modify(keyValue);\n return await this.getOne(entityName, id);\n }\n\n async deleteOne(entityName: string, id: string): Promise<void> {\n await this.table('entity-store').where({ entityName, id: id }).delete();\n }\n\n async insertOne<T = any>(entityName: string, entity: T): Promise<string> {\n const uuid = AXPDataGenerator.uuid();\n await this.table('entity-store').add({ ...entity, id: uuid, entityName });\n return uuid;\n }\n\n async getAll<T = any>(entityName: string): Promise<T[]> {\n return await this.table('entity-store').where({ entityName }).toArray();\n }\n\n async query<T = any>(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<T>> {\n let result = await this.table('entity-store').where({ entityName }).toArray();\n\n if (request.sort && request.sort.length) {\n result = applySortArray(result, request.sort);\n }\n result = applyFilterArray(result, request.filter ? [request.filter] : []);\n\n return Promise.resolve({\n total: result.length,\n items: result.slice(request.skip, (request.skip ?? 0) + (request.take ?? 0)),\n });\n }\n}\n\n// export class AXPDexieTableStorageService extends Dexie implements AXPEntityStorageService {\n// private schemaUpdateLock: Promise<void> = Promise.resolve();\n\n// constructor() {\n// super('ACoreXPlatform');\n// // Initial empty version\n// //this.version(1).stores({});\n// }\n\n// // Function to change the schema dynamically\n// private async changeSchema(schemaChanges: { [tableName: string]: string | null }): Promise<void> {\n// // Acquire schema update lock to ensure no other operations are performed while schema is changing\n// this.schemaUpdateLock = this.schemaUpdateLock.then(async () => {\n// console.log('Attempting schema change with:', schemaChanges);\n\n// try {\n// this.close();\n\n// const newDb = new Dexie(this.name);\n\n// // Extract current schema in Dexie format\n// const currentSchema = this.tables.reduce((result, { name, schema }) => {\n// result[name] = [schema.primKey.src, ...schema.indexes.map((idx) => idx.src)].join(',');\n// return result;\n// }, {} as { [tableName: string]: string });\n\n// console.log('Current Schema:', currentSchema);\n\n// // Define current schema version\n\n// newDb.version(this.verno + 10).stores(currentSchema);\n\n// // Define new schema version with schema changes\n// const nextVersion = this.verno + 1;\n// newDb.version(nextVersion).stores(schemaChanges);\n// await newDb.open();\n\n// // Reassign updated db instance\n// Object.assign(this, newDb);\n// console.log(`Schema updated. Current version: ${this.verno}`);\n// } catch (error) {\n// console.error('Error during schema change:', error);\n// throw error;\n// }\n// });\n\n// // Wait for schema change lock to complete\n// await this.schemaUpdateLock;\n// }\n\n// private async ensureInitialized(entityName: string): Promise<void> {\n// if (this.tables.findIndex((table) => table.name === entityName) == -1) {\n// const schemaChanges: { [tableName: string]: string } = {};\n// schemaChanges[entityName] = '++id';\n// await this.changeSchema(schemaChanges);\n// }\n// }\n\n// get dbName(): string {\n// return 'ACoreXPlatform';\n// }\n\n// private async getTable<T>(entityName: string) {\n// await this.ensureInitialized(entityName);\n// return this.table<T, number>(entityName);\n// }\n\n// async initial<T = any>(entityName: string, collection: T[]): Promise<void> {\n// const table = await this.getTable<T>(entityName);\n// const exists = await table.count();\n// if (exists === 0) {\n// await table.bulkAdd(collection);\n// }\n// }\n\n// async getOne<T = any>(entityName: string, id: string): Promise<T> {\n// const table = await this.getTable<T>(entityName);\n// return (await table.where({ id: parseInt(id) }).first()) as T;\n// }\n\n// async updateOne(entityName: string, id: string, keyValue: { [key: string]: any }): Promise<void> {\n// const table = await this.getTable(entityName);\n// await table.update(parseInt(id), keyValue);\n// }\n\n// async deleteOne(entityName: string, id: string): Promise<void> {\n// const table = await this.getTable(entityName);\n// await table.delete(parseInt(id));\n// }\n\n// async insertOne<T = any>(entityName: string, entity: T): Promise<void> {\n// const table = await this.getTable<T>(entityName);\n// await table.add(entity);\n// }\n\n// async getAll<T = any>(entityName: string): Promise<T[]> {\n// const table = await this.getTable<T>(entityName);\n// return await table.toArray();\n// }\n// }\n","import { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport interface AXPDataSeeder {\n seed(): Promise<void>;\n}\n\nexport const AXP_DATA_SEEDER_TOKEN = new InjectionToken<AXPDataSeeder>('AXP_DATA_SEEDER_TOKEN');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPDataSeederService {\n private loader = inject(AXP_DATA_SEEDER_TOKEN, { optional: true });\n\n async seed(): Promise<void> {\n if (Array.isArray(this.loader)) {\n for (const loader of this.loader) {\n await loader.seed();\n }\n } else {\n await this.loader?.seed();\n }\n }\n}\n","import { inject } from '@angular/core';\nimport { AXPPagedListResult, AXPQueryRequest } from './data.types';\n\nexport interface AXPEntityModel<Id> {\n id?: Id;\n}\n\n\n\nexport abstract class AXPEntityStorageService<\n K,\n T extends AXPEntityModel<K>,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n abstract get dbName(): string;\n\n abstract initial(entityName: string, collection: T[]): Promise<T[]>;\n\n abstract getOne(entityName: string, id: K): Promise<RGetSingle>;\n\n abstract updateOne(entityName: string, id: K, keyValue: { [key: string]: any }): Promise<RGetSingle>;\n\n abstract deleteOne(entityName: string, id: K): Promise<void>;\n\n abstract insertOne(entityName: string, entity: RCreate): Promise<K>;\n\n abstract getAll(entityName: string): Promise<RGetList[]>;\n\n abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>>;\n}\n\nexport abstract class AXPEntityDataProvider<\n K,\n T extends AXPEntityModel<K>,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n abstract get entityName(): string;\n\n abstract initial(collection: T[]): Promise<void>;\n\n abstract getOne(id: K): Promise<RGetSingle>;\n\n abstract getAll(): Promise<RGetList[]>;\n\n abstract updateOne(id: K, keyValue: { [key: string]: any }): Promise<RGetSingle>;\n\n abstract deleteOne(id: K): Promise<void>;\n\n abstract insertOne(entity: RCreate): Promise<K>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>>;\n}\n\nexport class AXPEntityDataProviderImpl<\n K = any,\n T extends AXPEntityModel<K> = any,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> implements AXPEntityDataProvider<K, T, RCreate, RGetSingle, RGetList> {\n constructor(\n private storageService: AXPEntityStorageService<K, T, RCreate, RGetSingle, RGetList>,\n public entityName: string\n ) { }\n\n async initial(collection: T[]): Promise<void> {\n await this.storageService.initial(this.entityName, collection);\n }\n\n getOne(id: K): Promise<RGetSingle> {\n return this.storageService.getOne(this.entityName, id);\n }\n\n getAll(): Promise<RGetList[]> {\n return this.storageService.getAll(this.entityName);\n }\n\n query(request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>> {\n return this.storageService.query(this.entityName, request);\n }\n\n updateOne(id: K, keyValue: { [key: string]: any }): Promise<RGetSingle> {\n return this.storageService.updateOne(this.entityName, id, keyValue);\n }\n\n deleteOne(id: K): Promise<void> {\n return this.storageService.deleteOne(this.entityName, id);\n }\n\n insertOne(entity: RCreate): Promise<K> {\n return this.storageService.insertOne(this.entityName, entity);\n }\n}\n\nexport abstract class AXMEntityCrudService<\n Id = string,\n T = any,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n abstract insertOne(request: RCreate): Promise<Id>;\n\n abstract getOne(id: Id): Promise<RGetSingle>;\n\n abstract deleteOne(id: Id): Promise<void>;\n\n abstract updateOne(id: Id, values: { [key: string]: any }): Promise<void>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>>;\n}\n\nexport class AXMEntityCrudServiceImpl<\n Id,\n T extends AXPEntityModel<Id>,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n private _storageService = inject(AXPEntityStorageService);\n private _entityDataProvider = new AXPEntityDataProviderImpl<Id, T, RCreate, RGetSingle, RGetList>(\n this._storageService,\n this.entityName\n );\n\n constructor(private entityName: string) { }\n\n async insertOne(request: RCreate): Promise<Id> {\n return this._entityDataProvider.insertOne(request);\n }\n\n async getOne(id: Id): Promise<RGetSingle> {\n return this._entityDataProvider.getOne(id);\n }\n\n async deleteOne(id: Id): Promise<void> {\n return this._entityDataProvider.deleteOne(id);\n }\n\n async updateOne(id: Id, values: { [key: string]: any }): Promise<RGetSingle> {\n return this._entityDataProvider.updateOne(id, values);\n }\n\n async query(request: AXPQueryRequest = { skip: 0, take: 100 }): Promise<AXPPagedListResult<RGetList>> {\n return this._entityDataProvider.query(request);\n }\n\n // get entityDataProvider() {\n // return this._entityDataProvider;\n // }\n\n get storageService() {\n return this._storageService;\n }\n}\n","import { AXDataSourceOperator } from '@acorex/components/common';\nimport { Injectable } from '@angular/core';\n\nexport abstract class AXPCustomOperatorService {\n abstract getCustomOperators(): { [key: string]: AXDataSourceOperator };\n}\n\n@Injectable()\nexport class AXPCustomOperatorServiceImpl extends AXPCustomOperatorService {\n getCustomOperators(): { [key: string]: AXDataSourceOperator } {\n return {};\n }\n}\n","import { AXDataSourceFilterOption, AXDataSourceOperator } from '@acorex/components/common';\nimport { inject, Injectable } from '@angular/core';\nimport { ALL_DEFAULT_OPERATORS } from '../app';\nimport { AXPCustomOperatorService } from './operators.service';\n\nexport abstract class AXPFilterOperatorMiddlewareService {\n /**\n * Middleware to transform selected filters into corresponding operators.\n * @param filters Array of selected filters (e.g., user input).\n * @param customOperators Optional custom operators map to override default operators.\n * @returns Transformed filters based on custom or default operators.\n */\n abstract transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];\n\n /**\n * Helper method to transform a single filter. This handles recursion for nested filters.\n * @param filter A single filter object.\n * @returns Transformed filter.\n */\n abstract transformFilter(filters: AXDataSourceFilterOption): AXDataSourceFilterOption;\n\n abstract getOperator(key: string): AXDataSourceOperator;\n}\n\n@Injectable()\nexport class AXPFilterOperatorMiddlewareServiceImpl extends AXPFilterOperatorMiddlewareService {\n private customOperatorService = inject(AXPCustomOperatorService);\n\n private operators: { [key: string]: AXDataSourceOperator } = {\n ...this.getDefaultOperators(),\n ...this.customOperatorService.getCustomOperators(),\n };\n\n transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[] {\n return filters.map((filter) => this.transformFilter(filter));\n }\n\n transformFilter(filter: AXDataSourceFilterOption): AXDataSourceFilterOption {\n const { operator, value, filters, field } = filter;\n // Find the operator (either default or custom)\n const filterOperator = this.operators[operator?.type] || null;\n\n // Start by transforming the filter itself\n const transformedFilter: AXDataSourceFilterOption = {\n ...filter, // Keep the original filter structure\n operator: filterOperator ? filterOperator : operator, // Add operator name\n };\n\n // If the filter contains nested filters, recursively transform them\n if (filters && filters.length > 0) {\n transformedFilter.filters = this.transformFilters(filters); // Recursively transform nested filters\n }\n\n return transformedFilter;\n }\n\n getOperator(key: string) {\n return this.operators[key];\n }\n\n // Helper function to return the default operators\n private getDefaultOperators(): { [key: string]: AXDataSourceOperator } {\n return ALL_DEFAULT_OPERATORS.reduce((acc, operator) => {\n acc[operator.name] = {\n type: operator.name as any,\n };\n return acc;\n }, {} as { [key: string]: AXDataSourceOperator });\n }\n}\n","import { Injectable, Injector } from \"@angular/core\";\nimport { AXPErrorHandler } from \"./error-handler.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPErrorHandlerRegistryService {\n private errorHandlers: AXPErrorHandler[] = [];\n\n constructor(private injector: Injector) {\n }\n\n register(...plugins: (new () => AXPErrorHandler)[]) {\n plugins.forEach(t => {\n const childInjector = Injector.create({ providers: [{ provide: t, useClass: t, deps: [] }], parent: this.injector });\n const handler = childInjector.get(t);\n if (handler) {\n this.errorHandlers.push(handler);\n }\n })\n }\n\n\n public get handlers(): AXPErrorHandler[] {\n return this.errorHandlers;\n }\n}","import { ErrorHandler, Injectable, Injector } from \"@angular/core\";\nimport { AXPErrorHandlerRegistryService } from \"./error-handler-registry.service\";\n\n@Injectable({ providedIn: 'root' })\nexport class AXPGlobalErrorHandler extends ErrorHandler {\n\n\n\n constructor(private injector: Injector, private registry: AXPErrorHandlerRegistryService) {\n super()\n }\n\n override handleError(error: Error) {\n const handleErrorRecursively = (index: number, error: any) => {\n const errorHandlers = this.registry.handlers;\n if (index < errorHandlers.length) {\n errorHandlers[index].handleError(error, (err) => {\n handleErrorRecursively(index + 1, err);\n });\n } else {\n super.handleError(error); // Fallback to default handler\n }\n };\n if (error.message?.startsWith('NG0100')) {\n //ignore it\n return\n }\n handleErrorRecursively(0, error);\n }\n}\n","// src/app/directives/grid-layout.directive.ts\n\nimport { Directive, Input, ElementRef, Renderer2, OnChanges, SimpleChanges } from '@angular/core';\nimport { AXPGridLayoutOptions, AXPGridLayoutPositions } from './grid-layout.types';\n\n@Directive({\n selector: '[gridLayout]',\n standalone: true,\n})\nexport class AXPGridLayoutDirective implements OnChanges {\n @Input('gridLayout') options: AXPGridLayoutOptions;\n\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n this.applyTailwindClasses();\n }\n }\n\n private applyTailwindClasses(): void {\n // Clear existing grid classes\n this.clearClasses();\n\n // Apply new grid classes based on the input options\n this.setClasses(this.options.positions?.default, '');\n this.setClasses(this.options.positions?.md, 'md:');\n this.setClasses(this.options.positions?.lg, 'lg:');\n this.setClasses(this.options.positions?.xl, 'xl:');\n this.setClasses(this.options.positions?.xxl, '2xl:');\n }\n\n private setClasses(positions: AXPGridLayoutPositions | undefined, prefix: string): void {\n if (positions == null) return;\n\n const colStart = positions.colStart ? `${prefix}ax-col-start-${positions.colStart}` : '';\n const colEnd = positions.colEnd ? `${prefix}ax-col-end-${positions.colEnd}` : '';\n const colSpan = positions.colSpan ? `${prefix}ax-col-span-${positions.colSpan}` : '';\n const rowStart = positions.rowStart ? `${prefix}ax-row-start-${positions.rowStart}` : '';\n const rowEnd = positions.rowEnd ? `${prefix}ax-row-end-${positions.rowEnd}` : '';\n const rowSpan = positions.rowSpan ? `${prefix}ax-row-span-${positions.rowSpan}` : '';\n const order = positions.order ? `${prefix}ax-order-${positions.order}` : ''; // Handling order\n\n [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {\n if (cls) {\n this.renderer.addClass(this.el.nativeElement, cls);\n }\n });\n }\n\n private clearClasses(): void {\n const currentClasses = this.el.nativeElement.className.split(' ');\n currentClasses.forEach((className: string) => {\n if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n });\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[axpSticky]',\n exportAs: 'axpSticky',\n standalone: true,\n})\nexport class AXPStickyDirective {\n @Input('axpSticky') stickyClass!: string;\n @Input('stickyOffset') stickyOffset: number = 100;\n\n @Output() isStickyChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private _isSticky: boolean = false;\n public get isSticky(): boolean {\n return this._isSticky;\n }\n public set isSticky(value: boolean) {\n if (this._isSticky !== value) {\n this._isSticky = value;\n this.isStickyChange.emit(value);\n }\n }\n\n private topOffset!: number;\n private parentElement!: HTMLElement | Window;\n private targetElement!: HTMLElement;\n private mutationObserver!: MutationObserver;\n\n @Input() stickyParent!: string | HTMLElement;\n @Input() stickyTarget!: string;\n\n constructor(\n private element: ElementRef<HTMLDivElement>,\n private renderer: Renderer2,\n private zone: NgZone,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit() {\n this.initSticky();\n\n // Add mutation observer for dynamic content\n this.mutationObserver = new MutationObserver(() => {\n this.updateTopOffset();\n });\n\n this.mutationObserver.observe(this.element.nativeElement, {\n childList: true,\n subtree: true,\n });\n\n // Add resize event listener\n window.addEventListener('resize', this.updateTopOffset.bind(this));\n }\n\n private initSticky() {\n if (this.stickyParent instanceof HTMLElement) {\n this.parentElement = this.stickyParent;\n } else {\n this.parentElement =\n (document.querySelector(this.stickyParent) as HTMLElement) || window;\n }\n\n this.targetElement =\n (document.querySelector(this.stickyTarget) as HTMLElement) ||\n this.element.nativeElement;\n\n this.updateTopOffset();\n this.parentElement.addEventListener('scroll', this.onParentScroll);\n }\n\n private updateTopOffset(): void {\n this.zone.runOutsideAngular(() => {\n const rect = this.targetElement.getBoundingClientRect();\n this.topOffset = rect.top + (window.scrollY || 0);\n });\n }\n\n private onParentScroll = (): void => {\n this.zone.runOutsideAngular(() => {\n const scrollTop =\n this.parentElement === window\n ? window.scrollY\n : (this.parentElement as HTMLElement).scrollTop;\n\n const shouldStick = scrollTop + this.stickyOffset >= this.topOffset;\n\n if (shouldStick !== this.isSticky) {\n this.zone.run(() => {\n this.isSticky = shouldStick;\n this.toggleStickyClasses(shouldStick);\n this.cdr.markForCheck();\n });\n }\n });\n };\n\n private toggleStickyClasses(isSticky: boolean): void {\n const classes = this.stickyClass.split(' ').filter(Boolean);\n classes.forEach((className) => {\n if (isSticky) {\n this.renderer.addClass(this.targetElement, className);\n } else {\n this.renderer.removeClass(this.targetElement, className);\n }\n });\n }\n\n ngOnDestroy() {\n this.parentElement.removeEventListener('scroll', this.onParentScroll);\n window.removeEventListener('resize', this.updateTopOffset.bind(this));\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n}\n","import { Injectable, Injector } from \"@angular/core\";\nimport { AXPComponentSlotConfig } from \"./component-slot.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPComponentSlotRegistryService {\n\n private registry = new Map<string, AXPComponentSlotConfig[]>();\n\n register(slotName: string, config: AXPComponentSlotConfig) {\n let configs = this.registry.get(slotName) || [];\n\n // Check if the component is already registered in this slot\n const isDuplicate = configs.some(existingConfig => existingConfig.name === config.name);\n\n if (!isDuplicate) {\n configs = [...configs, config]; // Add the new configuration\n this.registry.set(slotName, configs);\n }\n }\n\n get(slotName: string): AXPComponentSlotConfig[] {\n return this.registry.get(slotName) || [];\n }\n}","import { Injectable, Injector, Type, ViewContainerRef, runInInjectionContext } from '@angular/core';\nimport { sortBy } from 'lodash-es';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPComponentSlotLoaderService {\n constructor(private registryService: AXPComponentSlotRegistryService, private injector: Injector) {}\n\n loadComponent(slotName: string, viewContainerRef: ViewContainerRef) {\n const configs = sortBy(this.registryService.get(slotName), (c) => c.priority ?? 0);\n if (configs) {\n viewContainerRef.clear();\n configs.forEach(async (config) => {\n let component!: Type<any> | null | undefined;\n let options: { [key: string]: unknown } = {};\n if (typeof config.loadComponent === 'function') {\n // If component is a function\n runInInjectionContext(this.injector, () => {\n component = config.loadComponent?.();\n });\n } else if (config.component) {\n // If component is a Type\n component = config.component;\n }\n //\n if (typeof config.options === 'function') {\n // If options is a function\n runInInjectionContext(this.injector, () => {\n const fun = config.options as Function;\n options = fun();\n });\n } else if (config.options) {\n // If options is a object\n options = config.options;\n }\n //\n if (component != null) {\n const componentRef = viewContainerRef.createComponent(component);\n Object.assign(componentRef.instance, options);\n }\n });\n }\n }\n}\n","import { Directive, Input, OnInit, ViewContainerRef } from '@angular/core';\nimport { AXPComponentSlotLoaderService } from './component-slot-loader.service';\n\n@Directive({\n selector: 'axp-component-slot',\n standalone: false\n})\nexport class AXPComponentSlotDirective implements OnInit {\n @Input()\n name!: string;\n\n constructor(private dynamicLoaderService: AXPComponentSlotLoaderService, public viewContainerRef: ViewContainerRef) { }\n\n ngOnInit() {\n this.dynamicLoaderService.loadComponent(this.name, this.viewContainerRef);\n }\n}","import { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { AXPComponentSlotModuleConfigs } from './component-slot.types';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\nimport { AXPComponentSlotDirective } from './component-slot.directive';\n\n@NgModule({\n declarations: [AXPComponentSlotDirective],\n exports: [AXPComponentSlotDirective]\n})\nexport class AXPComponentSlotModule {\n\n static forRoot(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n ]\n };\n }\n\n static forChild(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPComponentSlotModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n\n}\n","import { Type } from '@angular/core';\n\nexport interface AXPLogoConfig {}\nexport class AXPTextLogoConfig implements AXPLogoConfig {\n constructor(public text: string) {}\n}\nexport class AXPImageUrlLogoConfig implements AXPLogoConfig {\n constructor(public url: string) {}\n}\nexport class AXPFontIconLogoConfig implements AXPLogoConfig {\n constructor(public iconClass: Type<any>) {}\n}\n\nexport class AXPComponentLogoConfig implements AXPLogoConfig {\n constructor(public component: Type<any>) {}\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\n\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { AXPComponentLogoConfig, AXPFontIconLogoConfig, AXPImageUrlLogoConfig, AXPTextLogoConfig } from './logo.types';\n\n@Component({\n selector: 'axp-logo',\n templateUrl: `logo.component.html`,\n imports: [CommonModule, AXImageModule, AXDecoratorModule],\n host: { 'class': 'ax-flex ax-justify-center' }\n})\nexport class AXPLogoComponent {\n\n @Input()\n source!: any;\n\n protected logoType!: string;\n\n ngOnInit(): void {\n switch (true) {\n case this.source instanceof AXPTextLogoConfig:\n this.logoType = 'text';\n break;\n case this.source instanceof AXPImageUrlLogoConfig:\n this.logoType = 'url';\n break;\n case this.source instanceof AXPFontIconLogoConfig:\n this.logoType = 'iconClass';\n break;\n case this.source instanceof AXPComponentLogoConfig:\n this.logoType = 'component';\n break;\n default:\n break;\n }\n }\n}\n","@switch (logoType) {\n@case ('text') {\n<span class=\"ax-font-bold ax-select-none\">{{ source.text }}</span>\n}\n@case ('url') {\n<ax-image [src]=\"source.url\"></ax-image>\n} @case ('iconClass') {\n<ax-icon class=\"{{ source.classIcon }}\"></ax-icon>\n} @case ('component') {\n<ng-container *ngComponentOutlet=\"source.component\"></ng-container>\n}\n}","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPMenuFinderResult, AXPMenuInsertion, AXPMenuItem, AXPMenuProviderContext } from './menu.types';\n\nexport interface AXPMenuProvider {\n provide(context: AXPMenuProviderContext): Promise<void>;\n}\n\nexport const AXP_MENU_PROVIDER = new InjectionToken<AXPMenuProvider[]>('AXP_MENU_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPMenuProviderService {\n\n private providers = inject(AXP_MENU_PROVIDER, { optional: true });\n private cache: AXPMenuItem[] | null = null;\n private pendingInserts: Array<{ target: string; newItems: AXPMenuItem[]; position: AXPMenuInsertion }> = [];\n private pendingRemovals: string[] = [];\n private pendingUpdates: Array<{ target: string; updatedItem: Partial<AXPMenuItem> }> = [];\n private pendingAdditions: Array<{ target: string; newItems: AXPMenuItem[] }> = [];\n\n async items(): Promise<AXPMenuItem[]> {\n // Return cached items if available\n if (this.cache) {\n return this.cache;\n }\n\n const items: AXPMenuItem[] = [];\n const context = this.createMenuProviderContext(items);\n\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n await provider.provide(context);\n }\n }\n\n // Apply pending operations\n this.applyPendingOperations(items);\n\n // Cache the computed items\n this.cache = items;\n return items;\n }\n\n private createMenuProviderContext(items: AXPMenuItem[]): AXPMenuProviderContext {\n return {\n addItems: (newItems: AXPMenuItem[]) => {\n items.push(...newItems);\n },\n find: (target: string): AXPMenuFinderResult => {\n return {\n insert: (newItems: AXPMenuItem[], position: AXPMenuInsertion) => {\n this.pendingInserts.push({ target, newItems, position });\n },\n remove: () => {\n this.pendingRemovals.push(target);\n },\n update: (updatedItem: Partial<AXPMenuItem>) => {\n this.pendingUpdates.push({ target, updatedItem });\n },\n addItems: (newItems: AXPMenuItem[]) => {\n this.pendingAdditions.push({ target, newItems });\n }\n };\n }\n };\n }\n\n private applyPendingOperations(items: AXPMenuItem[]): void {\n for (const { target, newItems, position } of this.pendingInserts) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem, parentItems } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, appending items.`);\n items.push(...newItems);\n } else {\n if (position == 'inside') {\n foundItem.children?.push(...newItems)\n }\n else {\n const index = parentItems.indexOf(foundItem);\n const insertPosition = position === 'before' ? index : index + 1;\n parentItems.splice(insertPosition, 0, ...newItems);\n }\n }\n }\n\n for (const target of this.pendingRemovals) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem, parentItems } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, nothing to remove.`);\n } else {\n const index = parentItems.indexOf(foundItem);\n parentItems.splice(index, 1);\n }\n }\n\n for (const { target, updatedItem } of this.pendingUpdates) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, nothing to update.`);\n } else {\n Object.assign(foundItem, updatedItem);\n }\n }\n\n for (const { target, newItems } of this.pendingAdditions) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, nothing to add items to.`);\n } else {\n if (!foundItem.children) {\n foundItem.children = [];\n }\n foundItem.children.push(...newItems);\n }\n }\n\n // Clear pending operations after applying them\n this.pendingInserts = [];\n this.pendingRemovals = [];\n this.pendingUpdates = [];\n this.pendingAdditions = [];\n }\n\n private findItemWithParent(items: AXPMenuItem[], target: string, parentItems: AXPMenuItem[] = items): { foundItem: AXPMenuItem | null, parentItems: AXPMenuItem[] } {\n for (const item of items) {\n if (item.name === target) {\n return { foundItem: item, parentItems };\n }\n\n if (item.children) {\n const result = this.findItemWithParent(item.children, target, item.children);\n if (result.foundItem) {\n return result;\n }\n }\n }\n return { foundItem: null, parentItems: items };\n }\n\n // Method to clear the cache, if needed (e.g., when providers change)\n clearCache(): void {\n this.cache = null;\n this.pendingInserts = [];\n this.pendingRemovals = [];\n this.pendingUpdates = [];\n this.pendingAdditions = [];\n }\n}\n","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { patchState, signalStore, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { AXPMenuItem } from './menu.types';\nimport { AXPMenuProviderService } from './menu.provider';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPNavigateActionCommand } from '@acorex/platform/core';\n\nexport const AXPMenuService = signalStore(\n { providedIn: 'root' },\n\n // Initial State\n withState((router = inject(Router)) => {\n return {\n items: [] as AXPMenuItem[],\n selectedMenuItem: {\n item: null as AXPMenuItem | null,\n isFullMatch: false\n },\n };\n }),\n\n // Methods for State Management\n withMethods((store, router = inject(Router), workflow = inject(AXPWorkflowService)) => {\n\n\n return {\n\n setMenuItems(items: AXPMenuItem[]): void {\n patchState(store, { items: items });\n },\n\n selectMenuItemByRoute(path: string): void {\n const findItem = (items: AXPMenuItem[]): { item: AXPMenuItem | null, isPartialMatch: boolean } => {\n for (const item of items) {\n // Recursively search children first\n if (item.children) {\n const foundChild = findItem(item.children);\n if (foundChild.item) {\n return foundChild;\n }\n }\n if (item.path) {\n // Check if the item path matches the current path\n const matchResult = pathsMatch(item.path, path, [\"list\", \"view\", \"edit\", \"create\"]);\n if (matchResult.isMatch) {\n return { item, isPartialMatch: matchResult.isPartial };\n }\n }\n }\n return { item: null, isPartialMatch: false };\n };\n\n const pathsMatch = (\n itemPath: string,\n currentPath: string,\n trailingSegmentsToIgnore: string[] = []\n ): { isMatch: boolean, isPartial: boolean } => {\n const itemSegments = itemPath.split('/').filter(segment => segment.length > 0);\n const pathSegments = currentPath.split('/').filter(segment => segment.length > 0);\n\n const menuLength = itemSegments.length;\n const pathLength = pathSegments.length;\n\n // Identify the effective base length for the menuPath\n let effectiveMenuLength = menuLength;\n if (\n menuLength > 0 &&\n trailingSegmentsToIgnore.includes(itemSegments[menuLength - 1])\n ) {\n effectiveMenuLength--; // Exclude trailing non-hierarchical segments\n }\n\n // Check if the menuPath (base segments) is a prefix of browserPath\n let isPrefix = true;\n for (let i = 0; i < effectiveMenuLength; i++) {\n if (itemSegments[i] !== pathSegments[i]) {\n isPrefix = false;\n break;\n }\n }\n\n // Partial match: menuPath base is a strict prefix of browserPath\n const isPartialMatch = isPrefix && effectiveMenuLength < pathLength;\n\n // Exact match: all segments match completely\n const isExactMatch = isPrefix && effectiveMenuLength === pathLength;\n\n return {\n isMatch: isExactMatch || isPartialMatch,\n isPartial: isPartialMatch && !isExactMatch,\n };\n };\n\n\n const items = store.items();\n const { item, isPartialMatch } = findItem(items);\n patchState(store, { selectedMenuItem: { item, isFullMatch: !isPartialMatch } });\n },\n\n executeCommand(item: AXPMenuItem): void {\n if (item.path) {\n workflow.execute('navigate', { type: 'router', options: { path: item.path } } as AXPNavigateActionCommand<'router'>);\n }\n if (item.command) {\n workflow.execute('navigate', item.command);\n }\n patchState(store, { selectedMenuItem: { item, isFullMatch: true } });\n },\n\n isItemOpen(item: AXPMenuItem): boolean {\n const selectedItem = store.selectedMenuItem();\n if (!selectedItem) {\n return false;\n }\n\n const findParent = (currentItem: AXPMenuItem, targetItem: AXPMenuItem): boolean => {\n if (currentItem.children?.includes(targetItem)) {\n return true;\n }\n return currentItem.children?.some(child => findParent(child, targetItem)) ?? false;\n };\n\n return item === selectedItem?.item || findParent(item, selectedItem.item!);\n }\n };\n }),\n withHooks((store, menuProviderService = inject(AXPMenuProviderService)) => ({\n onInit() {\n (async () => {\n const items = await menuProviderService.items();\n patchState(store, { items: items });\n })();\n },\n onDestroy() {\n\n },\n }))\n);","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '../../search';\n\nexport class AXPMenuSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('menu', 'Menu', 'menu', 'fa-thin fa-bars', 2, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { inject } from '@angular/core';\nimport { omit, sortBy } from 'lodash-es';\nimport { AXPSearchProvider, AXPSearchResult } from '../../search';\nimport { AXPMenuProviderService } from './menu.provider';\nimport { AXPMenuItem } from './menu.types';\n\nexport interface AXPMenuItemWithParent extends AXPMenuItem {\n parent?: AXPMenuItem;\n}\n\nexport class AXPMenuSearchProvider implements AXPSearchProvider {\n menuService = inject(AXPMenuProviderService);\n translateService = inject(AXTranslationService);\n\n async search(text: string): Promise<AXPSearchResult[]> {\n const menuItems = await this.searchMenuItems(await this.menuService.items(), text);\n return sortBy<AXPSearchResult>(\n menuItems.map<AXPSearchResult>((item) => ({\n group: 'menu', // Use `name` or empty string if undefined\n title: item.text, // Use `text` for the `title`\n icon: item.icon, // Include the `icon` if present\n data: omit(item, ['parent', 'children']), // Include all data except `parent` and `children`\n commands: {\n navigate: {\n ...(item.command ?? {\n type: 'router',\n options: {\n path: item.path,\n },\n }),\n },\n },\n parent: item.parent\n ? {\n title: item.parent.text,\n }\n : undefined,\n })),\n [(o) => this.translateService.translateSync(o.title!)]\n );\n }\n\n /**\n * Recursively searches AXPMenuItem and its children for a matching text.\n *\n * @param menuItems - The array of AXPMenuItem to search in.\n * @param searchText - The text to search for (case-insensitive).\n * @returns An array of AXPMenuItem that match the search text.\n */\n private async searchMenuItems(menuItems: AXPMenuItem[], searchText: string): Promise<AXPMenuItemWithParent[]> {\n const result: AXPMenuItemWithParent[] = [];\n\n for (const item of menuItems) {\n // Check if the current item's text matches the search text\n if (\n item.type != 'group' &&\n (item.children?.length ?? 0) == 0 &&\n (await this.translateService.translateAsync(item.text)).toLowerCase().includes(searchText.toLowerCase())\n ) {\n result.push(item as AXPMenuItemWithParent);\n }\n\n // Recursively search in children if they exist\n if (item.children && item.children.length > 0) {\n const childResults = await this.searchMenuItems(item.children, searchText);\n result.push(...childResults.map((x) => ({ ...x, parent: item } as AXPMenuItemWithParent)));\n }\n }\n\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n template: `\n <small class=\"ax-text-sm\" [innerHTML]=\"text\"></small>\n `,\n standalone: true\n})\nexport class AXPFooterTextSlotComponent {\n @Input()\n public text!: string;\n}","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\nimport { AXPMenuItem } from '../../../menu';\n\n@Component({\n template: `\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-5\">\n <a *ngFor=\"let link of items\" (click)=\"handleCommand(link.command)\" >{{ link.text }}</a>\n </div>\n `,\n imports: [CommonModule],\n encapsulation: ViewEncapsulation.None\n})\nexport class AXPNavBarSlotComponent {\n @Input()\n public items!: AXPMenuItem[];\n\n private store = inject(Store)\n\n protected handleCommand(action?: Action) {\n if (action)\n this.store.dispatch(action)\n }\n}","import { AXPSearchAction, AXPSearchDefinition, AXPSearchDefinitionDisplayFormat } from './search.types';\n\nexport class AXPSearchDefinitionProviderContext {\n private definitions: AXPSearchDefinition[] = [];\n private definitionMap: Map<string, AXPSearchDefinition> = new Map();\n\n addDefinition(\n name: string,\n title: string,\n group: string,\n icon: string,\n order: number,\n options?: {\n format?: AXPSearchDefinitionDisplayFormat;\n actions?: AXPSearchAction[];\n }\n ): AXPSearchDefinitionBuilder {\n const definitionSearch: AXPSearchDefinition = {\n name,\n title,\n group,\n icon,\n order,\n format: {\n title: options?.format?.title ?? '{{ title }}',\n description: options?.format?.description ?? undefined,\n icon: options?.format?.icon ?? undefined,\n id: options?.format?.id ?? '{{ id }}',\n },\n actions: options?.actions ?? [],\n };\n\n this.definitions.push(definitionSearch);\n this.definitionMap.set(name, definitionSearch); // Index by name\n return new AXPSearchDefinitionBuilder(this, definitionSearch);\n }\n\n definition(name: string): AXPSearchDefinitionBuilder | null {\n const foundDefinition = this.definitionMap.get(name);\n if (!foundDefinition) {\n throw new Error(`definition with name \"${name}\" not found.`);\n }\n return new AXPSearchDefinitionBuilder(this, foundDefinition);\n }\n\n getDefinitions(): AXPSearchDefinition[] {\n return this.definitions;\n }\n\n // Expose groupMap for controlled access\n hasEntity(name: string): boolean {\n return this.definitionMap.has(name);\n }\n\n getDefinition(name: string): AXPSearchDefinition | undefined {\n return this.definitionMap.get(name);\n }\n}\n\nexport class AXPSearchDefinitionBuilder {\n private context: AXPSearchDefinitionProviderContext;\n private definition: AXPSearchDefinition;\n\n constructor(context: AXPSearchDefinitionProviderContext, definition: AXPSearchDefinition) {\n this.context = context;\n this.definition = definition;\n }\n\n addAction(name: string): AXPSearchDefinitionActionBuilder {\n const newAction: AXPSearchAction = {\n name,\n type: 'view',\n priority: 'primary',\n };\n this.definition.actions.push(newAction);\n return new AXPSearchDefinitionActionBuilder(this);\n }\n\n action(name: string): AXPSearchDefinitionActionBuilder | null {\n const foundAction = this.definition.actions.find((action) => action.name === name);\n if (!foundAction) {\n throw new Error(`action with name \"${name}\" not found in entity \"${this.definition.name}\".`);\n }\n return new AXPSearchDefinitionActionBuilder(this);\n }\n\n endEntity(): AXPSearchDefinitionProviderContext {\n return this.context;\n }\n}\n\nexport class AXPSearchDefinitionActionBuilder {\n private entityBuilder: AXPSearchDefinitionBuilder;\n\n constructor(entityBuilder: AXPSearchDefinitionBuilder) {\n this.entityBuilder = entityBuilder;\n }\n\n endAction(): AXPSearchDefinitionBuilder {\n return this.entityBuilder;\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { AXPSearchDefinitionProviderContext } from './search-definition.builder';\nimport { AXPSearchDefinition } from './search.types';\n\n// Interface for setting providers\nexport interface AXPSearchDefinitionProvider {\n provide(context: AXPSearchDefinitionProviderContext): Promise<void>;\n}\n\n// Injection token for setting providers\nexport const AXP_SEARCH_DEFINITION_PROVIDER = new InjectionToken<AXPSearchDefinitionProvider[]>(\n 'AXP_SEARCH_DEFINITION_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPSearchDefinitionProviderService {\n private providers = inject(AXP_SEARCH_DEFINITION_PROVIDER, { optional: true });\n private cache: AXPSearchDefinition[] | null = null;\n\n private async load(): Promise<void> {\n if (this.cache) {\n return;\n }\n const context = new AXPSearchDefinitionProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n await provider.provide(context);\n }\n }\n this.cache = context.getDefinitions();\n }\n\n public async getListAsync(): Promise<AXPSearchDefinition[]> {\n await this.load();\n return this.getList();\n }\n\n public getList(): AXPSearchDefinition[] {\n if (!this.cache) {\n return [];\n } else {\n return this.cache;\n }\n }\n\n public findDefinition(definitionName: string): AXPSearchDefinition {\n const definition = this.getList().find((definition) => definition.name === definitionName);\n if (!definition) {\n throw new Error(`Definition with name ${definitionName} not found`);\n }\n return definition;\n }\n\n public findDefinitionByGroup(definitionGroup: string): AXPSearchDefinition {\n const definition = this.getList().find((definition) => definition.group === definitionGroup);\n if (!definition) {\n throw new Error(`Definition with group ${definitionGroup} not found`);\n }\n return definition;\n }\n}\n","import { AXPSearchResult } from './search.types';\n\n// Interface for setting providers\nexport interface AXPSearchProvider {\n search(text: string): Promise<AXPSearchResult[]>;\n}\n\nexport abstract class AXPSearchCommandProvider {\n abstract commands: AXPSearchResult[];\n\n async search(text: string): Promise<AXPSearchResult[]> {\n return this.commands.filter((command) => command.title!.toLowerCase().includes(text.toLowerCase()));\n }\n}\n","import { AXFormatService } from '@acorex/core/format';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { omit } from 'lodash-es';\nimport { AXPSearchDefinitionProviderService } from './search-definition.provider';\nimport { AXPSearchProvider } from './search.provider';\nimport { AXPSearchDisplayGroupResult, AXPSearchDisplayResult } from './search.types';\n\n// Injection token for setting providers\nexport const AXP_SEARCH_PROVIDER = new InjectionToken<AXPSearchProvider[]>('AXP_SEARCH_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPSearchService {\n private providers = inject(AXP_SEARCH_PROVIDER, { optional: true });\n private definitionService = inject(AXPSearchDefinitionProviderService);\n private formatService = inject(AXFormatService);\n\n async search(text: string): Promise<AXPSearchDisplayGroupResult[]> {\n //TODO better handle this\n if (this.definitionService.getList().length == 0) {\n await this.definitionService.getListAsync();\n }\n\n if (!this.providers || (this.providers?.length || 0) === 0) {\n throw new Error('No search providers available'); // No providers available\n }\n\n const mergeData: AXPSearchDisplayResult[] = [];\n const promises = this.providers.map((provider) => provider.search(text));\n const results = await Promise.all(promises);\n for (const resultArray of results) {\n for (const result of resultArray) {\n try {\n const definition = this.definitionService.findDefinition(result.group);\n\n mergeData.push({\n definitionName: definition.group,\n definitionTitle: definition.title,\n name: result.group,\n id: `${definition.name}:${this.formatService.format(definition.format.id, 'string', result)}`,\n title:\n result.title ??\n (definition.format.title\n ? this.formatService.format(definition.format.title, 'string', result.data)\n : 'Unknown'),\n description:\n result.description ??\n (definition.format.description\n ? this.formatService.format(definition.format.description, 'string', result.data)\n : undefined),\n icon:\n result.icon ??\n (result.icon\n ? this.formatService.format(definition.format.icon, 'string', result.data)\n : definition.icon),\n data: result.data,\n commands: result.commands,\n actions: definition.actions,\n parent: result.parent,\n order: definition.order,\n });\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n // Group data\n const groupedData: AXPSearchDisplayGroupResult[] = [];\n const groupMap: { [key: string]: AXPSearchDisplayGroupResult } = {};\n\n // Create groups\n for (const item of mergeData) {\n const groupName = item.definitionName!; // Change this to the property you want to group by\n if (!groupMap[groupName]) {\n groupMap[groupName] = {\n name: groupName,\n title: item.definitionTitle!, // You can adjust the title logic if needed\n order: item.order, // Add order to the group\n children: [],\n };\n groupedData.push(groupMap[groupName]);\n }\n groupMap[groupName].children.push(omit(item, ['definitionName', 'definitionTitle', 'order']));\n }\n\n // Sort groups by order\n groupedData.sort((a, b) => a.order - b.order);\n\n return groupedData;\n }\n}\n","import { AXPWidgetNode } from '@acorex/platform/layout/builder';\n\n\nexport interface AXPSettingValueProvider {\n get scope(): AXPSettingScope;\n load(): Promise<AXPSettingValue[]>\n set(key: string, value: any): Promise<void>;\n set(values: Record<string, any>): Promise<void>; // Overload for bulk updates\n}\n\n\n// Interface for a single setting's value\nexport interface AXPSettingValue {\n key: string;\n value: any;\n}\n\nexport interface AXPSettingChangedEvent {\n scope: AXPSettingScope,\n keys: string[];\n values: Record<string, any>;\n entries: AXPSettingValue[];\n}\n\nexport type AXPSettingScopeKey = 'C' | 'G' | 'T' | 'U';\nexport enum AXPSettingScope {\n Environment = 'C',\n Global = 'G',\n Tenant = 'T',\n User = 'U'\n};\n\n// Interface for a single setting definition\nexport interface AXPSettingDefinition {\n name: string;\n title: string;\n description?: string;\n widget: AXPWidgetNode;\n scope: AXPSettingScopeKey;\n isRequired?: boolean;\n isInherited?: boolean;\n isEncrypted?: boolean;\n defaultValue?: unknown\n value?: unknown\n}\n\n// Interface for a group of settings, which can contain nested groups and singles\nexport interface AXPSettingDefinitionGroup {\n name: string;\n title: string;\n icon?: string;\n description?: string;\n groups: AXPSettingDefinitionGroup[];\n sections: AXPSettingDefinitionSection[];\n}\n\nexport interface AXPSettingDefinitionSection {\n name: string;\n title: string;\n description?: string;\n settings: AXPSettingDefinition[];\n}\n\n\nexport interface AXPGroupSearchResult {\n breadcrumb: { name: string; title: string, description?: string }[];\n sections: AXPSettingDefinitionSection[] | null;\n groups: AXPSettingDefinitionGroup[] | null;\n}\n\n","import { AXPOptionsData, AXPValidationRules } from '@acorex/platform/core';\nimport { AXPWidgetTriggers, AXPWidgetTypesMap, AXPWidgetValueTransformFunctions } from '@acorex/platform/layout/builder';\nimport { merge } from 'lodash-es';\nimport { AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionSection, AXPSettingScopeKey } from './index';\n\nexport class AXPSettingDefinitionProviderContext {\n private rootGroups: AXPSettingDefinitionGroup[] = [];\n private groupMap: Map<string, AXPSettingDefinitionGroup> = new Map();\n\n addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder {\n const newGroup: AXPSettingDefinitionGroup = {\n name,\n title,\n description,\n icon,\n groups: [],\n sections: [],\n };\n\n this.rootGroups.push(newGroup);\n this.groupMap.set(name, newGroup); // Index by name\n return new AXPSettingDefinitionGroupBuilder(this, newGroup);\n }\n\n group(name: string): AXPSettingDefinitionGroupBuilder | null {\n const foundGroup = this.groupMap.get(name);\n if (!foundGroup) {\n throw new Error(`Group with name \"${name}\" not found.`);\n }\n return new AXPSettingDefinitionGroupBuilder(this, foundGroup);\n }\n\n getGroups(): AXPSettingDefinitionGroup[] {\n return this.rootGroups;\n }\n\n // Expose groupMap for controlled access\n hasGroup(name: string): boolean {\n return this.groupMap.has(name);\n }\n\n getGroup(name: string): AXPSettingDefinitionGroup | undefined {\n return this.groupMap.get(name);\n }\n}\n\nexport class AXPSettingDefinitionGroupBuilder {\n private context: AXPSettingDefinitionProviderContext;\n private group: AXPSettingDefinitionGroup;\n\n constructor(context: AXPSettingDefinitionProviderContext, group: AXPSettingDefinitionGroup) {\n this.context = context;\n this.group = group;\n }\n\n addSection(name: string, title: string, description?: string): AXPSettingDefinitionSectionBuilder {\n const newSection: AXPSettingDefinitionSection = {\n name,\n title,\n description: description,\n settings: [],\n };\n this.group.sections.push(newSection);\n return new AXPSettingDefinitionSectionBuilder(this, newSection);\n }\n\n section(name: string): AXPSettingDefinitionSectionBuilder | null {\n const foundSection = this.group.sections.find((section) => section.name === name);\n if (!foundSection) {\n throw new Error(`Section with name \"${name}\" not found in group \"${this.group.name}\".`);\n }\n return new AXPSettingDefinitionSectionBuilder(this, foundSection);\n }\n\n addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder {\n const newGroup: AXPSettingDefinitionGroup = {\n name,\n title,\n description: description,\n icon,\n groups: [],\n sections: [],\n };\n this.group.groups.push(newGroup);\n if (this.context.hasGroup(name)) {\n throw new Error(`Group with name \"${name}\" already exists.`);\n }\n this.context['groupMap'].set(name, newGroup);\n return new AXPSettingDefinitionGroupBuilder(this.context, newGroup);\n }\n\n endGroup(): AXPSettingDefinitionProviderContext {\n return this.context;\n }\n}\n\nexport class AXPSettingDefinitionSectionBuilder {\n private groupBuilder: AXPSettingDefinitionGroupBuilder;\n private section: AXPSettingDefinitionSection;\n\n constructor(groupBuilder: AXPSettingDefinitionGroupBuilder, section: AXPSettingDefinitionSection) {\n this.groupBuilder = groupBuilder;\n this.section = section;\n }\n\n addSetting(setting: {\n key: string;\n title: string;\n scope: AXPSettingScopeKey;\n widget: {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n options?: AXPOptionsData;\n triggers?: AXPWidgetTriggers;\n };\n description?: string;\n isRequired?: boolean;\n isInherited?: boolean;\n isEncrypted?: boolean;\n defaultValue?: unknown;\n valueTransforms?: AXPWidgetValueTransformFunctions;\n validationRules?: AXPValidationRules;\n }): this {\n const newSetting: AXPSettingDefinition = {\n name: setting.key,\n title: setting.title,\n description: setting.description,\n isRequired: setting.isRequired ?? false,\n isInherited: setting.isInherited ?? false,\n isEncrypted: setting.isEncrypted ?? false,\n defaultValue: setting.defaultValue,\n scope: setting.scope ?? 'G',\n widget: {\n type: setting.widget.type,\n name: setting.key,\n path: setting.key,\n defaultValue: setting.defaultValue,\n options: merge(setting.widget.options ?? {},\n {\n label: setting.widget.options?.['label'] ?? setting.title,\n validationRules: setting.validationRules ?? [],\n }),\n valueTransforms: setting.valueTransforms,\n triggers: setting.widget.triggers,\n },\n } as AXPSettingDefinition;\n this.section.settings.push(newSetting);\n return this;\n }\n\n endSection(): AXPSettingDefinitionGroupBuilder {\n return this.groupBuilder;\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport {\n AXPGroupSearchResult,\n AXPSettingDefinitionGroup,\n AXPSettingScope,\n AXPSettingScopeKey,\n AXPSettingValue,\n AXPSettingValueProvider,\n} from './settings.types';\nimport { AXPSettingDefinitionProviderContext } from './setting.builder';\n\n// Interface for setting providers\nexport interface AXPSettingDefinitionProvider {\n provide(context: AXPSettingDefinitionProviderContext): Promise<void>;\n}\n\n// Injection token for setting providers\nexport const AXP_SETTING_DEFINITION_PROVIDER = new InjectionToken<AXPSettingDefinitionProvider[]>('AXP_SETTING_DEFINITION_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPSettingDefinitionProviderService {\n private providers = inject(AXP_SETTING_DEFINITION_PROVIDER, { optional: true });\n private cache: AXPSettingDefinitionGroup[] | null = null;\n\n private async load(): Promise<void> {\n if (this.cache) {\n return\n }\n const context = new AXPSettingDefinitionProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n if (provider instanceof Promise) {\n // If provider is a promise, resolve it\n const resolvedProvider = await provider;\n await resolvedProvider.provide(context);\n } else {\n // If provider is a direct instance, use it directly\n await provider.provide(context);\n }\n }\n }\n this.cache = context.getGroups();\n }\n\n public async getListAsync(scope: AXPSettingScopeKey): Promise<AXPSettingDefinitionGroup[]> {\n await this.load();\n return this.getList(scope);\n }\n\n public getList(scope: AXPSettingScopeKey): AXPSettingDefinitionGroup[] {\n if (!this.cache) {\n return [];\n }\n\n const scopeOrder = ['C', 'G', 'T', 'U']; // Scopes hierarchy in ascending order\n\n const filterByScope = (\n groups: AXPSettingDefinitionGroup[],\n currentScope: AXPSettingScopeKey\n ): AXPSettingDefinitionGroup[] => {\n const currentScopeIndex = scopeOrder.indexOf(currentScope);\n\n return groups\n .map((group) => ({\n ...group,\n sections: group.sections.map((section) => ({\n ...section,\n settings: section.settings.filter((setting) => {\n const settingScopeIndex = scopeOrder.indexOf(setting.scope);\n\n // Include settings where:\n // 1. The scope matches the requested scope.\n if (setting.scope === currentScope) return true;\n\n // 2. The setting scope is higher (closer to 'U') and is inherited.\n if (\n setting.isInherited &&\n settingScopeIndex > currentScopeIndex // Higher scope\n ) {\n return true;\n }\n\n // 3. Exclude settings with a lower or irrelevant scope.\n return false;\n }),\n })).filter((section) => section.settings.length > 0), // Keep only sections with settings\n groups: filterByScope(group.groups, currentScope), // Recursively filter nested groups\n }))\n .filter((group) => group.sections.length > 0 || group.groups.length > 0); // Keep groups with valid sections or nested groups\n };\n\n return filterByScope(this.cache, scope);\n }\n\n\n\n\n async defaultValues(): Promise<Record<string, unknown>> {\n const defaults: Record<string, unknown> = {};\n\n const collectDefaults = (groups: AXPSettingDefinitionGroup[]) => {\n groups.forEach((group) => {\n group.sections.forEach((section) => {\n section.settings.forEach((setting) => {\n if (setting.defaultValue !== undefined) {\n defaults[setting.name] = setting.defaultValue;\n }\n });\n });\n collectDefaults(group.groups);\n });\n };\n\n if (!this.cache) {\n await this.load();\n }\n collectDefaults(this.cache!);\n\n return defaults;\n }\n\n public findGroup(scope: AXPSettingScopeKey, groupName: string): AXPGroupSearchResult {\n return this.searchRecursive(this.getList(scope), groupName, []); // Initialize with an empty breadcrumb\n }\n\n private searchRecursive(\n groups: AXPSettingDefinitionGroup[],\n groupName: string,\n breadcrumb: { name: string; title: string }[]\n ): AXPGroupSearchResult {\n for (const group of groups) {\n const currentBreadcrumb = [...breadcrumb, { name: group.name, title: group.title, description: group.description }];\n\n // If the group name matches, return its details\n if (group.name === groupName) {\n return {\n breadcrumb: currentBreadcrumb,\n sections: group.sections.length > 0 ? group.sections : null,\n groups: group.groups.length > 0 ? group.groups : null,\n };\n }\n\n // Recursively search in nested groups\n const nestedResult = this.searchRecursive(group.groups, groupName, currentBreadcrumb);\n if (nestedResult.breadcrumb.length > 0) {\n return nestedResult;\n }\n }\n\n // If no matching group is found\n return {\n breadcrumb: [],\n groups: [],\n sections: []\n };\n }\n}\n\n\n\nexport class AXPSettingDefaultValueProvider implements AXPSettingValueProvider {\n\n private definitionProvider = inject(AXPSettingDefinitionProviderService);\n\n get scope(): AXPSettingScope {\n return AXPSettingScope.Global;\n }\n\n async load(): Promise<AXPSettingValue[]> {\n return Object.entries(await this.definitionProvider.defaultValues()).map(c => ({ key: c[0], value: c[1] }));\n }\n\n set(key: string, value: any): Promise<void>;\n set(values: Record<string, any>): Promise<void>;\n set(key: unknown, value?: unknown): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}","import { AXPSettingScope, AXPSettingValue, AXPSettingValueProvider } from \"./settings.types\";\nimport { InjectionToken } from \"@angular/core\";\n\n\n\nexport const AXP_SETTING_VALUE_PROVIDER = new InjectionToken<AXPSettingValueProvider[]>('AXP_SETTING_VALUE_PROVIDER', {\n providedIn: 'root',\n factory: () => {\n return [\n //new AXPSettingDefaultValueProvider(),\n new AXPSettingValueProviderDefault(AXPSettingScope.Tenant),\n new AXPSettingValueProviderDefault(AXPSettingScope.User)\n ];\n }\n});\n\n\nclass AXPSettingValueProviderDefault implements AXPSettingValueProvider {\n private readonly cache: Map<string, any> = new Map();\n private localStorageKey: string = `AXP_SETTINGS_SCOPE(${this.scope})`;\n\n public get scope(): AXPSettingScope {\n return this._scope;\n }\n\n\n\n constructor(private _scope: AXPSettingScope) {\n }\n\n async load(): Promise<AXPSettingValue[]> {\n // Load settings from localStorage as a single key\n const storedSettings = localStorage.getItem(this.localStorageKey);\n if (storedSettings) {\n const parsedSettings: Record<string, any> = JSON.parse(storedSettings);\n Object.entries(parsedSettings).forEach(([key, value]) => {\n this.cache.set(key, value);\n });\n return Promise.resolve(Array.from(this.cache.entries()).map(c => ({ key: c[0], value: c[1] })));\n }\n return Promise.resolve([]);\n }\n\n async set(key: string, value: any): Promise<void>;\n async set(values: Record<string, any>): Promise<void>;\n\n async set(keyOrValues: string | Record<string, any>, value?: any): Promise<void> {\n if (typeof keyOrValues === 'string') {\n // Single value update\n this.cache.set(keyOrValues, value);\n } else {\n // Bulk update\n for (const [key, val] of Object.entries(keyOrValues)) {\n this.cache.set(key, val);\n }\n }\n await this.saveToLocalStorage();\n }\n\n private async saveToLocalStorage(): Promise<void> {\n const settingsObject: Record<string, any> = {};\n this.cache.forEach((value, key) => {\n settingsObject[key] = value;\n });\n localStorage.setItem(this.localStorageKey, JSON.stringify(settingsObject));\n }\n}","import { inject, Injectable, Injector } from '@angular/core';\nimport { cloneDeep, get } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXP_SETTING_VALUE_PROVIDER } from './settings.provider';\nimport { AXPSettingChangedEvent, AXPSettingScope, AXPSettingValue, AXPSettingValueProvider } from './settings.types';\nimport { AXPSettingDefinitionProviderService } from './setting-definition.provider';\n\nexport interface AXPSettingServiceInterface {\n load(): Promise<AXPSettingValue[]>;\n get<T = any>(key: string): Promise<T>;\n defaultValues(scope: AXPSettingScope): Promise<Record<string, unknown>>;\n scope(scope: AXPSettingScope): ScopedSettingService;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPSettingService implements AXPSettingServiceInterface {\n private readonly providers: AXPSettingValueProvider[] = inject<AXPSettingValueProvider[]>(AXP_SETTING_VALUE_PROVIDER);\n //private readonly definitionService = inject(AXPSettingDefinitionProviderService);\n private readonly injector = inject(Injector);\n\n private scopedSettingsCache: Map<string, Map<string, any>> = new Map();\n public readonly onChanged = new Subject<AXPSettingChangedEvent>();\n\n constructor() {\n // Initialize scoped caches for dynamic scopes\n const staticScopes = [AXPSettingScope.Environment, AXPSettingScope.Global, AXPSettingScope.Tenant, AXPSettingScope.User];\n staticScopes.forEach((scope) => {\n if (!this.scopedSettingsCache.has(scope)) {\n this.scopedSettingsCache.set(scope, new Map());\n }\n });\n }\n\n async load(): Promise<AXPSettingValue[]> {\n try {\n const settingsList: AXPSettingValue[] = [];\n for (const provider of this.providers) {\n const scopeCache = this.scopedSettingsCache.get(provider.scope)!;\n const providerSettings = await provider.load();\n providerSettings.forEach((setting) => {\n scopeCache.set(setting.key, setting.value);\n });\n settingsList.push(...providerSettings);\n }\n return settingsList;\n } catch (error) {\n console.error('Error loading settings', error);\n throw error;\n }\n }\n\n async get<T = any>(key: string): Promise<T> {\n if (this.scopedSettingsCache.size === 0) {\n await this.load();\n }\n const scopeOrder = [AXPSettingScope.User, AXPSettingScope.Tenant, AXPSettingScope.Global, AXPSettingScope.Environment];\n for (const scope of scopeOrder) {\n const scopeCache = this.scopedSettingsCache.get(scope);\n if (scopeCache && scopeCache.has(key)) {\n const value = scopeCache.get(key);\n if (value !== undefined && value !== null) {\n return cloneDeep(value) as T;\n }\n }\n }\n const definitionService = this.injector.get(AXPSettingDefinitionProviderService);\n const defaults = await definitionService.defaultValues();\n return get(defaults, key) as T; // Fallback if no value is found\n }\n\n async defaultValues(scope: AXPSettingScope): Promise<Record<string, unknown>> {\n let scopeOrder = [AXPSettingScope.Environment, AXPSettingScope.Global, AXPSettingScope.Tenant, AXPSettingScope.User].reverse();\n const scopeIndex = scopeOrder.indexOf(scope);\n\n if (scopeIndex === -1) {\n throw new Error(`Invalid scope: ${scope}`);\n }\n scopeOrder = scopeOrder.slice(scopeIndex + 1);\n // Accumulate defaults from the current scope and higher scopes\n const accumulatedDefaults: Record<string, unknown> = {};\n for (let i = scopeIndex; i < scopeOrder.length; i++) {\n const currentScope = scopeOrder[i];\n const scopeCache = this.scopedSettingsCache.get(currentScope);\n\n if (scopeCache) {\n scopeCache.forEach((value, key) => {\n if (!(key in accumulatedDefaults)) {\n accumulatedDefaults[key] = value;\n }\n });\n }\n }\n\n // Merge with global default values from the definition service\n const definitionService = this.injector.get(AXPSettingDefinitionProviderService);\n const globalDefaults = await definitionService.defaultValues();\n return { ...globalDefaults, ...accumulatedDefaults };\n }\n\n scope(scope: AXPSettingScope): ScopedSettingService {\n const provider = this.providers.find((p) => p.scope === scope);\n if (!provider) {\n throw new Error(`No provider found for scope: ${scope}`);\n }\n return new ScopedSettingService(this, provider, this.onChanged, this.scopedSettingsCache.get(scope)!);\n }\n}\n\nclass ScopedSettingService {\n\n constructor(\n private parent: AXPSettingService,\n private provider: AXPSettingValueProvider,\n private onChanged: Subject<AXPSettingChangedEvent>,\n private scopeCache: Map<string, any>\n ) { }\n\n async get<T = any>(key: string): Promise<T> {\n const settings = await this.provider.load();\n const setting = settings.find((s) => s.key === key);\n return setting ? cloneDeep(setting.value) : undefined;\n }\n\n async all(): Promise<any> {\n const settings = await this.provider.load();\n return Object.fromEntries(settings.map((s) => [s.key, cloneDeep(s.value)]));\n }\n\n async defaultValues(): Promise<Record<string, unknown>> {\n return this.parent.defaultValues(this.provider.scope);\n }\n\n async set<T = any>(key: string, value: T): Promise<void>;\n async set<T = any>(values: Record<string, T>): Promise<void>;\n async set<T = any>(keyOrValues: string | Record<string, T>, value?: T): Promise<void> {\n if (typeof keyOrValues === 'string') {\n // Single key-value pair\n await this.provider.set(keyOrValues, value);\n this.scopeCache.set(keyOrValues, value); // Sync the cache\n this.onChanged.next({\n scope: this.provider.scope,\n keys: [keyOrValues],\n values: { [keyOrValues]: value },\n entries: [{ key: keyOrValues, value }],\n });\n } else {\n // Multiple key-value pairs\n await this.provider.set(keyOrValues);\n Object.entries(keyOrValues).forEach(([key, val]) => this.scopeCache.set(key, val)); // Sync the cache\n const entries = Object.entries(keyOrValues).map(([key, val]) => ({ key, value: val }));\n this.onChanged.next({\n scope: this.provider.scope,\n keys: Object.keys(keyOrValues),\n values: keyOrValues,\n entries,\n });\n }\n }\n}\n","import { AXStyleColorType } from '@acorex/components/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\n//TODO Loading, Redirect, Drawer, Show toast\n\nexport const AXPRedirectEvent = createWorkFlowEvent<{ url: string }>('Redirect Event Fired');\nexport const AXPRefreshEvent = createWorkFlowEvent<{ entity: string }>('Refresh Event Fired');\n\n@Injectable()\nexport class AXPWorkflowNavigateAction extends AXPWorkflowAction {\n private router = inject(Router);\n async execute(context: AXPWorkflowContext): Promise<void> {\n const payload = context.getVariable('payload');\n if (Array.isArray(payload.commands)) {\n this.router.navigate(payload.commands, payload.extras);\n } else {\n if (payload.commands.toLowerCase().startsWith('http') || payload.target == 'blank') {\n window.open(payload.commands, '_blank');\n } else this.router.navigate([payload.commands], payload.extras);\n }\n }\n}\n\n@Injectable()\nexport class AXPDialogConfirmAction extends AXPWorkflowAction {\n private dialogService = inject(AXDialogService);\n private translationService = inject(AXTranslationService);\n\n title!: string;\n message!: string;\n type!: AXStyleColorType;\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n context.setOutput('result', false);\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync(this.title),\n await this.translationService.translateAsync(this.message),\n (await this.translationService.translateAsync(this.type)) as AXStyleColorType\n );\n context.setOutput('result', dialogResult.result);\n }\n}\n\n@Injectable()\nexport class AXPToastAction extends AXPWorkflowAction {\n private toastService = inject(AXToastService);\n private translationService = inject(AXTranslationService);\n\n color!: AXStyleColorType;\n title!: string;\n content!: string;\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const options = context.getVariable<any>('options');\n const process = options?.['process'];\n const showResult = process?.showResult ?? true;\n if (showResult) {\n this.toastService.show({\n color: this.color,\n title: await this.translationService.translateAsync(this.title),\n content: await this.translationService.translateAsync(this.content),\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n }\n}\n","import { AXPNavigateActionCommand } from \"@acorex/platform/core\";\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from \"@acorex/platform/workflow\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\n\n\n\n@Injectable()\nexport class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {\n\n private router = inject(Router);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const command = context.getVariable<AXPNavigateActionCommand<'router'>>();\n const path = command.options.path;\n\n if (path.toLowerCase().startsWith('http') || command.options?.extras?.target === 'blank') {\n window.open(path, '_blank');\n } else {\n const [basePathAndFragment, queryString] = path.split('?');\n const [basePath, fragment] = basePathAndFragment.split('#'); // Extract fragment if present\n const queryParams = this.parseQueryParams(queryString);\n\n this.router.navigate([basePath], {\n ...command.options.extras,\n queryParams, // Pass query parameters separately\n fragment, // Pass fragment explicitly\n });\n }\n }\n\n /**\n * Parses query parameters from a query string into an object.\n */\n private parseQueryParams(queryString: string | undefined): Record<string, string> | undefined {\n if (!queryString) return undefined;\n\n return queryString\n .split('&')\n .map(pair => pair.split('='))\n .reduce((params, [key, value]) => {\n params[decodeURIComponent(key)] = decodeURIComponent(value);\n return params;\n }, {} as Record<string, string>);\n }\n}\n\n\n\n\nexport const AXPNavigateWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n 'start': {\n action: 'navigate-router',\n },\n },\n};\n","import { Injectable, NgZone, inject, isDevMode } from \"@angular/core\";\nimport { AXDialogService } from \"@acorex/components/dialog\";\nimport { AXPWorkflowError } from \"@acorex/platform/workflow\";\nimport { AXPErrorHandler } from \"../errors\";\n\n@Injectable()\nexport class AXMWorkflowErrorHandler implements AXPErrorHandler {\n private dialog = inject(AXDialogService);\n\n\n handleError(error: any, next: (error: any) => void): void {\n if (error instanceof AXPWorkflowError) {\n this.dialog.alert(\"Somthing is wrong!\", error.inner ? error.inner.message : error.message, 'danger');\n next(error);\n } else {\n next(error);\n }\n }\n}","import { AXPopupModule } from '@acorex/components/popup';\nimport { AXToastModule } from '@acorex/components/toast';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { ErrorHandler, Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXPAppStartUpProvider, AXPAppStartUpService } from './app/app-startup.service';\nimport {\n AXPCustomOperatorService,\n AXPCustomOperatorServiceImpl,\n AXPDataSeederService,\n AXPFilterOperatorMiddlewareService,\n AXPFilterOperatorMiddlewareServiceImpl,\n} from './data';\nimport { AXPErrorHandler, AXPErrorHandlerRegistryService, AXPGlobalErrorHandler } from './errors';\nimport { AXPMenuSearchDefinitionProvider } from './layout';\nimport { AXPMenuSearchProvider } from './layout/menu/search.provider';\nimport { AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from './search';\nimport { AXPSettingService } from './settings';\nimport {\n AXPDialogConfirmAction,\n AXPNavigateWorkflow,\n AXPToastAction,\n AXPWorkflowRouterNavigateAction,\n} from './workflows';\n\nexport interface AXPCommonModuleConfigs {\n errorHandlers: (new () => AXPErrorHandler)[];\n}\n\n@NgModule({\n imports: [\n AXPWorkflowModule.forChild({\n actions: {\n 'navigate-router': AXPWorkflowRouterNavigateAction,\n 'show-prompt-dialog': AXPDialogConfirmAction,\n 'show-toast': AXPToastAction,\n },\n workflows: {\n navigate: AXPNavigateWorkflow,\n },\n }),\n AXPopupModule,\n AXDateTimeModule,\n AXToastModule,\n ],\n exports: [RouterModule],\n providers: [\n AXPAppStartUpProvider,\n {\n provide: ErrorHandler,\n useClass: AXPGlobalErrorHandler,\n },\n {\n provide: AXPCustomOperatorService,\n useClass: AXPCustomOperatorServiceImpl,\n },\n {\n provide: AXPFilterOperatorMiddlewareService,\n useClass: AXPFilterOperatorMiddlewareServiceImpl,\n },\n\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPMenuSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPMenuSearchDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXPCommonModule {\n static forRoot(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule> {\n return {\n ngModule: AXPCommonModule,\n providers: [\n ...(configs?.errorHandlers || []),\n {\n provide: 'AXPCommonModuleFactory',\n useFactory: (registry: AXPErrorHandlerRegistryService) => () => {\n registry.register(...(configs?.errorHandlers || []));\n },\n deps: [AXPErrorHandlerRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n static forChild(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule> {\n return {\n ngModule: AXPCommonModule,\n providers: [\n ...(configs?.errorHandlers || []),\n {\n provide: 'AXPCommonModuleFactory',\n useFactory: (registry: AXPErrorHandlerRegistryService) => () => {\n registry.register(...(configs?.errorHandlers || []));\n },\n deps: [AXPErrorHandlerRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n /**\n * @ignore\n */\n constructor(\n @Inject('AXPCommonModuleFactory') instances: any[],\n appInitService: AXPAppStartUpService,\n settingsService: AXPSettingService,\n seederService: AXPDataSeederService\n ) {\n instances.forEach((f) => {\n f();\n });\n appInitService.registerTask({\n name: 'Settings',\n statusText: 'Loading Settings ...',\n run: async () => {\n await settingsService.load();\n },\n });\n //\n //\n appInitService.registerTask({\n name: 'Seeder',\n statusText: 'Seed Data ...',\n run: async () => {\n await seederService.seed();\n },\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPLogoConfig, AXPTextLogoConfig } from '../layout/logo/logo.types';\n\nexport const ENVIRONMENT = new InjectionToken<any>('ENVIRONMENT');\n\nexport const AXP_PLATFORM_CONFIG_TOKEN = new InjectionToken<AXPPlatformConfigs>('AXP_PLATFORM_CONFIG_TOKEN', {\n providedIn: 'root',\n factory: () => {\n return AXPPlatformDefaultConfigs;\n },\n});\n\nexport interface AXPPlatformConfigs {\n title?: string;\n copyright?: string;\n logo?: {\n dark?: AXPLogoConfig;\n light?: AXPLogoConfig;\n colored?: AXPLogoConfig;\n };\n network?: {\n timeOut?: number;\n };\n}\n\nexport const AXPPlatformDefaultConfigs: AXPPlatformConfigs = {\n copyright: 'ACoreX @ 2024',\n title: 'ACoreX Platform',\n logo: {\n dark: new AXPTextLogoConfig('ACoreX'),\n light: new AXPTextLogoConfig('ACoreX'),\n colored: new AXPTextLogoConfig('ACoreX'),\n },\n network: {\n timeOut: 5000,\n }\n};\n\nexport function configPlatform(config: Partial<AXPPlatformConfigs> = AXPPlatformDefaultConfigs): AXPPlatformConfigs {\n return merge(AXPPlatformDefaultConfigs, config);\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const AXP_ROOT_CONFIG_TOKEN = new InjectionToken<AXPRootConfigs>('AXP_ROOT_CONFIG_TOKEN');\n\nexport interface AXPRootConfigs {\n baseUrl: string;\n}","import { Injectable } from \"@angular/core\";\nimport { AXPFileStorageCreateRequest, AXPFileStorageInfo, AXPFileStorageUpdateRequest, AXPFileStorageFindRequest } from \"./file-storage.types\";\n\n\n@Injectable()\nexport abstract class AXPFileStorageService {\n\n abstract save(request: AXPFileStorageCreateRequest): Promise<AXPFileStorageInfo>;\n\n abstract update(request: AXPFileStorageUpdateRequest): Promise<AXPFileStorageInfo>;\n\n abstract find(request: AXPFileStorageFindRequest): Promise<AXPFileStorageInfo[]>;\n\n abstract getInfo(fileId: string): Promise<AXPFileStorageInfo>;\n\n abstract remove(fileId: string): Promise<void>;\n\n abstract commit(fileId: string): Promise<void>;\n\n abstract markForDeletion(fileId: string): Promise<void>;\n}\n","import { AXPMetaData } from \"@acorex/platform/core\";\n\nexport enum AXPFileStorageStatus {\n Temporary = 'temporary', // File is not yet associated with a parent entity\n Committed = 'committed', // File is fully associated and in use\n PendingDeletion = 'pendingDeletion', // File is marked for deletion but not yet removed\n Archived = 'archived', // File is archived and no longer actively used\n Error = 'error', // File encountered an error during processing\n}\n\n/**\n * Interface representing a file storage request in the Acorex platform.\n */\nexport interface AXPFileStorageCreateRequest {\n /**\n * The file to be stored.\n */\n file: File;\n /**\n * The unique identifier of referenced entity.\n */\n refId: string;\n /**\n * The type of the referenced entity.\n */\n refType: string;\n /**\n * The category of the file. profile-picture, company-logo, policy, document, etc.\n */\n category: string;\n /**\n * The folder path where the file should be stored.\n * If null, the service will resolve the path based on metadata, user, tenant, or default rules.\n */\n path?: string;\n /**\n * Metadata associated with the file.\n */\n metadata?: AXPMetaData;\n\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n}\n\nexport interface AXPFileStorageUpdateRequest {\n /**\n * The unique identifier for the stored file.\n */\n fileId: string;\n /**\n * The folder path where the file should be stored.\n * If null, the service will resolve the path based on metadata, user, tenant, or default rules.\n */\n path?: string;\n /**\n * Metadata associated with the file.\n */\n metadata: AXPMetaData;\n\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n}\n\n/**\n * Represents information about a file stored in the AXP file storage system.\n */\nexport interface AXPFileStorageInfo {\n /**\n * The unique identifier for the stored file.\n */\n fileId: string;\n\n /**\n * The unique identifier of referenced entity.\n */\n refId: string;\n /**\n * The type of the referenced entity.\n */\n refType: string;\n /**\n * The category of the file. profile-picture, company-logo, policy, document, etc.\n */\n category: string;\n\n /**\n * The URL where the file can be accessed.\n */\n url?: string;\n\n /**\n * The size of the file in bytes.\n */\n size: number;\n\n /**\n * The MIME type of the file.\n */\n mimeType: string;\n\n /**\n * The date and time when the file was uploaded.\n */\n uploadedAt: Date;\n\n /**\n * Indicates whether the file is public or private.\n */\n isPublic: boolean;\n\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n\n status: AXPFileStorageStatus; // Updated to use enum\n}\n\n/**\n * Represents information about a file stored in the AXP file storage system.\n */\nexport interface AXPFileStorageFindRequest {\n /**\n * The unique identifier of referenced entity.\n */\n refId?: string;\n /**\n * The type of the referenced entity.\n */\n refType?: string;\n /**\n * The category of the file. profile-picture, company-logo, policy, document, etc.\n */\n category?: string;\n /**\n * The MIME type of the file.\n */\n mimeType?: string;\n /**\n * Indicates whether the file is public or private.\n */\n isPublic?: boolean;\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n /**\n * The date and time range when the file was uploaded.\n */\n uploadedAtRange?: { from: Date; to: Date };\n}","import { Injectable } from '@angular/core';\nimport { AXPFilterDefinition, AXPFilterQuery } from './filters.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPFiltersProviderService {\n async getAll(): Promise<AXPFilterDefinition[]> {\n return Promise.resolve('' as any);\n }\n\n async execute(): Promise<AXPFilterQuery[]> {\n return Promise.resolve('' as any);\n }\n}\n","import { createAction } from '@ngrx/store';\n\n\nexport const AXPSignOutAction = createAction('[SignOut] Action');\nexport const AXPSignInAction = createAction('[SignIn] Action');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXPErrorHandlerRegistryService","i1.AXPComponentSlotRegistryService","i1.AXPComponentSlotLoaderService","i1.AXPAppStartUpService","i2.AXPSettingService","i3.AXPDataSeederService"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-common.mjs","sources":["../../../../libs/platform/common/src/lib/app/app-startup.service.ts","../../../../libs/platform/common/src/lib/app/app-version.provider.ts","../../../../libs/platform/common/src/lib/app/application.types.ts","../../../../libs/platform/common/src/lib/app/operators.ts","../../../../libs/platform/common/src/lib/data/data-provider.types.ts","../../../../libs/platform/common/src/lib/utils/clipboard-service.ts","../../../../libs/platform/common/src/lib/utils/data-generator.ts","../../../../libs/platform/common/src/lib/utils/export-popup.ts","../../../../libs/platform/common/src/lib/utils/export.service.ts","../../../../libs/platform/common/src/lib/data/dexie-storage.service.ts","../../../../libs/platform/common/src/lib/data/entity-data-seeder.ts","../../../../libs/platform/common/src/lib/data/entity-storage-service.ts","../../../../libs/platform/common/src/lib/data/operators.service.ts","../../../../libs/platform/common/src/lib/data/filter-middleware.service.ts","../../../../libs/platform/common/src/lib/errors/error-handler-registry.service.ts","../../../../libs/platform/common/src/lib/errors/global-error-handler.ts","../../../../libs/platform/common/src/lib/layout/grid-layout/grid-layout.directive.ts","../../../../libs/platform/common/src/lib/layout/sticky.directive.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot-registery.service.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot-loader.service.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot.directive.ts","../../../../libs/platform/common/src/lib/layout/component-slot/component-slot.module.ts","../../../../libs/platform/common/src/lib/layout/logo/logo.types.ts","../../../../libs/platform/common/src/lib/layout/logo/logo.component.ts","../../../../libs/platform/common/src/lib/layout/logo/logo.component.html","../../../../libs/platform/common/src/lib/layout/menu/menu.provider.ts","../../../../libs/platform/common/src/lib/layout/menu/menu.service.ts","../../../../libs/platform/common/src/lib/layout/menu/search-definition.provider.ts","../../../../libs/platform/common/src/lib/layout/menu/search.provider.ts","../../../../libs/platform/common/src/lib/layout/theme/components/slots/footer-text-slot.component.ts","../../../../libs/platform/common/src/lib/layout/theme/components/slots/navbar-slot.component.ts","../../../../libs/platform/common/src/lib/search/search-definition.builder.ts","../../../../libs/platform/common/src/lib/search/search-definition.provider.ts","../../../../libs/platform/common/src/lib/search/search.provider.ts","../../../../libs/platform/common/src/lib/search/search.service.ts","../../../../libs/platform/common/src/lib/settings/settings.types.ts","../../../../libs/platform/common/src/lib/settings/setting.builder.ts","../../../../libs/platform/common/src/lib/settings/setting-definition.provider.ts","../../../../libs/platform/common/src/lib/settings/settings.provider.ts","../../../../libs/platform/common/src/lib/settings/settings.service.ts","../../../../libs/platform/common/src/lib/workflows/common.workflow.ts","../../../../libs/platform/common/src/lib/workflows/navigate.workflow.ts","../../../../libs/platform/common/src/lib/workflows/error-handler.ts","../../../../libs/platform/common/src/lib/common.module.ts","../../../../libs/platform/common/src/lib/configs/app.config.ts","../../../../libs/platform/common/src/lib/configs/config.types.ts","../../../../libs/platform/common/src/lib/file-storage/file-storage.service.ts","../../../../libs/platform/common/src/lib/file-storage/file-storage.types.ts","../../../../libs/platform/common/src/lib/filters/filters.service.ts","../../../../libs/platform/common/src/lib/store/common.actions.ts","../../../../libs/platform/common/src/acorex-platform-common.ts"],"sourcesContent":["import { Injectable, inject, provideAppInitializer } from '@angular/core';\n\nexport interface AXPStartUpTask {\n name: string;\n statusText: string;\n run: () => Promise<void>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPAppStartUpService {\n private tasks: AXPStartUpTask[] = [];\n\n registerTask(task: AXPStartUpTask) {\n this.tasks.push(task);\n }\n\n async runAllTasks() {\n for (const task of this.tasks) {\n this.updateStatus(task.statusText);\n await task.run();\n }\n }\n\n private updateStatus(status: string) {\n const loadingText = document.querySelector('#loadingText');\n if (loadingText) {\n loadingText.innerHTML = status;\n }\n }\n}\n\nfunction initAppFactory(appInitService: AXPAppStartUpService) {\n return () => appInitService.runAllTasks();\n}\n\nexport const AXPAppStartUpProvider = provideAppInitializer(() => {\n const initializerFn = initAppFactory(inject(AXPAppStartUpService));\n return initializerFn();\n});\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXPAppVersion {\n version: string;\n build: number;\n date: Date;\n}\n\nexport interface AXPAppVersionProvider {\n provider(): Promise<AXPAppVersion>;\n}\n\nexport const AXP_APP_VERSION_PROVIDER = new InjectionToken<AXPAppVersionProvider>('AXP_APP_VERSION_PROVIDER', {\n providedIn: 'root',\n factory: () => {\n return new AXPAppVersionDefaultProvider();\n },\n});\n\nclass AXPAppVersionDefaultProvider implements AXPAppVersionProvider {\n async provider(): Promise<AXPAppVersion> {\n return {\n version: '1.0.0',\n build: 1,\n date: new Date(),\n };\n }\n}\n","import { AXDataSourceOperator, AXStyleColorType } from '@acorex/components/common';\nimport { AXPValidationRules } from '@acorex/platform/core';\nimport { AXPWidgetTypesMap, AXPWidgetValueTransformFunctions } from '@acorex/platform/layout/builder';\nimport { kebabCase } from 'lodash-es';\nimport { AXPGridLayoutOptions } from '../layout';\n\nexport interface AXEntityPropertyWidget {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n path: string;\n id?: string;\n formula?: string;\n children?: AXEntityPropertyWidget[];\n mode: 'view' | 'edit' | 'designer';\n options?: Record<string, any>;\n triggers?: { event: string; action: string; disabled?: boolean }[];\n valueTransforms?: AXPWidgetValueTransformFunctions;\n}\n\nexport enum AXPRelationshipKind {\n Association,\n Composition,\n Aggregation,\n}\n\nexport enum AXPRelationshipCardinality {\n OneToOne,\n OneToMany,\n ManyToMany,\n}\n\nexport interface AXPRelationship {\n id: string;\n from: string;\n to: string;\n kind: AXPRelationshipKind;\n cardinality: AXPRelationshipCardinality;\n}\n\nexport enum AXPEntityCommandScope {\n TypeLevel = 'typeLevel',\n Selected = 'selected',\n Individual = 'individual',\n Section = 'section',\n}\n\nexport enum AXPEntityQueryType {\n Single = 'single',\n List = 'list',\n}\n\nexport interface AXPEntityPropertyLayoutConfig extends AXPGridLayoutOptions {\n label?: {\n visible?: boolean;\n };\n order?: number;\n}\n\nexport interface AXPEntityPropertyGroup {\n id: string;\n title: string;\n description?: string;\n permissions?: string[];\n}\n\nexport interface AXPEntityPropertyView {\n name: string;\n permissions?: string[];\n layout?: AXPEntityPropertyLayoutConfig;\n}\n\nexport interface AXPEntityPropertyUpdateView extends AXPEntityPropertyView { }\n\nexport interface AXPEntityPropertyCreateView extends AXPEntityPropertyView {\n defaultValue?: any;\n}\n\nexport interface AXPEntitySectionView {\n id: string;\n description?: string;\n order?: number;\n layout?: AXPEntityPropertyLayoutConfig;\n}\n\nexport interface AXPEntityProperty {\n name: string;\n title: string;\n description?: string;\n groupId?: string;\n reference?: {\n relationId: string;\n };\n schema: {\n dataType: string;\n nullable?: boolean;\n readonly?: boolean;\n hidden?: boolean;\n defaultValue?: any | string | ((context: any | null) => any);\n unique?: {\n enabled: boolean;\n };\n interface?: Partial<AXEntityPropertyWidget>;\n };\n options?: {\n filter?: {\n advance?: {\n enabled?: boolean;\n widgetType?: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n };\n inline?: {\n enabled?: boolean;\n };\n };\n sort?: {\n enabled?: boolean;\n };\n };\n validations?: AXPValidationRules;\n}\n\nexport interface AXPEntityTableColumn {\n name: string;\n title?: string;\n sort?: {\n enabled?: boolean;\n dir?: 'asc' | 'desc';\n };\n options?: {\n visible?: boolean;\n width?: string;\n dataPath?: string;\n [name: string]: any;\n };\n}\n\nexport interface AXPEntityCommand {\n execute: string | Function; // As runnable expression\n permissions?: string[];\n}\n\nexport interface AXPEntityQuery {\n execute: string | Function; // As runnable expression\n type: AXPEntityQueryType;\n}\n\nexport type AXPCommandActionType =\n | 'create'\n | 'update'\n | 'delete'\n | 'print'\n | 'confirm'\n | 'report'\n | 'info'\n | 'view'\n | 'archive'\n | 'design';\n\nexport interface AXPCommandActionLook {\n color: AXStyleColorType;\n icon: string;\n}\n\nexport type AXPCommandActionPriority = 'primary' | 'secondary';\n\nexport type AXPCommandActionCallback =\n | string\n | {\n name: string;\n options: {\n decoration?: {\n header?: {\n title?: string;\n };\n };\n process?: {\n [name: string]: any;\n };\n [name: string]: any;\n };\n };\n\nexport interface AXPCommandAction extends Partial<AXPCommandActionLook> {\n permissions?: string[];\n command: AXPCommandActionCallback;\n title: string;\n type: AXPCommandActionType;\n priority: 'primary' | 'secondary';\n separated?: boolean;\n}\n\nexport interface AXPEntityAction extends AXPCommandAction {\n scope: AXPEntityCommandScope;\n}\n\nexport interface AXPEntity {\n module: string;\n name: string;\n source: string;\n parentKey?: string;\n title: string;\n formats: {\n individual: string;\n plural: string;\n lookup?: string;\n searchResult?: {\n title: string;\n description?: string;\n };\n };\n relatedEntities?: AXPRelatedEntity[];\n groups?: AXPEntityPropertyGroup[];\n properties: AXPEntityProperty[];\n columns?: AXPEntityTableColumn[];\n commands?: {\n create: AXPEntityCommand | undefined;\n update?: AXPEntityCommand | undefined;\n delete?: AXPEntityCommand | undefined;\n [name: string]: AXPEntityCommand | undefined;\n };\n queries: {\n byKey: AXPEntityQuery;\n list?: AXPEntityQuery;\n lookup?: AXPEntityQuery;\n history?: AXPEntityQuery;\n comments?: AXPEntityQuery;\n [name: string]: AXPEntityQuery | undefined;\n };\n validations?: AXPValidationRules;\n interfaces?: {\n master?: {\n single?: AXPEntityMasterSingleLayoutView;\n list?: AXPEntityMasterListView;\n create?: AXPEntityMasterCreateLayoutView;\n update?: AXPEntityMasterUpdateLayoutView;\n };\n detail?: {\n list?: AXPEntityDetailListView;\n };\n };\n}\n\nexport function getEntityInfo(entity: AXPEntity) {\n return {\n source: `${entity.module}.${entity.name}`,\n module: {\n route: kebabCase(entity.module),\n },\n entity: {\n route: kebabCase(entity.name),\n },\n };\n}\n\nexport function createQueryView(name: string, title: string, fixed: boolean, params: { columns?: string[], conditions?: AXPQueryFilter[], sorts?: AXPQuerySort[] } = { columns: [], conditions: [], sorts: [] }): AXPQueryView {\n params = Object.assign({ columns: [], sorts: [], conditions: [] }, params)\n return {\n name,\n title,\n fixed,\n columns: params.columns ?? [],\n conditions: params.conditions ?? [],\n sorts: params.sorts ?? [],\n };\n}\n\nexport function createAllQueryView(params: { columns?: string[], conditions?: AXPQueryFilter[], sorts?: AXPQuerySort[] } | undefined = { columns: [], sorts: [], conditions: [] }): AXPQueryView {\n params = Object.assign({ columns: [], sorts: [], conditions: [] }, params)\n return createQueryView('all', 't(\"allItem\", { scope: \"common\" })', true,\n { columns: params.columns ?? [], conditions: params.conditions ?? [], sorts: params.sorts ?? [] });\n}\n\n\n\nexport interface AXPRelatedEntity {\n entity: string;\n title?: string;\n columns?: string[];\n conditions?: AXPQueryFilter[];\n // sorts?: AXPQuerySort[];\n}\n\nexport interface AXPAggregate {\n id: string;\n name: string;\n title: string;\n entities: AXPEntity[];\n}\n\nexport interface AXPModule {\n name: string;\n title: string;\n aggregates: AXPAggregate[];\n relationships?: AXPRelationship[];\n}\n\nexport interface AXPApplication {\n name: string;\n title: string;\n modules: AXPModule[];\n}\n\nexport interface AXPEntityMasterLayoutView {\n title?: string;\n sections: AXPEntitySectionView[];\n properties?: AXPEntityPropertyView[];\n}\n\nexport interface AXPEntityMasterCreateLayoutView extends AXPEntityMasterLayoutView {\n steps?: {\n id: string;\n title: string;\n description?: string;\n };\n}\n\nexport interface AXPEntityMasterUpdateLayoutView extends AXPEntityMasterLayoutView { }\n\nexport interface AXPEntityMasterSingleLayoutView extends AXPEntityMasterLayoutView {\n title: string;\n description?: string;\n actions?: AXPEntityAction[];\n}\n\nexport interface AXPEntityMasterListView {\n title?: string;\n description?: string;\n actions?: AXPEntityAction[];\n views: AXPQueryView[];\n}\n\nexport interface AXPEntityDetailListView {\n title?: string;\n description?: string;\n columns: AXPEntityTableColumn[];\n actions?: AXPEntityAction[];\n}\n\nexport interface AXPQueryView {\n name: string;\n fixed: boolean;\n title: string;\n columns: string[];\n conditions: AXPQueryFilter[];\n sorts: AXPQuerySort[];\n indexCol?: boolean;\n pageSize?: number;\n}\n\nexport interface AXPQueryFilter {\n name: string; // entity property name\n operator: AXDataSourceOperator;\n value: any;\n}\n\nexport interface AXPQuerySort {\n name: string; // entity property name\n dir: 'asc' | 'desc';\n}\n\nexport function resolveActionLook(tr: AXPEntityAction): AXPCommandActionLook {\n const icon = 'fa-light';\n switch (tr.type) {\n case 'create':\n return { color: 'primary', icon: `${icon} fa-add` };\n case 'view':\n return { color: 'primary', icon: `${icon} fa-eye` };\n case 'info':\n return { color: 'primary', icon: `${icon} fa-info` };\n case 'delete':\n return { color: 'danger', icon: `${icon} fa-trash-can` };\n case 'update':\n return { color: 'primary', icon: `${icon} fa-pen-to-square` };\n case 'print':\n return { color: 'secondary', icon: `${icon} fa-print` };\n case 'confirm':\n return { color: 'success', icon: `${icon} fa-check` };\n case 'archive':\n return { color: 'primary', icon: `${icon} fa-archive` };\n case 'design':\n return { color: 'primary', icon: `${icon} fa-paintbrush` };\n default:\n return { color: 'primary', icon: '' };\n }\n}\n","export interface AXPFilterOperator {\n name: string;\n title: string;\n hasValue: boolean;\n}\n\nexport const EQ_OPER: AXPFilterOperator = { name: 'equal', title: 'Equal', hasValue: true };\nexport const NOT_EQ_OPER: AXPFilterOperator = { name: 'notEqual', title: 'Not Equal', hasValue: true };\nexport const GT_OPER: AXPFilterOperator = { name: 'greaterThan', title: 'Greater Than', hasValue: true };\nexport const LT_OPER: AXPFilterOperator = { name: 'lessThan', title: 'Less Than', hasValue: true };\nexport const GTE_OPER: AXPFilterOperator = {\n name: 'greaterThanOrEqual',\n title: 'Greater Than or Equal',\n hasValue: true,\n};\nexport const LTE_OPER: AXPFilterOperator = { name: 'lessThanOrEqual', title: 'Less Than or Equal', hasValue: true };\nexport const CONTAINS_OPER: AXPFilterOperator = { name: 'contains', title: 'Contains', hasValue: true };\nexport const NOT_CONTAINS_OPER: AXPFilterOperator = { name: 'notContains', title: 'Does Not Contain', hasValue: true };\nexport const STARTS_WITH_OPER: AXPFilterOperator = { name: 'startsWith', title: 'Starts With', hasValue: true };\nexport const ENDS_WITH_OPER: AXPFilterOperator = { name: 'endsWith', title: 'Ends With', hasValue: true };\nexport const IS_EMPTY_OPER: AXPFilterOperator = { name: 'isEmpty', title: 'Is Empty', hasValue: false };\nexport const IS_NOT_EMPTY_OPER: AXPFilterOperator = { name: 'isNotEmpty', title: 'Is Not Empty', hasValue: false };\nexport const BETWEEN_OPER: AXPFilterOperator = { name: 'between', title: 'Between', hasValue: true };\n\nexport const STRING_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n CONTAINS_OPER,\n NOT_CONTAINS_OPER,\n STARTS_WITH_OPER,\n ENDS_WITH_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n];\n\nexport const NUMBER_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n BETWEEN_OPER,\n GT_OPER,\n GTE_OPER,\n LT_OPER,\n LTE_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n];\n\nexport const BOOLEAN_OPERATORS = [EQ_OPER];\n\nexport const DATE_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n GT_OPER,\n GTE_OPER,\n LT_OPER,\n LTE_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n];\n\nexport const ALL_DEFAULT_OPERATORS = [\n EQ_OPER,\n NOT_EQ_OPER,\n GT_OPER,\n LT_OPER,\n GTE_OPER,\n LTE_OPER,\n CONTAINS_OPER,\n NOT_CONTAINS_OPER,\n STARTS_WITH_OPER,\n ENDS_WITH_OPER,\n IS_EMPTY_OPER,\n IS_NOT_EMPTY_OPER,\n BETWEEN_OPER,\n];\n","export abstract class AXPDataProvider {\n abstract insertOne(entity: any, entityItem: any): Promise<any>;\n abstract insertMany(entity: any, entityList: any): Promise<any>;\n abstract getOne(entity: any, id: string): Promise<any>;\n abstract getMany(entity: any, params?: any): Promise<any>;\n abstract updateOne(entity: any, id?: string, data?: { [key: string]: any }): Promise<any>;\n abstract deleteOne(entity: any, id: string): Promise<any>;\n abstract getFirst(entity: any): Promise<any>;\n abstract uploadFile(file: File, title: string, customUrl?: string): Promise<string>;\n abstract updateFile(id:string,file: File, title: string, customUrl?: string): Promise<string>;\n abstract uploadMultipleFiles(files: File[], title: string): Promise<string[]>;\n abstract viewFile(id: string, name: string): Promise<Blob>;\n abstract downloadFile(id: string, name: string): Promise<Blob>;\n}\n","import { AXToastService } from '@acorex/components/toast';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPClipBoardService {\n private toast = inject(AXToastService);\n\n public copy(title: string, value: string) {\n const copyText = document.createElement('input');\n copyText.type = 'text';\n copyText.select();\n copyText.setSelectionRange(0, 99999); // For mobile devices\n copyText.remove();\n navigator.clipboard.writeText(value);\n this.toast.success(`${title} copied!`);\n }\n\n}","export class AXPDataGenerator {\n static uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === 'x' ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n }\n\n static number(max: number): number;\n static number(min: number, max: number): number;\n static number(...args: number[]): number {\n let min = 0;\n let max = 100;\n if (args.length == 1)\n max = args[0]\n if (args.length == 2) {\n min = args[0]\n max = args[1]\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static date(): Date;\n static date(start: Date): Date;\n static date(start: Date, end: Date): Date;\n static date(...args: any[]): Date {\n let start = new Date(2000, 0, 1);\n let end = new Date();\n\n if (args.length === 1) {\n start = args[0];\n } else if (args.length === 2) {\n start = args[0];\n end = args[1];\n }\n\n const startTime = start.getTime();\n const endTime = end.getTime();\n return new Date(startTime + Math.random() * (endTime - startTime));\n }\n\n\n static array<T>(length: number = 5, generator: () => T): T[] {\n return Array.from({ length }, generator);\n }\n\n static pick<T>(items: T[]): T\n static pick<T>(items: T[], count: number): T[];\n static pick<T>(...args: any[]): T | T[] {\n if (args.length < 1) {\n throw new Error('Invalid parameters');\n }\n const items: T[] = args[0];\n const count: number = args[1] ?? 1\n if (count < 1) {\n throw new Error('Count must be at least 1');\n }\n\n // If the count is greater than the number of items, just return a shuffled copy of the array\n if (count >= items.length) {\n return [...items].sort(() => Math.random() - 0.5);\n }\n\n // Shuffle the array and slice the first 'count' elements\n const shuffled = items.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; // Swap elements\n }\n return count == 1 ? shuffled.slice(0, count)[0] : shuffled.slice(0, count);\n }\n\n static string(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n static boolean(): boolean {\n return Math.random() >= 0.5;\n }\n\n static item<T>(array: T[] = []): T | undefined {\n return array.length > 0 ? array[Math.floor(Math.random() * array.length)] : undefined;\n }\n\n static color(): string {\n const color = Math.floor(Math.random() * 16777215).toString(16);\n return `#${color.padStart(6, '0')}`;\n }\n\n static alphanumeric(length: number = 10): string {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n static alphabet(length: number = 10): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => chars.charAt(Math.floor(Math.random() * chars.length))).join('');\n }\n\n\n static phone(): string {\n const areaCode = this.number(100, 999);\n const exchangeCode = this.number(100, 999);\n const lineNumber = this.number(1000, 9999);\n return `${areaCode}-${exchangeCode}-${lineNumber}`;\n }\n\n static firstName(): string {\n const firstNames = ['John', 'Allen', 'Jak', 'Rose', 'Kate', 'Liam', 'Olivia', 'Noah', 'Emma', 'Ava'];\n return this.pick(firstNames);\n }\n\n static lastName(): string {\n const lastNames = ['Gates', 'Jonsen', 'Smith', 'Ford', 'Jakson', 'Brown', 'Johnson', 'Williams', 'Jones', 'Garcia'];\n return this.pick(lastNames);\n }\n\n static email(): string;\n static email(firstName: string, lastName: string): string;\n static email(...args: any[]): string {\n const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'example.com'];\n const domain = this.pick(domains);\n const separator = this.pick(['.', '_', '']);\n const randomSuffix = this.boolean() ? this.number(1, 99).toString() : '';\n\n if (args.length === 2) {\n const firstName = args[0].toLowerCase();\n const lastName = args[1].toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n } else {\n const firstName = this.firstName().toLowerCase();\n const lastName = this.lastName().toLowerCase();\n return `${firstName}${separator}${lastName}${randomSuffix}@${domain}`;\n }\n }\n\n static country(): string {\n const countries = ['USA', 'Canada', 'Mexico', 'Germany', 'France', 'Japan', 'Australia'];\n return this.pick(countries);\n }\n\n static city(): string {\n const cities = ['New York', 'Los Angeles', 'Toronto', 'Vancouver', 'Berlin', 'Paris', 'Tokyo', 'Sydney'];\n return this.pick(cities);\n }\n\n static state(): string {\n const states = ['NY', 'CA', 'TX', 'ON', 'BC', 'NSW', 'BER', 'IDF', 'TYO'];\n return this.pick(states);\n }\n\n static address(): string {\n const streets = ['Main St', 'High St', 'Maple Ave', 'Oak St', 'Pine St', 'Cedar St'];\n const streetNumber = this.number(100, 9999);\n const street = this.pick(streets);\n const city = this.city();\n const state = this.state();\n const zip = this.number(10000, 99999);\n const country = this.country();\n return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { afterNextRender, Component, linkedSignal, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPDomToImageOptions } from './export.service';\n\n@Component({\n template: ` <div class=\"ax-grid ax-grid-cols-[auto_18rem] ax-gap-4 ax-justify-center ax-p-4 ax-items-center\">\n <ax-label>Resolution (px)</ax-label>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n <ax-number-box\n [changeOnScroll]=\"true\"\n [decimals]=\"4\"\n [(ngModel)]=\"width\"\n (ngModelChange)=\"calculateRatio($event, 'width')\"\n name=\"Width\"\n >\n </ax-number-box>\n <ax-button [toggleable]=\"true\" [(selected)]=\"ratio\"\n ><ax-icon><i class=\"fa-solid fa-vector-square\"></i></ax-icon\n ></ax-button>\n <ax-number-box\n [changeOnScroll]=\"true\"\n [decimals]=\"4\"\n [(ngModel)]=\"height\"\n (ngModelChange)=\"calculateRatio($event, 'height')\"\n name=\"Height\"\n >\n </ax-number-box>\n </div>\n\n <ax-label>Background color</ax-label>\n <ax-color-box [(ngModel)]=\"bgcolor\"></ax-color-box>\n\n <ax-label>Quality of image (50-100%)</ax-label>\n <ax-number-box\n [changeOnScroll]=\"true\"\n [minValue]=\"50\"\n [maxValue]=\"100\"\n [(ngModel)]=\"qualityComputed\"\n name=\"Quality\"\n >\n </ax-number-box>\n\n <ax-label>Scale</ax-label>\n <ax-number-box [changeOnScroll]=\"true\" [minValue]=\"1\" [(ngModel)]=\"scale\" name=\"scale\"> </ax-number-box>\n </div>\n\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Print\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-print\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n <ax-prefix>\n <ax-button text=\"Cancel\" look=\"solid\" color=\"danger\" (onClick)=\"handleClose(true)\"> </ax-button>\n </ax-prefix>\n </ax-footer>`,\n imports: [\n FormsModule,\n AXCheckBoxModule,\n AXNumberBoxModule,\n AXTextBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXButtonModule,\n AXColorBoxModule,\n ],\n})\nexport class AXMOrgChartPrintPage extends AXBasePageComponent {\n private data: AXPDomToImageOptions;\n\n protected ratio = signal(false);\n protected baseWidth = signal<number | undefined>(undefined);\n protected baseHeight = signal<number | undefined>(undefined);\n\n protected bgcolor = model<string>();\n protected width = model<number>();\n protected height = model<number>();\n protected quality = model<number>();\n protected qualityComputed = linkedSignal(() => (this.data.quality ?? 1) * 100);\n protected scale = model<number>();\n\n #init = afterNextRender(() => {\n this.bgcolor.set(this.data.bgcolor);\n\n this.width.set(this.data.width);\n this.baseWidth.set(this.data.width);\n\n this.height.set(this.data.height);\n this.baseHeight.set(this.data.height);\n\n this.quality.set(this.data.quality);\n this.scale.set(this.data.scale);\n });\n\n protected calculateRatio(value: number, type: 'width' | 'height'): void {\n if (!this.ratio()) return;\n\n if (type === 'width') {\n const newHeight = Math.round((value / this.baseWidth()!) * this.baseHeight()!);\n this.height.set(newHeight);\n } else {\n const newWidth = Math.round((value / this.baseHeight()!) * this.baseWidth()!);\n this.width.set(newWidth);\n }\n }\n\n protected async handleClose(isCanceled = false) {\n this.close({\n bgcolor: this.bgcolor(),\n width: this.width(),\n height: this.height(),\n quality: this.qualityComputed() / 100,\n scale: this.scale(),\n isCanceled,\n });\n }\n}\n","// AXPPdfService\nimport { AXPopupService } from '@acorex/components/popup';\nimport { Injectable, inject } from '@angular/core';\nimport { AXMOrgChartPrintPage } from './export-popup';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPExportService {\n popupService = inject(AXPopupService);\n async generateBlobFromElement(element: HTMLElement, blobOptions?: AXPDomToImageOptions): Promise<Blob> {\n const domtoimage = (await import('dom-to-image')).default;\n\n const originalWidth = element.scrollWidth;\n const originalHeight = element.scrollHeight;\n\n let popup: boolean | undefined,\n options: AXPDomToImageOptions = {},\n newOptions: AXPDomToImageOptions = {};\n\n if (blobOptions) {\n ({ popup, ...options } = blobOptions);\n }\n\n if (popup) {\n const result = await this.popupService.open(AXMOrgChartPrintPage, {\n header: true,\n size: 'fit',\n draggable: true,\n hasBackdrop: true,\n title: 'Export Options',\n data: { data: options },\n });\n if (result.data.isCanceled) {\n throw new Error('Process is Canceled by User!');\n } else {\n newOptions = result.data;\n }\n }\n\n return domtoimage.toBlob(element, {\n ...newOptions,\n width: (newOptions.width ?? originalWidth) * (newOptions?.scale ?? 1),\n height: (newOptions.height ?? originalHeight) * (newOptions?.scale ?? 1),\n style: {\n transform: `scale(${newOptions?.scale ?? 1})`,\n transformOrigin: 'top left',\n },\n });\n }\n\n download(blob: Blob, filename: string): void {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(link.href);\n }\n}\n\nexport interface AXPDomToImageOptions {\n popup?: true;\n filter?: (node: Node) => boolean;\n bgcolor?: string;\n width?: number;\n height?: number;\n style?: {};\n quality?: number;\n imagePlaceholder?: string;\n cacheBust?: boolean;\n scale?: number;\n}\n","import { applyFilterArray, applySortArray } from '@acorex/platform/core';\nimport Dexie from 'dexie';\nimport { AXPDataGenerator } from '../utils';\nimport { AXPPagedListResult, AXPQueryRequest } from './data.types';\nimport { AXPEntityStorageService } from './entity-storage-service';\n\nexport class AXPDexieEntityStorageService extends Dexie implements AXPEntityStorageService<string, any> {\n constructor() {\n super('ACoreXPlatform');\n this.version(1).stores({\n 'entity-store': '++id, entityName, [entityName+id]',\n });\n }\n\n get dbName(): string {\n return 'ACoreXPlatform';\n }\n\n async initial<T = any>(entityName: string, collection: T[]): Promise<T[]> {\n const exists = await this.table('entity-store').where({ entityName }).count();\n if (exists === 0) {\n await this.table('entity-store').bulkAdd(collection.map((item) => ({ ...item, entityName })));\n }\n return collection;\n }\n\n async getOne<T = any>(entityName: string, id: string): Promise<T> {\n return await this.table('entity-store').where({ entityName, id: id }).first();\n }\n\n async updateOne<T = any>(entityName: string, id: string, keyValue: { [key: string]: any }): Promise<T> {\n await this.table('entity-store').where({ entityName, id: id }).modify(keyValue);\n return await this.getOne(entityName, id);\n }\n\n async deleteOne(entityName: string, id: string): Promise<void> {\n await this.table('entity-store').where({ entityName, id: id }).delete();\n }\n\n async insertOne<T = any>(entityName: string, entity: T): Promise<string> {\n const uuid = AXPDataGenerator.uuid();\n await this.table('entity-store').add({ ...entity, id: uuid, entityName });\n return uuid;\n }\n\n async getAll<T = any>(entityName: string): Promise<T[]> {\n return await this.table('entity-store').where({ entityName }).toArray();\n }\n\n async query<T = any>(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<T>> {\n let result = await this.table('entity-store').where({ entityName }).toArray();\n\n if (request.sort && request.sort.length) {\n result = applySortArray(result, request.sort);\n }\n result = applyFilterArray(result, request.filter ? [request.filter] : []);\n\n return Promise.resolve({\n total: result.length,\n items: result.slice(request.skip, (request.skip ?? 0) + (request.take ?? 0)),\n });\n }\n}\n\n// export class AXPDexieTableStorageService extends Dexie implements AXPEntityStorageService {\n// private schemaUpdateLock: Promise<void> = Promise.resolve();\n\n// constructor() {\n// super('ACoreXPlatform');\n// // Initial empty version\n// //this.version(1).stores({});\n// }\n\n// // Function to change the schema dynamically\n// private async changeSchema(schemaChanges: { [tableName: string]: string | null }): Promise<void> {\n// // Acquire schema update lock to ensure no other operations are performed while schema is changing\n// this.schemaUpdateLock = this.schemaUpdateLock.then(async () => {\n// console.log('Attempting schema change with:', schemaChanges);\n\n// try {\n// this.close();\n\n// const newDb = new Dexie(this.name);\n\n// // Extract current schema in Dexie format\n// const currentSchema = this.tables.reduce((result, { name, schema }) => {\n// result[name] = [schema.primKey.src, ...schema.indexes.map((idx) => idx.src)].join(',');\n// return result;\n// }, {} as { [tableName: string]: string });\n\n// console.log('Current Schema:', currentSchema);\n\n// // Define current schema version\n\n// newDb.version(this.verno + 10).stores(currentSchema);\n\n// // Define new schema version with schema changes\n// const nextVersion = this.verno + 1;\n// newDb.version(nextVersion).stores(schemaChanges);\n// await newDb.open();\n\n// // Reassign updated db instance\n// Object.assign(this, newDb);\n// console.log(`Schema updated. Current version: ${this.verno}`);\n// } catch (error) {\n// console.error('Error during schema change:', error);\n// throw error;\n// }\n// });\n\n// // Wait for schema change lock to complete\n// await this.schemaUpdateLock;\n// }\n\n// private async ensureInitialized(entityName: string): Promise<void> {\n// if (this.tables.findIndex((table) => table.name === entityName) == -1) {\n// const schemaChanges: { [tableName: string]: string } = {};\n// schemaChanges[entityName] = '++id';\n// await this.changeSchema(schemaChanges);\n// }\n// }\n\n// get dbName(): string {\n// return 'ACoreXPlatform';\n// }\n\n// private async getTable<T>(entityName: string) {\n// await this.ensureInitialized(entityName);\n// return this.table<T, number>(entityName);\n// }\n\n// async initial<T = any>(entityName: string, collection: T[]): Promise<void> {\n// const table = await this.getTable<T>(entityName);\n// const exists = await table.count();\n// if (exists === 0) {\n// await table.bulkAdd(collection);\n// }\n// }\n\n// async getOne<T = any>(entityName: string, id: string): Promise<T> {\n// const table = await this.getTable<T>(entityName);\n// return (await table.where({ id: parseInt(id) }).first()) as T;\n// }\n\n// async updateOne(entityName: string, id: string, keyValue: { [key: string]: any }): Promise<void> {\n// const table = await this.getTable(entityName);\n// await table.update(parseInt(id), keyValue);\n// }\n\n// async deleteOne(entityName: string, id: string): Promise<void> {\n// const table = await this.getTable(entityName);\n// await table.delete(parseInt(id));\n// }\n\n// async insertOne<T = any>(entityName: string, entity: T): Promise<void> {\n// const table = await this.getTable<T>(entityName);\n// await table.add(entity);\n// }\n\n// async getAll<T = any>(entityName: string): Promise<T[]> {\n// const table = await this.getTable<T>(entityName);\n// return await table.toArray();\n// }\n// }\n","import { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport interface AXPDataSeeder {\n seed(): Promise<void>;\n}\n\nexport const AXP_DATA_SEEDER_TOKEN = new InjectionToken<AXPDataSeeder>('AXP_DATA_SEEDER_TOKEN');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPDataSeederService {\n private loader = inject(AXP_DATA_SEEDER_TOKEN, { optional: true });\n\n async seed(): Promise<void> {\n if (Array.isArray(this.loader)) {\n for (const loader of this.loader) {\n await loader.seed();\n }\n } else {\n await this.loader?.seed();\n }\n }\n}\n","import { inject } from '@angular/core';\nimport { AXPPagedListResult, AXPQueryRequest } from './data.types';\n\nexport interface AXPEntityModel<Id> {\n id?: Id;\n}\n\n\n\nexport abstract class AXPEntityStorageService<\n K,\n T extends AXPEntityModel<K>,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n abstract get dbName(): string;\n\n abstract initial(entityName: string, collection: T[]): Promise<T[]>;\n\n abstract getOne(entityName: string, id: K): Promise<RGetSingle>;\n\n abstract updateOne(entityName: string, id: K, keyValue: { [key: string]: any }): Promise<RGetSingle>;\n\n abstract deleteOne(entityName: string, id: K): Promise<void>;\n\n abstract insertOne(entityName: string, entity: RCreate): Promise<K>;\n\n abstract getAll(entityName: string): Promise<RGetList[]>;\n\n abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>>;\n}\n\nexport abstract class AXPEntityDataProvider<\n K,\n T extends AXPEntityModel<K>,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n abstract get entityName(): string;\n\n abstract initial(collection: T[]): Promise<void>;\n\n abstract getOne(id: K): Promise<RGetSingle>;\n\n abstract getAll(): Promise<RGetList[]>;\n\n abstract updateOne(id: K, keyValue: { [key: string]: any }): Promise<RGetSingle>;\n\n abstract deleteOne(id: K): Promise<void>;\n\n abstract insertOne(entity: RCreate): Promise<K>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>>;\n}\n\nexport class AXPEntityDataProviderImpl<\n K = any,\n T extends AXPEntityModel<K> = any,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> implements AXPEntityDataProvider<K, T, RCreate, RGetSingle, RGetList> {\n constructor(\n private storageService: AXPEntityStorageService<K, T, RCreate, RGetSingle, RGetList>,\n public entityName: string\n ) { }\n\n async initial(collection: T[]): Promise<void> {\n await this.storageService.initial(this.entityName, collection);\n }\n\n getOne(id: K): Promise<RGetSingle> {\n return this.storageService.getOne(this.entityName, id);\n }\n\n getAll(): Promise<RGetList[]> {\n return this.storageService.getAll(this.entityName);\n }\n\n query(request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>> {\n return this.storageService.query(this.entityName, request);\n }\n\n updateOne(id: K, keyValue: { [key: string]: any }): Promise<RGetSingle> {\n return this.storageService.updateOne(this.entityName, id, keyValue);\n }\n\n deleteOne(id: K): Promise<void> {\n return this.storageService.deleteOne(this.entityName, id);\n }\n\n insertOne(entity: RCreate): Promise<K> {\n return this.storageService.insertOne(this.entityName, entity);\n }\n}\n\nexport abstract class AXMEntityCrudService<\n Id = string,\n T = any,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n abstract insertOne(request: RCreate): Promise<Id>;\n\n abstract getOne(id: Id): Promise<RGetSingle>;\n\n abstract deleteOne(id: Id): Promise<void>;\n\n abstract updateOne(id: Id, values: { [key: string]: any }): Promise<void>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<RGetList>>;\n}\n\nexport class AXMEntityCrudServiceImpl<\n Id,\n T extends AXPEntityModel<Id>,\n RCreate = Omit<T, 'id'>,\n RGetSingle = T,\n RGetList = RGetSingle\n> {\n private _storageService = inject(AXPEntityStorageService);\n private _entityDataProvider = new AXPEntityDataProviderImpl<Id, T, RCreate, RGetSingle, RGetList>(\n this._storageService,\n this.entityName\n );\n\n constructor(private entityName: string) { }\n\n async insertOne(request: RCreate): Promise<Id> {\n return this._entityDataProvider.insertOne(request);\n }\n\n async getOne(id: Id): Promise<RGetSingle> {\n return this._entityDataProvider.getOne(id);\n }\n\n async deleteOne(id: Id): Promise<void> {\n return this._entityDataProvider.deleteOne(id);\n }\n\n async updateOne(id: Id, values: { [key: string]: any }): Promise<RGetSingle> {\n return this._entityDataProvider.updateOne(id, values);\n }\n\n async query(request: AXPQueryRequest = { skip: 0, take: 100 }): Promise<AXPPagedListResult<RGetList>> {\n return this._entityDataProvider.query(request);\n }\n\n // get entityDataProvider() {\n // return this._entityDataProvider;\n // }\n\n get storageService() {\n return this._storageService;\n }\n}\n","import { AXDataSourceOperator } from '@acorex/components/common';\nimport { Injectable } from '@angular/core';\n\nexport abstract class AXPCustomOperatorService {\n abstract getCustomOperators(): { [key: string]: AXDataSourceOperator };\n}\n\n@Injectable()\nexport class AXPCustomOperatorServiceImpl extends AXPCustomOperatorService {\n getCustomOperators(): { [key: string]: AXDataSourceOperator } {\n return {};\n }\n}\n","import { AXDataSourceFilterOption, AXDataSourceOperator } from '@acorex/components/common';\nimport { inject, Injectable } from '@angular/core';\nimport { ALL_DEFAULT_OPERATORS } from '../app';\nimport { AXPCustomOperatorService } from './operators.service';\n\nexport abstract class AXPFilterOperatorMiddlewareService {\n /**\n * Middleware to transform selected filters into corresponding operators.\n * @param filters Array of selected filters (e.g., user input).\n * @param customOperators Optional custom operators map to override default operators.\n * @returns Transformed filters based on custom or default operators.\n */\n abstract transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[];\n\n /**\n * Helper method to transform a single filter. This handles recursion for nested filters.\n * @param filter A single filter object.\n * @returns Transformed filter.\n */\n abstract transformFilter(filters: AXDataSourceFilterOption): AXDataSourceFilterOption;\n\n abstract getOperator(key: string): AXDataSourceOperator;\n}\n\n@Injectable()\nexport class AXPFilterOperatorMiddlewareServiceImpl extends AXPFilterOperatorMiddlewareService {\n private customOperatorService = inject(AXPCustomOperatorService);\n\n private operators: { [key: string]: AXDataSourceOperator } = {\n ...this.getDefaultOperators(),\n ...this.customOperatorService.getCustomOperators(),\n };\n\n transformFilters(filters: AXDataSourceFilterOption[]): AXDataSourceFilterOption[] {\n return filters.map((filter) => this.transformFilter(filter));\n }\n\n transformFilter(filter: AXDataSourceFilterOption): AXDataSourceFilterOption {\n const { operator, value, filters, field } = filter;\n // Find the operator (either default or custom)\n const filterOperator = this.operators[operator?.type] || null;\n\n // Start by transforming the filter itself\n const transformedFilter: AXDataSourceFilterOption = {\n ...filter, // Keep the original filter structure\n operator: filterOperator ? filterOperator : operator, // Add operator name\n };\n\n // If the filter contains nested filters, recursively transform them\n if (filters && filters.length > 0) {\n transformedFilter.filters = this.transformFilters(filters); // Recursively transform nested filters\n }\n\n return transformedFilter;\n }\n\n getOperator(key: string) {\n return this.operators[key];\n }\n\n // Helper function to return the default operators\n private getDefaultOperators(): { [key: string]: AXDataSourceOperator } {\n return ALL_DEFAULT_OPERATORS.reduce((acc, operator) => {\n acc[operator.name] = {\n type: operator.name as any,\n };\n return acc;\n }, {} as { [key: string]: AXDataSourceOperator });\n }\n}\n","import { Injectable, Injector } from \"@angular/core\";\nimport { AXPErrorHandler } from \"./error-handler.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPErrorHandlerRegistryService {\n private errorHandlers: AXPErrorHandler[] = [];\n\n constructor(private injector: Injector) {\n }\n\n register(...plugins: (new () => AXPErrorHandler)[]) {\n plugins.forEach(t => {\n const childInjector = Injector.create({ providers: [{ provide: t, useClass: t, deps: [] }], parent: this.injector });\n const handler = childInjector.get(t);\n if (handler) {\n this.errorHandlers.push(handler);\n }\n })\n }\n\n\n public get handlers(): AXPErrorHandler[] {\n return this.errorHandlers;\n }\n}","import { ErrorHandler, Injectable, Injector } from \"@angular/core\";\nimport { AXPErrorHandlerRegistryService } from \"./error-handler-registry.service\";\n\n@Injectable({ providedIn: 'root' })\nexport class AXPGlobalErrorHandler extends ErrorHandler {\n\n\n\n constructor(private injector: Injector, private registry: AXPErrorHandlerRegistryService) {\n super()\n }\n\n override handleError(error: Error) {\n const handleErrorRecursively = (index: number, error: any) => {\n const errorHandlers = this.registry.handlers;\n if (index < errorHandlers.length) {\n errorHandlers[index].handleError(error, (err) => {\n handleErrorRecursively(index + 1, err);\n });\n } else {\n super.handleError(error); // Fallback to default handler\n }\n };\n if (error.message?.startsWith('NG0100')) {\n //ignore it\n return\n }\n handleErrorRecursively(0, error);\n }\n}\n","// src/app/directives/grid-layout.directive.ts\n\nimport { Directive, Input, ElementRef, Renderer2, OnChanges, SimpleChanges } from '@angular/core';\nimport { AXPGridLayoutOptions, AXPGridLayoutPositions } from './grid-layout.types';\n\n@Directive({\n selector: '[gridLayout]',\n standalone: true,\n})\nexport class AXPGridLayoutDirective implements OnChanges {\n @Input('gridLayout') options: AXPGridLayoutOptions;\n\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n this.applyTailwindClasses();\n }\n }\n\n private applyTailwindClasses(): void {\n // Clear existing grid classes\n this.clearClasses();\n\n // Apply new grid classes based on the input options\n this.setClasses(this.options.positions?.default, '');\n this.setClasses(this.options.positions?.md, 'md:');\n this.setClasses(this.options.positions?.lg, 'lg:');\n this.setClasses(this.options.positions?.xl, 'xl:');\n this.setClasses(this.options.positions?.xxl, '2xl:');\n }\n\n private setClasses(positions: AXPGridLayoutPositions | undefined, prefix: string): void {\n if (positions == null) return;\n\n const colStart = positions.colStart ? `${prefix}ax-col-start-${positions.colStart}` : '';\n const colEnd = positions.colEnd ? `${prefix}ax-col-end-${positions.colEnd}` : '';\n const colSpan = positions.colSpan ? `${prefix}ax-col-span-${positions.colSpan}` : '';\n const rowStart = positions.rowStart ? `${prefix}ax-row-start-${positions.rowStart}` : '';\n const rowEnd = positions.rowEnd ? `${prefix}ax-row-end-${positions.rowEnd}` : '';\n const rowSpan = positions.rowSpan ? `${prefix}ax-row-span-${positions.rowSpan}` : '';\n const order = positions.order ? `${prefix}ax-order-${positions.order}` : ''; // Handling order\n\n [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {\n if (cls) {\n this.renderer.addClass(this.el.nativeElement, cls);\n }\n });\n }\n\n private clearClasses(): void {\n const currentClasses = this.el.nativeElement.className.split(' ');\n currentClasses.forEach((className: string) => {\n if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n });\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[axpSticky]',\n exportAs: 'axpSticky',\n standalone: true,\n})\nexport class AXPStickyDirective {\n @Input('axpSticky') stickyClass!: string;\n @Input('stickyOffset') stickyOffset: number = 100;\n\n @Output() isStickyChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private _isSticky: boolean = false;\n public get isSticky(): boolean {\n return this._isSticky;\n }\n public set isSticky(value: boolean) {\n if (this._isSticky !== value) {\n this._isSticky = value;\n this.isStickyChange.emit(value);\n }\n }\n\n private topOffset!: number;\n private parentElement!: HTMLElement | Window;\n private targetElement!: HTMLElement;\n private mutationObserver!: MutationObserver;\n\n @Input() stickyParent!: string | HTMLElement;\n @Input() stickyTarget!: string;\n\n constructor(\n private element: ElementRef<HTMLDivElement>,\n private renderer: Renderer2,\n private zone: NgZone,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit() {\n this.initSticky();\n\n // Add mutation observer for dynamic content\n this.mutationObserver = new MutationObserver(() => {\n this.updateTopOffset();\n });\n\n this.mutationObserver.observe(this.element.nativeElement, {\n childList: true,\n subtree: true,\n });\n\n // Add resize event listener\n window.addEventListener('resize', this.updateTopOffset.bind(this));\n }\n\n private initSticky() {\n if (this.stickyParent instanceof HTMLElement) {\n this.parentElement = this.stickyParent;\n } else {\n this.parentElement =\n (document.querySelector(this.stickyParent) as HTMLElement) || window;\n }\n\n this.targetElement =\n (document.querySelector(this.stickyTarget) as HTMLElement) ||\n this.element.nativeElement;\n\n this.updateTopOffset();\n this.parentElement.addEventListener('scroll', this.onParentScroll);\n }\n\n private updateTopOffset(): void {\n this.zone.runOutsideAngular(() => {\n const rect = this.targetElement.getBoundingClientRect();\n this.topOffset = rect.top + (window.scrollY || 0);\n });\n }\n\n private onParentScroll = (): void => {\n this.zone.runOutsideAngular(() => {\n const scrollTop =\n this.parentElement === window\n ? window.scrollY\n : (this.parentElement as HTMLElement).scrollTop;\n\n const shouldStick = scrollTop + this.stickyOffset >= this.topOffset;\n\n if (shouldStick !== this.isSticky) {\n this.zone.run(() => {\n this.isSticky = shouldStick;\n this.toggleStickyClasses(shouldStick);\n this.cdr.markForCheck();\n });\n }\n });\n };\n\n private toggleStickyClasses(isSticky: boolean): void {\n const classes = this.stickyClass.split(' ').filter(Boolean);\n classes.forEach((className) => {\n if (isSticky) {\n this.renderer.addClass(this.targetElement, className);\n } else {\n this.renderer.removeClass(this.targetElement, className);\n }\n });\n }\n\n ngOnDestroy() {\n this.parentElement.removeEventListener('scroll', this.onParentScroll);\n window.removeEventListener('resize', this.updateTopOffset.bind(this));\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n}\n","import { Injectable, Injector } from \"@angular/core\";\nimport { AXPComponentSlotConfig } from \"./component-slot.types\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXPComponentSlotRegistryService {\n\n private registry = new Map<string, AXPComponentSlotConfig[]>();\n\n register(slotName: string, config: AXPComponentSlotConfig) {\n let configs = this.registry.get(slotName) || [];\n\n // Check if the component is already registered in this slot\n const isDuplicate = configs.some(existingConfig => existingConfig.name === config.name);\n\n if (!isDuplicate) {\n configs = [...configs, config]; // Add the new configuration\n this.registry.set(slotName, configs);\n }\n }\n\n get(slotName: string): AXPComponentSlotConfig[] {\n return this.registry.get(slotName) || [];\n }\n}","import { Injectable, Injector, Type, ViewContainerRef, runInInjectionContext } from '@angular/core';\nimport { sortBy } from 'lodash-es';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPComponentSlotLoaderService {\n constructor(private registryService: AXPComponentSlotRegistryService, private injector: Injector) {}\n\n loadComponent(slotName: string, viewContainerRef: ViewContainerRef) {\n const configs = sortBy(this.registryService.get(slotName), (c) => c.priority ?? 0);\n if (configs) {\n viewContainerRef.clear();\n configs.forEach(async (config) => {\n let component!: Type<any> | null | undefined;\n let options: { [key: string]: unknown } = {};\n if (typeof config.loadComponent === 'function') {\n // If component is a function\n runInInjectionContext(this.injector, () => {\n component = config.loadComponent?.();\n });\n } else if (config.component) {\n // If component is a Type\n component = config.component;\n }\n //\n if (typeof config.options === 'function') {\n // If options is a function\n runInInjectionContext(this.injector, () => {\n const fun = config.options as Function;\n options = fun();\n });\n } else if (config.options) {\n // If options is a object\n options = config.options;\n }\n //\n if (component != null) {\n const componentRef = viewContainerRef.createComponent(component);\n Object.assign(componentRef.instance, options);\n }\n });\n }\n }\n}\n","import { Directive, Input, OnInit, ViewContainerRef } from '@angular/core';\nimport { AXPComponentSlotLoaderService } from './component-slot-loader.service';\n\n@Directive({\n selector: 'axp-component-slot',\n standalone: false\n})\nexport class AXPComponentSlotDirective implements OnInit {\n @Input()\n name!: string;\n\n constructor(private dynamicLoaderService: AXPComponentSlotLoaderService, public viewContainerRef: ViewContainerRef) { }\n\n ngOnInit() {\n this.dynamicLoaderService.loadComponent(this.name, this.viewContainerRef);\n }\n}","import { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { AXPComponentSlotModuleConfigs } from './component-slot.types';\nimport { AXPComponentSlotRegistryService } from './component-slot-registery.service';\nimport { AXPComponentSlotDirective } from './component-slot.directive';\n\n@NgModule({\n declarations: [AXPComponentSlotDirective],\n exports: [AXPComponentSlotDirective]\n})\nexport class AXPComponentSlotModule {\n\n static forRoot(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n ]\n };\n }\n\n static forChild(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule> {\n return {\n ngModule: AXPComponentSlotModule,\n providers: [\n {\n provide: 'AXPComponentSlotModuleFactory',\n useFactory: (registry: AXPComponentSlotRegistryService) => () => {\n if (configs) {\n for (const [key, value] of Object.entries(configs)) {\n value.forEach(v => {\n registry.register(key, v);\n })\n }\n }\n },\n deps: [AXPComponentSlotRegistryService],\n multi: true\n }\n\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPComponentSlotModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n\n}\n","import { Type } from '@angular/core';\n\nexport interface AXPLogoConfig {}\nexport class AXPTextLogoConfig implements AXPLogoConfig {\n constructor(public text: string) {}\n}\nexport class AXPImageUrlLogoConfig implements AXPLogoConfig {\n constructor(public url: string) {}\n}\nexport class AXPFontIconLogoConfig implements AXPLogoConfig {\n constructor(public iconClass: Type<any>) {}\n}\n\nexport class AXPComponentLogoConfig implements AXPLogoConfig {\n constructor(public component: Type<any>) {}\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\n\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { AXPComponentLogoConfig, AXPFontIconLogoConfig, AXPImageUrlLogoConfig, AXPTextLogoConfig } from './logo.types';\n\n@Component({\n selector: 'axp-logo',\n templateUrl: `logo.component.html`,\n imports: [CommonModule, AXImageModule, AXDecoratorModule],\n host: { 'class': 'ax-flex ax-justify-center' }\n})\nexport class AXPLogoComponent {\n\n @Input()\n source!: any;\n\n protected logoType!: string;\n\n ngOnInit(): void {\n switch (true) {\n case this.source instanceof AXPTextLogoConfig:\n this.logoType = 'text';\n break;\n case this.source instanceof AXPImageUrlLogoConfig:\n this.logoType = 'url';\n break;\n case this.source instanceof AXPFontIconLogoConfig:\n this.logoType = 'iconClass';\n break;\n case this.source instanceof AXPComponentLogoConfig:\n this.logoType = 'component';\n break;\n default:\n break;\n }\n }\n}\n","@switch (logoType) {\n@case ('text') {\n<span class=\"ax-font-bold ax-select-none\">{{ source.text }}</span>\n}\n@case ('url') {\n<ax-image [src]=\"source.url\"></ax-image>\n} @case ('iconClass') {\n<ax-icon class=\"{{ source.classIcon }}\"></ax-icon>\n} @case ('component') {\n<ng-container *ngComponentOutlet=\"source.component\"></ng-container>\n}\n}","import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { AXPMenuFinderResult, AXPMenuInsertion, AXPMenuItem, AXPMenuProviderContext } from './menu.types';\n\nexport interface AXPMenuProvider {\n provide(context: AXPMenuProviderContext): Promise<void>;\n}\n\nexport const AXP_MENU_PROVIDER = new InjectionToken<AXPMenuProvider[]>('AXP_MENU_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPMenuProviderService {\n\n private providers = inject(AXP_MENU_PROVIDER, { optional: true });\n private cache: AXPMenuItem[] | null = null;\n private pendingInserts: Array<{ target: string; newItems: AXPMenuItem[]; position: AXPMenuInsertion }> = [];\n private pendingRemovals: string[] = [];\n private pendingUpdates: Array<{ target: string; updatedItem: Partial<AXPMenuItem> }> = [];\n private pendingAdditions: Array<{ target: string; newItems: AXPMenuItem[] }> = [];\n\n async items(): Promise<AXPMenuItem[]> {\n // Return cached items if available\n if (this.cache) {\n return this.cache;\n }\n\n const items: AXPMenuItem[] = [];\n const context = this.createMenuProviderContext(items);\n\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n await provider.provide(context);\n }\n }\n\n // Apply pending operations\n this.applyPendingOperations(items);\n\n // Cache the computed items\n this.cache = items;\n return items;\n }\n\n private createMenuProviderContext(items: AXPMenuItem[]): AXPMenuProviderContext {\n return {\n addItems: (newItems: AXPMenuItem[]) => {\n items.push(...newItems);\n },\n find: (target: string): AXPMenuFinderResult => {\n return {\n insert: (newItems: AXPMenuItem[], position: AXPMenuInsertion) => {\n this.pendingInserts.push({ target, newItems, position });\n },\n remove: () => {\n this.pendingRemovals.push(target);\n },\n update: (updatedItem: Partial<AXPMenuItem>) => {\n this.pendingUpdates.push({ target, updatedItem });\n },\n addItems: (newItems: AXPMenuItem[]) => {\n this.pendingAdditions.push({ target, newItems });\n }\n };\n }\n };\n }\n\n private applyPendingOperations(items: AXPMenuItem[]): void {\n for (const { target, newItems, position } of this.pendingInserts) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem, parentItems } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, appending items.`);\n items.push(...newItems);\n } else {\n if (position == 'inside') {\n foundItem.children?.push(...newItems)\n }\n else {\n const index = parentItems.indexOf(foundItem);\n const insertPosition = position === 'before' ? index : index + 1;\n parentItems.splice(insertPosition, 0, ...newItems);\n }\n }\n }\n\n for (const target of this.pendingRemovals) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem, parentItems } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, nothing to remove.`);\n } else {\n const index = parentItems.indexOf(foundItem);\n parentItems.splice(index, 1);\n }\n }\n\n for (const { target, updatedItem } of this.pendingUpdates) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, nothing to update.`);\n } else {\n Object.assign(foundItem, updatedItem);\n }\n }\n\n for (const { target, newItems } of this.pendingAdditions) {\n const foundItemInfo = this.findItemWithParent(items, target);\n const { foundItem } = foundItemInfo;\n if (!foundItem) {\n console.warn(`Target \"${target}\" not found, nothing to add items to.`);\n } else {\n if (!foundItem.children) {\n foundItem.children = [];\n }\n foundItem.children.push(...newItems);\n }\n }\n\n // Clear pending operations after applying them\n this.pendingInserts = [];\n this.pendingRemovals = [];\n this.pendingUpdates = [];\n this.pendingAdditions = [];\n }\n\n private findItemWithParent(items: AXPMenuItem[], target: string, parentItems: AXPMenuItem[] = items): { foundItem: AXPMenuItem | null, parentItems: AXPMenuItem[] } {\n for (const item of items) {\n if (item.name === target) {\n return { foundItem: item, parentItems };\n }\n\n if (item.children) {\n const result = this.findItemWithParent(item.children, target, item.children);\n if (result.foundItem) {\n return result;\n }\n }\n }\n return { foundItem: null, parentItems: items };\n }\n\n // Method to clear the cache, if needed (e.g., when providers change)\n clearCache(): void {\n this.cache = null;\n this.pendingInserts = [];\n this.pendingRemovals = [];\n this.pendingUpdates = [];\n this.pendingAdditions = [];\n }\n}\n","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { patchState, signalStore, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { AXPMenuItem } from './menu.types';\nimport { AXPMenuProviderService } from './menu.provider';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPNavigateActionCommand } from '@acorex/platform/core';\n\nexport const AXPMenuService = signalStore(\n { providedIn: 'root' },\n\n // Initial State\n withState((router = inject(Router)) => {\n return {\n items: [] as AXPMenuItem[],\n selectedMenuItem: {\n item: null as AXPMenuItem | null,\n isFullMatch: false\n },\n };\n }),\n\n // Methods for State Management\n withMethods((store, router = inject(Router), workflow = inject(AXPWorkflowService)) => {\n\n\n return {\n\n setMenuItems(items: AXPMenuItem[]): void {\n patchState(store, { items: items });\n },\n\n selectMenuItemByRoute(path: string): void {\n const findItem = (items: AXPMenuItem[]): { item: AXPMenuItem | null, isPartialMatch: boolean } => {\n for (const item of items) {\n // Recursively search children first\n if (item.children) {\n const foundChild = findItem(item.children);\n if (foundChild.item) {\n return foundChild;\n }\n }\n if (item.path) {\n // Check if the item path matches the current path\n const matchResult = pathsMatch(item.path, path, [\"list\", \"view\", \"edit\", \"create\"]);\n if (matchResult.isMatch) {\n return { item, isPartialMatch: matchResult.isPartial };\n }\n }\n }\n return { item: null, isPartialMatch: false };\n };\n\n const pathsMatch = (\n itemPath: string,\n currentPath: string,\n trailingSegmentsToIgnore: string[] = []\n ): { isMatch: boolean, isPartial: boolean } => {\n const itemSegments = itemPath.split('/').filter(segment => segment.length > 0);\n const pathSegments = currentPath.split('/').filter(segment => segment.length > 0);\n\n const menuLength = itemSegments.length;\n const pathLength = pathSegments.length;\n\n // Identify the effective base length for the menuPath\n let effectiveMenuLength = menuLength;\n if (\n menuLength > 0 &&\n trailingSegmentsToIgnore.includes(itemSegments[menuLength - 1])\n ) {\n effectiveMenuLength--; // Exclude trailing non-hierarchical segments\n }\n\n // Check if the menuPath (base segments) is a prefix of browserPath\n let isPrefix = true;\n for (let i = 0; i < effectiveMenuLength; i++) {\n if (itemSegments[i] !== pathSegments[i]) {\n isPrefix = false;\n break;\n }\n }\n\n // Partial match: menuPath base is a strict prefix of browserPath\n const isPartialMatch = isPrefix && effectiveMenuLength < pathLength;\n\n // Exact match: all segments match completely\n const isExactMatch = isPrefix && effectiveMenuLength === pathLength;\n\n return {\n isMatch: isExactMatch || isPartialMatch,\n isPartial: isPartialMatch && !isExactMatch,\n };\n };\n\n\n const items = store.items();\n const { item, isPartialMatch } = findItem(items);\n patchState(store, { selectedMenuItem: { item, isFullMatch: !isPartialMatch } });\n },\n\n executeCommand(item: AXPMenuItem): void {\n if (item.path) {\n workflow.execute('navigate', { type: 'router', options: { path: item.path } } as AXPNavigateActionCommand<'router'>);\n }\n if (item.command) {\n workflow.execute('navigate', item.command);\n }\n patchState(store, { selectedMenuItem: { item, isFullMatch: true } });\n },\n\n isItemOpen(item: AXPMenuItem): boolean {\n const selectedItem = store.selectedMenuItem();\n if (!selectedItem) {\n return false;\n }\n\n const findParent = (currentItem: AXPMenuItem, targetItem: AXPMenuItem): boolean => {\n if (currentItem.children?.includes(targetItem)) {\n return true;\n }\n return currentItem.children?.some(child => findParent(child, targetItem)) ?? false;\n };\n\n return item === selectedItem?.item || findParent(item, selectedItem.item!);\n }\n };\n }),\n withHooks((store, menuProviderService = inject(AXPMenuProviderService)) => ({\n onInit() {\n (async () => {\n const items = await menuProviderService.items();\n patchState(store, { items: items });\n })();\n },\n onDestroy() {\n\n },\n }))\n);","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '../../search';\n\nexport class AXPMenuSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('menu', 'Menu', 'menu', 'fa-thin fa-bars', 2, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { inject } from '@angular/core';\nimport { omit, sortBy } from 'lodash-es';\nimport { AXPSearchProvider, AXPSearchResult } from '../../search';\nimport { AXPMenuProviderService } from './menu.provider';\nimport { AXPMenuItem } from './menu.types';\n\nexport interface AXPMenuItemWithParent extends AXPMenuItem {\n parent?: AXPMenuItem;\n}\n\nexport class AXPMenuSearchProvider implements AXPSearchProvider {\n menuService = inject(AXPMenuProviderService);\n translateService = inject(AXTranslationService);\n\n async search(text: string): Promise<AXPSearchResult[]> {\n const menuItems = await this.searchMenuItems(await this.menuService.items(), text);\n return sortBy<AXPSearchResult>(\n menuItems.map<AXPSearchResult>((item) => ({\n group: 'menu', // Use `name` or empty string if undefined\n title: item.text, // Use `text` for the `title`\n icon: item.icon, // Include the `icon` if present\n data: omit(item, ['parent', 'children']), // Include all data except `parent` and `children`\n commands: {\n navigate: {\n ...(item.command ?? {\n type: 'router',\n options: {\n path: item.path,\n },\n }),\n },\n },\n parent: item.parent\n ? {\n title: item.parent.text,\n }\n : undefined,\n })),\n [(o) => this.translateService.translateSync(o.title!)]\n );\n }\n\n /**\n * Recursively searches AXPMenuItem and its children for a matching text.\n *\n * @param menuItems - The array of AXPMenuItem to search in.\n * @param searchText - The text to search for (case-insensitive).\n * @returns An array of AXPMenuItem that match the search text.\n */\n private async searchMenuItems(menuItems: AXPMenuItem[], searchText: string): Promise<AXPMenuItemWithParent[]> {\n const result: AXPMenuItemWithParent[] = [];\n\n for (const item of menuItems) {\n // Check if the current item's text matches the search text\n if (\n item.type != 'group' &&\n (item.children?.length ?? 0) == 0 &&\n (await this.translateService.translateAsync(item.text)).toLowerCase().includes(searchText.toLowerCase())\n ) {\n result.push(item as AXPMenuItemWithParent);\n }\n\n // Recursively search in children if they exist\n if (item.children && item.children.length > 0) {\n const childResults = await this.searchMenuItems(item.children, searchText);\n result.push(...childResults.map((x) => ({ ...x, parent: item } as AXPMenuItemWithParent)));\n }\n }\n\n return result;\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n template: `\n <small class=\"ax-text-sm\" [innerHTML]=\"text\"></small>\n `,\n standalone: true\n})\nexport class AXPFooterTextSlotComponent {\n @Input()\n public text!: string;\n}","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\nimport { AXPMenuItem } from '../../../menu';\n\n@Component({\n template: `\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-5\">\n <a *ngFor=\"let link of items\" (click)=\"handleCommand(link.command)\" >{{ link.text }}</a>\n </div>\n `,\n imports: [CommonModule],\n encapsulation: ViewEncapsulation.None\n})\nexport class AXPNavBarSlotComponent {\n @Input()\n public items!: AXPMenuItem[];\n\n private store = inject(Store)\n\n protected handleCommand(action?: Action) {\n if (action)\n this.store.dispatch(action)\n }\n}","import { AXPSearchAction, AXPSearchDefinition, AXPSearchDefinitionDisplayFormat } from './search.types';\n\nexport class AXPSearchDefinitionProviderContext {\n private definitions: AXPSearchDefinition[] = [];\n private definitionMap: Map<string, AXPSearchDefinition> = new Map();\n\n addDefinition(\n name: string,\n title: string,\n group: string,\n icon: string,\n order: number,\n options?: {\n format?: AXPSearchDefinitionDisplayFormat;\n actions?: AXPSearchAction[];\n }\n ): AXPSearchDefinitionBuilder {\n const definitionSearch: AXPSearchDefinition = {\n name,\n title,\n group,\n icon,\n order,\n format: {\n title: options?.format?.title ?? '{{ title }}',\n description: options?.format?.description ?? undefined,\n icon: options?.format?.icon ?? undefined,\n id: options?.format?.id ?? '{{ id }}',\n },\n actions: options?.actions ?? [],\n };\n\n this.definitions.push(definitionSearch);\n this.definitionMap.set(name, definitionSearch); // Index by name\n return new AXPSearchDefinitionBuilder(this, definitionSearch);\n }\n\n definition(name: string): AXPSearchDefinitionBuilder | null {\n const foundDefinition = this.definitionMap.get(name);\n if (!foundDefinition) {\n throw new Error(`definition with name \"${name}\" not found.`);\n }\n return new AXPSearchDefinitionBuilder(this, foundDefinition);\n }\n\n getDefinitions(): AXPSearchDefinition[] {\n return this.definitions;\n }\n\n // Expose groupMap for controlled access\n hasEntity(name: string): boolean {\n return this.definitionMap.has(name);\n }\n\n getDefinition(name: string): AXPSearchDefinition | undefined {\n return this.definitionMap.get(name);\n }\n}\n\nexport class AXPSearchDefinitionBuilder {\n private context: AXPSearchDefinitionProviderContext;\n private definition: AXPSearchDefinition;\n\n constructor(context: AXPSearchDefinitionProviderContext, definition: AXPSearchDefinition) {\n this.context = context;\n this.definition = definition;\n }\n\n addAction(name: string): AXPSearchDefinitionActionBuilder {\n const newAction: AXPSearchAction = {\n name,\n type: 'view',\n priority: 'primary',\n };\n this.definition.actions.push(newAction);\n return new AXPSearchDefinitionActionBuilder(this);\n }\n\n action(name: string): AXPSearchDefinitionActionBuilder | null {\n const foundAction = this.definition.actions.find((action) => action.name === name);\n if (!foundAction) {\n throw new Error(`action with name \"${name}\" not found in entity \"${this.definition.name}\".`);\n }\n return new AXPSearchDefinitionActionBuilder(this);\n }\n\n endEntity(): AXPSearchDefinitionProviderContext {\n return this.context;\n }\n}\n\nexport class AXPSearchDefinitionActionBuilder {\n private entityBuilder: AXPSearchDefinitionBuilder;\n\n constructor(entityBuilder: AXPSearchDefinitionBuilder) {\n this.entityBuilder = entityBuilder;\n }\n\n endAction(): AXPSearchDefinitionBuilder {\n return this.entityBuilder;\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { AXPSearchDefinitionProviderContext } from './search-definition.builder';\nimport { AXPSearchDefinition } from './search.types';\n\n// Interface for setting providers\nexport interface AXPSearchDefinitionProvider {\n provide(context: AXPSearchDefinitionProviderContext): Promise<void>;\n}\n\n// Injection token for setting providers\nexport const AXP_SEARCH_DEFINITION_PROVIDER = new InjectionToken<AXPSearchDefinitionProvider[]>(\n 'AXP_SEARCH_DEFINITION_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPSearchDefinitionProviderService {\n private providers = inject(AXP_SEARCH_DEFINITION_PROVIDER, { optional: true });\n private cache: AXPSearchDefinition[] | null = null;\n\n private async load(): Promise<void> {\n if (this.cache) {\n return;\n }\n const context = new AXPSearchDefinitionProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n await provider.provide(context);\n }\n }\n this.cache = context.getDefinitions();\n }\n\n public async getListAsync(): Promise<AXPSearchDefinition[]> {\n await this.load();\n return this.getList();\n }\n\n public getList(): AXPSearchDefinition[] {\n if (!this.cache) {\n return [];\n } else {\n return this.cache;\n }\n }\n\n public findDefinition(definitionName: string): AXPSearchDefinition {\n const definition = this.getList().find((definition) => definition.name === definitionName);\n if (!definition) {\n throw new Error(`Definition with name ${definitionName} not found`);\n }\n return definition;\n }\n\n public findDefinitionByGroup(definitionGroup: string): AXPSearchDefinition {\n const definition = this.getList().find((definition) => definition.group === definitionGroup);\n if (!definition) {\n throw new Error(`Definition with group ${definitionGroup} not found`);\n }\n return definition;\n }\n}\n","import { AXPSearchResult } from './search.types';\n\n// Interface for setting providers\nexport interface AXPSearchProvider {\n search(text: string): Promise<AXPSearchResult[]>;\n}\n\nexport abstract class AXPSearchCommandProvider {\n abstract commands: AXPSearchResult[];\n\n async search(text: string): Promise<AXPSearchResult[]> {\n return this.commands.filter((command) => command.title!.toLowerCase().includes(text.toLowerCase()));\n }\n}\n","import { AXFormatService } from '@acorex/core/format';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { omit } from 'lodash-es';\nimport { AXPSearchDefinitionProviderService } from './search-definition.provider';\nimport { AXPSearchProvider } from './search.provider';\nimport { AXPSearchDisplayGroupResult, AXPSearchDisplayResult } from './search.types';\n\n// Injection token for setting providers\nexport const AXP_SEARCH_PROVIDER = new InjectionToken<AXPSearchProvider[]>('AXP_SEARCH_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPSearchService {\n private providers = inject(AXP_SEARCH_PROVIDER, { optional: true });\n private definitionService = inject(AXPSearchDefinitionProviderService);\n private formatService = inject(AXFormatService);\n\n async search(text: string): Promise<AXPSearchDisplayGroupResult[]> {\n //TODO better handle this\n if (this.definitionService.getList().length == 0) {\n await this.definitionService.getListAsync();\n }\n\n if (!this.providers || (this.providers?.length || 0) === 0) {\n throw new Error('No search providers available'); // No providers available\n }\n\n const mergeData: AXPSearchDisplayResult[] = [];\n const promises = this.providers.map((provider) => provider.search(text));\n const results = await Promise.all(promises);\n for (const resultArray of results) {\n for (const result of resultArray) {\n try {\n const definition = this.definitionService.findDefinition(result.group);\n\n mergeData.push({\n definitionName: definition.group,\n definitionTitle: definition.title,\n name: result.group,\n id: `${definition.name}:${this.formatService.format(definition.format.id, 'string', result)}`,\n title:\n result.title ??\n (definition.format.title\n ? this.formatService.format(definition.format.title, 'string', result.data)\n : 'Unknown'),\n description:\n result.description ??\n (definition.format.description\n ? this.formatService.format(definition.format.description, 'string', result.data)\n : undefined),\n icon:\n result.icon ??\n (result.icon\n ? this.formatService.format(definition.format.icon, 'string', result.data)\n : definition.icon),\n data: result.data,\n commands: result.commands,\n actions: definition.actions,\n parent: result.parent,\n order: definition.order,\n });\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n // Group data\n const groupedData: AXPSearchDisplayGroupResult[] = [];\n const groupMap: { [key: string]: AXPSearchDisplayGroupResult } = {};\n\n // Create groups\n for (const item of mergeData) {\n const groupName = item.definitionName!; // Change this to the property you want to group by\n if (!groupMap[groupName]) {\n groupMap[groupName] = {\n name: groupName,\n title: item.definitionTitle!, // You can adjust the title logic if needed\n order: item.order, // Add order to the group\n children: [],\n };\n groupedData.push(groupMap[groupName]);\n }\n groupMap[groupName].children.push(omit(item, ['definitionName', 'definitionTitle', 'order']));\n }\n\n // Sort groups by order\n groupedData.sort((a, b) => a.order - b.order);\n\n return groupedData;\n }\n}\n","import { AXPWidgetNode } from '@acorex/platform/layout/builder';\n\n\nexport interface AXPSettingValueProvider {\n get scope(): AXPSettingScope;\n load(): Promise<AXPSettingValue[]>\n set(key: string, value: any): Promise<void>;\n set(values: Record<string, any>): Promise<void>; // Overload for bulk updates\n}\n\n\n// Interface for a single setting's value\nexport interface AXPSettingValue {\n key: string;\n value: any;\n}\n\nexport interface AXPSettingChangedEvent {\n scope: AXPSettingScope,\n keys: string[];\n values: Record<string, any>;\n entries: AXPSettingValue[];\n}\n\nexport type AXPSettingScopeKey = 'C' | 'G' | 'T' | 'U';\nexport enum AXPSettingScope {\n Environment = 'C',\n Global = 'G',\n Tenant = 'T',\n User = 'U'\n};\n\n// Interface for a single setting definition\nexport interface AXPSettingDefinition {\n name: string;\n title: string;\n description?: string;\n widget: AXPWidgetNode;\n scope: AXPSettingScopeKey;\n isRequired?: boolean;\n isInherited?: boolean;\n isEncrypted?: boolean;\n defaultValue?: unknown\n value?: unknown\n}\n\n// Interface for a group of settings, which can contain nested groups and singles\nexport interface AXPSettingDefinitionGroup {\n name: string;\n title: string;\n icon?: string;\n description?: string;\n groups: AXPSettingDefinitionGroup[];\n sections: AXPSettingDefinitionSection[];\n}\n\nexport interface AXPSettingDefinitionSection {\n name: string;\n title: string;\n description?: string;\n settings: AXPSettingDefinition[];\n}\n\n\nexport interface AXPGroupSearchResult {\n breadcrumb: { name: string; title: string, description?: string }[];\n sections: AXPSettingDefinitionSection[] | null;\n groups: AXPSettingDefinitionGroup[] | null;\n}\n\n","import { AXPOptionsData, AXPValidationRules } from '@acorex/platform/core';\nimport { AXPWidgetTriggers, AXPWidgetTypesMap, AXPWidgetValueTransformFunctions } from '@acorex/platform/layout/builder';\nimport { merge } from 'lodash-es';\nimport { AXPSettingDefinition, AXPSettingDefinitionGroup, AXPSettingDefinitionSection, AXPSettingScopeKey } from './index';\n\nexport class AXPSettingDefinitionProviderContext {\n private rootGroups: AXPSettingDefinitionGroup[] = [];\n private groupMap: Map<string, AXPSettingDefinitionGroup> = new Map();\n\n addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder {\n const newGroup: AXPSettingDefinitionGroup = {\n name,\n title,\n description,\n icon,\n groups: [],\n sections: [],\n };\n\n this.rootGroups.push(newGroup);\n this.groupMap.set(name, newGroup); // Index by name\n return new AXPSettingDefinitionGroupBuilder(this, newGroup);\n }\n\n group(name: string): AXPSettingDefinitionGroupBuilder | null {\n const foundGroup = this.groupMap.get(name);\n if (!foundGroup) {\n throw new Error(`Group with name \"${name}\" not found.`);\n }\n return new AXPSettingDefinitionGroupBuilder(this, foundGroup);\n }\n\n getGroups(): AXPSettingDefinitionGroup[] {\n return this.rootGroups;\n }\n\n // Expose groupMap for controlled access\n hasGroup(name: string): boolean {\n return this.groupMap.has(name);\n }\n\n getGroup(name: string): AXPSettingDefinitionGroup | undefined {\n return this.groupMap.get(name);\n }\n}\n\nexport class AXPSettingDefinitionGroupBuilder {\n private context: AXPSettingDefinitionProviderContext;\n private group: AXPSettingDefinitionGroup;\n\n constructor(context: AXPSettingDefinitionProviderContext, group: AXPSettingDefinitionGroup) {\n this.context = context;\n this.group = group;\n }\n\n addSection(name: string, title: string, description?: string): AXPSettingDefinitionSectionBuilder {\n const newSection: AXPSettingDefinitionSection = {\n name,\n title,\n description: description,\n settings: [],\n };\n this.group.sections.push(newSection);\n return new AXPSettingDefinitionSectionBuilder(this, newSection);\n }\n\n section(name: string): AXPSettingDefinitionSectionBuilder | null {\n const foundSection = this.group.sections.find((section) => section.name === name);\n if (!foundSection) {\n throw new Error(`Section with name \"${name}\" not found in group \"${this.group.name}\".`);\n }\n return new AXPSettingDefinitionSectionBuilder(this, foundSection);\n }\n\n addGroup(name: string, title: string, description?: string, icon?: string): AXPSettingDefinitionGroupBuilder {\n const newGroup: AXPSettingDefinitionGroup = {\n name,\n title,\n description: description,\n icon,\n groups: [],\n sections: [],\n };\n this.group.groups.push(newGroup);\n if (this.context.hasGroup(name)) {\n throw new Error(`Group with name \"${name}\" already exists.`);\n }\n this.context['groupMap'].set(name, newGroup);\n return new AXPSettingDefinitionGroupBuilder(this.context, newGroup);\n }\n\n endGroup(): AXPSettingDefinitionProviderContext {\n return this.context;\n }\n}\n\nexport class AXPSettingDefinitionSectionBuilder {\n private groupBuilder: AXPSettingDefinitionGroupBuilder;\n private section: AXPSettingDefinitionSection;\n\n constructor(groupBuilder: AXPSettingDefinitionGroupBuilder, section: AXPSettingDefinitionSection) {\n this.groupBuilder = groupBuilder;\n this.section = section;\n }\n\n addSetting(setting: {\n key: string;\n title: string;\n scope: AXPSettingScopeKey;\n widget: {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n options?: AXPOptionsData;\n triggers?: AXPWidgetTriggers;\n };\n description?: string;\n isRequired?: boolean;\n isInherited?: boolean;\n isEncrypted?: boolean;\n defaultValue?: unknown;\n valueTransforms?: AXPWidgetValueTransformFunctions;\n validationRules?: AXPValidationRules;\n }): this {\n const newSetting: AXPSettingDefinition = {\n name: setting.key,\n title: setting.title,\n description: setting.description,\n isRequired: setting.isRequired ?? false,\n isInherited: setting.isInherited ?? false,\n isEncrypted: setting.isEncrypted ?? false,\n defaultValue: setting.defaultValue,\n scope: setting.scope ?? 'G',\n widget: {\n type: setting.widget.type,\n name: setting.key,\n path: setting.key,\n defaultValue: setting.defaultValue,\n options: merge(setting.widget.options ?? {},\n {\n label: setting.widget.options?.['label'] ?? setting.title,\n validationRules: setting.validationRules ?? [],\n }),\n valueTransforms: setting.valueTransforms,\n triggers: setting.widget.triggers,\n },\n } as AXPSettingDefinition;\n this.section.settings.push(newSetting);\n return this;\n }\n\n endSection(): AXPSettingDefinitionGroupBuilder {\n return this.groupBuilder;\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport {\n AXPGroupSearchResult,\n AXPSettingDefinitionGroup,\n AXPSettingScope,\n AXPSettingScopeKey,\n AXPSettingValue,\n AXPSettingValueProvider,\n} from './settings.types';\nimport { AXPSettingDefinitionProviderContext } from './setting.builder';\n\n// Interface for setting providers\nexport interface AXPSettingDefinitionProvider {\n provide(context: AXPSettingDefinitionProviderContext): Promise<void>;\n}\n\n// Injection token for setting providers\nexport const AXP_SETTING_DEFINITION_PROVIDER = new InjectionToken<AXPSettingDefinitionProvider[]>('AXP_SETTING_DEFINITION_PROVIDER');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPSettingDefinitionProviderService {\n private providers = inject(AXP_SETTING_DEFINITION_PROVIDER, { optional: true });\n private cache: AXPSettingDefinitionGroup[] | null = null;\n\n private async load(): Promise<void> {\n if (this.cache) {\n return\n }\n const context = new AXPSettingDefinitionProviderContext();\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n if (provider instanceof Promise) {\n // If provider is a promise, resolve it\n const resolvedProvider = await provider;\n await resolvedProvider.provide(context);\n } else {\n // If provider is a direct instance, use it directly\n await provider.provide(context);\n }\n }\n }\n this.cache = context.getGroups();\n }\n\n public async getListAsync(scope: AXPSettingScopeKey): Promise<AXPSettingDefinitionGroup[]> {\n await this.load();\n return this.getList(scope);\n }\n\n public getList(scope: AXPSettingScopeKey): AXPSettingDefinitionGroup[] {\n if (!this.cache) {\n return [];\n }\n\n const scopeOrder = ['C', 'G', 'T', 'U']; // Scopes hierarchy in ascending order\n\n const filterByScope = (\n groups: AXPSettingDefinitionGroup[],\n currentScope: AXPSettingScopeKey\n ): AXPSettingDefinitionGroup[] => {\n const currentScopeIndex = scopeOrder.indexOf(currentScope);\n\n return groups\n .map((group) => ({\n ...group,\n sections: group.sections.map((section) => ({\n ...section,\n settings: section.settings.filter((setting) => {\n const settingScopeIndex = scopeOrder.indexOf(setting.scope);\n\n // Include settings where:\n // 1. The scope matches the requested scope.\n if (setting.scope === currentScope) return true;\n\n // 2. The setting scope is higher (closer to 'U') and is inherited.\n if (\n setting.isInherited &&\n settingScopeIndex > currentScopeIndex // Higher scope\n ) {\n return true;\n }\n\n // 3. Exclude settings with a lower or irrelevant scope.\n return false;\n }),\n })).filter((section) => section.settings.length > 0), // Keep only sections with settings\n groups: filterByScope(group.groups, currentScope), // Recursively filter nested groups\n }))\n .filter((group) => group.sections.length > 0 || group.groups.length > 0); // Keep groups with valid sections or nested groups\n };\n\n return filterByScope(this.cache, scope);\n }\n\n\n\n\n async defaultValues(): Promise<Record<string, unknown>> {\n const defaults: Record<string, unknown> = {};\n\n const collectDefaults = (groups: AXPSettingDefinitionGroup[]) => {\n groups.forEach((group) => {\n group.sections.forEach((section) => {\n section.settings.forEach((setting) => {\n if (setting.defaultValue !== undefined) {\n defaults[setting.name] = setting.defaultValue;\n }\n });\n });\n collectDefaults(group.groups);\n });\n };\n\n if (!this.cache) {\n await this.load();\n }\n collectDefaults(this.cache!);\n\n return defaults;\n }\n\n public findGroup(scope: AXPSettingScopeKey, groupName: string): AXPGroupSearchResult {\n return this.searchRecursive(this.getList(scope), groupName, []); // Initialize with an empty breadcrumb\n }\n\n private searchRecursive(\n groups: AXPSettingDefinitionGroup[],\n groupName: string,\n breadcrumb: { name: string; title: string }[]\n ): AXPGroupSearchResult {\n for (const group of groups) {\n const currentBreadcrumb = [...breadcrumb, { name: group.name, title: group.title, description: group.description }];\n\n // If the group name matches, return its details\n if (group.name === groupName) {\n return {\n breadcrumb: currentBreadcrumb,\n sections: group.sections.length > 0 ? group.sections : null,\n groups: group.groups.length > 0 ? group.groups : null,\n };\n }\n\n // Recursively search in nested groups\n const nestedResult = this.searchRecursive(group.groups, groupName, currentBreadcrumb);\n if (nestedResult.breadcrumb.length > 0) {\n return nestedResult;\n }\n }\n\n // If no matching group is found\n return {\n breadcrumb: [],\n groups: [],\n sections: []\n };\n }\n}\n\n\n\nexport class AXPSettingDefaultValueProvider implements AXPSettingValueProvider {\n\n private definitionProvider = inject(AXPSettingDefinitionProviderService);\n\n get scope(): AXPSettingScope {\n return AXPSettingScope.Global;\n }\n\n async load(): Promise<AXPSettingValue[]> {\n return Object.entries(await this.definitionProvider.defaultValues()).map(c => ({ key: c[0], value: c[1] }));\n }\n\n set(key: string, value: any): Promise<void>;\n set(values: Record<string, any>): Promise<void>;\n set(key: unknown, value?: unknown): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}","import { AXPSettingScope, AXPSettingValue, AXPSettingValueProvider } from \"./settings.types\";\nimport { InjectionToken } from \"@angular/core\";\n\n\n\nexport const AXP_SETTING_VALUE_PROVIDER = new InjectionToken<AXPSettingValueProvider[]>('AXP_SETTING_VALUE_PROVIDER', {\n providedIn: 'root',\n factory: () => {\n return [\n new AXPSettingValueProviderDefault(AXPSettingScope.Tenant),\n new AXPSettingValueProviderDefault(AXPSettingScope.User)\n ];\n }\n});\n\n\nclass AXPSettingValueProviderDefault implements AXPSettingValueProvider {\n private readonly cache: Map<string, any> = new Map();\n private localStorageKey: string = `AXP_SETTINGS_SCOPE(${this.scope})`;\n\n public get scope(): AXPSettingScope {\n return this._scope;\n }\n\n\n\n constructor(private _scope: AXPSettingScope) {\n }\n\n async load(): Promise<AXPSettingValue[]> {\n // Load settings from localStorage as a single key\n const storedSettings = localStorage.getItem(this.localStorageKey);\n if (storedSettings) {\n const parsedSettings: Record<string, any> = JSON.parse(storedSettings);\n Object.entries(parsedSettings).forEach(([key, value]) => {\n this.cache.set(key, value);\n });\n return Promise.resolve(Array.from(this.cache.entries()).map(c => ({ key: c[0], value: c[1] })));\n }\n return Promise.resolve([]);\n }\n\n async set(key: string, value: any): Promise<void>;\n async set(values: Record<string, any>): Promise<void>;\n async set(keyOrValues: string | Record<string, any>, value?: any): Promise<void> {\n if (typeof keyOrValues === 'string') {\n // Single value update\n this.cache.set(keyOrValues, value);\n } else {\n // Bulk update\n for (const [key, val] of Object.entries(keyOrValues)) {\n this.cache.set(key, val);\n }\n }\n await this.saveToLocalStorage();\n }\n\n private async saveToLocalStorage(): Promise<void> {\n const settingsObject: Record<string, any> = {};\n this.cache.forEach((value, key) => {\n settingsObject[key] = value;\n });\n localStorage.setItem(this.localStorageKey, JSON.stringify(settingsObject));\n }\n}","import { inject, Injectable, Injector } from '@angular/core';\nimport { cloneDeep, get } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXP_SETTING_VALUE_PROVIDER } from './settings.provider';\nimport { AXPSettingChangedEvent, AXPSettingScope, AXPSettingValue, AXPSettingValueProvider } from './settings.types';\nimport { AXPSettingDefinitionProviderService } from './setting-definition.provider';\n\nexport interface AXPSettingServiceInterface {\n load(): Promise<AXPSettingValue[]>;\n get<T = any>(key: string): Promise<T>;\n defaultValues(scope: AXPSettingScope): Promise<Record<string, unknown>>;\n scope(scope: AXPSettingScope): ScopedSettingService;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPSettingService implements AXPSettingServiceInterface {\n private readonly providers: AXPSettingValueProvider[] = inject<AXPSettingValueProvider[]>(AXP_SETTING_VALUE_PROVIDER);\n //private readonly definitionService = inject(AXPSettingDefinitionProviderService);\n private readonly injector = inject(Injector);\n\n private scopedSettingsCache: Map<string, Map<string, any>> = new Map();\n public readonly onChanged = new Subject<AXPSettingChangedEvent>();\n\n constructor() {\n // Initialize scoped caches for dynamic scopes\n const staticScopes = [AXPSettingScope.Environment, AXPSettingScope.Global, AXPSettingScope.Tenant, AXPSettingScope.User];\n staticScopes.forEach((scope) => {\n if (!this.scopedSettingsCache.has(scope)) {\n this.scopedSettingsCache.set(scope, new Map());\n }\n });\n }\n\n async load(): Promise<AXPSettingValue[]> {\n try {\n const settingsList: AXPSettingValue[] = [];\n for (const provider of this.providers) {\n const scopeCache = this.scopedSettingsCache.get(provider.scope)!;\n const providerSettings = await provider.load();\n providerSettings.forEach((setting) => {\n scopeCache.set(setting.key, setting.value);\n });\n settingsList.push(...providerSettings);\n }\n return settingsList;\n } catch (error) {\n console.error('Error loading settings', error);\n throw error;\n }\n }\n\n async get<T = any>(key: string): Promise<T> {\n if (this.scopedSettingsCache.size === 0) {\n await this.load();\n }\n const scopeOrder = [AXPSettingScope.User, AXPSettingScope.Tenant, AXPSettingScope.Global, AXPSettingScope.Environment];\n for (const scope of scopeOrder) {\n const scopeCache = this.scopedSettingsCache.get(scope);\n if (scopeCache && scopeCache.has(key)) {\n const value = scopeCache.get(key);\n if (value !== undefined && value !== null) {\n return cloneDeep(value) as T;\n }\n }\n }\n const definitionService = this.injector.get(AXPSettingDefinitionProviderService);\n const defaults = await definitionService.defaultValues();\n return get(defaults, key) as T; // Fallback if no value is found\n }\n\n async defaultValues(scope: AXPSettingScope): Promise<Record<string, unknown>> {\n let scopeOrder = [AXPSettingScope.Environment, AXPSettingScope.Global, AXPSettingScope.Tenant, AXPSettingScope.User].reverse();\n const scopeIndex = scopeOrder.indexOf(scope);\n\n if (scopeIndex === -1) {\n throw new Error(`Invalid scope: ${scope}`);\n }\n scopeOrder = scopeOrder.slice(scopeIndex + 1);\n // Accumulate defaults from the current scope and higher scopes\n const accumulatedDefaults: Record<string, unknown> = {};\n for (let i = scopeIndex; i < scopeOrder.length; i++) {\n const currentScope = scopeOrder[i];\n const scopeCache = this.scopedSettingsCache.get(currentScope);\n\n if (scopeCache) {\n scopeCache.forEach((value, key) => {\n if (!(key in accumulatedDefaults)) {\n accumulatedDefaults[key] = value;\n }\n });\n }\n }\n\n // Merge with global default values from the definition service\n const definitionService = this.injector.get(AXPSettingDefinitionProviderService);\n const globalDefaults = await definitionService.defaultValues();\n return { ...globalDefaults, ...accumulatedDefaults };\n }\n\n scope(scope: AXPSettingScope): ScopedSettingService {\n const provider = this.providers.find((p) => p.scope === scope);\n if (!provider) {\n throw new Error(`No provider found for scope: ${scope}`);\n }\n return new ScopedSettingService(this, provider, this.onChanged, this.scopedSettingsCache.get(scope)!);\n }\n}\n\nclass ScopedSettingService {\n\n constructor(\n private parent: AXPSettingService,\n private provider: AXPSettingValueProvider,\n private onChanged: Subject<AXPSettingChangedEvent>,\n private scopeCache: Map<string, any>\n ) { }\n\n async get<T = any>(key: string): Promise<T> {\n const settings = await this.provider.load();\n const setting = settings.find((s) => s.key === key);\n return setting ? cloneDeep(setting.value) : undefined;\n }\n\n async all(): Promise<any> {\n const settings = await this.provider.load();\n return Object.fromEntries(settings.map((s) => [s.key, cloneDeep(s.value)]));\n }\n\n async defaultValues(): Promise<Record<string, unknown>> {\n return this.parent.defaultValues(this.provider.scope);\n }\n\n async set<T = any>(key: string, value: T): Promise<void>;\n async set<T = any>(values: Record<string, T>): Promise<void>;\n async set<T = any>(keyOrValues: string | Record<string, T>, value?: T): Promise<void> {\n if (typeof keyOrValues === 'string') {\n // Single key-value pair\n await this.provider.set(keyOrValues, value);\n this.scopeCache.set(keyOrValues, value); // Sync the cache\n this.onChanged.next({\n scope: this.provider.scope,\n keys: [keyOrValues],\n values: { [keyOrValues]: value },\n entries: [{ key: keyOrValues, value }],\n });\n } else {\n // Multiple key-value pairs\n await this.provider.set(keyOrValues);\n Object.entries(keyOrValues).forEach(([key, val]) => this.scopeCache.set(key, val)); // Sync the cache\n const entries = Object.entries(keyOrValues).map(([key, val]) => ({ key, value: val }));\n this.onChanged.next({\n scope: this.provider.scope,\n keys: Object.keys(keyOrValues),\n values: keyOrValues,\n entries,\n });\n }\n }\n}\n","import { AXStyleColorType } from '@acorex/components/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\n//TODO Loading, Redirect, Drawer, Show toast\n\nexport const AXPRedirectEvent = createWorkFlowEvent<{ url: string }>('Redirect Event Fired');\nexport const AXPRefreshEvent = createWorkFlowEvent<{ entity: string; meta?: any }>('Refresh Event Fired');\n\n@Injectable()\nexport class AXPWorkflowNavigateAction extends AXPWorkflowAction {\n private router = inject(Router);\n async execute(context: AXPWorkflowContext): Promise<void> {\n const payload = context.getVariable('payload');\n if (Array.isArray(payload.commands)) {\n this.router.navigate(payload.commands, payload.extras);\n } else {\n if (payload.commands.toLowerCase().startsWith('http') || payload.target == 'blank') {\n window.open(payload.commands, '_blank');\n } else this.router.navigate([payload.commands], payload.extras);\n }\n }\n}\n\n@Injectable()\nexport class AXPDialogConfirmAction extends AXPWorkflowAction {\n private dialogService = inject(AXDialogService);\n private translationService = inject(AXTranslationService);\n\n title!: string;\n message!: string;\n type!: AXStyleColorType;\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n context.setOutput('result', false);\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync(this.title),\n await this.translationService.translateAsync(this.message),\n (await this.translationService.translateAsync(this.type)) as AXStyleColorType\n );\n context.setOutput('result', dialogResult.result);\n }\n}\n\n@Injectable()\nexport class AXPToastAction extends AXPWorkflowAction {\n private toastService = inject(AXToastService);\n private translationService = inject(AXTranslationService);\n\n color!: AXStyleColorType;\n title!: string;\n content!: string;\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const options = context.getVariable<any>('options');\n const process = options?.['process'];\n const showResult = process?.showResult ?? true;\n if (showResult) {\n this.toastService.show({\n color: this.color,\n title: await this.translationService.translateAsync(this.title),\n content: await this.translationService.translateAsync(this.content),\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n }\n}\n","import { AXPNavigateActionCommand } from \"@acorex/platform/core\";\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from \"@acorex/platform/workflow\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\n\n\n\n@Injectable()\nexport class AXPWorkflowRouterNavigateAction extends AXPWorkflowAction {\n\n private router = inject(Router);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const command = context.getVariable<AXPNavigateActionCommand<'router'>>();\n const path = command.options.path;\n\n if (path.toLowerCase().startsWith('http') || command.options?.extras?.target === 'blank') {\n window.open(path, '_blank');\n } else {\n const [basePathAndFragment, queryString] = path.split('?');\n const [basePath, fragment] = basePathAndFragment.split('#'); // Extract fragment if present\n const queryParams = this.parseQueryParams(queryString);\n\n this.router.navigate([basePath], {\n ...command.options.extras,\n queryParams, // Pass query parameters separately\n fragment, // Pass fragment explicitly\n });\n }\n }\n\n /**\n * Parses query parameters from a query string into an object.\n */\n private parseQueryParams(queryString: string | undefined): Record<string, string> | undefined {\n if (!queryString) return undefined;\n\n return queryString\n .split('&')\n .map(pair => pair.split('='))\n .reduce((params, [key, value]) => {\n params[decodeURIComponent(key)] = decodeURIComponent(value);\n return params;\n }, {} as Record<string, string>);\n }\n}\n\n\n\n\nexport const AXPNavigateWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n 'start': {\n action: 'navigate-router',\n },\n },\n};\n","import { Injectable, NgZone, inject, isDevMode } from \"@angular/core\";\nimport { AXDialogService } from \"@acorex/components/dialog\";\nimport { AXPWorkflowError } from \"@acorex/platform/workflow\";\nimport { AXPErrorHandler } from \"../errors\";\n\n@Injectable()\nexport class AXMWorkflowErrorHandler implements AXPErrorHandler {\n private dialog = inject(AXDialogService);\n\n\n handleError(error: any, next: (error: any) => void): void {\n if (error instanceof AXPWorkflowError) {\n this.dialog.alert(\"Somthing is wrong!\", error.inner ? error.inner.message : error.message, 'danger');\n next(error);\n } else {\n next(error);\n }\n }\n}","import { AXPopupModule } from '@acorex/components/popup';\nimport { AXToastModule } from '@acorex/components/toast';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { ErrorHandler, Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXPAppStartUpProvider, AXPAppStartUpService } from './app/app-startup.service';\nimport {\n AXPCustomOperatorService,\n AXPCustomOperatorServiceImpl,\n AXPDataSeederService,\n AXPFilterOperatorMiddlewareService,\n AXPFilterOperatorMiddlewareServiceImpl,\n} from './data';\nimport { AXPErrorHandler, AXPErrorHandlerRegistryService, AXPGlobalErrorHandler } from './errors';\nimport { AXPMenuSearchDefinitionProvider } from './layout';\nimport { AXPMenuSearchProvider } from './layout/menu/search.provider';\nimport { AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from './search';\nimport { AXPSettingService } from './settings';\nimport {\n AXPDialogConfirmAction,\n AXPNavigateWorkflow,\n AXPToastAction,\n AXPWorkflowRouterNavigateAction,\n} from './workflows';\n\nexport interface AXPCommonModuleConfigs {\n errorHandlers: (new () => AXPErrorHandler)[];\n}\n\n@NgModule({\n imports: [\n AXPWorkflowModule.forChild({\n actions: {\n 'navigate-router': AXPWorkflowRouterNavigateAction,\n 'show-prompt-dialog': AXPDialogConfirmAction,\n 'show-toast': AXPToastAction,\n },\n workflows: {\n navigate: AXPNavigateWorkflow,\n },\n }),\n AXPopupModule,\n AXDateTimeModule,\n AXToastModule,\n ],\n exports: [RouterModule],\n providers: [\n AXPAppStartUpProvider,\n {\n provide: ErrorHandler,\n useClass: AXPGlobalErrorHandler,\n },\n {\n provide: AXPCustomOperatorService,\n useClass: AXPCustomOperatorServiceImpl,\n },\n {\n provide: AXPFilterOperatorMiddlewareService,\n useClass: AXPFilterOperatorMiddlewareServiceImpl,\n },\n\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPMenuSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPMenuSearchDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXPCommonModule {\n static forRoot(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule> {\n return {\n ngModule: AXPCommonModule,\n providers: [\n ...(configs?.errorHandlers || []),\n {\n provide: 'AXPCommonModuleFactory',\n useFactory: (registry: AXPErrorHandlerRegistryService) => () => {\n registry.register(...(configs?.errorHandlers || []));\n },\n deps: [AXPErrorHandlerRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n static forChild(configs?: AXPCommonModuleConfigs): ModuleWithProviders<AXPCommonModule> {\n return {\n ngModule: AXPCommonModule,\n providers: [\n ...(configs?.errorHandlers || []),\n {\n provide: 'AXPCommonModuleFactory',\n useFactory: (registry: AXPErrorHandlerRegistryService) => () => {\n registry.register(...(configs?.errorHandlers || []));\n },\n deps: [AXPErrorHandlerRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n /**\n * @ignore\n */\n constructor(\n @Inject('AXPCommonModuleFactory') instances: any[],\n appInitService: AXPAppStartUpService,\n settingsService: AXPSettingService,\n seederService: AXPDataSeederService\n ) {\n instances.forEach((f) => {\n f();\n });\n appInitService.registerTask({\n name: 'Settings',\n statusText: 'Loading Settings ...',\n run: async () => {\n await settingsService.load();\n },\n });\n //\n //\n appInitService.registerTask({\n name: 'Seeder',\n statusText: 'Seed Data ...',\n run: async () => {\n await seederService.seed();\n },\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPLogoConfig, AXPTextLogoConfig } from '../layout/logo/logo.types';\n\nexport const ENVIRONMENT = new InjectionToken<any>('ENVIRONMENT');\n\nexport const AXP_PLATFORM_CONFIG_TOKEN = new InjectionToken<AXPPlatformConfigs>('AXP_PLATFORM_CONFIG_TOKEN', {\n providedIn: 'root',\n factory: () => {\n return AXPPlatformDefaultConfigs;\n },\n});\n\nexport interface AXPPlatformConfigs {\n title?: string;\n copyright?: string;\n logo?: {\n dark?: AXPLogoConfig;\n light?: AXPLogoConfig;\n colored?: AXPLogoConfig;\n };\n network?: {\n timeOut?: number;\n };\n}\n\nexport const AXPPlatformDefaultConfigs: AXPPlatformConfigs = {\n copyright: 'ACoreX @ 2024',\n title: 'ACoreX Platform',\n logo: {\n dark: new AXPTextLogoConfig('ACoreX'),\n light: new AXPTextLogoConfig('ACoreX'),\n colored: new AXPTextLogoConfig('ACoreX'),\n },\n network: {\n timeOut: 5000,\n }\n};\n\nexport function configPlatform(config: Partial<AXPPlatformConfigs> = AXPPlatformDefaultConfigs): AXPPlatformConfigs {\n return merge(AXPPlatformDefaultConfigs, config);\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const AXP_ROOT_CONFIG_TOKEN = new InjectionToken<AXPRootConfigs>('AXP_ROOT_CONFIG_TOKEN');\n\nexport interface AXPRootConfigs {\n baseUrl: string;\n}","import { Injectable } from \"@angular/core\";\nimport { AXPFileStorageCreateRequest, AXPFileStorageInfo, AXPFileStorageUpdateRequest, AXPFileStorageFindRequest } from \"./file-storage.types\";\n\n\n@Injectable()\nexport abstract class AXPFileStorageService {\n\n abstract save(request: AXPFileStorageCreateRequest): Promise<AXPFileStorageInfo>;\n\n abstract update(request: AXPFileStorageUpdateRequest): Promise<AXPFileStorageInfo>;\n\n abstract find(request: AXPFileStorageFindRequest): Promise<AXPFileStorageInfo[]>;\n\n abstract getInfo(fileId: string): Promise<AXPFileStorageInfo>;\n\n abstract remove(fileId: string): Promise<void>;\n\n abstract commit(fileId: string): Promise<void>;\n\n abstract markForDeletion(fileId: string): Promise<void>;\n}\n","import { AXPMetaData } from \"@acorex/platform/core\";\n\nexport enum AXPFileStorageStatus {\n Temporary = 'temporary', // File is not yet associated with a parent entity\n Committed = 'committed', // File is fully associated and in use\n PendingDeletion = 'pendingDeletion', // File is marked for deletion but not yet removed\n Archived = 'archived', // File is archived and no longer actively used\n Error = 'error', // File encountered an error during processing\n}\n\n/**\n * Interface representing a file storage request in the Acorex platform.\n */\nexport interface AXPFileStorageCreateRequest {\n /**\n * The file to be stored.\n */\n file: File;\n /**\n * The unique identifier of referenced entity.\n */\n refId: string;\n /**\n * The type of the referenced entity.\n */\n refType: string;\n /**\n * The category of the file. profile-picture, company-logo, policy, document, etc.\n */\n category: string;\n /**\n * The folder path where the file should be stored.\n * If null, the service will resolve the path based on metadata, user, tenant, or default rules.\n */\n path?: string;\n /**\n * Metadata associated with the file.\n */\n metadata?: AXPMetaData;\n\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n}\n\nexport interface AXPFileStorageUpdateRequest {\n /**\n * The unique identifier for the stored file.\n */\n fileId: string;\n /**\n * The folder path where the file should be stored.\n * If null, the service will resolve the path based on metadata, user, tenant, or default rules.\n */\n path?: string;\n /**\n * Metadata associated with the file.\n */\n metadata: AXPMetaData;\n\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n}\n\n/**\n * Represents information about a file stored in the AXP file storage system.\n */\nexport interface AXPFileStorageInfo {\n /**\n * The unique identifier for the stored file.\n */\n fileId: string;\n\n /**\n * The unique identifier of referenced entity.\n */\n refId: string;\n /**\n * The type of the referenced entity.\n */\n refType: string;\n /**\n * The category of the file. profile-picture, company-logo, policy, document, etc.\n */\n category: string;\n\n /**\n * The URL where the file can be accessed.\n */\n url?: string;\n\n /**\n * The size of the file in bytes.\n */\n size: number;\n\n /**\n * The MIME type of the file.\n */\n mimeType: string;\n\n /**\n * The date and time when the file was uploaded.\n */\n uploadedAt: Date;\n\n /**\n * Indicates whether the file is public or private.\n */\n isPublic: boolean;\n\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n\n status: AXPFileStorageStatus; // Updated to use enum\n}\n\n/**\n * Represents information about a file stored in the AXP file storage system.\n */\nexport interface AXPFileStorageFindRequest {\n /**\n * The unique identifier of referenced entity.\n */\n refId?: string;\n /**\n * The type of the referenced entity.\n */\n refType?: string;\n /**\n * The category of the file. profile-picture, company-logo, policy, document, etc.\n */\n category?: string;\n /**\n * The MIME type of the file.\n */\n mimeType?: string;\n /**\n * Indicates whether the file is public or private.\n */\n isPublic?: boolean;\n /**\n * Indicates whether the file is primary or not.\n */\n isPrimary?: boolean;\n /**\n * The date and time range when the file was uploaded.\n */\n uploadedAtRange?: { from: Date; to: Date };\n}","import { Injectable } from '@angular/core';\nimport { AXPFilterDefinition, AXPFilterQuery } from './filters.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPFiltersProviderService {\n async getAll(): Promise<AXPFilterDefinition[]> {\n return Promise.resolve('' as any);\n }\n\n async execute(): Promise<AXPFilterQuery[]> {\n return Promise.resolve('' as any);\n }\n}\n","import { createAction } from '@ngrx/store';\n\n\nexport const AXPSignOutAction = createAction('[SignOut] Action');\nexport const AXPSignInAction = createAction('[SignIn] Action');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AXPErrorHandlerRegistryService","i1.AXPComponentSlotRegistryService","i1.AXPComponentSlotLoaderService","i1","i3","i1.AXPAppStartUpService","i2.AXPSettingService","i3.AXPDataSeederService"],"mappings":"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"}