@acorex-platform/framework-client 0.0.37 → 0.0.46

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 (104) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs +212 -44
  2. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs → acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs} +31 -1
  4. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-framework-client-common.mjs +848 -76
  6. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-core.mjs +273 -96
  8. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +292 -11
  10. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs} +10 -6
  12. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs +66 -0
  14. package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs +195 -0
  16. package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +3987 -1020
  18. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +1179 -304
  20. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  21. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-C74cBc-K.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dc_NpBx6.mjs} +1697 -323
  22. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dc_NpBx6.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-B6nG9dIS.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-Cx-n7ZuA.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-B6nG9dIS.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-Cx-n7ZuA.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DLQA_Q2Y.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-BONV249y.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DLQA_Q2Y.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-BONV249y.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-B4wC1iqZ.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-uTG2nFly.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-B4wC1iqZ.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-uTG2nFly.mjs.map} +1 -1
  29. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  30. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +3 -3
  31. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +3854 -3278
  33. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CDpzvn6z.mjs +33191 -0
  35. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CDpzvn6z.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs} +8 -5
  37. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs +45 -0
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs.map +1 -0
  40. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs +68 -0
  41. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs +88 -0
  43. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs +71 -0
  45. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs +81 -0
  47. package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs.map +1 -0
  48. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs} +41 -23
  49. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs.map +1 -0
  50. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cw3NhWL8.mjs} +3 -3
  51. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cw3NhWL8.mjs.map} +1 -1
  52. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs +71 -0
  53. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs.map +1 -0
  54. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs +111 -0
  55. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs.map +1 -0
  56. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs +77 -0
  57. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs.map +1 -0
  58. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs} +3 -3
  59. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs.map} +1 -1
  60. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BEa-vD6O.mjs} +21 -8
  61. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BEa-vD6O.mjs.map +1 -0
  62. package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs +124 -0
  63. package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs.map +1 -0
  64. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs +345 -0
  65. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs.map +1 -0
  66. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -31985
  67. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  68. package/fesm2022/acorex-platform-framework-client-realtime.mjs +2 -1
  69. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  70. package/fesm2022/acorex-platform-framework-client-runtime.mjs +47 -3
  71. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
  72. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CHLsBvBE.mjs} +2 -2
  73. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs.map → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CHLsBvBE.mjs.map} +1 -1
  74. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +373 -70
  75. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  76. package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs → acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs} +102 -1
  77. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs.map +1 -0
  78. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +174 -22
  79. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  80. package/package.json +2 -2
  81. package/realtime/README.md +1 -1
  82. package/types/acorex-platform-framework-client-auth.d.ts +18 -1
  83. package/types/acorex-platform-framework-client-common.d.ts +209 -8
  84. package/types/acorex-platform-framework-client-core.d.ts +166 -121
  85. package/types/acorex-platform-framework-client-layout-builder.d.ts +29 -0
  86. package/types/acorex-platform-framework-client-layout-components.d.ts +699 -146
  87. package/types/acorex-platform-framework-client-layout-designer.d.ts +192 -14
  88. package/types/acorex-platform-framework-client-layout-entity.d.ts +159 -91
  89. package/types/acorex-platform-framework-client-layout-views.d.ts +16 -0
  90. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +140 -37
  91. package/types/acorex-platform-framework-client-layout-widgets.d.ts +235 -117
  92. package/types/acorex-platform-framework-client-realtime.d.ts +16 -3
  93. package/types/acorex-platform-framework-client-runtime.d.ts +8 -0
  94. package/types/acorex-platform-framework-client-themes-default.d.ts +62 -11
  95. package/types/acorex-platform-framework-client-themes-shared.d.ts +25 -2
  96. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs +0 -77
  99. package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-C74cBc-K.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs.map +0 -1
@@ -1,13 +1,14 @@
1
1
  import { AXClickEvent } from '@acorex/cdk/common';
2
2
  import * as _angular_core from '@angular/core';
