@veloceapps/sdk 7.0.2-2 → 7.0.2-21

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 (65) hide show
  1. package/cms/cms.actions.d.ts +7 -1
  2. package/cms/components/element-children/element-children.component.d.ts +3 -1
  3. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +14 -0
  4. package/cms/components/preview/preview.module.d.ts +2 -1
  5. package/cms/components/preview/preview.types.d.ts +4 -0
  6. package/cms/injection-tokens.d.ts +1 -3
  7. package/cms/modules/runtime/services/compilation.service.d.ts +2 -1
  8. package/cms/modules/runtime/services/runtime-editor.service.d.ts +6 -4
  9. package/cms/modules/runtime/types/runtime.actions.d.ts +5 -2
  10. package/cms/plugins/element-hover.plugin.d.ts +32 -0
  11. package/cms/plugins/script.plugin.d.ts +0 -3
  12. package/cms/types/common.types.d.ts +11 -1
  13. package/cms/types/index.d.ts +2 -0
  14. package/cms/types/layouts.types.d.ts +28 -2
  15. package/cms/types/pages.types.d.ts +1 -0
  16. package/cms/utils/elements-resolver.d.ts +5 -1
  17. package/cms/utils/script.utils.d.ts +2 -0
  18. package/cms/vendor-map.d.ts +7 -5
  19. package/core/modules/configuration/services/configuration.service.d.ts +3 -3
  20. package/core/types/ui-definition.types.d.ts +7 -2
  21. package/core/utils/line-item.utils.d.ts +4 -2
  22. package/core/utils/line-item.worker.d.ts +2 -2
  23. package/esm2020/cms/cms.actions.mjs +11 -2
  24. package/esm2020/cms/cms.elements.mjs +14 -3
  25. package/esm2020/cms/cms.layouts.mjs +39 -1
  26. package/esm2020/cms/components/element-children/element-children.component.mjs +11 -6
  27. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +2 -2
  28. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +35 -0
  29. package/esm2020/cms/components/preview/preview.module.mjs +22 -4
  30. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  31. package/esm2020/cms/injection-tokens.mjs +1 -2
  32. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +3 -3
  33. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +5 -3
  34. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +2 -2
  35. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +1 -1
  36. package/esm2020/cms/plugins/element-hover.plugin.mjs +112 -0
  37. package/esm2020/cms/plugins/script.plugin.mjs +6 -40
  38. package/esm2020/cms/services/integration.state.mjs +3 -6
  39. package/esm2020/cms/services/io-provider.service.mjs +7 -5
  40. package/esm2020/cms/types/common.types.mjs +1 -1
  41. package/esm2020/cms/types/index.mjs +3 -1
  42. package/esm2020/cms/types/layouts.types.mjs +70 -1
  43. package/esm2020/cms/types/pages.types.mjs +2 -0
  44. package/esm2020/cms/utils/elements-resolver.mjs +22 -8
  45. package/esm2020/cms/utils/script.utils.mjs +42 -0
  46. package/esm2020/cms/vendor-map.mjs +3 -2
  47. package/esm2020/core/modules/configuration/services/configuration.service.mjs +6 -5
  48. package/esm2020/core/types/ui-definition.types.mjs +1 -1
  49. package/esm2020/core/utils/line-item.utils.mjs +35 -16
  50. package/esm2020/core/utils/line-item.worker.mjs +5 -5
  51. package/esm2020/src/components/header/header.component.mjs +15 -3
  52. package/esm2020/src/flow-routing.module.mjs +1 -1
  53. package/fesm2015/veloceapps-sdk-cms.mjs +343 -108
  54. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  55. package/fesm2015/veloceapps-sdk-core.mjs +46 -24
  56. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  57. package/fesm2015/veloceapps-sdk.mjs +15 -2
  58. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  59. package/fesm2020/veloceapps-sdk-cms.mjs +424 -122
  60. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  61. package/fesm2020/veloceapps-sdk-core.mjs +46 -24
  62. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  63. package/fesm2020/veloceapps-sdk.mjs +14 -2
  64. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  65. package/package.json +1 -1
@@ -26,11 +26,17 @@ export declare const SwitchObjectAction: (payload: {
26
26
  }) => IntegrationAction;
27
27
  export declare namespace CmsAction {
28
28
  const GO_TO_PAGE = "[CMS]_GO_TO_PAGE";
29
+ const UPDATE_CUSTOMIZATION = "[CMS]_UPDATE_CUSTOMIZATION";
29
30
  /**
30
31
  * Navigate UI definition to a specific page
31
32
  *
32
33
  * @param pageName name of the page
33
- * @returns void
34
34
  */
35
35
  const GoToPage: (pageName: string) => IntegrationAction;
36
+ /**
37
+ * Update UI definition customization state
38
+ *
39
+ * @param pageName name of the page
40
+ */
41
+ const UpdateCustomization: (value: any) => IntegrationAction;
36
42
  }
@@ -10,11 +10,13 @@ export declare class ElementChildrenComponent implements OnDestroy {
10
10
  private runtimeService;
11
11
  private runtimeEditorService;
12
12
  private cdr;
13
+ filter?: (elements: ElementMetadata[]) => ElementMetadata[];
13
14
  metadata$: Observable<ElementMetadata | undefined>;
14
15
  dragMode$: Observable<boolean>;
15
16
  private destroyed$;
16
17
  constructor(elementContext: ElementContextService, runtimeService: RuntimeService, runtimeEditorService: RuntimeEditorService, cdr: ChangeDetectorRef);
17
18
  ngOnDestroy(): void;
19
+ getFilteredChildren(elements: ElementMetadata[]): ElementMetadata[];
18
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ElementChildrenComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<ElementChildrenComponent, "element-children", never, {}, {}, never, never, false, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElementChildrenComponent, "element-children", never, { "filter": "filter"; }, {}, never, never, false, never>;
20
22
  }
