@pepperi-addons/ngx-composite-lib 0.4.2-beta.77 → 0.4.2-beta.78

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 (38) hide show
  1. package/esm2020/layout-builder/hide-in/hide-in.component.mjs +5 -5
  2. package/esm2020/layout-builder/hide-in/hide-in.module.mjs +10 -10
  3. package/esm2020/layout-builder/layout-builder-editor/layout-builder-editor.component.mjs +29 -0
  4. package/esm2020/layout-builder/layout-builder-editor/layout-builder-editor.module.mjs +45 -0
  5. package/esm2020/layout-builder/layout-builder-internal.service.mjs +1 -1
  6. package/esm2020/layout-builder/layout-builder.component.mjs +5 -5
  7. package/esm2020/layout-builder/layout-builder.model.mjs +1 -5
  8. package/esm2020/layout-builder/layout-builder.module.mjs +23 -12
  9. package/esm2020/layout-builder/main-editor/main-editor.component.mjs +130 -0
  10. package/esm2020/layout-builder/main-editor/main-editor.module.mjs +99 -0
  11. package/esm2020/layout-builder/public-api.mjs +3 -2
  12. package/esm2020/layout-builder/section/section.component.mjs +2 -2
  13. package/esm2020/layout-builder/section/section.module.mjs +5 -5
  14. package/esm2020/layout-builder/section-block/section-block.component.mjs +3 -3
  15. package/esm2020/layout-builder/section-editor/section-editor.component.mjs +4 -3
  16. package/esm2020/layout-builder/section-editor/section-editor.module.mjs +6 -2
  17. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +139 -95
  18. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
  19. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +137 -95
  20. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
  21. package/layout-builder/hide-in/hide-in.component.d.ts +3 -3
  22. package/layout-builder/hide-in/hide-in.module.d.ts +4 -4
  23. package/layout-builder/layout-builder-editor/layout-builder-editor.component.d.ts +15 -0
  24. package/layout-builder/layout-builder-editor/layout-builder-editor.module.d.ts +14 -0
  25. package/layout-builder/layout-builder-internal.service.d.ts +19 -3
  26. package/layout-builder/layout-builder.component.d.ts +3 -3
  27. package/layout-builder/layout-builder.model.d.ts +11 -21
  28. package/layout-builder/layout-builder.module.d.ts +3 -2
  29. package/layout-builder/{layout-editor/layout-editor.component.d.ts → main-editor/main-editor.component.d.ts} +5 -7
  30. package/layout-builder/main-editor/main-editor.module.d.ts +27 -0
  31. package/layout-builder/public-api.d.ts +2 -0
  32. package/layout-builder/section/section.module.d.ts +1 -1
  33. package/layout-builder/section-editor/section-editor.component.d.ts +1 -1
  34. package/layout-builder/section-editor/section-editor.module.d.ts +3 -2
  35. package/package.json +1 -1
  36. package/esm2020/layout-builder/layout-editor/layout-editor.component.mjs +0 -156
  37. package/esm2020/layout-builder/layout-editor/layout-editor.module.mjs +0 -95
  38. package/layout-builder/layout-editor/layout-editor.module.d.ts +0 -26
@@ -7,7 +7,7 @@ interface hideInItem {
7
7
  text: string;
8
8
  selected: boolean;
9
9
  }
