@acorex/platform 20.8.5 → 21.0.0-beta.1

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 (125) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +121 -27
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-41RhWqb4.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +4 -4
  4. package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +669 -268
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +333 -140
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +557 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +539 -110
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs} +15 -15
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +3285 -1035
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +488 -284
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +15955 -11978
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +410 -170
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +548 -474
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs → acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs} +11 -11
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs → acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs} +22 -77
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs} +8 -9
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs → acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs} +17 -17
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs +116 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs} +25 -19
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs} +9 -9
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs} +7 -7
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +6396 -4058
  42. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-native.mjs +8 -7
  44. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-runtime.mjs +328 -166
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs → acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs} +16 -23
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs +31 -0
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs +25 -0
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1687 -69
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs → acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs} +8 -8
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs} +8 -8
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
  66. package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs +88 -0
  68. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs +80 -0
  70. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-themes-shared.mjs +572 -465
  72. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  73. package/fesm2022/acorex-platform-workflow.mjs +276 -98
  74. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  75. package/fesm2022/acorex-platform.mjs.map +1 -1
  76. package/package.json +38 -38
  77. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
  78. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +261 -24
  79. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +163 -42
  80. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
  81. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +137 -38
  82. package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +808 -131
  83. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
  84. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +686 -61
  85. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +80 -47
  86. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +274 -197
  87. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +583 -104
  88. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  89. package/types/acorex-platform-runtime.d.ts +565 -0
  90. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +105 -4
  91. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +14 -5
  92. package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +96 -81
  93. package/fesm2022/acorex-platform-common-common-settings.provider-41RhWqb4.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +0 -111
  100. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +0 -160
  105. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs +0 -1610
  107. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +0 -120
  109. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs +0 -31
  112. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs +0 -25
  114. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
  116. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
  119. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
  121. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
  122. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
  123. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
  124. package/runtime/index.d.ts +0 -307
  125. /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
@@ -1,10 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Injectable, Directive, computed, Injector, ChangeDetectionStrategy, Component, input, ElementRef, ViewContainerRef, signal, effect, runInInjectionContext, Optional, Inject, NgModule, EventEmitter, HostListener, Output, provideAppInitializer, Pipe } from '@angular/core';
3
- import { get, isPlainObject, set, isNil, isEmpty, isArray, merge, isObjectLike, transform, isEqual, differenceWith, union, cloneDeep, sortBy, isUndefined, endsWith, startsWith, includes, lte, gte, lt, gt, orderBy } from 'lodash-es';
3
+ import { get, isPlainObject, set, isNil, isEmpty, isArray, merge, isObjectLike, transform, isEqual, differenceWith, union, cloneDeep, has, sortBy, isUndefined, endsWith, startsWith, includes, lte, gte, lt, gt, orderBy } from 'lodash-es';
4
4
  import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
5
5
  import * as i1 from '@acorex/components/skeleton';
6
6
  import { AXSkeletonModule } from '@acorex/components/skeleton';
7
7
  import { Subject, interval, fromEvent } from 'rxjs';
8
+ import { AXDataSource } from '@acorex/cdk/common';
9
+ import { resolveMultiLanguageString } from '@acorex/core/translation';
8
10
  import { AXCalendarService } from '@acorex/core/date-time';
9
11
  import { startWith, map, debounceTime } from 'rxjs/operators';
10
12
 
@@ -19,10 +21,10 @@ class AXPActivityLogService {
19
21
  async getHistoryByIds(refId, refType, ids) {
20
22
  return (await Promise.all(this.providers?.map((p) => p.getHistoryByIds(refId, refType, ids)) ?? [])).flat();
21
23
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPActivityLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
23
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPActivityLogService, providedIn: 'root' }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPActivityLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPActivityLogService, providedIn: 'root' }); }
24
26
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPActivityLogService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPActivityLogService, decorators: [{
26
28
  type: Injectable,
27
29
  args: [{ providedIn: 'root' }]
28
30
  }] });
@@ -172,10 +174,10 @@ class AXPColorPaletteService {
172
174
  const uniquePalettes = allPalettes.filter((palette, index, self) => index === self.findIndex((p) => p.name === palette.name));
173
175
  this.cache = uniquePalettes;
174
176
  }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
176
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPColorPaletteService, providedIn: 'root' }); }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
178
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPaletteService, providedIn: 'root' }); }
177
179
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPColorPaletteService, decorators: [{
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColorPaletteService, decorators: [{
179
181
  type: Injectable,
180
182
  args: [{
181
183
  providedIn: 'root',
@@ -290,10 +292,10 @@ class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {
290
292
  },
291
293
  ];
292
294
  }
293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDefaultColorPalettesProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
294
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDefaultColorPalettesProvider }); }
295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultColorPalettesProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
296
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultColorPalettesProvider }); }
295
297
  }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDefaultColorPalettesProvider, decorators: [{
298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDefaultColorPalettesProvider, decorators: [{
297
299
  type: Injectable
298
300
  }] });
299
301
 
@@ -479,10 +481,10 @@ class AXPColumnWidthService {
479
481
  }
480
482
  return width;
481
483
  }
482
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPColumnWidthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
483
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPColumnWidthService, providedIn: 'root' }); }
484
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
485
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidthService, providedIn: 'root' }); }
484
486
  }
485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPColumnWidthService, decorators: [{
487
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidthService, decorators: [{
486
488
  type: Injectable,
487
489
  args: [{
488
490
  providedIn: 'root',
@@ -511,15 +513,17 @@ const defaultColumnWidthProvider = {
511
513
  { name: 'content', width: '500px', priority: 10 },
512
514
  { name: 'level', width: '100px', priority: 10 },
513
515
  { name: 'order', width: '100px', priority: 10 },
516
+ { name: 'phones', width: '300px', priority: 10 },
517
+ { name: 'emails', width: '300px', priority: 10 },
514
518
  ],
515
519
  };
516
520
  //#endregion
517
521
 
518
522
  class AXPComponentSlot {
519
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
520
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: AXPComponentSlot, isStandalone: true, ngImport: i0 }); }
523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
524
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AXPComponentSlot, isStandalone: true, ngImport: i0 }); }
521
525
  }
