@acorex-platform/module-platform-dev-tools-client 0.0.38 → 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.
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-platform-dev-tools-client",
3
- "version": "0.0.38",
3
+ "version": "0.0.46",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
+ "@acorex-platform/module-platform-management-client": "0.0.46",
6
7
  "@angular/common": "^21.0.0 || ^22.0.0",
7
8
  "@angular/core": "^21.0.0 || ^22.0.0"
8
9
  },
@@ -1,3 +1,5 @@
1
+ import { AXPModuleManifest } from '@acorex-platform/framework-shared/core';
2
+
1
3
  declare const AXPPlatformDevToolsMenuKeys: {
2
4
  readonly Root: "platform-dev-tools.root";
3
5
  readonly PlatformExplorer: "platform-dev-tools.platform-explorer";
@@ -53,4 +55,10 @@ declare const RootConfig: {
53
55
  };
54
56
  };
55
57
 
56
- export { AXMPermissionsKeys, AXPApplicationsPlatformPermissionKeys, AXPPlatformDevToolsMenuKeys, AXPPlatformDevToolsSettings, AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION, AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP, RootConfig };
58
+ /**
59
+ * Platform Dev Tools Module Manifest.
60
+ * Development-only module for exploring platform structure (modules, entities, permissions, features).
61
+ */
62
+ declare const PlatformDevToolsManifest: AXPModuleManifest;
63
+
64
+ export { AXMPermissionsKeys, AXPApplicationsPlatformPermissionKeys, AXPPlatformDevToolsMenuKeys, AXPPlatformDevToolsSettings, AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION, AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP, PlatformDevToolsManifest, RootConfig };
@@ -1,154 +1,406 @@
1
- import * as i0 from '@angular/core';
2
- import { AXPModuleManifest, AXPFeatureDefinition } from '@acorex-platform/framework-client/core';
3
- import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext, AXPPermissionDefinition } from '@acorex-platform/framework-client/auth';
4
- import { AXTreeViewComponent, AXTreeViewNode, AXTreeViewNodeSelectEvent, AXTreeViewNodeToggleEvent } from '@acorex/components/tree-view';
5
- import { AXPBreadcrumbItem } from '@acorex-platform/framework-shared/core';
1
+ import * as _angular_core from '@angular/core';
2
+ export { PlatformDevToolsManifest } from '@acorex-platform/module-platform-dev-tools-client/contracts';
3
+ import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
4
+ import { AXPModuleManifest, AXPBreadcrumbItem, AXPModuleType } from '@acorex-platform/framework-shared/core';
5
+ import { AXMPlatformExplorerModuleSummary, AXMPlatformExplorerModuleCatalog, AXMPlatformExplorerEntityDetail, AXMPlatformExplorerCatalogKind, AXMPlatformExplorerCatalogItem, AXMPlatformExplorerEntitySummary, AXMPlatformExplorerNamedItem, AXMPlatformExplorerEntityGraphProperty } from '@acorex-platform/module-platform-management-client/contracts';
6
+ import * as _acorex_platform_module_platform_dev_tools_client from '@acorex-platform/module-platform-dev-tools-client';
7
+ import { AXValueChangedEvent, AXDataSource } from '@acorex/cdk/common';
8
+ import { AXTreeViewComponent, AXTreeViewNode, AXTreeViewNodeSelectEvent } from '@acorex/components/tree-view';
9
+ import { AXTabStripChangedEvent } from '@acorex/components/tabs';
10
+ import { AXPDeviceService } from '@acorex-platform/framework-client/core';
6
11
  import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
7
- import { AXPEntity } from '@acorex-platform/framework-shared/entity';
8
- import { AXPEntityListEntry } from '@acorex-platform/framework-client/layout/entity';
9
- import { AXDataSource } from '@acorex/cdk/common';
12
+ import { AXPWorkflowDiagramModel, AXPWorkflowNode } from '@acorex-platform/module-platform-management-client';
10
13
 
11
14
  declare class AXMPlatformDevToolsModule {
12
- static ɵfac: i0.ɵɵFactoryDeclaration<AXMPlatformDevToolsModule, never>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMPlatformDevToolsModule, never, never, never>;
14
- static ɵinj: i0.ɵɵInjectorDeclaration<AXMPlatformDevToolsModule>;
15
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMPlatformDevToolsModule, never>;
16
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMPlatformDevToolsModule, never, never, never>;
17
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMPlatformDevToolsModule>;
15
18
  }