3
- import { EventEmitter, OnChanges, OnDestroy, WritableSignal, NgZone, ComponentRef, SimpleChanges } from '@angular/core';
4
- import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';
3
+ import { EventEmitter, DestroyRef, OnChanges, OnDestroy, WritableSignal, NgZone, ComponentRef, SimpleChanges } from '@angular/core';
4
+ import * as _acorex_platform_framework_shared_widget_core from '@acorex-platform/framework-shared/widget-core';
5
+ import { AXPWidgetConfig, AXPWidgetGroup, AXPWidgetViewType, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';
5
6
  import { AXBasePageComponent } from '@acorex/components/page';
6
7
  import { AXTabStripChangedEvent } from '@acorex/components/tabs';
7
8
  import { AXPMultiLanguageString, AXPDefinitionCategory, AXPWidgetNode, AXPWidgetRenderMode, AXPContextChangeEvent } from '@acorex-platform/framework-shared/core';
8
9
  import { AXPWidgetItemData, AXPWidgetItemClickEvent } from '@acorex-platform/framework-client/layout/components';
9
10
  import { AXMenuItem } from '@acorex/components/menu';
10
- import { AXPBaseWidgetComponent, AXPWidgetRegistryService, AXPLayoutBaseWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
11
+ import { AXPBaseWidgetComponent, AXPLocalDataSource, AXPLocalDataSourceStore, AXPLocalDataSourcePatch, AXPWidgetRegistryService, AXPLayoutBaseWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
11
12
  import { Subject } from 'rxjs';
12
13
  import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';
13
14
  import { AXUnsubscriber } from '@acorex/core/utils';
@@ -65,7 +66,6 @@ declare class AXPDesignerGridDrawerComponent {
65
66
  protected handleMouseHover(r: number, c: number): void;
66
67
  protected handleClick(r: number, c: number): void;
67
68
  protected handleMouseLeave(event: MouseEvent): void;
68
- private get __style();
69
69
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDesignerGridDrawerComponent, never>;
70
70
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDesignerGridDrawerComponent, "axp-designer-grid-drawer", never, { "rowsCount": { "alias": "rows"; "required": false; "isSignal": true; }; "colsCount": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "rowsCount": "rowsChange"; "colsCount": "columnsChange"; "onSelect": "onSelect"; }, never, never, true, never>;
71
71
  }
@@ -137,8 +137,48 @@ declare class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
137
137
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDesignerWidgetPickerComponent, "ng-component", never, { "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
138
138
  }
139
139
 
140
+ type AXPDesignerSurfaceId = 'form' | 'widget' | 'page' | 'email';
141
+ type AXPDesignerDocumentKind = 'widget-tree' | 'text-template-blocks';
142
+ type AXPDesignerDrawerId = 'pages' | 'dataSources' | 'outline' | 'history' | 'palette';
143
+ type AXPDesignerPreviewPlayer = 'angular' | 'html-walker';
144
+ type AXPDesignerWalkerChannel = 'html' | 'email' | 'print';
145
+ /**
146
+ * Host policy for which registered widgets appear in Add Widget / palette.
147
+ * Widget configs stay taxonomy (`type`, `groups`, `categories`); the profile selects.
148
+ */
149
+ interface AXPDesignerSurfaceWidgetFilter {
150
+ includeGroups?: AXPWidgetGroup[];
151
+ includeTypes?: AXPWidgetViewType[];
152
+ includeNames?: string[];
153
+ excludeNames?: string[];
154
+ }
155
+ interface AXPDesignerSurfacePreview {
156
+ player: AXPDesignerPreviewPlayer;
157
+ path?: string;
158
+ viewerPath?: string;
159
+ walkerChannel?: AXPDesignerWalkerChannel;
160
+ }
161
+ interface AXPDesignerSurfaceChrome {
162
+ drawers?: AXPDesignerDrawerId[];
163
+ }
164
+ /**
165
+ * Host-provided designer surface. The shell, undo, board, and property panel stay shared.
166
+ */
167
+ interface AXPDesignerSurfaceProfile {
168
+ id: AXPDesignerSurfaceId;
169
+ documentKind: AXPDesignerDocumentKind;
170
+ widgets?: AXPDesignerSurfaceWidgetFilter;
171
+ chrome?: AXPDesignerSurfaceChrome;
172
+ preview?: AXPDesignerSurfacePreview;
173
+ rootWidget?: string;
174
+ pickerTabContext?: string;
175
+ }
176
+
140
177
  interface AXPWidgetPickerShowOptions {
141
- groups: AXPWidgetGroupEnum[];
178
+ /** Legacy dashboard path: intersect `groups` when `profile` is omitted. */
179
+ groups?: AXPWidgetGroupEnum[];
180
+ /** Designer surfaces: profile include/exclude wins over `groups`. */
181
+ profile?: AXPDesignerSurfaceProfile;
142
182
  /** User-scoped last tab; unique per picker host (use `AXP_WIDGET_PICKER_TAB_CONTEXT`). */
143
183
  tabPersistenceContext: string;
144
184
  }
@@ -147,6 +187,7 @@ declare class AXPWidgetPickerService {
147
187
  private widgetRegistryService;
148
188
  private translationService;
149
189
  showPicker(options: AXPWidgetPickerShowOptions): Promise<AXPWidgetNode[]>;
190
+ private matchesPickerOptions;
150
191
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPickerService, never>;
151
192
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPickerService>;
152
193
  }
@@ -157,6 +198,8 @@ declare class AXPWidgetPickerService {
157
198
  */
158
199
  declare const AXP_WIDGET_PICKER_TAB_CONTEXT: {
159
200
  readonly layoutDesignerFormElements: "layout-designer-form-elements";
201
+ readonly layoutDesignerWidgetTemplate: "layout-designer-widget-template";
202
+ readonly layoutDesignerPage: "layout-designer-page";
160
203
  readonly dashboardHome: "dashboard-home";
161
204
  };
162
205
 
@@ -262,6 +305,8 @@ declare class AXPDesignerService {
262
305
  readonly document: _angular_core.WritableSignal<AXPWidgetNode>;
263
306
  readonly currentPageIndex: _angular_core.WritableSignal<number>;
264
307
  readonly currentPage: _angular_core.WritableSignal<AXPWidgetNode>;
308
+ /** Bumps when the board must remount the page without cloning it off `document`. */
309
+ readonly pageRenderEpoch: _angular_core.WritableSignal<number>;
265
310
  private commandManager;
266
311
  private clipboard;
267
312
  canCutCopy: _angular_core.Signal<boolean>;
@@ -279,8 +324,16 @@ declare class AXPDesignerService {
279
324
  readonly canRedo: _angular_core.Signal<boolean>;
280
325
  readonly canSave: _angular_core.Signal<boolean>;
281
326
  readonly unsavedChanges: _angular_core.WritableSignal<boolean>;
327
+ readonly surfaceProfile: _angular_core.WritableSignal<AXPDesignerSurfaceProfile>;
328
+ private readonly localDataSources;
329
+ readonly sources: _angular_core.Signal<AXPLocalDataSource[]>;
282
330
  breadcrumbs: _angular_core.Signal<AXPWidgetNode[]>;
283
331
  selectedNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
332
+ private readonly widgetInstances;
333
+ /** Property-panel writes are recorded only after the user focuses the panel. */
334
+ private acceptPropertyPanelHistory;
335
+ /** Last panel payload applied to the canvas. Equal echoes must not republish the preview. */
336
+ private lastAppliedPropertyPanelValues;
284
337
  selectedNodeConfig: _angular_core.Signal<AXPWidgetConfig<any>>;
285
338
  private _focusedNode;
286
339
  focusedNode: () => AXPWidgetNode | null;
@@ -294,7 +347,15 @@ declare class AXPDesignerService {
294
347
  constructor();
295
348
  private can;
296
349
  register(command: AXPDesignerRegisterCommand): void;
350
+ unregister(widget: AXPWidgetNode): void;
351
+ getWidgetInstance(widget: AXPWidgetNode): AXPDesignerWidgetComponent | null;
352
+ private widgetInstanceKey;
297
353
  select(command: AXPDesignerSelectCommand): void;
354
+ armPropertyPanelHistory(): void;
355
+ applyPropertyPanelChange(event: {
356
+ values: unknown;
357
+ mode: 'init' | 'update';
358
+ }): void;
298
359
  update(command: AXPDesignerUpdateCommand): void;
299
360
  focus(command: AXPDesignerFocusCommand): void;
300
361
  refresh(command: AXPDesignerRefreshCommand): void;
@@ -302,6 +363,14 @@ declare class AXPDesignerService {
302
363
  showPicker(currentNode?: AXPWidgetNode): Promise<AXPWidgetNode[]>;
303
364
  new(): void;
304
365
  private createDoc;
366
+ toLocalDataSourceStore(): AXPLocalDataSourceStore;
367
+ getLocalDataSource(id: string): AXPLocalDataSource | undefined;
368
+ createLocalDataSource(name: string): AXPLocalDataSource;
369
+ updateLocalDataSource(id: string, patch: AXPLocalDataSourcePatch): void;
370
+ removeLocalDataSource(id: string): void;
371
+ private hydrateLocalDataSources;
372
+ private persistLocalDataSources;
373
+ private stripLocalDataSourcesFromPages;
305
374
  private createPage;
306
375
  addNewPage(): void;
307
376
  removePage(index: number): void;
@@ -311,11 +380,24 @@ declare class AXPDesignerService {
311
380
  findWidgetById(root: AXPWidgetNode, id: string): AXPWidgetNode | null;
312
381
  private findParent;
313
382
  private findNearestContainer;
383
+ createWidgetNode(node: AXPWidgetNode): AXPWidgetNode;
384
+ /** Fills missing `__meta__.id`, config, and name on an already-on-canvas tree (e.g. AI-added children). */
385
+ ensureWidgetTreeMeta(root?: AXPWidgetNode): void;
386
+ /**
387
+ * Assigns unique `__meta__.id`, registry config, and a name on every node.
388
+ * Nested AI add-widget trees must be stamped the same way paste already does;
389
+ * otherwise children share `undefined` ids and the designer selects them all.
390
+ */
391
+ private stampNewWidgetTree;
392
+ private stampMissingWidgetMeta;
314
393
  addWidget(currentNode: AXPWidgetNode, node: AXPWidgetNode): AXPWidgetNode;
315
394
  removeWidget(node?: AXPWidgetNode): void;
316
395
  navigateTo(index: number): void;
317
396
  redo(): void;
318
397
  undo(): void;
398
+ isInTransaction(): boolean;
399
+ runTransaction<T>(action: () => T, description?: string): T;
400
+ private syncCanvasAfterHistory;
319
401
  clearHistory(): void;
320
402
  private removeMetaProp;
321
403
  private addMetaToNodes;
@@ -333,15 +415,21 @@ declare class AXPDesignerService {
333
415
  importJSon(): Promise<void>;
334
416
  loadByContent(content: string): Promise<void>;
335
417
  private countTotalNodes;
418
+ private ensureDefaultTabsetChild;
336
419
  private generateUniqueName;
420
+ private collectDocumentNameSet;
421
+ private nextUniqueName;
337
422
  generateUniqueId(): number;
338
423
  private collectAllNames;
339
424
  updatePreview(): void;
340
425
  openPreviewDialog(): Promise<void>;
341
426
  openPreviewWindow(): void;
342
427
  getContextMenuItems(instance: AXPDesignerWidgetComponent, isRoot?: boolean): AXMenuItem[];
428
+ getContextMenuItemsForNode(node: AXPWidgetNode, isRoot?: boolean): AXMenuItem[];
429
+ private buildContextMenuItems;
343
430
  executeCommand(context: {
344
- instance: AXPDesignerWidgetComponent;
431
+ instance?: AXPDesignerWidgetComponent | null;
432
+ node?: AXPWidgetNode;
345
433
  name: string;
346
434
  data?: any;
347
435
  }): Promise<void>;
@@ -350,17 +438,65 @@ declare class AXPDesignerService {
350
438
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDesignerService>;
351
439
  }
352
440
 
441
+ /**
442
+ * Distributed hooks for extending the layout designer footer without coupling the designer library to feature modules.
443
+ *
444
+ * - {@link AXPLayoutDesignerFooterHookKeys.end}: icon actions at the trailing end of the footer (after breadcrumbs).
445
+ */
446
+ declare const AXPLayoutDesignerFooterHookKeys: {
447
+ readonly end: "layout-designer.footer.end";
448
+ };
449
+ interface AXPLayoutDesignerFooterAction {
450
+ id: string;
451
+ priority?: number;
452
+ /** i18n key (resolved by the footer host when set). Used as the button title. */
453
+ labelKey?: string;
454
+ /** Plain label when no translation key is used. */
455
+ label?: string;
456
+ iconClass?: string;
457
+ run: () => void | Promise<void>;
458
+ }
459
+ interface AXPLayoutDesignerFooterEndPayload {
460
+ /** Current designer instance (typed as unknown to avoid circular imports in consumers). */
461
+ designer: unknown;
462
+ /** Designer host lifetime — extensions register page context against this owner. */
463
+ owner?: DestroyRef;
464
+ items: AXPLayoutDesignerFooterAction[];
465
+ }
466
+
467
+ /** Footer action with a pre-resolved title for the icon button tooltip. */
468
+ interface AXPLayoutDesignerFooterActionResolved extends AXPLayoutDesignerFooterAction {
469
+ resolvedLabel?: string;
470
+ }
353
471
  declare class AXPLayoutDesignerComponent {
354
472
  protected service: AXPDesignerService;
473
+ private readonly hooks;
474
+ private readonly translationService;
475
+ private readonly destroyRef;
476
+ protected readonly footerEndActions: _angular_core.WritableSignal<AXPLayoutDesignerFooterActionResolved[]>;
355
477
  id: _angular_core.InputSignal<string | null | undefined>;
356
478
  strategy: _angular_core.InputSignal<string | null | undefined>;
479
+ /** Host surface policy. Form Builder may omit this; the form profile is the default. */
480
+ profile: _angular_core.InputSignal<AXPDesignerSurfaceProfile>;
357
481
  private propertyViewer;
482
+ protected readonly layoutProfileContext: _angular_core.Signal<{
483
+ size: _acorex_platform_framework_shared_widget_core.AXPLayoutSize;
484
+ medium: "screen";
485
+ }>;
358
486
  protected nodeConfig: _angular_core.Signal<AXPWidgetConfig<any> | null>;
487
+ protected hasPagesDrawer: _angular_core.Signal<boolean>;
488
+ protected hasDataSourcesDrawer: _angular_core.Signal<boolean>;
489
+ protected hasOutlineDrawer: _angular_core.Signal<boolean>;
490
+ protected hasHistoryDrawer: _angular_core.Signal<boolean>;
491
+ protected hasPaletteDrawer: _angular_core.Signal<boolean>;
359
492
  constructor();
360
493
  ngOnInit(): void;
361
- private get __styles();
494
+ protected readonly designerDirection = "ltr";
495
+ protected hasDrawer(drawer: AXPDesignerDrawerId): boolean;
496
+ protected runFooterEndAction(entry: AXPLayoutDesignerFooterAction): void;
497
+ private loadFooterEndActions;
362
498
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDesignerComponent, never>;
363
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerComponent, "axp-layout-designer", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "strategy": { "alias": "strategy"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
499
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerComponent, "axp-layout-designer", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "strategy": { "alias": "strategy"; "required": false; "isSignal": true; }; "profile": { "alias": "profile"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
364
500
  }
365
501
 
366
502
  interface AXPDesignerContent {
@@ -375,17 +511,38 @@ declare abstract class AXPDesignerConnector<T = string> {
375
511
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDesignerConnector<any>>;
376
512
  }
377
513
 
514
+ /**
515
+ * Default Form Builder surface. Hosts may pass this explicitly or omit `profile`.
516
+ */
517
+ declare const AXP_FORM_DESIGNER_SURFACE_PROFILE: AXPDesignerSurfaceProfile;
518
+ /**
519
+ * Composed widget template: same offer list as form, no Pages drawer.
520
+ */
521
+ declare const AXP_WIDGET_DESIGNER_SURFACE_PROFILE: AXPDesignerSurfaceProfile;
522
+ /**
523
+ * Website page surface. Palette chrome is declared; walker preview is Phase 2.
524
+ * Offer list is name-based until a `page-widget` group exists.
525
+ */
526
+ declare const AXP_PAGE_DESIGNER_SURFACE_PROFILE: AXPDesignerSurfaceProfile;
527
+
528
+ /**
529
+ * Include if any include rule hits, then subtract `excludeNames`.
530
+ * An empty include set matches nothing (fail closed).
531
+ */
532
+ declare function widgetMatchesDesignerSurface(widget: Pick<AXPWidgetConfig, 'name' | 'groups' | 'type'>, profile: AXPDesignerSurfaceProfile): boolean;
533
+ declare function designerSurfaceHasDrawer(profile: AXPDesignerSurfaceProfile, drawer: AXPDesignerDrawerId): boolean;
534
+
378
535
  /**
379
536
  * Distributed hooks for extending the layout designer header menu without coupling the designer library to feature modules.
380
537
  *
381
538
  * - {@link AXPLayoutDesignerHeaderMenuHookKeys.root}: top-level bar items (siblings of File, Edit, …).
382
- * - {@link AXPLayoutDesignerHeaderMenuHookKeys.submenu}: extra items inside a top-level menu (`file`, `edit`, `run`, `help`).
539
+ * - {@link AXPLayoutDesignerHeaderMenuHookKeys.submenu}: extra items inside a menu (`file`, `import`, `edit`, `run`, `help`).
383
540
  */
384
541
  declare const AXPLayoutDesignerHeaderMenuHookKeys: {
385
542
  readonly root: "layout-designer.header-menu.root";
386
543
  readonly submenu: "layout-designer.header-menu.submenu";
387
544
  };
388
- type AXPLayoutDesignerHeaderParentMenuId = 'file' | 'edit' | 'run' | 'help';
545
+ type AXPLayoutDesignerHeaderParentMenuId = 'file' | 'import' | 'edit' | 'run' | 'help';
389
546
  interface AXPLayoutDesignerHeaderMenuEntry {
390
547
  id: string;
391
548
  priority?: number;
@@ -399,10 +556,14 @@ interface AXPLayoutDesignerHeaderMenuEntry {
399
556
  interface AXPLayoutDesignerHeaderMenuRootPayload {
400
557
  /** Current designer instance (typed as unknown to avoid circular imports in consumers). */
401
558
  designer: unknown;
559
+ /** Header host lifetime — extensions register page context against this owner. */
560
+ owner?: DestroyRef;
402
561
  items: AXPLayoutDesignerHeaderMenuEntry[];
403
562
  }
404
563
  interface AXPLayoutDesignerHeaderMenuSubmenuPayload {
405
564
  designer: unknown;
565
+ /** Header host lifetime — extensions register page context against this owner. */
566
+ owner?: DestroyRef;
406
567
  parentMenuId: AXPLayoutDesignerHeaderParentMenuId;
407
568
  items: AXPLayoutDesignerHeaderMenuEntry[];
408
569
  }
@@ -438,7 +599,16 @@ declare class AXPWidgetDesignerRendererDirective implements OnChanges, OnDestroy
438
599
  node: _angular_core.InputSignal<AXPWidgetNode>;
439
600
  private hostElement;
440
601
  private getId;
602
+ /** Prefer `__meta__.id`; fall back to object identity so nameless AI children are not all treated as the same widget. */
603
+ private sameWidget;
441
604
  private isCurrentWidget;
605
+ /**
606
+ * Drawer inserts (flex, grid, table) run inside a transaction that refreshes the page only.
607
+ * Each widget copies `node.children` into its own signal at creation, so a page refresh must
608
+ * also sync every nested container or the size picker stays on screen after cells are added.
609
+ */
610
+ private shouldSyncChildren;
611
+ private isNestedUnder;
442
612
  private subs;
443
613
  /**
444
614
  * @ignore
@@ -452,6 +622,7 @@ declare class AXPWidgetDesignerRendererDirective implements OnChanges, OnDestroy
452
622
  focus(): void;
453
623
  blur(): void;
454
624
  private applySelectedStyle;
625
+ private isHostFullyVisible;
455
626
  private removeSelectedStyle;
456
627
  private addOverlay;
457
628
  private removeOverlay;
@@ -461,20 +632,27 @@ declare class AXPWidgetDesignerRendererDirective implements OnChanges, OnDestroy
461
632
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXPWidgetDesignerRendererDirective, "[axp-widget-designer-renderer]", never, { "parentNode": { "alias": "parentNode"; "required": false; "isSignal": true; }; "parentElement": { "alias": "parentElement"; "required": false; "isSignal": true; }; "parentComponent": { "alias": "parentComponent"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; "locked": { "alias": "locked"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": true; "isSignal": true; }; "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
462
633
  }
463
634
 
464
- declare class AXPLayoutDesignerPreviewViewerComponent {
635
+ declare class AXPLayoutDesignerPreviewViewerComponent implements AXPLocalDataSourceStore {
465
636
  protected context: any;
637
+ readonly initialDocument: _angular_core.InputSignal<AXPWidgetNode | null>;
466
638
  protected readonly document: _angular_core.WritableSignal<AXPWidgetNode>;
467
639
  protected readonly currentPageIndex: _angular_core.WritableSignal<number>;
468
640
  protected connector: AXPDesignerConnector<any>;
469
641
  protected eventService: AXPBroadcastEventService;
470
642
  protected unsubscriber: AXUnsubscriber;
643
+ readonly sources: _angular_core.Signal<AXPLocalDataSource[]>;
644
+ get(id: string): AXPLocalDataSource | undefined;
645
+ create(name: string): AXPLocalDataSource;
646
+ update(): void;
647
+ remove(): void;
471
648
  protected readonly currentPage: _angular_core.Signal<AXPWidgetNode>;
649
+ private get __class();
472
650
  constructor();
473
651
  ngAfterViewInit(): void;
474
652
  protected handleContextChanged(e: AXPContextChangeEvent): void;
475
653
  ngOnDestroy(): void;
476
654
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDesignerPreviewViewerComponent, never>;
477
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerPreviewViewerComponent, "axp-layout-builder-viewer", never, {}, {}, never, never, true, never>;
655
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerPreviewViewerComponent, "axp-layout-builder-viewer", never, { "initialDocument": { "alias": "initialDocument"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
478
656
  }
479
657
 
480
658
  declare class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
@@ -497,5 +675,5 @@ declare class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
497
675
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerPreviewComponent, "axp-layout-preview", never, {}, {}, never, never, true, never>;
498
676
  }
499
677
 
500
- export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerFlexDrawerComponent, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerHeaderMenuHookKeys, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, AXP_WIDGET_PICKER_TAB_CONTEXT, cloneWidgetMenu };
501
- export type { AXPDesignerAddNodeCommand, AXPDesignerAddNodeEvent, AXPDesignerContent, AXPDesignerFocusCommand, AXPDesignerFocusEvent, AXPDesignerMode, AXPDesignerPreviewMessage, AXPDesignerPreviewSize, AXPDesignerRefreshCommand, AXPDesignerRefreshEvent, AXPDesignerRegisterCommand, AXPDesignerSaveFormMessage, AXPDesignerSelectCommand, AXPDesignerSelectEvent, AXPDesignerUpdateCommand, AXPDesignerUpdateEvent, AXPDesignerWidgetComponent, AXPDisplayWidgetConfig, AXPLayoutDesignerHeaderMenuEntry, AXPLayoutDesignerHeaderMenuRootPayload, AXPLayoutDesignerHeaderMenuSubmenuPayload, AXPLayoutDesignerHeaderParentMenuId, AXPWidgetPickerShowOptions };
678
+ export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerFlexDrawerComponent, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerFooterHookKeys, AXPLayoutDesignerHeaderMenuHookKeys, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, AXP_FORM_DESIGNER_SURFACE_PROFILE, AXP_PAGE_DESIGNER_SURFACE_PROFILE, AXP_WIDGET_DESIGNER_SURFACE_PROFILE, AXP_WIDGET_PICKER_TAB_CONTEXT, cloneWidgetMenu, designerSurfaceHasDrawer, widgetMatchesDesignerSurface };
679
+ export type { AXPDesignerAddNodeCommand, AXPDesignerAddNodeEvent, AXPDesignerContent, AXPDesignerDocumentKind, AXPDesignerDrawerId, AXPDesignerFocusCommand, AXPDesignerFocusEvent, AXPDesignerMode, AXPDesignerPreviewMessage, AXPDesignerPreviewPlayer, AXPDesignerPreviewSize, AXPDesignerRefreshCommand, AXPDesignerRefreshEvent, AXPDesignerRegisterCommand, AXPDesignerSaveFormMessage, AXPDesignerSelectCommand, AXPDesignerSelectEvent, AXPDesignerSurfaceChrome, AXPDesignerSurfaceId, AXPDesignerSurfacePreview, AXPDesignerSurfaceProfile, AXPDesignerSurfaceWidgetFilter, AXPDesignerUpdateCommand, AXPDesignerUpdateEvent, AXPDesignerWalkerChannel, AXPDesignerWidgetComponent, AXPDisplayWidgetConfig, AXPLayoutDesignerFooterAction, AXPLayoutDesignerFooterEndPayload, AXPLayoutDesignerHeaderMenuEntry, AXPLayoutDesignerHeaderMenuRootPayload, AXPLayoutDesignerHeaderMenuSubmenuPayload, AXPLayoutDesignerHeaderParentMenuId, AXPWidgetPickerShowOptions };