522
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlot, decorators: [{
526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlot, decorators: [{
523
527
  type: Directive
524
528
  }] });
525
529
 
@@ -787,9 +791,10 @@ function getEnumValues(enumType) {
787
791
 
788
792
  class AXPContextChangeEvent {
789
793
  }
790
- const AXPContextStore = signalStore({
791
- providedIn: 'root',
792
- },
794
+ //#endregion
795
+ //#region ---- Context signal store ----
796
+ // Shared reactive context: root injector has a default instance; widget/layout trees
797
+ const AXPContextStore = signalStore(
793
798
  // Initial State
794
799
  withState(() => ({
795
800
  data: {}, // Shared context data
@@ -839,7 +844,7 @@ withMethods((store) => ({
839
844
  lastChange: changeEvent,
840
845
  });
841
846
  },
842
- patch(context) {
847
+ patch(context, skipDirtyTracking = false) {
843
848
  const currentData = cloneDeep(store.data());
844
849
  // Update the value and prepare the change event
845
850
  const updatedData = { ...currentData, ...context };
@@ -849,7 +854,7 @@ withMethods((store) => ({
849
854
  };
850
855
  // Patch the state
851
856
  patchState(store, {
852
- previousSnapshot: store.snapshot(), // Save the previous state
857
+ ...(skipDirtyTracking ? {} : { previousSnapshot: store.snapshot() }),
853
858
  data: updatedData,
854
859
  state: 'changed',
855
860
  lastChange: changeEvent,
@@ -897,7 +902,12 @@ withMethods((store) => ({
897
902
  getValue(path) {
898
903
  return getSmart(store.data(), path);
899
904
  },
905
+ // Check if a path exists in the context
906
+ hasValue(path) {
907
+ return has(store.data(), path);
908
+ },
900
909
  })));
910
+ //#endregion
901
911
 
902
912
  class AXPExpressionEvaluatorScopeProviderContext {
903
913
  constructor() {
@@ -927,7 +937,12 @@ class AXPExpressionEvaluatorScopeProviderService {
927
937
  : [];
928
938
  const context = new AXPExpressionEvaluatorScopeProviderContext();
929
939
  for (const provider of providers) {
930
- await provider.provide(context);
940
+ // Resolve lazy-loaded providers (provideLazyProvider useFactory returns Promise<Provider>)
941
+ const resolved = await Promise.resolve(provider);
942
+ if (!resolved || typeof resolved.provide !== 'function') {
943
+ continue;
944
+ }
945
+ await resolved.provide(context);
931
946
  }
932
947
  this.cache = context.getScopes();
933
948
  }
@@ -935,10 +950,10 @@ class AXPExpressionEvaluatorScopeProviderService {
935
950
  await this.load();
936
951
  return this.cache || {};
937
952
  }
938
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
939
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, providedIn: 'root' }); }
953
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
954
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, providedIn: 'root' }); }
940
955
  }
941
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, decorators: [{
956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExpressionEvaluatorScopeProviderService, decorators: [{
942
957
  type: Injectable,
943
958
  args: [{ providedIn: 'root' }]
944
959
  }] });
@@ -1047,26 +1062,26 @@ class AXPExpressionEvaluatorService {
1047
1062
  }
1048
1063
  return false;
1049
1064
  }
1050
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExpressionEvaluatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1051
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExpressionEvaluatorService, providedIn: 'root' }); }
1065
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExpressionEvaluatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1066
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExpressionEvaluatorService, providedIn: 'root' }); }
1052
1067
  }
1053
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPExpressionEvaluatorService, decorators: [{
1068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPExpressionEvaluatorService, decorators: [{
1054
1069
  type: Injectable,
1055
1070
  args: [{ providedIn: 'root' }]
1056
1071
  }] });
1057
1072
 
1058
1073
  class AXPComponentSlotPlaceholderComponent {
1059
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1060
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: AXPComponentSlotPlaceholderComponent, isStandalone: true, selector: "axp-component-slot-placeholder", ngImport: i0, template: `<div>
1061
- <ax-skeleton class="ax-w-full ax-h-10 ax-rounded-md"></ax-skeleton>
1074
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1075
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPComponentSlotPlaceholderComponent, isStandalone: true, selector: "axp-component-slot-placeholder", ngImport: i0, template: `<div>
1076
+ <ax-skeleton class="w-full h-10 rounded-md"></ax-skeleton>
1062
1077
  </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1063
1078
  }
1064
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotPlaceholderComponent, decorators: [{
1079
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotPlaceholderComponent, decorators: [{
1065
1080
  type: Component,
1066
1081
  args: [{
1067
1082
  selector: 'axp-component-slot-placeholder',
1068
1083
  template: `<div>
1069
- <ax-skeleton class="ax-w-full ax-h-10 ax-rounded-md"></ax-skeleton>
1084
+ <ax-skeleton class="w-full h-10 rounded-md"></ax-skeleton>
1070
1085
  </div>`,
1071
1086
  changeDetection: ChangeDetectionStrategy.OnPush,
1072
1087
  imports: [AXSkeletonModule],
@@ -1090,10 +1105,10 @@ class AXPComponentSlotRegistryService {
1090
1105
  get(slotName) {
1091
1106
  return this.registry.get(slotName) || [];
1092
1107
  }
1093
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1094
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotRegistryService, providedIn: 'root' }); }
1108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1109
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotRegistryService, providedIn: 'root' }); }
1095
1110
  }