16
19
 
17
- /**
18
- * Platform Dev Tools Module Manifest.
19
- * Development-only module for exploring platform structure (modules, entities, permissions, features).
20
- */
21
- declare const PlatformDevToolsManifest: AXPModuleManifest;
22
-
23
20
  /**
24
21
  * Registers UseDevTools under Applications & Platform.
25
22
  */
26
23
  declare class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
27
24
  define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<AXMPermissionDefinitionProvider, never>;
29
- static ɵprov: i0.ɵɵInjectableDeclaration<AXMPermissionDefinitionProvider>;
25
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMPermissionDefinitionProvider, never>;
26
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMPermissionDefinitionProvider>;
30
27
  }
31
28
 
32
- type PlatformExplorerNodeKind = 'module' | 'entities' | 'entity' | 'permissions' | 'permission' | 'features' | 'feature';
29
+ type PlatformExplorerNodeKind = 'type-group' | 'module' | 'diagram' | 'entities' | 'entity' | 'commands' | 'command' | 'queries' | 'query' | 'plugins' | 'plugin' | 'widgets' | 'widget';
33
30
  interface PlatformExplorerTreeNode {
34
31
  id: string;
35
32
  kind: PlatformExplorerNodeKind;
36
33
  label: string;
37
34
  moduleName?: string;
38
- /** i18n key for the module title (used for page title and breadcrumbs) */
39
35
  moduleTitle?: string;
40
- children?: PlatformExplorerTreeNode[];
41
- /** Optional payload for detail view */
42
- payload?: unknown;
43
- /** Item count for badge (e.g. entities count, permissions count, features count) */
36
+ icon?: string;
44
37
  itemCount?: number;
38
+ /** Top rule before a type-group header that is not the first visible group. */
39
+ divided?: boolean;
40
+ payload?: unknown;
45
41
  }
46
42
 
43
+ type ExplorerPageKind = 'module' | 'diagram' | 'entity' | 'command' | 'query' | 'plugin' | 'widget';
44
+ interface ExplorerRouteState {
45
+ module?: string;
46
+ kind?: ExplorerPageKind;
47
+ name?: string;
48
+ search?: string;
49
+ }
50
+
51
+ interface PlatformExplorerEntityTab {
52
+ id: string;
53
+ textKey: string;
54
+ extraText?: string;
55
+ }
47
56
  declare class PlatformExplorerDataService {
57
+ private readonly queryService;
48
58
  private readonly manifestRegistry;
49
- private readonly entityResolver;
50
- private readonly permissionService;
51
- /**
52
- * Build only root-level module nodes (no children). Children are loaded on expand via getModuleChildren.
53
- * Includes all modules; use buildModulesOnlyFiltered() to exclude modules with no entities/permissions/features.
54
- */
55
- buildModulesOnly(): Promise<PlatformExplorerTreeNode[]>;
56
- /**
57
- * Build root-level module nodes, excluding modules that have no entities, permissions, or features.
58
- * Each module node gets itemCount = number of non-empty subcategories (for badge).
59
- */
60
- buildModulesOnlyFiltered(): Promise<PlatformExplorerTreeNode[]>;
61
- /**
62
- * Load entities, permissions, and features for a module (called when module node is expanded or clicked).
63
- * Only includes subcategories that have at least one item. Returns empty array if module has no items.
64
- */
65
- getModuleChildren(moduleId: string): Promise<PlatformExplorerTreeNode[]>;
66
- /**
67
- * Get all permissions for a module (for display in module detail).
68
- */
69
- getPermissionsForModule(moduleName: string): Promise<AXPPermissionDefinition[]>;
70
- /**
71
- * Get all features for a module (for display in module detail).
72
- */
73
- getFeaturesForModule(moduleName: string): AXPFeatureDefinition[];
74
- private collectPermissionsForModule;
75
- static ɵfac: i0.ɵɵFactoryDeclaration<PlatformExplorerDataService, never>;
76
- static ɵprov: i0.ɵɵInjectableDeclaration<PlatformExplorerDataService>;
59
+ private moduleCache;
60
+ readonly entityTabs: _angular_core.WritableSignal<PlatformExplorerEntityTab[]>;
61
+ readonly activeEntitySection: _angular_core.WritableSignal<string>;
62
+ clearCache(): void;
63
+ setEntityTabs(tabs: PlatformExplorerEntityTab[]): void;
64
+ selectEntitySection(section: string): void;
65
+ clearEntityTabs(): void;
66
+ listModules(search?: string): Promise<AXMPlatformExplorerModuleSummary[]>;
67
+ getModule(moduleName: string): Promise<AXMPlatformExplorerModuleCatalog | null>;
68
+ getEntity(moduleName: string, entityName: string): Promise<AXMPlatformExplorerEntityDetail | null>;
69
+ getCatalogItem(kind: AXMPlatformExplorerCatalogKind, name: string): Promise<AXMPlatformExplorerCatalogItem | null>;
70
+ getManifest(moduleName: string): AXPModuleManifest | undefined;
71
+ moduleTitle(moduleName: string): string;
72
+ moduleIcon(moduleName: string): string;
73
+ resolveExplorerSelection(state: ExplorerRouteState, moduleNodes: PlatformExplorerTreeNode[]): Promise<PlatformExplorerTreeNode | null>;
74
+ toModuleTreeNodes(modules: AXMPlatformExplorerModuleSummary[]): PlatformExplorerTreeNode[];
75
+ private toModuleNode;
76
+ getModuleChildren(moduleName: string): Promise<PlatformExplorerTreeNode[]>;
77
+ getCategoryChildren(moduleName: string, kind: PlatformExplorerTreeNode['kind']): Promise<PlatformExplorerTreeNode[]>;
78
+ private pushCategory;
79
+ private namedNode;
80
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PlatformExplorerDataService, never>;
81
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PlatformExplorerDataService>;
77
82
  }
