@acorex/platform 20.8.9 → 20.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +125 -27
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-DVvuLUfF.mjs → acorex-platform-common-common-settings.provider-Bi1RYif5.mjs} +30 -32
  4. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +711 -205
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +420 -127
  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 +634 -114
  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-CXEdvDTf.mjs} +9 -9
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +3365 -880
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +18667 -14048
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +413 -171
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +507 -441
  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-Dy7jF-oD.mjs} +10 -10
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.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-CDYAGBku.mjs} +21 -76
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.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-D10yO28c.mjs} +12 -12
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +116 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.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-DmzNTYiS.mjs} +5 -5
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.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-BNG_588B.mjs} +4 -4
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.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-Vo4fWHtX.mjs} +6 -6
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +6578 -4314
  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 +391 -166
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.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-BfCeUU5F.mjs} +16 -23
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
  53. package/fesm2022/{acorex-platform-themes-default-error-401.component-53VB-PS_.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
  55. package/fesm2022/{acorex-platform-themes-default-error-404.component-DVF9soT5.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1784 -61
  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-CqkWJYdv.mjs} +6 -6
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.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-BOTuLdWN.mjs} +6 -6
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +24 -25
  66. package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
  68. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
  70. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-themes-shared.mjs +408 -305
  72. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  73. package/fesm2022/acorex-platform-workflow.mjs +359 -100
  74. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  75. package/fesm2022/acorex-platform.mjs.map +1 -1
  76. package/package.json +31 -31
  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} +302 -30
  79. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +188 -44
  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} +160 -38
  82. package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +854 -125
  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} +848 -63
  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} +608 -122
  88. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  89. package/types/acorex-platform-runtime.d.ts +571 -0
  90. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -4
  91. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +5 -4
  92. package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +162 -81
  93. package/fesm2022/acorex-platform-common-common-settings.provider-DVvuLUfF.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-D2CtNrSn.mjs +0 -1716
  107. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.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.map +0 -1
  112. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
  114. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
  116. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
  119. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
  121. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
  122. package/runtime/index.d.ts +0 -307
  123. /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,21 +1062,21 @@ 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>
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>
1061
1076
  <ax-skeleton class="ax-w-full ax-h-10 ax-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',
@@ -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']) {
@@ -1675,10 +1690,10 @@ class AXPGridLayoutDirective {
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,50 @@ 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
+ /**
2476
+ * True when the resolved value contains `query` (case-insensitive) for `locale`.
2477
+ * Useful for search/filter flows over {@link AXPMultiLanguageString}.
2478
+ */
2479
+ function searchInMultiLanguageString(value, query, locale) {
2480
+ const q = query.trim().toLocaleLowerCase(locale);
2481
+ if (!q) {
2482
+ return true;
2483
+ }
2484
+ const text = resolveMultiLanguageString(value ?? '', locale).toLocaleLowerCase(locale);
2485
+ return text.includes(q);
2486
+ }
2487
+ //#endregion
2488
+
2370
2489
  //#region ---- Tag Types ----
2371
2490
  //#endregion
2372
2491
 
@@ -2518,10 +2637,10 @@ class AXPTagService {
2518
2637
  const uniqueTags = allTags.filter((tag, index, self) => index === self.findIndex((t) => t.title.toLowerCase() === tag.title.toLowerCase()));
2519
2638
  this.cache = uniqueTags;
2520
2639
  }
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' }); }
2640
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2641
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTagService, providedIn: 'root' }); }
2523
2642
  }