1096
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotRegistryService, decorators: [{
1111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotRegistryService, decorators: [{
1097
1112
  type: Injectable,
1098
1113
  args: [{
1099
1114
  providedIn: 'root'
@@ -1102,18 +1117,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
1102
1117
 
1103
1118
  class AXPComponentSlotDirective {
1104
1119
  constructor() {
1105
- this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
1106
- this.host = input(...(ngDevMode ? [undefined, { debugName: "host" }] : []));
1107
- this.context = input(...(ngDevMode ? [undefined, { debugName: "context" }] : []));
1120
+ this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
1121
+ this.host = input(...(ngDevMode ? [undefined, { debugName: "host" }] : /* istanbul ignore next */ []));
1122
+ this.context = input(...(ngDevMode ? [undefined, { debugName: "context" }] : /* istanbul ignore next */ []));
1108
1123
  this.elementRef = inject(ElementRef);
1109
1124
  this.registryService = inject(AXPComponentSlotRegistryService);
1110
1125
  this.injector = inject(Injector);
1111
1126
  this.evaluator = inject(AXPExpressionEvaluatorService);
1112
1127
  this.viewContainerRef = inject(ViewContainerRef);
1113
1128
  this.contextStore = inject(AXPContextStore);
1114
- this.isEmpty = computed(() => this._viewCount() === 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : []));
1129
+ this.isEmpty = computed(() => this._viewCount() === 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
1115
1130
  // Create a signal to store the count of children
1116
- this._viewCount = signal(0, ...(ngDevMode ? [{ debugName: "_viewCount" }] : []));
1131
+ this._viewCount = signal(0, ...(ngDevMode ? [{ debugName: "_viewCount" }] : /* istanbul ignore next */ []));
1117
1132
  // Track component references for updates
1118
1133
  this.componentRefs = [];
1119
1134
  // Track placeholder references for replacement
@@ -1234,10 +1249,10 @@ class AXPComponentSlotDirective {
1234
1249
  return condition(this.contextStore.data());
1235
1250
  //return condition(this.context());
1236
1251
  }
1237
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1238
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.19", type: AXPComponentSlotDirective, isStandalone: false, selector: "axp-component-slot", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, host: { classPropertyName: "host", publicName: "host", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["slot"], ngImport: i0 }); }
1252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1253
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPComponentSlotDirective, isStandalone: false, selector: "axp-component-slot", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, host: { classPropertyName: "host", publicName: "host", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["slot"], ngImport: i0 }); }
1239
1254
  }
1240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotDirective, decorators: [{
1255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotDirective, decorators: [{
1241
1256
  type: Directive,
1242
1257
  args: [{
1243
1258
  selector: 'axp-component-slot',
@@ -1297,11 +1312,11 @@ class AXPComponentSlotModule {
1297
1312
  f();
1298
1313
  });
1299
1314
  }
1300
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotModule, deps: [{ token: 'AXPComponentSlotModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
1301
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotModule, declarations: [AXPComponentSlotDirective], exports: [AXPComponentSlotDirective] }); }
1302
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotModule }); }
1315
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotModule, deps: [{ token: 'AXPComponentSlotModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
1316
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotModule, declarations: [AXPComponentSlotDirective], exports: [AXPComponentSlotDirective] }); }
1317
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotModule }); }
1303
1318
  }
1304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPComponentSlotModule, decorators: [{
1319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPComponentSlotModule, decorators: [{
1305
1320
  type: NgModule,
1306
1321
  args: [{
1307
1322
  declarations: [AXPComponentSlotDirective],
@@ -1521,10 +1536,10 @@ class AXPDataSourceDefinitionProviderService {
1521
1536
  async get(name) {
1522
1537
  return (await this.items()).find((c) => c.name == name);
1523
1538
  }
1524
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDataSourceDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1525
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDataSourceDefinitionProviderService, providedIn: 'root' }); }
1539
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataSourceDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1540
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataSourceDefinitionProviderService, providedIn: 'root' }); }
1526
1541
  }
1527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDataSourceDefinitionProviderService, decorators: [{
1542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataSourceDefinitionProviderService, decorators: [{
1528
1543
  type: Injectable,
1529
1544
  args: [{ providedIn: 'root' }]
1530
1545
  }] });
@@ -1534,12 +1549,12 @@ class AXPContentCheckerDirective {
1534
1549
  constructor() {
1535
1550
  this.viewContainerRef = inject(ViewContainerRef);
1536
1551
  this.elementRef = inject((ElementRef));
1537
- this.isEmpty = computed(() => this.viewContainerRef.length === 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : []));
1552
+ this.isEmpty = computed(() => this.viewContainerRef.length === 0, ...(ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []));
1538
1553
  }
1539
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPContentCheckerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1540
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: AXPContentCheckerDirective, isStandalone: true, selector: "[axp-content-checker]", exportAs: ["checker"], ngImport: i0 }); }
1554
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPContentCheckerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1555
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AXPContentCheckerDirective, isStandalone: true, selector: "[axp-content-checker]", exportAs: ["checker"], ngImport: i0 }); }
1541
1556
  }
1542
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPContentCheckerDirective, decorators: [{
1557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPContentCheckerDirective, decorators: [{
1543
1558
  type: Directive,
1544
1559
  args: [{
1545
1560
  selector: '[axp-content-checker]',
@@ -1569,10 +1584,10 @@ class AXPDblClickDirective {
1569
1584
  }
1570
1585
  this.lastTap = currentTime;
1571
1586
  }
1572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDblClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1573
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: AXPDblClickDirective, isStandalone: true, selector: "[onDblClick]", outputs: { onDblClick: "onDblClick" }, host: { listeners: { "dblclick": "handleOnDblClick($event)", "touchend": "onTouchEnd($event)" } }, ngImport: i0 }); }
1587
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDblClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1588
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AXPDblClickDirective, isStandalone: true, selector: "[onDblClick]", outputs: { onDblClick: "onDblClick" }, host: { listeners: { "dblclick": "handleOnDblClick($event)", "touchend": "onTouchEnd($event)" } }, ngImport: i0 }); }
1574
1589
  }
