@acorex/modules 18.0.16 → 18.1.1

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 (52) 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 +167 -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/auth/lib/shared/layouts/master/master.layout.mjs +3 -3
  26. package/esm2022/backend/lib/data/api/module-designer.service.mjs +2 -2
  27. package/fesm2022/acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs +322 -0
  28. package/fesm2022/acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs.map +1 -0
  29. package/fesm2022/acorex-modules-application-management.mjs +191 -13
  30. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  31. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs → acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs} +8 -8
  32. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs.map → acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs → acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs.map → acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-auth-login.module-CGA5aTg2.mjs → acorex-modules-auth-login.module-DGBKGxI3.mjs} +4 -4
  36. package/fesm2022/{acorex-modules-auth-login.module-CGA5aTg2.mjs.map → acorex-modules-auth-login.module-DGBKGxI3.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-auth-master.layout-ZJWzjLrb.mjs → acorex-modules-auth-master.layout-B_8Sfw0M.mjs} +4 -4
  38. package/fesm2022/{acorex-modules-auth-master.layout-ZJWzjLrb.mjs.map → acorex-modules-auth-master.layout-B_8Sfw0M.mjs.map} +1 -1
  39. package/fesm2022/{acorex-modules-auth-password.component-MJhNk3UI.mjs → acorex-modules-auth-password.component-BfDjRRN_.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-auth-password.component-MJhNk3UI.mjs.map → acorex-modules-auth-password.component-BfDjRRN_.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-auth-password.component-C4yqf342.mjs → acorex-modules-auth-password.component-DZJ1qwfa.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-auth-password.component-C4yqf342.mjs.map → acorex-modules-auth-password.component-DZJ1qwfa.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-auth-routes-DhORV1Js.mjs → acorex-modules-auth-routes-Bw7nXDvx.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-auth-routes-DhORV1Js.mjs.map → acorex-modules-auth-routes-Bw7nXDvx.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-auth-two-factor.module-BWKP0_jO.mjs → acorex-modules-auth-two-factor.module-DKStBo1V.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-auth-two-factor.module-BWKP0_jO.mjs.map → acorex-modules-auth-two-factor.module-DKStBo1V.mjs.map} +1 -1
  47. package/fesm2022/acorex-modules-auth.mjs +1 -1
  48. package/fesm2022/acorex-modules-backend.mjs +1 -1
  49. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  50. package/package.json +7 -7
  51. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs +0 -100
  52. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ export * from './show-detail.action';