2524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPTagService, decorators: [{
2643
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTagService, decorators: [{
2525
2644
  type: Injectable,
2526
2645
  args: [{
2527
2646
  providedIn: 'root',
@@ -3452,6 +3571,13 @@ function getNestedKeys(obj, prefix = '') {
3452
3571
  }
3453
3572
  return keys;
3454
3573
  }
3574
+ /** Normalizes definition categories to an array for iteration and serialization. */
3575
+ function normalizeDefinitionCategories(categories) {
3576
+ if (categories == null) {
3577
+ return [];
3578
+ }
3579
+ return Array.isArray(categories) ? categories : [categories];
3580
+ }
3455
3581
 
3456
3582
  //#region ---- Imports ----
3457
3583
  //#endregion
@@ -3522,7 +3648,7 @@ var AXPExportTemplateToken;
3522
3648
  class AXPCountdownPipe {
3523
3649
  constructor() {
3524
3650
  this.calendarService = inject(AXCalendarService);
3525
- this.countdownSignal = signal(this.setupTimer(), ...(ngDevMode ? [{ debugName: "countdownSignal" }] : []));
3651
+ this.countdownSignal = signal(this.setupTimer(), ...(ngDevMode ? [{ debugName: "countdownSignal" }] : /* istanbul ignore next */ []));
3526
3652
  this.targetDate = 0;
3527
3653
  this.prevValue = 0;
3528
3654
  }
@@ -3551,10 +3677,10 @@ class AXPCountdownPipe {
3551
3677
  updateTargetDate(value) {
3552
3678
  this.targetDate = new Date(value).getTime();
3553
3679
  }
3554
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCountdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3555
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPCountdownPipe, isStandalone: true, name: "countdown", pure: false }); }
3680
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCountdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
3681
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPCountdownPipe, isStandalone: true, name: "countdown", pure: false }); }
3556
3682
  }