1575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDblClickDirective, decorators: [{
1590
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDblClickDirective, decorators: [{
1576
1591
  type: Directive,
1577
1592
  args: [{
1578
1593
  selector: '[onDblClick]'
@@ -1590,14 +1605,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
1590
1605
  class AXPElementDataDirective {
1591
1606
  constructor(elementRef) {
1592
1607
  this.elementRef = elementRef;
1593
- this.data = input(null, ...(ngDevMode ? [{ debugName: "data", alias: 'axp-data' }] : [{ alias: 'axp-data' }]));
1594
- this.path = input('__data__', ...(ngDevMode ? [{ debugName: "path", alias: 'axp-data-path' }] : [{ alias: 'axp-data-path' }]));
1608
+ this.data = input(null, { ...(ngDevMode ? { debugName: "data" } : /* istanbul ignore next */ {}), alias: 'axp-data' });
1609
+ this.path = input('__data__', { ...(ngDevMode ? { debugName: "path" } : /* istanbul ignore next */ {}), alias: 'axp-data-path' });
1595
1610
  // Effect to update element data when inputs change
1596
1611
  this.updateEffect = effect(() => {
1597
1612
  const currentData = this.data();
1598
1613
  const currentPath = this.path();
1599
1614
  set(this.elementRef.nativeElement, currentPath, currentData);
1600
- }, ...(ngDevMode ? [{ debugName: "updateEffect" }] : []));
1615
+ }, ...(ngDevMode ? [{ debugName: "updateEffect" }] : /* istanbul ignore next */ []));
1601
1616
  }
1602
1617
  ngOnInit() {
1603
1618
  // Initial data setup
@@ -1615,10 +1630,10 @@ class AXPElementDataDirective {
1615
1630
  setData(data) {
1616
1631
  set(this.elementRef.nativeElement, this.path(), data);
1617
1632
  }
1618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPElementDataDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1619
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.19", type: AXPElementDataDirective, isStandalone: true, selector: "[axp-data]", inputs: { data: { classPropertyName: "data", publicName: "axp-data", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "axp-data-path", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
1633
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPElementDataDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1634
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPElementDataDirective, isStandalone: true, selector: "[axp-data]", inputs: { data: { classPropertyName: "data", publicName: "axp-data", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "axp-data-path", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
1620
1635
  }
1621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPElementDataDirective, decorators: [{
1636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPElementDataDirective, decorators: [{
1622
1637
  type: Directive,
1623
1638
  args: [{
1624
1639
  selector: '[axp-data]',
@@ -1631,7 +1646,7 @@ class AXPGridLayoutDirective {
1631
1646
  constructor(el, renderer) {
1632
1647
  this.el = el;
1633
1648
  this.renderer = renderer;
1634
- this.options = input.required(...(ngDevMode ? [{ debugName: "options", alias: 'axp-grid-layout' }] : [{ alias: 'axp-grid-layout' }]));
1649
+ this.options = input.required({ ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), alias: 'axp-grid-layout' });
1635
1650
  }
1636
1651
  ngOnChanges(changes) {
1637
1652
  if (changes['options']) {
@@ -1654,14 +1669,14 @@ class AXPGridLayoutDirective {
1654
1669
  setClasses(placement, prefix) {
1655
1670
  if (placement == null)
1656
1671
  return;
1657
- const colStart = placement.colStart ? `${prefix}ax-col-start-${placement.colStart}` : '';
1658
- const colEnd = placement.colEnd ? `${prefix}ax-col-end-${placement.colEnd}` : '';
1659
- const colSpan = placement.colSpan ? `${prefix}ax-col-span-${placement.colSpan}` : '';
1660
- const rowStart = placement.rowStart ? `${prefix}ax-row-start-${placement.rowStart}` : '';
1661
- const rowEnd = placement.rowEnd ? `${prefix}ax-row-end-${placement.rowEnd}` : '';
1662
- const rowSpan = placement.rowSpan ? `${prefix}ax-row-span-${placement.rowSpan}` : '';
1663
- const order = placement.order ? `${prefix}ax-order-${placement.order}` : ''; // Handling order
1664
- [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach(cls => {
1672
+ const colStart = placement.colStart ? `${prefix}col-start-${placement.colStart}` : '';
1673
+ const colEnd = placement.colEnd ? `${prefix}col-end-${placement.colEnd}` : '';
1674
+ const colSpan = placement.colSpan ? `${prefix}col-span-${placement.colSpan}` : '';
1675
+ const rowStart = placement.rowStart ? `${prefix}row-start-${placement.rowStart}` : '';
1676
+ const rowEnd = placement.rowEnd ? `${prefix}row-end-${placement.rowEnd}` : '';
1677
+ const rowSpan = placement.rowSpan ? `${prefix}row-span-${placement.rowSpan}` : '';
1678
+ const order = placement.order ? `${prefix}order-${placement.order}` : ''; // Handling order
1679
+ [colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, order].forEach((cls) => {
1665
1680
  if (cls) {
1666
1681
  this.renderer.addClass(this.el.nativeElement, cls);
1667
1682
  }
@@ -1670,15 +1685,15 @@ class AXPGridLayoutDirective {
1670
1685
  clearClasses() {
1671
1686
  const currentClasses = this.el.nativeElement.className.split(' ');
1672
1687
  currentClasses.forEach((className) => {
1673
- if (className.startsWith('ax-col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {
1688
+ if (className.startsWith('col-') || className.startsWith('ax-row-') || className.startsWith('ax-order-')) {
1674
1689
  this.renderer.removeClass(this.el.nativeElement, className);
1675
1690
  }
1676
1691
  });
1677
1692
  }
1678
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPGridLayoutDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1679
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.19", type: AXPGridLayoutDirective, isStandalone: true, selector: "[axp-grid-layout]", inputs: { options: { classPropertyName: "options", publicName: "axp-grid-layout", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }
1693
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridLayoutDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1694
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPGridLayoutDirective, isStandalone: true, selector: "[axp-grid-layout]", inputs: { options: { classPropertyName: "options", publicName: "axp-grid-layout", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }
1680
1695
  }
1681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPGridLayoutDirective, decorators: [{
1696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridLayoutDirective, decorators: [{
1682
1697
  type: Directive,
1683
1698
  args: [{
1684
1699
  selector: '[axp-grid-layout]',
@@ -1822,10 +1837,10 @@ class AXPDistributedEventListenerService {
1822
1837
  this.listenersByKey.clear();
1823
1838
  this.providersLoaded = false;
1824
1839
  }
1825
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDistributedEventListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1826
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDistributedEventListenerService, providedIn: 'root' }); }
1840
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDistributedEventListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1841
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDistributedEventListenerService, providedIn: 'root' }); }
1827
1842
  }
1828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDistributedEventListenerService, decorators: [{
1843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDistributedEventListenerService, decorators: [{
1829
1844
  type: Injectable,
1830
1845
  args: [{
1831
1846
  providedIn: 'root',
@@ -1949,10 +1964,10 @@ class AXPBroadcastEventService {
1949
1964
  // Cleanup multi-tab event history
1950
1965
  this.multiTabEventHistory.clear();
1951
1966
  }
1952
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPBroadcastEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1953
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPBroadcastEventService, providedIn: 'root' }); }
1967
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBroadcastEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1968
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBroadcastEventService, providedIn: 'root' }); }
1954
1969
  }
1955
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPBroadcastEventService, decorators: [{
1970
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBroadcastEventService, decorators: [{
1956
1971
  type: Injectable,
1957
1972
  args: [{
1958
1973
  providedIn: 'root',
@@ -2005,10 +2020,10 @@ class AXPHookService {
2005
2020
  }
2006
2021
  return data;
2007
2022
  }
2008
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHookService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2009
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHookService, providedIn: 'root' }); }
2023
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHookService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2024
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHookService, providedIn: 'root' }); }
2010
2025
  }
2011
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPHookService, decorators: [{
2026
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPHookService, decorators: [{
2012
2027
  type: Injectable,
2013
2028
  args: [{ providedIn: 'root' }]
2014
2029
  }] });
@@ -2288,14 +2303,85 @@ class AXPModuleManifestRegistry {
2288
2303
  }
2289
2304
  return { missingModules, missingFeatures };
2290
2305
  }
2291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2292
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestRegistry, providedIn: 'root' }); }
2306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2307
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestRegistry, providedIn: 'root' }); }
2293
2308
  }
2294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestRegistry, decorators: [{
2309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestRegistry, decorators: [{
2295
2310
  type: Injectable,
2296
2311
  args: [{ providedIn: 'root' }]
2297
2312
  }] });
2298
2313
 
2314
+ //#region ---- Imports ----
2315
+ //#endregion
2316
+ //#region ---- Module manifests data source ----
2317
+ /**
2318
+ * Registered module manifests for select widgets via dataSource name {@link MODULE_MANIFESTS_DATASOURCE_NAME}.
2319
+ */
2320
+ const MODULE_MANIFESTS_DATASOURCE_NAME = 'platform-module-manifests';
2321
+ /**
2322
+ * Data source definition for module names/titles from {@link AXPModuleManifestRegistry}.
2323
+ */
2324
+ class AXPModuleManifestsDataSourceDefinition {
2325
+ constructor() {
2326
+ //#region ---- Services & Dependencies ----
2327
+ this.manifestRegistry = inject(AXPModuleManifestRegistry);
2328
+ //#endregion
2329
+ }
2330
+ //#endregion
2331
+ //#region ---- Public API ----
2332
+ async items() {
2333
+ return [
2334
+ {
2335
+ name: MODULE_MANIFESTS_DATASOURCE_NAME,
2336
+ title: 'Module manifests',
2337
+ source: () => new AXDataSource({
2338
+ key: 'id',
2339
+ load: async () => {
2340
+ await this.manifestRegistry.initialize();
2341
+ const list = this.manifestRegistry.getAll().map((m) => ({
2342
+ id: m.name,
2343
+ title: m.title || m.name,
2344
+ }));
2345
+ return { items: list, total: list.length };
2346
+ },
2347
+ byKey: async (key) => {
2348
+ await this.manifestRegistry.initialize();
2349
+ const m = this.manifestRegistry.getAll().find((x) => x.name === key);
2350
+ return m ? { id: m.name, title: m.title || m.name } : undefined;
2351
+ },
2352
+ pageSize: 1000,
2353
+ }),
2354
+ columns: [
2355
+ {
2356
+ name: 'id',
2357
+ title: 'ID',
2358
+ datatype: 'string',
2359
+ type: 'text-editor',
2360
+ },
2361
+ {
2362
+ name: 'title',
2363
+ title: 'Title',
2364
+ datatype: 'string',
2365
+ type: 'text-editor',
2366
+ },
2367
+ ],
2368
+ filters: [
2369
+ {
2370
+ field: 'title',
2371
+ title: 'Title',
2372
+ operator: { type: 'equal' },
2373
+ widget: { type: 'text-editor' },
2374
+ filterType: { advance: true, inline: true },
2375
+ },
2376
+ ],
2377
+ textField: { name: 'title', title: 'Title' },
2378
+ valueField: { name: 'id', title: 'ID' },
2379
+ },
2380
+ ];
2381
+ }
2382
+ }
2383
+ //#endregion
2384
+
2299
2385
  class AXPAppStartUpService {
2300
2386
  constructor() {
2301
2387
  this.tasks = [];
@@ -2315,10 +2401,10 @@ class AXPAppStartUpService {
2315
2401
  loadingText.innerHTML = status;
2316
2402
  }
2317
2403
  }
2318
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPAppStartUpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2319
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPAppStartUpService, providedIn: 'root' }); }
2404
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAppStartUpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2405
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAppStartUpService, providedIn: 'root' }); }
2320
2406
  }
2321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPAppStartUpService, decorators: [{
2407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAppStartUpService, decorators: [{
2322
2408
  type: Injectable,
2323
2409
  args: [{
2324
2410
  providedIn: 'root',
@@ -2356,17 +2442,38 @@ class AXPModuleManifestModule {
2356
2442
  },
2357
2443
  });
2358
2444
  }
2359
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestModule, deps: [{ token: AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
2360
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestModule }); }
2361
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestModule }); }
2445
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestModule, deps: [{ token: AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
2446
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestModule }); }
2447
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestModule }); }
2362
2448
  }
2363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPModuleManifestModule, decorators: [{
2449
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPModuleManifestModule, decorators: [{
2364
2450
  type: NgModule,
2365
2451
  args: [{
2366
2452
  providers: [],
2367
2453
  }]
2368
2454
  }], ctorParameters: () => [{ type: AXPAppStartUpService }, { type: i0.Injector }] });
2369
2455
 
2456
+ //#region ---- Imports ----
2457
+ //#endregion
2458
+ //#region ---- Compare & sort ----
2459
+ const DEFAULT_COLLATOR_OPTIONS = { sensitivity: 'base' };
2460
+ /**
2461
+ * Locale-aware comparison of {@link AXPMultiLanguageString} values (plain string, `@scope:key`, or locale map).
2462
+ * Resolves each side with {@link resolveMultiLanguageString} for `locale`, then compares with `String#localeCompare`.
2463
+ */
2464
+ function compareMultiLanguageStrings(a, b, locale, collatorOptions = DEFAULT_COLLATOR_OPTIONS) {
2465
+ const sa = resolveMultiLanguageString(a ?? '', locale);
2466
+ const sb = resolveMultiLanguageString(b ?? '', locale);
2467
+ return sa.localeCompare(sb, locale, collatorOptions);
2468
+ }
2469
+ /**
2470
+ * Stable sort copy: orders items by resolved string for `getValue(item)` using the active `locale`.
2471
+ */
2472
+ function sortByMultiLanguageString(items, getValue, locale, collatorOptions) {
2473
+ return [...items].sort((x, y) => compareMultiLanguageStrings(getValue(x), getValue(y), locale, collatorOptions));
2474
+ }
2475
+ //#endregion
2476
+
2370
2477
  //#region ---- Tag Types ----
2371
2478
  //#endregion
2372
2479
 
@@ -2518,10 +2625,10 @@ class AXPTagService {
2518
2625
  const uniqueTags = allTags.filter((tag, index, self) => index === self.findIndex((t) => t.title.toLowerCase() === tag.title.toLowerCase()));
2519
2626
  this.cache = uniqueTags;
2520
2627
  }
2521
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2522
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPTagService, providedIn: 'root' }); }
2628
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2629
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTagService, providedIn: 'root' }); }
2523
2630
  }
