@acorex/modules 18.0.16 → 18.1.0

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 (34) hide show
  1. package/application-management/lib/actions/index.d.ts +1 -0
  2. package/application-management/lib/actions/show-detail.action.d.ts +8 -0
  3. package/application-management/lib/application-management-mock-data.d.ts +3 -18
  4. package/application-management/lib/application-management.module.d.ts +3 -2
  5. package/application-management/lib/layouts/index.d.ts +1 -0
  6. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +15 -0
  7. package/application-management/lib/module-designer/module-designer.component.d.ts +17 -3
  8. package/application-management/lib/module-designer/module-designer.type.d.ts +1 -0
  9. package/application-management/lib/services/context-menu.service.d.ts +26 -0
  10. package/application-management/lib/workflows/create-module-entity.workflow.d.ts +2 -0
  11. package/application-management/lib/workflows/index.d.ts +2 -0
  12. package/application-management/lib/workflows/show-module-entity-details.workflow.d.ts +2 -0
  13. package/esm2022/application-management/lib/actions/index.mjs +2 -0
  14. package/esm2022/application-management/lib/actions/show-detail.action.mjs +25 -0
  15. package/esm2022/application-management/lib/application-management-mock-data.mjs +4 -4
  16. package/esm2022/application-management/lib/application-management.module.mjs +44 -6
  17. package/esm2022/application-management/lib/layouts/index.mjs +2 -0
  18. package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +77 -0
  19. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +83 -32
  20. package/esm2022/application-management/lib/module-designer/module-designer.type.mjs +2 -0
  21. package/esm2022/application-management/lib/services/context-menu.service.mjs +168 -0
  22. package/esm2022/application-management/lib/workflows/create-module-entity.workflow.mjs +42 -0
  23. package/esm2022/application-management/lib/workflows/index.mjs +3 -0
  24. package/esm2022/application-management/lib/workflows/show-module-entity-details.workflow.mjs +9 -0
  25. package/esm2022/backend/lib/data/api/module-designer.service.mjs +2 -2
  26. package/fesm2022/acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs +323 -0
  27. package/fesm2022/acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs.map +1 -0
  28. package/fesm2022/acorex-modules-application-management.mjs +191 -13
  29. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-backend.mjs +1 -1
  31. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  32. package/package.json +7 -7
  33. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs +0 -100
  34. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs.map +0 -1
@@ -1,29 +1,61 @@
1
+ import { AXBadgeModule } from '@acorex/components/badge';
1
2
  import { AXButtonModule } from '@acorex/components/button';
2
3
  import { AXCollapseModule } from '@acorex/components/collapse';
3
4
  import { AXDecoratorModule } from '@acorex/components/decorators';
4
5
  import { AXDrawerModule } from '@acorex/components/drawer';
6
+ import { AXMenuModule } from '@acorex/components/menu';
5
7
  import { AXPopoverModule } from '@acorex/components/popover';
6
8
  import { AXSelectionListModule } from '@acorex/components/selection-list';
7
9
  import { AXSideMenuModule } from '@acorex/components/side-menu';
8
10
  import { AXTranslationModule } from '@acorex/core/translation';
11
+ import { AXPEntityCreateEvent, AXPEntityDeletedEvent } from '@acorex/platform/layouts';
12
+ import { AXPWorkflowService, ofType } from '@acorex/platform/workflow';
9
13
  import { CommonModule } from '@angular/common';
10
- import { Component, inject, signal, ViewEncapsulation } from '@angular/core';
14
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, signal, ViewEncapsulation, } from '@angular/core';
15
+ import { RouterModule } from '@angular/router';
16
+ import { set } from 'lodash-es';
17
+ import { Subject, takeUntil } from 'rxjs';
18
+ import { AXMModuleDesignerContextMenuService } from '../services/context-menu.service';
11
19
  import { AXPModuleDesignerService } from './module-designer.service';
12
20
  import * as i0 from "@angular/core";
13
21
  import * as i1 from "@angular/common";
14
22
  import * as i2 from "@acorex/components/drawer";
