@praxisui/page-builder 3.0.0-beta.6 → 3.0.0-beta.8
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.
- package/README.md +11 -12
- package/fesm2022/praxisui-page-builder.mjs +5307 -3806
- package/fesm2022/praxisui-page-builder.mjs.map +1 -1
- package/index.d.ts +428 -276
- package/package.json +3 -4
package/index.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { EventEmitter, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider,
|
|
4
|
-
import { ComponentDocMeta, ComponentMetadataRegistry,
|
|
3
|
+
import { EventEmitter, OnInit, OnChanges, SimpleChanges, WritableSignal, InjectionToken, Provider, Type } from '@angular/core';
|
|
4
|
+
import { ComponentDocMeta, ComponentMetadataRegistry, CompositionLink, DiagnosticRecord, SettingsValueProvider, WidgetPageDefinition, WidgetInstance, WidgetConnection, WidgetShellConfig, WidgetShellAction, WidgetPageGroupingDefinition, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, PageIdentity, WidgetStateNode, WidgetDerivedStateNode, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog, WidgetPageStateInput, DynamicWidgetPageComponent, SettingsPanelBridge } from '@praxisui/core';
|
|
5
5
|
export { WidgetShellComponent } from '@praxisui/core';
|
|
6
6
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
7
7
|
import * as rxjs from 'rxjs';
|
|
8
|
+
import { BehaviorSubject } from 'rxjs';
|
|
8
9
|
import { FormGroup, FormControl, FormArray } from '@angular/forms';
|
|
9
|
-
import { SettingsValueProvider } from '@praxisui/settings-panel';
|
|
10
|
-
import { GridsterConfig, GridsterItem } from 'angular-gridster2';
|
|
11
|
-
import { Router, ActivatedRoute } from '@angular/router';
|
|
10
|
+
import { SettingsValueProvider as SettingsValueProvider$1 } from '@praxisui/settings-panel';
|
|
12
11
|
|
|
13
12
|
declare const PLACEHOLDER = 1;
|
|
14
13
|
|
|
@@ -79,13 +78,26 @@ declare class ComponentPaletteDialogComponent implements OnInit {
|
|
|
79
78
|
static ɵcmp: i0.ɵɵComponentDeclaration<ComponentPaletteDialogComponent, "praxis-component-palette-dialog", never, {}, {}, never, never, true, never>;
|
|
80
79
|
}
|
|
81
80
|
|
|
82
|
-
|
|
81
|
+
type AuthoringCanonicalLinkDiagnostic = Pick<DiagnosticRecord, 'code' | 'severity' | 'message'>;
|
|
82
|
+
type AuthoringCanonicalLinkReadModel = CompositionLink & {
|
|
83
|
+
/** Convenience alias for authoring surfaces while the template still reads `source` directly. */
|
|
84
|
+
source: 'legacy-widget-connection' | 'native-composition-link';
|
|
85
|
+
diagnostics: AuthoringCanonicalLinkDiagnostic[];
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
type EndpointOption = {
|
|
89
|
+
value: string;
|
|
90
|
+
label: string;
|
|
91
|
+
kind: 'primary' | 'derived';
|
|
92
|
+
description?: string;
|
|
93
|
+
};
|
|
94
|
+
declare class ConnectionBuilderComponent implements OnInit, OnChanges, SettingsValueProvider {
|
|
83
95
|
private dialog;
|
|
84
96
|
private registry;
|
|
85
97
|
private snack;
|
|
86
|
-
page?:
|
|
87
|
-
widgets?:
|
|
88
|
-
pageChange: EventEmitter<
|
|
98
|
+
page?: WidgetPageDefinition | string;
|
|
99
|
+
widgets?: WidgetInstance[];
|
|
100
|
+
pageChange: EventEmitter<WidgetPageDefinition>;
|
|
89
101
|
private originalSnapshot;
|
|
90
102
|
showOnlyIssues: boolean;
|
|
91
103
|
showFriendly: boolean;
|
|
@@ -94,7 +106,11 @@ declare class ConnectionBuilderComponent implements OnInit, OnChanges {
|
|
|
94
106
|
sortBy: 'from' | 'to';
|
|
95
107
|
mapPlaceholder: string;
|
|
96
108
|
connections: i0.WritableSignal<WidgetConnection[]>;
|
|
97
|
-
|
|
109
|
+
private readonly selectedConnectionRef;
|
|
110
|
+
stateOptions: i0.WritableSignal<EndpointOption[]>;
|
|
111
|
+
readonly isDirty$: BehaviorSubject<boolean>;
|
|
112
|
+
readonly isValid$: BehaviorSubject<boolean>;
|
|
113
|
+
readonly isBusy$: BehaviorSubject<boolean>;
|
|
98
114
|
readonly filteredConnections: i0.Signal<WidgetConnection[]>;
|
|
99
115
|
readonly groupedConnections: i0.Signal<{
|
|
100
116
|
label: string;
|
|
@@ -103,8 +119,10 @@ declare class ConnectionBuilderComponent implements OnInit, OnChanges {
|
|
|
103
119
|
constructor(dialog: MatDialog, registry: ComponentMetadataRegistry, snack: MatSnackBar);
|
|
104
120
|
ngOnInit(): void;
|
|
105
121
|
ngOnChanges(changes: SimpleChanges): void;
|
|
106
|
-
isExpanded(
|
|
107
|
-
|
|
122
|
+
isExpanded(connection: WidgetConnection): boolean;
|
|
123
|
+
isSelected(connection: WidgetConnection): boolean;
|
|
124
|
+
toggleExpanded(connection: WidgetConnection, ev?: Event): void;
|
|
125
|
+
selectedIndex(): number;
|
|
108
126
|
setSortBy(v: 'from' | 'to'): void;
|
|
109
127
|
onGroupByChange(): void;
|
|
110
128
|
toggleShowOnlyIssues(): void;
|
|
@@ -127,6 +145,16 @@ declare class ConnectionBuilderComponent implements OnInit, OnChanges {
|
|
|
127
145
|
componentIconForKey(key: string): string;
|
|
128
146
|
private widgetTypeByKey;
|
|
129
147
|
selectedConnection(): WidgetConnection | undefined;
|
|
148
|
+
selectedCanonicalLink(): AuthoringCanonicalLinkReadModel | undefined;
|
|
149
|
+
canonicalLinkForConnection(connection: WidgetConnection): AuthoringCanonicalLinkReadModel;
|
|
150
|
+
persistedSummary(connection: WidgetConnection): string;
|
|
151
|
+
canonicalSummary(canonicalLink: AuthoringCanonicalLinkReadModel): string;
|
|
152
|
+
canonicalDiagnosticsSummary(canonicalLink: AuthoringCanonicalLinkReadModel): string;
|
|
153
|
+
observedTargetPreview(connection: WidgetConnection): string;
|
|
154
|
+
selectedSourceKind(): 'widget' | 'state';
|
|
155
|
+
setSelectedSourceKind(kind: 'widget' | 'state'): void;
|
|
156
|
+
selectedTargetKind(): 'widget' | 'state';
|
|
157
|
+
setSelectedTargetKind(kind: 'widget' | 'state'): void;
|
|
130
158
|
selectedSourcePrimaryValue(): string;
|
|
131
159
|
setSelectedSourcePrimaryValue(value: string): void;
|
|
132
160
|
selectedSourceSecondaryValue(): string;
|
|
@@ -139,20 +167,57 @@ declare class ConnectionBuilderComponent implements OnInit, OnChanges {
|
|
|
139
167
|
setSelectedMapValue(value: string): void;
|
|
140
168
|
showSelectedSourceSecondary(): boolean;
|
|
141
169
|
showSelectedTargetSecondary(): boolean;
|
|
170
|
+
availableOutputsForSelectedWidget(): string[];
|
|
171
|
+
availableInputsForSelectedWidget(): string[];
|
|
172
|
+
availableStateOptions(): EndpointOption[];
|
|
173
|
+
stateOptionLabel(path: string): string;
|
|
174
|
+
stateOptionIcon(path: string): string;
|
|
175
|
+
widgetOptions(): Array<{
|
|
176
|
+
key: string;
|
|
177
|
+
label: string;
|
|
178
|
+
}>;
|
|
142
179
|
private applyFilters;
|
|
143
180
|
private applyGrouping;
|
|
144
181
|
private groupByKey;
|
|
145
182
|
private sortList;
|
|
146
183
|
createNew(): void;
|
|
147
|
-
startEdit(
|
|
148
|
-
startEditByConn(
|
|
149
|
-
duplicateConnection(
|
|
150
|
-
removeConnection(
|
|
184
|
+
startEdit(_index: number, connection: WidgetConnection): void;
|
|
185
|
+
startEditByConn(connection: WidgetConnection): void;
|
|
186
|
+
duplicateConnection(connection: WidgetConnection): void;
|
|
187
|
+
removeConnection(connection: WidgetConnection): void;
|
|
151
188
|
connectionStatus(c: WidgetConnection): 'ok' | 'warn' | 'err';
|
|
152
|
-
|
|
153
|
-
|
|
189
|
+
getSettingsValue(): WidgetPageDefinition;
|
|
190
|
+
reset(): void;
|
|
191
|
+
onSave(): WidgetPageDefinition;
|
|
192
|
+
openDiagramFor(_connection: WidgetConnection): void;
|
|
154
193
|
openDiagramFullscreen(): void;
|
|
155
194
|
private parsePage;
|
|
195
|
+
private availableOutputsForWidget;
|
|
196
|
+
private availableInputsForWidget;
|
|
197
|
+
private metadataPortDescription;
|
|
198
|
+
private metadataPortsForWidget;
|
|
199
|
+
private metadataPortForWidget;
|
|
200
|
+
private metadataPorts;
|
|
201
|
+
private widgetMetadataForKey;
|
|
202
|
+
private widgetInputLabelForKey;
|
|
203
|
+
private observedInputDescriptionForWidget;
|
|
204
|
+
private widgetInputOptionsForKey;
|
|
205
|
+
private observedInputOptionsForWidget;
|
|
206
|
+
private collectObservedInputPaths;
|
|
207
|
+
private describeObservedInput;
|
|
208
|
+
private previewValue;
|
|
209
|
+
private widgetByKey;
|
|
210
|
+
private refreshStateOptions;
|
|
211
|
+
private collectStateOptions;
|
|
212
|
+
private normalizeState;
|
|
213
|
+
private collectPaths;
|
|
214
|
+
private buildPageWithConnections;
|
|
215
|
+
private replaceConnections;
|
|
216
|
+
private commitConnections;
|
|
217
|
+
private syncSelection;
|
|
218
|
+
private refreshPanelState;
|
|
219
|
+
private refreshValidity;
|
|
220
|
+
private clone;
|
|
156
221
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConnectionBuilderComponent, never>;
|
|
157
222
|
static ɵcmp: i0.ɵɵComponentDeclaration<ConnectionBuilderComponent, "praxis-connection-builder", never, { "page": { "alias": "page"; "required": false; }; "widgets": { "alias": "widgets"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
|
|
158
223
|
}
|
|
@@ -191,7 +256,7 @@ type SetInputPreset = {
|
|
|
191
256
|
icon?: string;
|
|
192
257
|
values: SetInputValueOption[];
|
|
193
258
|
};
|
|
194
|
-
declare class WidgetShellEditorComponent implements SettingsValueProvider {
|
|
259
|
+
declare class WidgetShellEditorComponent implements SettingsValueProvider$1 {
|
|
195
260
|
private registry?;
|
|
196
261
|
form: FormGroup<{
|
|
197
262
|
kind: FormControl<"none" | "dashboard-card">;
|
|
@@ -289,64 +354,318 @@ declare class WidgetShellEditorComponent implements SettingsValueProvider {
|
|
|
289
354
|
static ɵcmp: i0.ɵɵComponentDeclaration<WidgetShellEditorComponent, "praxis-widget-shell-editor", never, {}, {}, never, never, true, never>;
|
|
290
355
|
}
|
|
291
356
|
|
|
292
|
-
type
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
357
|
+
type EditorTabId$1 = 'canvas' | 'grouping' | 'devices' | 'context' | 'state';
|
|
358
|
+
type DeviceKey = 'desktop' | 'tablet' | 'mobile';
|
|
359
|
+
type GroupingNodeGroup$1 = FormGroup<{
|
|
360
|
+
kind: FormControl<string>;
|
|
361
|
+
id: FormControl<string>;
|
|
362
|
+
label: FormControl<string>;
|
|
363
|
+
widgetKeysCsv: FormControl<string>;
|
|
364
|
+
layout: FormControl<string>;
|
|
365
|
+
emphasis: FormControl<string>;
|
|
366
|
+
side: FormControl<string>;
|
|
367
|
+
tabsJson: FormControl<string>;
|
|
368
|
+
}>;
|
|
369
|
+
type DeviceVariantForm = FormGroup<{
|
|
370
|
+
columns: FormControl<number | null>;
|
|
371
|
+
rowUnit: FormControl<string>;
|
|
372
|
+
gap: FormControl<string>;
|
|
373
|
+
autoRows: FormControl<'fixed' | 'content' | ''>;
|
|
374
|
+
groupingOverrides: FormControl<string>;
|
|
375
|
+
widgetOverrides: FormControl<string>;
|
|
376
|
+
}>;
|
|
377
|
+
declare class DynamicPageConfigEditorComponent implements OnInit, SettingsValueProvider {
|
|
378
|
+
set page(value: WidgetPageDefinition | string | null | undefined);
|
|
379
|
+
layout?: unknown;
|
|
380
|
+
presets?: unknown;
|
|
296
381
|
pagePreset?: string | null;
|
|
382
|
+
pageChange: EventEmitter<WidgetPageDefinition>;
|
|
383
|
+
readonly layoutPresetEntries: {
|
|
384
|
+
id: string;
|
|
385
|
+
label: string;
|
|
386
|
+
}[];
|
|
387
|
+
readonly themePresetEntries: {
|
|
388
|
+
id: string;
|
|
389
|
+
label: string;
|
|
390
|
+
}[];
|
|
391
|
+
readonly shellPresetEntries: {
|
|
392
|
+
id: string;
|
|
393
|
+
label: string;
|
|
394
|
+
}[];
|
|
395
|
+
readonly deviceKeys: DeviceKey[];
|
|
396
|
+
readonly deviceLabels: Record<DeviceKey, string>;
|
|
397
|
+
readonly canvasColumnsControl: FormControl<number>;
|
|
398
|
+
readonly canvasRowUnitControl: FormControl<string>;
|
|
399
|
+
readonly canvasGapControl: FormControl<string>;
|
|
400
|
+
readonly canvasAutoRowsControl: FormControl<"fixed" | "content">;
|
|
401
|
+
readonly layoutPresetControl: FormControl<string>;
|
|
402
|
+
readonly themePresetControl: FormControl<string>;
|
|
403
|
+
readonly shellPresetControl: FormControl<string>;
|
|
404
|
+
readonly contextControl: FormControl<string>;
|
|
405
|
+
readonly stateControl: FormControl<string>;
|
|
406
|
+
readonly groupingNodes: FormArray<GroupingNodeGroup$1>;
|
|
407
|
+
readonly deviceForms: Record<DeviceKey, DeviceVariantForm>;
|
|
408
|
+
readonly isDirty$: BehaviorSubject<boolean>;
|
|
409
|
+
readonly isValid$: BehaviorSubject<boolean>;
|
|
410
|
+
readonly isBusy$: BehaviorSubject<boolean>;
|
|
411
|
+
readonly activeTab: WritableSignal<EditorTabId$1>;
|
|
412
|
+
readonly canvasError: WritableSignal<string | null>;
|
|
413
|
+
readonly groupingError: WritableSignal<string | null>;
|
|
414
|
+
readonly contextError: WritableSignal<string | null>;
|
|
415
|
+
readonly stateError: WritableSignal<string | null>;
|
|
416
|
+
readonly deviceError: WritableSignal<string | null>;
|
|
417
|
+
private readonly injectedData;
|
|
418
|
+
private pageInput;
|
|
419
|
+
private snapshot;
|
|
420
|
+
private hydrating;
|
|
421
|
+
private readonly tabOrder;
|
|
422
|
+
constructor();
|
|
423
|
+
ngOnInit(): void;
|
|
424
|
+
get selectedTabIndex(): number;
|
|
425
|
+
get isConfigurationValid(): boolean;
|
|
426
|
+
get hasPendingChanges(): boolean;
|
|
427
|
+
get validationStateLabel(): string;
|
|
428
|
+
get dirtyStateLabel(): string;
|
|
429
|
+
get selectedLayoutPresetLabel(): string;
|
|
430
|
+
get selectedThemePresetLabel(): string;
|
|
431
|
+
get canvasSummaryLabel(): string;
|
|
432
|
+
onSelectedTabIndexChange(index: number): void;
|
|
433
|
+
getSettingsValue(): WidgetPageDefinition | null;
|
|
434
|
+
onSave(): WidgetPageDefinition | null;
|
|
435
|
+
reset(): void;
|
|
436
|
+
addGroupingNode(seed?: WidgetPageGroupingDefinition): void;
|
|
437
|
+
removeGroupingNode(index: number): void;
|
|
438
|
+
private createDeviceVariantForm;
|
|
439
|
+
private createGroupingNodeGroup;
|
|
440
|
+
private hydrate;
|
|
441
|
+
private replaceGroupingNodes;
|
|
442
|
+
private buildCurrentPage;
|
|
443
|
+
private buildGrouping;
|
|
444
|
+
private buildDeviceLayouts;
|
|
445
|
+
private invalidate;
|
|
446
|
+
private refreshPanelState;
|
|
447
|
+
private currentPageInput;
|
|
448
|
+
private parsePage;
|
|
449
|
+
private parseJson;
|
|
450
|
+
private parseRecordJson;
|
|
451
|
+
private parseGroupingTabs;
|
|
452
|
+
private parseGroupingOverrides;
|
|
453
|
+
private parseWidgetOverrides;
|
|
454
|
+
private isGroupingTab;
|
|
455
|
+
private isGroupingOverride;
|
|
456
|
+
private isWidgetOverride;
|
|
457
|
+
private isPlainObject;
|
|
458
|
+
private hasDuplicateIds;
|
|
459
|
+
private hasDuplicateStrings;
|
|
460
|
+
private stringify;
|
|
461
|
+
private stringifyGroupingWidgetKeys;
|
|
462
|
+
private extractShellPreset;
|
|
463
|
+
private removeShellPresetFromContext;
|
|
464
|
+
private applyShellPresetToContext;
|
|
465
|
+
private lookupPresetLabel;
|
|
466
|
+
private defaultCanvas;
|
|
467
|
+
private clone;
|
|
468
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicPageConfigEditorComponent, never>;
|
|
469
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicPageConfigEditorComponent, "praxis-dynamic-page-config-editor", never, { "page": { "alias": "page"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "presets": { "alias": "presets"; "required": false; }; "pagePreset": { "alias": "pagePreset"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
type LegacyGridOptions = {
|
|
473
|
+
cols?: number;
|
|
474
|
+
rowHeight?: number;
|
|
475
|
+
gap?: number;
|
|
297
476
|
};
|
|
298
|
-
type
|
|
299
|
-
|
|
300
|
-
pagePreset: string;
|
|
301
|
-
fullPage?: WidgetPageDefinition;
|
|
477
|
+
type PageDefinition = WidgetPageDefinition & {
|
|
478
|
+
options?: LegacyGridOptions;
|
|
302
479
|
};
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
480
|
+
type EditorTabId = 'layout' | 'grouping' | 'devices' | 'state' | 'context';
|
|
481
|
+
type SchemaNodeGroup = FormGroup<{
|
|
482
|
+
path: FormControl<string>;
|
|
483
|
+
type: FormControl<string>;
|
|
484
|
+
initialMode: FormControl<string>;
|
|
485
|
+
initialJson: FormControl<string>;
|
|
486
|
+
initialScalar: FormControl<string>;
|
|
487
|
+
persist: FormControl<string>;
|
|
488
|
+
mergeStrategy: FormControl<string>;
|
|
489
|
+
description: FormControl<string>;
|
|
490
|
+
}>;
|
|
491
|
+
type DerivedNodeGroup = FormGroup<{
|
|
492
|
+
path: FormControl<string>;
|
|
493
|
+
dependsOn: FormControl<string>;
|
|
494
|
+
computeKind: FormControl<string>;
|
|
495
|
+
operator: FormControl<string>;
|
|
496
|
+
sourcePath: FormControl<string>;
|
|
497
|
+
keysCsv: FormControl<string>;
|
|
498
|
+
expression: FormControl<string>;
|
|
499
|
+
transformerId: FormControl<string>;
|
|
500
|
+
options: FormControl<string>;
|
|
501
|
+
templateMode: FormControl<string>;
|
|
502
|
+
templateJson: FormControl<string>;
|
|
503
|
+
templateScalar: FormControl<string>;
|
|
504
|
+
description: FormControl<string>;
|
|
505
|
+
}>;
|
|
506
|
+
type GroupingNodeGroup = FormGroup<{
|
|
507
|
+
kind: FormControl<string>;
|
|
508
|
+
id: FormControl<string>;
|
|
509
|
+
label: FormControl<string>;
|
|
510
|
+
widgetKeysCsv: FormControl<string>;
|
|
511
|
+
layout: FormControl<string>;
|
|
512
|
+
emphasis: FormControl<string>;
|
|
513
|
+
side: FormControl<string>;
|
|
514
|
+
tabsJson: FormControl<string>;
|
|
515
|
+
}>;
|
|
516
|
+
declare class PageConfigEditorComponent implements SettingsValueProvider {
|
|
517
|
+
protected readonly derivedOperators: readonly ["merge-objects", "pick", "omit"];
|
|
518
|
+
protected readonly mergeStrategies: readonly ["replace", "merge", "append", "remove-keys"];
|
|
519
|
+
protected readonly valueModes: readonly ["json", "string", "number", "boolean", "null"];
|
|
520
|
+
protected readonly groupingKinds: readonly ["section", "tabs", "hero", "rail"];
|
|
521
|
+
protected readonly layoutPresetEntries: Array<(typeof BUILTIN_PAGE_LAYOUT_PRESETS)[string]>;
|
|
522
|
+
protected readonly themePresetEntries: Array<(typeof BUILTIN_PAGE_THEME_PRESETS)[string]>;
|
|
523
|
+
readonly page: i0.InputSignal<string | PageDefinition | null>;
|
|
524
|
+
readonly identity: i0.InputSignal<PageIdentity | null>;
|
|
525
|
+
readonly layoutCompatOptions: i0.InputSignal<any>;
|
|
526
|
+
readonly pageChange: i0.OutputEmitterRef<PageDefinition>;
|
|
527
|
+
readonly form: FormGroup<{
|
|
528
|
+
cols: FormControl<number | null>;
|
|
529
|
+
rowHeight: FormControl<number | null>;
|
|
530
|
+
gap: FormControl<number | null>;
|
|
531
|
+
}>;
|
|
532
|
+
readonly contextControl: FormControl<string>;
|
|
533
|
+
readonly shellPresetControl: FormControl<string>;
|
|
534
|
+
readonly layoutPresetControl: FormControl<string>;
|
|
535
|
+
readonly themePresetControl: FormControl<string>;
|
|
536
|
+
readonly groupingControl: FormControl<string>;
|
|
537
|
+
readonly deviceLayoutsControl: FormControl<string>;
|
|
538
|
+
readonly stateValuesControl: FormControl<string>;
|
|
539
|
+
readonly groupingNodes: FormArray<GroupingNodeGroup>;
|
|
540
|
+
readonly schemaNodes: FormArray<SchemaNodeGroup>;
|
|
541
|
+
readonly derivedNodes: FormArray<DerivedNodeGroup>;
|
|
542
|
+
readonly deviceDesktopForm: FormGroup<{
|
|
543
|
+
orientation: FormControl<string>;
|
|
544
|
+
columns: FormControl<number | null>;
|
|
545
|
+
gap: FormControl<string>;
|
|
546
|
+
breakpointsJson: FormControl<string>;
|
|
547
|
+
groupingOverridesJson: FormControl<string>;
|
|
548
|
+
widgetOverridesJson: FormControl<string>;
|
|
549
|
+
}>;
|
|
550
|
+
readonly deviceTabletForm: FormGroup<{
|
|
551
|
+
orientation: FormControl<string>;
|
|
552
|
+
columns: FormControl<number | null>;
|
|
308
553
|
gap: FormControl<string>;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
554
|
+
breakpointsJson: FormControl<string>;
|
|
555
|
+
groupingOverridesJson: FormControl<string>;
|
|
556
|
+
widgetOverridesJson: FormControl<string>;
|
|
557
|
+
}>;
|
|
558
|
+
readonly deviceMobileForm: FormGroup<{
|
|
559
|
+
orientation: FormControl<string>;
|
|
560
|
+
columns: FormControl<number | null>;
|
|
561
|
+
gap: FormControl<string>;
|
|
562
|
+
breakpointsJson: FormControl<string>;
|
|
563
|
+
groupingOverridesJson: FormControl<string>;
|
|
564
|
+
widgetOverridesJson: FormControl<string>;
|
|
565
|
+
}>;
|
|
566
|
+
readonly contextError: i0.WritableSignal<string | null>;
|
|
567
|
+
readonly layoutError: i0.WritableSignal<string | null>;
|
|
568
|
+
readonly stateError: i0.WritableSignal<string | null>;
|
|
569
|
+
readonly activeTab: i0.WritableSignal<EditorTabId>;
|
|
570
|
+
readonly shellPresetEntries: Array<{
|
|
571
|
+
id: string;
|
|
572
|
+
label: string;
|
|
313
573
|
}>;
|
|
314
|
-
|
|
315
|
-
private
|
|
574
|
+
private lastContext;
|
|
575
|
+
private lastGrouping;
|
|
576
|
+
private lastDeviceLayouts;
|
|
577
|
+
private lastStateValues;
|
|
316
578
|
private readonly dirtySubject;
|
|
317
579
|
private readonly validSubject;
|
|
318
580
|
private readonly busySubject;
|
|
319
|
-
isDirty$: rxjs.Observable<boolean>;
|
|
320
|
-
isValid$: rxjs.Observable<boolean>;
|
|
321
|
-
isBusy$: rxjs.Observable<boolean>;
|
|
322
581
|
private snapshot;
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
582
|
+
private readonly tabOrder;
|
|
583
|
+
private readonly i18n;
|
|
584
|
+
private readonly injectedData;
|
|
585
|
+
readonly isDirty$: rxjs.Observable<boolean>;
|
|
586
|
+
readonly isValid$: rxjs.Observable<boolean>;
|
|
587
|
+
readonly isBusy$: rxjs.Observable<boolean>;
|
|
588
|
+
protected readonly embeddedInSettingsPanel: boolean;
|
|
589
|
+
get selectedTabIndex(): number;
|
|
590
|
+
protected get hasPendingChanges(): boolean;
|
|
591
|
+
protected get isConfigurationValid(): boolean;
|
|
592
|
+
protected get validationStateLabel(): string;
|
|
593
|
+
protected get dirtyStateLabel(): string;
|
|
594
|
+
protected get selectedLayoutPresetLabel(): string;
|
|
595
|
+
protected get selectedThemePresetLabel(): string;
|
|
596
|
+
protected get selectedShellPresetLabel(): string;
|
|
597
|
+
protected get contextExample(): string;
|
|
598
|
+
protected get stateValuesExample(): string;
|
|
599
|
+
protected get layoutPresetHint(): string;
|
|
600
|
+
protected get themePresetHint(): string;
|
|
601
|
+
protected get shellPresetHint(): string;
|
|
602
|
+
protected get tabsJsonHint(): string;
|
|
603
|
+
protected get breakpointsHint(): string;
|
|
604
|
+
protected get groupingOverridesHint(): string;
|
|
605
|
+
protected get widgetOverridesHint(): string;
|
|
606
|
+
protected get schemaInitialHint(): string;
|
|
607
|
+
protected get templateJsonHint(): string;
|
|
608
|
+
protected get transformerOptionsHint(): string;
|
|
609
|
+
constructor();
|
|
610
|
+
protected tx(key: string, fallback: string): string;
|
|
611
|
+
addSchemaNode(seed?: {
|
|
612
|
+
path?: string;
|
|
613
|
+
config?: WidgetStateNode;
|
|
614
|
+
}): void;
|
|
615
|
+
removeSchemaNode(index: number): void;
|
|
616
|
+
addDerivedNode(seed?: {
|
|
617
|
+
path?: string;
|
|
618
|
+
config?: WidgetDerivedStateNode;
|
|
619
|
+
}): void;
|
|
620
|
+
removeDerivedNode(index: number): void;
|
|
621
|
+
addGroupingNode(seed?: WidgetPageGroupingDefinition): void;
|
|
622
|
+
removeGroupingNode(index: number): void;
|
|
623
|
+
setActiveTab(tab: EditorTabId): void;
|
|
624
|
+
onSelectedTabIndexChange(index: number): void;
|
|
625
|
+
apply(): void;
|
|
335
626
|
reset(): void;
|
|
336
|
-
private
|
|
337
|
-
private
|
|
338
|
-
private
|
|
339
|
-
private
|
|
340
|
-
private
|
|
341
|
-
private
|
|
342
|
-
private
|
|
343
|
-
private
|
|
344
|
-
|
|
345
|
-
|
|
627
|
+
private replaceGroupingNodes;
|
|
628
|
+
private createGroupingNodeGroup;
|
|
629
|
+
private stringifyGroupingWidgetKeys;
|
|
630
|
+
private buildGrouping;
|
|
631
|
+
private hydrateDeviceLayoutControls;
|
|
632
|
+
private buildDeviceLayouts;
|
|
633
|
+
private createDeviceLayoutForm;
|
|
634
|
+
private patchDeviceLayoutForm;
|
|
635
|
+
private buildDeviceLayoutVariant;
|
|
636
|
+
private hydrateStateEditor;
|
|
637
|
+
private replaceSchemaNodes;
|
|
638
|
+
private replaceDerivedNodes;
|
|
639
|
+
private createSchemaNodeGroup;
|
|
640
|
+
private createDerivedNodeGroup;
|
|
641
|
+
private buildState;
|
|
642
|
+
private buildSchema;
|
|
643
|
+
private buildDerived;
|
|
644
|
+
private normalizeState;
|
|
645
|
+
getSettingsValue(): PageDefinition | null;
|
|
646
|
+
onSave(): PageDefinition | null;
|
|
647
|
+
private lookupPresetLabel;
|
|
648
|
+
private currentPageInput;
|
|
649
|
+
private extractShellPreset;
|
|
650
|
+
private buildCurrentPage;
|
|
651
|
+
private applyShellPresetToContext;
|
|
652
|
+
private refreshPanelState;
|
|
653
|
+
private parsePage;
|
|
654
|
+
private parseContext;
|
|
655
|
+
private parseGrouping;
|
|
656
|
+
private parseDeviceLayouts;
|
|
657
|
+
private parseJson;
|
|
658
|
+
private parseValueInput;
|
|
659
|
+
private describeValue;
|
|
660
|
+
private buildOperatorOptions;
|
|
661
|
+
private buildOptions;
|
|
662
|
+
private clone;
|
|
663
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PageConfigEditorComponent, never>;
|
|
664
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PageConfigEditorComponent, "praxis-page-config-editor", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "identity": { "alias": "identity"; "required": false; "isSignal": true; }; "layoutCompatOptions": { "alias": "layoutCompatOptions"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
|
|
346
665
|
}
|
|
347
666
|
|
|
348
667
|
/**
|
|
349
|
-
* Capabilities catalog for
|
|
668
|
+
* Capabilities catalog for the canonical dynamic page builder/runtime.
|
|
350
669
|
*/
|
|
351
670
|
|
|
352
671
|
declare module '@praxisui/core' {
|
|
@@ -368,70 +687,42 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
|
|
|
368
687
|
}
|
|
369
688
|
declare const PAGE_BUILDER_AI_CAPABILITIES: CapabilityCatalog;
|
|
370
689
|
|
|
690
|
+
type LegacyLayoutOptions = {
|
|
691
|
+
cols?: number;
|
|
692
|
+
rowHeight?: number;
|
|
693
|
+
gap?: number;
|
|
694
|
+
};
|
|
695
|
+
type PageBuilderLayoutOptions = Partial<LegacyLayoutOptions>;
|
|
371
696
|
type PageBuilderConfig = {
|
|
372
697
|
page?: BuilderPageDefinition;
|
|
373
698
|
context?: Record<string, unknown> | null;
|
|
374
699
|
enableCustomization?: boolean;
|
|
375
700
|
showSettingsButton?: boolean;
|
|
376
701
|
strictValidation?: boolean;
|
|
377
|
-
|
|
702
|
+
layoutOptions?: PageBuilderLayoutOptions;
|
|
378
703
|
pageIdentity?: PageIdentity;
|
|
379
704
|
};
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
705
|
+
type BuilderWidgetInstance = WidgetInstance;
|
|
706
|
+
type BuilderCanvasItem = {
|
|
707
|
+
col: number;
|
|
708
|
+
row: number;
|
|
709
|
+
colSpan: number;
|
|
710
|
+
rowSpan: number;
|
|
711
|
+
};
|
|
712
|
+
type BuilderCanvasLayout = {
|
|
713
|
+
mode: 'grid';
|
|
714
|
+
columns: number;
|
|
715
|
+
rowUnit?: string;
|
|
716
|
+
gap?: string;
|
|
717
|
+
autoRows?: 'fixed' | 'content';
|
|
718
|
+
items: Record<string, BuilderCanvasItem>;
|
|
719
|
+
};
|
|
720
|
+
type BuilderPageDefinition = Omit<WidgetPageDefinition, 'widgets'> & {
|
|
721
|
+
widgets: BuilderWidgetInstance[];
|
|
722
|
+
canvas?: BuilderCanvasLayout;
|
|
391
723
|
state?: WidgetPageStateInput;
|
|
392
724
|
connections?: WidgetConnection[];
|
|
393
725
|
};
|
|
394
|
-
type PatchResult = {
|
|
395
|
-
success: boolean;
|
|
396
|
-
warnings?: string[];
|
|
397
|
-
error?: string;
|
|
398
|
-
};
|
|
399
|
-
declare class PageBuilderAiAdapter {
|
|
400
|
-
private host;
|
|
401
|
-
private registry?;
|
|
402
|
-
componentName: string;
|
|
403
|
-
componentId: string;
|
|
404
|
-
componentType: string;
|
|
405
|
-
constructor(host: PageBuilderHost, registry?: ComponentMetadataRegistry | undefined);
|
|
406
|
-
getCurrentConfig(): PageBuilderConfig;
|
|
407
|
-
getCapabilities(): AiCapability[];
|
|
408
|
-
getRuntimeState(): Record<string, unknown>;
|
|
409
|
-
createSnapshot(): PageBuilderConfig;
|
|
410
|
-
restoreSnapshot(snapshot: PageBuilderConfig): Promise<void>;
|
|
411
|
-
applyPatch(patch: Partial<PageBuilderConfig>, _intent?: string): Promise<PatchResult>;
|
|
412
|
-
private applyConfig;
|
|
413
|
-
private parsePage;
|
|
414
|
-
private normalizePageForAi;
|
|
415
|
-
private normalizeConfigForRuntime;
|
|
416
|
-
private normalizePageForRuntime;
|
|
417
|
-
private normalizePatch;
|
|
418
|
-
private mergeWidgets;
|
|
419
|
-
private mergeConnections;
|
|
420
|
-
private ensureLayoutFromLegacy;
|
|
421
|
-
private ensureLegacyLayout;
|
|
422
|
-
private layoutFromLegacy;
|
|
423
|
-
private getWidgetKey;
|
|
424
|
-
private generateWidgetKey;
|
|
425
|
-
private connectionKey;
|
|
426
|
-
private gridsterFromPageOptions;
|
|
427
|
-
private mergeRuntimeGridsterOptions;
|
|
428
|
-
private pageOptionsFromGridster;
|
|
429
|
-
private pickGridsterOptions;
|
|
430
|
-
private buildComponentCatalog;
|
|
431
|
-
private pickNumber;
|
|
432
|
-
private coerceNumber;
|
|
433
|
-
private clone;
|
|
434
|
-
}
|
|
435
726
|
|
|
436
727
|
declare function registerWidgetAiCatalog(widgetId: string, catalog: AiCapabilityCatalog): void;
|
|
437
728
|
declare function registerWidgetAiCatalogs(entries: Record<string, AiCapabilityCatalog>): void;
|
|
@@ -450,179 +741,40 @@ declare const PAGE_BUILDER_WIDGET_AI_CATALOGS: InjectionToken<Record<string, AiC
|
|
|
450
741
|
|
|
451
742
|
declare function providePageBuilderWidgetAiCatalogs(): Provider;
|
|
452
743
|
|
|
453
|
-
|
|
454
|
-
id: string;
|
|
455
|
-
label: string;
|
|
456
|
-
icon?: string;
|
|
457
|
-
type: string;
|
|
458
|
-
parentId?: string | null;
|
|
459
|
-
collapsed?: boolean;
|
|
460
|
-
bounds: {
|
|
461
|
-
x: number;
|
|
462
|
-
y: number;
|
|
463
|
-
width: number;
|
|
464
|
-
height: number;
|
|
465
|
-
};
|
|
466
|
-
ports: GraphPort[];
|
|
467
|
-
}
|
|
468
|
-
interface GraphPort {
|
|
469
|
-
id: string;
|
|
470
|
-
label: string;
|
|
471
|
-
kind: 'input' | 'output';
|
|
472
|
-
/** For inputs that map into deep paths (e.g. Tabs internals) */
|
|
473
|
-
path?: string;
|
|
474
|
-
/** Optional description (from metadata) for tooltips */
|
|
475
|
-
description?: string;
|
|
476
|
-
anchor: {
|
|
477
|
-
x: number;
|
|
478
|
-
y: number;
|
|
479
|
-
};
|
|
480
|
-
}
|
|
481
|
-
interface GraphEdgeMeta {
|
|
482
|
-
map?: string;
|
|
483
|
-
transform?: string;
|
|
484
|
-
bindingOrder?: string[];
|
|
485
|
-
routerMode?: 'auto' | 'elbow' | 'bezier' | 'straight';
|
|
486
|
-
}
|
|
487
|
-
interface GraphEdge {
|
|
488
|
-
id: string;
|
|
489
|
-
from: {
|
|
490
|
-
nodeId: string;
|
|
491
|
-
portId: string;
|
|
492
|
-
};
|
|
493
|
-
to: {
|
|
494
|
-
nodeId: string;
|
|
495
|
-
portId: string;
|
|
496
|
-
};
|
|
497
|
-
label?: string;
|
|
498
|
-
meta?: GraphEdgeMeta;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
type StatefulGridPageDefinition = GridPageDefinition & {
|
|
502
|
-
state?: WidgetPageStateInput;
|
|
503
|
-
};
|
|
504
|
-
declare class GraphMapperService {
|
|
505
|
-
private registry;
|
|
506
|
-
constructor(registry: ComponentMetadataRegistry);
|
|
507
|
-
private isWidgetSource;
|
|
508
|
-
private isWidgetTarget;
|
|
509
|
-
/** Build nodes and edges for a given page definition and widgets. */
|
|
510
|
-
mapToGraph(page: StatefulGridPageDefinition | undefined, widgets: GridWidgetInstance[]): {
|
|
511
|
-
nodes: GraphNode[];
|
|
512
|
-
edges: GraphEdge[];
|
|
513
|
-
};
|
|
514
|
-
private ensureStateNode;
|
|
515
|
-
private normalizeState;
|
|
516
|
-
private ensurePort;
|
|
517
|
-
/**
|
|
518
|
-
* Parse dot-path for Tabs internals. Supported:
|
|
519
|
-
* - inputs.config.tabs[<i>].widgets[<j>].inputs.<input>
|
|
520
|
-
* - inputs.config.nav.links[<i>].widgets[<j>].inputs.<input>
|
|
521
|
-
*/
|
|
522
|
-
parseTabsPath(path: string | undefined): {
|
|
523
|
-
kind: 'group' | 'nav';
|
|
524
|
-
index: number;
|
|
525
|
-
widgetIndex: number;
|
|
526
|
-
input: string;
|
|
527
|
-
} | null;
|
|
528
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<GraphMapperService, never>;
|
|
529
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<GraphMapperService>;
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
type ItemWithKey = GridsterItem & {
|
|
533
|
-
__key__: string;
|
|
534
|
-
};
|
|
535
|
-
declare class DynamicGridsterPageComponent implements OnChanges, PageBuilderHost {
|
|
536
|
-
private conn;
|
|
537
|
-
private router;
|
|
538
|
-
private host;
|
|
744
|
+
declare class DynamicPageBuilderComponent implements OnChanges {
|
|
539
745
|
private dialog;
|
|
540
|
-
private graphMapper;
|
|
541
|
-
private registry;
|
|
542
|
-
private storage;
|
|
543
|
-
private componentKeys;
|
|
544
|
-
private tableConfigEditor;
|
|
545
|
-
private stepperConfigEditor;
|
|
546
746
|
private settingsPanel;
|
|
547
|
-
|
|
548
|
-
page?:
|
|
549
|
-
context?: Record<string,
|
|
747
|
+
runtime?: DynamicWidgetPageComponent;
|
|
748
|
+
page?: WidgetPageDefinition | string;
|
|
749
|
+
context?: Record<string, unknown> | null;
|
|
550
750
|
strictValidation: boolean;
|
|
551
|
-
gridsterOptions?: Partial<GridsterConfig>;
|
|
552
|
-
/** Shows settings button and enables in-place editing affordances */
|
|
553
751
|
enableCustomization: boolean;
|
|
554
|
-
/** When true, shows small floating settings fab; if false, rely on bottom toolbar */
|
|
555
752
|
showSettingsButton: boolean;
|
|
556
|
-
/** Optional identity; if not provided, will derive routePath from current Router URL */
|
|
557
753
|
pageIdentity?: PageIdentity;
|
|
558
|
-
/** Optional instance key for pages rendered multiple times */
|
|
559
754
|
componentInstanceId?: string;
|
|
560
|
-
|
|
561
|
-
pageChange: EventEmitter<
|
|
562
|
-
|
|
563
|
-
private
|
|
564
|
-
|
|
565
|
-
private readonly globalActions;
|
|
566
|
-
items: i0.WritableSignal<ItemWithKey[]>;
|
|
567
|
-
interacting: boolean;
|
|
568
|
-
overlayEnabled: boolean;
|
|
569
|
-
private appliedPersisted;
|
|
570
|
-
aiAdapter: PageBuilderAiAdapter;
|
|
571
|
-
options: GridsterConfig;
|
|
572
|
-
trackItem: (_: number, it: ItemWithKey) => string;
|
|
573
|
-
constructor(conn: ConnectionManagerService, router: Router, host: ElementRef<HTMLElement>, dialog: MatDialog, graphMapper: GraphMapperService, registry: ComponentMetadataRegistry, storage: AsyncConfigStorage, componentKeys: ComponentKeyService, tableConfigEditor: any, stepperConfigEditor: any, settingsPanel: SettingsPanelBridge | null, route: ActivatedRoute | null);
|
|
574
|
-
applyConfigFromAdapter(next: PageBuilderConfig): void;
|
|
755
|
+
pageEditorComponent: Type<any> | undefined;
|
|
756
|
+
pageChange: EventEmitter<WidgetPageDefinition>;
|
|
757
|
+
readonly currentPage: i0.WritableSignal<WidgetPageDefinition>;
|
|
758
|
+
private previewMode;
|
|
759
|
+
constructor(dialog: MatDialog, settingsPanel: SettingsPanelBridge | null);
|
|
575
760
|
ngOnChanges(changes: SimpleChanges): void;
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
private enrichWithInheritedInputs;
|
|
579
|
-
private applyWidgetInputs;
|
|
580
|
-
private ensureComponentInstanceId;
|
|
581
|
-
private widgetToItem;
|
|
582
|
-
computeTileDomId(key: string): string;
|
|
583
|
-
isSelected(key: string): boolean;
|
|
584
|
-
getWidgetType(key: string): string | undefined;
|
|
585
|
-
getWidgetDef(key: string): any;
|
|
586
|
-
getWidgetShell(key: string): any;
|
|
587
|
-
onTileClick(key: string, ev: MouseEvent): void;
|
|
588
|
-
onItemChanged(item: GridsterItem): void;
|
|
761
|
+
showSettings(): boolean;
|
|
762
|
+
onRuntimePageChange(next: WidgetPageDefinition): void;
|
|
589
763
|
togglePreview(): void;
|
|
590
|
-
confirmRemoveWidget(key: string): void;
|
|
591
|
-
removeWidget(key: string): void;
|
|
592
764
|
onAddComponent(): void;
|
|
593
765
|
addWidget(type: string): void;
|
|
594
|
-
createWidgetKey(type: string): string;
|
|
595
|
-
openWidgetSettings(key: string): void;
|
|
596
|
-
openWidgetShellSettings(key: string): void;
|
|
597
766
|
openConnectionsGraph(): void;
|
|
598
767
|
openConnectionsBuilder(): void;
|
|
599
|
-
openConnectionsEditor():
|
|
768
|
+
openConnectionsEditor(): void;
|
|
600
769
|
openPageSettings(): void;
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
private
|
|
604
|
-
private
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
}): void;
|
|
609
|
-
onShellAction(fromKey: string, evt: WidgetShellActionEvent): void;
|
|
610
|
-
private handleSetInputCommand;
|
|
611
|
-
private maybeExecuteMappedAction;
|
|
612
|
-
private maybeExecuteGlobalCommand;
|
|
613
|
-
private resolveActionPayload;
|
|
614
|
-
private resolveTemplate;
|
|
615
|
-
private lookup;
|
|
616
|
-
private applyWidgetShell;
|
|
617
|
-
private applyPageShellPreset;
|
|
618
|
-
private applyEditShellActions;
|
|
619
|
-
showSettings(): boolean;
|
|
620
|
-
private storageKey;
|
|
621
|
-
private componentKeyId;
|
|
622
|
-
private buildPageScopeId;
|
|
623
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicGridsterPageComponent, [null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
624
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicGridsterPageComponent, "praxis-dynamic-gridster-page", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "gridsterOptions": { "alias": "gridsterOptions"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showSettingsButton": { "alias": "showSettingsButton"; "required": false; }; "pageIdentity": { "alias": "pageIdentity"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; }, { "layoutChange": "layoutChange"; "pageChange": "pageChange"; }, never, never, true, never>;
|
|
770
|
+
saveCurrentPage(): void;
|
|
771
|
+
private parsePage;
|
|
772
|
+
private clonePage;
|
|
773
|
+
private buildAuthoringReadPage;
|
|
774
|
+
private buildAuthoringReadWidgets;
|
|
775
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicPageBuilderComponent, [null, { optional: true; }]>;
|
|
776
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicPageBuilderComponent, "praxis-dynamic-page-builder", never, { "page": { "alias": "page"; "required": false; }; "context": { "alias": "context"; "required": false; }; "strictValidation": { "alias": "strictValidation"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showSettingsButton": { "alias": "showSettingsButton"; "required": false; }; "pageIdentity": { "alias": "pageIdentity"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "pageEditorComponent": { "alias": "pageEditorComponent"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
|
|
625
777
|
}
|
|
626
778
|
|
|
627
|
-
export { ComponentPaletteDialogComponent, ConfirmDialogComponent, ConnectionBuilderComponent,
|
|
779
|
+
export { ComponentPaletteDialogComponent, ConfirmDialogComponent, ConnectionBuilderComponent, DynamicPageBuilderComponent, DynamicPageConfigEditorComponent, FloatingToolbarComponent, PAGE_BUILDER_AI_CAPABILITIES, PAGE_BUILDER_WIDGET_AI_CATALOGS, PLACEHOLDER, PageConfigEditorComponent, TileToolbarComponent, WidgetShellEditorComponent, clearWidgetAiCatalogs, getPageAiCatalog, getWidgetAiCapabilities, providePageBuilderWidgetAiCatalogs, registerWidgetAiCatalog, registerWidgetAiCatalogs };
|
|
628
780
|
export type { Capability, CapabilityCatalog, CapabilityCategory, ComponentPaletteData, ConfirmDialogData, ValueKind };
|