@@ -0,0 +1,8 @@
1
+ import { AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';
2
+ import * as i0 from "@angular/core";
3
+ export declare class AXPShowModuleEntityDetailViewAction extends AXPWorkflowAction {
4
+ private navigation;
5
+ execute(context: AXPWorkflowContext): Promise<void>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPShowModuleEntityDetailViewAction, never>;
7
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPShowModuleEntityDetailViewAction>;
8
+ }
@@ -39,36 +39,21 @@ export declare const EDITIONS: {
39
39
  }[];
40
40
  export declare const FEATURES: {
41
41
  id: string;
42
- module: {
43
- id: string;
44
- name: string;
45
- title: string;
46
- isArchived: boolean;
47
- };
42
+ moduleId: string;
48
43
  name: string;
49
44
  title: string;
50
45
  isArchived: boolean;
51
46
  }[];
52
47
  export declare const ENTITIES: {
53
48
  id: string;
54
- module: {
55
- id: string;
56
- name: string;
57
- title: string;
58
- isArchived: boolean;
59
- };
49
+ moduleId: string;
60
50
  name: string;
61
51
  title: string;
62
52
  isArchived: boolean;
63
53
  }[];
64
54
  export declare const PERMISSIONS: {
65
55
  id: string;
66
- module: {
67
- id: string;
68
- name: string;
69
- title: string;
70
- isArchived: boolean;
71
- };
56
+ moduleId: string;
72
57
  name: string;
73
58
  title: string;
74
59
  isArchived: boolean;
@@ -1,7 +1,8 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
2
  import { Route } from '@angular/router';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/router";
4
+ import * as i1 from "@acorex/platform/workflow";
5
+ import * as i2 from "@angular/router";
5
6
  export declare const routes: Route[];
6
7
  export declare class AXMApplicationManagementModule {
7
8
  static forRoot(): ModuleWithProviders<AXMApplicationManagementModule>;
@@ -10,6 +11,6 @@ export declare class AXMApplicationManagementModule {
10
11
  */
11
12
  constructor(instances: any[]);
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMApplicationManagementModule, [{ optional: true; }]>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMApplicationManagementModule, never, [typeof i1.RouterModule], never>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMApplicationManagementModule, never, [typeof i1.AXPWorkflowModule, typeof i2.RouterModule], never>;
14
15
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMApplicationManagementModule>;
15
16
  }
@@ -0,0 +1 @@
1
+ export * from './module-entity-detail-view/module-entity-detail-view.component';
@@ -0,0 +1,15 @@
1
+ import { AXTabStripChangedEvent } from '@acorex/components/tabs';
2
+ import { AXPEntityMasterSingleViewModel } from '@acorex/platform/layout/entity';
3
+ import * as i0 from "@angular/core";
4
+ export declare class AXPModuleEntityDetailViewComponent {
5
+ private activeRoute;
6
+ protected readonly vm: AXPEntityMasterSingleViewModel;
7
+ private store;
8
+ protected isSM: import("rxjs").Observable<boolean>;
9
+ protected isOpen: import("rxjs").Observable<boolean>;
10
+ protected selectedDetailTabIndex: import("@angular/core").WritableSignal<number>;
11
+ handleActiveDetailTabChanged(e: AXTabStripChangedEvent): void;
12
+ ngOnDestroy(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPModuleEntityDetailViewComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPModuleEntityDetailViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
15
+ }
@@ -1,18 +1,32 @@
1
1
  import { AXCollapseClickEvent } from '@acorex/components/collapse';
2
- import { OnInit } from '@angular/core';
2
+ import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
3
+ import { ChangeDetectorRef, OnInit } from '@angular/core';
4
+ import { AXMModuleDesignerContextMenuService } from '../services/context-menu.service';
3
5
  import { AXPModuleDesignerService } from './module-designer.service';
6
+ import { AXMModuleItem } from './module-designer.type';
4
7
  import * as i0 from "@angular/core";
5
8
  export declare class AXMModuleDesignerComponent implements OnInit {
9
+ protected cdr: ChangeDetectorRef;
6
10
  protected dataProvider: AXPModuleDesignerService;
11
+ private workflow;
12
+ protected contextMenuService: AXMModuleDesignerContextMenuService;
7
13
  protected modules: import("@angular/core").WritableSignal<any[]>;
8
14
  protected moduleDataCache: Map<string, any[]>;
15
+ private readonly destroyed;
16
+ constructor();
9
17
  ngOnInit(): void;
18
+ protected subscribeActionEvents(): void;
10
19
  protected loadModules(): Promise<void>;
11
- protected loadModuleData(moduleId: string, e: AXCollapseClickEvent, dataType: 'entities' | 'permissions' | 'features'): Promise<void>;
20
+ protected handleCollapseItemClick(moduleId: string, e: AXCollapseClickEvent, dataType: AXMModuleItem): Promise<void>;
21
+ protected loadModuleData(moduleId: string, dataType: AXMModuleItem, hardReload?: boolean): Promise<void>;
12
22
  protected getEntities(moduleId: string): any[];
13
23
  protected getPermissions(moduleId: string): any[];
14
24
  protected getFeatures(moduleId: string): any[];
15
- protected onRightClick(e: any): void;
25
+ protected openingContextMenu(e: AXContextMenuOpeningEvent): void;
26
+ protected handleActionClick(e: AXContextMenuItemsClickEvent): void;
27
+ protected createModule(): void;
28
+ protected destroy(): void;
29
+ protected assignData(target: HTMLElement, data: any): void;
16
30
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMModuleDesignerComponent, never>;
17
31
  static ɵcmp: i0.ɵɵComponentDeclaration<AXMModuleDesignerComponent, "ng-component", never, {}, {}, never, never, true, never>;
18
32
  }
@@ -0,0 +1 @@
1
+ export type AXMModuleItem = 'entity' | 'feature' | 'permission';
@@ -0,0 +1,26 @@
1
+ import { AXContextMenuItemsClickEvent, AXContextMenuOpeningEvent } from '@acorex/components/menu';
2
+ import { AXMModuleItem } from '../module-designer/module-designer.type';
3
+ import * as i0 from "@angular/core";
4
+ export declare class AXMModuleDesignerContextMenuService {
5
+ private workflow;
6
+ protected copiedRecord: import("@angular/core").WritableSignal<{
7
+ type: AXMModuleItem;
8
+ record: any;
9
+ } | null>;
10
+ protected elementData: import("@angular/core").WritableSignal<{
11
+ entityType: AXMModuleItem;
12
+ record: any;
13
+ moduleId: string;
14
+ } | null>;
15
+ private menuItems;
16
+ open(e: AXContextMenuOpeningEvent): void;
17
+ itemClick(e: AXContextMenuItemsClickEvent): void;
18
+ createEntity(entityType: 'module' | AXMModuleItem, moduleId?: string): Promise<void>;
19
+ showDetails(entityType: 'module' | AXMModuleItem, id: string): Promise<void>;
20
+ private copyRecord;
21
+ private pasteRecord;
22
+ private deleteEntity;
23
+ private getMenuItems;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMModuleDesignerContextMenuService, never>;
25
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMModuleDesignerContextMenuService>;
26
+ }
@@ -0,0 +1,2 @@
1
+ import { AXPWorkflow } from '@acorex/platform/workflow';
2
+ export declare const AXPCreateModuleEntityWorkflow: AXPWorkflow;
@@ -0,0 +1,2 @@
1
+ export * from './create-module-entity.workflow';
2
+ export * from './show-module-entity-details.workflow';
@@ -0,0 +1,2 @@
1
+ import { AXPWorkflow } from '@acorex/platform/workflow';
2
+ export declare const AXPShowModuleEntityDetailsViewWorkflow: AXPWorkflow;
@@ -0,0 +1,2 @@
1
+ export * from './show-detail.action';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2FjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2hvdy1kZXRhaWwuYWN0aW9uJztcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { AXPWorkflowNavigateAction } from '@acorex/platform/common';
2
+ import { AXPWorkflowAction } from '@acorex/platform/workflow';
3
+ import { Injectable, inject } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ export class AXPShowModuleEntityDetailViewAction extends AXPWorkflowAction {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.navigation = inject(AXPWorkflowNavigateAction);
9
+ }
10
+ async execute(context) {
11
+ const [module, entity] = context.getVariable('entity').split('.');
12
+ const { id } = context.getVariable('data');
13
+ const newPayload = {
14
+ commands: `/console/module-designer/m/${module}/e/${entity}/${id}/view`,
15
+ };
16
+ context.setVariable('payload', newPayload);
17
+ this.navigation.execute(context);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, decorators: [{
23
+ type: Injectable
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1kZXRhaWwuYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9hY3Rpb25zL3Nob3ctZGV0YWlsLmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxpQkFBaUI7SUFEMUU7O1FBRVUsZUFBVSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBVXhEO0lBVEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUN2QyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLFFBQVEsRUFBRSw4QkFBOEIsTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLE9BQU87U0FDeEUsQ0FBQztRQUNGLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBVlUsbUNBQW1DO2tIQUFuQyxtQ0FBbUM7OzJGQUFuQyxtQ0FBbUM7a0JBRC9DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXb3JrZmxvd05hdmlnYXRlQWN0aW9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dBY3Rpb24sIEFYUFdvcmtmbG93Q29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBTaG93TW9kdWxlRW50aXR5RGV0YWlsVmlld0FjdGlvbiBleHRlbmRzIEFYUFdvcmtmbG93QWN0aW9uIHtcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uID0gaW5qZWN0KEFYUFdvcmtmbG93TmF2aWdhdGVBY3Rpb24pO1xuICBhc3luYyBleGVjdXRlKGNvbnRleHQ6IEFYUFdvcmtmbG93Q29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IFttb2R1bGUsIGVudGl0eV0gPSBjb250ZXh0LmdldFZhcmlhYmxlKCdlbnRpdHknKS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHsgaWQgfSA9IGNvbnRleHQuZ2V0VmFyaWFibGUoJ2RhdGEnKTtcbiAgICBjb25zdCBuZXdQYXlsb2FkID0ge1xuICAgICAgY29tbWFuZHM6IGAvY29uc29sZS9tb2R1bGUtZGVzaWduZXIvbS8ke21vZHVsZX0vZS8ke2VudGl0eX0vJHtpZH0vdmlld2AsXG4gICAgfTtcbiAgICBjb250ZXh0LnNldFZhcmlhYmxlKCdwYXlsb2FkJywgbmV3UGF5bG9hZCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uLmV4ZWN1dGUoY29udGV4dCk7XG4gIH1cbn1cbiJdfQ==
@@ -58,7 +58,7 @@ export const FEATURES = Array.from({ length: 5 }).map((_, i) => {
58
58
  const name = AXPDataGenerator.pick(source);
59
59
  return {
60
60
  id: AXPDataGenerator.uuid(),
61
- module: AXPDataGenerator.pick(MODULES),
61
+ moduleId: AXPDataGenerator.pick(MODULES).id,
62
62
  name: name,
63
63
  title: name,
64
64
  isArchived: AXPDataGenerator.boolean(),
@@ -69,7 +69,7 @@ export const ENTITIES = Array.from({ length: 5 }).map((_, i) => {
69
69
  const name = AXPDataGenerator.pick(source);
70
70
  return {
71
71
  id: AXPDataGenerator.uuid(),
72
- module: AXPDataGenerator.pick(MODULES),
72
+ moduleId: AXPDataGenerator.pick(MODULES).id,
73
73
  name: name,
74
74
  title: name,
75
75
  isArchived: AXPDataGenerator.boolean(),
@@ -80,10 +80,10 @@ export const PERMISSIONS = Array.from({ length: 5 }).map((_, i) => {
80
80
  const name = AXPDataGenerator.pick(source);
81
81
  return {
82
82
  id: AXPDataGenerator.uuid(),
83
- module: AXPDataGenerator.pick(MODULES),
83
+ moduleId: AXPDataGenerator.pick(MODULES).id,
84
84
  name: name,
85
85
  title: name,
86
86
  isArchived: AXPDataGenerator.boolean(),
87
87
  };
88
88
  });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbWFuYWdlbWVudC1tb2NrLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQtbW9jay1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0MsT0FBTztRQUNMLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDM0IsSUFBSSxFQUFFLElBQUk7UUFDVixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7S0FDdkMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUc7UUFDYixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIscUJBQXFCO1FBQ3JCLHFCQUFx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QUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQzNCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RDLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0tBQ3ZDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdEgsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQzNCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RDLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0tBQ3ZDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTlMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0pLm1hcCgoXywgaSkgPT4ge1xuICBjb25zdCBzb3VyY2UgPSBbJ2FwcE9uZScsICdhcHBUd28nLCAnYXBwVGhyZWUnLCAnbXlDb29sQXBwJywgJ2F3ZXNvbWVBcHAnLCAnc3VwZXJBcHAnXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IG5hbWUsXG4gICAgaXNBcmNoaXZlZDogQVhQRGF0YUdlbmVyYXRvci5ib29sZWFuKCksXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IE1PRFVMRVMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0pLm1hcCgoXywgaSkgPT4ge1xuICBjb25zdCBzb3VyY2UgPSBbXG4gICAgJ1VzZXJNYW5hZ2VtZW50JyxcbiAgICAnQW5hbHl0aWNzJyxcbiAgICAnUmVwb3J0aW5nJyxcbiAgICAnUGF5bWVudEdhdGV3YXknLFxuICAgICdOb3RpZmljYXRpb25TZXJ2aWNlJyxcbiAgICAnSW52ZW50b3J5TWFuYWdlbWVudCcsXG4gIF07XG4gIGNvbnN0IG5hbWUgPSBBWFBEYXRhR2VuZXJhdG9yLnBpY2soc291cmNlKTtcblxuICByZXR1cm4ge1xuICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiBuYW1lLFxuICAgIGlzQXJjaGl2ZWQ6IEFYUERhdGFHZW5lcmF0b3IuYm9vbGVhbigpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTlNfTU9EVUxFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDUgfSkubWFwKChfLCBpKSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIGFwcGxpY2F0aW9uOiBBWFBEYXRhR2VuZXJhdG9yLnBpY2soQVBQTElDQVRJT05TKSxcbiAgICBtb2R1bGU6IEFYUERhdGFHZW5lcmF0b3IucGljayhNT0RVTEVTKSxcbiAgfTtcbn0pO1xuXG5leHBvcnQgY29uc3QgRURJVElPTlMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0pLm1hcCgoXywgaSkgPT4ge1xuICBjb25zdCBzb3VyY2UgPSBbJ1N0YW5kYXJkJywgJ1ByZW1pdW0nLCAnR29sZCcsICdTaWx2ZXInLCAnQnJvbnplJywgJ1BsYXRpbnVtJywgJ0VudGVycHJpc2UnXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIGFwcGxpY2F0aW9uOiBBWFBEYXRhR2VuZXJhdG9yLnBpY2soQVBQTElDQVRJT05TKSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiBuYW1lLFxuICAgIGlzQXJjaGl2ZWQ6IEFYUERhdGFHZW5lcmF0b3IuYm9vbGVhbigpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBGRUFUVVJFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDUgfSkubWFwKChfLCBpKSA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IFtcbiAgICAnVXNlciBBdXRoZW50aWNhdGlvbicsXG4gICAgJ0RhdGEgRW5jcnlwdGlvbicsXG4gICAgJ1JlYWwtdGltZSBOb3RpZmljYXRpb25zJyxcbiAgICAnQ3VzdG9taXphYmxlIERhc2hib2FyZHMnLFxuICAgICdBUEkgQWNjZXNzJyxcbiAgICAnTXVsdGktbGFuZ3VhZ2UgU3VwcG9ydCcsXG4gICAgJ0FuYWx5dGljcyBhbmQgUmVwb3J0aW5nJyxcbiAgICAnT2ZmbGluZSBNb2RlJyxcbiAgXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuICByZXR1cm4ge1xuICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICBtb2R1bGU6IEFYUERhdGFHZW5lcmF0b3IucGljayhNT0RVTEVTKSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiBuYW1lLFxuICAgIGlzQXJjaGl2ZWQ6IEFYUERhdGFHZW5lcmF0b3IuYm9vbGVhbigpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBFTlRJVElFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDUgfSkubWFwKChfLCBpKSA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IFsnVXNlcicsICdQcm9kdWN0JywgJ09yZGVyJywgJ0N1c3RvbWVyJywgJ1RyYW5zYWN0aW9uJywgJ0NhdGVnb3J5JywgJ1JldmlldycsICdJbnZlbnRvcnlJdGVtJ107XG4gIGNvbnN0IG5hbWUgPSBBWFBEYXRhR2VuZXJhdG9yLnBpY2soc291cmNlKTtcbiAgcmV0dXJuIHtcbiAgICBpZDogQVhQRGF0YUdlbmVyYXRvci51dWlkKCksXG4gICAgbW9kdWxlOiBBWFBEYXRhR2VuZXJhdG9yLnBpY2soTU9EVUxFUyksXG4gICAgbmFtZTogbmFtZSxcbiAgICB0aXRsZTogbmFtZSxcbiAgICBpc0FyY2hpdmVkOiBBWFBEYXRhR2VuZXJhdG9yLmJvb2xlYW4oKSxcbiAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0IFBFUk1JU1NJT05TID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNSB9KS5tYXAoKF8sIGkpID0+IHtcbiAgY29uc3Qgc291cmNlID0gWydSZWFkJywgJ1dyaXRlJywgJ1VwZGF0ZScsICdEZWxldGUnLCAnTWFuYWdlVXNlcnMnLCAnVmlld1JlcG9ydHMnLCAnQWNjZXNzU2V0dGluZ3MnLCAnQ3JlYXRlQ29udGVudCddO1xuICBjb25zdCBuYW1lID0gQVhQRGF0YUdlbmVyYXRvci5waWNrKHNvdXJjZSk7XG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIG1vZHVsZTogQVhQRGF0YUdlbmVyYXRvci5waWNrKE1PRFVMRVMpLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IG5hbWUsXG4gICAgaXNBcmNoaXZlZDogQVhQRGF0YUdlbmVyYXRvci5ib29sZWFuKCksXG4gIH07XG59KTtcbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbWFuYWdlbWVudC1tb2NrLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQtbW9jay1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0MsT0FBTztRQUNMLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDM0IsSUFBSSxFQUFFLElBQUk7UUFDVixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7S0FDdkMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUc7UUFDYixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIscUJBQXFCO1FBQ3JCLHFCQUFx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LGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRTtRQUMzQixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7UUFDM0MsSUFBSSxFQUFFLElBQUk7UUFDVixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7S0FDdkMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN0SCxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsT0FBTztRQUNMLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDM0IsUUFBUSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1FBQzNDLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLElBQUk7UUFDWCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0tBQ3ZDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTlMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0pLm1hcCgoXywgaSkgPT4ge1xuICBjb25zdCBzb3VyY2UgPSBbJ2FwcE9uZScsICdhcHBUd28nLCAnYXBwVGhyZWUnLCAnbXlDb29sQXBwJywgJ2F3ZXNvbWVBcHAnLCAnc3VwZXJBcHAnXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IG5hbWUsXG4gICAgaXNBcmNoaXZlZDogQVhQRGF0YUdlbmVyYXRvci5ib29sZWFuKCksXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IE1PRFVMRVMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0pLm1hcCgoXywgaSkgPT4ge1xuICBjb25zdCBzb3VyY2UgPSBbXG4gICAgJ1VzZXJNYW5hZ2VtZW50JyxcbiAgICAnQW5hbHl0aWNzJyxcbiAgICAnUmVwb3J0aW5nJyxcbiAgICAnUGF5bWVudEdhdGV3YXknLFxuICAgICdOb3RpZmljYXRpb25TZXJ2aWNlJyxcbiAgICAnSW52ZW50b3J5TWFuYWdlbWVudCcsXG4gIF07XG4gIGNvbnN0IG5hbWUgPSBBWFBEYXRhR2VuZXJhdG9yLnBpY2soc291cmNlKTtcblxuICByZXR1cm4ge1xuICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiBuYW1lLFxuICAgIGlzQXJjaGl2ZWQ6IEFYUERhdGFHZW5lcmF0b3IuYm9vbGVhbigpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTlNfTU9EVUxFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDUgfSkubWFwKChfLCBpKSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIGFwcGxpY2F0aW9uOiBBWFBEYXRhR2VuZXJhdG9yLnBpY2soQVBQTElDQVRJT05TKSxcbiAgICBtb2R1bGU6IEFYUERhdGFHZW5lcmF0b3IucGljayhNT0RVTEVTKSxcbiAgfTtcbn0pO1xuXG5leHBvcnQgY29uc3QgRURJVElPTlMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1IH0pLm1hcCgoXywgaSkgPT4ge1xuICBjb25zdCBzb3VyY2UgPSBbJ1N0YW5kYXJkJywgJ1ByZW1pdW0nLCAnR29sZCcsICdTaWx2ZXInLCAnQnJvbnplJywgJ1BsYXRpbnVtJywgJ0VudGVycHJpc2UnXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgIGFwcGxpY2F0aW9uOiBBWFBEYXRhR2VuZXJhdG9yLnBpY2soQVBQTElDQVRJT05TKSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiBuYW1lLFxuICAgIGlzQXJjaGl2ZWQ6IEFYUERhdGFHZW5lcmF0b3IuYm9vbGVhbigpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBGRUFUVVJFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDUgfSkubWFwKChfLCBpKSA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IFtcbiAgICAnVXNlciBBdXRoZW50aWNhdGlvbicsXG4gICAgJ0RhdGEgRW5jcnlwdGlvbicsXG4gICAgJ1JlYWwtdGltZSBOb3RpZmljYXRpb25zJyxcbiAgICAnQ3VzdG9taXphYmxlIERhc2hib2FyZHMnLFxuICAgICdBUEkgQWNjZXNzJyxcbiAgICAnTXVsdGktbGFuZ3VhZ2UgU3VwcG9ydCcsXG4gICAgJ0FuYWx5dGljcyBhbmQgUmVwb3J0aW5nJyxcbiAgICAnT2ZmbGluZSBNb2RlJyxcbiAgXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuICByZXR1cm4ge1xuICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICBtb2R1bGVJZDogQVhQRGF0YUdlbmVyYXRvci5waWNrKE1PRFVMRVMpLmlkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IG5hbWUsXG4gICAgaXNBcmNoaXZlZDogQVhQRGF0YUdlbmVyYXRvci5ib29sZWFuKCksXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IEVOVElUSUVTID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNSB9KS5tYXAoKF8sIGkpID0+IHtcbiAgY29uc3Qgc291cmNlID0gWydVc2VyJywgJ1Byb2R1Y3QnLCAnT3JkZXInLCAnQ3VzdG9tZXInLCAnVHJhbnNhY3Rpb24nLCAnQ2F0ZWdvcnknLCAnUmV2aWV3JywgJ0ludmVudG9yeUl0ZW0nXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuICByZXR1cm4ge1xuICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICBtb2R1bGVJZDogQVhQRGF0YUdlbmVyYXRvci5waWNrKE1PRFVMRVMpLmlkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IG5hbWUsXG4gICAgaXNBcmNoaXZlZDogQVhQRGF0YUdlbmVyYXRvci5ib29sZWFuKCksXG4gIH07XG59KTtcbmV4cG9ydCBjb25zdCBQRVJNSVNTSU9OUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDUgfSkubWFwKChfLCBpKSA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IFsnUmVhZCcsICdXcml0ZScsICdVcGRhdGUnLCAnRGVsZXRlJywgJ01hbmFnZVVzZXJzJywgJ1ZpZXdSZXBvcnRzJywgJ0FjY2Vzc1NldHRpbmdzJywgJ0NyZWF0ZUNvbnRlbnQnXTtcbiAgY29uc3QgbmFtZSA9IEFYUERhdGFHZW5lcmF0b3IucGljayhzb3VyY2UpO1xuICByZXR1cm4ge1xuICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICBtb2R1bGVJZDogQVhQRGF0YUdlbmVyYXRvci5waWNrKE1PRFVMRVMpLmlkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IG5hbWUsXG4gICAgaXNBcmNoaXZlZDogQVhQRGF0YUdlbmVyYXRvci5ib29sZWFuKCksXG4gIH07XG59KTtcbiJdfQ==
@@ -1,9 +1,14 @@
1
- import { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
1
+ import { AXPEntityDefinitionRegistryService, AXPEntityDetailViewModelResolver } from '@acorex/platform/layout/entity';
2
2
  import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
3
+ import { AXPWorkflowModule } from '@acorex/platform/workflow';
3
4
  import { Inject, Injector, NgModule, Optional } from '@angular/core';
4
5
  import { RouterModule } from '@angular/router';
6
+ import { AXPShowModuleEntityDetailViewAction } from './actions';
7
+ import { AXPModuleEntityDetailViewComponent } from './layouts';
8
+ import { AXPCreateModuleEntityWorkflow, AXPShowModuleEntityDetailsViewWorkflow } from './workflows';
5
9
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
10
+ import * as i1 from "@acorex/platform/workflow";
11
+ import * as i2 from "@angular/router";
7
12
  export const routes = [
8
13
  {
9
14
  component: AXPRootLayoutComponent,
@@ -12,6 +17,19 @@ export const routes = [
12
17
  {
13
18
  path: 'module-designer',
14
19
  loadComponent: () => import('./module-designer/module-designer.component').then((c) => c.AXMModuleDesignerComponent),
20
+ children: [
21
+ {
22
+ path: 'm/:module',
23
+ children: [
24
+ {
25
+ path: 'e/:entity/:id/view',
26
+ resolve: { vm: AXPEntityDetailViewModelResolver },
27
+ component: AXPModuleEntityDetailViewComponent,
28
+ },
29
+ ],
30
+ data: { reuse: false },
31
+ },
32
+ ],
15
33
  },
16
34
  ],
17
35
  },
@@ -46,13 +64,33 @@ export class AXMApplicationManagementModule {
46
64
  */
47
65
  constructor(instances) { }
48
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, deps: [{ token: 'AXP_REGISTER_MODULES_ENTITIES', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
49
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [i1.RouterModule] }); }
50
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [RouterModule.forChild(routes)] }); }
67
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [i1.AXPWorkflowModule, i2.RouterModule] }); }
68
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [AXPWorkflowModule.forChild({
69
+ actions: {
70
+ AXPShowModuleEntityDetailViewAction,
71
+ },
72
+ workflows: {
73
+ 'create-module-entity': AXPCreateModuleEntityWorkflow,
74
+ 'show-module-entity-details': AXPShowModuleEntityDetailsViewWorkflow,
75
+ },
76
+ }),
77
+ RouterModule.forChild(routes)] }); }
51
78
  }
52
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, decorators: [{
53
80
  type: NgModule,
54
81
  args: [{
55
- imports: [RouterModule.forChild(routes)],
82
+ imports: [
83
+ AXPWorkflowModule.forChild({
84
+ actions: {
85
+ AXPShowModuleEntityDetailViewAction,
86
+ },
87
+ workflows: {
88
+ 'create-module-entity': AXPCreateModuleEntityWorkflow,
89
+ 'show-module-entity-details': AXPShowModuleEntityDetailsViewWorkflow,
90
+ },
91
+ }),
92
+ RouterModule.forChild(routes),
93
+ ],
56
94
  exports: [],
57
95
  declarations: [],
58
96
  }]
@@ -62,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
62
100
  type: Inject,
63
101
  args: ['AXP_REGISTER_MODULES_ENTITIES']
64
102
  }] }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbWFuYWdlbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXRELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBWTtJQUM3QjtRQUNFLFNBQVMsRUFBRSxzQkFBc0I7UUFDakMsSUFBSSxFQUFFLFNBQVM7UUFDZixRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO2FBQ2xHO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFPRixNQUFNLE9BQU8sOEJBQThCO0lBQ3pDLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSw4QkFBOEI7WUFDeEMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSwrQkFBK0I7b0JBQ3hDLFVBQVUsRUFBRSxLQUFLLEVBQUUsY0FBa0QsRUFBRSxRQUFrQixFQUFFLEVBQUU7d0JBQzNGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3ZHLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBb0IsQ0FBQyxDQUFDO3dCQUM5QyxFQUFFO3dCQUVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3BHLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBbUIsQ0FBQyxDQUFDO3dCQUM3QyxFQUFFO3dCQUVGLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUM3QixNQUFNLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUM3QyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNwQyxjQUFjLENBQUMsUUFBUSxDQUFDLGdCQUF1QixDQUFDLENBQUM7d0JBQ2pELEVBQUU7d0JBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDdkcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFvQixDQUFDLENBQUM7b0JBQ2hELENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsa0NBQWtDLEVBQUUsUUFBUSxDQUFDLEVBQUUsaUNBQWlDO2lCQUN4RjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQWlFLFNBQWdCLElBQUcsQ0FBQzs4R0FsQzFFLDhCQUE4QixrQkFrQ1QsK0JBQStCOytHQWxDcEQsOEJBQThCOytHQUE5Qiw4QkFBOEIsWUFKL0IsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7OzJGQUk1Qiw4QkFBOEI7a0JBTDFDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCOzswQkFtQ2MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFJvb3RMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0JztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBjb21wb25lbnQ6IEFYUFJvb3RMYXlvdXRDb21wb25lbnQsXG4gICAgcGF0aDogJ2NvbnNvbGUnLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdtb2R1bGUtZGVzaWduZXInLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgIGltcG9ydCgnLi9tb2R1bGUtZGVzaWduZXIvbW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNTW9kdWxlRGVzaWduZXJDb21wb25lbnQpLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcbiAgZXhwb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhNQXBwbGljYXRpb25NYW5hZ2VtZW50TW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWE1BcHBsaWNhdGlvbk1hbmFnZW1lbnRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICdBWFBfUkVHSVNURVJfTU9EVUxFU19FTlRJVElFUycsXG4gICAgICAgICAgdXNlRmFjdG9yeTogYXN5bmMgKGVudGl0eVJlZ2lzdHJ5OiBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZXNFbnRpdHkgPSBhd2FpdCAoYXdhaXQgaW1wb3J0KCcuL2VudGl0aWVzL21vZHVsZXMuZW50aXR5JykpLm1vZHVsZXNFbnRpdHlGYWN0b3J5KGluamVjdG9yKTtcbiAgICAgICAgICAgIGVudGl0eVJlZ2lzdHJ5LnJlZ2lzdGVyKG1vZHVsZXNFbnRpdHkgYXMgYW55KTtcbiAgICAgICAgICAgIC8vXG5cbiAgICAgICAgICAgIGNvbnN0IGVudGl0eUVudGl0eSA9IGF3YWl0IChhd2FpdCBpbXBvcnQoJy4vZW50aXRpZXMvZW50aXR5LmVudGl0eScpKS5lbnRpdHlFbnRpdHlGYWN0b3J5KGluamVjdG9yKTtcbiAgICAgICAgICAgIGVudGl0eVJlZ2lzdHJ5LnJlZ2lzdGVyKGVudGl0eUVudGl0eSBhcyBhbnkpO1xuICAgICAgICAgICAgLy9cblxuICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbkVudGl0eSA9IGF3YWl0IChcbiAgICAgICAgICAgICAgYXdhaXQgaW1wb3J0KCcuL2VudGl0aWVzL3Blcm1pc3Npb24uZW50aXR5JylcbiAgICAgICAgICAgICkucGVybWlzc2lvbkVudGl0eUZhY3RvcnkoaW5qZWN0b3IpO1xuICAgICAgICAgICAgZW50aXR5UmVnaXN0cnkucmVnaXN0ZXIocGVybWlzc2lvbkVudGl0eSBhcyBhbnkpO1xuICAgICAgICAgICAgLy9cblxuICAgICAgICAgICAgY29uc3QgZmVhdHVyZUVudGl0eSA9IGF3YWl0IChhd2FpdCBpbXBvcnQoJy4vZW50aXRpZXMvZmVhdHVyZS5lbnRpdHknKSkuZmVhdHVyZUVudGl0eUZhY3RvcnkoaW5qZWN0b3IpO1xuICAgICAgICAgICAgZW50aXR5UmVnaXN0cnkucmVnaXN0ZXIoZmVhdHVyZUVudGl0eSBhcyBhbnkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UsIEluamVjdG9yXSwgLy8gQWRkIGFueSBkZXBlbmRlbmNpZXMgaWYgbmVlZGVkXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdCgnQVhQX1JFR0lTVEVSX01PRFVMRVNfRU5USVRJRVMnKSBpbnN0YW5jZXM6IGFueVtdKSB7fVxufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbWFuYWdlbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUVwRyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQVk7SUFDN0I7UUFDRSxTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLElBQUksRUFBRSxTQUFTO1FBQ2YsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztnQkFDakcsUUFBUSxFQUFFO29CQUNSO3dCQUNFLElBQUksRUFBRSxXQUFXO3dCQUNqQixRQUFRLEVBQUU7NEJBQ1I7Z0NBQ0UsSUFBSSxFQUFFLG9CQUFvQjtnQ0FDMUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLGdDQUFnQyxFQUFFO2dDQUNqRCxTQUFTLEVBQUUsa0NBQWtDOzZCQUM5Qzt5QkFDRjt3QkFDRCxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO3FCQUN2QjtpQkFDRjthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFrQkYsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsOEJBQThCO1lBQ3hDLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsK0JBQStCO29CQUN4QyxVQUFVLEVBQUUsS0FBSyxFQUFFLGNBQWtELEVBQUUsUUFBa0IsRUFBRSxFQUFFO3dCQUMzRixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUN2RyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQW9CLENBQUMsQ0FBQzt3QkFDOUMsRUFBRTt3QkFFRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNwRyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQW1CLENBQUMsQ0FBQzt3QkFDN0MsRUFBRTt3QkFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FDN0IsTUFBTSxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FDN0MsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDcEMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxnQkFBdUIsQ0FBQyxDQUFDO3dCQUNqRCxFQUFFO3dCQUVGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3ZHLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBb0IsQ0FBQyxDQUFDO29CQUNoRCxDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLGtDQUFrQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGlDQUFpQztpQkFDeEY7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFpRSxTQUFnQixJQUFHLENBQUM7OEdBbEMxRSw4QkFBOEIsa0JBa0NULCtCQUErQjsrR0FsQ3BELDhCQUE4QjsrR0FBOUIsOEJBQThCLFlBZHZDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztnQkFDekIsT0FBTyxFQUFFO29CQUNQLG1DQUFtQztpQkFDcEM7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULHNCQUFzQixFQUFFLDZCQUE2QjtvQkFDckQsNEJBQTRCLEVBQUUsc0NBQXNDO2lCQUNyRTthQUNGLENBQUM7WUFDRixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzs7MkZBS3BCLDhCQUE4QjtrQkFoQjFDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQixDQUFDLFFBQVEsQ0FBQzs0QkFDekIsT0FBTyxFQUFFO2dDQUNQLG1DQUFtQzs2QkFDcEM7NEJBQ0QsU0FBUyxFQUFFO2dDQUNULHNCQUFzQixFQUFFLDZCQUE2QjtnQ0FDckQsNEJBQTRCLEVBQUUsc0NBQXNDOzZCQUNyRTt5QkFDRixDQUFDO3dCQUNGLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtpQkFDakI7OzBCQW1DYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UsIEFYUEVudGl0eURldGFpbFZpZXdNb2RlbFJlc29sdmVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFJvb3RMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0JztcbmltcG9ydCB7IEFYUFdvcmtmbG93TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdG9yLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhQU2hvd01vZHVsZUVudGl0eURldGFpbFZpZXdBY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHsgQVhQTW9kdWxlRW50aXR5RGV0YWlsVmlld0NvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0cyc7XG5pbXBvcnQgeyBBWFBDcmVhdGVNb2R1bGVFbnRpdHlXb3JrZmxvdywgQVhQU2hvd01vZHVsZUVudGl0eURldGFpbHNWaWV3V29ya2Zsb3cgfSBmcm9tICcuL3dvcmtmbG93cyc7XG5cbmV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBjb21wb25lbnQ6IEFYUFJvb3RMYXlvdXRDb21wb25lbnQsXG4gICAgcGF0aDogJ2NvbnNvbGUnLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdtb2R1bGUtZGVzaWduZXInLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgIGltcG9ydCgnLi9tb2R1bGUtZGVzaWduZXIvbW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNTW9kdWxlRGVzaWduZXJDb21wb25lbnQpLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6ICdtLzptb2R1bGUnLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhdGg6ICdlLzplbnRpdHkvOmlkL3ZpZXcnLFxuICAgICAgICAgICAgICAgIHJlc29sdmU6IHsgdm06IEFYUEVudGl0eURldGFpbFZpZXdNb2RlbFJlc29sdmVyIH0sXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBBWFBNb2R1bGVFbnRpdHlEZXRhaWxWaWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IGZhbHNlIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBWFBXb3JrZmxvd01vZHVsZS5mb3JDaGlsZCh7XG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIEFYUFNob3dNb2R1bGVFbnRpdHlEZXRhaWxWaWV3QWN0aW9uLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93czoge1xuICAgICAgICAnY3JlYXRlLW1vZHVsZS1lbnRpdHknOiBBWFBDcmVhdGVNb2R1bGVFbnRpdHlXb3JrZmxvdyxcbiAgICAgICAgJ3Nob3ctbW9kdWxlLWVudGl0eS1kZXRhaWxzJzogQVhQU2hvd01vZHVsZUVudGl0eURldGFpbHNWaWV3V29ya2Zsb3csXG4gICAgICB9LFxuICAgIH0pLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLFxuICBdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQXBwbGljYXRpb25NYW5hZ2VtZW50TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWE1BcHBsaWNhdGlvbk1hbmFnZW1lbnRNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogJ0FYUF9SRUdJU1RFUl9NT0RVTEVTX0VOVElUSUVTJyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBhc3luYyAoZW50aXR5UmVnaXN0cnk6IEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UsIGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kdWxlc0VudGl0eSA9IGF3YWl0IChhd2FpdCBpbXBvcnQoJy4vZW50aXRpZXMvbW9kdWxlcy5lbnRpdHknKSkubW9kdWxlc0VudGl0eUZhY3RvcnkoaW5qZWN0b3IpO1xuICAgICAgICAgICAgZW50aXR5UmVnaXN0cnkucmVnaXN0ZXIobW9kdWxlc0VudGl0eSBhcyBhbnkpO1xuICAgICAgICAgICAgLy9cblxuICAgICAgICAgICAgY29uc3QgZW50aXR5RW50aXR5ID0gYXdhaXQgKGF3YWl0IGltcG9ydCgnLi9lbnRpdGllcy9lbnRpdHkuZW50aXR5JykpLmVudGl0eUVudGl0eUZhY3RvcnkoaW5qZWN0b3IpO1xuICAgICAgICAgICAgZW50aXR5UmVnaXN0cnkucmVnaXN0ZXIoZW50aXR5RW50aXR5IGFzIGFueSk7XG4gICAgICAgICAgICAvL1xuXG4gICAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uRW50aXR5ID0gYXdhaXQgKFxuICAgICAgICAgICAgICBhd2FpdCBpbXBvcnQoJy4vZW50aXRpZXMvcGVybWlzc2lvbi5lbnRpdHknKVxuICAgICAgICAgICAgKS5wZXJtaXNzaW9uRW50aXR5RmFjdG9yeShpbmplY3Rvcik7XG4gICAgICAgICAgICBlbnRpdHlSZWdpc3RyeS5yZWdpc3RlcihwZXJtaXNzaW9uRW50aXR5IGFzIGFueSk7XG4gICAgICAgICAgICAvL1xuXG4gICAgICAgICAgICBjb25zdCBmZWF0dXJlRW50aXR5ID0gYXdhaXQgKGF3YWl0IGltcG9ydCgnLi9lbnRpdGllcy9mZWF0dXJlLmVudGl0eScpKS5mZWF0dXJlRW50aXR5RmFjdG9yeShpbmplY3Rvcik7XG4gICAgICAgICAgICBlbnRpdHlSZWdpc3RyeS5yZWdpc3RlcihmZWF0dXJlRW50aXR5IGFzIGFueSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXBzOiBbQVhQRW50aXR5RGVmaW5pdGlvblJlZ2lzdHJ5U2VydmljZSwgSW5qZWN0b3JdLCAvLyBBZGQgYW55IGRlcGVuZGVuY2llcyBpZiBuZWVkZWRcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KCdBWFBfUkVHSVNURVJfTU9EVUxFU19FTlRJVElFUycpIGluc3RhbmNlczogYW55W10pIHt9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './module-entity-detail-view/module-entity-detail-view.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2xheW91dHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpRUFBaUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,77 @@
1
+ import { AXActionSheetModule } from '@acorex/components/action-sheet';
2
+ import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
3
+ import { AXButtonModule } from '@acorex/components/button';
4
+ import { AXDecoratorModule } from '@acorex/components/decorators';
5
+ import { AXDialogModule } from '@acorex/components/dialog';
6
+ import { AXDrawerModule } from '@acorex/components/drawer';
7
+ import { AXDropdownModule } from '@acorex/components/dropdown';
8
+ import { AXFormModule } from '@acorex/components/form';
9
+ import { AXLoadingModule } from '@acorex/components/loading';
10
+ import { AXPopoverModule } from '@acorex/components/popover';
11
+ import { AXTabsModule } from '@acorex/components/tabs';
12
+ import { AXTranslationModule } from '@acorex/core/translation';
13
+ import { AXPGridLayoutDirective, AXPStickyDirective, getChildDrawer, isSmallScreen, } from '@acorex/platform/common';
14
+ import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
15
+ import { AXPWidgetsModule } from '@acorex/platform/widgets';
16
+ import { CommonModule } from '@angular/common';
17
+ import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
18
+ import { ActivatedRoute, RouterModule } from '@angular/router';
19
+ import { Store } from '@ngrx/store';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/common";
22
+ import * as i2 from "@angular/router";
23
+ import * as i3 from "@acorex/components/decorators";
24
+ import * as i4 from "@acorex/components/dropdown";
25
+ import * as i5 from "@acorex/components/form";
26
+ import * as i6 from "@acorex/components/button";
27
+ import * as i7 from "@acorex/components/breadcrumbs";
28
+ import * as i8 from "@acorex/platform/layout/builder";
29
+ export class AXPModuleEntityDetailViewComponent {
30
+ constructor() {
31
+ this.activeRoute = inject(ActivatedRoute);
32
+ this.vm = this.activeRoute.snapshot.data['vm'];
33
+ //
34
+ this.store = inject((Store));
35
+ this.isSM = this.store.select(isSmallScreen());
36
+ this.isOpen = this.store.select(getChildDrawer());
37
+ this.selectedDetailTabIndex = signal(0);
38
+ }
39
+ handleActiveDetailTabChanged(e) {
40
+ this.selectedDetailTabIndex.set(e.index);
41
+ }
42
+ ngOnDestroy() {
43
+ this.vm.destroy();
44
+ }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPModuleEntityDetailViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-shadow-md ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { 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: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.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: "component", type: i6.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i6.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i7.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i7.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
47
+ //
48
+ AXPLayoutBuilderModule }, { kind: "component", type: i8.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i8.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }, { kind: "ngmodule", type:
49
+ //
50
+ AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, decorators: [{
53
+ type: Component,
54
+ args: [{ imports: [
55
+ CommonModule,
56
+ RouterModule,
57
+ AXDecoratorModule,
58
+ AXDropdownModule,
59
+ AXPopoverModule,
60
+ AXFormModule,
61
+ AXActionSheetModule,
62
+ AXDrawerModule,
63
+ AXDialogModule,
64
+ AXLoadingModule,
65
+ AXTabsModule,
66
+ AXButtonModule,
67
+ AXBreadcrumbsModule,
68
+ //
69
+ AXPLayoutBuilderModule,
70
+ AXPWidgetsModule,
71
+ AXPStickyDirective,
72
+ AXPGridLayoutDirective,
73
+ //
74
+ AXTranslationModule,
75
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-shadow-md ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </div>\n</div>\n" }]
76
+ }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2xheW91dHMvbW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbGF5b3V0cy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3L21vZHVsZS1lbnRpdHktZGV0YWlsLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7QUE2QnBDLE1BQU0sT0FBTyxrQ0FBa0M7SUEzQi9DO1FBNEJVLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFCLE9BQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQyxDQUFDO1FBQy9GLEVBQUU7UUFDTSxVQUFLLEdBQUcsTUFBTSxDQUFDLENBQUEsS0FBMEIsQ0FBQSxDQUFDLENBQUM7UUFDekMsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDMUMsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFN0MsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBUzlDO0lBUEMsNEJBQTRCLENBQUMsQ0FBeUI7UUFDcEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUM7OEdBaEJVLGtDQUFrQztrR0FBbEMsa0NBQWtDLHdFQ3REL0MsMGxLQStIQSwyQ0RqR0ksWUFBWSxtRkFDWixZQUFZLCtRQUNaLGlCQUFpQix1VkFDakIsZ0JBQWdCLHdQQUNoQixlQUFlLDhCQUNmLFlBQVksa01BQ1osbUJBQW1CLDhCQUNuQixjQUFjLDhCQUNkLGNBQWMsOEJBQ2QsZUFBZSw4QkFDZixZQUFZLDhCQUNaLGNBQWMsOHZCQUNkLG1CQUFtQjtnQkFDbkIsRUFBRTtnQkFDRixzQkFBc0Isb1dBQ3RCLGdCQUFnQiwrQkFDaEIsa0JBQWtCLHFMQUNsQixzQkFBc0I7Z0JBQ3RCLEVBQUU7Z0JBQ0YsbUJBQW1COzsyRkFLVixrQ0FBa0M7a0JBM0I5QyxTQUFTOzhCQUVDO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsRUFBRTt3QkFDRixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLEVBQUU7d0JBQ0YsbUJBQW1CO3FCQUNwQixjQUNXLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQWN0aW9uU2hlZXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYWN0aW9uLXNoZWV0JztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEFYVGFic01vZHVsZSwgQVhUYWJTdHJpcENoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHtcbiAgQVhQQWRtaW5MYXlvdXRTdGF0ZSxcbiAgQVhQR3JpZExheW91dERpcmVjdGl2ZSxcbiAgQVhQU3RpY2t5RGlyZWN0aXZlLFxuICBnZXRDaGlsZERyYXdlcixcbiAgaXNTbWFsbFNjcmVlbixcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFdpZGdldHNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL21vZHVsZS1lbnRpdHktZGV0YWlsLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhBY3Rpb25TaGVldE1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWERpYWxvZ01vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLFxuICAgIEFYUFdpZGdldHNNb2R1bGUsXG4gICAgQVhQU3RpY2t5RGlyZWN0aXZlLFxuICAgIEFYUEdyaWRMYXlvdXREaXJlY3RpdmUsXG4gICAgLy9cbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTW9kdWxlRW50aXR5RGV0YWlsVmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgYWN0aXZlUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSB0aGlzLmFjdGl2ZVJvdXRlLnNuYXBzaG90LmRhdGFbJ3ZtJ10gYXMgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsO1xuICAvL1xuICBwcml2YXRlIHN0b3JlID0gaW5qZWN0KFN0b3JlPEFYUEFkbWluTGF5b3V0U3RhdGU+KTtcbiAgcHJvdGVjdGVkIGlzU00gPSB0aGlzLnN0b3JlLnNlbGVjdChpc1NtYWxsU2NyZWVuKCkpO1xuICBwcm90ZWN0ZWQgaXNPcGVuID0gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0Q2hpbGREcmF3ZXIoKSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkRGV0YWlsVGFiSW5kZXggPSBzaWduYWwoMCk7XG5cbiAgaGFuZGxlQWN0aXZlRGV0YWlsVGFiQ2hhbmdlZChlOiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZERldGFpbFRhYkluZGV4LnNldChlLmluZGV4KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudm0uZGVzdHJveSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1taW4taC1mdWxsIGF4LXB4LTQgYXgtcGItNCBtZDpheC1weC02IGF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyLWIgbWQ6YXgtYm9yZGVyLTAgbWQ6YXgtYmctZGVmYXVsdFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtcHQtNCBheC1zdGlja3kgYXgtdG9wLTAgYXgtei0xMCBheC10cmFuc2l0aW9uLWFsbFwiXG4gICAgI3N0aWNreT1cImF4cFN0aWNreVwiXG4gICAgW2F4cFN0aWNreV09XCInYXgtYmctc3VyZmFjZSBheC1weC02IGF4LXB5LTMgLWF4LW14LTYgYXgtc2hhZG93LXhsJ1wiXG4gICAgW3N0aWNreU9mZnNldF09XCIzMFwiXG4gID5cbiAgICA8IS0tLS0tLS0tIEJlZ2luIFRvb2xiYXIgIC0tLS0tLS0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDwhLS0tLS0tLS0gQmVnaW4gVGl0bGUgIC0tLS0tLS0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTEgYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LXRyYW5zaXRpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC14bCBtZDpheC10ZXh0LTN4bCBheC1mb250LWJvbGRcIj57eyB2bS50aXRsZSgpIH19PC9kaXY+XG4gICAgICAgICAgQGlmKHZtLmRlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwXCIgW2NsYXNzLmF4LWhpZGRlbl09XCJzdGlja3kuaXNTdGlja3lcIj5cbiAgICAgICAgICAgIHt7IHZtLmRlc2NyaXB0aW9uKCkgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGF4LWJyZWFkY3J1bWJzIGNsYXNzPVwiY2hpbGQ6YXgtZm9udC1ub3JtYWwgY2hpbGQ6YXgtdGV4dC1uZXV0cmFsLTQwMFwiIFtjbGFzcy5heC1oaWRkZW5dPVwiaXNTTSB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpdmlkZXI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodCBheC10ZXh0LXhzIGF4LW14LTJcIj48L2k+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgQGZvcihiIG9mIHZtLmJlYXJkY3J1bWJzKCk7dHJhY2sgJGluZGV4O2xldCBsYXN0PSRsYXN0KSB7XG4gICAgICAgICAgICA8YXgtYnJlYWRjcnVtYnMtaXRlbVxuICAgICAgICAgICAgICBbYWN0aXZlXT1cImxhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MuIWF4LWZvbnQtc2VtaWJvbGRdPVwibGFzdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy4hYXgtdGV4dC1uZXV0cmFsLTYwMF09XCJsYXN0XCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiYi51cmxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYoYi5pY29uKSB7XG4gICAgICAgICAgICAgIDxpIFtjbGFzc109XCJiLmljb25cIj48L2k+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAge3sgYi50aXRsZSB9fVxuICAgICAgICAgICAgPC9heC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tLS0tLS0tIEZpbmlzaCBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgIDwhLS0gQmVnaW4gQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0zXCI+XG4gICAgICAgIEBmb3IodHIgb2Ygdm0ucHJpbWFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ0ci50aXRsZVwiIFtjb2xvcl09XCJ0ci5jb2xvclwiIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCI+XG4gICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfSBAaWYodm0uc2Vjb25kYXJ5QWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cIihpc1NNIHwgYXN5bmMpID8gbnVsbCA6ICdBY3Rpb25zJ1wiIGNvbG9yPVwiZ2hvc3RcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1lbGxpcHNpcy12ZXJ0aWNhbFwiPjwvaT5cbiAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgQGZvcih0ciBvZiB2bS5zZWNvbmRhcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmKHRyLnNlcGFyYXRlZCkge1xuICAgICAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ0ci50aXRsZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC17eyB0ci5jb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJ2bS5leGVjdXRlQ29tbWFuZCh0ci5uYW1lKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwidHIuaWNvblwiPiA8L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gRmluaXNoIEFjdGlvbiBNZW51ICAtLT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFN0YXJ0IFNlY3Rpb25zICAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZ3JpZCBheC1ncmlkLWNvbHMtMTIgYXgtZ2FwLTRcIj5cbiAgICAgIEBmb3Ioc2VjdGlvbiBvZiB2bS5zZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLm5hbWUoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQgYXgtc2hhZG93LW1kIGF4LW10LTJcIiBbZ3JpZExheW91dF09XCJzZWN0aW9uLmxheW91dCgpXCI+XG4gICAgICAgIDxheC1mb3JtICNmb3JtPlxuICAgICAgICAgIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwidm0uY29udGV4dCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZC1oZWFkZXIgIWF4LXB5LTIgIWF4LXB4LTRcIj5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhYXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkXCI+e3sgc2VjdGlvbi50aXRsZSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgIEBpZihzZWN0aW9uLmRlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtc20gYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1ncmF5LTUwMFwiPnt7IHNlY3Rpb24uZGVzY3JpcHRpb24oKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgQGlmKHNlY3Rpb24uZWRpdGFibGUoKSkge1xuICAgICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC14c1wiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgW2xvb2tdPVwiJ2JsYW5rJ1wiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQoJ21vZGlmeS1lbnRpdHktc2VjdGlvbicsIHNlY3Rpb24pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtcGVuIGF4LXRleHQtZ3JheS02MDBcIj4gPC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZC1ib2R5ICFheC1ncmlkICFheC1ncmlkLWNvbHMtMTIgIWF4LWdhcC00XCI+XG4gICAgICAgICAgICAgIEBmb3IoYXR0ciBvZiBzZWN0aW9uLnByb3BzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMVwiIFtncmlkTGF5b3V0XT1cImF0dHIubGF5b3V0KClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LXNlbWlib2xkXCI+e3sgYXR0ci50aXRsZSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC01MDBcIj5cbiAgICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImF0dHIubm9kZSgpXCIgW21vZGVdPVwiJ3ZpZXcnXCI+IDwvYXhwLXdpZGdldC1yZW5kZXJlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgICAgICA8L2F4LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZpbmlzaCBTZWN0aW9ucyAgLS0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=