78
83
 
79
84
  declare class AXPlatformExplorerPageComponent extends AXPPageLayoutBaseComponent {
80
85
  protected readonly dataService: PlatformExplorerDataService;
81
- readonly loading: i0.WritableSignal<boolean>;
82
- readonly selectedNode: i0.WritableSignal<PlatformExplorerTreeNode | null>;
83
- protected readonly moduleNodes: i0.WritableSignal<PlatformExplorerTreeNode[]>;
84
- protected readonly tree: i0.Signal<AXTreeViewComponent | undefined>;
86
+ protected readonly deviceService: AXPDeviceService;
87
+ private readonly route;
88
+ readonly loading: _angular_core.WritableSignal<boolean>;
89
+ readonly loadError: _angular_core.WritableSignal<boolean>;
90
+ readonly selectedNode: _angular_core.WritableSignal<PlatformExplorerTreeNode | null>;
91
+ protected readonly moduleNodes: _angular_core.WritableSignal<PlatformExplorerTreeNode[]>;
92
+ protected readonly hasCatalogModules: _angular_core.Signal<boolean>;
93
+ protected readonly search: _angular_core.WritableSignal<string>;
94
+ protected readonly tree: _angular_core.Signal<AXTreeViewComponent | undefined>;
95
+ protected readonly entityTabs: _angular_core.WritableSignal<_acorex_platform_module_platform_dev_tools_client.PlatformExplorerEntityTab[]>;
96
+ protected readonly activeEntitySection: _angular_core.WritableSignal<string>;
97
+ protected readonly moduleListMinWidth = 256;
98
+ protected readonly moduleListDefaultWidth = 288;
99
+ protected readonly moduleListMaxWidth = 560;
100
+ protected readonly moduleListWidth: _angular_core.WritableSignal<number>;
101
+ private catalogReady;
102
+ private syncingFromUrl;
85
103
  constructor();
86
- /** Datasource for tree: root = modules only; children loaded when module is expanded. */
87
104
  protected datasource: (parentId?: string) => Promise<AXTreeViewNode[]>;
88
- private initializeModules;
105
+ protected onSearchChanged(event: AXValueChangedEvent<string>): Promise<void>;
89
106
  getPageTitle(): Promise<string>;
90
107
  getPageDescription(): string | null | Promise<string | null>;
91
108
  getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
109
+ protected onModuleListResized(event: AXValueChangedEvent<number>): void;
110
+ protected onNodeClick(event: AXTreeViewNodeSelectEvent): Promise<void>;
111
+ protected onEntityTabChanged(event: AXTabStripChangedEvent): void;
92
112
  private descriptionKeyForKind;
93
- protected onNodeClick(event: AXTreeViewNodeSelectEvent): void;
94
- protected onNodeToggle(_event: AXTreeViewNodeToggleEvent): void;
95
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerPageComponent, never>;
96
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerPageComponent, "axp-platform-explorer-page", never, {}, {}, never, never, true, never>;
97
- }
98
-
99
- declare class AXPlatformExplorerTreeNodeComponent {
100
- node: i0.InputSignal<PlatformExplorerTreeNode>;
101
- selectedId: i0.InputSignal<string | null>;
102
- nodeSelect: i0.OutputEmitterRef<PlatformExplorerTreeNode>;
103
- readonly expanded: i0.WritableSignal<boolean>;
104
- childrenLength(): number;
105
- hasChildren(): boolean;
106
- isSelected(): boolean;
107
- toggle(): void;
108
- select(): void;
109
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerTreeNodeComponent, never>;
110
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerTreeNodeComponent, "axp-platform-explorer-tree-node", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; }, { "nodeSelect": "nodeSelect"; }, never, never, true, never>;
113
+ private onQueryChanged;
114
+ private boot;
115
+ private selectPageNode;
116
+ private writeQuery;
117
+ private applyRouteState;
118
+ private revealSelection;
119
+ private waitForTree;
120
+ private initializeModules;
121
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerPageComponent, never>;
122
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerPageComponent, "axp-platform-explorer-page", never, {}, {}, never, never, true, never>;
111
123
  }