10
- export declare class PepHideInComponent implements OnInit {
10
+ export declare class HideInComponent implements OnInit {
11
11
  private translate;
12
12
  hideIn: DataViewScreenSize[];
13
13
  hideInChange: EventEmitter<DataViewScreenSize[]>;
@@ -19,7 +19,7 @@ export declare class PepHideInComponent implements OnInit {
19
19
  onItemClick(event: any, menuItem: hideInItem): boolean;
20
20
  onMenuOpened(): void;
21
21
  onMenuClosed(): void;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<PepHideInComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<PepHideInComponent, "hide-in", never, { "hideIn": "hideIn"; }, { "hideInChange": "hideInChange"; "menuOpened": "menuOpened"; "menuClosed": "menuClosed"; }, never, never, false>;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<HideInComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<HideInComponent, "hide-in", never, { "hideIn": "hideIn"; }, { "hideInChange": "hideInChange"; "menuOpened": "menuOpened"; "menuClosed": "menuClosed"; }, never, never, false>;
24
24
  }
25
25
  export {};
@@ -11,10 +11,10 @@ import * as i8 from "@pepperi-addons/ngx-lib/button";
11
11
  import * as i9 from "@pepperi-addons/ngx-lib/checkbox";
12
12
  import * as i10 from "@pepperi-addons/ngx-lib/icon";
13
13
  import * as i11 from "@ngx-translate/core";
14
- export declare class PepHideInModule {
14
+ export declare class HideInModule {
15
15
  private pepIconRegistry;
16
16
  constructor(pepIconRegistry: PepIconRegistry);
17
- static ɵfac: i0.ɵɵFactoryDeclaration<PepHideInModule, never>;
18
- static ɵmod: i0.ɵɵNgModuleDeclaration<PepHideInModule, [typeof i1.PepHideInComponent], [typeof i2.CommonModule, typeof i3.MatButtonModule, typeof i4.MatMenuModule, typeof i5.MatIconModule, typeof i6.MatBadgeModule, typeof i7.MatCheckboxModule, typeof i8.PepButtonModule, typeof i9.PepCheckboxModule, typeof i10.PepIconModule, typeof i11.TranslateModule], [typeof i1.PepHideInComponent]>;
19
- static ɵinj: i0.ɵɵInjectorDeclaration<PepHideInModule>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<HideInModule, never>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<HideInModule, [typeof i1.HideInComponent], [typeof i2.CommonModule, typeof i3.MatButtonModule, typeof i4.MatMenuModule, typeof i5.MatIconModule, typeof i6.MatBadgeModule, typeof i7.MatCheckboxModule, typeof i8.PepButtonModule, typeof i9.PepCheckboxModule, typeof i10.PepIconModule, typeof i11.TranslateModule], [typeof i1.HideInComponent]>;
19
+ static ɵinj: i0.ɵɵInjectorDeclaration<HideInModule>;
20
20
  }
@@ -0,0 +1,15 @@
1
+ import { AfterContentInit, ElementRef, Renderer2 } from '@angular/core';
2
+ import { OnInit } from '@angular/core';
3
+ import { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';
4
+ import { IPepEditorTab } from '../layout-builder.model';
5
+ import * as i0 from "@angular/core";
6
+ export declare class PepLayoutBuilderEditorComponent extends BaseDestroyerDirective implements OnInit, AfterContentInit {
7
+ private hostElement;
8
+ private renderer;
9
+ editorTabs: IPepEditorTab[];
10
+ constructor(hostElement: ElementRef, renderer: Renderer2);
11
+ ngOnInit(): void;
12
+ ngAfterContentInit(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<PepLayoutBuilderEditorComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<PepLayoutBuilderEditorComponent, "pep-layout-builder-editor", never, { "editorTabs": "editorTabs"; }, {}, never, ["*", "*"], false>;
15
+ }
@@ -0,0 +1,14 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./layout-builder-editor.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@angular/common/http";
5
+ import * as i4 from "@angular/cdk/overlay";
6
+ import * as i5 from "@angular/material/tabs";
7
+ import * as i6 from "@pepperi-addons/ngx-lib";
8
+ import * as i7 from "@ngx-translate/core";
9
+ export declare class PepLayoutBuilderEditorModule {
10
+ constructor();
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<PepLayoutBuilderEditorModule, never>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PepLayoutBuilderEditorModule, [typeof i1.PepLayoutBuilderEditorComponent], [typeof i2.CommonModule, typeof i3.HttpClientModule, typeof i4.OverlayModule, typeof i5.MatTabsModule, typeof i6.PepNgxLibModule, typeof i7.TranslateModule], [typeof i1.PepLayoutBuilderEditorComponent]>;
13
+ static ɵinj: i0.ɵɵInjectorDeclaration<PepLayoutBuilderEditorModule>;
14
+ }
@@ -1,11 +1,27 @@
1
1
  import { CdkDragDrop, CdkDragEnd, CdkDragStart } from "@angular/cdk/drag-drop";
2
2
  import { TranslateService } from "@ngx-translate/core";
3
3
  import { PepScreenSizeType } from "@pepperi-addons/ngx-lib";
4
- import { DataViewScreenSize } from "@pepperi-addons/papi-sdk";
4
+ import { DataViewScreenSize, SplitType } from "@pepperi-addons/papi-sdk";
5
5
  import { Observable } from 'rxjs';
6
- import { LayoutEditorType, IEditor, IPepLayoutBlockAddedEvent, ILayoutEditor, IPepLayoutSection, IPepLayoutSectionColumn, IPepLayoutView, ILayoutSectionEditor, IPepLayoutBlockConfig } from "./layout-builder.model";
6
+ import { PepLayoutEditorType, IPepLayoutBlockAddedEvent, IPepLayoutSection, IPepLayoutSectionColumn, IPepLayoutView, IPepLayoutBlockConfig, PepLayoutSizeType, IEditor } from "./layout-builder.model";
7
7
  import { PepDialogService } from "@pepperi-addons/ngx-lib/dialog";
8
8
  import * as i0 from "@angular/core";
9
+ export interface ILayoutEditor {
10
+ maxWidth: number;
11
+ horizontalSpacing?: PepLayoutSizeType;
12
+ verticalSpacing?: PepLayoutSizeType;
13
+ sectionsGap?: PepLayoutSizeType;
14
+ columnsGap?: PepLayoutSizeType;
15
+ roundedCorners?: PepLayoutSizeType;
16
+ }
17
+ export interface ILayoutSectionEditor {
18
+ id: string;
19
+ sectionName: string;
20
+ split: SplitType | undefined;
21
+ height: number;
22
+ collapseOnTablet: boolean;
23
+ fillHeight: boolean;
24
+ }
9
25
  export declare class LayoutBuilderInternalService {
10
26
  protected translate: TranslateService;
11
27
  protected dialogService: PepDialogService;
@@ -77,7 +93,7 @@ export declare class LayoutBuilderInternalService {
77
93
  getScreenType(size: PepScreenSizeType): DataViewScreenSize;
78
94
  getSectionColumnKey(sectionKey?: string, index?: string): string;
79
95
  getIsHidden(hideIn: DataViewScreenSize[] | undefined, currentScreenType: DataViewScreenSize): boolean;
80
- navigateToEditor(editorType: LayoutEditorType, id: string, title?: string): boolean;
96
+ navigateToEditor(editorType: PepLayoutEditorType, id: string, title?: string): boolean;
81
97
  navigateBackFromEditor(): void;
82
98
  updateLayoutFromEditor(editorData: ILayoutEditor): void;
83
99
  updateSectionFromEditor(sectionData: ILayoutSectionEditor): void;
@@ -5,8 +5,8 @@ import { TranslateService } from '@ngx-translate/core';
5
5
  import { PepButton } from '@pepperi-addons/ngx-lib/button';
6
6
  import { IPepSideBarStateChangeEvent } from '@pepperi-addons/ngx-lib/side-bar';
7
7
  import { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';
8
- import { IEditor, ILayoutEditor, ILayoutSectionEditor, IPepLayoutBlockAddedEvent, IPepLayoutBlockConfig } from './layout-builder.model';
9
- import { LayoutBuilderInternalService } from './layout-builder-internal.service';
8
+ import { IPepLayoutBlockAddedEvent, IPepLayoutBlockConfig, IEditor } from './layout-builder.model';
9
+ import { ILayoutEditor, ILayoutSectionEditor, LayoutBuilderInternalService } from './layout-builder-internal.service';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class PepLayoutBuilderComponent extends BaseDestroyerDirective implements OnInit {
12
12
  private renderer;
@@ -46,5 +46,5 @@ export declare class PepLayoutBuilderComponent extends BaseDestroyerDirective im
46
46
  onSectionEditorObjectChange(sectionEditor: ILayoutSectionEditor): void;
47
47
  onNavigateBackFromEditor(): void;
48
48
  static ɵfac: i0.ɵɵFactoryDeclaration<PepLayoutBuilderComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<PepLayoutBuilderComponent, "pep-layout-builder", never, { "availableBlocksForDrag": "availableBlocksForDrag"; "blocksLayoutConfig": "blocksLayoutConfig"; "layoutEditorTitle": "layoutEditorTitle"; }, { "backClick": "backClick"; "editorChange": "editorChange"; "blockAdded": "blockAdded"; "blocksRemoved": "blocksRemoved"; }, never, ["[layout-editor-top-content]", "[layout-editor-bottom-content]", "[block-editor-content]", "[header-end-content]", "[layout-content]"], false>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<PepLayoutBuilderComponent, "pep-layout-builder", never, { "availableBlocksForDrag": "availableBlocksForDrag"; "blocksLayoutConfig": "blocksLayoutConfig"; "layoutEditorTitle": "layoutEditorTitle"; }, { "backClick": "backClick"; "editorChange": "editorChange"; "blockAdded": "blockAdded"; "blocksRemoved": "blocksRemoved"; }, never, ["[layout-editor-top-content]", "[block-editor-content]", "[header-end-content]", "[layout-content]"], false>;
50
50
  }
@@ -1,6 +1,10 @@
1
- import { PageBlockContainer, PageLayout, PageSection, PageSectionColumn, PageSizeType, SplitType } from "@pepperi-addons/papi-sdk";
1
+ import { PageBlockContainer, PageLayout, PageSection, PageSectionColumn, PageSizeType } from "@pepperi-addons/papi-sdk";
2
2
  import { IPepDraggableItem } from "@pepperi-addons/ngx-lib/draggable-items";
3
+ import { TemplateRef } from "@angular/core";
3
4
  export declare type PepLayoutSizeType = PageSizeType;
5
+ export interface IPepLayoutView {
6
+ Layout: IPepLayout;
7
+ }
4
8
  export interface IPepLayout extends PageLayout {
5
9
  Sections: IPepLayoutSection[];
6
10
  VerticalSpacing?: PepLayoutSizeType;
@@ -26,29 +30,15 @@ export interface IPepLayoutBlockAddedEvent {
26
30
  BlockKey: string;
27
31
  DraggableItem: IPepDraggableItem;
28
32
  }
29
- export interface IPepLayoutView {
30
- Layout: IPepLayout;
31
- }
32
- export declare type LayoutEditorType = 'layout-builder' | 'section' | 'block';
33
33
  export interface IEditor {
34
34
  id: string;
35
35
  title: string;
36
- type: LayoutEditorType;
36
+ type: PepLayoutEditorType;
37
37
  hostObject?: any;
38
38
  }
39
- export interface ILayoutEditor {
40
- maxWidth: number;
41
- horizontalSpacing?: PepLayoutSizeType;
42
- verticalSpacing?: PepLayoutSizeType;
43
- sectionsGap?: PepLayoutSizeType;
44
- columnsGap?: PepLayoutSizeType;
45
- roundedCorners?: PepLayoutSizeType;
46
- }
47
- export interface ILayoutSectionEditor {
48
- id: string;
49
- sectionName: string;
50
- split: SplitType | undefined;
51
- height: number;
52
- collapseOnTablet: boolean;
53
- fillHeight: boolean;
39
+ export declare type PepLayoutEditorType = 'layout-builder' | 'section' | 'block';
40
+ export interface IPepEditorTab {
41
+ key: string;
42
+ title: string;
43
+ templateRef: TemplateRef<any> | undefined;
54
44
  }
@@ -20,12 +20,13 @@ import * as i17 from "@pepperi-addons/ngx-lib/draggable-items";
20
20
  import * as i18 from "@pepperi-addons/ngx-composite-lib/group-buttons-settings";
21
21
  import * as i19 from "./hide-in/hide-in.module";
22
22
  import * as i20 from "./layout/layout.module";
23
- import * as i21 from "./layout-editor/layout-editor.module";
23
+ import * as i21 from "./main-editor/main-editor.module";
24
24
  import * as i22 from "./section-editor/section-editor.module";
25
+ import * as i23 from "./layout-builder-editor/layout-builder-editor.module";
25
26
  export declare class PepLayoutBuilderModule {
26
27
  private pepIconRegistry;
27
28
  constructor(pepIconRegistry: PepIconRegistry);
28
29
  static ɵfac: i0.ɵɵFactoryDeclaration<PepLayoutBuilderModule, never>;
29
- static ɵmod: i0.ɵɵNgModuleDeclaration<PepLayoutBuilderModule, [typeof i1.PepLayoutBuilderComponent], [typeof i2.CommonModule, typeof i3.DragDropModule, typeof i4.MatCommonModule, typeof i5.MatTabsModule, typeof i6.PepNgxLibModule, typeof i7.PepDialogModule, typeof i8.PepIconModule, typeof i9.PepPageLayoutModule, typeof i10.PepSideBarModule, typeof i11.PepButtonModule, typeof i12.PepCheckboxModule, typeof i13.PepTextboxModule, typeof i14.PepSelectModule, typeof i15.PepSizeDetectorModule, typeof i16.PepGroupButtonsModule, typeof i17.PepDraggableItemsModule, typeof i18.PepGroupButtonsSettingsModule, typeof i19.PepHideInModule, typeof i20.PepLayoutModule, typeof i21.PepLayoutEditorModule, typeof i22.SectionEditorModule], [typeof i1.PepLayoutBuilderComponent, typeof i20.PepLayoutModule]>;
30
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PepLayoutBuilderModule, [typeof i1.PepLayoutBuilderComponent], [typeof i2.CommonModule, typeof i3.DragDropModule, typeof i4.MatCommonModule, typeof i5.MatTabsModule, typeof i6.PepNgxLibModule, typeof i7.PepDialogModule, typeof i8.PepIconModule, typeof i9.PepPageLayoutModule, typeof i10.PepSideBarModule, typeof i11.PepButtonModule, typeof i12.PepCheckboxModule, typeof i13.PepTextboxModule, typeof i14.PepSelectModule, typeof i15.PepSizeDetectorModule, typeof i16.PepGroupButtonsModule, typeof i17.PepDraggableItemsModule, typeof i18.PepGroupButtonsSettingsModule, typeof i19.HideInModule, typeof i20.PepLayoutModule, typeof i21.MainEditorModule, typeof i22.SectionEditorModule, typeof i23.PepLayoutBuilderEditorModule], [typeof i1.PepLayoutBuilderComponent, typeof i20.PepLayoutModule, typeof i23.PepLayoutBuilderEditorModule]>;
30
31
  static ɵinj: i0.ɵɵInjectorDeclaration<PepLayoutBuilderModule>;
31
32
  }
@@ -3,15 +3,14 @@ import { AfterContentInit, ElementRef, Renderer2 } from '@angular/core';
3
3
  import { OnInit, EventEmitter } from '@angular/core';
4
4
  import { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';
5
5
  import { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';
6
- import { ILayoutEditor, PepLayoutSizeType } from '../layout-builder.model';
7
- import { LayoutBuilderInternalService } from '../layout-builder-internal.service';
6
+ import { PepLayoutSizeType } from '../layout-builder.model';
7
+ import { ILayoutEditor, LayoutBuilderInternalService } from '../layout-builder-internal.service';
8
8
  import * as i0 from "@angular/core";
9
- export declare class PepLayoutEditorComponent extends BaseDestroyerDirective implements OnInit, AfterContentInit {
9
+ export declare class MainEditorComponent extends BaseDestroyerDirective implements OnInit, AfterContentInit {
10
10
  private layoutBuilderInternalService;
11
11
  private hostElement;
12
12
  private renderer;
13
13
  _topContentRef: ElementRef;
14
- _bottomContentRef: ElementRef;
15
14
  availableBlocksContainer: ElementRef;
16
15
  availableBlocksForDrag: Array<IPepDraggableItem>;
17
16
  private _hostObject;
@@ -28,7 +27,6 @@ export declare class PepLayoutEditorComponent extends BaseDestroyerDirective imp
28
27
  protected availableBlocksContainerId: string;
29
28
  protected sectionsColumnsDropList: never[];
30
29
  protected showTopContent: boolean;
31
- protected showBottomContent: boolean;
32
30
  constructor(layoutBuilderInternalService: LayoutBuilderInternalService, hostElement: ElementRef, renderer: Renderer2);
33
31
  private updateHostObject;
34
32
  ngOnInit(): void;
@@ -43,6 +41,6 @@ export declare class PepLayoutEditorComponent extends BaseDestroyerDirective imp
43
41
  setRoundedCorners(key: string): void;
44
42
  onDragStart(event: CdkDragStart): void;
45
43
  onDragEnd(event: CdkDragEnd): void;
46
- static ɵfac: i0.ɵɵFactoryDeclaration<PepLayoutEditorComponent, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<PepLayoutEditorComponent, "pep-layout-editor", never, { "availableBlocksForDrag": "availableBlocksForDrag"; "hostObject": "hostObject"; }, { "hostObjectChange": "hostObjectChange"; }, never, ["[layout-editor-top-content]", "[layout-editor-bottom-content]"], false>;
44
+ static ɵfac: i0.ɵɵFactoryDeclaration<MainEditorComponent, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<MainEditorComponent, "main-editor", never, { "availableBlocksForDrag": "availableBlocksForDrag"; "hostObject": "hostObject"; }, { "hostObjectChange": "hostObjectChange"; }, never, ["[layout-editor-top-content]"], false>;
48
46
  }
@@ -0,0 +1,27 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./main-editor.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@angular/common/http";
5
+ import * as i4 from "@angular/cdk/drag-drop";
6
+ import * as i5 from "@angular/cdk/overlay";
7
+ import * as i6 from "@angular/material/tabs";
8
+ import * as i7 from "@angular/material/slider";
9
+ import * as i8 from "@pepperi-addons/ngx-lib";
10
+ import * as i9 from "@pepperi-addons/ngx-lib/select";
11
+ import * as i10 from "@pepperi-addons/ngx-lib/textbox";
12
+ import * as i11 from "@pepperi-addons/ngx-lib/button";
13
+ import * as i12 from "@pepperi-addons/ngx-lib/checkbox";
14
+ import * as i13 from "@pepperi-addons/ngx-lib/group-buttons";
15
+ import * as i14 from "@pepperi-addons/ngx-lib/color";
16
+ import * as i15 from "@pepperi-addons/ngx-lib/image";
17
+ import * as i16 from "@pepperi-addons/ngx-composite-lib/group-buttons-settings";
18
+ import * as i17 from "@pepperi-addons/ngx-lib/draggable-items";
19
+ import * as i18 from "@pepperi-addons/ngx-lib/dialog";
20
+ import * as i19 from "../layout-builder-editor/layout-builder-editor.module";
21
+ import * as i20 from "@ngx-translate/core";
22
+ export declare class MainEditorModule {
23
+ constructor();
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<MainEditorModule, never>;
25
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MainEditorModule, [typeof i1.MainEditorComponent], [typeof i2.CommonModule, typeof i3.HttpClientModule, typeof i4.DragDropModule, typeof i5.OverlayModule, typeof i6.MatTabsModule, typeof i7.MatSliderModule, typeof i8.PepNgxLibModule, typeof i9.PepSelectModule, typeof i10.PepTextboxModule, typeof i11.PepButtonModule, typeof i12.PepCheckboxModule, typeof i13.PepGroupButtonsModule, typeof i14.PepColorModule, typeof i15.PepImageModule, typeof i16.PepGroupButtonsSettingsModule, typeof i17.PepDraggableItemsModule, typeof i18.PepDialogModule, typeof i19.PepLayoutBuilderEditorModule, typeof i20.TranslateModule], [typeof i1.MainEditorComponent]>;
26
+ static ɵinj: i0.ɵɵInjectorDeclaration<MainEditorModule>;
27
+ }
@@ -2,5 +2,7 @@ export * from './layout-builder.module';
2
2
  export * from './layout-builder.model';
3
3
  export * from './layout-builder.service';
4
4
  export * from './layout-builder.component';
5
+ export * from './layout-builder-editor/layout-builder-editor.module';
6
+ export * from './layout-builder-editor/layout-builder-editor.component';
5
7
  export * from './layout/layout.module';
6
8
  export * from './layout/layout.component';
@@ -9,6 +9,6 @@ import * as i7 from "@pepperi-addons/ngx-lib/draggable-items";
9
9
  import * as i8 from "@ngx-translate/core";
10
10
  export declare class SectionModule {
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<SectionModule, [typeof i1.SectionComponent], [typeof i2.CommonModule, typeof i3.DragDropModule, typeof i4.PepButtonModule, typeof i5.SectionBlockModule, typeof i6.PepHideInModule, typeof i7.PepDraggableItemsModule, typeof i8.TranslateModule], [typeof i1.SectionComponent]>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SectionModule, [typeof i1.SectionComponent], [typeof i2.CommonModule, typeof i3.DragDropModule, typeof i4.PepButtonModule, typeof i5.SectionBlockModule, typeof i6.HideInModule, typeof i7.PepDraggableItemsModule, typeof i8.TranslateModule], [typeof i1.SectionComponent]>;
13
13
  static ɵinj: i0.ɵɵInjectorDeclaration<SectionModule>;
14
14
  }
@@ -3,7 +3,7 @@ import { TranslateService } from '@ngx-translate/core';
3
3
  import { IPepOption } from '@pepperi-addons/ngx-lib';
4
4
  import { SplitType } from '@pepperi-addons/papi-sdk';
5
5
  import { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';
6
- import { ILayoutSectionEditor } from '../layout-builder.model';
6
+ import { ILayoutSectionEditor } from '../layout-builder-internal.service';
7
7
  import * as i0 from "@angular/core";
8
8
  export interface ISplitOption {
9
9
  key: SplitType;
@@ -5,9 +5,10 @@ import * as i3 from "@pepperi-addons/ngx-lib/button";
5
5
  import * as i4 from "@pepperi-addons/ngx-lib/textbox";
6
6
  import * as i5 from "@pepperi-addons/ngx-lib/select";
7
7
  import * as i6 from "@pepperi-addons/ngx-lib/checkbox";
8
- import * as i7 from "@ngx-translate/core";
8
+ import * as i7 from "../layout-builder-editor/layout-builder-editor.module";
9
+ import * as i8 from "@ngx-translate/core";
9
10
  export declare class SectionEditorModule {
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionEditorModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<SectionEditorModule, [typeof i1.SectionEditorComponent], [typeof i2.CommonModule, typeof i3.PepButtonModule, typeof i4.PepTextboxModule, typeof i5.PepSelectModule, typeof i6.PepCheckboxModule, typeof i7.TranslateModule], [typeof i1.SectionEditorComponent]>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SectionEditorModule, [typeof i1.SectionEditorComponent], [typeof i2.CommonModule, typeof i3.PepButtonModule, typeof i4.PepTextboxModule, typeof i5.PepSelectModule, typeof i6.PepCheckboxModule, typeof i7.PepLayoutBuilderEditorModule, typeof i8.TranslateModule], [typeof i1.SectionEditorComponent]>;
12
13
  static ɵinj: i0.ɵɵInjectorDeclaration<SectionEditorModule>;
13
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pepperi-addons/ngx-composite-lib",
3
- "version": "0.4.2-beta.77",
3
+ "version": "0.4.2-beta.78",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": ">= 14.0.2",
6
6
  "@angular/cdk": ">= 14.0.2",
@@ -1,156 +0,0 @@
1
- import { coerceNumberProperty } from '@angular/cdk/coercion';
2
- import { ElementRef, ViewChild } from '@angular/core';
3
- import { Component, EventEmitter, Input, Output } from '@angular/core';
4
- import { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';
5
- import { LayoutBuilderInternalService } from '../layout-builder-internal.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../layout-builder-internal.service";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/material/tabs";
10
- import * as i4 from "@pepperi-addons/ngx-lib/textbox";
11
- import * as i5 from "@pepperi-addons/ngx-lib/button";
12
- import * as i6 from "@pepperi-addons/ngx-lib/checkbox";
13
- import * as i7 from "@pepperi-addons/ngx-composite-lib/group-buttons-settings";
14
- import * as i8 from "@pepperi-addons/ngx-lib/draggable-items";
15
- import * as i9 from "@ngx-translate/core";
16
- export class PepLayoutEditorComponent extends BaseDestroyerDirective {
17
- // onLoadFlowHostObject;
18
- // onChangeFlowHostObject;
19
- constructor(
20
- // public customizationService: PepCustomizationService,
21
- layoutBuilderInternalService, hostElement, renderer) {
22
- super();
23
- this.layoutBuilderInternalService = layoutBuilderInternalService;
24
- this.hostElement = hostElement;
25
- this.renderer = renderer;
26
- // @ViewChild('parametersDialogTemplate', { static: true, read: TemplateRef }) parametersDialogTemplate!: TemplateRef<any>;
27
- this.availableBlocksForDrag = [];
28
- this.hostObjectChange = new EventEmitter();
29
- this.horizontalSpacing = 'md';
30
- this.verticalSpacing = 'md';
31
- this.sectionsGap = 'md';
32
- this.columnsGap = 'md';
33
- this.roundedCorners = 'none';
34
- // protected sizesGroupButtons = Array<ISpacingOption>();
35
- this.availableBlocksContainerId = LayoutBuilderInternalService.AVAILABLE_BLOCKS_CONTAINER_ID;
36
- this.sectionsColumnsDropList = [];
37
- this.showTopContent = false;
38
- this.showBottomContent = false;
39
- this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-editor');
40
- }
41
- set hostObject(value) {
42
- this._hostObject = value;
43
- // this.onLoadFlow = value.onLoadFlow;
44
- // this.onChangeFlow = value.onChangeFlow;
45
- this.isFullWidth = !value.maxWidth || value.maxWidth === 0;
46
- this.maxWidth = value.maxWidth;
47
- this.horizontalSpacing = this._hostObject.horizontalSpacing || 'md';
48
- this.verticalSpacing = this._hostObject.verticalSpacing || 'md';
49
- this.sectionsGap = this._hostObject.sectionsGap || 'md';
50
- this.columnsGap = this._hostObject.columnsGap || 'md';
51
- this.roundedCorners = this._hostObject.roundedCorners || 'none';
52
- // this.prepareFlowHostObject('load');
53
- // this.prepareFlowHostObject('change');
54
- }
55
- get hostObject() {
56
- return this._hostObject;
57
- }
58
- // private prepareFlowHostObject(pageFlowType: 'load' | 'change') {
59
- // const fields = {};
60
- // if (pageFlowType === 'load') {
61
- // this.onLoadFlowHostObject = {};
62
- // this.onLoadFlowHostObject['runFlowData'] = this.onLoadFlow;
63
- // this.onLoadFlowHostObject['fields'] = fields;
64
- // } else if (pageFlowType === 'change') {
65
- // this.onChangeFlowHostObject = {};
66
- // this.onChangeFlowHostObject['runFlowData'] = this.onChangeFlow;
67
- // this.onChangeFlowHostObject['fields'] = fields;
68
- // }
69
- // }
70
- updateHostObject() {
71
- // this._hostObject.onLoadFlow = this.onLoadFlow;
72
- // this._hostObject.onChangeFlow = this.onChangeFlow;
73
- this._hostObject.maxWidth = this.isFullWidth ? 0 : this.maxWidth;
74
- this._hostObject.horizontalSpacing = this.horizontalSpacing;
75
- this._hostObject.verticalSpacing = this.verticalSpacing;
76
- this._hostObject.sectionsGap = this.sectionsGap;
77
- this._hostObject.columnsGap = this.columnsGap;
78
- this._hostObject.roundedCorners = this.roundedCorners === 'none' ? undefined : this.roundedCorners;
79
- // this.prepareFlowHostObject('load');
80
- // this.prepareFlowHostObject('change');
81
- this.hostObjectChange.emit(this.hostObject);
82
- }
83
- ngOnInit() {
84
- this.layoutBuilderInternalService.sectionsColumnsDropListChange$.subscribe((sectionsColumnsDropList) => {
85
- this.sectionsColumnsDropList = sectionsColumnsDropList;
86
- });
87
- }
88
- ngAfterContentInit() {
89
- if (this._topContentRef.nativeElement.children.length > 0) {
90
- this.showTopContent = true;
91
- }
92
- if (this._bottomContentRef.nativeElement.children.length > 0) {
93
- this.showBottomContent = true;
94
- }
95
- }
96
- onAddSectionClick(event) {
97
- this.layoutBuilderInternalService.addSection();
98
- }
99
- isFullWidthChange(isChecked) {
100
- this.isFullWidth = isChecked;
101
- this.maxWidth = isChecked ? 0 : 960;
102
- this.updateHostObject();
103
- }
104
- onMaxWidthChange(maxWidth) {
105
- this.maxWidth = coerceNumberProperty(maxWidth, this.maxWidth);
106
- this.updateHostObject();
107
- }
108
- setColumnsHorizntalGap(key) {
109
- this.horizontalSpacing = key;
110
- this.updateHostObject();
111
- }
112
- setColumnsVerticalGap(key) {
113
- this.verticalSpacing = key;
114
- this.updateHostObject();
115
- }
116
- setSectionGap(key) {
117
- this.sectionsGap = key;
118
- this.updateHostObject();
119
- }
120
- setColumnsGap(key) {
121
- this.columnsGap = key;
122
- this.updateHostObject();
123
- }
124
- setRoundedCorners(key) {
125
- this.roundedCorners = key;
126
- this.updateHostObject();
127
- }
128
- onDragStart(event) {
129
- this.layoutBuilderInternalService.onBlockDragStart(event);
130
- }
131
- onDragEnd(event) {
132
- this.layoutBuilderInternalService.onBlockDragEnd(event);
133
- }
134
- }
135
- PepLayoutEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepLayoutEditorComponent, deps: [{ token: i1.LayoutBuilderInternalService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
136
- PepLayoutEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepLayoutEditorComponent, selector: "pep-layout-editor", inputs: { availableBlocksForDrag: "availableBlocksForDrag", hostObject: "hostObject" }, outputs: { hostObjectChange: "hostObjectChange" }, viewQueries: [{ propertyName: "_topContentRef", first: true, predicate: ["topContentRef"], descendants: true, static: true }, { propertyName: "_bottomContentRef", first: true, predicate: ["bottomContentRef"], descendants: true, static: true }, { propertyName: "availableBlocksContainer", first: true, predicate: ["availableBlocksContainer"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabGroup class=\"layout-builder-editor-tabs\" animationDuration=\"0ms\">\n <mat-tab label=\"{{'LAYOUT_BUILDER.GENERAL' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div #topContentRef class=\"layout-builder-editor-group\">\n <ng-content select=\"[layout-editor-top-content]\"></ng-content>\n <div *ngIf=\"showTopContent\" class=\"editor-separator\"></div>\n </div>\n <div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.SECTIONS_TITLE' | translate}}</label>\n <pep-button class=\"add-section-button\" value=\"{{'LAYOUT_BUILDER.ADD_SECTION' | translate}}\" styleType=\"regular\" iconName=\"number_plus\" iconPosition=\"end\"\n (buttonClick)=\"onAddSectionClick($event)\"></pep-button>\n </div>\n <div class=\"editor-separator\"></div>\n <pep-draggable-items class=\"available-blocks\" [containerId]=\"availableBlocksContainerId\" [items]=\"availableBlocksForDrag\" [title]=\"'LAYOUT_BUILDER.BLOCKS_TITLE' | translate\"\n titleSizeType=\"xl\" titleType=\"with-bottom-border\" [showSearch]=\"true\" [dropAreaIds]=\"sectionsColumnsDropList\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n <div #bottomContentRef class=\"layout-builder-editor-group\">\n <div *ngIf=\"showBottomContent\" class=\"editor-separator\"></div>\n <ng-content select=\"[layout-editor-bottom-content]\"></ng-content>\n </div>\n </div>\n </mat-tab>\n <mat-tab label=\"{{'LAYOUT_BUILDER.DESIGN' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"isFullWidth\" [label]=\"'LAYOUT_BUILDER.FULL_WIDTH_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"isFullWidthChange($event)\"></pep-checkbox>\n <pep-textbox [label]=\"'LAYOUT_BUILDER.MAX_WIDTH_TITLE' | translate\" type=\"int\" [disabled]=\"isFullWidth\" [value]=\"maxWidth.toString()\" (valueChange)=\"onMaxWidthChange($event)\"></pep-textbox>\n </div>\n <div class=\"editor-separator\"></div>\n <!-- Spacing -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.SPACING_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SPACING_HORIZONTAL_TITLE' | translate\"\n [btnKey]=\"horizontalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsHorizntalGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.SPACING_VERTICAL_TITLE' | translate\"\n [btnKey]=\"verticalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsVerticalGap($event)\">\n </pep-group-buttons-settings>\n <div class=\"editor-separator\"></div>\n <!-- Gaps -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.GAPS_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SECTIONS_GAP_TITLE' | translate\"\n [btnKey]=\"sectionsGap.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setSectionGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.COLUMNS_GAP_TITLE' | translate\"\n [btnKey]=\"columnsGap.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsGap($event)\">\n </pep-group-buttons-settings>\n <!-- Rounded Corners -->\n <!--\n <div class=\"editor-separator\"></div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.ROUNDED_CORNERS_TITLE' | translate}}</label><br>\n <label class=\"body-xs ellipsis\">{{'LAYOUT_BUILDER.BORDER_RADIUS_TITLE' | translate}}</label>\n <pep-group-buttons [buttons]=\"sizesGroupButtons\" [selectedButtonKey]=\"roundedCorners\" buttonsClass=\"ms regular\" viewType=\"toggle\"\n (buttonClick)=\"setRoundedCorners($event)\"></pep-group-buttons> -->\n </div>\n </mat-tab>\n</mat-tab-group>\n\n\n\n", styles: [":host pep-draggable-items ::ng-deep .draggable-items-overflow{padding-bottom:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "minFractionDigits", "maxFractionDigits", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey", "regex", "regexError", "isInFocus"], outputs: ["valueChange", "keyup"] }, { kind: "component", type: i5.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i6.PepCheckboxComponent, selector: "pep-checkbox", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "additionalValue", "form", "isActive", "showTitle", "renderTitle", "layoutType", "visible"], outputs: ["valueChange"] }, { kind: "component", type: i7.GroupButtonsSettingsComponent, selector: "pep-group-buttons-settings", inputs: ["header", "subHeader", "groupType", "btnsArray", "excludeKeys", "useNone", "disabled", "dir", "titleSize", "bold", "btnKey"], outputs: ["btnkeyChange"] }, { kind: "component", type: i8.PepDraggableItemsComponent, selector: "pep-draggable-items", inputs: ["containerId", "showSearch", "title", "titleType", "titleSizeType", "itemPlaceholderType", "dropAreaIds", "items"], outputs: ["itemDragStarted", "itemDragEnded"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepLayoutEditorComponent, decorators: [{
138
- type: Component,
139
- args: [{ selector: 'pep-layout-editor', template: "<mat-tab-group #tabGroup class=\"layout-builder-editor-tabs\" animationDuration=\"0ms\">\n <mat-tab label=\"{{'LAYOUT_BUILDER.GENERAL' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div #topContentRef class=\"layout-builder-editor-group\">\n <ng-content select=\"[layout-editor-top-content]\"></ng-content>\n <div *ngIf=\"showTopContent\" class=\"editor-separator\"></div>\n </div>\n <div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.SECTIONS_TITLE' | translate}}</label>\n <pep-button class=\"add-section-button\" value=\"{{'LAYOUT_BUILDER.ADD_SECTION' | translate}}\" styleType=\"regular\" iconName=\"number_plus\" iconPosition=\"end\"\n (buttonClick)=\"onAddSectionClick($event)\"></pep-button>\n </div>\n <div class=\"editor-separator\"></div>\n <pep-draggable-items class=\"available-blocks\" [containerId]=\"availableBlocksContainerId\" [items]=\"availableBlocksForDrag\" [title]=\"'LAYOUT_BUILDER.BLOCKS_TITLE' | translate\"\n titleSizeType=\"xl\" titleType=\"with-bottom-border\" [showSearch]=\"true\" [dropAreaIds]=\"sectionsColumnsDropList\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n <div #bottomContentRef class=\"layout-builder-editor-group\">\n <div *ngIf=\"showBottomContent\" class=\"editor-separator\"></div>\n <ng-content select=\"[layout-editor-bottom-content]\"></ng-content>\n </div>\n </div>\n </mat-tab>\n <mat-tab label=\"{{'LAYOUT_BUILDER.DESIGN' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"isFullWidth\" [label]=\"'LAYOUT_BUILDER.FULL_WIDTH_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"isFullWidthChange($event)\"></pep-checkbox>\n <pep-textbox [label]=\"'LAYOUT_BUILDER.MAX_WIDTH_TITLE' | translate\" type=\"int\" [disabled]=\"isFullWidth\" [value]=\"maxWidth.toString()\" (valueChange)=\"onMaxWidthChange($event)\"></pep-textbox>\n </div>\n <div class=\"editor-separator\"></div>\n <!-- Spacing -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.SPACING_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SPACING_HORIZONTAL_TITLE' | translate\"\n [btnKey]=\"horizontalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsHorizntalGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.SPACING_VERTICAL_TITLE' | translate\"\n [btnKey]=\"verticalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsVerticalGap($event)\">\n </pep-group-buttons-settings>\n <div class=\"editor-separator\"></div>\n <!-- Gaps -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.GAPS_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SECTIONS_GAP_TITLE' | translate\"\n [btnKey]=\"sectionsGap.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setSectionGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.COLUMNS_GAP_TITLE' | translate\"\n [btnKey]=\"columnsGap.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsGap($event)\">\n </pep-group-buttons-settings>\n <!-- Rounded Corners -->\n <!--\n <div class=\"editor-separator\"></div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.ROUNDED_CORNERS_TITLE' | translate}}</label><br>\n <label class=\"body-xs ellipsis\">{{'LAYOUT_BUILDER.BORDER_RADIUS_TITLE' | translate}}</label>\n <pep-group-buttons [buttons]=\"sizesGroupButtons\" [selectedButtonKey]=\"roundedCorners\" buttonsClass=\"ms regular\" viewType=\"toggle\"\n (buttonClick)=\"setRoundedCorners($event)\"></pep-group-buttons> -->\n </div>\n </mat-tab>\n</mat-tab-group>\n\n\n\n", styles: [":host pep-draggable-items ::ng-deep .draggable-items-overflow{padding-bottom:0!important}\n"] }]
140
- }], ctorParameters: function () { return [{ type: i1.LayoutBuilderInternalService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { _topContentRef: [{
141
- type: ViewChild,
142
- args: ['topContentRef', { static: true }]
143
- }], _bottomContentRef: [{
144
- type: ViewChild,
145
- args: ['bottomContentRef', { static: true }]
146
- }], availableBlocksContainer: [{
147
- type: ViewChild,
148
- args: ['availableBlocksContainer', { read: ElementRef }]
149
- }], availableBlocksForDrag: [{
150
- type: Input
151
- }], hostObject: [{
152
- type: Input
153
- }], hostObjectChange: [{
154
- type: Output
155
- }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlci9sYXlvdXQtZWRpdG9yL2xheW91dC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvbGF5b3V0LWJ1aWxkZXIvbGF5b3V0LWVkaXRvci9sYXlvdXQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9BQU8sRUFBb0UsVUFBVSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBZ0UsTUFBTSx5QkFBeUIsQ0FBQztBQUcvSCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFPbEYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHNCQUFzQjtJQWlFaEUsd0JBQXdCO0lBQ3hCLDBCQUEwQjtJQUUxQjtJQUNJLHdEQUF3RDtJQUNoRCw0QkFBMEQsRUFDMUQsV0FBdUIsRUFDdkIsUUFBbUI7UUFFM0IsS0FBSyxFQUFFLENBQUM7UUFKQSxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO1FBQzFELGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFuRS9CLDJIQUEySDtRQUVsSCwyQkFBc0IsR0FBNkIsRUFBRSxDQUFDO1FBd0JyRCxxQkFBZ0IsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFvQmxGLHNCQUFpQixHQUFzQixJQUFJ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IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdTdGFydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VEZXN0cm95ZXJEaXJlY3RpdmUsIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLCBQZXBMYXlvdXRTZXJ2aWNlLCBQZXBTY3JlZW5TaXplVHlwZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IElQZXBEcmFnZ2FibGVJdGVtIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zJztcbmltcG9ydCB7IElFZGl0b3IsIElMYXlvdXRFZGl0b3IsIFBlcExheW91dFNpemVUeXBlIH0gZnJvbSAnLi4vbGF5b3V0LWJ1aWxkZXIubW9kZWwnO1xuaW1wb3J0IHsgTGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZSB9IGZyb20gJy4uL2xheW91dC1idWlsZGVyLWludGVybmFsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1sYXlvdXQtZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBMYXlvdXRFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGVzdHJveWVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBAVmlld0NoaWxkKCd0b3BDb250ZW50UmVmJywgeyBzdGF0aWM6IHRydWUgfSkgX3RvcENvbnRlbnRSZWYhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2JvdHRvbUNvbnRlbnRSZWYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBfYm90dG9tQ29udGVudFJlZiE6IEVsZW1lbnRSZWY7XG4gICAgXG4gICAgQFZpZXdDaGlsZCgnYXZhaWxhYmxlQmxvY2tzQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGF2YWlsYWJsZUJsb2Nrc0NvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gICAgLy8gQFZpZXdDaGlsZCgncGFyYW1ldGVyc0RpYWxvZ1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHBhcmFtZXRlcnNEaWFsb2dUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgICAgIFxuICAgIEBJbnB1dCgpIGF2YWlsYWJsZUJsb2Nrc0ZvckRyYWc6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBfaG9zdE9iamVjdCE6IElMYXlvdXRFZGl0b3I7XG4gICAgQElucHV0KClcbiAgICBzZXQgaG9zdE9iamVjdCh2YWx1ZTogSUxheW91dEVkaXRvcikge1xuICAgICAgICB0aGlzLl9ob3N0T2JqZWN0ID0gdmFsdWU7XG5cbiAgICAgICAgLy8gdGhpcy5vbkxvYWRGbG93ID0gdmFsdWUub25Mb2FkRmxvdztcbiAgICAgICAgLy8gdGhpcy5vbkNoYW5nZUZsb3cgPSB2YWx1ZS5vbkNoYW5nZUZsb3c7XG4gICAgICAgIHRoaXMuaXNGdWxsV2lkdGggPSAhdmFsdWUubWF4V2lkdGggfHwgdmFsdWUubWF4V2lkdGggPT09IDA7XG4gICAgICAgIHRoaXMubWF4V2lkdGggPSB2YWx1ZS5tYXhXaWR0aDtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsU3BhY2luZyA9IHRoaXMuX2hvc3RPYmplY3QuaG9yaXpvbnRhbFNwYWNpbmcgfHwgJ21kJztcbiAgICAgICAgdGhpcy52ZXJ0aWNhbFNwYWNpbmcgPSB0aGlzLl9ob3N0T2JqZWN0LnZlcnRpY2FsU3BhY2luZyB8fCAnbWQnO1xuICAgICAgICB0aGlzLnNlY3Rpb25zR2FwID0gdGhpcy5faG9zdE9iamVjdC5zZWN0aW9uc0dhcCB8fCAnbWQnO1xuICAgICAgICB0aGlzLmNvbHVtbnNHYXAgPSB0aGlzLl9ob3N0T2JqZWN0LmNvbHVtbnNHYXAgfHwgJ21kJztcbiAgICAgICAgdGhpcy5yb3VuZGVkQ29ybmVycyA9IHRoaXMuX2hvc3RPYmplY3Qucm91bmRlZENvcm5lcnMgfHwgJ25vbmUnO1xuXG4gICAgICAgIC8vIHRoaXMucHJlcGFyZUZsb3dIb3N0T2JqZWN0KCdsb2FkJyk7XG4gICAgICAgIC8vIHRoaXMucHJlcGFyZUZsb3dIb3N0T2JqZWN0KCdjaGFuZ2UnKTtcbiAgICB9XG4gICAgZ2V0IGhvc3RPYmplY3QoKTogSUxheW91dEVkaXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ob3N0T2JqZWN0O1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBob3N0T2JqZWN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8SUxheW91dEVkaXRvcj4gPSBuZXcgRXZlbnRFbWl0dGVyPElMYXlvdXRFZGl0b3I+KCk7XG4gICAgXG4gICAgLy8gcHJpdmF0ZSBfb25Mb2FkRmxvdzogYW55ID0ge307XG4gICAgLy8gc2V0IG9uTG9hZEZsb3codmFsdWU6IGFueSkge1xuICAgIC8vICAgICB0aGlzLl9vbkxvYWRGbG93ID0gdmFsdWU7XG4gICAgLy8gfVxuICAgIC8vIGdldCBvbkxvYWRGbG93KCk6IGFueSB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9vbkxvYWRGbG93O1xuICAgIC8vIH1cbiAgICBcbiAgICAvLyBwcml2YXRlIF9vbkNoYW5nZUZsb3c6IGFueSA9IHt9O1xuICAgIC8vIHNldCBvbkNoYW5nZUZsb3codmFsdWU6IGFueSkge1xuICAgIC8vICAgICB0aGlzLl9vbkNoYW5nZUZsb3cgPSB2YWx1ZTtcbiAgICAvLyB9XG4gICAgLy8gZ2V0IG9uQ2hhbmdlRmxvdygpOiBhbnkge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5fb25DaGFuZ2VGbG93O1xuICAgIC8vIH1cblxuICAgIHByb3RlY3RlZCBpc0Z1bGxXaWR0aCE6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIG1heFdpZHRoITogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBob3Jpem9udGFsU3BhY2luZzogUGVwTGF5b3V0U2l6ZVR5cGUgPSAnbWQnO1xuICAgIHByb3RlY3RlZCB2ZXJ0aWNhbFNwYWNpbmc6IFBlcExheW91dFNpemVUeXBlID0gJ21kJztcbiAgICBwcm90ZWN0ZWQgc2VjdGlvbnNHYXA6IFBlcExheW91dFNpemVUeXBlID0gJ21kJztcbiAgICBwcm90ZWN0ZWQgY29sdW1uc0dhcDogUGVwTGF5b3V0U2l6ZVR5cGUgPSAnbWQnO1xuICAgIHByb3RlY3RlZCByb3VuZGVkQ29ybmVyczogUGVwTGF5b3V0U2l6ZVR5cGUgPSAnbm9uZSc7XG5cbiAgICAvLyBwcm90ZWN0ZWQgc2l6ZXNHcm91cEJ1dHRvbnMgPSBBcnJheTxJU3BhY2luZ09wdGlvbj4oKTtcbiAgICBcbiAgICBwcm90ZWN0ZWQgYXZhaWxhYmxlQmxvY2tzQ29udGFpbmVySWQgPSBMYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLkFWQUlMQUJMRV9CTE9DS1NfQ09OVEFJTkVSX0lEO1xuICAgIHByb3RlY3RlZCBzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdCA9IFtdO1xuXG4gICAgcHJvdGVjdGVkIHNob3dUb3BDb250ZW50ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNob3dCb3R0b21Db250ZW50ID0gZmFsc2U7XG5cbiAgICAvLyBvbkxvYWRGbG93SG9zdE9iamVjdDtcbiAgICAvLyBvbkNoYW5nZUZsb3dIb3N0T2JqZWN0O1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvLyBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U6IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdwZXAtbGF5b3V0LWVkaXRvcicpO1xuICAgIH1cblxuICAgIC8vIHByaXZhdGUgcHJlcGFyZUZsb3dIb3N0T2JqZWN0KHBhZ2VGbG93VHlwZTogJ2xvYWQnIHwgJ2NoYW5nZScpIHtcbiAgICAvLyAgICAgY29uc3QgZmllbGRzID0ge307XG4gICAgICAgIFxuICAgIC8vICAgICBpZiAocGFnZUZsb3dUeXBlID09PSAnbG9hZCcpIHtcbiAgICAvLyAgICAgICAgIHRoaXMub25Mb2FkRmxvd0hvc3RPYmplY3QgPSB7fTtcbiAgICAvLyAgICAgICAgIHRoaXMub25Mb2FkRmxvd0hvc3RPYmplY3RbJ3J1bkZsb3dEYXRhJ10gPSB0aGlzLm9uTG9hZEZsb3c7XG4gICAgLy8gICAgICAgICB0aGlzLm9uTG9hZEZsb3dIb3N0T2JqZWN0WydmaWVsZHMnXSA9IGZpZWxkcztcbiAgICAvLyAgICAgfSBlbHNlIGlmIChwYWdlRmxvd1R5cGUgPT09ICdjaGFuZ2UnKSB7XG4gICAgLy8gICAgICAgICB0aGlzLm9uQ2hhbmdlRmxvd0hvc3RPYmplY3QgPSB7fTtcbiAgICAvLyAgICAgICAgIHRoaXMub25DaGFuZ2VGbG93SG9zdE9iamVjdFsncnVuRmxvd0RhdGEnXSA9IHRoaXMub25DaGFuZ2VGbG93O1xuICAgIC8vICAgICAgICAgdGhpcy5vbkNoYW5nZUZsb3dIb3N0T2JqZWN0WydmaWVsZHMnXSA9IGZpZWxkcztcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSG9zdE9iamVjdCgpIHtcbiAgICAgICAgLy8gdGhpcy5faG9zdE9iamVjdC5vbkxvYWRGbG93ID0gdGhpcy5vbkxvYWRGbG93O1xuICAgICAgICAvLyB0aGlzLl9ob3N0T2JqZWN0Lm9uQ2hhbmdlRmxvdyA9IHRoaXMub25DaGFuZ2VGbG93O1xuICAgICAgICB0aGlzLl9ob3N0T2JqZWN0Lm1heFdpZHRoID0gdGhpcy5pc0Z1bGxXaWR0aCA/IDAgOiB0aGlzLm1heFdpZHRoO1xuICAgICAgICB0aGlzLl9ob3N0T2JqZWN0Lmhvcml6b250YWxTcGFjaW5nID0gdGhpcy5ob3Jpem9udGFsU3BhY2luZztcbiAgICAgICAgdGhpcy5faG9zdE9iamVjdC52ZXJ0aWNhbFNwYWNpbmcgPSB0aGlzLnZlcnRpY2FsU3BhY2luZztcbiAgICAgICAgdGhpcy5faG9zdE9iamVjdC5zZWN0aW9uc0dhcCA9IHRoaXMuc2VjdGlvbnNHYXA7XG4gICAgICAgIHRoaXMuX2hvc3RPYmplY3QuY29sdW1uc0dhcCA9IHRoaXMuY29sdW1uc0dhcDtcbiAgICAgICAgdGhpcy5faG9zdE9iamVjdC5yb3VuZGVkQ29ybmVycyA9IHRoaXMucm91bmRlZENvcm5lcnMgPT09ICdub25lJyA/IHVuZGVmaW5lZCA6IHRoaXMucm91bmRlZENvcm5lcnM7XG5cbiAgICAgICAgLy8gdGhpcy5wcmVwYXJlRmxvd0hvc3RPYmplY3QoJ2xvYWQnKTtcbiAgICAgICAgLy8gdGhpcy5wcmVwYXJlRmxvd0hvc3RPYmplY3QoJ2NoYW5nZScpO1xuXG4gICAgICAgIHRoaXMuaG9zdE9iamVjdENoYW5nZS5lbWl0KHRoaXMuaG9zdE9iamVjdCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdENoYW5nZSQuc3Vic2NyaWJlKChzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0ID0gc2VjdGlvbnNDb2x1bW5zRHJvcExpc3Q7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3RvcENvbnRlbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb3BDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib3R0b21Db250ZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zaG93Qm90dG9tQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFkZFNlY3Rpb25DbGljayhldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5hZGRTZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaXNGdWxsV2lkdGhDaGFuZ2UoaXNDaGVja2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNGdWxsV2lkdGggPSBpc0NoZWNrZWQ7XG4gICAgICAgIHRoaXMubWF4V2lkdGggPSBpc0NoZWNrZWQgPyAwIDogOTYwO1xuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RPYmplY3QoKTtcbiAgICB9XG5cbiAgICBvbk1heFdpZHRoQ2hhbmdlKG1heFdpZHRoOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tYXhXaWR0aCA9IGNvZXJjZU51bWJlclByb3BlcnR5KG1heFdpZHRoLCB0aGlzLm1heFdpZHRoKTtcbiAgICAgICAgdGhpcy51cGRhdGVIb3N0T2JqZWN0KCk7XG4gICAgfVxuICAgIFxuICAgIHNldENvbHVtbnNIb3Jpem50YWxHYXAoa2V5OiBzdHJpbmcgKXtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsU3BhY2luZyA9IGtleSBhcyBQZXBMYXlvdXRTaXplVHlwZTsgXG4gICAgICAgIHRoaXMudXBkYXRlSG9zdE9iamVjdCgpO1xuICAgIH1cbiAgICBcbiAgICBzZXRDb2x1bW5zVmVydGljYWxHYXAoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy52ZXJ0aWNhbFNwYWNpbmcgPSBrZXkgYXMgUGVwTGF5b3V0U2l6ZVR5cGU7IFxuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RPYmplY3QoKTtcbiAgICB9XG4gICAgXG4gICAgc2V0U2VjdGlvbkdhcChrZXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlY3Rpb25zR2FwID0ga2V5IGFzIFBlcExheW91dFNpemVUeXBlOyBcbiAgICAgICAgdGhpcy51cGRhdGVIb3N0T2JqZWN0KCk7XG4gICAgfVxuXG4gICAgc2V0Q29sdW1uc0dhcChrZXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbHVtbnNHYXAgPSBrZXkgYXMgUGVwTGF5b3V0U2l6ZVR5cGU7IFxuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RPYmplY3QoKTtcbiAgICB9XG5cbiAgICBzZXRSb3VuZGVkQ29ybmVycyhrZXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJvdW5kZWRDb3JuZXJzID0ga2V5IGFzIFBlcExheW91dFNpemVUeXBlOyBcbiAgICAgICAgdGhpcy51cGRhdGVIb3N0T2JqZWN0KCk7XG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uub25CbG9ja0RyYWdTdGFydChldmVudCk7XG4gICAgfVxuXG4gICAgb25EcmFnRW5kKGV2ZW50OiBDZGtEcmFnRW5kKSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5vbkJsb2NrRHJhZ0VuZChldmVudCk7XG4gICAgfVxuXG4gICAgLy8gb25Mb2FkRmxvd0NoYW5nZShmbG93RGF0YTogYW55KSB7XG4gICAgLy8gICAgIHRoaXMub25Mb2FkRmxvdyA9IGZsb3dEYXRhO1xuICAgIC8vICAgICB0aGlzLnVwZGF0ZUhvc3RPYmplY3QoKTtcbiAgICAvLyB9XG5cbiAgICAvLyBvbkNoYW5nZUZsb3dDaGFuZ2UoZmxvd0RhdGE6IGFueSkge1xuICAgIC8vICAgICB0aGlzLm9uQ2hhbmdlRmxvdyA9IGZsb3dEYXRhO1xuICAgIC8vICAgICB0aGlzLnVwZGF0ZUhvc3RPYmplY3QoKTtcbiAgICAvLyB9XG59XG4iLCI8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgY2xhc3M9XCJsYXlvdXQtYnVpbGRlci1lZGl0b3ItdGFic1wiIGFuaW1hdGlvbkR1cmF0aW9uPVwiMG1zXCI+XG4gICAgPG1hdC10YWIgbGFiZWw9XCJ7eydMQVlPVVRfQlVJTERFUi5HRU5FUkFMJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtYnVpbGRlci1lZGl0b3ItdGFiXCI+XG4gICAgICAgICAgICA8ZGl2ICN0b3BDb250ZW50UmVmIGNsYXNzPVwibGF5b3V0LWJ1aWxkZXItZWRpdG9yLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xheW91dC1lZGl0b3ItdG9wLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQ29udGVudFwiIGNsYXNzPVwiZWRpdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImVkaXRvci10aXRsZVwiPnt7J0xBWU9VVF9CVUlMREVSLlNFQ1RJT05TX1RJVExFJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cGVwLWJ1dHRvbiBjbGFzcz1cImFkZC1zZWN0aW9uLWJ1dHRvblwiIHZhbHVlPVwie3snTEFZT1VUX0JVSUxERVIuQUREX1NFQ1RJT04nIHwgdHJhbnNsYXRlfX1cIiBzdHlsZVR5cGU9XCJyZWd1bGFyXCIgaWNvbk5hbWU9XCJudW1iZXJfcGx1c1wiIGljb25Qb3NpdGlvbj1cImVuZFwiXG4gICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkFkZFNlY3Rpb25DbGljaygkZXZlbnQpXCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgPHBlcC1kcmFnZ2FibGUtaXRlbXMgY2xhc3M9XCJhdmFpbGFibGUtYmxvY2tzXCIgW2NvbnRhaW5lcklkXT1cImF2YWlsYWJsZUJsb2Nrc0NvbnRhaW5lcklkXCIgW2l0ZW1zXT1cImF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdcIiBbdGl0bGVdPVwiJ0xBWU9VVF9CVUlMREVSLkJMT0NLU19USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHRpdGxlU2l6ZVR5cGU9XCJ4bFwiIHRpdGxlVHlwZT1cIndpdGgtYm90dG9tLWJvcmRlclwiIFtzaG93U2VhcmNoXT1cInRydWVcIiBbZHJvcEFyZWFJZHNdPVwic2VjdGlvbnNDb2x1bW5zRHJvcExpc3RcIiAoaXRlbURyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIiAoaXRlbURyYWdFbmRlZCk9XCJvbkRyYWdFbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9wZXAtZHJhZ2dhYmxlLWl0ZW1zPlxuICAgICAgICAgICAgPGRpdiAjYm90dG9tQ29udGVudFJlZiBjbGFzcz1cImxheW91dC1idWlsZGVyLWVkaXRvci1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Qm90dG9tQ29udGVudFwiIGNsYXNzPVwiZWRpdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsYXlvdXQtZWRpdG9yLWJvdHRvbS1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC10YWI+XG4gICAgPG1hdC10YWIgbGFiZWw9XCJ7eydMQVlPVVRfQlVJTERFUi5ERVNJR04nIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1idWlsZGVyLWVkaXRvci10YWJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHBlcC1jaGVja2JveCBjbGFzcz1cImNoZWNrYm94LWFzLXRpdGxlXCIgW3ZhbHVlXT1cImlzRnVsbFdpZHRoXCIgW2xhYmVsXT1cIidMQVlPVVRfQlVJTERFUi5GVUxMX1dJRFRIX1RJVExFJyB8IHRyYW5zbGF0ZVwiIFtyZW5kZXJUaXRsZV09XCJmYWxzZVwiICh2YWx1ZUNoYW5nZSk9XCJpc0Z1bGxXaWR0aENoYW5nZSgkZXZlbnQpXCI+PC9wZXAtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPHBlcC10ZXh0Ym94IFtsYWJlbF09XCInTEFZT1VUX0JVSUxERVIuTUFYX1dJRFRIX1RJVExFJyB8IHRyYW5zbGF0ZVwiIHR5cGU9XCJpbnRcIiBbZGlzYWJsZWRdPVwiaXNGdWxsV2lkdGhcIiBbdmFsdWVdPVwibWF4V2lkdGgudG9TdHJpbmcoKVwiICh2YWx1ZUNoYW5nZSk9XCJvbk1heFdpZHRoQ2hhbmdlKCRldmVudClcIj48L3BlcC10ZXh0Ym94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLXNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLSBTcGFjaW5nIC0tPlxuICAgICAgICAgICAgPHBlcC1ncm91cC1idXR0b25zLXNldHRpbmdzIFtncm91cFR5cGVdPVwiJ3NpemVzJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiJ0xBWU9VVF9CVUlMREVSLlNQQUNJTkdfVElUTEUnIHwgdHJhbnNsYXRlXCIgW3N1YkhlYWRlcl09XCInTEFZT1VUX0JVSUxERVIuU1BBQ0lOR19IT1JJWk9OVEFMX1RJVExFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J0bktleV09XCJob3Jpem9udGFsU3BhY2luZy50b0xvd2VyQ2FzZSgpXCIgW2V4Y2x1ZGVLZXlzXT1cIlsneHMnLCd4bCcsJzJ4bCddXCIgW3VzZU5vbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bmtleUNoYW5nZSk9XCJzZXRDb2x1bW5zSG9yaXpudGFsR2FwKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvcGVwLWdyb3VwLWJ1dHRvbnMtc2V0dGluZ3M+XG4gICAgICAgICAgICA8cGVwLWdyb3VwLWJ1dHRvbnMtc2V0dGluZ3MgW2dyb3VwVHlwZV09XCInc2l6ZXMnXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1YkhlYWRlcl09XCInTEFZT1VUX0JVSUxERVIuU1BBQ0lOR19WRVJUSUNBTF9USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidG5LZXldPVwidmVydGljYWxTcGFjaW5nLnRvTG93ZXJDYXNlKClcIiBbZXhjbHVkZUtleXNdPVwiWyd4cycsJ3hsJywnMnhsJ11cIiBbdXNlTm9uZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRua2V5Q2hhbmdlKT1cInNldENvbHVtbnNWZXJ0aWNhbEdhcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L3BlcC1ncm91cC1idXR0b25zLXNldHRpbmdzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRvci1zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gR2FwcyAtLT5cbiAgICAgICAgICAgIDxwZXAtZ3JvdXAtYnV0dG9ucy1zZXR0aW5ncyBbZ3JvdXBUeXBlXT1cIidzaXplcydcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyXT1cIidMQVlPVVRfQlVJTERFUi5HQVBTX1RJVExFJyB8IHRyYW5zbGF0ZVwiIFtzdWJIZWFkZXJdPVwiJ0xBWU9VVF9CVUlMREVSLlNFQ1RJT05TX0dBUF9USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidG5LZXldPVwic2VjdGlvbnNHYXAudG9Mb3dlckNhc2UoKVwiIFtleGNsdWRlS2V5c109XCJbJ3hzJywneGwnLCcyeGwnXVwiIFt1c2VOb25lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG5rZXlDaGFuZ2UpPVwic2V0U2VjdGlvbkdhcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L3BlcC1ncm91cC1idXR0b25zLXNldHRpbmdzPlxuICAgICAgICAgICAgPHBlcC1ncm91cC1idXR0b25zLXNldHRpbmdzIFtncm91cFR5cGVdPVwiJ3NpemVzJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWJIZWFkZXJdPVwiJ0xBWU9VVF9CVUlMREVSLkNPTFVNTlNfR0FQX1RJVExFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J0bktleV09XCJjb2x1bW5zR2FwLnRvTG93ZXJDYXNlKClcIiBbZXhjbHVkZUtleXNdPVwiWyd4cycsJ3hsJywnMnhsJ11cIiBbdXNlTm9uZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRua2V5Q2hhbmdlKT1cInNldENvbHVtbnNHYXAoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9wZXAtZ3JvdXAtYnV0dG9ucy1zZXR0aW5ncz5cbiAgICAgICAgICAgIDwhLS0gUm91bmRlZCBDb3JuZXJzIC0tPlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRvci1zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImVkaXRvci10aXRsZVwiPnt7J0xBWU9VVF9CVUlMREVSLlJPVU5ERURfQ09STkVSU19USVRMRScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYm9keS14cyBlbGxpcHNpc1wiPnt7J0xBWU9VVF9CVUlMREVSLkJPUkRFUl9SQURJVVNfVElUTEUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgPHBlcC1ncm91cC1idXR0b25zIFtidXR0b25zXT1cInNpemVzR3JvdXBCdXR0b25zXCIgW3NlbGVjdGVkQnV0dG9uS2V5XT1cInJvdW5kZWRDb3JuZXJzXCIgYnV0dG9uc0NsYXNzPVwibXMgcmVndWxhclwiIHZpZXdUeXBlPVwidG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic2V0Um91bmRlZENvcm5lcnMoJGV2ZW50KVwiPjwvcGVwLWdyb3VwLWJ1dHRvbnM+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG5cblxuXG4iXX0=