2524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPTagService, decorators: [{
2631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTagService, decorators: [{
2525
2632
  type: Injectable,
2526
2633
  args: [{
2527
2634
  providedIn: 'root',
@@ -3452,6 +3559,13 @@ function getNestedKeys(obj, prefix = '') {
3452
3559
  }
3453
3560
  return keys;
3454
3561
  }
3562
+ /** Normalizes definition categories to an array for iteration and serialization. */
3563
+ function normalizeDefinitionCategories(categories) {
3564
+ if (categories == null) {
3565
+ return [];
3566
+ }
3567
+ return Array.isArray(categories) ? categories : [categories];
3568
+ }
3455
3569
 
3456
3570
  //#region ---- Imports ----
3457
3571
  //#endregion
@@ -3521,7 +3635,7 @@ var AXPExportTemplateToken;
3521
3635
  class AXPCountdownPipe {
3522
3636
  constructor() {
3523
3637
  this.calendarService = inject(AXCalendarService);
3524
- this.countdownSignal = signal(this.setupTimer(), ...(ngDevMode ? [{ debugName: "countdownSignal" }] : []));
3638
+ this.countdownSignal = signal(this.setupTimer(), ...(ngDevMode ? [{ debugName: "countdownSignal" }] : /* istanbul ignore next */ []));
3525
3639
  this.targetDate = 0;
3526
3640
  this.prevValue = 0;
3527
3641
  }
@@ -3550,10 +3664,10 @@ class AXPCountdownPipe {
3550
3664
  updateTargetDate(value) {
3551
3665
  this.targetDate = new Date(value).getTime();
3552
3666
  }
3553
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCountdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3554
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPCountdownPipe, isStandalone: true, name: "countdown", pure: false }); }
3667
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCountdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3668
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCountdownPipe, isStandalone: true, name: "countdown", pure: false }); }
3555
3669
  }