112
124
 
113
125
  declare class AXPlatformExplorerDetailComponent {
114
- node: i0.InputSignal<PlatformExplorerTreeNode>;
115
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerDetailComponent, never>;
116
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerDetailComponent, "axp-platform-explorer-detail", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
126
+ node: _angular_core.InputSignal<PlatformExplorerTreeNode>;
127
+ protected asModule(payload: unknown): AXMPlatformExplorerModuleSummary | undefined;
128
+ protected asEntity(payload: unknown): AXMPlatformExplorerEntitySummary | undefined;
129
+ protected asNamed(payload: unknown): AXMPlatformExplorerNamedItem | undefined;
130
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerDetailComponent, never>;
131
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerDetailComponent, "axp-platform-explorer-detail", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
117
132
  }
118
133
 
134
+ interface ManifestDependencyView {
135
+ name: string;
136
+ title: string;
137
+ }
138
+ interface ModuleManifestView {
139
+ name: string;
140
+ title: string;
141
+ description?: string;
142
+ icon: string;
143
+ version: string;
144
+ type: AXPModuleType;
145
+ typeKey: string;
146
+ domain: string;
147
+ domainKey: string;
148
+ i18n?: string;
149
+ required: boolean;
150
+ dependencies: ManifestDependencyView[];
151
+ }
119
152
  declare class AXPlatformExplorerModuleDetailComponent {
120
- payload: i0.InputSignal<AXPModuleManifest | undefined>;
121
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerModuleDetailComponent, never>;
122
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerModuleDetailComponent, "axp-platform-explorer-module-detail", never, { "payload": { "alias": "payload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
153
+ payload: _angular_core.InputSignal<AXMPlatformExplorerModuleSummary | undefined>;
154
+ private readonly dataService;
155
+ protected readonly view: _angular_core.Signal<ModuleManifestView | null>;
156
+ private toView;
157
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerModuleDetailComponent, never>;
158
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerModuleDetailComponent, "axp-platform-explorer-module-detail", never, { "payload": { "alias": "payload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
159
+ }
160
+
161
+ interface FlatJsonPair {
162
+ path: string;
163
+ value: string;
164
+ }
165
+
166
+ type ExplorerLayoutKind = 'list' | 'record' | 'create' | 'update' | 'detail-list' | 'related';
167
+ interface ExplorerActionView {
168
+ id: string;
169
+ name?: string;
170
+ title?: string;
171
+ commandName: string;
172
+ type?: string;
173
+ typeLabel: string;
174
+ scope: string;
175
+ priority: string;
176
+ icon?: string;
177
+ color?: string;
178
+ shortcuts: string[];
179
+ permissions: string[];
180
+ hidden?: string;
181
+ disabled?: string;
182
+ isDefault: boolean;
183
+ separated: boolean;
184
+ order?: number;
185
+ depth: number;
186
+ optionsPairs: FlatJsonPair[];
187
+ metadataPairs: FlatJsonPair[];
188
+ submenuExpression?: string;
189
+ }
190
+ interface ExplorerActionScopeGroup {
191
+ scope: string;
192
+ actions: ExplorerActionView[];
193
+ }
194
+ interface ExplorerLayoutView {
195
+ name: string;
196
+ title?: string;
197
+ }
198
+ interface ExplorerLayoutSection {
199
+ id: string;
200
+ kind: ExplorerLayoutKind;
201
+ relatedTitle?: string;
202
+ relatedEntity?: string;
203
+ relatedLayoutType?: string;
204
+ layoutTitle?: string;
205
+ layoutDescription?: string;
206
+ views: ExplorerLayoutView[];
207
+ groups: ExplorerActionScopeGroup[];
208
+ actionCount: number;
123
209
  }
124
210
 
211
+ interface PropertyDetailFlag {
212
+ labelKey: string;
213
+ on: boolean;
214
+ }
215
+ interface PropertyDetailPair {
216
+ labelKey: string;
217
+ value: string;
218
+ }
219
+ interface PropertyDetailTrigger {
220
+ event: string;
221
+ action: string;
222
+ disabled: boolean;
223
+ }
224
+ interface PropertyDetailValidation {
225
+ rule: string;
226
+ message?: string;
227
+ optionsPairs: FlatJsonPair[];
228
+ disabled: boolean;
229
+ }
230
+ interface PropertyDetailJson {
231
+ labelKey: string;
232
+ pairs: FlatJsonPair[];
233
+ }
234
+ interface PropertyDetailsView {
235
+ flags: PropertyDetailFlag[];
236
+ pairs: PropertyDetailPair[];
237
+ triggers: PropertyDetailTrigger[];
238
+ validations: PropertyDetailValidation[];
239
+ jsonBlocks: PropertyDetailJson[];
240
+ }
241
+ type PropertyDetailEntry = {
242
+ kind: 'flag';
243
+ labelKey: string;
244
+ on: boolean;
245
+ } | {
246
+ kind: 'pair';
247
+ labelKey: string;
248
+ value: string;
249
+ };
250
+
251
+ interface EntityPropertyView {
252
+ name: string;
253
+ title?: string;
254
+ dataType?: string;
255
+ editor?: string;
256
+ description?: string;
257
+ pluginName?: string;
258
+ pluginTitle?: string;
259
+ details: PropertyDetailsView;
260
+ }
125
261
  declare class AXPlatformExplorerEntityDetailComponent {
126
- payload: i0.InputSignal<AXPEntityListEntry | AXPEntity | undefined>;
127
- protected readonly entity: i0.WritableSignal<AXPEntity | null>;
128
- protected readonly loading: i0.WritableSignal<boolean>;
129
- private readonly entityResolver;
262
+ payload: _angular_core.InputSignal<AXMPlatformExplorerEntitySummary | undefined>;
263
+ private readonly dataService;
264
+ private readonly destroyRef;
265
+ protected readonly detail: _angular_core.WritableSignal<AXMPlatformExplorerEntityDetail | null>;
266
+ protected readonly loading: _angular_core.WritableSignal<boolean>;
267
+ protected readonly loadError: _angular_core.WritableSignal<boolean>;
268
+ protected readonly activeSection: _angular_core.WritableSignal<string>;
269
+ protected readonly selectedName: _angular_core.WritableSignal<string | null>;
270
+ protected readonly selectedActionId: _angular_core.WritableSignal<string | null>;
271
+ protected readonly actionQuery: _angular_core.WritableSignal<string>;
272
+ protected readonly properties: _angular_core.Signal<EntityPropertyView[]>;
273
+ protected readonly layoutSections: _angular_core.Signal<ExplorerLayoutSection[]>;
274
+ protected readonly selectedProperty: _angular_core.Signal<EntityPropertyView | null>;
275
+ protected readonly isFieldSection: _angular_core.Signal<boolean>;
276
+ protected readonly inspectorOpen: _angular_core.Signal<boolean>;
277
+ protected readonly inspectorAriaKey: _angular_core.Signal<"@platform-dev-tools:module.property-details.field-definition" | "@platform-dev-tools:module.action-details.action-definition">;
278
+ protected readonly activeLayout: _angular_core.Signal<ExplorerLayoutSection | null>;
279
+ protected readonly activeActions: _angular_core.Signal<ExplorerActionView[]>;
280
+ protected readonly filteredActions: _angular_core.Signal<ExplorerActionView[]>;
281
+ protected readonly selectedAction: _angular_core.Signal<ExplorerActionView>;
282
+ protected readonly selectedSchemaEntries: _angular_core.Signal<PropertyDetailEntry[]>;
283
+ protected readonly selectedPresentationEntries: _angular_core.Signal<PropertyDetailEntry[]>;
130
284
  constructor();
131
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerEntityDetailComponent, never>;
132
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerEntityDetailComponent, "axp-platform-explorer-entity-detail", never, { "payload": { "alias": "payload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
285
+ protected selectProperty(name: string): void;
286
+ protected selectAction(id: string): void;
287
+ protected isSelected(name: string): boolean;
288
+ protected isActionSelected(id: string): boolean;
289
+ protected onActionSearchChanged(event: AXValueChangedEvent<string>): void;
290
+ protected flagValue(details: PropertyDetailsView, key: string): boolean | undefined;
291
+ protected isCodePair(key: string): boolean;
292
+ protected isTypePair(key: string): boolean;
293
+ protected hiddenFlag(action: ExplorerActionView): boolean | undefined;
294
+ protected disabledFlag(action: ExplorerActionView): boolean | undefined;
295
+ protected hiddenExpression(action: ExplorerActionView): string | undefined;
296
+ protected disabledExpression(action: ExplorerActionView): string | undefined;
297
+ private schemaEntries;
298
+ private presentationEntries;
299
+ private loadDetail;
300
+ private buildTabs;
301
+ private mergeProperties;
302
+ private toRow;
303
+ private asText;
304
+ private matchesActionQuery;
305
+ private yesNoFlag;
306
+ private expressionValue;
307
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerEntityDetailComponent, never>;
308
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerEntityDetailComponent, "axp-platform-explorer-entity-detail", never, { "payload": { "alias": "payload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
133
309
  }
134
310
 
135
- declare class AXPlatformExplorerPermissionsListDetailComponent {
136
- moduleName: i0.InputSignal<string>;
311
+ interface CatalogIoRow {
312
+ name: string;
313
+ title?: string;
314
+ dataType?: string;
315
+ required: boolean;
316
+ extra?: string;
317
+ extraKind?: 'scope' | 'condition';
318
+ note?: string;
319
+ }
320
+ type CatalogContributionKind = 'properties' | 'columns' | 'actions' | 'groups' | 'pages' | 'related-entities';
321
+ interface CatalogContributionSection {
322
+ kind: CatalogContributionKind;
323
+ extraKey?: 'scope' | 'condition';
324
+ rows: CatalogIoRow[];
325
+ }
326
+ interface CatalogIoTables {
327
+ input: CatalogIoRow[];
328
+ output: CatalogIoRow[];
329
+ showOutput: boolean;
330
+ contributions: CatalogContributionSection[];
331
+ extensionKeys: string[];
332
+ }
333
+
334
+ declare class AXPlatformExplorerCatalogDetailComponent {
335
+ kind: _angular_core.InputSignal<AXMPlatformExplorerCatalogKind>;
336
+ item: _angular_core.InputSignal<AXMPlatformExplorerNamedItem | undefined>;
337
+ private readonly dataService;
338
+ protected readonly detail: _angular_core.WritableSignal<AXMPlatformExplorerCatalogItem | null>;
339
+ protected readonly loading: _angular_core.WritableSignal<boolean>;
340
+ protected readonly loadError: _angular_core.WritableSignal<boolean>;
341
+ protected readonly ioTables: _angular_core.Signal<CatalogIoTables | null>;
342
+ constructor();
343
+ protected record(): Record<string, unknown> | null;
344
+ protected displayTitle(record: Record<string, unknown>): string;
345
+ protected asText(value: unknown): string;
346
+ protected asStringList(value: unknown): string[];
347
+ protected asCategoryLabels(value: unknown): string[];
348
+ protected isNumber(value: unknown): boolean;
349
+ private load;
350
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerCatalogDetailComponent, never>;
351
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerCatalogDetailComponent, "axp-platform-explorer-catalog-detail", never, { "kind": { "alias": "kind"; "required": true; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
352
+ }
353
+
354
+ declare class AXPlatformExplorerListDetailComponent {
355
+ moduleName: _angular_core.InputSignal<string>;
356
+ kind: _angular_core.InputSignal<PlatformExplorerNodeKind>;
137
357
  private readonly dataService;
138
- readonly dataSource: AXDataSource<AXPPermissionDefinition>;
358
+ readonly dataSource: AXDataSource<AXMPlatformExplorerNamedItem>;
139
359
  constructor();
140
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerPermissionsListDetailComponent, never>;
141
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerPermissionsListDetailComponent, "axp-platform-explorer-permissions-list-detail", never, { "moduleName": { "alias": "moduleName"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
360
+ private loadRows;
361
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerListDetailComponent, never>;
362
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerListDetailComponent, "axp-platform-explorer-list-detail", never, { "moduleName": { "alias": "moduleName"; "required": true; "isSignal": true; }; "kind": { "alias": "kind"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
363
+ }
364
+
365
+ interface ExplorerEntityNodeData {
366
+ kind: 'entity';
367
+ fullName: string;
368
+ name: string;
369
+ title?: string;
370
+ module: string;
371
+ moduleTitle: string;
372
+ external: boolean;
373
+ icon: string;
374
+ properties: AXMPlatformExplorerEntityGraphProperty[];
142
375
  }
143
376
 
144
- declare class AXPlatformExplorerFeaturesListDetailComponent {
145
- moduleName: i0.InputSignal<string>;
377
+ declare class AXPlatformExplorerEntitiesGraphComponent {
378
+ moduleName: _angular_core.InputSignal<string>;
146
379
  private readonly dataService;
147
- readonly dataSource: AXDataSource<AXPFeatureDefinition>;
380
+ /** Readonly diagram: no spare drawing area, so fit-to-content keeps cards readable. */
381
+ protected readonly canvasMinSize: {
382
+ width: number;
383
+ height: number;
384
+ };
385
+ protected readonly loading: _angular_core.WritableSignal<boolean>;
386
+ protected readonly loadError: _angular_core.WritableSignal<boolean>;
387
+ protected readonly diagram: _angular_core.WritableSignal<AXPWorkflowDiagramModel | null>;
388
+ protected readonly highlightedNodeIds: _angular_core.WritableSignal<readonly string[]>;
389
+ protected readonly expandedNodeIds: _angular_core.WritableSignal<ReadonlySet<string>>;
148
390
  constructor();
149
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerFeaturesListDetailComponent, never>;
150
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerFeaturesListDetailComponent, "axp-platform-explorer-features-list-detail", never, { "moduleName": { "alias": "moduleName"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
391
+ protected entityOf(node: AXPWorkflowNode): ExplorerEntityNodeData | null;
392
+ protected entityLabel(entity: ExplorerEntityNodeData): string;
393
+ protected isExpanded(id: string): boolean;
394
+ protected propertyToggleLabel(expanded: boolean): string;
395
+ protected onToggleProperties(event: Event, id: string): void;
396
+ protected onNodeClick(event: {
397
+ node: AXPWorkflowNode;
398
+ }): void;
399
+ protected onCanvasClick(): void;
400
+ private load;
401
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatformExplorerEntitiesGraphComponent, never>;
402
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPlatformExplorerEntitiesGraphComponent, "axp-platform-explorer-entities-graph", never, { "moduleName": { "alias": "moduleName"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
151
403
  }
152
404
 
153
- export { AXMPermissionDefinitionProvider, AXMPlatformDevToolsModule, AXPlatformExplorerDetailComponent, AXPlatformExplorerEntityDetailComponent, AXPlatformExplorerFeaturesListDetailComponent, AXPlatformExplorerModuleDetailComponent, AXPlatformExplorerPageComponent, AXPlatformExplorerPermissionsListDetailComponent, AXPlatformExplorerTreeNodeComponent, PlatformDevToolsManifest, PlatformExplorerDataService };
154
- export type { PlatformExplorerNodeKind, PlatformExplorerTreeNode };
405
+ export { AXMPermissionDefinitionProvider, AXMPlatformDevToolsModule, AXPlatformExplorerCatalogDetailComponent, AXPlatformExplorerDetailComponent, AXPlatformExplorerEntitiesGraphComponent, AXPlatformExplorerEntityDetailComponent, AXPlatformExplorerListDetailComponent, AXPlatformExplorerModuleDetailComponent, AXPlatformExplorerPageComponent, PlatformExplorerDataService };
406
+ export type { PlatformExplorerEntityTab, PlatformExplorerNodeKind, PlatformExplorerTreeNode };