@@ -0,0 +1,14 @@
1
+ import { RuntimeEditorService } from '../../modules/runtime';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ElementToolsPanelComponent {
4
+ private readonly metadata;
5
+ private readonly config;
6
+ private readonly elementRef;
7
+ runtimeEditorService?: RuntimeEditorService;
8
+ showDeleteButton: boolean;
9
+ constructor();
10
+ deleteHandler(): void;
11
+ showSettingsHandler(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElementToolsPanelComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElementToolsPanelComponent, "ng-component", never, {}, {}, never, never, true, never>;
14
+ }
@@ -5,8 +5,9 @@ import * as i3 from "@veloceapps/components";
5
5
  import * as i4 from "../element-renderer/element-renderer.module";
6
6
  import * as i5 from "../element-children/element-children.module";
7
7
  import * as i6 from "../element-drop-handle/element-drop-handle.module";
8
+ import * as i7 from "../element-tools-panel/element-tools-panel.component";
8
9
  export declare class PreviewModule {
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<PreviewModule, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<PreviewModule, [typeof i1.PreviewComponent], [typeof i2.CommonModule, typeof i3.LoaderModule, typeof i4.ElementRendererModule, typeof i5.ElementChildrenModule, typeof i6.ElementDropHandleModule], [typeof i1.PreviewComponent]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PreviewModule, [typeof i1.PreviewComponent], [typeof i2.CommonModule, typeof i3.LoaderModule, typeof i4.ElementRendererModule, typeof i5.ElementChildrenModule, typeof i6.ElementDropHandleModule, typeof i7.ElementToolsPanelComponent], [typeof i1.PreviewComponent]>;
11
12
  static ɵinj: i0.ɵɵInjectorDeclaration<PreviewModule>;
12
13
  }
@@ -8,4 +8,8 @@ export interface CMSPreviewConfig {
8
8
  * (like element hover/selection or Drag&Drop zones)
9
9
  */
10
10
  uiBuilderMode?: boolean;
11
+ /**
12
+ * When `true`, preview renders settings page (element with `type: CUSTOMIZATION_PAGE`)
13
+ */
14
+ customizationMode?: boolean;
11
15
  }
@@ -1,11 +1,9 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { UIDefinitionMetadata } from '@veloceapps/sdk/core';
3
- import { Dictionary } from 'lodash';
4
3
  import { Plugin } from './engine/models/plugin';
5
4
  import { ElementConfig, ElementMetadata } from './types/common.types';
6
5
  export declare const DEFAULT_PLUGINS_TOKEN: InjectionToken<(typeof Plugin)[]>;
7
6
  export declare const UI_DEFINITION_METADATA: InjectionToken<UIDefinitionMetadata>;
8
7
  export declare const ELEMENT_METADATA: InjectionToken<ElementMetadata>;
9
- export declare const SHARED_ELEMENT_METADATA: InjectionToken<ElementMetadata>;
8
+ export declare const SHARED_ELEMENT_METADATA: InjectionToken<ElementMetadata | undefined>;
10
9
  export declare const ELEMENT_CONFIG: InjectionToken<ElementConfig>;
11
- export declare const VENDOR_MAP: InjectionToken<Dictionary<any>>;
@@ -1,6 +1,7 @@
1
1
  import { Injector } from '@angular/core';
2
2
  import { UIDefinition } from '@veloceapps/sdk/core';
3
3
  import { Observable } from 'rxjs';
4
+ import { CMSPreviewConfig } from '../../../components/preview';
4
5
  import { CompilationResult } from '../../../modules/runtime/types/compilation.types';
5
6
  import { ElementMetadata } from '../../../types/common.types';
6
7
  import * as i0 from "@angular/core";
@@ -9,7 +10,7 @@ export declare class CompilationService {
9
10
  private uiDefinitionMeta?;
10
11
  private elementsResolver?;
11
12
  constructor(injector: Injector);
12
- compileUIDefinition$(uiDefinition: UIDefinition): Observable<CompilationResult>;
13
+ compileUIDefinition$(uiDefinition: UIDefinition, config?: CMSPreviewConfig): Observable<CompilationResult>;
13
14
  compileElement$(element: ElementMetadata): Observable<CompilationResult>;
14
15
  clear(): void;
15
16
  private getModule;
@@ -1,15 +1,17 @@
1
1
  import { Patch } from 'rfc6902';
2
2
  import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';
3
- import { RuntimeElementDeleted, RuntimeElementDropped } from '../types/runtime.actions';
3
+ import { RuntimeElementDeleteEvent, RuntimeElementDropEvent, RuntimeShowSettingsEvent } from '../types/runtime.actions';
4
4
  import { RuntimeService } from './runtime.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class RuntimeEditorService {
7
7
  private runtimeService;
8
8
  private editorModeSubj$;
9
- dragMode$: BehaviorSubject<boolean>;
10
- elementDropped$: ReplaySubject<RuntimeElementDropped>;
11
- elementDeleted$: ReplaySubject<RuntimeElementDeleted>;
9
+ onElementDropped$: ReplaySubject<RuntimeElementDropEvent>;
10
+ onElementDeleted$: ReplaySubject<RuntimeElementDeleteEvent>;
11
+ onElementSettingsToggled$: ReplaySubject<RuntimeShowSettingsEvent>;
12
12
  editorMode$: Observable<boolean>;
13
+ dragMode$: BehaviorSubject<boolean>;
14
+ selectedElementPath$: BehaviorSubject<string | null>;
13
15
  constructor(runtimeService: RuntimeService);
14
16
  applyPatch$(patch: Patch): Observable<void>;
15
17
  toggleEditorMode(): void;
@@ -1,9 +1,12 @@
1
1
  import { ElementMetadata } from '../../../types';
2
- export interface RuntimeElementDropped {
2
+ export interface RuntimeElementDropEvent {
3
3
  element: ElementMetadata;
4
4
  path: string;
5
5
  index: number;
6
6
  }
7
- export interface RuntimeElementDeleted {
7
+ export interface RuntimeElementDeleteEvent {
8
+ path: string;
9
+ }
10
+ export interface RuntimeShowSettingsEvent {
8
11
  path: string;
9
12
  }
@@ -0,0 +1,32 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { ElementComponent } from '../components/element.component';
3
+ import { PluginComponent } from '../components/plugin.component';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ElementHoverPlugin implements PluginComponent, OnDestroy {
6
+ host: ElementComponent;
7
+ private readonly hoverClassName;
8
+ private readonly metadata;
9
+ private readonly appRef;
10
+ private readonly el;
11
+ private readonly document;
12
+ private readonly runtimeEditorService;
13
+ private overlayEl?;
14
+ private isHovered$;
15
+ private isSelected$;
16
+ private destroyed$;
17
+ private mouseOverListenerBound;
18
+ private mouseLeaveListenerBound;
19
+ private clickListenerBound;
20
+ constructor(host: ElementComponent);
21
+ ngOnDestroy(): void;
22
+ private attachListeners;
23
+ private detachListeners;
24
+ private mouseOverListener;
25
+ private clickListener;
26
+ private mouseLeaveListener;
27
+ private addHighlight;
28
+ private removeHighlight;
29
+ private updateHighlight;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElementHoverPlugin, never>;
31
+ static ɵprov: i0.ɵɵInjectableDeclaration<ElementHoverPlugin>;
32
+ }
@@ -3,11 +3,8 @@ import { PluginComponent } from '../components/plugin.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class ScriptPlugin implements PluginComponent {
5
5
  host: ElementComponent;
6
- private document;
7
- private vendorMap;
8
6
  constructor(host: ElementComponent);
9
7
  private addScript;
10
- private normalizeImports;
11
8
  static ɵfac: i0.ɵɵFactoryDeclaration<ScriptPlugin, never>;
12
9
  static ɵdir: i0.ɵɵDirectiveDeclaration<ScriptPlugin, never, never, {}, {}, never, never, false, never>;
13
10
  }
@@ -2,7 +2,8 @@ import { Dictionary } from 'lodash';
2
2
  import { Entity } from '../engine/models/entity';
3
3
  import { Plugin } from '../engine/models/plugin';
4
4
  import { PageLayout } from './layouts.types';
5
- export type ELEMENT_TYPE = 'CUSTOM' | 'CONTAINER' | 'SERVICE' | 'REFERENCE' | 'PAGE' | 'REGION';
5
+ import { PageType } from './pages.types';
6
+ export type ELEMENT_TYPE = 'CUSTOMIZATION_PAGE' | 'CUSTOM' | 'CONTAINER' | 'SERVICE' | 'REFERENCE' | 'PAGE' | 'REGION';
6
7
  export type ElementStyleDeclaration = Partial<CSSStyleDeclaration>;
7
8
  export interface ElementConfig {
8
9
  component: typeof Entity;
@@ -10,6 +11,9 @@ export interface ElementConfig {
10
11
  defaultTemplate?: string;
11
12
  suppressTemplate?: boolean;
12
13
  suppressStyles?: boolean;
14
+ builder?: {
15
+ suppressRemovable?: boolean;
16
+ };
13
17
  }
14
18
  export interface ElementModel {
15
19
  /**
@@ -104,6 +108,12 @@ export interface ElementDefaultMetadata {
104
108
  * Used only when `type === PAGE`
105
109
  */
106
110
  layout?: PageLayout;
111
+ /**
112
+ * Page Type
113
+ *
114
+ * Used only when `type === PAGE`
115
+ */
116
+ pageType?: PageType;
107
117
  }
108
118
  export interface ElementMetadata extends Omit<ElementDefaultMetadata, 'children'> {
109
119
  path: string;
@@ -3,4 +3,6 @@ export * from './common.types';
3
3
  export * from './configuration.types';
4
4
  export * from './elements.types';
5
5
  export * from './integration.types';
6
+ export * from './layouts.types';
7
+ export * from './pages.types';
6
8
  export * from './path.types';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * List of available layouts:
2
+ * List of available layouts for Full Page Type:
3
3
  *
4
4
  LAYOUT_1
5
5
  +-------------------------+
@@ -66,9 +66,35 @@
66
66
  | |
67
67
  | |
68
68
  +-------------------------+
69
+ */
70
+ /**
71
+ * List of available layouts for Sidepanel Page Type:
72
+ *
73
+ LAYOUT_7
74
+ +-------------------------+
75
+ | | |
76
+ | | |
77
+ | LEFT | DISABLED |
78
+ | SIDE | PAGE |
79
+ | PANEL | |
80
+ | | |
81
+ | | |
82
+ +-------------------------+
69
83
 
84
+ LAYOUT_8
85
+ +-------------------------+
86
+ | | |
87
+ | | |
88
+ | DISABLED | RIGHT |
89
+ | PAGE | SIDE |
90
+ | | PANEL |
91
+ | | |
92
+ | | |
93
+ +-------------------------+
70
94
  */
71
- export type PageLayout = 'LAYOUT_1' | 'LAYOUT_2' | 'LAYOUT_3' | 'LAYOUT_4' | 'LAYOUT_5' | 'LAYOUT_6';
95
+ export type FullPageLayout = 'LAYOUT_1' | 'LAYOUT_2' | 'LAYOUT_3' | 'LAYOUT_4' | 'LAYOUT_5' | 'LAYOUT_6';
96
+ export type SidepanelPageLayout = 'LAYOUT_7' | 'LAYOUT_8';
97
+ export type PageLayout = FullPageLayout | SidepanelPageLayout;
72
98
  export interface PageLayoutConfig {
73
99
  styles?: string;
74
100
  }
@@ -0,0 +1 @@
1
+ export type PageType = 'FULL_PAGE' | 'SIDEPANEL';
@@ -1,13 +1,16 @@
1
1
  import { Type } from '@angular/core';
2
2
  import { UIDefinitionMetadata } from '@veloceapps/sdk/core';
3
+ import { CMSPreviewConfig } from '../components/preview';
3
4
  import { Entity } from '../engine/models/entity';
4
5
  import { ElementMetadata } from '../types';
5
6
  export declare class ElementsResolver {
6
7
  private uiDef;
8
+ private config?;
7
9
  elements: ElementMetadata[];
8
10
  private renderableElements;
9
11
  private sharedElements;
10
- constructor(uiDef: UIDefinitionMetadata, elements: ElementMetadata[], sharedElements?: ElementMetadata[]);
12
+ private uiDefMetadata;
13
+ constructor(uiDef: UIDefinitionMetadata, elements: ElementMetadata[], sharedElements?: ElementMetadata[], config?: CMSPreviewConfig | undefined);
11
14
  addElement(element: ElementMetadata): void;
12
15
  getNgComponents(): Record<string, Type<Entity>>;
13
16
  private transpile;
@@ -23,4 +26,5 @@ export declare class ElementsResolver {
23
26
  private resolveElement;
24
27
  private getElementStyles;
25
28
  private convertInlineStylesToCSS;
29
+ private getDefaultCustomizationState;
26
30
  }
@@ -0,0 +1,2 @@
1
+ import { ElementMetadata } from '../types';
2
+ export declare const getScriptClass: (metadata?: ElementMetadata) => object | undefined;
@@ -1,7 +1,7 @@
1
1
  import * as angularCore from '@angular/core';
2
2
  import * as angularForms from '@angular/forms';
3
3
  import { CatalogApiService, ConfigurationSettingsApiService, DeltaApiService, DocumentAttachmentApiService, DocumentTemplatesApiService, GuidedSellingApiService, PicklistsApiService, PriceApiService, QuoteApiService, RampApiService, SalesforceApiService, ShoppingCartSettingsApiService } from '@veloceapps/api';
4
- import { ToastService } from '@veloceapps/components';
4
+ import { ToastService, ToastType } from '@veloceapps/components';
5
5
  import { Operator, Predicate, parseJsonSafely } from '@veloceapps/core';
6
6
  import { ConfigurationService, ContextService, FlowConfigurationService, LineItemWorker, ProductImagesService, QuoteDraftService } from '@veloceapps/sdk/core';
7
7
  import lodash from 'lodash';
@@ -25,6 +25,7 @@ export declare const vendorMap: {
25
25
  };
26
26
  '@veloceapps/components': {
27
27
  ToastService: typeof ToastService;
28
+ ToastType: typeof ToastType;
28
29
  };
29
30
  '@veloceapps/api': {
30
31
  SalesforceApiService: typeof SalesforceApiService;
@@ -45,7 +46,7 @@ export declare const vendorMap: {
45
46
  findLineItemWithComparator: (lineItems: import("@veloceapps/core").LineItem[], comparator: (li: import("@veloceapps/core").LineItem) => boolean) => import("@veloceapps/core").LineItem | undefined;
46
47
  insertLineItem: (lineItem: import("@veloceapps/core").LineItem, parentId: string, toInsert: import("@veloceapps/core").LineItem) => import("@veloceapps/core").LineItem;
47
48
  removeLineItem: (lineItem: import("@veloceapps/core").LineItem, idToRemove: string) => import("@veloceapps/core").LineItem;
48
- replaceLineItem: (lineItem: import("@veloceapps/core").LineItem, replaceTo: import("@veloceapps/core").LineItem) => import("@veloceapps/core").LineItem;
49
+ replaceLineItem: (lineItem: import("@veloceapps/core").LineItem, replaceTo: import("@veloceapps/core").LineItem, skipCardinalityCalculation?: boolean | undefined) => import("@veloceapps/core").LineItem;
49
50
  calculateCardinalityVariables: (lineItems: import("@veloceapps/core").LineItem[]) => Map<string, number>;
50
51
  recalculateCardinalityVariables: (original: import("@veloceapps/core").LineItem, updated: import("@veloceapps/core").LineItem) => import("@veloceapps/core").LineItem;
51
52
  mapAttributes: (attributes: import("@veloceapps/core").Attribute[]) => lodash.Dictionary<any>;
@@ -57,7 +58,7 @@ export declare const vendorMap: {
57
58
  patchAttributes: (rootLineItem: import("@veloceapps/core").LineItem, id: string, attrs: {
58
59
  name: string;
59
60
  value: any;
60
- }[]) => import("@veloceapps/core").LineItem;
61
+ }[], skipCardinalityCalculation?: boolean | undefined) => import("@veloceapps/core").LineItem;
61
62
  getAttributeValue: (attributes: import("@veloceapps/core").Attribute[], name: string) => any;
62
63
  generateLineItem: (port: string, type: string, parentId: string, attributes?: {
63
64
  name: string;
@@ -68,6 +69,8 @@ export declare const vendorMap: {
68
69
  list: number;
69
70
  };
70
71
  generateModifiedAssetsMap: (lineItems: import("@veloceapps/core").LineItem[]) => Record<string, boolean>;
72
+ getOriginParent: (lineItems: import("@veloceapps/core").LineItem[], currentLineItem: import("@veloceapps/core").LineItem) => import("@veloceapps/core").LineItem | undefined;
73
+ isLineItemModified: <T_1 extends Pick<import("@veloceapps/core").LineItem, "actionCode" | "status">>(lineItem: T_1) => boolean;
71
74
  multiplyLineItems: (lineItem: import("@veloceapps/core").LineItem, qty: number, split: boolean) => import("@veloceapps/core").LineItem[];
72
75
  ConfigurationService: typeof ConfigurationService;
73
76
  QuoteDraftService: typeof QuoteDraftService;
@@ -99,9 +102,8 @@ export declare const vendorMap: {
99
102
  DEFAULT_PLUGINS_TOKEN: angularCore.InjectionToken<typeof import("./engine/models/plugin").Plugin[]>;
100
103
  UI_DEFINITION_METADATA: angularCore.InjectionToken<import("@veloceapps/sdk/core").UIDefinitionMetadata>;
101
104
  ELEMENT_METADATA: angularCore.InjectionToken<import("@veloceapps/sdk/cms").ElementMetadata>;
102
- SHARED_ELEMENT_METADATA: angularCore.InjectionToken<import("@veloceapps/sdk/cms").ElementMetadata>;
105
+ SHARED_ELEMENT_METADATA: angularCore.InjectionToken<import("@veloceapps/sdk/cms").ElementMetadata | undefined>;
103
106
  ELEMENT_CONFIG: angularCore.InjectionToken<import("@veloceapps/sdk/cms").ElementConfig>;
104
- VENDOR_MAP: angularCore.InjectionToken<lodash.Dictionary<any>>;
105
107
  };
106
108
  };
107
109
  export type VendorMap = typeof vendorMap;
@@ -1,5 +1,5 @@
1
1
  import { ConfigurationApiService } from '@veloceapps/api';
2
- import { Charge, CompiledPricePlan, ConfigurationContext, LineItem, RuntimeModel } from '@veloceapps/core';
2
+ import { Charge, CompiledPricePlan, ConfigurationContext, LineItem, PatchLineItemOptions, RuntimeModel } from '@veloceapps/core';
3
3
  import { Dictionary } from 'lodash';
4
4
  import { MessageService } from 'primeng/api';
5
5
  import { DialogService } from 'primeng/dynamicdialog';
@@ -24,8 +24,8 @@ export declare class ConfigurationService {
24
24
  hasUnsavedChanges: boolean;
25
25
  constructor(quoteDraftService: QuoteDraftService, runtimeService: ConfigurationRuntimeService, contextService: ContextService, configurationApiService: ConfigurationApiService, messageService: MessageService, dialogService: DialogService);
26
26
  reset(): void;
27
- patch$(lineItem: LineItem): Observable<LineItem>;
28
- patch(lineItem: LineItem): void;
27
+ patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem>;
28
+ patch(lineItem: LineItem, options?: PatchLineItemOptions): void;
29
29
  setConfigurableRamp(lineItem: LineItem): void;
30
30
  get(): Observable<LineItem | undefined>;
31
31
  getSnapshot(): LineItem | undefined;
@@ -3,6 +3,10 @@ export declare const UI_DEFINITION_VERSION = 3;
3
3
  export type UIExternalsType = Record<string, string | number | boolean>;
4
4
  export interface UIDefinitionProps {
5
5
  suppressToastMessages?: boolean;
6
+ /**
7
+ * When 'true', the Structure module in UI Builder is hidden
8
+ */
9
+ simplifiedEditorMode?: boolean;
6
10
  rootType?: string;
7
11
  pricingEnabled?: boolean;
8
12
  priceList?: string;
@@ -11,11 +15,12 @@ export interface UIDefinitionProps {
11
15
  export interface UIDefinitionMetadata {
12
16
  name: string;
13
17
  type: UIDefinitionType;
14
- properties?: UIDefinitionProps;
15
18
  primary: boolean;
19
+ version: number;
16
20
  createdTimestamp: number;
21
+ properties?: UIDefinitionProps;
17
22
  externals?: UIExternalsType;
18
- version: number;
23
+ customization?: any;
19
24
  }
20
25
  export interface UIDefinition extends UIDefinitionMetadata {
21
26
  /**
@@ -4,7 +4,7 @@ export declare const findLineItem: (id: string, lineItems: LineItem[]) => LineIt
4
4
  export declare const findLineItemWithComparator: (lineItems: LineItem[], comparator: (li: LineItem) => boolean) => LineItem | undefined;
5
5
  export declare const insertLineItem: (lineItem: LineItem, parentId: string, toInsert: LineItem) => LineItem;
6
6
  export declare const removeLineItem: (lineItem: LineItem, idToRemove: string) => LineItem;
7
- export declare const replaceLineItem: (lineItem: LineItem, replaceTo: LineItem) => LineItem;
7
+ export declare const replaceLineItem: (lineItem: LineItem, replaceTo: LineItem, skipCardinalityCalculation?: boolean) => LineItem;
8
8
  export declare const calculateCardinalityVariables: (lineItems: LineItem[]) => Map<string, number>;
9
9
  export declare const recalculateCardinalityVariables: (original: LineItem, updated: LineItem) => LineItem;
10
10
  export declare const mapAttributes: (attributes: Attribute[]) => Dictionary<any>;
@@ -16,7 +16,7 @@ export declare const upsertAttributes: (originalAttributes: Attribute[], attribu
16
16
  export declare const patchAttributes: (rootLineItem: LineItem, id: string, attrs: {
17
17
  name: string;
18
18
  value: any;
19
- }[]) => LineItem;
19
+ }[], skipCardinalityCalculation?: boolean) => LineItem;
20
20
  export declare const getAttributeValue: (attributes: Attribute[], name: string) => any;
21
21
  export declare const generateLineItem: (port: string, type: string, parentId: string, attributes?: {
22
22
  name: string;
@@ -27,4 +27,6 @@ export declare const getRecommendedPrices: (portDomain: PortDomain, type: string
27
27
  list: number;
28
28
  };
29
29
  export declare const generateModifiedAssetsMap: (lineItems: LineItem[]) => Record<string, boolean>;
30
+ export declare const getOriginParent: (lineItems: LineItem[], currentLineItem: LineItem) => LineItem | undefined;
31
+ export declare const isLineItemModified: <T extends Pick<LineItem, "actionCode" | "status">>(lineItem: T) => boolean;
30
32
  export declare const multiplyLineItems: (lineItem: LineItem, qty: number, split: boolean) => LineItem[];
@@ -4,9 +4,9 @@ export declare class LineItemWorker {
4
4
  constructor(src: LineItem);
5
5
  insert(parentId: string, toInsert: LineItem): LineItemWorker;
6
6
  remove(id: string): LineItemWorker;
7
- replace(toReplace: LineItem): LineItemWorker;
7
+ replace(toReplace: LineItem, skipCardinalityCalculation?: boolean): LineItemWorker;
8
8
  patchAttribute(attrs: {
9
9
  name: string;
10
10
  value: any;
11
- }[], id?: string): LineItemWorker;
11
+ }[], id?: string, skipCardinalityCalculation?: boolean): LineItemWorker;
12
12
  }
@@ -42,15 +42,24 @@ export const SwitchObjectAction = (payload) => ({
42
42
  export var CmsAction;
43
43
  (function (CmsAction) {
44
44
  CmsAction.GO_TO_PAGE = '[CMS]_GO_TO_PAGE';
45
+ CmsAction.UPDATE_CUSTOMIZATION = '[CMS]_UPDATE_CUSTOMIZATION';
45
46
  /**
46
47
  * Navigate UI definition to a specific page
47
48
  *
48
49
  * @param pageName name of the page
49
- * @returns void
50
50
  */
51
51
  CmsAction.GoToPage = (pageName) => ({
52
52
  type: CmsAction.GO_TO_PAGE,
53
53
  payload: { pageName },
54
54
  });
55
+ /**
56
+ * Update UI definition customization state
57
+ *
58
+ * @param pageName name of the page
59
+ */
60
+ CmsAction.UpdateCustomization = (value) => ({
61
+ type: CmsAction.UPDATE_CUSTOMIZATION,
62
+ payload: { value },
63
+ });
55
64
  })(CmsAction || (CmsAction = {}));
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFOLElBQVksVUFVWDtBQVZELFdBQVksVUFBVTtJQUNwQiwrREFBaUQsQ0FBQTtJQUNqRCx1REFBeUMsQ0FBQTtJQUN6QyxtRUFBcUQsQ0FBQTtJQUNyRCxtRkFBcUUsQ0FBQTtJQUNyRSxxREFBdUMsQ0FBQTtJQUN2Qyx1REFBeUMsQ0FBQTtJQUN6Qyx1REFBeUMsQ0FBQTtJQUN6QywyQ0FBNkIsQ0FBQTtJQUM3Qiw2Q0FBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBVlcsVUFBVSxLQUFWLFVBQVUsUUFVckI7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQ3JDLFVBQVUsRUFDVixTQUFTLEdBSVYsRUFBcUIsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0I7SUFDdkMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUMxRCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtDQUNwQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLEVBQUUsVUFBVSxDQUFDLHdCQUF3QjtDQUMxQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN2RSxJQUFJLEVBQUUsVUFBVSxDQUFDLGdDQUFnQztDQUNsRCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN4RCxJQUFJLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjtDQUNuQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN6RCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtDQUNwQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN6RCxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVk7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBc0IsRUFBRSxDQUFDLENBQUM7SUFDMUQsSUFBSSxFQUFFLFVBQVUsQ0FBQyxhQUFhO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBdUIsRUFBcUIsRUFBRSxDQUFDLENBQUM7SUFDakYsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0I7SUFDbkMsT0FBTztDQUNSLENBQUMsQ0FBQztBQUVILE1BQU0sS0FBVyxTQUFTLENBYXpCO0FBYkQsV0FBaUIsU0FBUztJQUNYLG9CQUFVLEdBQUcsa0JBQWtCLENBQUM7SUFFN0M7Ozs7O09BS0c7SUFDVSxrQkFBUSxHQUFHLENBQUMsUUFBZ0IsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxFQUFFLFVBQUEsVUFBVTtRQUNoQixPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUU7S0FDdEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxFQWJnQixTQUFTLEtBQVQsU0FBUyxRQWF6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2UgKi9cbmltcG9ydCB7IEludGVncmF0aW9uQWN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBlbnVtIEZsb3dBY3Rpb24ge1xuICBGTE9XX0NPTkZJR1VSRV9QUk9EVUNUID0gJ0ZMT1dfQ09ORklHVVJFX1BST0RVQ1QnLFxuICBGTE9XX05BVklHQVRFX0JBQ0sgPSAnRkxPV19OQVZJR0FURV9CQUNLJyxcbiAgRkxPV19OQVZJR0FURV9UT19DQVRBTE9HID0gJ0ZMT1dfTkFWSUdBVEVfVE9fQ0FUQUxPRycsXG4gIEZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OID0gJ0ZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OJyxcbiAgRkxPV19PUEVOX0RPQ19HRU4gPSAnRkxPV19PUEVOX0RPQ19HRU4nLFxuICBGTE9XX0NMT1NFX0RPQ19HRU4gPSAnRkxPV19DTE9TRV9ET0NfR0VOJyxcbiAgRkxPV19TV0lUQ0hfT0JKRUNUID0gJ0ZMT1dfU1dJVENIX09CSkVDVCcsXG4gIFJFTU9URV9BUFBMWSA9ICdSRU1PVEVfQVBQTFknLFxuICBSRU1PVEVfQ0FOQ0VMID0gJ1JFTU9URV9DQU5DRUwnLFxufVxuXG5leHBvcnQgY29uc3QgQ29uZmlndXJlUHJvZHVjdEFjdGlvbiA9ICh7XG4gIGxpbmVJdGVtSWQsXG4gIHByb2R1Y3RJZCxcbn06IHtcbiAgbGluZUl0ZW1JZD86IHN0cmluZztcbiAgcHJvZHVjdElkPzogc3RyaW5nO1xufSk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19DT05GSUdVUkVfUFJPRFVDVCxcbiAgcGF5bG9hZDogeyBsaW5lSXRlbUlkLCBwcm9kdWN0SWQgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgTmF2aWdhdGVCYWNrQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19OQVZJR0FURV9CQUNLLFxufSk7XG5cbmV4cG9ydCBjb25zdCBOYXZpZ2F0ZVRvQ2F0YWxvZ0FjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfVE9fQ0FUQUxPRyxcbn0pO1xuXG5leHBvcnQgY29uc3QgQXBwbHlQcm9kdWN0Q29uZmlndXJhdGlvbkFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfQVBQTFlfUFJPRFVDVF9DT05GSUdVUkFUSU9OLFxufSk7XG5cbmV4cG9ydCBjb25zdCBPcGVuRG9jR2VuQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19PUEVOX0RPQ19HRU4sXG59KTtcblxuZXhwb3J0IGNvbnN0IENsb3NlRG9jR2VuQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19DTE9TRV9ET0NfR0VOLFxufSk7XG5cbmV4cG9ydCBjb25zdCBSZW1vdGVBcHBseUFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLlJFTU9URV9BUFBMWSxcbn0pO1xuXG5leHBvcnQgY29uc3QgUmVtb3RlQ2FuY2VsQWN0aW9uID0gKCk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gIHR5cGU6IEZsb3dBY3Rpb24uUkVNT1RFX0NBTkNFTCxcbn0pO1xuXG5leHBvcnQgY29uc3QgU3dpdGNoT2JqZWN0QWN0aW9uID0gKHBheWxvYWQ6IHsgaWQ6IHN0cmluZyB9KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX1NXSVRDSF9PQkpFQ1QsXG4gIHBheWxvYWQsXG59KTtcblxuZXhwb3J0IG5hbWVzcGFjZSBDbXNBY3Rpb24ge1xuICBleHBvcnQgY29uc3QgR09fVE9fUEFHRSA9ICdbQ01TXV9HT19UT19QQUdFJztcblxuICAvKipcbiAgICogTmF2aWdhdGUgVUkgZGVmaW5pdGlvbiB0byBhIHNwZWNpZmljIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIHBhZ2VOYW1lIG5hbWUgb2YgdGhlIHBhZ2VcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IEdvVG9QYWdlID0gKHBhZ2VOYW1lOiBzdHJpbmcpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICAgIHR5cGU6IEdPX1RPX1BBR0UsXG4gICAgcGF5bG9hZDogeyBwYWdlTmFtZSB9LFxuICB9KTtcbn1cbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFOLElBQVksVUFVWDtBQVZELFdBQVksVUFBVTtJQUNwQiwrREFBaUQsQ0FBQTtJQUNqRCx1REFBeUMsQ0FBQTtJQUN6QyxtRUFBcUQsQ0FBQTtJQUNyRCxtRkFBcUUsQ0FBQTtJQUNyRSxxREFBdUMsQ0FBQTtJQUN2Qyx1REFBeUMsQ0FBQTtJQUN6Qyx1REFBeUMsQ0FBQTtJQUN6QywyQ0FBNkIsQ0FBQTtJQUM3Qiw2Q0FBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBVlcsVUFBVSxLQUFWLFVBQVUsUUFVckI7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQ3JDLFVBQVUsRUFDVixTQUFTLEdBSVYsRUFBcUIsRUFBRSxDQUFDLENBQUM7SUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxzQkFBc0I7SUFDdkMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUMxRCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtDQUNwQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLEVBQUUsVUFBVSxDQUFDLHdCQUF3QjtDQUMxQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN2RSxJQUFJLEVBQUUsVUFBVSxDQUFDLGdDQUFnQztDQUNsRCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN4RCxJQUFJLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjtDQUNuQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN6RCxJQUFJLEVBQUUsVUFBVSxDQUFDLGtCQUFrQjtDQUNwQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFzQixFQUFFLENBQUMsQ0FBQztJQUN6RCxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVk7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBc0IsRUFBRSxDQUFDLENBQUM7SUFDMUQsSUFBSSxFQUFFLFVBQVUsQ0FBQyxhQUFhO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBdUIsRUFBcUIsRUFBRSxDQUFDLENBQUM7SUFDakYsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0I7SUFDbkMsT0FBTztDQUNSLENBQUMsQ0FBQztBQUVILE1BQU0sS0FBVyxTQUFTLENBdUJ6QjtBQXZCRCxXQUFpQixTQUFTO0lBQ1gsb0JBQVUsR0FBRyxrQkFBa0IsQ0FBQztJQUNoQyw4QkFBb0IsR0FBRyw0QkFBNEIsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ1Usa0JBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksRUFBRSxVQUFBLFVBQVU7UUFDaEIsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFO0tBQ3RCLENBQUMsQ0FBQztJQUVIOzs7O09BSUc7SUFDVSw2QkFBbUIsR0FBRyxDQUFDLEtBQVUsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxFQUFFLFVBQUEsb0JBQW9CO1FBQzFCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNuQixDQUFDLENBQUM7QUFDTCxDQUFDLEVBdkJnQixTQUFTLEtBQVQsU0FBUyxRQXVCekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlICovXG5pbXBvcnQgeyBJbnRlZ3JhdGlvbkFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBGbG93QWN0aW9uIHtcbiAgRkxPV19DT05GSUdVUkVfUFJPRFVDVCA9ICdGTE9XX0NPTkZJR1VSRV9QUk9EVUNUJyxcbiAgRkxPV19OQVZJR0FURV9CQUNLID0gJ0ZMT1dfTkFWSUdBVEVfQkFDSycsXG4gIEZMT1dfTkFWSUdBVEVfVE9fQ0FUQUxPRyA9ICdGTE9XX05BVklHQVRFX1RPX0NBVEFMT0cnLFxuICBGTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTiA9ICdGTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTicsXG4gIEZMT1dfT1BFTl9ET0NfR0VOID0gJ0ZMT1dfT1BFTl9ET0NfR0VOJyxcbiAgRkxPV19DTE9TRV9ET0NfR0VOID0gJ0ZMT1dfQ0xPU0VfRE9DX0dFTicsXG4gIEZMT1dfU1dJVENIX09CSkVDVCA9ICdGTE9XX1NXSVRDSF9PQkpFQ1QnLFxuICBSRU1PVEVfQVBQTFkgPSAnUkVNT1RFX0FQUExZJyxcbiAgUkVNT1RFX0NBTkNFTCA9ICdSRU1PVEVfQ0FOQ0VMJyxcbn1cblxuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZVByb2R1Y3RBY3Rpb24gPSAoe1xuICBsaW5lSXRlbUlkLFxuICBwcm9kdWN0SWQsXG59OiB7XG4gIGxpbmVJdGVtSWQ/OiBzdHJpbmc7XG4gIHByb2R1Y3RJZD86IHN0cmluZztcbn0pOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfQ09ORklHVVJFX1BST0RVQ1QsXG4gIHBheWxvYWQ6IHsgbGluZUl0ZW1JZCwgcHJvZHVjdElkIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IE5hdmlnYXRlQmFja0FjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfTkFWSUdBVEVfQkFDSyxcbn0pO1xuXG5leHBvcnQgY29uc3QgTmF2aWdhdGVUb0NhdGFsb2dBY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX05BVklHQVRFX1RPX0NBVEFMT0csXG59KTtcblxuZXhwb3J0IGNvbnN0IEFwcGx5UHJvZHVjdENvbmZpZ3VyYXRpb25BY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgdHlwZTogRmxvd0FjdGlvbi5GTE9XX0FQUExZX1BST0RVQ1RfQ09ORklHVVJBVElPTixcbn0pO1xuXG5leHBvcnQgY29uc3QgT3BlbkRvY0dlbkFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfT1BFTl9ET0NfR0VOLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDbG9zZURvY0dlbkFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLkZMT1dfQ0xPU0VfRE9DX0dFTixcbn0pO1xuXG5leHBvcnQgY29uc3QgUmVtb3RlQXBwbHlBY3Rpb24gPSAoKTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgdHlwZTogRmxvd0FjdGlvbi5SRU1PVEVfQVBQTFksXG59KTtcblxuZXhwb3J0IGNvbnN0IFJlbW90ZUNhbmNlbEFjdGlvbiA9ICgpOiBJbnRlZ3JhdGlvbkFjdGlvbiA9PiAoe1xuICB0eXBlOiBGbG93QWN0aW9uLlJFTU9URV9DQU5DRUwsXG59KTtcblxuZXhwb3J0IGNvbnN0IFN3aXRjaE9iamVjdEFjdGlvbiA9IChwYXlsb2FkOiB7IGlkOiBzdHJpbmcgfSk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gIHR5cGU6IEZsb3dBY3Rpb24uRkxPV19TV0lUQ0hfT0JKRUNULFxuICBwYXlsb2FkLFxufSk7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ21zQWN0aW9uIHtcbiAgZXhwb3J0IGNvbnN0IEdPX1RPX1BBR0UgPSAnW0NNU11fR09fVE9fUEFHRSc7XG4gIGV4cG9ydCBjb25zdCBVUERBVEVfQ1VTVE9NSVpBVElPTiA9ICdbQ01TXV9VUERBVEVfQ1VTVE9NSVpBVElPTic7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIFVJIGRlZmluaXRpb24gdG8gYSBzcGVjaWZpYyBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgR29Ub1BhZ2UgPSAocGFnZU5hbWU6IHN0cmluZyk6IEludGVncmF0aW9uQWN0aW9uID0+ICh7XG4gICAgdHlwZTogR09fVE9fUEFHRSxcbiAgICBwYXlsb2FkOiB7IHBhZ2VOYW1lIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgVUkgZGVmaW5pdGlvbiBjdXN0b21pemF0aW9uIHN0YXRlXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlTmFtZSBuYW1lIG9mIHRoZSBwYWdlXG4gICAqL1xuICBleHBvcnQgY29uc3QgVXBkYXRlQ3VzdG9taXphdGlvbiA9ICh2YWx1ZTogYW55KTogSW50ZWdyYXRpb25BY3Rpb24gPT4gKHtcbiAgICB0eXBlOiBVUERBVEVfQ1VTVE9NSVpBVElPTixcbiAgICBwYXlsb2FkOiB7IHZhbHVlIH0sXG4gIH0pO1xufVxuIl19
@@ -1,4 +1,5 @@
1
1
  import { ElementComponent } from './components/element.component';
2
+ import { ElementHoverPlugin } from './plugins/element-hover.plugin';
2
3
  import { IOPlugin } from './plugins/io.plugin';
3
4
  import { RegionPlugin } from './plugins/region.plugin';
4
5
  import { ScriptPlugin } from './plugins/script.plugin';
@@ -6,10 +7,14 @@ import { ScriptPlugin } from './plugins/script.plugin';
6
7
  * ScriptPlugin must always be the last plugin in the list to make sure user code is running after all pre-initializers.
7
8
  */
8
9
  export const CONFIG = {
9
- CUSTOM: {
10
+ CUSTOMIZATION_PAGE: {
10
11
  component: ElementComponent,
11
12
  plugins: [IOPlugin, ScriptPlugin],
12
13
  },
14
+ CUSTOM: {
15
+ component: ElementComponent,
16
+ plugins: [IOPlugin, ElementHoverPlugin, ScriptPlugin],
17
+ },
13
18
  CONTAINER: {
14
19
  component: ElementComponent,
15
20
  defaultTemplate: '<element-children></element-children>',
@@ -30,11 +35,17 @@ export const CONFIG = {
30
35
  component: ElementComponent,
31
36
  defaultTemplate: '<element-children></element-children>',
32
37
  plugins: [IOPlugin, ScriptPlugin],
38
+ builder: {
39
+ suppressRemovable: true,
40
+ },
33
41
  },
34
42
  REGION: {
35
43
  component: ElementComponent,
36
44
  defaultTemplate: '<element-children></element-children>',
37
- plugins: [IOPlugin, ScriptPlugin, RegionPlugin],
45
+ plugins: [IOPlugin, RegionPlugin, ElementHoverPlugin, ScriptPlugin],
46
+ builder: {
47
+ suppressRemovable: true,
48
+ },
38
49
  },
39
50
  };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmVsZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2Ntcy5lbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd2RDs7R0FFRztBQUVILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBNkM7SUFDOUQsTUFBTSxFQUFFO1FBQ04sU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO0tBQ2xDO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixlQUFlLEVBQUUsdUNBQXVDO1FBQ3hELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUNqQyxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLGNBQWMsRUFBRSxJQUFJO0tBQ3JCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBQ2pDLGdCQUFnQixFQUFFLElBQUk7S0FDdkI7SUFDRCxJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLGVBQWUsRUFBRSx1Q0FBdUM7UUFDeEQsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztLQUNsQztJQUNELE1BQU0sRUFBRTtRQUNOLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsZUFBZSxFQUFFLHVDQUF1QztRQUN4RCxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztLQUNoRDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IElPUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zL2lvLnBsdWdpbic7XG5pbXBvcnQgeyBSZWdpb25QbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvcmVnaW9uLnBsdWdpbic7XG5pbXBvcnQgeyBTY3JpcHRQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvc2NyaXB0LnBsdWdpbic7XG5pbXBvcnQgeyBFTEVNRU5UX1RZUEUsIEVsZW1lbnRDb25maWcgfSBmcm9tICcuL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5cbi8qXG4gKiBTY3JpcHRQbHVnaW4gbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgcGx1Z2luIGluIHRoZSBsaXN0IHRvIG1ha2Ugc3VyZSB1c2VyIGNvZGUgaXMgcnVubmluZyBhZnRlciBhbGwgcHJlLWluaXRpYWxpemVycy5cbiAqL1xuXG5leHBvcnQgY29uc3QgQ09ORklHOiB7IFtrZXkgaW4gRUxFTUVOVF9UWVBFXTogRWxlbWVudENvbmZpZyB9ID0ge1xuICBDVVNUT006IHtcbiAgICBjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQsXG4gICAgcGx1Z2luczogW0lPUGx1Z2luLCBTY3JpcHRQbHVnaW5dLFxuICB9LFxuICBDT05UQUlORVI6IHtcbiAgICBjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQsXG4gICAgZGVmYXVsdFRlbXBsYXRlOiAnPGVsZW1lbnQtY2hpbGRyZW4+PC9lbGVtZW50LWNoaWxkcmVuPicsXG4gICAgcGx1Z2luczogW1NjcmlwdFBsdWdpbl0sXG4gIH0sXG4gIFNFUlZJQ0U6IHtcbiAgICBjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQsXG4gICAgcGx1Z2luczogW0lPUGx1Z2luLCBTY3JpcHRQbHVnaW5dLFxuICAgIHN1cHByZXNzVGVtcGxhdGU6IHRydWUsXG4gICAgc3VwcHJlc3NTdHlsZXM6IHRydWUsXG4gIH0sXG4gIFJFRkVSRU5DRToge1xuICAgIGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCxcbiAgICBwbHVnaW5zOiBbSU9QbHVnaW4sIFNjcmlwdFBsdWdpbl0sXG4gICAgc3VwcHJlc3NUZW1wbGF0ZTogdHJ1ZSxcbiAgfSxcbiAgUEFHRToge1xuICAgIGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCxcbiAgICBkZWZhdWx0VGVtcGxhdGU6ICc8ZWxlbWVudC1jaGlsZHJlbj48L2VsZW1lbnQtY2hpbGRyZW4+JyxcbiAgICBwbHVnaW5zOiBbSU9QbHVnaW4sIFNjcmlwdFBsdWdpbl0sXG4gIH0sXG4gIFJFR0lPTjoge1xuICAgIGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCxcbiAgICBkZWZhdWx0VGVtcGxhdGU6ICc8ZWxlbWVudC1jaGlsZHJlbj48L2VsZW1lbnQtY2hpbGRyZW4+JyxcbiAgICBwbHVnaW5zOiBbSU9QbHVnaW4sIFNjcmlwdFBsdWdpbiwgUmVnaW9uUGx1Z2luXSxcbiAgfSxcbn07XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmVsZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2Ntcy5lbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd2RDs7R0FFRztBQUVILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBNkM7SUFDOUQsa0JBQWtCLEVBQUU7UUFDbEIsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO0tBQ2xDO0lBQ0QsTUFBTSxFQUFFO1FBQ04sU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDO0tBQ3REO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixlQUFlLEVBQUUsdUNBQXVDO1FBQ3hELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUNqQyxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLGNBQWMsRUFBRSxJQUFJO0tBQ3JCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBQ2pDLGdCQUFnQixFQUFFLElBQUk7S0FDdkI7SUFDRCxJQUFJLEVBQUU7UUFDSixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLGVBQWUsRUFBRSx1Q0FBdUM7UUFDeEQsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUNqQyxPQUFPLEVBQUU7WUFDUCxpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCO0tBQ0Y7SUFDRCxNQUFNLEVBQUU7UUFDTixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLGVBQWUsRUFBRSx1Q0FBdUM7UUFDeEQsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxZQUFZLENBQUM7UUFDbkUsT0FBTyxFQUFFO1lBQ1AsaUJBQWlCLEVBQUUsSUFBSTtTQUN4QjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWxlbWVudEhvdmVyUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zL2VsZW1lbnQtaG92ZXIucGx1Z2luJztcbmltcG9ydCB7IElPUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zL2lvLnBsdWdpbic7XG5pbXBvcnQgeyBSZWdpb25QbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvcmVnaW9uLnBsdWdpbic7XG5pbXBvcnQgeyBTY3JpcHRQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvc2NyaXB0LnBsdWdpbic7XG5pbXBvcnQgeyBFTEVNRU5UX1RZUEUsIEVsZW1lbnRDb25maWcgfSBmcm9tICcuL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5cbi8qXG4gKiBTY3JpcHRQbHVnaW4gbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgcGx1Z2luIGluIHRoZSBsaXN0IHRvIG1ha2Ugc3VyZSB1c2VyIGNvZGUgaXMgcnVubmluZyBhZnRlciBhbGwgcHJlLWluaXRpYWxpemVycy5cbiAqL1xuXG5leHBvcnQgY29uc3QgQ09ORklHOiB7IFtrZXkgaW4gRUxFTUVOVF9UWVBFXTogRWxlbWVudENvbmZpZyB9ID0ge1xuICBDVVNUT01JWkFUSU9OX1BBR0U6IHtcbiAgICBjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQsXG4gICAgcGx1Z2luczogW0lPUGx1Z2luLCBTY3JpcHRQbHVnaW5dLFxuICB9LFxuICBDVVNUT006IHtcbiAgICBjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQsXG4gICAgcGx1Z2luczogW0lPUGx1Z2luLCBFbGVtZW50SG92ZXJQbHVnaW4sIFNjcmlwdFBsdWdpbl0sXG4gIH0sXG4gIENPTlRBSU5FUjoge1xuICAgIGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCxcbiAgICBkZWZhdWx0VGVtcGxhdGU6ICc8ZWxlbWVudC1jaGlsZHJlbj48L2VsZW1lbnQtY2hpbGRyZW4+JyxcbiAgICBwbHVnaW5zOiBbU2NyaXB0UGx1Z2luXSxcbiAgfSxcbiAgU0VSVklDRToge1xuICAgIGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCxcbiAgICBwbHVnaW5zOiBbSU9QbHVnaW4sIFNjcmlwdFBsdWdpbl0sXG4gICAgc3VwcHJlc3NUZW1wbGF0ZTogdHJ1ZSxcbiAgICBzdXBwcmVzc1N0eWxlczogdHJ1ZSxcbiAgfSxcbiAgUkVGRVJFTkNFOiB7XG4gICAgY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50LFxuICAgIHBsdWdpbnM6IFtJT1BsdWdpbiwgU2NyaXB0UGx1Z2luXSxcbiAgICBzdXBwcmVzc1RlbXBsYXRlOiB0cnVlLFxuICB9LFxuICBQQUdFOiB7XG4gICAgY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50LFxuICAgIGRlZmF1bHRUZW1wbGF0ZTogJzxlbGVtZW50LWNoaWxkcmVuPjwvZWxlbWVudC1jaGlsZHJlbj4nLFxuICAgIHBsdWdpbnM6IFtJT1BsdWdpbiwgU2NyaXB0UGx1Z2luXSxcbiAgICBidWlsZGVyOiB7XG4gICAgICBzdXBwcmVzc1JlbW92YWJsZTogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICBSRUdJT046IHtcbiAgICBjb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQsXG4gICAgZGVmYXVsdFRlbXBsYXRlOiAnPGVsZW1lbnQtY2hpbGRyZW4+PC9lbGVtZW50LWNoaWxkcmVuPicsXG4gICAgcGx1Z2luczogW0lPUGx1Z2luLCBSZWdpb25QbHVnaW4sIEVsZW1lbnRIb3ZlclBsdWdpbiwgU2NyaXB0UGx1Z2luXSxcbiAgICBidWlsZGVyOiB7XG4gICAgICBzdXBwcmVzc1JlbW92YWJsZTogdHJ1ZSxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
@@ -173,7 +173,45 @@ export const LAYOUT = {
173
173
  }
174
174
  }
175
175
  /* end of LAYOUT_6 styles */
176
+ `,
177
+ },
178
+ LAYOUT_7: {
179
+ styles: `
180
+ /* start of LAYOUT_7 styles */
181
+ :host {
182
+ height: 100%;
183
+ display: grid;
184
+ grid: "left" 1fr / 0.3fr;
185
+ gap: 10px;
186
+ padding: 10px;
187
+ justify-content: start;
188
+ }
189
+ :host ::ng-deep element-children > vl-cms-element-renderer {
190
+ &:nth-child(1) > vl-element {
191
+ grid-area: left;
192
+ }
193
+ }
194
+ /* end of LAYOUT_7 styles */
195
+ `,
196
+ },
197
+ LAYOUT_8: {
198
+ styles: `
199
+ /* start of LAYOUT_8 styles */
200
+ :host {
201
+ height: 100%;
202
+ display: grid;
203
+ grid: "right" 1fr / 0.3fr;
204
+ gap: 10px;
205
+ padding: 10px;
206
+ justify-content: end;
207
+ }
208
+ :host ::ng-deep element-children > vl-cms-element-renderer {
209
+ &:nth-child(1) > vl-element {
210
+ grid-area: right;
211
+ }
212
+ }
213
+ /* end of LAYOUT_8 styles */
176
214
  `,
177
215
  },
178
216
  };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmxheW91dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmxheW91dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUE4QztJQUMvRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0NYO0tBQ0U7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEJYO0tBQ0U7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQlg7S0FDRTtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdlTGF5b3V0LCBQYWdlTGF5b3V0Q29uZmlnIH0gZnJvbSAnLi90eXBlcy9sYXlvdXRzLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IExBWU9VVDogeyBba2V5IGluIFBhZ2VMYXlvdXRdOiBQYWdlTGF5b3V0Q29uZmlnIH0gPSB7XG4gIExBWU9VVF8xOiB7XG4gICAgc3R5bGVzOiBgXG4vKiBzdGFydCBvZiBMQVlPVVRfMSBzdHlsZXMgKi9cbjpob3N0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkOlxuICAgIFwiaGVhZGVyXCIgYXV0b1xuICAgIFwibWFpblwiIDFmclxuICAgIFwiZm9vdGVyXCIgYXV0b1xuICAgIC8gMWZyO1xuICBnYXA6IDEwcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbjpob3N0IDo6bmctZGVlcCBlbGVtZW50LWNoaWxkcmVuID4gdmwtY21zLWVsZW1lbnQtcmVuZGVyZXIge1xuICAmOm50aC1jaGlsZCgxKSA+IHZsLWVsZW1lbnQge1xuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgZ3JpZC1hcmVhOiBoZWFkZXI7XG4gIH1cblxuICAmOm50aC1jaGlsZCgyKSA+IHZsLWVsZW1lbnQge1xuICAgIGdyaWQtYXJlYTogbWFpbjtcbiAgfVxuXG4gICY6bnRoLWNoaWxkKDMpID4gdmwtZWxlbWVudCB7XG4gICAgbWluLWhlaWdodDogODBweDtcbiAgICBncmlkLWFyZWE6IGZvb3RlcjtcbiAgfVxufVxuLyogZW5kIG9mIExBWU9VVF8xIHN0eWxlcyAqL1xuYCxcbiAgfSxcbiAgTEFZT1VUXzI6IHtcbiAgICBzdHlsZXM6IGBcbi8qIHN0YXJ0IG9mIExBWU9VVF8yIHN0eWxlcyAqL1xuOmhvc3Qge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQ6XG4gICAgXCJoZWFkZXIgaGVhZGVyXCIgYXV0b1xuICAgIFwibGVmdCByaWdodFwiIDFmclxuICAgIFwiZm9vdGVyIGZvb3RlclwiIGF1dG9cbiAgICAvIDFmciAxZnI7XG4gIGdhcDogMTBweDtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuOmhvc3QgOjpuZy1kZWVwIGVsZW1lbnQtY2hpbGRyZW4gPiB2bC1jbXMtZWxlbWVudC1yZW5kZXJlciB7XG4gICY6bnRoLWNoaWxkKDEpID4gdmwtZWxlbWVudCB7XG4gICAgbWluLWhlaWdodDogODBweDtcbiAgICBncmlkLWFyZWE6IGhlYWRlcjtcbiAgfVxuXG4gICY6bnRoLWNoaWxkKDIpID4gdmwtZWxlbWVudCB7XG4gICAgZ3JpZC1hcmVhOiBsZWZ0O1xuICB9XG5cbiAgJjpudGgtY2hpbGQoMykgPiB2bC1lbGVtZW50IHtcbiAgICBncmlkLWFyZWE6IHJpZ2h0O1xuICB9XG5cbiAgJjpudGgtY2hpbGQoNCkgPiB2bC1lbGVtZW50IHtcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgIGdyaWQtYXJlYTogZm9vdGVyO1xuICB9XG59XG4vKiBlbmQgb2YgTEFZT1VUXzIgc3R5bGVzICovXG5gLFxuICB9LFxuICBMQVlPVVRfMzoge1xuICAgIHN0eWxlczogYFxuLyogc3RhcnQgb2YgTEFZT1VUXzMgc3R5bGVzICovXG46aG9zdCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZDpcbiAgICBcIm1haW5cIiAxZnJcbiAgICBcImZvb3RlclwiIGF1dG9cbiAgICAvIDFmcjtcbiAgZ2FwOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZWxlbWVudC1jaGlsZHJlbiA+IHZsLWNtcy1lbGVtZW50LXJlbmRlcmVyIHtcbiAgJjpudGgtY2hpbGQoMSkgPiB2bC1lbGVtZW50IHtcbiAgICBncmlkLWFyZWE6IG1haW47XG4gIH1cblxuICAmOm50aC1jaGlsZCgyKSA+IHZsLWVsZW1lbnQge1xuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgZ3JpZC1hcmVhOiBmb290ZXI7XG4gIH1cbn1cbi8qIGVuZCBvZiBMQVlPVVRfMyBzdHlsZXMgKi9cbmAsXG4gIH0sXG4gIExBWU9VVF80OiB7XG4gICAgc3R5bGVzOiBgXG4vKiBzdGFydCBvZiBMQVlPVVRfNCBzdHlsZXMgKi9cbjpob3N0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkOlxuICAgIFwibGVmdCByaWdodFwiIDFmclxuICAgIFwiZm9vdGVyIGZvb3RlclwiIGF1dG9cbiAgICAvIGF1dG8gYXV0bztcbiAgZ2FwOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZWxlbWVudC1jaGlsZHJlbiA+IHZsLWNtcy1lbGVtZW50LXJlbmRlcmVyIHtcbiAgJjpudGgtY2hpbGQoMSkgPiB2bC1lbGVtZW50IHtcbiAgICBncmlkLWFyZWE6IGxlZnQ7XG4gIH1cblxuICAmOm50aC1jaGlsZCgyKSA+IHZsLWVsZW1lbnQge1xuICAgIGdyaWQtYXJlYTogcmlnaHQ7XG4gIH1cblxuICAmOm50aC1jaGlsZCgzKSA+IHZsLWVsZW1lbnQge1xuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgZ3JpZC1hcmVhOiBmb290ZXI7XG4gIH1cbn1cbi8qIGVuZCBvZiBMQVlPVVRfNCBzdHlsZXMgKi9cbmAsXG4gIH0sXG4gIExBWU9VVF81OiB7XG4gICAgc3R5bGVzOiBgXG4vKiBzdGFydCBvZiBMQVlPVVRfNSBzdHlsZXMgKi9cbjpob3N0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkOlxuICAgIFwiaGVhZGVyXCIgYXV0b1xuICAgIFwibWFpblwiIDFmclxuICAgIC8gMWZyO1xuICBnYXA6IDEwcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbjpob3N0IDo6bmctZGVlcCBlbGVtZW50LWNoaWxkcmVuID4gdmwtY21zLWVsZW1lbnQtcmVuZGVyZXIge1xuICAmOm50aC1jaGlsZCgxKSA+IHZsLWVsZW1lbnQge1xuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgZ3JpZC1hcmVhOiBoZWFkZXI7XG4gIH1cblxuICAmOm50aC1jaGlsZCgyKSA+IHZsLWVsZW1lbnQge1xuICAgIGdyaWQtYXJlYTogbWFpbjtcbiAgfVxufVxuLyogZW5kIG9mIExBWU9VVF81IHN0eWxlcyAqL1xuYCxcbiAgfSxcbiAgTEFZT1VUXzY6IHtcbiAgICBzdHlsZXM6IGBcbi8qIHN0YXJ0IG9mIExBWU9VVF82IHN0eWxlcyAqL1xuOmhvc3Qge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQ6XG4gICAgXCJtYWluXCIgMWZyXG4gICAgLyAxZnI7XG4gIGdhcDogMTBweDtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuOmhvc3QgOjpuZy1kZWVwIGVsZW1lbnQtY2hpbGRyZW4gPiB2bC1jbXMtZWxlbWVudC1yZW5kZXJlciB7XG4gICY6bnRoLWNoaWxkKDEpID4gdmwtZWxlbWVudCB7XG4gICAgZ3JpZC1hcmVhOiBtYWluO1xuICB9XG59XG4vKiBlbmQgb2YgTEFZT1VUXzYgc3R5bGVzICovXG5gLFxuICB9LFxufTtcbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLmxheW91dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY21zLmxheW91dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUE4QztJQUMvRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0NYO0tBQ0U7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEJYO0tBQ0U7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQlg7S0FDRTtJQUNELFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRTs7Ozs7Ozs7Ozs7Ozs7OztDQWdCWDtLQUNFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O0NBZ0JYO0tBQ0U7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZUxheW91dCwgUGFnZUxheW91dENvbmZpZyB9IGZyb20gJy4vdHlwZXMvbGF5b3V0cy50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBMQVlPVVQ6IHsgW2tleSBpbiBQYWdlTGF5b3V0XTogUGFnZUxheW91dENvbmZpZyB9ID0ge1xuICBMQVlPVVRfMToge1xuICAgIHN0eWxlczogYFxuLyogc3RhcnQgb2YgTEFZT1VUXzEgc3R5bGVzICovXG46aG9zdCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZDpcbiAgICBcImhlYWRlclwiIGF1dG9cbiAgICBcIm1haW5cIiAxZnJcbiAgICBcImZvb3RlclwiIGF1dG9cbiAgICAvIDFmcjtcbiAgZ2FwOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZWxlbWVudC1jaGlsZHJlbiA+IHZsLWNtcy1lbGVtZW50LXJlbmRlcmVyIHtcbiAgJjpudGgtY2hpbGQoMSkgPiB2bC1lbGVtZW50IHtcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgIGdyaWQtYXJlYTogaGVhZGVyO1xuICB9XG5cbiAgJjpudGgtY2hpbGQoMikgPiB2bC1lbGVtZW50IHtcbiAgICBncmlkLWFyZWE6IG1haW47XG4gIH1cblxuICAmOm50aC1jaGlsZCgzKSA+IHZsLWVsZW1lbnQge1xuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgZ3JpZC1hcmVhOiBmb290ZXI7XG4gIH1cbn1cbi8qIGVuZCBvZiBMQVlPVVRfMSBzdHlsZXMgKi9cbmAsXG4gIH0sXG4gIExBWU9VVF8yOiB7XG4gICAgc3R5bGVzOiBgXG4vKiBzdGFydCBvZiBMQVlPVVRfMiBzdHlsZXMgKi9cbjpob3N0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkOlxuICAgIFwiaGVhZGVyIGhlYWRlclwiIGF1dG9cbiAgICBcImxlZnQgcmlnaHRcIiAxZnJcbiAgICBcImZvb3RlciBmb290ZXJcIiBhdXRvXG4gICAgLyAxZnIgMWZyO1xuICBnYXA6IDEwcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbjpob3N0IDo6bmctZGVlcCBlbGVtZW50LWNoaWxkcmVuID4gdmwtY21zLWVsZW1lbnQtcmVuZGVyZXIge1xuICAmOm50aC1jaGlsZCgxKSA+IHZsLWVsZW1lbnQge1xuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgZ3JpZC1hcmVhOiBoZWFkZXI7XG4gIH1cblxuICAmOm50aC1jaGlsZCgyKSA+IHZsLWVsZW1lbnQge1xuICAgIGdyaWQtYXJlYTogbGVmdDtcbiAgfVxuXG4gICY6bnRoLWNoaWxkKDMpID4gdmwtZWxlbWVudCB7XG4gICAgZ3JpZC1hcmVhOiByaWdodDtcbiAgfVxuXG4gICY6bnRoLWNoaWxkKDQpID4gdmwtZWxlbWVudCB7XG4gICAgbWluLWhlaWdodDogODBweDtcbiAgICBncmlkLWFyZWE6IGZvb3RlcjtcbiAgfVxufVxuLyogZW5kIG9mIExBWU9VVF8yIHN0eWxlcyAqL1xuYCxcbiAgfSxcbiAgTEFZT1VUXzM6IHtcbiAgICBzdHlsZXM6IGBcbi8qIHN0YXJ0IG9mIExBWU9VVF8zIHN0eWxlcyAqL1xuOmhvc3Qge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQ6XG4gICAgXCJtYWluXCIgMWZyXG4gICAgXCJmb290ZXJcIiBhdXRvXG4gICAgLyAxZnI7XG4gIGdhcDogMTBweDtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuOmhvc3QgOjpuZy1kZWVwIGVsZW1lbnQtY2hpbGRyZW4gPiB2bC1jbXMtZWxlbWVudC1yZW5kZXJlciB7XG4gICY6bnRoLWNoaWxkKDEpID4gdmwtZWxlbWVudCB7XG4gICAgZ3JpZC1hcmVhOiBtYWluO1xuICB9XG5cbiAgJjpudGgtY2hpbGQoMikgPiB2bC1lbGVtZW50IHtcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgIGdyaWQtYXJlYTogZm9vdGVyO1xuICB9XG59XG4vKiBlbmQgb2YgTEFZT1VUXzMgc3R5bGVzICovXG5gLFxuICB9LFxuICBMQVlPVVRfNDoge1xuICAgIHN0eWxlczogYFxuLyogc3RhcnQgb2YgTEFZT1VUXzQgc3R5bGVzICovXG46aG9zdCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZDpcbiAgICBcImxlZnQgcmlnaHRcIiAxZnJcbiAgICBcImZvb3RlciBmb290ZXJcIiBhdXRvXG4gICAgLyBhdXRvIGF1dG87XG4gIGdhcDogMTBweDtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuOmhvc3QgOjpuZy1kZWVwIGVsZW1lbnQtY2hpbGRyZW4gPiB2bC1jbXMtZWxlbWVudC1yZW5kZXJlciB7XG4gICY6bnRoLWNoaWxkKDEpID4gdmwtZWxlbWVudCB7XG4gICAgZ3JpZC1hcmVhOiBsZWZ0O1xuICB9XG5cbiAgJjpudGgtY2hpbGQoMikgPiB2bC1lbGVtZW50IHtcbiAgICBncmlkLWFyZWE6IHJpZ2h0O1xuICB9XG5cbiAgJjpudGgtY2hpbGQoMykgPiB2bC1lbGVtZW50IHtcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgIGdyaWQtYXJlYTogZm9vdGVyO1xuICB9XG59XG4vKiBlbmQgb2YgTEFZT1VUXzQgc3R5bGVzICovXG5gLFxuICB9LFxuICBMQVlPVVRfNToge1xuICAgIHN0eWxlczogYFxuLyogc3RhcnQgb2YgTEFZT1VUXzUgc3R5bGVzICovXG46aG9zdCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZDpcbiAgICBcImhlYWRlclwiIGF1dG9cbiAgICBcIm1haW5cIiAxZnJcbiAgICAvIDFmcjtcbiAgZ2FwOiAxMHB4O1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG46aG9zdCA6Om5nLWRlZXAgZWxlbWVudC1jaGlsZHJlbiA+IHZsLWNtcy1lbGVtZW50LXJlbmRlcmVyIHtcbiAgJjpudGgtY2hpbGQoMSkgPiB2bC1lbGVtZW50IHtcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgIGdyaWQtYXJlYTogaGVhZGVyO1xuICB9XG5cbiAgJjpudGgtY2hpbGQoMikgPiB2bC1lbGVtZW50IHtcbiAgICBncmlkLWFyZWE6IG1haW47XG4gIH1cbn1cbi8qIGVuZCBvZiBMQVlPVVRfNSBzdHlsZXMgKi9cbmAsXG4gIH0sXG4gIExBWU9VVF82OiB7XG4gICAgc3R5bGVzOiBgXG4vKiBzdGFydCBvZiBMQVlPVVRfNiBzdHlsZXMgKi9cbjpob3N0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkOlxuICAgIFwibWFpblwiIDFmclxuICAgIC8gMWZyO1xuICBnYXA6IDEwcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbjpob3N0IDo6bmctZGVlcCBlbGVtZW50LWNoaWxkcmVuID4gdmwtY21zLWVsZW1lbnQtcmVuZGVyZXIge1xuICAmOm50aC1jaGlsZCgxKSA+IHZsLWVsZW1lbnQge1xuICAgIGdyaWQtYXJlYTogbWFpbjtcbiAgfVxufVxuLyogZW5kIG9mIExBWU9VVF82IHN0eWxlcyAqL1xuYCxcbiAgfSxcbiAgTEFZT1VUXzc6IHtcbiAgICBzdHlsZXM6IGBcbiAgICAvKiBzdGFydCBvZiBMQVlPVVRfNyBzdHlsZXMgKi9cbiAgICA6aG9zdCB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgZ3JpZDogXCJsZWZ0XCIgMWZyIC8gMC4zZnI7XG4gICAgICBnYXA6IDEwcHg7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICB9XG4gICAgOmhvc3QgOjpuZy1kZWVwIGVsZW1lbnQtY2hpbGRyZW4gPiB2bC1jbXMtZWxlbWVudC1yZW5kZXJlciB7XG4gICAgICAmOm50aC1jaGlsZCgxKSA+IHZsLWVsZW1lbnQge1xuICAgICAgICBncmlkLWFyZWE6IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGVuZCBvZiBMQVlPVVRfNyBzdHlsZXMgKi9cbmAsXG4gIH0sXG4gIExBWU9VVF84OiB7XG4gICAgc3R5bGVzOiBgXG4gICAgLyogc3RhcnQgb2YgTEFZT1VUXzggc3R5bGVzICovXG4gICAgOmhvc3Qge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIGdyaWQ6IFwicmlnaHRcIiAxZnIgLyAwLjNmcjtcbiAgICAgIGdhcDogMTBweDtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcbiAgICB9XG4gICAgOmhvc3QgOjpuZy1kZWVwIGVsZW1lbnQtY2hpbGRyZW4gPiB2bC1jbXMtZWxlbWVudC1yZW5kZXJlciB7XG4gICAgICAmOm50aC1jaGlsZCgxKSA+IHZsLWVsZW1lbnQge1xuICAgICAgICBncmlkLWFyZWE6IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgICAvKiBlbmQgb2YgTEFZT1VUXzggc3R5bGVzICovXG5gLFxuICB9LFxufTtcbiJdfQ==