@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.
- package/esm2020/layout-builder/hide-in/hide-in.component.mjs +5 -5
- package/esm2020/layout-builder/hide-in/hide-in.module.mjs +10 -10
- package/esm2020/layout-builder/layout-builder-editor/layout-builder-editor.component.mjs +29 -0
- package/esm2020/layout-builder/layout-builder-editor/layout-builder-editor.module.mjs +45 -0
- package/esm2020/layout-builder/layout-builder-internal.service.mjs +1 -1
- package/esm2020/layout-builder/layout-builder.component.mjs +5 -5
- package/esm2020/layout-builder/layout-builder.model.mjs +1 -5
- package/esm2020/layout-builder/layout-builder.module.mjs +23 -12
- package/esm2020/layout-builder/main-editor/main-editor.component.mjs +130 -0
- package/esm2020/layout-builder/main-editor/main-editor.module.mjs +99 -0
- package/esm2020/layout-builder/public-api.mjs +3 -2
- package/esm2020/layout-builder/section/section.component.mjs +2 -2
- package/esm2020/layout-builder/section/section.module.mjs +5 -5
- package/esm2020/layout-builder/section-block/section-block.component.mjs +3 -3
- package/esm2020/layout-builder/section-editor/section-editor.component.mjs +4 -3
- package/esm2020/layout-builder/section-editor/section-editor.module.mjs +6 -2
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +139 -95
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +137 -95
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/layout-builder/hide-in/hide-in.component.d.ts +3 -3
- package/layout-builder/hide-in/hide-in.module.d.ts +4 -4
- package/layout-builder/layout-builder-editor/layout-builder-editor.component.d.ts +15 -0
- package/layout-builder/layout-builder-editor/layout-builder-editor.module.d.ts +14 -0
- package/layout-builder/layout-builder-internal.service.d.ts +19 -3
- package/layout-builder/layout-builder.component.d.ts +3 -3
- package/layout-builder/layout-builder.model.d.ts +11 -21
- package/layout-builder/layout-builder.module.d.ts +3 -2
- package/layout-builder/{layout-editor/layout-editor.component.d.ts → main-editor/main-editor.component.d.ts} +5 -7
- package/layout-builder/main-editor/main-editor.module.d.ts +27 -0
- package/layout-builder/public-api.d.ts +2 -0
- package/layout-builder/section/section.module.d.ts +1 -1
- package/layout-builder/section-editor/section-editor.component.d.ts +1 -1
- package/layout-builder/section-editor/section-editor.module.d.ts +3 -2
- package/package.json +1 -1
- package/esm2020/layout-builder/layout-editor/layout-editor.component.mjs +0 -156
- package/esm2020/layout-builder/layout-editor/layout-editor.module.mjs +0 -95
- 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
|
|
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<
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
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
|
|
14
|
+
export declare class HideInModule {
|
|
15
15
|
private pepIconRegistry;
|
|
16
16
|
constructor(pepIconRegistry: PepIconRegistry);
|
|
17
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
18
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<
|
|
19
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<
|
|
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 {
|
|
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:
|
|
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 {
|
|
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]", "[
|
|
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
|
|
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:
|
|
36
|
+
type: PepLayoutEditorType;
|
|
37
37
|
hostObject?: any;
|
|
38
38
|
}
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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 "./
|
|
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.
|
|
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 {
|
|
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
|
|
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<
|
|
47
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
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.
|
|
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.
|
|
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 "
|
|
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,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=
|