@acorex-platform/module-platform-management-client 0.0.32 → 0.0.37

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 (72) hide show
  1. package/fesm2022/{acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-Dhg_zr0Y.mjs → acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-BGVhn6wv.mjs} +134 -10
  2. package/fesm2022/acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-BGVhn6wv.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-command-definition.mjs +273 -0
  4. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-command-definition.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-access-policy.mjs +235 -0
  6. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-access-policy.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-definition.mjs +249 -0
  8. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-definition.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-plugin-definition.mjs +258 -0
  10. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-plugin-definition.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-query-definition.mjs +477 -0
  12. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-query-definition.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-token.mjs +797 -0
  14. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-token.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-widget.mjs +305 -0
  16. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-widget.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-acorex-platform-module-platform-management-client-contracts-entity-catalog-BOwC5Ns9.mjs +116 -0
  18. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-acorex-platform-module-platform-management-client-contracts-entity-catalog-BOwC5Ns9.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-command-definition.entity-CdvQlwAk.mjs +182 -0
  20. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-command-definition.entity-CdvQlwAk.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-access-policy.entity-Dye4aSKE.mjs +144 -0
  22. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-access-policy.entity-Dye4aSKE.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-definition.entity-CcJ58vfr.mjs +158 -0
  24. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-definition.entity-CcJ58vfr.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-plugin-definition.entity-CwU5hMjI.mjs +167 -0
  26. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-plugin-definition.entity-CwU5hMjI.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-query-definition.entity-DGK684Q1.mjs +386 -0
  28. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-query-definition.entity-DGK684Q1.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-token.entity-DI_k6-ha.mjs +706 -0
  30. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-token.entity-DI_k6-ha.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-widget.entity-C18msniH.mjs +214 -0
  32. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-widget.entity-C18msniH.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog.mjs +2 -0
  34. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-platform-management-client-contracts.mjs.map +1 -1
  36. package/fesm2022/{acorex-platform-module-platform-management-client-create-user-query.command-BZMFLEua.mjs → acorex-platform-module-platform-management-client-create-user-query.command-9Ku7C1BC.mjs} +2 -2
  37. package/fesm2022/{acorex-platform-module-platform-management-client-create-user-query.command-BZMFLEua.mjs.map → acorex-platform-module-platform-management-client-create-user-query.command-9Ku7C1BC.mjs.map} +1 -1
  38. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-module-platform-management-client-data-list-pick-entity-item.command-CJVpqPmY.mjs.map +1 -1
  41. package/fesm2022/acorex-platform-module-platform-management-client-entity-master-actions-for-ai.util-DmGyoy9o.mjs.map +1 -1
  42. package/fesm2022/acorex-platform-module-platform-management-client-execute-token.command-B_xwW9lb.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-module-platform-management-client-list-catalog-scopes.query-ByhDTWE6.mjs.map +1 -1
  44. package/fesm2022/acorex-platform-module-platform-management-client-list-editor-widgets.query-DITPMmbw.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-module-platform-management-client-list-platform-navigation-for-ai.query-2oHMITw-.mjs.map +1 -1
  46. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-DjStd3a8.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-queries.query-C-IfkTel.mjs.map +1 -1
  48. package/fesm2022/acorex-platform-module-platform-management-client-local-entities.mjs +35 -0
  49. package/fesm2022/acorex-platform-module-platform-management-client-local-entities.mjs.map +1 -0
  50. package/fesm2022/{acorex-platform-module-platform-management-client-menu-list.component-DiKmJva5.mjs → acorex-platform-module-platform-management-client-menu-list.component-uF5w1c7t.mjs} +4 -4
  51. package/fesm2022/{acorex-platform-module-platform-management-client-menu-list.component-DiKmJva5.mjs.map → acorex-platform-module-platform-management-client-menu-list.component-uF5w1c7t.mjs.map} +1 -1
  52. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-charts.queries-CQ34R13-.mjs.map +1 -1
  53. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-data.util-BIkULtKk.mjs.map +1 -1
  54. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-kpi.queries-BkPdhVq_.mjs.map +1 -1
  55. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-BR1FlwWM.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-B0g6dweQ.mjs} +2 -2
  56. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-BR1FlwWM.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-B0g6dweQ.mjs.map} +1 -1
  57. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-DwPKSgdP.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-A0v5MWRU.mjs} +3 -3
  58. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-DwPKSgdP.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-A0v5MWRU.mjs.map} +1 -1
  59. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-DPhBXqGo.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-RR5zcsnI.mjs} +2 -2
  60. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-DPhBXqGo.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-RR5zcsnI.mjs.map} +1 -1
  61. package/fesm2022/acorex-platform-module-platform-management-client.mjs +1 -1
  62. package/package.json +39 -3
  63. package/types/acorex-platform-module-platform-management-client-contracts-entities-command-definition.d.ts +5 -0
  64. package/types/acorex-platform-module-platform-management-client-contracts-entities-entity-access-policy.d.ts +5 -0
  65. package/types/acorex-platform-module-platform-management-client-contracts-entities-entity-definition.d.ts +5 -0
  66. package/types/acorex-platform-module-platform-management-client-contracts-entities-plugin-definition.d.ts +5 -0
  67. package/types/acorex-platform-module-platform-management-client-contracts-entities-query-definition.d.ts +5 -0
  68. package/types/acorex-platform-module-platform-management-client-contracts-entities-token.d.ts +5 -0
  69. package/types/acorex-platform-module-platform-management-client-contracts-entities-widget.d.ts +5 -0
  70. package/types/acorex-platform-module-platform-management-client-contracts-entity-catalog.d.ts +10 -0
  71. package/types/acorex-platform-module-platform-management-client-local-entities.d.ts +12 -0
  72. package/fesm2022/acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-Dhg_zr0Y.mjs.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