3556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCountdownPipe, decorators: [{
3670
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCountdownPipe, decorators: [{
3557
3671
  type: Pipe,
3558
3672
  args: [{
3559
3673
  name: 'countdown',
@@ -3563,6 +3677,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
3563
3677
  }] });
3564
3678
 
3565
3679
  const loggingEnabled = false; // Set to true to enable logging, false to disable
3680
+ //#region ---- Multilingual string helpers ----
3681
+ /**
3682
+ * Per-locale string map as produced by multilingual editors (e.g. `{ "en-US": "...", "fa-IR": "..." }`).
3683
+ */
3684
+ function isLocaleStringMap(value) {
3685
+ if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date) {
3686
+ return false;
3687
+ }
3688
+ const values = Object.values(value);
3689
+ return values.length > 0 && values.every((v) => typeof v === 'string');
3690
+ }
3691
+ /**
3692
+ * Lowercased text for client-side filtering: plain string or all locale values joined.
3693
+ */
3694
+ function toFilterSearchText(value) {
3695
+ if (typeof value === 'string') {
3696
+ return value.toLowerCase();
3697
+ }
3698
+ if (isLocaleStringMap(value)) {
3699
+ return Object.values(value).join(' ').toLowerCase();
3700
+ }
3701
+ return undefined;
3702
+ }
3703
+ function filterValuesAreEqual(itemRaw, condRaw) {
3704
+ if (typeof condRaw === 'string' && isLocaleStringMap(itemRaw)) {
3705
+ return Object.values(itemRaw).some((v) => v.toLowerCase() === condRaw.toLowerCase());
3706
+ }
3707
+ if (typeof itemRaw === 'string' && isLocaleStringMap(condRaw)) {
3708
+ return Object.values(condRaw).some((v) => v.toLowerCase() === itemRaw.toLowerCase());
3709
+ }
3710
+ const itemScalar = typeof itemRaw === 'string' ? itemRaw.toLowerCase() : itemRaw;
3711
+ const condScalar = typeof condRaw === 'string' ? condRaw.toLowerCase() : condRaw;
3712
+ return isEqual(itemScalar, condScalar);
3713
+ }
3714
+ //#endregion
3566
3715
  function applyCondition(item, condition) {
3567
3716
  const rawValue = condition.field ? get(item, condition.field) : null;
3568
3717
  const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;
@@ -3583,7 +3732,12 @@ function applyCondition(item, condition) {
3583
3732
  switch (op) {
3584
3733
  case 'equal':
3585
3734
  case 'eq':
3586
- result = isEqual(valueToCompare, conditionValue);
3735
+ if (!isNil(condition.field) && condition.field !== '') {
3736
+ result = filterValuesAreEqual(rawValue, condition.value);
3737
+ }
3738
+ else {
3739
+ result = isEqual(valueToCompare, conditionValue);
3740
+ }
3587
3741
  if (loggingEnabled) {
3588
3742
  console.log('Equal check result:', result);
3589
3743
  }
@@ -3591,7 +3745,12 @@ function applyCondition(item, condition) {
3591
3745
  case 'notEqual':
3592
3746
  case 'ne':
3593
3747
  case 'neq':
3594
- result = !isEqual(valueToCompare, conditionValue);
3748
+ if (!isNil(condition.field) && condition.field !== '') {
3749
+ result = !filterValuesAreEqual(rawValue, condition.value);
3750
+ }
3751
+ else {
3752
+ result = !isEqual(valueToCompare, conditionValue);
3753
+ }
3595
3754
  if (loggingEnabled) {
3596
3755
  console.log('Not equal check result:', result);
3597
3756
  }
@@ -3624,12 +3783,15 @@ function applyCondition(item, condition) {
3624
3783
  console.log('Less than or equal check result:', result);
3625
3784
  }
3626
3785
  break;
3627
- case 'contains':
3628
- if (typeof valueToCompare === 'string') {
3629
- result = includes(valueToCompare, conditionValue);
3786
+ case 'contains': {
3787
+ const needle = toFilterSearchText(condition.value) ??
3788
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3789
+ const haystack = toFilterSearchText(rawValue);
3790
+ if (haystack !== undefined) {
3791
+ result = includes(haystack, needle);
3630
3792
  }
3631
- else if (Array.isArray(valueToCompare)) {
3632
- result = includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);
3793
+ else if (Array.isArray(rawValue)) {
3794
+ result = includes(rawValue.map((val) => toFilterSearchText(val) ?? val.toString().toLowerCase()), needle);
3633
3795
  }
3634
3796
  else {
3635
3797
  result = false;
@@ -3638,13 +3800,18 @@ function applyCondition(item, condition) {
3638
3800
  console.log('Contains check result:', result);
3639
3801
  }
3640
3802
  break;
3803
+ }
3641
3804
  case 'in':
3642
3805
  if (Array.isArray(conditionValue)) {
3643
3806
  if (typeof valueToCompare === 'string') {
3644
- result = conditionValue.some(val => typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare);
3807
+ result = conditionValue.some((val) => typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare);
3808
+ }
3809
+ else if (isLocaleStringMap(rawValue)) {
3810
+ const localeValues = Object.values(rawValue).map((v) => v.toLowerCase());
3811
+ result = localeValues.some((localeVal) => conditionValue.some((val) => typeof val === 'string' ? val.toLowerCase() === localeVal : val === localeVal));
3645
3812
  }
3646
3813
  else if (Array.isArray(valueToCompare)) {
3647
- result = valueToCompare.some(val => conditionValue.some(condVal => typeof val === 'string' && typeof condVal === 'string'
3814
+ result = valueToCompare.some((val) => conditionValue.some((condVal) => typeof val === 'string' && typeof condVal === 'string'
3648
3815
  ? val.toLowerCase() === condVal.toLowerCase()
3649
3816
  : val === condVal));
3650
3817
  }
@@ -3659,12 +3826,15 @@ function applyCondition(item, condition) {
3659
3826
  console.log('In check result:', result);
3660
3827
  }
3661
3828
  break;
3662
- case 'notContains':
3663
- if (typeof valueToCompare === 'string') {
3664
- result = !includes(valueToCompare, conditionValue);
3829
+ case 'notContains': {
3830
+ const needleNc = toFilterSearchText(condition.value) ??
3831
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3832
+ const haystackNc = toFilterSearchText(rawValue);
3833
+ if (haystackNc !== undefined) {
3834
+ result = !includes(haystackNc, needleNc);
3665
3835
  }
3666
- else if (Array.isArray(valueToCompare)) {
3667
- result = !includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);
3836
+ else if (Array.isArray(rawValue)) {
3837
+ result = !includes(rawValue.map((val) => toFilterSearchText(val) ?? val.toString().toLowerCase()), needleNc);
3668
3838
  }
3669
3839
  else {
3670
3840
  result = false;
@@ -3673,18 +3843,27 @@ function applyCondition(item, condition) {
3673
3843
  console.log('Not contains check result:', result);
3674
3844
  }
3675
3845
  break;
3676
- case 'startsWith':
3677
- result = typeof valueToCompare === 'string' && startsWith(valueToCompare, conditionValue);
3846
+ }
3847
+ case 'startsWith': {
3848
+ const prefix = toFilterSearchText(condition.value) ??
3849
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3850
+ const haystackSw = toFilterSearchText(rawValue);
3851
+ result = haystackSw !== undefined && startsWith(haystackSw, prefix);
3678
3852
  if (loggingEnabled) {
3679
3853
  console.log('Starts with check result:', result);
3680
3854
  }
3681
3855
  break;
3682
- case 'endsWith':
3683
- result = typeof valueToCompare === 'string' && endsWith(valueToCompare, conditionValue);
3856
+ }
3857
+ case 'endsWith': {
3858
+ const suffix = toFilterSearchText(condition.value) ??
3859
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3860
+ const haystackEw = toFilterSearchText(rawValue);
3861
+ result = haystackEw !== undefined && endsWith(haystackEw, suffix);
3684
3862
  if (loggingEnabled) {
3685
3863
  console.log('Ends with check result:', result);
3686
3864
  }
3687
3865
  break;
3866
+ }
3688
3867
  case 'isEmpty':
3689
3868
  result = isEmpty(valueToCompare);
3690
3869
  if (loggingEnabled) {
@@ -3836,45 +4015,45 @@ class AXPDeviceService {
3836
4015
  /**
3837
4016
  * Current screen size (Small, Medium, Large)
3838
4017
  */
3839
- this.screenSize = signal(getScreenSize(), ...(ngDevMode ? [{ debugName: "screenSize" }] : []));
4018
+ this.screenSize = signal(getScreenSize(), ...(ngDevMode ? [{ debugName: "screenSize" }] : /* istanbul ignore next */ []));
3840
4019
  /**
3841
4020
  * Current device type (Mobile, Tablet, Desktop)
3842
4021
  */
3843
- this.deviceType = signal(getDeviceType(), ...(ngDevMode ? [{ debugName: "deviceType" }] : []));
4022
+ this.deviceType = signal(getDeviceType(), ...(ngDevMode ? [{ debugName: "deviceType" }] : /* istanbul ignore next */ []));
3844
4023
  /**
3845
4024
  * Whether the device supports touch input
3846
4025
  */
3847
- this.isTouchDevice = signal(isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : []));
4026
+ this.isTouchDevice = signal(isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : /* istanbul ignore next */ []));
3848
4027
  //#endregion
3849
4028
  //#region ---- Computed Signals ----
3850
4029
  /**
3851
4030
  * Whether the screen size is Small
3852
4031
  */
3853
- this.isSmall = computed(() => this.screenSize() === AXPScreenSize.Small, ...(ngDevMode ? [{ debugName: "isSmall" }] : []));
4032
+ this.isSmall = computed(() => this.screenSize() === AXPScreenSize.Small, ...(ngDevMode ? [{ debugName: "isSmall" }] : /* istanbul ignore next */ []));
3854
4033
  /**
3855
4034
  * Whether the screen size is Medium
3856
4035
  */
3857
- this.isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium, ...(ngDevMode ? [{ debugName: "isMedium" }] : []));
4036
+ this.isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium, ...(ngDevMode ? [{ debugName: "isMedium" }] : /* istanbul ignore next */ []));
3858
4037
  /**
3859
4038
  * Whether the screen size is Large
3860
4039
  */
3861
- this.isLarge = computed(() => this.screenSize() === AXPScreenSize.Large, ...(ngDevMode ? [{ debugName: "isLarge" }] : []));
4040
+ this.isLarge = computed(() => this.screenSize() === AXPScreenSize.Large, ...(ngDevMode ? [{ debugName: "isLarge" }] : /* istanbul ignore next */ []));
3862
4041
  /**
3863
4042
  * Whether the device is Mobile
3864
4043
  */
3865
- this.isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile, ...(ngDevMode ? [{ debugName: "isMobileDevice" }] : []));
4044
+ this.isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile, ...(ngDevMode ? [{ debugName: "isMobileDevice" }] : /* istanbul ignore next */ []));
3866
4045
  /**
3867
4046
  * Whether the device is Tablet
3868
4047
  */
3869
- this.isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet, ...(ngDevMode ? [{ debugName: "isTabletDevice" }] : []));
4048
+ this.isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet, ...(ngDevMode ? [{ debugName: "isTabletDevice" }] : /* istanbul ignore next */ []));
3870
4049
  /**
3871
4050
  * Whether the device is Desktop
3872
4051
  */
3873
- this.isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop, ...(ngDevMode ? [{ debugName: "isDesktopDevice" }] : []));
4052
+ this.isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop, ...(ngDevMode ? [{ debugName: "isDesktopDevice" }] : /* istanbul ignore next */ []));
3874
4053
  /**
3875
4054
  * Whether the device supports touch (alias for isTouchDevice)
3876
4055
  */
3877
- this.isTouchScreen = computed(() => this.isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchScreen" }] : []));
4056
+ this.isTouchScreen = computed(() => this.isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchScreen" }] : /* istanbul ignore next */ []));
3878
4057
  //#endregion
3879
4058
  //#region ---- Private Properties ----
3880
4059
  this._resizeListener = null;
@@ -3940,10 +4119,10 @@ class AXPDeviceService {
3940
4119
  destroy() {
3941
4120
  this._removeResizeListener();
3942
4121
  }
3943
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3944
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDeviceService, providedIn: 'root' }); }
4122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4123
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDeviceService, providedIn: 'root' }); }
3945
4124
  }