3557
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPCountdownPipe, decorators: [{
3683
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPCountdownPipe, decorators: [{
3558
3684
  type: Pipe,
3559
3685
  args: [{
3560
3686
  name: 'countdown',
@@ -3564,6 +3690,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
3564
3690
  }] });
3565
3691
 
3566
3692
  const loggingEnabled = false; // Set to true to enable logging, false to disable
3693
+ //#region ---- Multilingual string helpers ----
3694
+ /**
3695
+ * Per-locale string map as produced by multilingual editors (e.g. `{ "en-US": "...", "fa-IR": "..." }`).
3696
+ */
3697
+ function isLocaleStringMap(value) {
3698
+ if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date) {
3699
+ return false;
3700
+ }
3701
+ const values = Object.values(value);
3702
+ return values.length > 0 && values.every((v) => typeof v === 'string');
3703
+ }
3704
+ /**
3705
+ * Lowercased text for client-side filtering: plain string or all locale values joined.
3706
+ */
3707
+ function toFilterSearchText(value) {
3708
+ if (typeof value === 'string') {
3709
+ return value.toLowerCase();
3710
+ }
3711
+ if (isLocaleStringMap(value)) {
3712
+ return Object.values(value).join(' ').toLowerCase();
3713
+ }
3714
+ return undefined;
3715
+ }
3716
+ function filterValuesAreEqual(itemRaw, condRaw) {
3717
+ if (typeof condRaw === 'string' && isLocaleStringMap(itemRaw)) {
3718
+ return Object.values(itemRaw).some((v) => v.toLowerCase() === condRaw.toLowerCase());
3719
+ }
3720
+ if (typeof itemRaw === 'string' && isLocaleStringMap(condRaw)) {
3721
+ return Object.values(condRaw).some((v) => v.toLowerCase() === itemRaw.toLowerCase());
3722
+ }
3723
+ const itemScalar = typeof itemRaw === 'string' ? itemRaw.toLowerCase() : itemRaw;
3724
+ const condScalar = typeof condRaw === 'string' ? condRaw.toLowerCase() : condRaw;
3725
+ return isEqual(itemScalar, condScalar);
3726
+ }
3727
+ //#endregion
3567
3728
  function applyCondition(item, condition) {
3568
3729
  const rawValue = condition.field ? get(item, condition.field) : null;
3569
3730
  const itemValue = typeof rawValue === 'string' ? rawValue.toLowerCase() : rawValue;
@@ -3584,7 +3745,12 @@ function applyCondition(item, condition) {
3584
3745
  switch (op) {
3585
3746
  case 'equal':
3586
3747
  case 'eq':
3587
- 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
+ }
3588
3754
  if (loggingEnabled) {
3589
3755
  console.log('Equal check result:', result);
3590
3756
  }
@@ -3592,7 +3758,12 @@ function applyCondition(item, condition) {
3592
3758
  case 'notEqual':
3593
3759
  case 'ne':
3594
3760
  case 'neq':
3595
- result = !isEqual(valueToCompare, conditionValue);
3761
+ if (!isNil(condition.field) && condition.field !== '') {
3762
+ result = !filterValuesAreEqual(rawValue, condition.value);
3763
+ }
3764
+ else {
3765
+ result = !isEqual(valueToCompare, conditionValue);
3766
+ }
3596
3767
  if (loggingEnabled) {
3597
3768
  console.log('Not equal check result:', result);
3598
3769
  }
@@ -3625,12 +3796,15 @@ function applyCondition(item, condition) {
3625
3796
  console.log('Less than or equal check result:', result);
3626
3797
  }
3627
3798
  break;
3628
- case 'contains':
3629
- if (typeof valueToCompare === 'string') {
3630
- result = includes(valueToCompare, conditionValue);
3799
+ case 'contains': {
3800
+ const needle = toFilterSearchText(condition.value) ??
3801
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3802
+ const haystack = toFilterSearchText(rawValue);
3803
+ if (haystack !== undefined) {
3804
+ result = includes(haystack, needle);
3631
3805
  }
3632
- else if (Array.isArray(valueToCompare)) {
3633
- result = includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);
3806
+ else if (Array.isArray(rawValue)) {
3807
+ result = includes(rawValue.map((val) => toFilterSearchText(val) ?? val.toString().toLowerCase()), needle);
3634
3808
  }
3635
3809
  else {
3636
3810
  result = false;
@@ -3639,13 +3813,18 @@ function applyCondition(item, condition) {
3639
3813
  console.log('Contains check result:', result);
3640
3814
  }
3641
3815
  break;
3816
+ }
3642
3817
  case 'in':
3643
3818
  if (Array.isArray(conditionValue)) {
3644
3819
  if (typeof valueToCompare === 'string') {
3645
- result = conditionValue.some(val => typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare);
3820
+ result = conditionValue.some((val) => typeof val === 'string' ? val.toLowerCase() === valueToCompare : val === valueToCompare);
3821
+ }
3822
+ else if (isLocaleStringMap(rawValue)) {
3823
+ const localeValues = Object.values(rawValue).map((v) => v.toLowerCase());
3824
+ result = localeValues.some((localeVal) => conditionValue.some((val) => typeof val === 'string' ? val.toLowerCase() === localeVal : val === localeVal));
3646
3825
  }
3647
3826
  else if (Array.isArray(valueToCompare)) {
3648
- result = valueToCompare.some(val => conditionValue.some(condVal => typeof val === 'string' && typeof condVal === 'string'
3827
+ result = valueToCompare.some((val) => conditionValue.some((condVal) => typeof val === 'string' && typeof condVal === 'string'
3649
3828
  ? val.toLowerCase() === condVal.toLowerCase()
3650
3829
  : val === condVal));
3651
3830
  }
@@ -3660,12 +3839,15 @@ function applyCondition(item, condition) {
3660
3839
  console.log('In check result:', result);
3661
3840
  }
3662
3841
  break;
3663
- case 'notContains':
3664
- if (typeof valueToCompare === 'string') {
3665
- result = !includes(valueToCompare, conditionValue);
3842
+ case 'notContains': {
3843
+ const needleNc = toFilterSearchText(condition.value) ??
3844
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3845
+ const haystackNc = toFilterSearchText(rawValue);
3846
+ if (haystackNc !== undefined) {
3847
+ result = !includes(haystackNc, needleNc);
3666
3848
  }
3667
- else if (Array.isArray(valueToCompare)) {
3668
- result = !includes(valueToCompare.map((val) => val.toString().toLowerCase()), conditionValue);
3849
+ else if (Array.isArray(rawValue)) {
3850
+ result = !includes(rawValue.map((val) => toFilterSearchText(val) ?? val.toString().toLowerCase()), needleNc);
3669
3851
  }
3670
3852
  else {
3671
3853
  result = false;
@@ -3674,18 +3856,27 @@ function applyCondition(item, condition) {
3674
3856
  console.log('Not contains check result:', result);
3675
3857
  }
3676
3858
  break;
3677
- case 'startsWith':
3678
- result = typeof valueToCompare === 'string' && startsWith(valueToCompare, conditionValue);
3859
+ }
3860
+ case 'startsWith': {
3861
+ const prefix = toFilterSearchText(condition.value) ??
3862
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3863
+ const haystackSw = toFilterSearchText(rawValue);
3864
+ result = haystackSw !== undefined && startsWith(haystackSw, prefix);
3679
3865
  if (loggingEnabled) {
3680
3866
  console.log('Starts with check result:', result);
3681
3867
  }
3682
3868
  break;
3683
- case 'endsWith':
3684
- result = typeof valueToCompare === 'string' && endsWith(valueToCompare, conditionValue);
3869
+ }
3870
+ case 'endsWith': {
3871
+ const suffix = toFilterSearchText(condition.value) ??
3872
+ (condition.value == null ? '' : String(condition.value).toLowerCase());
3873
+ const haystackEw = toFilterSearchText(rawValue);
3874
+ result = haystackEw !== undefined && endsWith(haystackEw, suffix);
3685
3875
  if (loggingEnabled) {
3686
3876
  console.log('Ends with check result:', result);
3687
3877
  }
3688
3878
  break;
3879
+ }
3689
3880
  case 'isEmpty':
3690
3881
  result = isEmpty(valueToCompare);
3691
3882
  if (loggingEnabled) {
@@ -3837,45 +4028,45 @@ class AXPDeviceService {
3837
4028
  /**
3838
4029
  * Current screen size (Small, Medium, Large)
3839
4030
  */
3840
- this.screenSize = signal(getScreenSize(), ...(ngDevMode ? [{ debugName: "screenSize" }] : []));
4031
+ this.screenSize = signal(getScreenSize(), ...(ngDevMode ? [{ debugName: "screenSize" }] : /* istanbul ignore next */ []));
3841
4032
  /**
3842
4033
  * Current device type (Mobile, Tablet, Desktop)
3843
4034
  */
3844
- this.deviceType = signal(getDeviceType(), ...(ngDevMode ? [{ debugName: "deviceType" }] : []));
4035
+ this.deviceType = signal(getDeviceType(), ...(ngDevMode ? [{ debugName: "deviceType" }] : /* istanbul ignore next */ []));
3845
4036
  /**
3846
4037
  * Whether the device supports touch input
3847
4038
  */
3848
- this.isTouchDevice = signal(isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : []));
4039
+ this.isTouchDevice = signal(isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : /* istanbul ignore next */ []));
3849
4040
  //#endregion
3850
4041
  //#region ---- Computed Signals ----
3851
4042
  /**
3852
4043
  * Whether the screen size is Small
3853
4044
  */
3854
- this.isSmall = computed(() => this.screenSize() === AXPScreenSize.Small, ...(ngDevMode ? [{ debugName: "isSmall" }] : []));
4045
+ this.isSmall = computed(() => this.screenSize() === AXPScreenSize.Small, ...(ngDevMode ? [{ debugName: "isSmall" }] : /* istanbul ignore next */ []));
3855
4046
  /**
3856
4047
  * Whether the screen size is Medium
3857
4048
  */
3858
- this.isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium, ...(ngDevMode ? [{ debugName: "isMedium" }] : []));
4049
+ this.isMedium = computed(() => this.screenSize() === AXPScreenSize.Medium, ...(ngDevMode ? [{ debugName: "isMedium" }] : /* istanbul ignore next */ []));
3859
4050
  /**
3860
4051
  * Whether the screen size is Large
3861
4052
  */
3862
- this.isLarge = computed(() => this.screenSize() === AXPScreenSize.Large, ...(ngDevMode ? [{ debugName: "isLarge" }] : []));
4053
+ this.isLarge = computed(() => this.screenSize() === AXPScreenSize.Large, ...(ngDevMode ? [{ debugName: "isLarge" }] : /* istanbul ignore next */ []));
3863
4054
  /**
3864
4055
  * Whether the device is Mobile
3865
4056
  */
3866
- this.isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile, ...(ngDevMode ? [{ debugName: "isMobileDevice" }] : []));
4057
+ this.isMobileDevice = computed(() => this.deviceType() === AXPDeviceType.Mobile, ...(ngDevMode ? [{ debugName: "isMobileDevice" }] : /* istanbul ignore next */ []));
3867
4058
  /**
3868
4059
  * Whether the device is Tablet
3869
4060
  */
3870
- this.isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet, ...(ngDevMode ? [{ debugName: "isTabletDevice" }] : []));
4061
+ this.isTabletDevice = computed(() => this.deviceType() === AXPDeviceType.Tablet, ...(ngDevMode ? [{ debugName: "isTabletDevice" }] : /* istanbul ignore next */ []));
3871
4062
  /**
3872
4063
  * Whether the device is Desktop
3873
4064
  */
3874
- this.isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop, ...(ngDevMode ? [{ debugName: "isDesktopDevice" }] : []));
4065
+ this.isDesktopDevice = computed(() => this.deviceType() === AXPDeviceType.Desktop, ...(ngDevMode ? [{ debugName: "isDesktopDevice" }] : /* istanbul ignore next */ []));
3875
4066
  /**
3876
4067
  * Whether the device supports touch (alias for isTouchDevice)
3877
4068
  */
3878
- this.isTouchScreen = computed(() => this.isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchScreen" }] : []));
4069
+ this.isTouchScreen = computed(() => this.isTouchDevice(), ...(ngDevMode ? [{ debugName: "isTouchScreen" }] : /* istanbul ignore next */ []));
3879
4070
  //#endregion
3880
4071
  //#region ---- Private Properties ----
3881
4072
  this._resizeListener = null;
@@ -3941,10 +4132,10 @@ class AXPDeviceService {
3941
4132
  destroy() {
3942
4133
  this._removeResizeListener();
3943
4134
  }
3944
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3945
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDeviceService, providedIn: 'root' }); }
4135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4136
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDeviceService, providedIn: 'root' }); }
3946
4137
  }
3947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPDeviceService, decorators: [{
4138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDeviceService, decorators: [{
3948
4139
  type: Injectable,
3949
4140
  args: [{
3950
4141
  providedIn: 'root',
@@ -4048,10 +4239,10 @@ class AXHighlightService {
4048
4239
  resultHTML += '</span>';
4049
4240
  return resultHTML;
4050
4241
  }
4051
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4052
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXHighlightService, providedIn: 'root' }); }
4242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4243
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHighlightService, providedIn: 'root' }); }
4053
4244
  }
4054
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXHighlightService, decorators: [{
4245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHighlightService, decorators: [{
4055
4246
  type: Injectable,
4056
4247
  args: [{
4057
4248
  providedIn: 'root',
@@ -4110,11 +4301,113 @@ function provideLazyProvider(token, loader, multi = true) {
4110
4301
  };
4111
4302
  }
4112
4303
 
4304
+ //#region ---- Unwrapping ----
4305
+ /**
4306
+ * If `raw` is a plain non-array object with a `value` property, returns `value`; otherwise returns `raw`.
4307
+ */
4308
+ function unwrapValueProperty(raw) {
4309
+ if (raw && typeof raw === 'object' && !Array.isArray(raw) && !(raw instanceof Date) && 'value' in raw) {
4310
+ return raw.value;
4311
+ }
4312
+ return raw;
4313
+ }
4314
+ //#endregion
4315
+ //#region ---- Scalar coercion ----
4316
+ /**
4317
+ * Coerces to a trimmed string. Plain objects may carry `{ value }` from setting widgets or `{ id }` from select payloads using `valueField: 'id'`.
4318
+ */
4319
+ function coerceUnknownToTrimmedString(raw) {
4320
+ if (typeof raw === 'string') {
4321
+ return raw.trim();
4322
+ }
4323
+ if (raw && typeof raw === 'object' && !Array.isArray(raw) && !(raw instanceof Date)) {
4324
+ const r = raw;
4325
+ if ('value' in r && r['value'] != null) {
4326
+ return String(r['value']).trim();
4327
+ }
4328
+ if ('id' in r && r['id'] != null) {
4329
+ return String(r['id']).trim();
4330
+ }
4331
+ }
4332
+ return '';
4333
+ }
4334
+ /**
4335
+ * Coerces to boolean: direct booleans pass through; wrapped `{ value: true | 'true' }` is respected; otherwise false.
4336
+ */
4337
+ function coerceUnknownToBoolean(raw) {
4338
+ if (typeof raw === 'boolean') {
4339
+ return raw;
4340
+ }
4341
+ if (raw && typeof raw === 'object' && 'value' in raw) {
4342
+ const v = raw.value;
4343
+ return v === true || v === 'true';
4344
+ }
4345
+ return false;
4346
+ }
4347
+ /** Parses a finite number after optional `{ value }` unwrap; non-finite or empty string yields NaN. */
4348
+ function coerceUnknownToFiniteNumber(raw) {
4349
+ const v = unwrapValueProperty(raw);
4350
+ if (v === null || v === undefined) {
4351
+ return NaN;
4352
+ }
4353
+ if (typeof v === 'number') {
4354
+ return Number.isFinite(v) ? v : NaN;
4355
+ }
4356
+ if (typeof v === 'boolean') {
4357
+ return v ? 1 : 0;
4358
+ }
4359
+ if (typeof v === 'string') {
4360
+ const t = v.trim();
4361
+ if (t === '') {
4362
+ return NaN;
4363
+ }
4364
+ const n = Number(t);
4365
+ return Number.isFinite(n) ? n : NaN;
4366
+ }
4367
+ return NaN;
4368
+ }
4369
+ /** Parses a Date after optional `{ value }` unwrap; invalid input yields Invalid Date. */
4370
+ function coerceUnknownToDate(raw) {
4371
+ const v = unwrapValueProperty(raw);
4372
+ if (v === null || v === undefined) {
4373
+ return new Date(NaN);
4374
+ }
4375
+ if (v instanceof Date) {
4376
+ return new Date(v.getTime());
4377
+ }
4378
+ if (typeof v === 'number' && Number.isFinite(v)) {
4379
+ return new Date(v);
4380
+ }
4381
+ if (typeof v === 'string') {
4382
+ const t = v.trim();
4383
+ if (t === '') {
4384
+ return new Date(NaN);
4385
+ }
4386
+ return new Date(t);
4387
+ }
4388
+ return new Date(NaN);
4389
+ }
4390
+ //#endregion
4391
+
4113
4392
  function extractTextFromHtml(value) {
4114
4393
  const div = document.createElement('div');
4115
4394
  div.innerHTML = value;
4116
4395
  return div.textContent || div.innerText || '';
4117
4396
  }
4397
+ /**
4398
+ * True when the string likely contains HTML markup (e.g. `<p>`, `<ul>`), as opposed to plain text.
4399
+ * Used to choose innerHTML vs text interpolation for multilingual fields.
4400
+ */
4401
+ function containsHtmlMarkup(value) {
4402
+ if (value == null) {
4403
+ return false;
4404
+ }
4405
+ const t = value.trim();
4406
+ if (!t) {
4407
+ return false;
4408
+ }
4409
+ return /<\/?[a-z][\s\S]*?>/i.test(t);
4410
+ }
4118
4411
  /**
4119
4412
  * Generate kebab-case group name from title
4120
4413
  */
@@ -4132,5 +4425,5 @@ function generateKebabCase(title) {
4132
4425
  * Generated bundle index. Do not edit.
4133
4426
  */
4134
4427
 
4135
- 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 };
4428
+ 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, coerceUnknownToBoolean, coerceUnknownToDate, coerceUnknownToFiniteNumber, coerceUnknownToTrimmedString, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, normalizeDefinitionCategories, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, searchInMultiLanguageString, setSmart, sortByMultiLanguageString, unwrapValueProperty };
4136
4429
  //# sourceMappingURL=acorex-platform-core.mjs.map