2
2
  import { AXPSettingsService, AXPMenuProviderService, AXPTokenDefinitionService, AXP_TOKEN_DEFINITION_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';
3
+ import { AXPEntityService, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';
3
4
  import { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/core';
4
5
  import { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';
5
6
  import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetCoreModule, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
@@ -13,12 +14,17 @@ import { AXPPlatformManagementFeatureKeys, RootConfig, AXM_TOKEN_RESOLVE_COMMAND
13
14
  import { AXPPlatformScope, runtimeCommandPayloadData } from '@acorex-platform/framework-shared/core';
14
15
  import { AXPMenuCustomizerService, AXP_MENU_CUSTOMIZER_SERVICE } from '@acorex-platform/framework-client/layout/components';
15
16
  import { cloneDeep } from 'lodash';
16
- import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
17
17
  import { AXDialogService } from '@acorex/components/dialog';
18
18
  import { AXTranslationService } from '@acorex/core/translation';
19
19
  import { SwUpdate } from '@angular/service-worker';
20
20
  import { AXPCommonMenuKeys, AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';
21
21
  import { AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex-platform/framework-client/domain';
22
+ import { commandDefinitionEntityFactory } from '@acorex-platform/module-platform-management-client/contracts/entities/command-definition';
23
+ import { entityDefinitionEntityFactory } from '@acorex-platform/module-platform-management-client/contracts/entities/entity-definition';
24
+ import { pluginDefinitionEntityFactory } from '@acorex-platform/module-platform-management-client/contracts/entities/plugin-definition';
25
+ import { queryDefinitionEntityFactory } from '@acorex-platform/module-platform-management-client/contracts/entities/query-definition';
26
+ import { widgetEntityFactory } from '@acorex-platform/module-platform-management-client/contracts/entities/widget';
27
+ import { entityMasterViewAction } from '@acorex-platform/framework-shared/entity';
22
28
  import { AXPanViewDirective } from '@acorex/cdk/pan-view';
23
29
  import * as i1$1 from '@acorex/components/button';
24
30
  import { AXButtonModule } from '@acorex/components/button';
@@ -48,16 +54,16 @@ const AXMRestApiGeneratorWidget = {
48
54
  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_READONLY_PROPERTY, AXP_DISABLED_PROPERTY],
49
55
  components: {
50
56
  edit: {
51
- component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-DwPKSgdP.mjs').then((c) => c.AXMRestApiGeneratorWidgetEditComponent),
57
+ component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-A0v5MWRU.mjs').then((c) => c.AXMRestApiGeneratorWidgetEditComponent),
52
58
  },
53
59
  designer: {
54
- component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-DwPKSgdP.mjs').then((c) => c.AXMRestApiGeneratorWidgetEditComponent),
60
+ component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-A0v5MWRU.mjs').then((c) => c.AXMRestApiGeneratorWidgetEditComponent),
55
61
  },
56
62
  view: {
57
- component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-DPhBXqGo.mjs').then((c) => c.AXMRestApiGeneratorWidgetViewComponent),
63
+ component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-RR5zcsnI.mjs').then((c) => c.AXMRestApiGeneratorWidgetViewComponent),
58
64
  },
59
65
  column: {
60
- component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-BR1FlwWM.mjs').then((c) => c.AXMRestApiGeneratorWidgetColumnComponent),
66
+ component: () => import('./acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-B0g6dweQ.mjs').then((c) => c.AXMRestApiGeneratorWidgetColumnComponent),
61
67
  },
62
68
  },
63
69
  };
@@ -2427,6 +2433,114 @@ function providePlatformCommandCatalogCrudService() {
2427
2433
  };
2428
2434
  }
2429
2435
 
2436
+ //#region ----- Imports -----
2437
+ //#endregion
2438
+ //#region ----- Constants -----
2439
+ const CATALOG_FACTORY_BY_NAME = {
2440
+ [RootConfig.entities.entityDefinition.name]: entityDefinitionEntityFactory,
2441
+ [RootConfig.entities.commandDefinition.name]: commandDefinitionEntityFactory,
2442
+ [RootConfig.entities.queryDefinition.name]: queryDefinitionEntityFactory,
2443
+ [RootConfig.entities.pluginDefinition.name]: pluginDefinitionEntityFactory,
2444
+ [RootConfig.entities.widget.name]: widgetEntityFactory,
2445
+ };
2446
+ //#endregion
2447
+ //#region ----- Helpers -----
2448
+ function actionCommandName(action) {
2449
+ const command = action.command;
2450
+ if (typeof command === 'string') {
2451
+ return command;
2452
+ }
2453
+ if (command && typeof command === 'object' && 'name' in command) {
2454
+ return String(command.name);
2455
+ }
2456
+ return undefined;
2457
+ }
2458
+ function hasOpenDetailsAction(actions) {
2459
+ return (actions ?? []).some((action) => actionCommandName(action) === 'Entity:OpenDetails');
2460
+ }
2461
+ function columnName(column) {
2462
+ return typeof column === 'string' ? column : column.name;
2463
+ }
2464
+ function hideIdProperty(property) {
2465
+ if (property.name !== 'id') {
2466
+ return property;
2467
+ }
2468
+ const { groupId: _groupId, ...rest } = property;
2469
+ return {
2470
+ ...rest,
2471
+ schema: {
2472
+ ...property.schema,
2473
+ visible: false,
2474
+ readonly: true,
2475
+ },
2476
+ };
2477
+ }
2478
+ function applyCatalogFactoryLayout(ctx, factory) {
2479
+ ctx.groups.remove(() => true);
2480
+ if (factory.groups?.length) {
2481
+ ctx.groups.add(...factory.groups);
2482
+ }
2483
+ ctx.properties.remove(() => true);
2484
+ ctx.properties.add(...factory.properties.map(hideIdProperty));
2485
+ ctx.columns.remove(() => true);
2486
+ const columns = (factory.columns ?? []).filter((column) => columnName(column) !== 'id');
2487
+ if (columns.length) {
2488
+ ctx.columns.add(...columns);
2489
+ }
2490
+ if (factory.formats) {
2491
+ ctx.formats.update(() => factory.formats);
2492
+ }
2493
+ const factoryMaster = factory.interfaces?.master;
2494
+ ctx.interfaces.master.update((current) => {
2495
+ const listActions = [...(factoryMaster?.list?.actions ?? current?.list?.actions ?? [])];
2496
+ if (!hasOpenDetailsAction(listActions)) {
2497
+ listActions.unshift(entityMasterViewAction());
2498
+ }
2499
+ return {
2500
+ ...current,
2501
+ ...factoryMaster,
2502
+ list: {
2503
+ ...factoryMaster?.list,
2504
+ views: factoryMaster?.list?.views ?? current?.list?.views ?? [],
2505
+ actions: listActions,
2506
+ },
2507
+ single: {
2508
+ title: factoryMaster?.single?.title ?? '{{ name }}',
2509
+ description: factoryMaster?.single?.description,
2510
+ sections: factoryMaster?.single?.sections ?? [{ id: 'basic-info' }, { id: 'schema' }],
2511
+ properties: (factoryMaster?.single?.properties ?? []).filter((property) => property.name !== 'id'),
2512
+ actions: factoryMaster?.single?.actions ?? [],
2513
+ },
2514
+ };
2515
+ });
2516
+ }
2517
+ //#endregion
2518
+ //#region ----- Catalog list/detail modifier -----
2519
+ /**
2520
+ * Seeded platform-definition layouts can lag the current factories (unscoped
2521
+ * titles, missing sections, weak filter/sort flags). Overlay the factory
2522
+ * layout at resolve-time so the UI matches without a definitions re-seed.
2523
+ */
2524
+ const AXMPlatformDefinitionCatalogEntityModifier = {
2525
+ entityName: new RegExp(`^(${Object.keys(CATALOG_FACTORY_BY_NAME).join('|')})$`),
2526
+ order: 30,
2527
+ modifier: async (ctx) => {
2528
+ if (ctx.module.get() !== RootConfig.module.name) {
2529
+ return;
2530
+ }
2531
+ const factoryBuilder = CATALOG_FACTORY_BY_NAME[ctx.name.get()];
2532
+ if (!factoryBuilder) {
2533
+ return;
2534
+ }
2535
+ const factory = await factoryBuilder();
2536
+ if (!factory) {
2537
+ return;
2538
+ }
2539
+ applyCatalogFactoryLayout(ctx, factory);
2540
+ },
2541
+ };
2542
+ //#endregion
2543
+
2430
2544
  // Entity Modules
2431
2545
  //#region ---- Routes Factory ----
2432
2546
  function routesFactory() {
@@ -2439,7 +2553,7 @@ function routesFactory() {
2439
2553
  children: [
2440
2554
  {
2441
2555
  path: '',
2442
- loadComponent: () => import('./acorex-platform-module-platform-management-client-menu-list.component-DiKmJva5.mjs').then((c) => c.AXMMenuListComponent),
2556
+ loadComponent: () => import('./acorex-platform-module-platform-management-client-menu-list.component-uF5w1c7t.mjs').then((c) => c.AXMMenuListComponent),
2443
2557
  data: { reuse: true },
2444
2558
  },
2445
2559
  ],
@@ -2492,6 +2606,11 @@ class AXMPlatformManagementModule {
2492
2606
  useClass: AXMPlatformManagementWidgetsProvider,
2493
2607
  multi: true,
2494
2608
  },
2609
+ {
2610
+ provide: AXP_ENTITY_MODIFIER,
2611
+ useValue: AXMPlatformDefinitionCatalogEntityModifier,
2612
+ multi: true,
2613
+ },
2495
2614
  providePlatformCommandCatalogCrudService(),
2496
2615
  provideCommandSetups([
2497
2616
  {
@@ -2500,7 +2619,7 @@ class AXMPlatformManagementModule {
2500
2619
  },
2501
2620
  {
2502
2621
  key: 'PlatformManagement:CreateUserQuery',
2503
- command: () => import('./acorex-platform-module-platform-management-client-create-user-query.command-BZMFLEua.mjs').then((c) => c.AXMCreateUserQueryCommand),
2622
+ command: () => import('./acorex-platform-module-platform-management-client-create-user-query.command-9Ku7C1BC.mjs').then((c) => c.AXMCreateUserQueryCommand),
2504
2623
  },
2505
2624
  ]),
2506
2625
  provideQuerySetups([
@@ -2613,6 +2732,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2613
2732
  useClass: AXMPlatformManagementWidgetsProvider,
2614
2733
  multi: true,
2615
2734
  },
2735
+ {
2736
+ provide: AXP_ENTITY_MODIFIER,
2737
+ useValue: AXMPlatformDefinitionCatalogEntityModifier,
2738
+ multi: true,
2739
+ },
2616
2740
  providePlatformCommandCatalogCrudService(),
2617
2741
  provideCommandSetups([
2618
2742
  {
@@ -2621,7 +2745,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2621
2745
  },
2622
2746
  {
2623
2747
  key: 'PlatformManagement:CreateUserQuery',
2624
- command: () => import('./acorex-platform-module-platform-management-client-create-user-query.command-BZMFLEua.mjs').then((c) => c.AXMCreateUserQueryCommand),
2748
+ command: () => import('./acorex-platform-module-platform-management-client-create-user-query.command-9Ku7C1BC.mjs').then((c) => c.AXMCreateUserQueryCommand),
2625
2749
  },
2626
2750
  ]),
2627
2751
  provideQuerySetups([
@@ -4560,7 +4684,7 @@ class AXPWorkflowDesignerComponent {
4560
4684
  window.removeEventListener('pointercancel', this.onWindowPointerUpForLink);
4561
4685
  }
4562
4686
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWorkflowDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4563
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPWorkflowDesignerComponent, isStandalone: true, selector: "axp-workflow-designer", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, highlightedNodeIds: { classPropertyName: "highlightedNodeIds", publicName: "highlightedNodeIds", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, snapToGrid: { classPropertyName: "snapToGrid", publicName: "snapToGrid", isSignal: true, isRequired: false, transformFunction: null }, connectionPreviewStyle: { classPropertyName: "connectionPreviewStyle", publicName: "connectionPreviewStyle", isSignal: true, isRequired: false, transformFunction: null }, backgroundPattern: { classPropertyName: "backgroundPattern", publicName: "backgroundPattern", isSignal: true, isRequired: false, transformFunction: null }, canConnect: { classPropertyName: "canConnect", publicName: "canConnect", isSignal: true, isRequired: false, transformFunction: null }, paletteItems: { classPropertyName: "paletteItems", publicName: "paletteItems", isSignal: true, isRequired: false, transformFunction: null }, showPortLabels: { classPropertyName: "showPortLabels", publicName: "showPortLabels", isSignal: true, isRequired: false, transformFunction: null }, nodeBodyTemplate: { classPropertyName: "nodeBodyTemplate", publicName: "nodeBodyTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modelChange: "modelChange", zoomChange: "zoomChange", designerPointerDown: "designerPointerDown", designerClick: "designerClick", designerDoubleClick: "designerDoubleClick", nodePointerDown: "nodePointerDown", nodeClick: "nodeClick", nodeDoubleClick: "nodeDoubleClick", nodeContextMenu: "nodeContextMenu", nodeDragStart: "nodeDragStart", nodeDragEnd: "nodeDragEnd", portPointerDown: "portPointerDown", linkDragStart: "linkDragStart", linkDragMove: "linkDragMove", linkDragEnd: "linkDragEnd", connectorClick: "connectorClick", connectorDoubleClick: "connectorDoubleClick", connectionCreated: "connectionCreated", connectionRejected: "connectionRejected", activationChange: "activationChange" }, host: { listeners: { "window:keydown": "onWindowKeydown($event)" }, classAttribute: "axp-workflow-designer-host" }, viewQueries: [{ propertyName: "surfaceRef", first: true, predicate: ["surface"], descendants: true, isSignal: true }, { propertyName: "panViewRef", first: true, predicate: AXPanViewDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axp-workflow-designer\" [ngStyle]=\"gridStyle()\">\n <div\n #surface\n class=\"axp-workflow-designer__surface\"\n axPanView\n [(panX)]=\"panX\"\n [(panY)]=\"panY\"\n [(zoom)]=\"panZoomLevel\"\n [maxZoom]=\"10000\"\n [freeMode]=\"true\"\n [fitContent]=\"true\"\n wrapperClasses=\"h\"\n [ngStyle]=\"surfaceStyle()\"\n (pointerdown)=\"onSurfacePointerDown($event)\"\n (click)=\"onSurfaceClick($event)\"\n (dblclick)=\"onSurfaceDoubleClick($event)\"\n (dragover)=\"onCanvasDragOver($event)\"\n (drop)=\"onCanvasDrop($event)\"\n >\n <svg\n class=\"axp-workflow-designer__svg\"\n width=\"100%\"\n height=\"100%\"\n preserveAspectRatio=\"xMinYMin meet\"\n >\n <defs>\n <marker\n [attr.id]=\"svgMarkerId\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n refX=\"3.9\"\n refY=\"3\"\n orient=\"auto\"\n >\n <path\n d=\"M0,0 L4,3 L0,6 Q1.5,3 0,0 Z\"\n class=\"axp-workflow-designer__arrow-head\"\n ></path>\n </marker>\n </defs>\n @for (c of model().connectors; track c.id) {\n <path\n class=\"axp-workflow-designer__edge-hit\"\n [attr.d]=\"connectorPathD(c)\"\n fill=\"none\"\n stroke=\"transparent\"\n stroke-width=\"16\"\n pointer-events=\"stroke\"\n (click)=\"onConnectorClick(c, $event)\"\n (dblclick)=\"onConnectorDoubleClick(c, $event)\"\n />\n <path\n [class]=\"connectorEdgeClasses(c)\"\n [attr.d]=\"connectorPathD(c)\"\n fill=\"none\"\n [attr.marker-end]=\"'url(#' + svgMarkerId + ')'\"\n />\n }\n @if (linkDrag()) {\n <path\n class=\"axp-workflow-designer__edge-preview\"\n [attr.d]=\"previewPath()\"\n fill=\"none\"\n />\n }\n @if (showPortLabels()) {\n @for (node of model().nodes; track node.id) {\n @for (port of node.inboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text\n class=\"axp-workflow-designer__port-label-svg\"\n [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\"\n [attr.text-anchor]=\"portLabelAnchor(node, port)\"\n >\n {{ portLabelText(port) }}\n </text>\n }\n }\n @for (port of node.outboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text\n class=\"axp-workflow-designer__port-label-svg\"\n [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\"\n [attr.text-anchor]=\"portLabelAnchor(node, port)\"\n >\n {{ portLabelText(port) }}\n </text>\n }\n }\n }\n }\n </svg>\n\n @for (c of model().connectors; track c.id) {\n @if (isConnectorActive(c.id) && !isConnectorReadonly(c)) {\n <div\n class=\"axp-workflow-designer__connector-actions\"\n [style.left.px]=\"connectorMidpoint(c).x - 16\"\n [style.top.px]=\"connectorMidpoint(c).y - 16\"\n >\n <ax-button\n look=\"blank\"\n class=\"ax-sm axp-workflow-designer__icon-btn\"\n (onClick)=\"removeConnector(c)\"\n >\n <ax-icon class=\"fa-solid fa-minus\"></ax-icon>\n </ax-button>\n </div>\n }\n }\n\n @for (node of model().nodes; track node.id) {\n <div\n class=\"axp-workflow-designer__node\"\n [class.axp-workflow-designer__node--active]=\"isNodeActive(node.id)\"\n [class.axp-workflow-designer__node--highlighted]=\"\n isNodeHighlighted(node.id)\n \"\n [style.left.px]=\"nodeSurfaceLeft(node)\"\n [style.top.px]=\"nodeSurfaceTop(node)\"\n [style.width.px]=\"node.size.width\"\n [style.height.px]=\"node.size.height\"\n (pointerdown)=\"onNodePointerDown(node, $event)\"\n (click)=\"onNodeClick(node, $event)\"\n (dblclick)=\"onNodeDoubleClick(node, $event)\"\n (contextmenu)=\"onNodeContextMenu(node, $event)\"\n >\n <div [class]=\"nodeShapeClasses(node)\">\n <div\n class=\"axp-workflow-designer__node-body\"\n (pointerdown)=\"onNodeBodyPointerDown(node, $event)\"\n >\n @if (nodeBodyTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"templateContext(node)\"\n />\n } @else {\n <div class=\"axp-workflow-designer__node-default\">\n @if (node.icon) {\n <ax-icon\n class=\"axp-workflow-designer__node-default-icon\"\n [class]=\"node.icon\"\n ></ax-icon>\n }\n <span class=\"axp-workflow-designer__node-default-title\">{{\n node.title\n }}</span>\n </div>\n }\n </div>\n </div>\n\n @for (port of node.inboundPorts; track port.id) {\n <div\n class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"\n port.side === 'top'\n \"\n [class.axp-workflow-designer__port-cluster--side-right]=\"\n port.side === 'right'\n \"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"\n port.side === 'bottom'\n \"\n [class.axp-workflow-designer__port-cluster--side-left]=\"\n port.side === 'left'\n \"\n [ngStyle]=\"portClusterStyle(node, port)\"\n >\n <button\n type=\"button\"\n class=\"axp-workflow-designer__port axp-workflow-designer__port--inbound\"\n [class.axp-workflow-designer__port--active]=\"\n isPortActive(node.id, port.id)\n \"\n [class.axp-workflow-designer__port--link-hover]=\"\n isPortLinkHoverTarget(node.id, port.id)\n \"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"\n ></button>\n </div>\n }\n @for (port of node.outboundPorts; track port.id) {\n <div\n class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"\n port.side === 'top'\n \"\n [class.axp-workflow-designer__port-cluster--side-right]=\"\n port.side === 'right'\n \"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"\n port.side === 'bottom'\n \"\n [class.axp-workflow-designer__port-cluster--side-left]=\"\n port.side === 'left'\n \"\n [ngStyle]=\"portClusterStyle(node, port)\"\n >\n <button\n type=\"button\"\n class=\"axp-workflow-designer__port axp-workflow-designer__port--outbound\"\n [class.axp-workflow-designer__port--active]=\"\n isPortActive(node.id, port.id)\n \"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"\n ></button>\n </div>\n }\n\n @if (isNodeActive(node.id) && !isNodeReadonly(node)) {\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--nw\"\n (pointerdown)=\"onResizePointerDown(node, 'nw', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--ne\"\n (pointerdown)=\"onResizePointerDown(node, 'ne', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--sw\"\n (pointerdown)=\"onResizePointerDown(node, 'sw', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--se\"\n (pointerdown)=\"onResizePointerDown(node, 'se', $event)\"\n ></span>\n }\n </div>\n }\n </div>\n</div>\n", styles: ["@layer properties;.axp-workflow-designer-host{box-sizing:border-box;display:block;height:100%;width:100%;min-height:360px;user-select:none;-webkit-user-select:none}.axp-workflow-designer{display:flex;height:100%;width:100%;min-height:inherit}.axp-workflow-designer .axp-workflow-designer__surface{position:relative;min-height:100%;min-width:100%;flex:auto;overflow:auto;border-radius:10px;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__surface::ng-deep .pan-view__wrapper{height:100%;width:100%}.axp-workflow-designer .axp-workflow-designer__svg{pointer-events:none;position:absolute;inset:0;height:100%;width:100%;z-index:1}.axp-workflow-designer .axp-workflow-designer__edge-hit{pointer-events:stroke;cursor:pointer}.axp-workflow-designer .axp-workflow-designer__edge{pointer-events:none;stroke:rgb(var(--ax-sys-color-neutral-500));stroke-width:2;transition:stroke .12s ease}.axp-workflow-designer .axp-workflow-designer__edge.primary-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-primary-500))}.axp-workflow-designer .axp-workflow-designer__edge.secondary-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-secondary-500))}.axp-workflow-designer .axp-workflow-designer__edge.success-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-success-500))}.axp-workflow-designer .axp-workflow-designer__edge.warning-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-warning-500))}.axp-workflow-designer .axp-workflow-designer__edge.danger-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-danger-500))}.axp-workflow-designer .axp-workflow-designer__edge--active{stroke:rgb(var(--ax-sys-color-primary-500));stroke-dasharray:2}.axp-workflow-designer .axp-workflow-designer__edge-preview{pointer-events:none;stroke:rgb(var(--ax-sys-color-primary-400));stroke-width:2;stroke-dasharray:6 4}.axp-workflow-designer .axp-workflow-designer__port-label-svg{fill:rgb(var(--ax-sys-color-on-surface));font-size:10px;font-weight:600;dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:rgb(var(--ax-sys-color-surface));stroke-width:4px;stroke-linejoin:round}.axp-workflow-designer .axp-workflow-designer__arrow-head{fill:rgb(var(--ax-sys-color-neutral-500))}.axp-workflow-designer .axp-workflow-designer__connector-actions{position:absolute;display:flex;align-items:center;justify-content:center;z-index:4}.axp-workflow-designer .axp-workflow-designer__icon-btn{border-radius:999px;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__node{position:absolute;box-sizing:border-box;z-index:2;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__node.axp-workflow-designer__node--active .axp-workflow-designer__node-shape{border:2px dotted rgb(var(--ax-sys-color-primary-500))}.axp-workflow-designer .axp-workflow-designer__node.axp-workflow-designer__node--highlighted .axp-workflow-designer__node-shape{border:2px solid rgb(var(--ax-sys-color-primary-500));box-shadow:0 0 0 3px rgb(var(--ax-sys-color-primary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape{position:absolute;inset:0;box-sizing:border-box;overflow:visible;background:rgb(var(--ax-sys-color-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-primary-surface{background:rgb(var(--ax-sys-color-primary-surface));color:rgb(var(--ax-sys-color-on-primary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-secondary-surface{background:rgb(var(--ax-sys-color-secondary-surface));color:rgb(var(--ax-sys-color-on-secondary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-success-surface{background:rgb(var(--ax-sys-color-success-surface));color:rgb(var(--ax-sys-color-on-success-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-warning-surface{background:rgb(var(--ax-sys-color-warning-surface));color:rgb(var(--ax-sys-color-on-warning-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-danger-surface{background:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-on-danger-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-primary-border{border:2px solid rgb(var(--ax-sys-color-border-primary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-secondary-border{border:2px solid rgb(var(--ax-sys-color-border-secondary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-success-border{border:2px solid rgb(var(--ax-sys-color-border-success-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-warning-border{border:2px solid rgb(var(--ax-sys-color-border-warning-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-danger-border{border:2px solid rgb(var(--ax-sys-color-border-danger-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape--rectangle{border-radius:4px}.axp-workflow-designer .axp-workflow-designer__node-shape--rounded-rectangle{border-radius:14px}.axp-workflow-designer .axp-workflow-designer__node-shape--circle,.axp-workflow-designer .axp-workflow-designer__node-shape--ellipse{border-radius:50%}.axp-workflow-designer .axp-workflow-designer__node-shape--diamond{border-radius:0;clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%)}.axp-workflow-designer .axp-workflow-designer__node-body{position:absolute;inset:0;display:flex;cursor:grab;align-items:center;justify-content:center;padding:8px 12px;touch-action:none;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__node-default{display:flex;min-width:0px;align-items:center;gap:8px}.axp-workflow-designer .axp-workflow-designer__node-default-icon{flex-shrink:0}.axp-workflow-designer .axp-workflow-designer__node-default-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-workflow-designer .axp-workflow-designer__port-cluster{pointer-events:none;position:absolute;overflow:visible;width:0;height:0;transform:translate(-50%,-50%);z-index:3}.axp-workflow-designer .axp-workflow-designer__port{position:absolute;flex-shrink:0;cursor:crosshair;border-radius:calc(infinity * 1px);left:50%;top:50%;transform:translate(-50%,-50%);width:14px;height:14px;padding:0;border:1px solid rgb(var(--ax-sys-color-surface));touch-action:none;pointer-events:auto;transition:transform .12s ease}.axp-workflow-designer .axp-workflow-designer__port:disabled{opacity:.45;cursor:not-allowed}.axp-workflow-designer .axp-workflow-designer__port--inbound{background:rgb(var(--ax-sys-color-success-500))}.axp-workflow-designer .axp-workflow-designer__port--outbound{background:rgb(var(--ax-sys-color-primary-500))}.axp-workflow-designer .axp-workflow-designer__port--active{box-shadow:0 0 0 3px #3b82f659}.axp-workflow-designer .axp-workflow-designer__port--link-hover{border:1px solid rgb(var(--ax-sys-color-primary-500));transform:translate(-50%,-50%) scale(1.12)}.axp-workflow-designer .axp-workflow-designer__port--disabled{opacity:.45;cursor:not-allowed}.axp-workflow-designer .axp-workflow-designer__resize{position:absolute;border-radius:calc(infinity * 1px);width:7px;height:7px;background:rgb(var(--ax-sys-color-primary-500));border:1px solid rgb(var(--ax-sys-color-surface));z-index:4;touch-action:none;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__resize--nw{left:-6px;top:-6px;cursor:nwse-resize}.axp-workflow-designer .axp-workflow-designer__resize--ne{right:-6px;top:-6px;cursor:nesw-resize}.axp-workflow-designer .axp-workflow-designer__resize--sw{left:-6px;bottom:-6px;cursor:nesw-resize}.axp-workflow-designer .axp-workflow-designer__resize--se{right:-6px;bottom:-6px;cursor:nwse-resize}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "directive", type: AXPanViewDirective, selector: "[axPanView]", inputs: ["zoomStep", "minZoom", "maxZoom", "freeMode", "fitContent", "disablePan", "disableZoom", "wrapperClasses", "panX", "panY", "zoom"], outputs: ["panXChange", "panYChange", "zoomChange", "positionChange"], exportAs: ["axPanView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4687
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPWorkflowDesignerComponent, isStandalone: true, selector: "axp-workflow-designer", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, highlightedNodeIds: { classPropertyName: "highlightedNodeIds", publicName: "highlightedNodeIds", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, snapToGrid: { classPropertyName: "snapToGrid", publicName: "snapToGrid", isSignal: true, isRequired: false, transformFunction: null }, connectionPreviewStyle: { classPropertyName: "connectionPreviewStyle", publicName: "connectionPreviewStyle", isSignal: true, isRequired: false, transformFunction: null }, backgroundPattern: { classPropertyName: "backgroundPattern", publicName: "backgroundPattern", isSignal: true, isRequired: false, transformFunction: null }, canConnect: { classPropertyName: "canConnect", publicName: "canConnect", isSignal: true, isRequired: false, transformFunction: null }, paletteItems: { classPropertyName: "paletteItems", publicName: "paletteItems", isSignal: true, isRequired: false, transformFunction: null }, showPortLabels: { classPropertyName: "showPortLabels", publicName: "showPortLabels", isSignal: true, isRequired: false, transformFunction: null }, nodeBodyTemplate: { classPropertyName: "nodeBodyTemplate", publicName: "nodeBodyTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modelChange: "modelChange", zoomChange: "zoomChange", designerPointerDown: "designerPointerDown", designerClick: "designerClick", designerDoubleClick: "designerDoubleClick", nodePointerDown: "nodePointerDown", nodeClick: "nodeClick", nodeDoubleClick: "nodeDoubleClick", nodeContextMenu: "nodeContextMenu", nodeDragStart: "nodeDragStart", nodeDragEnd: "nodeDragEnd", portPointerDown: "portPointerDown", linkDragStart: "linkDragStart", linkDragMove: "linkDragMove", linkDragEnd: "linkDragEnd", connectorClick: "connectorClick", connectorDoubleClick: "connectorDoubleClick", connectionCreated: "connectionCreated", connectionRejected: "connectionRejected", activationChange: "activationChange" }, host: { listeners: { "window:keydown": "onWindowKeydown($event)" }, classAttribute: "axp-workflow-designer-host" }, viewQueries: [{ propertyName: "surfaceRef", first: true, predicate: ["surface"], descendants: true, isSignal: true }, { propertyName: "panViewRef", first: true, predicate: AXPanViewDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axp-workflow-designer\" [ngStyle]=\"gridStyle()\">\n <div\n #surface\n class=\"axp-workflow-designer__surface\"\n axPanView\n [(panX)]=\"panX\"\n [(panY)]=\"panY\"\n [(zoom)]=\"panZoomLevel\"\n [maxZoom]=\"10000\"\n [freeMode]=\"true\"\n [fitContent]=\"true\"\n wrapperClasses=\"h\"\n [ngStyle]=\"surfaceStyle()\"\n (pointerdown)=\"onSurfacePointerDown($event)\"\n (click)=\"onSurfaceClick($event)\"\n (dblclick)=\"onSurfaceDoubleClick($event)\"\n (dragover)=\"onCanvasDragOver($event)\"\n (drop)=\"onCanvasDrop($event)\"\n >\n <svg\n class=\"axp-workflow-designer__svg\"\n width=\"100%\"\n height=\"100%\"\n preserveAspectRatio=\"xMinYMin meet\"\n >\n <defs>\n <marker\n [attr.id]=\"svgMarkerId\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n refX=\"3.9\"\n refY=\"3\"\n orient=\"auto\"\n >\n <path\n d=\"M0,0 L4,3 L0,6 Q1.5,3 0,0 Z\"\n class=\"axp-workflow-designer__arrow-head\"\n ></path>\n </marker>\n </defs>\n @for (c of model().connectors; track c.id) {\n <path\n class=\"axp-workflow-designer__edge-hit\"\n [attr.d]=\"connectorPathD(c)\"\n fill=\"none\"\n stroke=\"transparent\"\n stroke-width=\"16\"\n pointer-events=\"stroke\"\n (click)=\"onConnectorClick(c, $event)\"\n (dblclick)=\"onConnectorDoubleClick(c, $event)\"\n />\n <path\n [class]=\"connectorEdgeClasses(c)\"\n [attr.d]=\"connectorPathD(c)\"\n fill=\"none\"\n [attr.marker-end]=\"'url(#' + svgMarkerId + ')'\"\n />\n }\n @if (linkDrag()) {\n <path\n class=\"axp-workflow-designer__edge-preview\"\n [attr.d]=\"previewPath()\"\n fill=\"none\"\n />\n }\n @if (showPortLabels()) {\n @for (node of model().nodes; track node.id) {\n @for (port of node.inboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text\n class=\"axp-workflow-designer__port-label-svg\"\n [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\"\n [attr.text-anchor]=\"portLabelAnchor(node, port)\"\n >\n {{ portLabelText(port) }}\n </text>\n }\n }\n @for (port of node.outboundPorts; track port.id) {\n @if (portLabelText(port)) {\n <text\n class=\"axp-workflow-designer__port-label-svg\"\n [attr.x]=\"portLabelX(node, port)\"\n [attr.y]=\"portLabelY(node, port)\"\n [attr.text-anchor]=\"portLabelAnchor(node, port)\"\n >\n {{ portLabelText(port) }}\n </text>\n }\n }\n }\n }\n </svg>\n\n @for (c of model().connectors; track c.id) {\n @if (isConnectorActive(c.id) && !isConnectorReadonly(c)) {\n <div\n class=\"axp-workflow-designer__connector-actions\"\n [style.left.px]=\"connectorMidpoint(c).x - 16\"\n [style.top.px]=\"connectorMidpoint(c).y - 16\"\n >\n <ax-button\n look=\"blank\"\n class=\"ax-sm axp-workflow-designer__icon-btn\"\n (onClick)=\"removeConnector(c)\"\n >\n <ax-icon class=\"fa-solid fa-minus\"></ax-icon>\n </ax-button>\n </div>\n }\n }\n\n @for (node of model().nodes; track node.id) {\n <div\n class=\"axp-workflow-designer__node\"\n [class.axp-workflow-designer__node--active]=\"isNodeActive(node.id)\"\n [class.axp-workflow-designer__node--highlighted]=\"\n isNodeHighlighted(node.id)\n \"\n [style.left.px]=\"nodeSurfaceLeft(node)\"\n [style.top.px]=\"nodeSurfaceTop(node)\"\n [style.width.px]=\"node.size.width\"\n [style.height.px]=\"node.size.height\"\n (pointerdown)=\"onNodePointerDown(node, $event)\"\n (click)=\"onNodeClick(node, $event)\"\n (dblclick)=\"onNodeDoubleClick(node, $event)\"\n (contextmenu)=\"onNodeContextMenu(node, $event)\"\n >\n <div [class]=\"nodeShapeClasses(node)\">\n <div\n class=\"axp-workflow-designer__node-body\"\n (pointerdown)=\"onNodeBodyPointerDown(node, $event)\"\n >\n @if (nodeBodyTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"templateContext(node)\"\n />\n } @else {\n <div class=\"axp-workflow-designer__node-default\">\n @if (node.icon) {\n <ax-icon\n class=\"axp-workflow-designer__node-default-icon\"\n [class]=\"node.icon\"\n ></ax-icon>\n }\n <span class=\"axp-workflow-designer__node-default-title\">{{\n node.title\n }}</span>\n </div>\n }\n </div>\n </div>\n\n @for (port of node.inboundPorts; track port.id) {\n <div\n class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"\n port.side === 'top'\n \"\n [class.axp-workflow-designer__port-cluster--side-right]=\"\n port.side === 'right'\n \"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"\n port.side === 'bottom'\n \"\n [class.axp-workflow-designer__port-cluster--side-left]=\"\n port.side === 'left'\n \"\n [ngStyle]=\"portClusterStyle(node, port)\"\n >\n <button\n type=\"button\"\n class=\"axp-workflow-designer__port axp-workflow-designer__port--inbound\"\n [class.axp-workflow-designer__port--active]=\"\n isPortActive(node.id, port.id)\n \"\n [class.axp-workflow-designer__port--link-hover]=\"\n isPortLinkHoverTarget(node.id, port.id)\n \"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"\n ></button>\n </div>\n }\n @for (port of node.outboundPorts; track port.id) {\n <div\n class=\"axp-workflow-designer__port-cluster\"\n [class.axp-workflow-designer__port-cluster--side-top]=\"\n port.side === 'top'\n \"\n [class.axp-workflow-designer__port-cluster--side-right]=\"\n port.side === 'right'\n \"\n [class.axp-workflow-designer__port-cluster--side-bottom]=\"\n port.side === 'bottom'\n \"\n [class.axp-workflow-designer__port-cluster--side-left]=\"\n port.side === 'left'\n \"\n [ngStyle]=\"portClusterStyle(node, port)\"\n >\n <button\n type=\"button\"\n class=\"axp-workflow-designer__port axp-workflow-designer__port--outbound\"\n [class.axp-workflow-designer__port--active]=\"\n isPortActive(node.id, port.id)\n \"\n [class.axp-workflow-designer__port--disabled]=\"port.disabled\"\n [disabled]=\"isNodeReadonly(node) || port.disabled === true\"\n (pointerdown)=\"onPortPointerDown(node, port, $event)\"\n ></button>\n </div>\n }\n\n @if (isNodeActive(node.id) && !isNodeReadonly(node)) {\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--nw\"\n (pointerdown)=\"onResizePointerDown(node, 'nw', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--ne\"\n (pointerdown)=\"onResizePointerDown(node, 'ne', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--sw\"\n (pointerdown)=\"onResizePointerDown(node, 'sw', $event)\"\n ></span>\n <span\n class=\"axp-workflow-designer__resize axp-workflow-designer__resize--se\"\n (pointerdown)=\"onResizePointerDown(node, 'se', $event)\"\n ></span>\n }\n </div>\n }\n </div>\n</div>\n", styles: ["@layer properties;.axp-workflow-designer-host{box-sizing:border-box;display:block;height:100%;width:100%;min-height:360px;user-select:none;-webkit-user-select:none}.axp-workflow-designer{display:flex;height:100%;width:100%;min-height:inherit}.axp-workflow-designer .axp-workflow-designer__surface{position:relative;min-height:100%;min-width:100%;flex:auto;overflow:auto;border-radius:10px;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__surface::ng-deep .pan-view__wrapper{height:100%;width:100%}.axp-workflow-designer .axp-workflow-designer__svg{pointer-events:none;position:absolute;inset:0;height:100%;width:100%;z-index:1}.axp-workflow-designer .axp-workflow-designer__edge-hit{pointer-events:stroke;cursor:pointer}.axp-workflow-designer .axp-workflow-designer__edge{pointer-events:none;stroke:rgb(var(--ax-sys-color-neutral-500));stroke-width:2;transition:stroke .12s ease}.axp-workflow-designer .axp-workflow-designer__edge.primary-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-primary-500))}.axp-workflow-designer .axp-workflow-designer__edge.secondary-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-secondary-500))}.axp-workflow-designer .axp-workflow-designer__edge.success-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-success-500))}.axp-workflow-designer .axp-workflow-designer__edge.warning-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-warning-500))}.axp-workflow-designer .axp-workflow-designer__edge.danger-surface:not(.axp-workflow-designer__edge--active){stroke:rgb(var(--ax-sys-color-danger-500))}.axp-workflow-designer .axp-workflow-designer__edge--active{stroke:rgb(var(--ax-sys-color-primary-500));stroke-dasharray:2}.axp-workflow-designer .axp-workflow-designer__edge-preview{pointer-events:none;stroke:rgb(var(--ax-sys-color-primary-400));stroke-width:2;stroke-dasharray:6 4}.axp-workflow-designer .axp-workflow-designer__port-label-svg{fill:rgb(var(--ax-sys-color-on-surface));font-size:10px;font-weight:600;dominant-baseline:middle;pointer-events:none;paint-order:stroke;stroke:rgb(var(--ax-sys-color-surface));stroke-width:4px;stroke-linejoin:round}.axp-workflow-designer .axp-workflow-designer__arrow-head{fill:rgb(var(--ax-sys-color-neutral-500))}.axp-workflow-designer .axp-workflow-designer__connector-actions{position:absolute;display:flex;align-items:center;justify-content:center;z-index:4}.axp-workflow-designer .axp-workflow-designer__icon-btn{border-radius:999px;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__node{position:absolute;box-sizing:border-box;z-index:2;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__node.axp-workflow-designer__node--active .axp-workflow-designer__node-shape{border:2px dotted rgb(var(--ax-sys-color-primary-500))}.axp-workflow-designer .axp-workflow-designer__node.axp-workflow-designer__node--highlighted .axp-workflow-designer__node-shape{border:2px solid rgb(var(--ax-sys-color-primary-500));box-shadow:0 0 0 3px rgb(var(--ax-sys-color-primary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape{position:absolute;inset:0;box-sizing:border-box;overflow:visible;background:rgb(var(--ax-sys-color-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-primary-surface{background:rgb(var(--ax-sys-color-primary-surface));color:rgb(var(--ax-sys-color-on-primary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-secondary-surface{background:rgb(var(--ax-sys-color-secondary-surface));color:rgb(var(--ax-sys-color-on-secondary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-success-surface{background:rgb(var(--ax-sys-color-success-surface));color:rgb(var(--ax-sys-color-on-success-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-warning-surface{background:rgb(var(--ax-sys-color-warning-surface));color:rgb(var(--ax-sys-color-on-warning-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-danger-surface{background:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-on-danger-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-primary-border{border:2px solid rgb(var(--ax-sys-color-border-primary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-secondary-border{border:2px solid rgb(var(--ax-sys-color-border-secondary-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-success-border{border:2px solid rgb(var(--ax-sys-color-border-success-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-warning-border{border:2px solid rgb(var(--ax-sys-color-border-warning-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape.axp-danger-border{border:2px solid rgb(var(--ax-sys-color-border-danger-surface))}.axp-workflow-designer .axp-workflow-designer__node-shape--rectangle{border-radius:4px}.axp-workflow-designer .axp-workflow-designer__node-shape--rounded-rectangle{border-radius:14px}.axp-workflow-designer .axp-workflow-designer__node-shape--circle,.axp-workflow-designer .axp-workflow-designer__node-shape--ellipse{border-radius:50%}.axp-workflow-designer .axp-workflow-designer__node-shape--diamond{border-radius:0;clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%)}.axp-workflow-designer .axp-workflow-designer__node-body{position:absolute;inset:0;display:flex;cursor:grab;align-items:center;justify-content:center;padding:8px 12px;touch-action:none;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__node-default{display:flex;min-width:0px;align-items:center;gap:8px}.axp-workflow-designer .axp-workflow-designer__node-default-icon{flex-shrink:0}.axp-workflow-designer .axp-workflow-designer__node-default-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-workflow-designer .axp-workflow-designer__port-cluster{pointer-events:none;position:absolute;overflow:visible;width:0;height:0;transform:translate(-50%,-50%);z-index:3}.axp-workflow-designer .axp-workflow-designer__port{position:absolute;flex-shrink:0;cursor:crosshair;border-radius:calc(infinity * 1px);left:50%;top:50%;transform:translate(-50%,-50%);width:14px;height:14px;padding:0;border:1px solid rgb(var(--ax-sys-color-surface));touch-action:none;pointer-events:auto;transition:transform .12s ease}.axp-workflow-designer .axp-workflow-designer__port:disabled{opacity:.45;cursor:not-allowed}.axp-workflow-designer .axp-workflow-designer__port--inbound{background:rgb(var(--ax-sys-color-success-500))}.axp-workflow-designer .axp-workflow-designer__port--outbound{background:rgb(var(--ax-sys-color-primary-500))}.axp-workflow-designer .axp-workflow-designer__port--active{box-shadow:0 0 0 3px #3b82f659}.axp-workflow-designer .axp-workflow-designer__port--link-hover{border:1px solid rgb(var(--ax-sys-color-primary-500));transform:translate(-50%,-50%) scale(1.12)}.axp-workflow-designer .axp-workflow-designer__port--disabled{opacity:.45;cursor:not-allowed}.axp-workflow-designer .axp-workflow-designer__resize{position:absolute;border-radius:calc(infinity * 1px);width:7px;height:7px;background:rgb(var(--ax-sys-color-primary-500));border:1px solid rgb(var(--ax-sys-color-surface));z-index:4;touch-action:none;user-select:none;-webkit-user-select:none}.axp-workflow-designer .axp-workflow-designer__resize--nw{left:-6px;top:-6px;cursor:nwse-resize}.axp-workflow-designer .axp-workflow-designer__resize--ne{right:-6px;top:-6px;cursor:nesw-resize}.axp-workflow-designer .axp-workflow-designer__resize--sw{left:-6px;bottom:-6px;cursor:nesw-resize}.axp-workflow-designer .axp-workflow-designer__resize--se{right:-6px;bottom:-6px;cursor:nwse-resize}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "directive", type: AXPanViewDirective, selector: "[axPanView]", inputs: ["zoomStep", "minZoom", "maxZoom", "freeMode", "fitContent", "disablePan", "disableZoom", "wrapperClasses", "panX", "panY", "zoom"], outputs: ["panXChange", "panYChange", "zoomChange", "positionChange"], exportAs: ["axPanView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4564
4688
  }
4565
4689
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWorkflowDesignerComponent, decorators: [{
4566
4690
  type: Component,
@@ -4630,4 +4754,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
4630
4754
  */
4631
4755
 
4632
4756
  export { AXPMenuManagementService as A, snapPoint as B, snapScalar as C, REST_API_GENERATOR_WIDGET_NAME as R, REST_API_GENERATOR_IMPORT_DEBOUNCE_MS as a, AXMPlatformManagementModule as b, createEmptyRestApiOutput as c, AXPWorkflowDesignerComponent as d, AXPWorkflowPaletteItemDragDirective as e, formatRestApiSummary as f, AXP_WORKFLOW_PALETTE_MIME as g, hasParsedContent as h, arrangeWorkflowDiagram as i, cloneDiagram as j, connectorPath as k, createNodeFromPaletteItem as l, createPortsFromPalette as m, normalizeRestApiOutput as n, createWorkflowConnectorId as o, parseHttpRequest as p, createWorkflowNodeId as q, createWorkflowPortId as r, defaultCanConnectRequest as s, findConnector as t, findNode as u, findPort as v, parsePaletteItemDragPayload as w, portAnchorOnNode as x, portCanvasPosition as y, routeOrthogonalConnector as z };
4633
- //# sourceMappingURL=acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-Dhg_zr0Y.mjs.map
4757
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-BGVhn6wv.mjs.map