3946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDeviceService, decorators: [{
4125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDeviceService, decorators: [{
3947
4126
  type: Injectable,
3948
4127
  args: [{
3949
4128
  providedIn: 'root',
@@ -4033,12 +4212,12 @@ class AXHighlightService {
4033
4212
  let parts = [];
4034
4213
  let match;
4035
4214
  let lastIndex = 0;
4036
- let resultHTML = '<span class="ax-highlight-text">';
4215
+ let resultHTML = '<span class="highlight-text">';
4037
4216
  while ((match = searchRegex.exec(textContent)) !== null) {
4038
4217
  if (match.index > lastIndex) {
4039
4218
  resultHTML += `<span>${textContent.slice(lastIndex, match.index)}</span>`;
4040
4219
  }
4041
- resultHTML += `<span class="ax-highlight">${match[0]}</span>`;
4220
+ resultHTML += `<span class="highlight">${match[0]}</span>`;
4042
4221
  lastIndex = searchRegex.lastIndex;
4043
4222
  }
4044
4223
  if (lastIndex < textContent.length) {
@@ -4047,10 +4226,10 @@ class AXHighlightService {
4047
4226
  resultHTML += '</span>';
4048
4227
  return resultHTML;
4049
4228
  }
4050
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4051
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXHighlightService, providedIn: 'root' }); }
4229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4230
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHighlightService, providedIn: 'root' }); }
4052
4231
  }
4053
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXHighlightService, decorators: [{
4232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHighlightService, decorators: [{
4054
4233
  type: Injectable,
4055
4234
  args: [{
4056
4235
  providedIn: 'root',
@@ -4114,6 +4293,20 @@ function extractTextFromHtml(value) {
4114
4293
  div.innerHTML = value;
4115
4294
  return div.textContent || div.innerText || '';
4116
4295
  }
4296
+ /**
4297
+ * True when the string likely contains HTML markup (e.g. `<p>`, `<ul>`), as opposed to plain text.
4298
+ * Used to choose innerHTML vs text interpolation for multilingual fields.
4299
+ */
4300
+ function containsHtmlMarkup(value) {
4301
+ if (value == null) {
4302
+ return false;
4303
+ }
4304
+ const t = value.trim();
4305
+ if (!t) {
4306
+ return false;
4307
+ }
4308
+ return /<\/?[a-z][\s\S]*?>/i.test(t);
4309
+ }
4117
4310
  /**
4118
4311
  * Generate kebab-case group name from title
4119
4312
  */
@@ -4131,5 +4324,5 @@ function generateKebabCase(title) {
4131
4324
  * Generated bundle index. Do not edit.
4132
4325
  */
4133
4326
 
4134
- export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart };
4327
+ export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPModuleManifestsDataSourceDefinition, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, MODULE_MANIFESTS_DATASOURCE_NAME, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, normalizeDefinitionCategories, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart, sortByMultiLanguageString };
4135
4328
  //# sourceMappingURL=acorex-platform-core.mjs.map