15
- import * as i3 from "@acorex/components/decorators";
16
- import * as i4 from "@acorex/core/translation";
17
- import * as i5 from "@acorex/components/collapse";
23
+ import * as i3 from "@acorex/components/button";
24
+ import * as i4 from "@acorex/components/decorators";
25
+ import * as i5 from "@acorex/core/translation";
26
+ import * as i6 from "@acorex/components/collapse";
27
+ import * as i7 from "@acorex/components/badge";
28
+ import * as i8 from "@acorex/components/menu";
29
+ import * as i9 from "@angular/router";
18
30
  export class AXMModuleDesignerComponent {
19
31
  constructor() {
32
+ this.cdr = inject(ChangeDetectorRef);
20
33
  this.dataProvider = inject(AXPModuleDesignerService);
34
+ this.workflow = inject(AXPWorkflowService);
35
+ this.contextMenuService = inject(AXMModuleDesignerContextMenuService);
21
36
  this.modules = signal([]);
22
37
  this.moduleDataCache = new Map();
38
+ this.destroyed = new Subject();
39
+ this.subscribeActionEvents();
23
40
  }
24
41
  ngOnInit() {
25
42
  this.loadModules();
26
43
  }
44
+ subscribeActionEvents() {
45
+ this.workflow.events$
46
+ .pipe(ofType(AXPEntityDeletedEvent, AXPEntityCreateEvent))
47
+ .pipe(takeUntil(this.destroyed))
48
+ .subscribe((event) => {
49
+ const { meta } = event.payload;
50
+ if (meta.type === 'module') {
51
+ this.loadModules();
52
+ }
53
+ else {
54
+ this.loadModuleData(meta.moduleId, meta.type, true);
55
+ }
56
+ this.cdr.markForCheck();
57
+ });
58
+ }
27
59
  async loadModules() {
28
60
  try {
29
61
  const modules = await this.dataProvider.getModules();
@@ -33,46 +65,62 @@ export class AXMModuleDesignerComponent {
33
65
  console.error('Error loading modules:', error);
34
66
  }
35
67
  }
36
- async loadModuleData(moduleId, e, dataType) {
37
- const cacheKey = `${moduleId}-${dataType}`;
68
+ async handleCollapseItemClick(moduleId, e, dataType) {
38
69
  if (e.component.isCollapsed) {
39
70
  e.handled = true;
40
71
  e.component.isLoading = true;
41
- let dataItems = this.moduleDataCache.get(cacheKey);
42
- if (!dataItems) {
43
- try {
44
- const methodMap = {
45
- entities: this.dataProvider.getEntities,
46
- permissions: this.dataProvider.getPermissions,
47
- features: this.dataProvider.getFeatures,
48
- };
49
- const data = await methodMap[dataType].call(this.dataProvider, moduleId);
50
- dataItems = data.items;
51
- this.moduleDataCache.set(cacheKey, dataItems);
52
- }
53
- catch (error) {
54
- console.error(`Error loading ${dataType}:`, error);
55
- }
56
- }
72
+ await this.loadModuleData(moduleId, dataType);
57
73
  e.component.toggle();
58
74
  e.component.isLoading = false;
75
+ e.component['cdr'].markForCheck();
59
76
  }
60
77
  }
78
+ async loadModuleData(moduleId, dataType, hardReload = false) {
79
+ const cacheKey = `${moduleId}-${dataType}`;
80
+ let dataItems = this.moduleDataCache.get(cacheKey);
81
+ // if (!dataItems || hardReload) {
82
+ try {
83
+ const methodMap = {
84
+ entity: this.dataProvider.getEntities,
85
+ permission: this.dataProvider.getPermissions,
86
+ feature: this.dataProvider.getFeatures,
87
+ };
88
+ const data = await methodMap[dataType].call(this.dataProvider, moduleId);
89
+ dataItems = data.items;
90
+ this.moduleDataCache.set(cacheKey, dataItems);
91
+ }
92
+ catch (error) {
93
+ console.error(`Error loading ${dataType}:`, error);
94
+ }
95
+ // }
96
+ }
61
97
  getEntities(moduleId) {
62
- return this.moduleDataCache.get(`${moduleId}-entities`) || [];
98
+ return this.moduleDataCache.get(`${moduleId}-entity`) || [];
63
99
  }
64
100
  getPermissions(moduleId) {
65
- return this.moduleDataCache.get(`${moduleId}-permissions`) || [];
101
+ return this.moduleDataCache.get(`${moduleId}-permission`) || [];
66
102
  }
67
103
  getFeatures(moduleId) {
68
- return this.moduleDataCache.get(`${moduleId}-features`) || [];
104
+ return this.moduleDataCache.get(`${moduleId}-feature`) || [];
105
+ }
106
+ openingContextMenu(e) {
107
+ this.contextMenuService.open(e);
108
+ }
109
+ handleActionClick(e) {
110
+ this.contextMenuService.itemClick(e);
111
+ }
112
+ createModule() {
113
+ this.contextMenuService.createEntity('module');
114
+ }
115
+ destroy() {
116
+ this.destroyed.next();
117
+ this.destroyed.complete();
69
118
  }
70
- onRightClick(e) {
71
- e.preventDefault();
72
- console.log(e);
119
+ assignData(target, data) {
120
+ set(target, 'data', data);
73
121
  }
74
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXMModuleDesignerComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-border-e ax-px-4 ax-py-2\">\n <div>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <ax-collapse-group [accordion]=\"true\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse icon=\"fas fa-folder a ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\" look=\"none\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'entities')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getEntities(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'features')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getFeatures(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'permissions')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getPermissions(m.id) }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </ax-content>\n\n <ng-template #itemsTemplate let-items>\n <div\n (contextmenu)=\"onRightClick($event)\"\n class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[6px] ax-ps-2\"\n >\n @for (item of items; track $index) {\n <div class=\"ax-px-2 ax-py-1 hover:ax-bg-neutral-100 hover:ax-rounded-md\">\n <span>{{ item.title }}</span>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <div class=\"ax-overflow-auto\">TEST</div>\n </ax-content>\n</ax-drawer-container>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i5.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i5.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXSelectionListModule }], encapsulation: i0.ViewEncapsulation.None }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXMModuleDesignerComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\" #contextTarget>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-folder ax-text-warning\"\n [isCollapsed]=\"true\"\n [caption]=\"m.title\"\n look=\"none\"\n data-elementType=\"module\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"module\"\n >\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"entity\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"feature\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"permission\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button\n class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\"\n (onClick)=\"createModule()\"\n look=\"solid\"\n color=\"primary\"\n >\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n <div\n #d\n (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"contextMenu ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\"\n >\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge\n [look]=\"'twotone'\"\n [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\"\n >\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu\n (onItemClick)=\"handleActionClick($event)\"\n [items]=\"[]\"\n [target]=\"contextTarget\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onOpening)=\"openingContextMenu($event)\"\n>\n</ax-context-menu>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i6.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i6.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i8.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i9.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
76
124
  }
77
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerComponent, decorators: [{
78
126
  type: Component,
@@ -86,6 +134,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
86
134
  AXCollapseModule,
87
135
  AXPopoverModule,
88
136
  AXSelectionListModule,
89
- ], template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-border-e ax-px-4 ax-py-2\">\n <div>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <ax-collapse-group [accordion]=\"true\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse icon=\"fas fa-folder a ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\" look=\"none\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'entities')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getEntities(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'features')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getFeatures(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'permissions')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getPermissions(m.id) }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </ax-content>\n\n <ng-template #itemsTemplate let-items>\n <div\n (contextmenu)=\"onRightClick($event)\"\n class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[6px] ax-ps-2\"\n >\n @for (item of items; track $index) {\n <div class=\"ax-px-2 ax-py-1 hover:ax-bg-neutral-100 hover:ax-rounded-md\">\n <span>{{ item.title }}</span>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <div class=\"ax-overflow-auto\">TEST</div>\n </ax-content>\n</ax-drawer-container>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"] }]
90
- }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFtQnJFLE1BQU0sT0FBTywwQkFBMEI7SUFqQnZDO1FBa0JZLGlCQUFZLEdBQUcsTUFB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O2tHQUExQiwwQkFBMEIsd0VDN0J2QyxnckdBMkVBLDZVRHpESSxZQUFZLDBQQUNaLGNBQWMsNlVBQ2QsY0FBYyw4QkFDZCxpQkFBaUIsc1BBQ2pCLG1CQUFtQiw4RkFDbkIsZ0JBQWdCLDhCQUNoQixnQkFBZ0IsOGJBQ2hCLGVBQWUsOEJBQ2YscUJBQXFCOzsyRkFHWiwwQkFBMEI7a0JBakJ0QyxTQUFTO29DQUdPLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixxQkFBcUI7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ29sbGFwc2VDbGlja0V2ZW50LCBBWENvbGxhcHNlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbGxhcHNlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEFYU2VsZWN0aW9uTGlzdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3Rpb24tbGlzdCc7XG5pbXBvcnQgeyBBWFNpZGVNZW51TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NpZGUtbWVudSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBNb2R1bGVEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1kZXNpZ25lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYU2lkZU1lbnVNb2R1bGUsXG4gICAgQVhDb2xsYXBzZU1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhTZWxlY3Rpb25MaXN0TW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Nb2R1bGVEZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBkYXRhUHJvdmlkZXIgPSBpbmplY3QoQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIG1vZHVsZXMgPSBzaWduYWw8YW55W10+KFtdKTtcblxuICBwcm90ZWN0ZWQgbW9kdWxlRGF0YUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZE1vZHVsZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkTW9kdWxlcygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kdWxlcyA9IGF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmdldE1vZHVsZXMoKTtcbiAgICAgIHRoaXMubW9kdWxlcy5zZXQobW9kdWxlcy5pdGVtcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbW9kdWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWRNb2R1bGVEYXRhKFxuICAgIG1vZHVsZUlkOiBzdHJpbmcsXG4gICAgZTogQVhDb2xsYXBzZUNsaWNrRXZlbnQsXG4gICAgZGF0YVR5cGU6ICdlbnRpdGllcycgfCAncGVybWlzc2lvbnMnIHwgJ2ZlYXR1cmVzJ1xuICApIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGAke21vZHVsZUlkfS0ke2RhdGFUeXBlfWA7XG4gICAgaWYgKGUuY29tcG9uZW50LmlzQ29sbGFwc2VkKSB7XG4gICAgICBlLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgZS5jb21wb25lbnQuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgbGV0IGRhdGFJdGVtcyA9IHRoaXMubW9kdWxlRGF0YUNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICBpZiAoIWRhdGFJdGVtcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1ldGhvZE1hcCA9IHtcbiAgICAgICAgICAgIGVudGl0aWVzOiB0aGlzLmRhdGFQcm92aWRlci5nZXRFbnRpdGllcyxcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiB0aGlzLmRhdGFQcm92aWRlci5nZXRQZXJtaXNzaW9ucyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiB0aGlzLmRhdGFQcm92aWRlci5nZXRGZWF0dXJlcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBtZXRob2RNYXBbZGF0YVR5cGVdLmNhbGwodGhpcy5kYXRhUHJvdmlkZXIsIG1vZHVsZUlkKTtcbiAgICAgICAgICBkYXRhSXRlbXMgPSBkYXRhLml0ZW1zIGFzIGFueVtdO1xuICAgICAgICAgIHRoaXMubW9kdWxlRGF0YUNhY2hlLnNldChjYWNoZUtleSwgZGF0YUl0ZW1zKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7ZGF0YVR5cGV9OmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5jb21wb25lbnQudG9nZ2xlKCk7XG4gICAgICBlLmNvbXBvbmVudC5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXRpZXMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoYCR7bW9kdWxlSWR9LWVudGl0aWVzYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGVybWlzc2lvbnMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoYCR7bW9kdWxlSWR9LXBlcm1pc3Npb25zYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmVhdHVyZXMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoYCR7bW9kdWxlSWR9LWZlYXR1cmVzYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgb25SaWdodENsaWNrKGU6IGFueSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgfVxufVxuIiwiPGF4LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGF4LWRyYXdlciAjZHJhd2VyIGxvY2F0aW9uPVwic3RhcnRcIiBbY29sbGFwc2VkXT1cImZhbHNlXCIgW21vZGVdPVwiJ3B1c2gnXCI+XG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC13LTgwIGF4LWJvcmRlci1lIGF4LXB4LTQgYXgtcHktMlwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bFwiPnt7ICdkZXNpZ25lci5tb2R1bGVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1tdC00XCI+XG4gICAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBbYWNjb3JkaW9uXT1cInRydWVcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICBAZm9yKG0gb2YgbW9kdWxlcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgPGF4LWNvbGxhcHNlIGljb249XCJmYXMgZmEtZm9sZGVyIGEgYXgtdGV4dC13YXJuaW5nXCIgW2lzQ29sbGFwc2VkXT1cInRydWVcIiBbY2FwdGlvbl09XCJtLnRpdGxlXCIgbG9vaz1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1teC0zXCI+XG4gICAgICAgICAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBbYWNjb3JkaW9uXT1cImZhbHNlXCIgbG9vaz1cImJsYW5rXCI+XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlXG4gICAgICAgICAgICAgICAgICBpY29uPVwiZmFzIGZhLWJveCBheC10ZXh0LW5ldXRyYWwtNDAwXCJcbiAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImxvYWRNb2R1bGVEYXRhKG0uaWQsICRldmVudCwgJ2VudGl0aWVzJylcIlxuICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiKCdkZXNpZ25lci5lbnRpdGllcycgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJ0VudGl0aWVzJ1wiXG4gICAgICAgICAgICAgICAgICBsb29rPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBnZXRFbnRpdGllcyhtLmlkKSB9XCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuXG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlXG4gICAgICAgICAgICAgICAgICBpY29uPVwiZmFzIGZhLXN0YXIgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJsb2FkTW9kdWxlRGF0YShtLmlkLCAkZXZlbnQsICdmZWF0dXJlcycpXCJcbiAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIignZGVzaWduZXIuZmVhdHVyZXMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdGZWF0dXJlcydcIlxuICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZ2V0RmVhdHVyZXMobS5pZCkgfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cblxuICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1rZXkgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJsb2FkTW9kdWxlRGF0YShtLmlkLCAkZXZlbnQsICdwZXJtaXNzaW9ucycpXCJcbiAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIignZGVzaWduZXIucGVybWlzc2lvbnMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdQZXJtaXNzaW9ucydcIlxuICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZ2V0UGVybWlzc2lvbnMobS5pZCkgfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWNvbGxhcHNlLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1jb250ZW50PlxuXG4gICAgPG5nLXRlbXBsYXRlICNpdGVtc1RlbXBsYXRlIGxldC1pdGVtcz5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWN1cnNvci1wb2ludGVyIGF4LXNlbGVjdC1ub25lIGF4LWJvcmRlci1zIGF4LW1zLVs2cHhdIGF4LXBzLTJcIlxuICAgICAgPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXB4LTIgYXgtcHktMSBob3ZlcjpheC1iZy1uZXV0cmFsLTEwMCBob3ZlcjpheC1yb3VuZGVkLW1kXCI+XG4gICAgICAgICAgPHNwYW4+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYXgtZHJhd2VyPlxuICA8YXgtY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiPlRFU1Q8L2Rpdj5cbiAgPC9heC1jb250ZW50PlxuPC9heC1kcmF3ZXItY29udGFpbmVyPlxuIl19
137
+ AXBadgeModule,
138
+ AXMenuModule,
139
+ RouterModule,
140
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\" #contextTarget>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-folder ax-text-warning\"\n [isCollapsed]=\"true\"\n [caption]=\"m.title\"\n look=\"none\"\n data-elementType=\"module\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"module\"\n >\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"entity\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"feature\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"permission\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button\n class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\"\n (onClick)=\"createModule()\"\n look=\"solid\"\n color=\"primary\"\n >\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n <div\n #d\n (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"contextMenu ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\"\n >\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge\n [look]=\"'twotone'\"\n [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\"\n >\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu\n (onItemClick)=\"handleActionClick($event)\"\n [items]=\"[]\"\n [target]=\"contextTarget\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onOpening)=\"openingContextMenu($event)\"\n>\n</ax-context-menu>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"] }]
141
+ }], ctorParameters: () => [] });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBbUQsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFB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O2tCQXJCdEMsU0FBUztvQ0FHTyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTtxQkFDYixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ29sbGFwc2VDbGlja0V2ZW50LCBBWENvbGxhcHNlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbGxhcHNlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsIEFYTWVudUl0ZW1DbGlja0V2ZW50LCBBWE1lbnVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFNlbGVjdGlvbkxpc3RNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0aW9uLWxpc3QnO1xuaW1wb3J0IHsgQVhTaWRlTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zaWRlLW1lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlDcmVhdGVFdmVudCwgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXRzJztcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSwgb2ZUeXBlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWE1Nb2R1bGVEZXNpZ25lckNvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUE1vZHVsZURlc2lnbmVyU2VydmljZSB9IGZyb20gJy4vbW9kdWxlLWRlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNTW9kdWxlSXRlbSB9IGZyb20gJy4vbW9kdWxlLWRlc2lnbmVyLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRHJhd2VyTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhTaWRlTWVudU1vZHVsZSxcbiAgICBBWENvbGxhcHNlTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWFNlbGVjdGlvbkxpc3RNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWE1lbnVNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhNTW9kdWxlRGVzaWduZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJvdGVjdGVkIGRhdGFQcm92aWRlciA9IGluamVjdChBWFBNb2R1bGVEZXNpZ25lclNlcnZpY2UpO1xuICBwcml2YXRlIHdvcmtmbG93ID0gaW5qZWN0KEFYUFdvcmtmbG93U2VydmljZSk7XG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVNlcnZpY2UgPSBpbmplY3QoQVhNTW9kdWxlRGVzaWduZXJDb250ZXh0TWVudVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBtb2R1bGVzID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgcHJvdGVjdGVkIG1vZHVsZURhdGFDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnlbXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVBY3Rpb25FdmVudHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZE1vZHVsZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdWJzY3JpYmVBY3Rpb25FdmVudHMoKSB7XG4gICAgdGhpcy53b3JrZmxvdy5ldmVudHMkXG4gICAgICAucGlwZShvZlR5cGUoQVhQRW50aXR5RGVsZXRlZEV2ZW50LCBBWFBFbnRpdHlDcmVhdGVFdmVudCkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBtZXRhIH0gPSBldmVudC5wYXlsb2FkO1xuICAgICAgICBpZiAobWV0YS50eXBlID09PSAnbW9kdWxlJykge1xuICAgICAgICAgIHRoaXMubG9hZE1vZHVsZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRNb2R1bGVEYXRhKG1ldGEubW9kdWxlSWQsIG1ldGEudHlwZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkTW9kdWxlcygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kdWxlcyA9IGF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmdldE1vZHVsZXMoKTtcbiAgICAgIHRoaXMubW9kdWxlcy5zZXQobW9kdWxlcy5pdGVtcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbW9kdWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbGxhcHNlSXRlbUNsaWNrKG1vZHVsZUlkOiBzdHJpbmcsIGU6IEFYQ29sbGFwc2VDbGlja0V2ZW50LCBkYXRhVHlwZTogQVhNTW9kdWxlSXRlbSkge1xuICAgIGlmIChlLmNvbXBvbmVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgZS5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgIGUuY29tcG9uZW50LmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGF3YWl0IHRoaXMubG9hZE1vZHVsZURhdGEobW9kdWxlSWQsIGRhdGFUeXBlKTtcblxuICAgICAgZS5jb21wb25lbnQudG9nZ2xlKCk7XG4gICAgICBlLmNvbXBvbmVudC5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGUuY29tcG9uZW50WydjZHInXS5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1vZHVsZURhdGEobW9kdWxlSWQ6IHN0cmluZywgZGF0YVR5cGU6IEFYTU1vZHVsZUl0ZW0sIGhhcmRSZWxvYWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gYCR7bW9kdWxlSWR9LSR7ZGF0YVR5cGV9YDtcblxuICAgIGxldCBkYXRhSXRlbXMgPSB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIC8vIGlmICghZGF0YUl0ZW1zIHx8IGhhcmRSZWxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0aG9kTWFwID0ge1xuICAgICAgICBlbnRpdHk6IHRoaXMuZGF0YVByb3ZpZGVyLmdldEVudGl0aWVzLFxuICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLmRhdGFQcm92aWRlci5nZXRQZXJtaXNzaW9ucyxcbiAgICAgICAgZmVhdHVyZTogdGhpcy5kYXRhUHJvdmlkZXIuZ2V0RmVhdHVyZXMsXG4gICAgICB9O1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IG1ldGhvZE1hcFtkYXRhVHlwZV0uY2FsbCh0aGlzLmRhdGFQcm92aWRlciwgbW9kdWxlSWQpO1xuXG4gICAgICBkYXRhSXRlbXMgPSBkYXRhLml0ZW1zIGFzIGFueVtdO1xuICAgICAgdGhpcy5tb2R1bGVEYXRhQ2FjaGUuc2V0KGNhY2hlS2V5LCBkYXRhSXRlbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7ZGF0YVR5cGV9OmAsIGVycm9yKTtcbiAgICB9XG4gICAgLy8gfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVudGl0aWVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVEYXRhQ2FjaGUuZ2V0KGAke21vZHVsZUlkfS1lbnRpdHlgKSB8fCBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQZXJtaXNzaW9ucyhtb2R1bGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlRGF0YUNhY2hlLmdldChgJHttb2R1bGVJZH0tcGVybWlzc2lvbmApIHx8IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZlYXR1cmVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVEYXRhQ2FjaGUuZ2V0KGAke21vZHVsZUlkfS1mZWF0dXJlYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmluZ0NvbnRleHRNZW51KGU6IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5vcGVuKGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGlvbkNsaWNrKGU6IEFYTWVudUl0ZW1DbGlja0V2ZW50KSB7XG4gICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuaXRlbUNsaWNrKGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZHVsZSgpIHtcbiAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5jcmVhdGVFbnRpdHkoJ21vZHVsZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXNzaWduRGF0YSh0YXJnZXQ6IEhUTUxFbGVtZW50LCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBzZXQodGFyZ2V0LCAnZGF0YScsIGRhdGEpO1xuICB9XG59XG4iLCI8YXgtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImF4LW92ZXJmbG93LWhpZGRlblwiPlxuICA8YXgtZHJhd2VyICNkcmF3ZXIgbG9jYXRpb249XCJzdGFydFwiIFtjb2xsYXBzZWRdPVwiZmFsc2VcIiBbbW9kZV09XCIncHVzaCdcIj5cbiAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LXctODAgYXgtcmVsYXRpdmUgYXgtYm9yZGVyLWUgYXgtcHgtNCBheC1weS0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0byBheC1oLVtjYWxjKDEwMHZoLTE4MHB4KV1cIiAjY29udGV4dFRhcmdldD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bFwiPnt7ICdkZXNpZ25lci5tb2R1bGVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1tdC00XCI+XG4gICAgICAgICAgQGlmKG1vZHVsZXMoKS5sZW5ndGgpe1xuICAgICAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBbYWNjb3JkaW9uXT1cImZhbHNlXCIgbG9vaz1cImJsYW5rXCI+XG4gICAgICAgICAgICBAZm9yKG0gb2YgbW9kdWxlcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgICA8YXgtY29sbGFwc2VcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgIGljb249XCJmYXMgZmEtZm9sZGVyIGF4LXRleHQtd2FybmluZ1wiXG4gICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2NhcHRpb25dPVwibS50aXRsZVwiXG4gICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cIm1vZHVsZVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cIm1vZHVsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1teC0zXCI+XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIFthY2NvcmRpb25dPVwiZmFsc2VcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1ib3ggYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ29sbGFwc2VJdGVtQ2xpY2sobS5pZCwgJGV2ZW50LCAnZW50aXR5JylcIlxuICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCIoJ2Rlc2lnbmVyLmVudGl0aWVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSA/PyAnRW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWVsZW1lbnRUeXBlPVwic3ViTW9kdWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1tb2R1bGVJZF09XCJtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbnRpdHlUeXBlPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgdHlwZTogJ2VudGl0eScsIGl0ZW1zOiBnZXRFbnRpdGllcyhtLmlkKSwgbW9kdWxlSWQ6IG0uaWQgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtY29sbGFwc2VcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmYXMgZmEtc3RhciBheC10ZXh0LW5ldXRyYWwtNDAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ29sbGFwc2VkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVDb2xsYXBzZUl0ZW1DbGljayhtLmlkLCAkZXZlbnQsICdmZWF0dXJlJylcIlxuICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCIoJ2Rlc2lnbmVyLmZlYXR1cmVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSA/PyAnRmVhdHVyZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWVsZW1lbnRUeXBlPVwic3ViTW9kdWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1tb2R1bGVJZF09XCJtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbnRpdHlUeXBlPVwiZmVhdHVyZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlsZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IHR5cGU6ICdmZWF0dXJlJywgaXRlbXM6IGdldEZlYXR1cmVzKG0uaWQpLCBtb2R1bGVJZDogbS5pZCB9XG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG5cbiAgICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1rZXkgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ29sbGFwc2VJdGVtQ2xpY2sobS5pZCwgJGV2ZW50LCAncGVybWlzc2lvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiKCdkZXNpZ25lci5wZXJtaXNzaW9ucycgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJ1Blcm1pc3Npb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cInN1Yk1vZHVsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cInBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyB0eXBlOiAncGVybWlzc2lvbicsIGl0ZW1zOiBnZXRQZXJtaXNzaW9ucyhtLmlkKSwgbW9kdWxlSWQ6IG0uaWQgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2UtZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWNvbGxhcHNlLWdyb3VwPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1oLWZ1bGwgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTUwMCBheC10ZXh0LXNtXCI+e3sgJ2Rlc2lnbmVyLmVtcHR5TW9kdWxlc1RleHQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYXgtYWJzb2x1dGUgYXgtYm90dG9tLTQgYXgtdy03MlwiXG4gICAgICAgICAgW3RleHRdPVwiKCdkZXNpZ25lci5jcmVhdGVNb2R1bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdDcmVhdGUgTmV3IE1vZHVsZSdcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImNyZWF0ZU1vZHVsZSgpXCJcbiAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1wbHVzXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWNvbnRlbnQ+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NoaWxkVGVtcGxhdGUgbGV0LWNoaWxkPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtY3Vyc29yLXBvaW50ZXIgYXgtc2VsZWN0LW5vbmUgYXgtYm9yZGVyLXMgYXgtbXMtWzE0cHhdIGF4LXBzLTJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBjaGlsZC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjZFxuICAgICAgICAgIChjbGljayk9XCJjb250ZXh0TWVudVNlcnZpY2Uuc2hvd0RldGFpbHMoY2hpbGQudHlwZSwgaXRlbS5pZClcIlxuICAgICAgICAgIGNsYXNzPVwiY29udGV4dE1lbnUgYXgtcHgtMiBheC1weS0xIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBob3ZlcjpheC1iZy1uZXV0cmFsLTEwMCBkYXJrOmhvdmVyOmF4LWJnLW5ldXRyYWwtNzAwIGhvdmVyOmF4LXJvdW5kZWQtbWRcIlxuICAgICAgICAgIGRhdGEtZWxlbWVudFR5cGU9XCJzdWJNb2R1bGVJdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGFzc2lnbkRhdGEoZCwgeyByZWNvcmQ6IGl0ZW0sIGVudGl0eVR5cGU6IGNoaWxkLnR5cGUsIG1vZHVsZUlkOiBjaGlsZC5tb2R1bGVJZCB9KSB9fVxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICBbbG9va109XCIndHdvdG9uZSdcIlxuICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uaXNBcmNoaXZlZCA/ICdkYW5nZXInIDogJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0uaXNBcmNoaXZlZCA/ICdPZmYnIDogJ09uJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYXgtYmFkZ2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2F4LWRyYXdlcj5cbiAgPGF4LWNvbnRlbnQ+XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICA8L2F4LWNvbnRlbnQ+XG48L2F4LWRyYXdlci1jb250YWluZXI+XG5cbjxheC1jb250ZXh0LW1lbnVcbiAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKCRldmVudClcIlxuICBbaXRlbXNdPVwiW11cIlxuICBbdGFyZ2V0XT1cImNvbnRleHRUYXJnZXRcIlxuICBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiXG4gIFtjbG9zZU9uXT1cIidsZWF2ZSdcIlxuICAob25PcGVuaW5nKT1cIm9wZW5pbmdDb250ZXh0TWVudSgkZXZlbnQpXCJcbj5cbjwvYXgtY29udGV4dC1tZW51PlxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQVhNTW9kdWxlSXRlbSA9ICdlbnRpdHknIHwgJ2ZlYXR1cmUnIHwgJ3Blcm1pc3Npb24nO1xuIl19
@@ -0,0 +1,168 @@
1
+ import { AXPWorkflowService } from '@acorex/platform/workflow';
2
+ import { inject, Injectable, signal } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class AXMModuleDesignerContextMenuService {
5
+ constructor() {
6
+ this.workflow = inject(AXPWorkflowService);
7
+ this.copiedRecord = signal(null);
8
+ this.elementData = signal(null);
9
+ this.menuItems = [
10
+ {
11
+ name: 'create',
12
+ text: 'Create',
13
+ icon: 'fas fa-plus',
14
+ color: 'primary',
15
+ },
16
+ {
17
+ name: 'delete',
18
+ text: 'Delete',
19
+ icon: 'fas fa-trash',
20
+ color: 'danger',
21
+ },
22
+ {
23
+ name: 'details',
24
+ text: 'Details',
25
+ icon: 'fas fa-eye',
26
+ color: 'ghost',
27
+ },
28
+ {
29
+ name: 'copy',
30
+ text: 'Copy',
31
+ icon: 'fas fa-copy',
32
+ color: 'ghost',
33
+ },
34
+ {
35
+ name: 'paste',
36
+ text: 'Paste',
37
+ icon: 'fas fa-paste',
38
+ color: 'ghost',
39
+ disabled: false,
40
+ },
41
+ ];
42
+ }
43
+ open(e) {
44
+ const target = e.nativeEvent.target;
45
+ const mainTarget = target.closest('.contextMenu');
46
+ const elementType = mainTarget?.getAttribute('data-elementType');
47
+ const { data } = mainTarget;
48
+ if (elementType == 'module' || elementType == 'subModule') {
49
+ const moduleId = mainTarget?.getAttribute('data-moduleId');
50
+ const entityType = mainTarget?.getAttribute('data-entityType');
51
+ if (elementType == 'module') {
52
+ this.elementData.set({
53
+ entityType,
54
+ moduleId: moduleId,
55
+ record: {
56
+ id: moduleId,
57
+ },
58
+ });
59
+ e.items = this.getMenuItems(['details', 'delete']);
60
+ }
61
+ else {
62
+ this.elementData.set({
63
+ entityType,
64
+ moduleId: moduleId,
65
+ record: undefined,
66
+ });
67
+ const items = this.getMenuItems(['create', 'paste']);
68
+ const customMenuItems = items.map((i) => i.name == 'paste' ? { ...i, disabled: entityType == this.copiedRecord()?.type ? false : true } : i);
69
+ e.items = customMenuItems;
70
+ }
71
+ }
72
+ else if (elementType == 'subModuleItem') {
73
+ this.elementData.set(data);
74
+ e.items = this.getMenuItems(['delete', 'copy', 'details']);
75
+ }
76
+ else {
77
+ e.items = [];
78
+ e.canceled = true;
79
+ }
80
+ }
81
+ itemClick(e) {
82
+ console.log('clicked', e, this.elementData());
83
+ if (this.elementData()) {
84
+ switch (e.item.name) {
85
+ case 'create':
86
+ this.createEntity(this.elementData()?.entityType, this.elementData()?.moduleId);
87
+ break;
88
+ case 'details':
89
+ this.showDetails(this.elementData()?.entityType, this.elementData()?.record.id);
90
+ break;
91
+ case 'delete':
92
+ this.deleteEntity(this.elementData()?.entityType, this.elementData()?.record.id, this.elementData()?.moduleId);
93
+ break;
94
+ case 'copy':
95
+ this.copyRecord(this.elementData()?.entityType, this.elementData()?.record);
96
+ break;
97
+ case 'paste':
98
+ this.pasteRecord(this.elementData()?.moduleId);
99
+ break;
100
+ default:
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ async createEntity(entityType, moduleId) {
106
+ await this.workflow.execute('create-module-entity', {
107
+ entity: `application-management.${entityType}`,
108
+ data: {
109
+ moduleId,
110
+ },
111
+ meta: {
112
+ type: entityType,
113
+ moduleId,
114
+ },
115
+ });
116
+ }
117
+ async showDetails(entityType, id) {
118
+ await this.workflow.execute('show-module-entity-details', {
119
+ entity: `application-management.${entityType}`,
120
+ data: {
121
+ id,
122
+ },
123
+ });
124
+ }
125
+ copyRecord(entityType, record) {
126
+ const newRecord = { ...record, moduleId: undefined, id: undefined };
127
+ this.copiedRecord.set({ type: entityType, record: newRecord });
128
+ }
129
+ async pasteRecord(moduleId) {
130
+ if (this.copiedRecord()) {
131
+ await this.workflow.execute('create-module-entity', {
132
+ entity: `application-management.${this.copiedRecord()?.type}`,
133
+ data: {
134
+ ...this.copiedRecord()?.record,
135
+ moduleId,
136
+ },
137
+ meta: {
138
+ type: this.copiedRecord()?.type,
139
+ moduleId,
140
+ },
141
+ });
142
+ }
143
+ }
144
+ async deleteEntity(entityType, id, moduleId) {
145
+ await this.workflow.execute('delete-entity', {
146
+ entity: `application-management.${entityType}`,
147
+ data: {
148
+ id,
149
+ },
150
+ meta: {
151
+ moduleId,
152
+ type: entityType,
153
+ },
154
+ });
155
+ }
156
+ getMenuItems(includeItems) {
157
+ return this.menuItems.filter((i) => includeItems.includes(i.name));
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
160
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerContextMenuService, providedIn: 'root' }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerContextMenuService, decorators: [{
163
+ type: Injectable,
164
+ args: [{
165
+ providedIn: 'root',
166
+ }]
167
+ }] });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3NlcnZpY2VzL2NvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLG1DQUFtQztJQUhoRDtRQUlVLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLE1BQU0sQ0FBOEMsSUFBSSxDQUFDLENBQUM7UUFDekUsZ0JBQVcsR0FBRyxNQUFNLENBQXNFLElBQUksQ0FBQyxDQUFDO1FBRWxHLGNBQVMsR0FBaUI7WUFDaEM7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSxRQUFRO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE9BQU87YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFB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VSxFQUFFO1lBQzlDLElBQUksRUFBRTtnQkFDSixFQUFFO2FBQ0g7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUTtnQkFDUixJQUFJLEVBQUUsVUFBVTthQUNqQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsWUFBc0I7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBYyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDOzhHQTFLVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQyxjQUZsQyxNQUFNOzsyRkFFUCxtQ0FBbUM7a0JBSC9DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCwgQVhNZW51SXRlbSwgQVhNZW51SXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE1Nb2R1bGVJdGVtIH0gZnJvbSAnLi4vbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci50eXBlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTU1vZHVsZURlc2lnbmVyQ29udGV4dE1lbnVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgY29waWVkUmVjb3JkID0gc2lnbmFsPHsgdHlwZTogQVhNTW9kdWxlSXRlbTsgcmVjb3JkOiBhbnkgfSB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgZWxlbWVudERhdGEgPSBzaWduYWw8eyBlbnRpdHlUeXBlOiBBWE1Nb2R1bGVJdGVtOyByZWNvcmQ6IGFueTsgbW9kdWxlSWQ6IHN0cmluZyB9IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBtZW51SXRlbXM6IEFYTWVudUl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnY3JlYXRlJyxcbiAgICAgIHRleHQ6ICdDcmVhdGUnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS1wbHVzJyxcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGVsZXRlJyxcbiAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS10cmFzaCcsXG4gICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGV0YWlscycsXG4gICAgICB0ZXh0OiAnRGV0YWlscycsXG4gICAgICBpY29uOiAnZmFzIGZhLWV5ZScsXG4gICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjb3B5JyxcbiAgICAgIHRleHQ6ICdDb3B5JyxcbiAgICAgIGljb246ICdmYXMgZmEtY29weScsXG4gICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYXN0ZScsXG4gICAgICB0ZXh0OiAnUGFzdGUnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS1wYXN0ZScsXG4gICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB9LFxuICBdO1xuXG4gIG9wZW4oZTogQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9ICgoZSBhcyBhbnkpLm5hdGl2ZUV2ZW50IGFzIFBvaW50ZXJFdmVudCkudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IG1haW5UYXJnZXQgPSB0YXJnZXQuY2xvc2VzdCgnLmNvbnRleHRNZW51Jyk7XG4gICAgY29uc3QgZWxlbWVudFR5cGUgPSBtYWluVGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2RhdGEtZWxlbWVudFR5cGUnKTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IG1haW5UYXJnZXQgYXMgYW55O1xuXG4gICAgaWYgKGVsZW1lbnRUeXBlID09ICdtb2R1bGUnIHx8IGVsZW1lbnRUeXBlID09ICdzdWJNb2R1bGUnKSB7XG4gICAgICBjb25zdCBtb2R1bGVJZCA9IG1haW5UYXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1tb2R1bGVJZCcpO1xuICAgICAgY29uc3QgZW50aXR5VHlwZSA9IG1haW5UYXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1lbnRpdHlUeXBlJykgYXMgQVhNTW9kdWxlSXRlbTtcbiAgICAgIGlmIChlbGVtZW50VHlwZSA9PSAnbW9kdWxlJykge1xuICAgICAgICB0aGlzLmVsZW1lbnREYXRhLnNldCh7XG4gICAgICAgICAgZW50aXR5VHlwZSxcbiAgICAgICAgICBtb2R1bGVJZDogbW9kdWxlSWQgYXMgc3RyaW5nLFxuICAgICAgICAgIHJlY29yZDoge1xuICAgICAgICAgICAgaWQ6IG1vZHVsZUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBlLml0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoWydkZXRhaWxzJywgJ2RlbGV0ZSddKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZWxlbWVudERhdGEuc2V0KHtcbiAgICAgICAgICBlbnRpdHlUeXBlLFxuICAgICAgICAgIG1vZHVsZUlkOiBtb2R1bGVJZCBhcyBzdHJpbmcsXG4gICAgICAgICAgcmVjb3JkOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKFsnY3JlYXRlJywgJ3Bhc3RlJ10pO1xuICAgICAgICBjb25zdCBjdXN0b21NZW51SXRlbXMgPSBpdGVtcy5tYXAoKGkpID0+XG4gICAgICAgICAgaS5uYW1lID09ICdwYXN0ZScgPyB7IC4uLmksIGRpc2FibGVkOiBlbnRpdHlUeXBlID09IHRoaXMuY29waWVkUmVjb3JkKCk/LnR5cGUgPyBmYWxzZSA6IHRydWUgfSA6IGlcbiAgICAgICAgKTtcbiAgICAgICAgZS5pdGVtcyA9IGN1c3RvbU1lbnVJdGVtcztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsZW1lbnRUeXBlID09ICdzdWJNb2R1bGVJdGVtJykge1xuICAgICAgdGhpcy5lbGVtZW50RGF0YS5zZXQoZGF0YSk7XG4gICAgICBlLml0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoWydkZWxldGUnLCAnY29weScsICdkZXRhaWxzJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlLml0ZW1zID0gW107XG4gICAgICBlLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpdGVtQ2xpY2soZTogQVhNZW51SXRlbUNsaWNrRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZygnY2xpY2tlZCcsIGUsIHRoaXMuZWxlbWVudERhdGEoKSk7XG4gICAgaWYgKHRoaXMuZWxlbWVudERhdGEoKSkge1xuICAgICAgc3dpdGNoIChlLml0ZW0ubmFtZSkge1xuICAgICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICAgIHRoaXMuY3JlYXRlRW50aXR5KHRoaXMuZWxlbWVudERhdGEoKT8uZW50aXR5VHlwZSBhcyBBWE1Nb2R1bGVJdGVtLCB0aGlzLmVsZW1lbnREYXRhKCk/Lm1vZHVsZUlkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZXRhaWxzJzpcbiAgICAgICAgICB0aGlzLnNob3dEZXRhaWxzKHRoaXMuZWxlbWVudERhdGEoKT8uZW50aXR5VHlwZSBhcyBBWE1Nb2R1bGVJdGVtIHwgJ21vZHVsZScsIHRoaXMuZWxlbWVudERhdGEoKT8ucmVjb3JkLmlkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgIHRoaXMuZGVsZXRlRW50aXR5KFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50RGF0YSgpPy5lbnRpdHlUeXBlIGFzIEFYTU1vZHVsZUl0ZW0gfCAnbW9kdWxlJyxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudERhdGEoKT8ucmVjb3JkLmlkLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50RGF0YSgpPy5tb2R1bGVJZFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29weSc6XG4gICAgICAgICAgdGhpcy5jb3B5UmVjb3JkKHRoaXMuZWxlbWVudERhdGEoKT8uZW50aXR5VHlwZSBhcyBBWE1Nb2R1bGVJdGVtLCB0aGlzLmVsZW1lbnREYXRhKCk/LnJlY29yZCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGFzdGUnOlxuICAgICAgICAgIHRoaXMucGFzdGVSZWNvcmQodGhpcy5lbGVtZW50RGF0YSgpPy5tb2R1bGVJZCBhcyBzdHJpbmcpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlRW50aXR5KGVudGl0eVR5cGU6ICdtb2R1bGUnIHwgQVhNTW9kdWxlSXRlbSwgbW9kdWxlSWQ/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ2NyZWF0ZS1tb2R1bGUtZW50aXR5Jywge1xuICAgICAgZW50aXR5OiBgYXBwbGljYXRpb24tbWFuYWdlbWVudC4ke2VudGl0eVR5cGV9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbW9kdWxlSWQsXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICB0eXBlOiBlbnRpdHlUeXBlLFxuICAgICAgICBtb2R1bGVJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzaG93RGV0YWlscyhlbnRpdHlUeXBlOiAnbW9kdWxlJyB8IEFYTU1vZHVsZUl0ZW0sIGlkOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ3Nob3ctbW9kdWxlLWVudGl0eS1kZXRhaWxzJywge1xuICAgICAgZW50aXR5OiBgYXBwbGljYXRpb24tbWFuYWdlbWVudC4ke2VudGl0eVR5cGV9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3B5UmVjb3JkKGVudGl0eVR5cGU6IEFYTU1vZHVsZUl0ZW0sIHJlY29yZDogYW55KSB7XG4gICAgY29uc3QgbmV3UmVjb3JkID0geyAuLi5yZWNvcmQsIG1vZHVsZUlkOiB1bmRlZmluZWQsIGlkOiB1bmRlZmluZWQgfTtcbiAgICB0aGlzLmNvcGllZFJlY29yZC5zZXQoeyB0eXBlOiBlbnRpdHlUeXBlLCByZWNvcmQ6IG5ld1JlY29yZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFzdGVSZWNvcmQobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNvcGllZFJlY29yZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ2NyZWF0ZS1tb2R1bGUtZW50aXR5Jywge1xuICAgICAgICBlbnRpdHk6IGBhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LiR7dGhpcy5jb3BpZWRSZWNvcmQoKT8udHlwZX1gLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4udGhpcy5jb3BpZWRSZWNvcmQoKT8ucmVjb3JkLFxuICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICB9LFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgdHlwZTogdGhpcy5jb3BpZWRSZWNvcmQoKT8udHlwZSxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlRW50aXR5KGVudGl0eVR5cGU6ICdtb2R1bGUnIHwgQVhNTW9kdWxlSXRlbSwgaWQ6IHN0cmluZ1tdIHwgc3RyaW5nLCBtb2R1bGVJZD86IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnZGVsZXRlLWVudGl0eScsIHtcbiAgICAgIGVudGl0eTogYGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQuJHtlbnRpdHlUeXBlfWAsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGlkLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIHR5cGU6IGVudGl0eVR5cGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZW51SXRlbXMoaW5jbHVkZUl0ZW1zOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtcy5maWx0ZXIoKGkpID0+IGluY2x1ZGVJdGVtcy5pbmNsdWRlcyhpLm5hbWUgYXMgc3RyaW5nKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ export const AXPCreateModuleEntityWorkflow = {
2
+ startStepId: 'show-popup',
3
+ steps: {
4
+ 'show-popup': {
5
+ action: 'AXPEntityCreatePopupAction',
6
+ nextSteps: [
7
+ {
8
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == true' }],
9
+ nextStepId: 'show-toast',
10
+ },
11
+ ],
12
+ },
13
+ 'show-toast': {
14
+ action: 'AXPToastAction',
15
+ input: {
16
+ color: 'success',
17
+ title: 'Entity Created',
18
+ content: 'New Record has been successfully created.',
19
+ },
20
+ nextSteps: [
21
+ {
22
+ conditions: [],
23
+ nextStepId: 'dispatch-event',
24
+ },
25
+ ],
26
+ },
27
+ 'dispatch-event': {
28
+ action: 'AXPEntityCreateSubmittedAction',
29
+ nextSteps: [
30
+ {
31
+ conditions: [{ type: 'SINGLE', expression: 'context.getVariable("redirect") != false' }],
32
+ nextStepId: 'show-entity',
33
+ },
34
+ ],
35
+ },
36
+ 'show-entity': {
37
+ id: 'show-entity',
38
+ action: 'AXPShowModuleEntityDetailViewAction',
39
+ },
40
+ },
41
+ };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZHVsZS1lbnRpdHkud29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9jcmVhdGUtbW9kdWxlLWVudGl0eS53b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBZ0I7SUFDeEQsV0FBVyxFQUFFLFlBQVk7SUFDekIsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFO1lBQ1osTUFBTSxFQUFFLDRCQUE0QjtZQUNwQyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxxQ0FBcUMsRUFBRSxDQUFDO29CQUNuRixVQUFVLEVBQUUsWUFBWTtpQkFDekI7YUFDRjtTQUNGO1FBQ0QsWUFBWSxFQUFFO1lBQ1osTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLE9BQU8sRUFBRSwyQ0FBMkM7YUFDckQ7WUFDRCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsVUFBVSxFQUFFLGdCQUFnQjtpQkFDN0I7YUFDRjtTQUNGO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDaEIsTUFBTSxFQUFFLGdDQUFnQztZQUN4QyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSwwQ0FBMEMsRUFBRSxDQUFDO29CQUN4RixVQUFVLEVBQUUsYUFBYTtpQkFDMUI7YUFDRjtTQUNGO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsRUFBRSxFQUFFLGFBQWE7WUFDakIsTUFBTSxFQUFFLHFDQUFxQztTQUM5QztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdvcmtmbG93IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5cbmV4cG9ydCBjb25zdCBBWFBDcmVhdGVNb2R1bGVFbnRpdHlXb3JrZmxvdzogQVhQV29ya2Zsb3cgPSB7XG4gIHN0YXJ0U3RlcElkOiAnc2hvdy1wb3B1cCcsXG4gIHN0ZXBzOiB7XG4gICAgJ3Nob3ctcG9wdXAnOiB7XG4gICAgICBhY3Rpb246ICdBWFBFbnRpdHlDcmVhdGVQb3B1cEFjdGlvbicsXG4gICAgICBuZXh0U3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiAnY29udGV4dC5nZXRPdXRwdXQoXCJyZXN1bHRcIikgPT0gdHJ1ZScgfV0sXG4gICAgICAgICAgbmV4dFN0ZXBJZDogJ3Nob3ctdG9hc3QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdzaG93LXRvYXN0Jzoge1xuICAgICAgYWN0aW9uOiAnQVhQVG9hc3RBY3Rpb24nLFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdFbnRpdHkgQ3JlYXRlZCcsXG4gICAgICAgIGNvbnRlbnQ6ICdOZXcgUmVjb3JkIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLicsXG4gICAgICB9LFxuICAgICAgbmV4dFN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb25kaXRpb25zOiBbXSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnZGlzcGF0Y2gtZXZlbnQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdkaXNwYXRjaC1ldmVudCc6IHtcbiAgICAgIGFjdGlvbjogJ0FYUEVudGl0eUNyZWF0ZVN1Ym1pdHRlZEFjdGlvbicsXG4gICAgICBuZXh0U3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiAnY29udGV4dC5nZXRWYXJpYWJsZShcInJlZGlyZWN0XCIpICE9IGZhbHNlJyB9XSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnc2hvdy1lbnRpdHknLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdzaG93LWVudGl0eSc6IHtcbiAgICAgIGlkOiAnc2hvdy1lbnRpdHknLFxuICAgICAgYWN0aW9uOiAnQVhQU2hvd01vZHVsZUVudGl0eURldGFpbFZpZXdBY3Rpb24nLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './create-module-entity.workflow';
2
+ export * from './show-module-entity-details.workflow';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1tb2R1bGUtZW50aXR5LndvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vc2hvdy1tb2R1bGUtZW50aXR5LWRldGFpbHMud29ya2Zsb3cnO1xuIl19
@@ -0,0 +1,9 @@
1
+ export const AXPShowModuleEntityDetailsViewWorkflow = {
2
+ startStepId: 'showDetailView',
3
+ steps: {
4
+ showDetailView: {
5
+ action: 'AXPShowModuleEntityDetailViewAction',
6
+ },
7
+ },
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1tb2R1bGUtZW50aXR5LWRldGFpbHMud29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9zaG93LW1vZHVsZS1lbnRpdHktZGV0YWlscy53b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBZ0I7SUFDakUsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixLQUFLLEVBQUU7UUFDTCxjQUFjLEVBQUU7WUFDZCxNQUFNLEVBQUUscUNBQXFDO1NBQzlDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV29ya2Zsb3cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcblxuZXhwb3J0IGNvbnN0IEFYUFNob3dNb2R1bGVFbnRpdHlEZXRhaWxzVmlld1dvcmtmbG93OiBBWFBXb3JrZmxvdyA9IHtcbiAgc3RhcnRTdGVwSWQ6ICdzaG93RGV0YWlsVmlldycsXG4gIHN0ZXBzOiB7XG4gICAgc2hvd0RldGFpbFZpZXc6IHtcbiAgICAgIGFjdGlvbjogJ0FYUFNob3dNb2R1bGVFbnRpdHlEZXRhaWxWaWV3QWN0aW9uJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
@@ -24,7 +24,7 @@ export class AXMModuleDesignerService {
24
24
  operator: { type: 'equal' },
25
25
  filters: [
26
26
  {
27
- field: 'module.id',
27
+ field: 'moduleId',
28
28
  operator: { type: 'equal' },
29
29
  value: moduleId,
30
30
  },
@@ -92,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
92
92
  providedIn: 'root',
93
93
  }]
94
94
  }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYmFja2VuZC9zcmMvbGliL2RhdGEvYXBpL21vZHVsZS1kZXNpZ25lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sd0JBQXdCO0lBSHJDO1FBSVksV0FBTSxHQUFRLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRXpELGtCQUFhLEdBQUc7WUFDeEIsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtZQUNSLElBQUksRUFBRSxFQUFFO1lBQ1IsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULFFBQVEsRUFBRSxPQUFjO2FBQ3pCO1NBQ0YsQ0FBQztRQUVRLGtCQUFhLEdBQUcsQ0FBQyxRQUFnQixFQUFxQixFQUFFLENBQUMsQ0FBQztZQUNsRSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDM0IsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxXQUFXO3dCQUNsQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO3dCQUMzQixLQUFLLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztLQTRFSjtJQTFFUyxLQUFLLENBQUMs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SUFFbEQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQVksSUFBaUIsQ0FBQztJQUVyRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBWSxJQUFpQixDQUFDO0lBRXJELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQixJQUFpQixDQUFDOzhHQXpHbEQsd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBNb2R1bGVEZXNpZ25lclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBBWFBFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhNTW9kdWxlRGVzaWduZXJTZXJ2aWNlIGltcGxlbWVudHMgQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGxvYWRlcjogYW55ID0gaW5qZWN0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnID0ge1xuICAgIHNraXA6IDAsXG4gICAgc29ydDogW10sXG4gICAgdGFrZTogMTAsXG4gICAgZmlsdGVyOiB7XG4gICAgICBmaWVsZDogJycsXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBvcGVyYXRvcjogJ2VxdWFsJyBhcyBhbnksXG4gICAgfSxcbiAgfTtcblxuICBwcm90ZWN0ZWQgQWR2YW5jZUNvbmZpZyA9IChtb2R1bGVJZDogc3RyaW5nKTogQVhEYXRhU291cmNlUXVlcnkgPT4gKHtcbiAgICBza2lwOiAwLFxuICAgIHNvcnQ6IFtdLFxuICAgIHRha2U6IDEwLFxuICAgIGZpbHRlcjoge1xuICAgICAgZmllbGQ6ICcnLFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGQ6ICdtb2R1bGUuaWQnLFxuICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICB2YWx1ZTogbW9kdWxlSWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0pO1xuXG4gIHByaXZhdGUgYXN5bmMgbW9kdWxlRGVmKCkge1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5yZXNvbHZlKCdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50JywgJ21vZHVsZScpO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgZW50aXR5RGVmKCkge1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5yZXNvbHZlKCdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50JywgJ2VudGl0eScpO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgZmVhdHVyZURlZigpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXIucmVzb2x2ZSgnYXBwbGljYXRpb24tbWFuYWdlbWVudCcsICdmZWF0dXJlJyk7XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBwZXJtaXNzaW9uRGVmKCkge1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5yZXNvbHZlKCdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50JywgJ3Blcm1pc3Npb24nKTtcbiAgfVxuXG4gIGFzeW5jIGdldE1vZHVsZXMoKSB7XG4gICAgY29uc3QgZW50aXR5OiBBWFBFbnRpdHkgPSBhd2FpdCB0aGlzLm1vZHVsZURlZigpO1xuICAgIGNvbnN0IGZ1bmMgPSBlbnRpdHk/LnF1ZXJpZXMubGlzdD8uZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICByZXR1cm4gZnVuYyh0aGlzLmRlZmF1bHRDb25maWcpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2luZ2xlTW9kdWxlKCkge31cblxuICBhc3luYyBjcmVhdGVNb2R1bGUocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+IHt9XG5cbiAgYXN5bmMgdXBkYXRlTW9kdWxlKG1vZHVsZUlkOiBzdHJpbmcsIHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PiB7fVxuXG4gIGFzeW5jIGRlbGV0ZU1vZHVsZShtb2R1bGVJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHt9XG5cbiAgLy9cblxuICBhc3luYyBnZXRFbnRpdGllcyhtb2R1bGVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZW50aXR5OiBBWFBFbnRpdHkgPSBhd2FpdCB0aGlzLmVudGl0eURlZigpO1xuICAgIGNvbnN0IGZ1bmMgPSBlbnRpdHk/LnF1ZXJpZXMubGlzdD8uZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICByZXR1cm4gZnVuYyh0aGlzLkFkdmFuY2VDb25maWcobW9kdWxlSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNpbmdsZUVudGl0eShlbnRpdHlJZDogc3RyaW5nKSB7fVxuXG4gIGFzeW5jIGNyZWF0ZUVudGl0eShwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyB1cGRhdGVFbnRpdHkocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+IHt9XG5cbiAgYXN5bmMgZGVsZXRlRW50aXR5KGVudGl0eUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge31cblxuICAvL1xuXG4gIGFzeW5jIGdldEZlYXR1cmVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbnRpdHk6IEFYUEVudGl0eSA9IGF3YWl0IHRoaXMuZmVhdHVyZURlZigpO1xuICAgIGNvbnN0IGZ1bmMgPSBlbnRpdHk/LnF1ZXJpZXMubGlzdD8uZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICByZXR1cm4gZnVuYyh0aGlzLkFkdmFuY2VDb25maWcobW9kdWxlSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNpbmdsZUZlYXR1cmUoZmVhdHVyZUlkOiBzdHJpbmcpIHt9XG5cbiAgYXN5bmMgY3JlYXRlRmVhdHVyZShwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyB1cGRhdGVGZWF0dXJlKHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PiB7fVxuXG4gIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge31cblxuICAvL1xuXG4gIGFzeW5jIGdldFBlcm1pc3Npb25zKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbnRpdHk6IEFYUEVudGl0eSA9IGF3YWl0IHRoaXMucGVybWlzc2lvbkRlZigpO1xuICAgIGNvbnN0IGZ1bmMgPSBlbnRpdHk/LnF1ZXJpZXMubGlzdD8uZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICByZXR1cm4gZnVuYyh0aGlzLkFkdmFuY2VDb25maWcobW9kdWxlSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNpbmdsZVBlcm1pc3Npb24ocGVybWlzc2lvbklkOiBzdHJpbmcpIHt9XG5cbiAgYXN5bmMgY3JlYXRlUGVybWlzc2lvbihwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyB1cGRhdGVQZXJtaXNzaW9uKHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PiB7fVxuXG4gIGFzeW5jIGRlbGV0ZVBlcm1pc3Npb24ocGVybWlzc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge31cbn1cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYmFja2VuZC9zcmMvbGliL2RhdGEvYXBpL21vZHVsZS1kZXNpZ25lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtuRCxNQUFNLE9BQU8sd0JBQXdCO0lBSHJDO1FBSVksV0FBTSxHQUFRLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRXpELGtCQUFhLEdBQUc7WUFDeEIsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtZQUNSLElBQUksRUFBRSxFQUFFO1lBQ1IsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULFFBQVEsRUFBRSxPQUFjO2FBQ3pCO1NBQ0YsQ0FBQztRQUVRLGtCQUFhLEdBQUcsQ0FBQyxRQUFnQixFQUFxQixFQUFFLENBQUMsQ0FBQztZQUNsRSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDM0IsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxVQUFVO3dCQUNqQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO3dCQUMzQixLQUFLLEVBQUUsUUFBUTtxQkFDaEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztLQTRFSjtJQTFFUyxLQUFLLENBQUMs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SUFFbEQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQVksSUFBaUIsQ0FBQztJQUVyRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBWSxJQUFpQixDQUFDO0lBRXJELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFvQixJQUFpQixDQUFDOzhHQXpHbEQsd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBNb2R1bGVEZXNpZ25lclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBBWFBFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhNTW9kdWxlRGVzaWduZXJTZXJ2aWNlIGltcGxlbWVudHMgQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGxvYWRlcjogYW55ID0gaW5qZWN0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnID0ge1xuICAgIHNraXA6IDAsXG4gICAgc29ydDogW10sXG4gICAgdGFrZTogMTAsXG4gICAgZmlsdGVyOiB7XG4gICAgICBmaWVsZDogJycsXG4gICAgICB2YWx1ZTogJycsXG4gICAgICBvcGVyYXRvcjogJ2VxdWFsJyBhcyBhbnksXG4gICAgfSxcbiAgfTtcblxuICBwcm90ZWN0ZWQgQWR2YW5jZUNvbmZpZyA9IChtb2R1bGVJZDogc3RyaW5nKTogQVhEYXRhU291cmNlUXVlcnkgPT4gKHtcbiAgICBza2lwOiAwLFxuICAgIHNvcnQ6IFtdLFxuICAgIHRha2U6IDEwLFxuICAgIGZpbHRlcjoge1xuICAgICAgZmllbGQ6ICcnLFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGQ6ICdtb2R1bGVJZCcsXG4gICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgICAgIHZhbHVlOiBtb2R1bGVJZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBhc3luYyBtb2R1bGVEZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLnJlc29sdmUoJ2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnLCAnbW9kdWxlJyk7XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBlbnRpdHlEZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLnJlc29sdmUoJ2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnLCAnZW50aXR5Jyk7XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBmZWF0dXJlRGVmKCkge1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5yZXNvbHZlKCdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50JywgJ2ZlYXR1cmUnKTtcbiAgfVxuICBwcml2YXRlIGFzeW5jIHBlcm1pc3Npb25EZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyLnJlc29sdmUoJ2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnLCAncGVybWlzc2lvbicpO1xuICB9XG5cbiAgYXN5bmMgZ2V0TW9kdWxlcygpIHtcbiAgICBjb25zdCBlbnRpdHk6IEFYUEVudGl0eSA9IGF3YWl0IHRoaXMubW9kdWxlRGVmKCk7XG4gICAgY29uc3QgZnVuYyA9IGVudGl0eT8ucXVlcmllcy5saXN0Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIHJldHVybiBmdW5jKHRoaXMuZGVmYXVsdENvbmZpZyk7XG4gIH1cblxuICBhc3luYyBnZXRTaW5nbGVNb2R1bGUoKSB7fVxuXG4gIGFzeW5jIGNyZWF0ZU1vZHVsZShwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyB1cGRhdGVNb2R1bGUobW9kdWxlSWQ6IHN0cmluZywgcGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+IHt9XG5cbiAgYXN5bmMgZGVsZXRlTW9kdWxlKG1vZHVsZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge31cblxuICAvL1xuXG4gIGFzeW5jIGdldEVudGl0aWVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbnRpdHk6IEFYUEVudGl0eSA9IGF3YWl0IHRoaXMuZW50aXR5RGVmKCk7XG4gICAgY29uc3QgZnVuYyA9IGVudGl0eT8ucXVlcmllcy5saXN0Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIHJldHVybiBmdW5jKHRoaXMuQWR2YW5jZUNvbmZpZyhtb2R1bGVJZCkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2luZ2xlRW50aXR5KGVudGl0eUlkOiBzdHJpbmcpIHt9XG5cbiAgYXN5bmMgY3JlYXRlRW50aXR5KHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PiB7fVxuXG4gIGFzeW5jIHVwZGF0ZUVudGl0eShwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT4ge31cblxuICBhc3luYyBkZWxldGVFbnRpdHkoZW50aXR5SWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7fVxuXG4gIC8vXG5cbiAgYXN5bmMgZ2V0RmVhdHVyZXMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGVudGl0eTogQVhQRW50aXR5ID0gYXdhaXQgdGhpcy5mZWF0dXJlRGVmKCk7XG4gICAgY29uc3QgZnVuYyA9IGVudGl0eT8ucXVlcmllcy5saXN0Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIHJldHVybiBmdW5jKHRoaXMuQWR2YW5jZUNvbmZpZyhtb2R1bGVJZCkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2luZ2xlRmVhdHVyZShmZWF0dXJlSWQ6IHN0cmluZykge31cblxuICBhc3luYyBjcmVhdGVGZWF0dXJlKHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PiB7fVxuXG4gIGFzeW5jIHVwZGF0ZUZlYXR1cmUocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+IHt9XG5cbiAgYXN5bmMgZGVsZXRlRmVhdHVyZShmZWF0dXJlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7fVxuXG4gIC8vXG5cbiAgYXN5bmMgZ2V0UGVybWlzc2lvbnMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGVudGl0eTogQVhQRW50aXR5ID0gYXdhaXQgdGhpcy5wZXJtaXNzaW9uRGVmKCk7XG4gICAgY29uc3QgZnVuYyA9IGVudGl0eT8ucXVlcmllcy5saXN0Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIHJldHVybiBmdW5jKHRoaXMuQWR2YW5jZUNvbmZpZyhtb2R1bGVJZCkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2luZ2xlUGVybWlzc2lvbihwZXJtaXNzaW9uSWQ6IHN0cmluZykge31cblxuICBhc3luYyBjcmVhdGVQZXJtaXNzaW9uKHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PiB7fVxuXG4gIGFzeW5jIHVwZGF0ZVBlcm1pc3Npb24ocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+IHt9XG5cbiAgYXN5bmMgZGVsZXRlUGVybWlzc2lvbihwZXJtaXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7fVxufVxuIl19