@pepperi-addons/ngx-composite-lib 0.4.2-beta.194 → 0.4.2-beta.197
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/color-settings/color-settings.component.mjs +1 -1
- package/esm2020/icon-picker/icon-picker.component.mjs +1 -1
- package/esm2020/layout-builder/main-editor/main-editor.component.mjs +1 -1
- package/esm2020/layout-builder/section-editor/section-editor.component.mjs +1 -1
- package/esm2020/layout-builder2/hide-in/hide-in.component.mjs +54 -0
- package/esm2020/layout-builder2/hide-in/hide-in.module.mjs +81 -0
- package/esm2020/layout-builder2/layout/layout.component.mjs +266 -0
- package/esm2020/layout-builder2/layout/layout.module.mjs +55 -0
- package/esm2020/layout-builder2/layout-builder-editor/layout-builder-editor.component.mjs +25 -0
- package/esm2020/layout-builder2/layout-builder-editor/layout-builder-editor.module.mjs +45 -0
- package/esm2020/layout-builder2/layout-builder-internal.service.mjs +639 -0
- package/esm2020/layout-builder2/layout-builder.component.mjs +357 -0
- package/esm2020/layout-builder2/layout-builder.model.mjs +2 -0
- package/esm2020/layout-builder2/layout-builder.module.mjs +145 -0
- package/esm2020/layout-builder2/layout-builder.service.mjs +49 -0
- package/esm2020/layout-builder2/layout-content.directive.mjs +13 -0
- package/esm2020/layout-builder2/main-editor/main-editor.component.mjs +170 -0
- package/esm2020/layout-builder2/main-editor/main-editor.module.mjs +99 -0
- package/esm2020/layout-builder2/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +5 -0
- package/esm2020/layout-builder2/public-api.mjs +13 -0
- package/esm2020/layout-builder2/section/section.component.mjs +382 -0
- package/esm2020/layout-builder2/section/section.module.mjs +44 -0
- package/esm2020/layout-builder2/section-block/section-block.component.mjs +172 -0
- package/esm2020/layout-builder2/section-block/section-block.module.mjs +34 -0
- package/esm2020/layout-builder2/section-editor/section-editor.component.mjs +204 -0
- package/esm2020/layout-builder2/section-editor/section-editor.module.mjs +48 -0
- package/esm2020/padding-settings/padding-settings.component.mjs +1 -1
- package/esm2020/shadow-settings/shadow-settings.component.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +2755 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +2717 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/layout-builder2/hide-in/hide-in.component.d.ts +25 -0
- package/layout-builder2/hide-in/hide-in.component.theme.scss +9 -0
- package/layout-builder2/hide-in/hide-in.module.d.ts +20 -0
- package/layout-builder2/index.d.ts +5 -0
- package/layout-builder2/layout/layout.component.d.ts +58 -0
- package/layout-builder2/layout/layout.module.d.ts +16 -0
- package/layout-builder2/layout-builder-editor/layout-builder-editor.component.d.ts +12 -0
- package/layout-builder2/layout-builder-editor/layout-builder-editor.module.d.ts +14 -0
- package/layout-builder2/layout-builder-internal.service.d.ts +118 -0
- package/layout-builder2/layout-builder.component.d.ts +87 -0
- package/layout-builder2/layout-builder.component.theme.scss +57 -0
- package/layout-builder2/layout-builder.model.d.ts +43 -0
- package/layout-builder2/layout-builder.module.d.ts +33 -0
- package/layout-builder2/layout-builder.service.d.ts +24 -0
- package/layout-builder2/layout-content.directive.d.ts +5 -0
- package/layout-builder2/main-editor/main-editor.component.d.ts +52 -0
- package/layout-builder2/main-editor/main-editor.module.d.ts +27 -0
- package/layout-builder2/public-api.d.ts +9 -0
- package/layout-builder2/section/section.component.d.ts +86 -0
- package/layout-builder2/section/section.component.theme.scss +115 -0
- package/layout-builder2/section/section.module.d.ts +14 -0
- package/layout-builder2/section-block/section-block.component.d.ts +48 -0
- package/layout-builder2/section-block/section-block.component.theme.scss +13 -0
- package/layout-builder2/section-block/section-block.module.d.ts +11 -0
- package/layout-builder2/section-editor/section-editor.component.d.ts +56 -0
- package/layout-builder2/section-editor/section-editor.module.d.ts +15 -0
- package/package.json +10 -2
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { ElementRef, Optional, ViewChild, Component, EventEmitter, Input, Output, HostListener } from '@angular/core';
|
|
2
|
+
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
3
|
+
import { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';
|
|
4
|
+
import { pepIconDeviceDesktop, pepIconDeviceMobile, pepIconDeviceTablet } from '@pepperi-addons/ngx-lib/icon';
|
|
5
|
+
import { PepSideBarComponent } from '@pepperi-addons/ngx-lib/side-bar';
|
|
6
|
+
import { LayoutBuilderInternalService } from './layout-builder-internal.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngx-translate/core";
|
|
9
|
+
import * as i2 from "./layout-builder-internal.service";
|
|
10
|
+
import * as i3 from "@pepperi-addons/ngx-lib";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@pepperi-addons/ngx-lib/page-layout";
|
|
13
|
+
import * as i6 from "@pepperi-addons/ngx-lib/side-bar";
|
|
14
|
+
import * as i7 from "@pepperi-addons/ngx-lib/button";
|
|
15
|
+
import * as i8 from "@pepperi-addons/ngx-lib/group-buttons";
|
|
16
|
+
import * as i9 from "./layout/layout.component";
|
|
17
|
+
import * as i10 from "./main-editor/main-editor.component";
|
|
18
|
+
import * as i11 from "./section-editor/section-editor.component";
|
|
19
|
+
// import { PepLayoutBuilderService } from './layout-builder.service';
|
|
20
|
+
export class PepLayoutBuilder2Component extends BaseDestroyerDirective {
|
|
21
|
+
constructor(renderer, hostElement, translate,
|
|
22
|
+
// private layoutBuilderService: PepLayoutBuilderService,
|
|
23
|
+
// private layoutBuilderInternalService: LayoutBuilderInternalService,
|
|
24
|
+
layoutBuilderInternalService, pepAddonService) {
|
|
25
|
+
super();
|
|
26
|
+
this.renderer = renderer;
|
|
27
|
+
this.hostElement = hostElement;
|
|
28
|
+
this.translate = translate;
|
|
29
|
+
this.pepAddonService = pepAddonService;
|
|
30
|
+
this._availableBlocksForDrag = [];
|
|
31
|
+
this._blocksLayoutConfig = {};
|
|
32
|
+
this._layoutEditorTitle = '';
|
|
33
|
+
this.lockScreen = false;
|
|
34
|
+
this.showSkeleton = false;
|
|
35
|
+
this.updateShellRouterData = true;
|
|
36
|
+
this.manageGlobalCursor = true;
|
|
37
|
+
this._layoutEditorTopElement = null;
|
|
38
|
+
this._headerEndElement = null;
|
|
39
|
+
this._blockEditorElement = null;
|
|
40
|
+
this._layoutContentElement = null;
|
|
41
|
+
this.blockTemplateRenderer = null;
|
|
42
|
+
this.blockTemplateUnmount = null;
|
|
43
|
+
this.layoutView = null;
|
|
44
|
+
this.backClick = new EventEmitter();
|
|
45
|
+
this.editorChange = new EventEmitter();
|
|
46
|
+
this.blockAdded = new EventEmitter();
|
|
47
|
+
this.blocksRemoved = new EventEmitter();
|
|
48
|
+
this.editableStateChange = new EventEmitter();
|
|
49
|
+
this.layoutViewChange = new EventEmitter();
|
|
50
|
+
this.screenTypeChange = new EventEmitter();
|
|
51
|
+
this.previewMode = false;
|
|
52
|
+
this.currentEditor = null;
|
|
53
|
+
this.viewportWidth = 0;
|
|
54
|
+
this.sectionsColumnsDropList = [];
|
|
55
|
+
this.layoutBuilderInternalService = layoutBuilderInternalService;
|
|
56
|
+
this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-builder');
|
|
57
|
+
}
|
|
58
|
+
set availableBlocksForDrag(value) {
|
|
59
|
+
this._availableBlocksForDrag = value;
|
|
60
|
+
}
|
|
61
|
+
get availableBlocksForDrag() {
|
|
62
|
+
return this._availableBlocksForDrag;
|
|
63
|
+
}
|
|
64
|
+
set blocksLayoutConfig(value) {
|
|
65
|
+
this._blocksLayoutConfig = value;
|
|
66
|
+
this.setBlocksConfig();
|
|
67
|
+
}
|
|
68
|
+
set layoutEditorTitle(value) {
|
|
69
|
+
this._layoutEditorTitle = value;
|
|
70
|
+
}
|
|
71
|
+
get layoutEditorTitle() {
|
|
72
|
+
return this._layoutEditorTitle;
|
|
73
|
+
}
|
|
74
|
+
set layoutEditorTopElement(value) {
|
|
75
|
+
this._layoutEditorTopElement = value;
|
|
76
|
+
}
|
|
77
|
+
get layoutEditorTopElement() {
|
|
78
|
+
return this._layoutEditorTopElement;
|
|
79
|
+
}
|
|
80
|
+
set headerEndElement(value) {
|
|
81
|
+
this._headerEndElement = value;
|
|
82
|
+
this.mountHeaderEndElement();
|
|
83
|
+
}
|
|
84
|
+
get headerEndElement() {
|
|
85
|
+
return this._headerEndElement;
|
|
86
|
+
}
|
|
87
|
+
set blockEditorElement(value) {
|
|
88
|
+
this._blockEditorElement = value;
|
|
89
|
+
this.mountBlockEditorElement();
|
|
90
|
+
}
|
|
91
|
+
get blockEditorElement() {
|
|
92
|
+
return this._blockEditorElement;
|
|
93
|
+
}
|
|
94
|
+
set layoutContentElement(value) {
|
|
95
|
+
this._layoutContentElement = value;
|
|
96
|
+
this.mountLayoutContentElement();
|
|
97
|
+
}
|
|
98
|
+
get layoutContentElement() {
|
|
99
|
+
return this._layoutContentElement;
|
|
100
|
+
}
|
|
101
|
+
mountElement(hostRef, element) {
|
|
102
|
+
const host = hostRef?.nativeElement;
|
|
103
|
+
if (!host) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
host.replaceChildren();
|
|
107
|
+
if (element) {
|
|
108
|
+
host.appendChild(element);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
mountHeaderEndElement() {
|
|
112
|
+
this.mountElement(this.headerEndHost, this._headerEndElement);
|
|
113
|
+
}
|
|
114
|
+
mountBlockEditorElement() {
|
|
115
|
+
this.mountElement(this.blockEditorHost, this._blockEditorElement);
|
|
116
|
+
}
|
|
117
|
+
mountLayoutContentElement() {
|
|
118
|
+
this.mountElement(this.layoutContentHost, this._layoutContentElement);
|
|
119
|
+
}
|
|
120
|
+
setScreenWidth(screenType) {
|
|
121
|
+
this.layoutBuilderInternalService?.setScreenWidth(screenType);
|
|
122
|
+
}
|
|
123
|
+
updateViewportWidth() {
|
|
124
|
+
if (this.layoutBuilderWrapper?.nativeElement) {
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
this.viewportWidth = this.layoutBuilderWrapper.nativeElement.clientWidth;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
subscribeEvents(layoutBuilderInternalService) {
|
|
131
|
+
if (layoutBuilderInternalService) {
|
|
132
|
+
/***********************************************************************************************/
|
|
133
|
+
/* Internal Events - for code usage
|
|
134
|
+
/***********************************************************************************************/
|
|
135
|
+
layoutBuilderInternalService.sectionsColumnsDropListChange$.pipe(this.getDestroyer()).subscribe((sectionsColumnsDropList) => {
|
|
136
|
+
this.sectionsColumnsDropList = sectionsColumnsDropList;
|
|
137
|
+
});
|
|
138
|
+
layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode) => {
|
|
139
|
+
this.previewMode = previewMode;
|
|
140
|
+
this.editableStateChange.emit(!this.previewMode);
|
|
141
|
+
});
|
|
142
|
+
// layoutBuilderInternalService.lockScreenChange$.pipe(this.getDestroyer()).subscribe((lockScreen: any) => {
|
|
143
|
+
// this.lockScreen = lockScreen;
|
|
144
|
+
// });
|
|
145
|
+
layoutBuilderInternalService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size) => {
|
|
146
|
+
const screenType = layoutBuilderInternalService.getScreenType(size);
|
|
147
|
+
this.selectedScreenType = screenType;
|
|
148
|
+
this.screenTypeChange.emit(screenType);
|
|
149
|
+
});
|
|
150
|
+
// For update the layout data
|
|
151
|
+
layoutBuilderInternalService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView) => {
|
|
152
|
+
if (layoutView) {
|
|
153
|
+
if (this.layoutBuilderWrapper?.nativeElement) {
|
|
154
|
+
const maxWidth = coerceNumberProperty(layoutView.Layout.MaxWidth, 0);
|
|
155
|
+
const maxWidthToSet = maxWidth === 0 ? '100%' : `${maxWidth}px`;
|
|
156
|
+
this.renderer.setStyle(this.layoutBuilderWrapper.nativeElement, 'max-width', maxWidthToSet);
|
|
157
|
+
this.updateViewportWidth();
|
|
158
|
+
}
|
|
159
|
+
this.layoutViewChange.emit(layoutView);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
layoutBuilderInternalService.screenWidthChange$.pipe(this.getDestroyer()).subscribe((width) => {
|
|
163
|
+
if (this.layoutBuilderWrapper?.nativeElement) {
|
|
164
|
+
this.renderer.setStyle(this.layoutBuilderWrapper.nativeElement, 'width', width);
|
|
165
|
+
this.updateViewportWidth();
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
// Get the sections id's into sectionsColumnsDropList for the drag & drop.
|
|
169
|
+
layoutBuilderInternalService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections) => {
|
|
170
|
+
// Concat all results into one array.
|
|
171
|
+
const sectionsColumnsDropList = [].concat(...sections.map((section) => {
|
|
172
|
+
return section.Columns.map((column, index) => layoutBuilderInternalService.getSectionColumnKey(section.Key, index.toString()));
|
|
173
|
+
}));
|
|
174
|
+
layoutBuilderInternalService.setSectionsColumnsDropListChange(sectionsColumnsDropList);
|
|
175
|
+
});
|
|
176
|
+
/***********************************************************************************************/
|
|
177
|
+
/* External Events - for raise to the client
|
|
178
|
+
/***********************************************************************************************/
|
|
179
|
+
// For update editor.
|
|
180
|
+
layoutBuilderInternalService.editorChange$.pipe(this.getDestroyer()).subscribe((editor) => {
|
|
181
|
+
if (editor) {
|
|
182
|
+
// Init the side bar scroll top to 0.
|
|
183
|
+
if (this.sideBarComponent) {
|
|
184
|
+
const sideLayout = this.sideBarComponent.nativeElement.querySelector('.side-layout');
|
|
185
|
+
sideLayout?.scrollTo(0, 0);
|
|
186
|
+
}
|
|
187
|
+
this.currentEditor = editor;
|
|
188
|
+
// Raise event to let the user set the block editor in the UI.
|
|
189
|
+
this.editorChange.emit(editor);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
layoutBuilderInternalService.blockAddedEventSubject$.pipe(this.getDestroyer()).subscribe((event) => {
|
|
193
|
+
if (event) {
|
|
194
|
+
this.blockAdded.emit(event);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
layoutBuilderInternalService.blocksRemovedEventSubject$.pipe(this.getDestroyer()).subscribe((event) => {
|
|
198
|
+
if (event?.length > 0) {
|
|
199
|
+
this.blocksRemoved.emit(event);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
setBlocksConfig() {
|
|
205
|
+
if (this.layoutBuilderInternalService) {
|
|
206
|
+
this.layoutBuilderInternalService.setBlocksConfig(this._blocksLayoutConfig);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
ngAfterViewInit() {
|
|
210
|
+
this.mountHeaderEndElement();
|
|
211
|
+
this.mountBlockEditorElement();
|
|
212
|
+
this.mountLayoutContentElement();
|
|
213
|
+
}
|
|
214
|
+
ngOnChanges(changes) {
|
|
215
|
+
if (changes['manageGlobalCursor']) {
|
|
216
|
+
this.layoutBuilderInternalService?.setManageGlobalCursor(this.manageGlobalCursor);
|
|
217
|
+
}
|
|
218
|
+
if (changes['layoutView']) {
|
|
219
|
+
const layoutView = changes['layoutView'].currentValue;
|
|
220
|
+
if (layoutView) {
|
|
221
|
+
this.layoutBuilderInternalService?.loadLayoutBuilder(layoutView);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (changes['updateShellRouterData']) {
|
|
225
|
+
if (this.updateShellRouterData) {
|
|
226
|
+
this.pepAddonService?.setShellRouterData({ showSidebar: false, addPadding: false });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
ngOnInit() {
|
|
231
|
+
if (this.updateShellRouterData) {
|
|
232
|
+
this.pepAddonService?.setShellRouterData({ showSidebar: false, addPadding: false });
|
|
233
|
+
}
|
|
234
|
+
this.layoutBuilderInternalService?.setManageGlobalCursor(this.manageGlobalCursor);
|
|
235
|
+
this.layoutBuilderInternalService?.setEditorMode(true);
|
|
236
|
+
this.setBlocksConfig();
|
|
237
|
+
if (this.layoutView) {
|
|
238
|
+
this.layoutBuilderInternalService?.loadLayoutBuilder(this.layoutView);
|
|
239
|
+
}
|
|
240
|
+
// Get the first translation for load all translations.
|
|
241
|
+
this.translate.get('LAYOUT_BUILDER.DESKTOP').subscribe((res) => {
|
|
242
|
+
this.screenTypes = [
|
|
243
|
+
{ key: 'Landscape', value: this.translate.instant('LAYOUT_BUILDER.DESKTOP'), callback: () => this.setScreenWidth('Landscape'), iconName: pepIconDeviceDesktop.name, iconPosition: 'end' },
|
|
244
|
+
{ key: 'Tablet', value: this.translate.instant('LAYOUT_BUILDER.TABLET'), callback: () => this.setScreenWidth('Tablet'), iconName: pepIconDeviceTablet.name, iconPosition: 'end' },
|
|
245
|
+
{ key: 'Phablet', value: this.translate.instant('LAYOUT_BUILDER.MOBILE'), callback: () => this.setScreenWidth('Phablet'), iconName: pepIconDeviceMobile.name, iconPosition: 'end' }
|
|
246
|
+
];
|
|
247
|
+
});
|
|
248
|
+
this.subscribeEvents(this.layoutBuilderInternalService);
|
|
249
|
+
}
|
|
250
|
+
ngOnDestroy() {
|
|
251
|
+
super.ngOnDestroy();
|
|
252
|
+
this.layoutBuilderInternalService?.setEditorMode(false);
|
|
253
|
+
// this.layoutBuilderService.removeInternalService(this._layoutKey);
|
|
254
|
+
}
|
|
255
|
+
onResize(event) {
|
|
256
|
+
this.updateViewportWidth();
|
|
257
|
+
}
|
|
258
|
+
togglePreviewMode() {
|
|
259
|
+
this.layoutBuilderInternalService?.changePreviewMode(!this.previewMode);
|
|
260
|
+
this.updateViewportWidth();
|
|
261
|
+
}
|
|
262
|
+
onSidebarStateChange(event) {
|
|
263
|
+
this.updateViewportWidth();
|
|
264
|
+
}
|
|
265
|
+
onLayoutEditorObjectChange(pageEditor) {
|
|
266
|
+
this.layoutBuilderInternalService?.updateLayoutFromEditor(pageEditor);
|
|
267
|
+
}
|
|
268
|
+
onSectionEditorObjectChange(sectionEditor) {
|
|
269
|
+
this.layoutBuilderInternalService?.updateSectionFromEditor(sectionEditor);
|
|
270
|
+
}
|
|
271
|
+
onAddSectionClick(event) {
|
|
272
|
+
this.layoutBuilderInternalService?.addSection();
|
|
273
|
+
}
|
|
274
|
+
onBlockDragStart(event) {
|
|
275
|
+
this.layoutBuilderInternalService?.onBlockDragStart(event);
|
|
276
|
+
}
|
|
277
|
+
onBlockDragEnd(event) {
|
|
278
|
+
this.layoutBuilderInternalService?.onBlockDragEnd(event);
|
|
279
|
+
}
|
|
280
|
+
onNavigateBackFromEditor() {
|
|
281
|
+
if (!this.currentEditor || this.currentEditor?.type === 'layout-builder') {
|
|
282
|
+
this.backClick.emit();
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
this.layoutBuilderInternalService?.navigateBackFromEditor();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
PepLayoutBuilder2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepLayoutBuilder2Component, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.TranslateService }, { token: i2.LayoutBuilderInternalService }, { token: i3.PepAddonService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
290
|
+
PepLayoutBuilder2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepLayoutBuilder2Component, selector: "pep-layout-builder2", inputs: { availableBlocksForDrag: "availableBlocksForDrag", blocksLayoutConfig: "blocksLayoutConfig", layoutEditorTitle: "layoutEditorTitle", lockScreen: "lockScreen", showSkeleton: "showSkeleton", updateShellRouterData: "updateShellRouterData", manageGlobalCursor: "manageGlobalCursor", layoutEditorTopElement: "layoutEditorTopElement", headerEndElement: "headerEndElement", blockEditorElement: "blockEditorElement", layoutContentElement: "layoutContentElement", blockTemplateRenderer: "blockTemplateRenderer", blockTemplateUnmount: "blockTemplateUnmount", layoutView: "layoutView" }, outputs: { backClick: "backClick", editorChange: "editorChange", blockAdded: "blockAdded", blocksRemoved: "blocksRemoved", editableStateChange: "editableStateChange", layoutViewChange: "layoutViewChange", screenTypeChange: "screenTypeChange" }, host: { listeners: { "window:resize": "onResize($event)" } }, providers: [LayoutBuilderInternalService], viewQueries: [{ propertyName: "layoutBuilderWrapper", first: true, predicate: ["layoutBuilderWrapper"], descendants: true, static: true }, { propertyName: "sideBarComponent", first: true, predicate: PepSideBarComponent, descendants: true, read: ElementRef }, { propertyName: "headerEndHost", first: true, predicate: ["headerEndHost"], descendants: true, static: true }, { propertyName: "blockEditorHost", first: true, predicate: ["blockEditorHost"], descendants: true, static: true }, { propertyName: "layoutContentHost", first: true, predicate: ["layoutContentHost"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"lockScreen\" class=\"cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing\"></div>\n\n<pep-page-layout [showShadow]=\"!previewMode && currentEditor !== null\" >\n <div pep-side-area [hidden]=\"previewMode || !currentEditor\" style=\"height: inherit;\">\n <pep-side-bar #sideBar [ignoreResize]=\"true\" (stateChange)=\"onSidebarStateChange($event)\">\n <div header-content class=\"side-bar-title\">\n <pep-button class=\"back-button\" sizeType=\"sm\" iconName=\"arrow_left_alt\" (buttonClick)=\"onNavigateBackFromEditor();\"></pep-button>\n <div #editorTitle class=\"title title-lg ellipsis\" \n [title]=\"currentEditor?.type === 'layout-builder' ? (layoutEditorTitle || currentEditor?.title) : (currentEditor?.title || '')\">\n <span class=\"ellipsis\">{{ editorTitle.title }}</span>\n </div>\n </div>\n <div class=\"layout-builder-editor-wrapper\">\n <main-editor [hidden]=\"currentEditor?.type !== 'layout-builder'\" [sectionsColumnsDropList]=\"sectionsColumnsDropList\" [availableBlocksForDrag]=\"availableBlocksForDrag\"\n [hostObject]=\"currentEditor?.hostObject\" [layoutEditorTopElement]=\"layoutEditorTopElement\" (hostObjectChange)=\"onLayoutEditorObjectChange($event)\" \n (addSectionClick)=\"onAddSectionClick($event)\" (onBlockDragStart)=\"onBlockDragStart($event)\" (onBlockDragEnd)=\"onBlockDragEnd($event)\">\n </main-editor>\n \n <section-editor [hidden]=\"currentEditor?.type !== 'section'\" \n [hostObject]=\"currentEditor?.hostObject\" (hostObjectChange)=\"onSectionEditorObjectChange($event)\"></section-editor>\n \n <div [hidden]=\"currentEditor?.type !== 'block'\">\n <div #blockEditorHost></div>\n </div>\n </div>\n </pep-side-bar>\n </div>\n <ng-container pep-main-area>\n <div class=\"main-area-container\" [ngClass]=\"{'preview-mode': previewMode }\">\n <div class=\"header-container\" >\n <ng-container *ngIf=\"!previewMode; then editorTitleTemplate; else previewTitleTemplate\"></ng-container>\n <ng-template #editorTitleTemplate>\n <div>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.VIEWPORT_WIDTH' | translate)}}: </span>\n <span class=\"body-xs\"><b>{{viewportWidth}}</b></span>\n </div>\n </ng-template>\n <ng-template #previewTitleTemplate>\n <div class=\"preview-title body-sm\">\n <span>{{('LAYOUT_BUILDER.PREVIEW_TITLE' | translate)}}</span>\n </div>\n </ng-template>\n\n <div class=\"header-group-btn\">\n <pep-group-buttons [buttons]=\"screenTypes\" [selectedButtonKey]=\"selectedScreenType\" sizeType=\"sm\" viewType=\"toggle\" >\n </pep-group-buttons>\n </div>\n\n <div class=\"header-end\" [style.display]=\"previewMode ? 'none' : null\">\n <pep-button key='Preview' [value]=\"'ACTIONS.PREVIEW' | translate\" sizeType=\"sm\" (buttonClick)=\"togglePreviewMode()\"></pep-button>\n <div #headerEndHost style=\"display: contents;\"></div>\n </div>\n <a class=\"color-link body-sm\" [style.display]=\"previewMode ? null : 'none'\" (click)=\"togglePreviewMode()\" href=\"javascript:void(0)\">{{('LAYOUT_BUILDER.PREVIEW_CLICK_HERE' | translate)}}</a>\n </div>\n <div #layoutBuilderWrapper class=\"layout-builder-wrapper\" [ngClass]=\"{'limit-min-width': selectedScreenType === 'Landscape' }\">\n <div #layoutContentHost [hidden]=\"!layoutContentElement\"></div>\n <ng-container *ngIf=\"!layoutContentElement\">\n <pep-layout2\n *ngIf=\"layoutView && !blockTemplateRenderer\"\n [editorMode]=\"true\"\n [showSkeleton]=\"showSkeleton\"\n [layoutView]=\"layoutView\"\n [blockTemplate]=\"defaultBlockTemplate\">\n </pep-layout2>\n\n <pep-layout2\n *ngIf=\"layoutView && blockTemplateRenderer\"\n [editorMode]=\"true\"\n [showSkeleton]=\"showSkeleton\"\n [layoutView]=\"layoutView\"\n [blockTemplateRenderer]=\"blockTemplateRenderer\"\n [blockTemplateUnmount]=\"blockTemplateUnmount\">\n </pep-layout2>\n </ng-container>\n <ng-template #defaultBlockTemplate let-blockKey=\"blockKey\">\n <div>{{ layoutBuilderInternalService.getBlockTitle(blockKey) }}</div>\n </ng-template>\n <div *ngIf=\"!previewMode\" class=\"backdrop\" [ngClass]=\"{'show-backdrop': currentEditor?.type === 'section' || currentEditor?.type === 'block'}\"></div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>", styles: [":host{display:block;height:100%}pep-page-layout{height:100%}.side-bar-title{display:flex;padding-top:var(--pep-spacing-sm, .5rem)}.side-bar-title .back-button{margin-inline-end:var(--pep-spacing-sm, .5rem)}.side-bar-title .title{display:grid;align-items:center}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs{height:100%}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-header,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-header{position:sticky;top:calc(var(--pep-top-bar-spacing-top, 1.5rem) + var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));z-index:2}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-header-pagination,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-header-pagination{display:none}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-labels,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-labels{display:grid;grid-template-columns:1fr 1fr}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-labels .mat-tab-label,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-labels .mat-tab-label{padding:0 var(--pep-spacing-md, .75rem)!important}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-body-wrapper,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-body-wrapper{overflow:unset;margin:0;display:block}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active{overflow:unset}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active .mat-tab-body-content,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active .mat-tab-body-content{overflow:unset;display:flex;flex-direction:column;padding-inline:0!important}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab{overflow:inherit;display:inherit;flex-direction:inherit;gap:var(--pep-spacing-lg, 1rem)}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab .group-buttons-container .toggle-buttons{width:100%}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab .no-margin-bottom{margin-bottom:0!important}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container{padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem)}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group{overflow:inherit;display:inherit;flex-direction:inherit;gap:var(--pep-spacing-lg, 1rem);display:flex;flex-direction:column}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group .group-buttons-container .toggle-buttons{width:100%}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group .no-margin-bottom{margin-bottom:0!important}.layout-builder-editor-wrapper ::ng-deep .editor-title{display:block;font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-xl, 1.25rem)!important;line-height:var(--pep-line-height-xl, 1.5625rem)!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layout-builder-editor-wrapper ::ng-deep .editor-sub-title{display:block;font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400)!important;font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layout-builder-editor-wrapper ::ng-deep .editor-separator{margin-top:var(--pep-spacing-lg, 1rem);border-bottom:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title{margin-bottom:.5rem!important;min-height:unset!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container{background:unset!important;padding-left:unset!important;padding-right:unset!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-inner-container,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container .mat-checkbox-inner-container{margin-left:0!important;margin-right:0!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-layout,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container .mat-checkbox-layout{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-lg, 1.125rem)!important;line-height:var(--pep-line-height-lg, 1.40625rem)!important;font-weight:var(--pep-font-weight-bold, 600)!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-layout .mat-checkbox-label span,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container .mat-checkbox-layout .mat-checkbox-label span{margin:0 .5rem}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-layout{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;font-weight:var(--pep-font-weight-normal, 400)!important}.main-area-container{height:100%;min-height:100%;display:grid;grid-template-rows:auto 1fr}.main-area-container .header-container{display:flex;position:sticky;top:0;z-index:100;height:3rem;align-items:center;justify-content:space-between;padding:0 var(--pep-spacing-sm, .5rem)}.main-area-container .header-container .header-group-btn{display:flex;justify-content:space-around;align-items:center}.main-area-container .header-container .header-end{display:flex;justify-content:flex-end;gap:var(--pep-spacing-sm, .5rem)}.main-area-container .header-container ::ng-deep .group-buttons-container .toggle-buttons{width:16rem}.main-area-container .layout-builder-wrapper{width:100%;margin:0 auto;position:relative;height:100%;display:inline-table;min-height:0}.main-area-container .layout-builder-wrapper.limit-min-width{min-width:800px}.main-area-container .layout-builder-wrapper .backdrop{position:absolute;width:100%;height:100%;top:0;z-index:10;display:none}.main-area-container .layout-builder-wrapper .backdrop.show-backdrop{display:block}\n", ".layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-header,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-header{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.main-area-container{background:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}.main-area-container .header-container{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16)}.main-area-container .header-container .header-title{color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.7)}.main-area-container .header-container .size-limit-container{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.main-area-container.preview-mode .header-container{background:unset;background-color:hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.main-area-container.preview-mode .header-container .preview-title,.main-area-container.preview-mode .header-container .color-link{color:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.main-area-container.preview-mode .layout-builder-wrapper{overflow:auto}.main-area-container .layout-builder-wrapper{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:var(--pep-shadow-md-offset, 0 .5rem 1rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16)}.main-area-container .layout-builder-wrapper .backdrop{background:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.5)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i6.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "stateType", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i7.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i8.PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: ["viewType", "styleType", "sizeType", "buttons", "buttonsDisabled", "supportUnselect", "selectedButtonKey", "stretch"], outputs: ["buttonClick"] }, { kind: "component", type: i9.PepLayoutComponent, selector: "pep-layout2", inputs: ["editorMode", "layoutView", "blockTemplate", "blockTemplateRenderer", "blockTemplateUnmount", "renderSkeleton", "showSkeleton"], outputs: ["layoutViewChange", "screenTypeChange"] }, { kind: "component", type: i10.MainEditorComponent, selector: "main-editor", inputs: ["availableBlocksForDrag", "sectionsColumnsDropList", "layoutEditorTopElement", "hostObject"], outputs: ["hostObjectChange", "addSectionClick", "onBlockDragStart", "onBlockDragEnd"] }, { kind: "component", type: i11.SectionEditorComponent, selector: "section-editor", inputs: ["hostObject"], outputs: ["hostObjectChange"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepLayoutBuilder2Component, decorators: [{
|
|
292
|
+
type: Component,
|
|
293
|
+
args: [{ selector: 'pep-layout-builder2', providers: [LayoutBuilderInternalService], template: "<div *ngIf=\"lockScreen\" class=\"cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing\"></div>\n\n<pep-page-layout [showShadow]=\"!previewMode && currentEditor !== null\" >\n <div pep-side-area [hidden]=\"previewMode || !currentEditor\" style=\"height: inherit;\">\n <pep-side-bar #sideBar [ignoreResize]=\"true\" (stateChange)=\"onSidebarStateChange($event)\">\n <div header-content class=\"side-bar-title\">\n <pep-button class=\"back-button\" sizeType=\"sm\" iconName=\"arrow_left_alt\" (buttonClick)=\"onNavigateBackFromEditor();\"></pep-button>\n <div #editorTitle class=\"title title-lg ellipsis\" \n [title]=\"currentEditor?.type === 'layout-builder' ? (layoutEditorTitle || currentEditor?.title) : (currentEditor?.title || '')\">\n <span class=\"ellipsis\">{{ editorTitle.title }}</span>\n </div>\n </div>\n <div class=\"layout-builder-editor-wrapper\">\n <main-editor [hidden]=\"currentEditor?.type !== 'layout-builder'\" [sectionsColumnsDropList]=\"sectionsColumnsDropList\" [availableBlocksForDrag]=\"availableBlocksForDrag\"\n [hostObject]=\"currentEditor?.hostObject\" [layoutEditorTopElement]=\"layoutEditorTopElement\" (hostObjectChange)=\"onLayoutEditorObjectChange($event)\" \n (addSectionClick)=\"onAddSectionClick($event)\" (onBlockDragStart)=\"onBlockDragStart($event)\" (onBlockDragEnd)=\"onBlockDragEnd($event)\">\n </main-editor>\n \n <section-editor [hidden]=\"currentEditor?.type !== 'section'\" \n [hostObject]=\"currentEditor?.hostObject\" (hostObjectChange)=\"onSectionEditorObjectChange($event)\"></section-editor>\n \n <div [hidden]=\"currentEditor?.type !== 'block'\">\n <div #blockEditorHost></div>\n </div>\n </div>\n </pep-side-bar>\n </div>\n <ng-container pep-main-area>\n <div class=\"main-area-container\" [ngClass]=\"{'preview-mode': previewMode }\">\n <div class=\"header-container\" >\n <ng-container *ngIf=\"!previewMode; then editorTitleTemplate; else previewTitleTemplate\"></ng-container>\n <ng-template #editorTitleTemplate>\n <div>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.VIEWPORT_WIDTH' | translate)}}: </span>\n <span class=\"body-xs\"><b>{{viewportWidth}}</b></span>\n </div>\n </ng-template>\n <ng-template #previewTitleTemplate>\n <div class=\"preview-title body-sm\">\n <span>{{('LAYOUT_BUILDER.PREVIEW_TITLE' | translate)}}</span>\n </div>\n </ng-template>\n\n <div class=\"header-group-btn\">\n <pep-group-buttons [buttons]=\"screenTypes\" [selectedButtonKey]=\"selectedScreenType\" sizeType=\"sm\" viewType=\"toggle\" >\n </pep-group-buttons>\n </div>\n\n <div class=\"header-end\" [style.display]=\"previewMode ? 'none' : null\">\n <pep-button key='Preview' [value]=\"'ACTIONS.PREVIEW' | translate\" sizeType=\"sm\" (buttonClick)=\"togglePreviewMode()\"></pep-button>\n <div #headerEndHost style=\"display: contents;\"></div>\n </div>\n <a class=\"color-link body-sm\" [style.display]=\"previewMode ? null : 'none'\" (click)=\"togglePreviewMode()\" href=\"javascript:void(0)\">{{('LAYOUT_BUILDER.PREVIEW_CLICK_HERE' | translate)}}</a>\n </div>\n <div #layoutBuilderWrapper class=\"layout-builder-wrapper\" [ngClass]=\"{'limit-min-width': selectedScreenType === 'Landscape' }\">\n <div #layoutContentHost [hidden]=\"!layoutContentElement\"></div>\n <ng-container *ngIf=\"!layoutContentElement\">\n <pep-layout2\n *ngIf=\"layoutView && !blockTemplateRenderer\"\n [editorMode]=\"true\"\n [showSkeleton]=\"showSkeleton\"\n [layoutView]=\"layoutView\"\n [blockTemplate]=\"defaultBlockTemplate\">\n </pep-layout2>\n\n <pep-layout2\n *ngIf=\"layoutView && blockTemplateRenderer\"\n [editorMode]=\"true\"\n [showSkeleton]=\"showSkeleton\"\n [layoutView]=\"layoutView\"\n [blockTemplateRenderer]=\"blockTemplateRenderer\"\n [blockTemplateUnmount]=\"blockTemplateUnmount\">\n </pep-layout2>\n </ng-container>\n <ng-template #defaultBlockTemplate let-blockKey=\"blockKey\">\n <div>{{ layoutBuilderInternalService.getBlockTitle(blockKey) }}</div>\n </ng-template>\n <div *ngIf=\"!previewMode\" class=\"backdrop\" [ngClass]=\"{'show-backdrop': currentEditor?.type === 'section' || currentEditor?.type === 'block'}\"></div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>", styles: [":host{display:block;height:100%}pep-page-layout{height:100%}.side-bar-title{display:flex;padding-top:var(--pep-spacing-sm, .5rem)}.side-bar-title .back-button{margin-inline-end:var(--pep-spacing-sm, .5rem)}.side-bar-title .title{display:grid;align-items:center}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs{height:100%}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-header,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-header{position:sticky;top:calc(var(--pep-top-bar-spacing-top, 1.5rem) + var(--pep-top-bar-spacing-bottom, .5rem) + var(--pep-top-bar-field-height, 2.5rem));z-index:2}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-header-pagination,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-header-pagination{display:none}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-labels,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-labels{display:grid;grid-template-columns:1fr 1fr}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-labels .mat-tab-label,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-labels .mat-tab-label{padding:0 var(--pep-spacing-md, .75rem)!important}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-body-wrapper,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-body-wrapper{overflow:unset;margin:0;display:block}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active{overflow:unset}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active .mat-tab-body-content,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-body-wrapper .mat-tab-body.mat-tab-body-active .mat-tab-body-content{overflow:unset;display:flex;flex-direction:column;padding-inline:0!important}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab{overflow:inherit;display:inherit;flex-direction:inherit;gap:var(--pep-spacing-lg, 1rem)}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab .group-buttons-container .toggle-buttons{width:100%}.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .page-builder-editor-tab .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .layout-builder-editor-tab .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .page-builder-editor-tab .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .layout-builder-editor-tab .no-margin-bottom{margin-bottom:0!important}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container{padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem)}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group{overflow:inherit;display:inherit;flex-direction:inherit;gap:var(--pep-spacing-lg, 1rem);display:flex;flex-direction:column}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container .group-buttons-container .toggle-buttons,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group .group-buttons-container .toggle-buttons{width:100%}.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-container .no-margin-bottom,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-checkbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-color,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-date,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-select,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-textarea,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group pep-textbox,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-group .no-margin-bottom{margin-bottom:0!important}.layout-builder-editor-wrapper ::ng-deep .editor-title{display:block;font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-xl, 1.25rem)!important;line-height:var(--pep-line-height-xl, 1.5625rem)!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layout-builder-editor-wrapper ::ng-deep .editor-sub-title{display:block;font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400)!important;font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layout-builder-editor-wrapper ::ng-deep .editor-separator{margin-top:var(--pep-spacing-lg, 1rem);border-bottom:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title{margin-bottom:.5rem!important;min-height:unset!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container{background:unset!important;padding-left:unset!important;padding-right:unset!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-inner-container,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container .mat-checkbox-inner-container{margin-left:0!important;margin-right:0!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-layout,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container .mat-checkbox-layout{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-lg, 1.125rem)!important;line-height:var(--pep-line-height-lg, 1.40625rem)!important;font-weight:var(--pep-font-weight-bold, 600)!important}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-layout .mat-checkbox-label span,.layout-builder-editor-wrapper ::ng-deep .checkbox-as-title .pep-checkbox-container .mat-checkbox-layout .mat-checkbox-label span{margin:0 .5rem}.layout-builder-editor-wrapper ::ng-deep .checkbox-as-sub-title .pep-checkbox-container .mat-checkbox-layout{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;font-weight:var(--pep-font-weight-normal, 400)!important}.main-area-container{height:100%;min-height:100%;display:grid;grid-template-rows:auto 1fr}.main-area-container .header-container{display:flex;position:sticky;top:0;z-index:100;height:3rem;align-items:center;justify-content:space-between;padding:0 var(--pep-spacing-sm, .5rem)}.main-area-container .header-container .header-group-btn{display:flex;justify-content:space-around;align-items:center}.main-area-container .header-container .header-end{display:flex;justify-content:flex-end;gap:var(--pep-spacing-sm, .5rem)}.main-area-container .header-container ::ng-deep .group-buttons-container .toggle-buttons{width:16rem}.main-area-container .layout-builder-wrapper{width:100%;margin:0 auto;position:relative;height:100%;display:inline-table;min-height:0}.main-area-container .layout-builder-wrapper.limit-min-width{min-width:800px}.main-area-container .layout-builder-wrapper .backdrop{position:absolute;width:100%;height:100%;top:0;z-index:10;display:none}.main-area-container .layout-builder-wrapper .backdrop.show-backdrop{display:block}\n", ".layout-builder-editor-wrapper ::ng-deep .page-builder-editor-tabs .mat-tab-header,.layout-builder-editor-wrapper ::ng-deep .layout-builder-editor-tabs .mat-tab-header{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.main-area-container{background:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}.main-area-container .header-container{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16)}.main-area-container .header-container .header-title{color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.7)}.main-area-container .header-container .size-limit-container{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.main-area-container.preview-mode .header-container{background:unset;background-color:hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.main-area-container.preview-mode .header-container .preview-title,.main-area-container.preview-mode .header-container .color-link{color:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.main-area-container.preview-mode .layout-builder-wrapper{overflow:auto}.main-area-container .layout-builder-wrapper{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:var(--pep-shadow-md-offset, 0 .5rem 1rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16)}.main-area-container .layout-builder-wrapper .backdrop{background:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.5)}\n"] }]
|
|
294
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.TranslateService }, { type: i2.LayoutBuilderInternalService }, { type: i3.PepAddonService, decorators: [{
|
|
295
|
+
type: Optional
|
|
296
|
+
}] }]; }, propDecorators: { layoutBuilderWrapper: [{
|
|
297
|
+
type: ViewChild,
|
|
298
|
+
args: ['layoutBuilderWrapper', { static: true }]
|
|
299
|
+
}], sideBarComponent: [{
|
|
300
|
+
type: ViewChild,
|
|
301
|
+
args: [PepSideBarComponent, { read: ElementRef }]
|
|
302
|
+
}], headerEndHost: [{
|
|
303
|
+
type: ViewChild,
|
|
304
|
+
args: ['headerEndHost', { static: true }]
|
|
305
|
+
}], blockEditorHost: [{
|
|
306
|
+
type: ViewChild,
|
|
307
|
+
args: ['blockEditorHost', { static: true }]
|
|
308
|
+
}], layoutContentHost: [{
|
|
309
|
+
type: ViewChild,
|
|
310
|
+
args: ['layoutContentHost', { static: true }]
|
|
311
|
+
}], availableBlocksForDrag: [{
|
|
312
|
+
type: Input
|
|
313
|
+
}], blocksLayoutConfig: [{
|
|
314
|
+
type: Input
|
|
315
|
+
}], layoutEditorTitle: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], lockScreen: [{
|
|
318
|
+
type: Input
|
|
319
|
+
}], showSkeleton: [{
|
|
320
|
+
type: Input
|
|
321
|
+
}], updateShellRouterData: [{
|
|
322
|
+
type: Input
|
|
323
|
+
}], manageGlobalCursor: [{
|
|
324
|
+
type: Input
|
|
325
|
+
}], layoutEditorTopElement: [{
|
|
326
|
+
type: Input
|
|
327
|
+
}], headerEndElement: [{
|
|
328
|
+
type: Input
|
|
329
|
+
}], blockEditorElement: [{
|
|
330
|
+
type: Input
|
|
331
|
+
}], layoutContentElement: [{
|
|
332
|
+
type: Input
|
|
333
|
+
}], blockTemplateRenderer: [{
|
|
334
|
+
type: Input
|
|
335
|
+
}], blockTemplateUnmount: [{
|
|
336
|
+
type: Input
|
|
337
|
+
}], layoutView: [{
|
|
338
|
+
type: Input
|
|
339
|
+
}], backClick: [{
|
|
340
|
+
type: Output
|
|
341
|
+
}], editorChange: [{
|
|
342
|
+
type: Output
|
|
343
|
+
}], blockAdded: [{
|
|
344
|
+
type: Output
|
|
345
|
+
}], blocksRemoved: [{
|
|
346
|
+
type: Output
|
|
347
|
+
}], editableStateChange: [{
|
|
348
|
+
type: Output
|
|
349
|
+
}], layoutViewChange: [{
|
|
350
|
+
type: Output
|
|
351
|
+
}], screenTypeChange: [{
|
|
352
|
+
type: Output
|
|
353
|
+
}], onResize: [{
|
|
354
|
+
type: HostListener,
|
|
355
|
+
args: ['window:resize', ['$event']]
|
|
356
|
+
}] } });
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvbGF5b3V0LWJ1aWxkZXIyL2xheW91dC1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2xheW91dC1idWlsZGVyMi9sYXlvdXQtYnVpbGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFVBQVUsRUFBZ0MsUUFBUSxFQUE0QixTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3TCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFJbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUcsT0FBTyxFQUErQixtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSXBHLE9BQU8sRUFBdUMsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUV0SCxzRUFBc0U7QUFRdEUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtJQWtHbEUsWUFDWSxRQUFtQixFQUNuQixXQUF1QixFQUN2QixTQUEyQjtJQUNuQyx5REFBeUQ7SUFDekQsc0VBQXNFO0lBQ3RFLDRCQUEwRCxFQUN0QyxlQUF1QztRQUUzRCxLQUFLLEVBQUUsQ0FBQztRQVJBLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFJZixvQkFB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VSxFQUFFO2dCQUVFLGFBQWE7c0JBQWxFLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDWSxlQUFlO3NCQUF0RSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDWSxpQkFBaUI7c0JBQTFFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk1QyxzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBVUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQVFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBVUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVdGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFXRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBU0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBME5QLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEJhc2VEZXN0cm95ZXJEaXJlY3RpdmUsIFBlcEFkZG9uU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IERhdGFWaWV3U2NyZWVuU2l6ZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9wYXBpLXNkayc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQZXBCdXR0b24gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9idXR0b24nO1xuaW1wb3J0IHsgcGVwSWNvbkRldmljZURlc2t0b3AsIHBlcEljb25EZXZpY2VNb2JpbGUsIHBlcEljb25EZXZpY2VUYWJsZXQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcbmltcG9ydCB7IElQZXBTaWRlQmFyU3RhdGVDaGFuZ2VFdmVudCwgUGVwU2lkZUJhckNvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NpZGUtYmFyJztcbmltcG9ydCB7IElQZXBEcmFnZ2FibGVJdGVtIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zJztcblxuaW1wb3J0IHsgSUVkaXRvciwgSVBlcExheW91dEJsb2NrQWRkZWRFdmVudCwgSVBlcExheW91dEJsb2NrQ29uZmlnLCBJUGVwTGF5b3V0U2VjdGlvbiwgSVBlcExheW91dFZpZXcgfSBmcm9tICcuL2xheW91dC1idWlsZGVyLm1vZGVsJztcbmltcG9ydCB7IElMYXlvdXRFZGl0b3IsIElMYXlvdXRTZWN0aW9uRWRpdG9yLCBMYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlIH0gZnJvbSAnLi9sYXlvdXQtYnVpbGRlci1pbnRlcm5hbC5zZXJ2aWNlJztcbmltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdTdGFydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuLy8gaW1wb3J0IHsgUGVwTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2xheW91dC1idWlsZGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1sYXlvdXQtYnVpbGRlcjInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQtYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGF5b3V0LWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnLCAnLi9sYXlvdXQtYnVpbGRlci5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0xheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBMYXlvdXRCdWlsZGVyMkNvbXBvbmVudCBleHRlbmRzIEJhc2VEZXN0cm95ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKCdsYXlvdXRCdWlsZGVyV3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pIGxheW91dEJ1aWxkZXJXcmFwcGVyITogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKFBlcFNpZGVCYXJDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIHNpZGVCYXJDb21wb25lbnQhOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyRW5kSG9zdCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgaGVhZGVyRW5kSG9zdCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2Jsb2NrRWRpdG9ySG9zdCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgYmxvY2tFZGl0b3JIb3N0ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0Q29udGVudEhvc3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGxheW91dENvbnRlbnRIb3N0ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBwcml2YXRlIF9hdmFpbGFibGVCbG9ja3NGb3JEcmFnOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4gPSBbXTtcbiAgICBASW5wdXQoKSBcbiAgICBzZXQgYXZhaWxhYmxlQmxvY2tzRm9yRHJhZyh2YWx1ZTogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+KSB7XG4gICAgICAgIHRoaXMuX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWcgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGF2YWlsYWJsZUJsb2Nrc0ZvckRyYWcoKTogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmxvY2tzTGF5b3V0Q29uZmlnOiBJUGVwTGF5b3V0QmxvY2tDb25maWcgPSB7fTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBibG9ja3NMYXlvdXRDb25maWcodmFsdWU6IElQZXBMYXlvdXRCbG9ja0NvbmZpZykge1xuICAgICAgICB0aGlzLl9ibG9ja3NMYXlvdXRDb25maWcgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRCbG9ja3NDb25maWcoKTtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBfbGF5b3V0RWRpdG9yVGl0bGUgPSAnJztcbiAgICBASW5wdXQoKVxuICAgIHNldCBsYXlvdXRFZGl0b3JUaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2xheW91dEVkaXRvclRpdGxlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBsYXlvdXRFZGl0b3JUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0RWRpdG9yVGl0bGU7XG4gICAgfVxuICAgIFxuICAgIEBJbnB1dCgpIGxvY2tTY3JlZW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93U2tlbGV0b24gPSBmYWxzZTtcbiAgICBASW5wdXQoKSB1cGRhdGVTaGVsbFJvdXRlckRhdGEgPSB0cnVlO1xuICAgIEBJbnB1dCgpIG1hbmFnZUdsb2JhbEN1cnNvciA9IHRydWU7XG5cbiAgICBwcml2YXRlIF9sYXlvdXRFZGl0b3JUb3BFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxheW91dEVkaXRvclRvcEVsZW1lbnQodmFsdWU6IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9sYXlvdXRFZGl0b3JUb3BFbGVtZW50ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBsYXlvdXRFZGl0b3JUb3BFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXRFZGl0b3JUb3BFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2hlYWRlckVuZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KClcbiAgICBzZXQgaGVhZGVyRW5kRWxlbWVudCh2YWx1ZTogSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2hlYWRlckVuZEVsZW1lbnQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tb3VudEhlYWRlckVuZEVsZW1lbnQoKTtcbiAgICB9XG4gICAgZ2V0IGhlYWRlckVuZEVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlckVuZEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmxvY2tFZGl0b3JFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJsb2NrRWRpdG9yRWxlbWVudCh2YWx1ZTogSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2Jsb2NrRWRpdG9yRWxlbWVudCA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vdW50QmxvY2tFZGl0b3JFbGVtZW50KCk7XG4gICAgfVxuICAgIGdldCBibG9ja0VkaXRvckVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jsb2NrRWRpdG9yRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9sYXlvdXRDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBsYXlvdXRDb250ZW50RWxlbWVudCh2YWx1ZTogSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2xheW91dENvbnRlbnRFbGVtZW50ID0gdmFsdWU7XG4gICAgICAgIHRoaXMubW91bnRMYXlvdXRDb250ZW50RWxlbWVudCgpO1xuICAgIH1cbiAgICBnZXQgbGF5b3V0Q29udGVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dENvbnRlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGJsb2NrVGVtcGxhdGVSZW5kZXJlcjogKChob3N0OiBIVE1MRWxlbWVudCwgYmxvY2tLZXk6IHN0cmluZykgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBibG9ja1RlbXBsYXRlVW5tb3VudDogKChob3N0OiBIVE1MRWxlbWVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpIGxheW91dFZpZXc6IElQZXBMYXlvdXRWaWV3IHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KCkgYmFja0NsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGVkaXRvckNoYW5nZTogRXZlbnRFbWl0dGVyPElFZGl0b3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBibG9ja0FkZGVkOiBFdmVudEVtaXR0ZXI8SVBlcExheW91dEJsb2NrQWRkZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGJsb2Nrc1JlbW92ZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGVkaXRhYmxlU3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgbGF5b3V0Vmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPElQZXBMYXlvdXRWaWV3PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc2NyZWVuVHlwZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGFWaWV3U2NyZWVuU2l6ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgcHJldmlld01vZGUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgY3VycmVudEVkaXRvcjogSUVkaXRvciB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCB2aWV3cG9ydFdpZHRoID0gMDtcbiAgICBwcm90ZWN0ZWQgc2NyZWVuVHlwZXMhOiBBcnJheTxQZXBCdXR0b24+O1xuICAgIHByb3RlY3RlZCBzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdCA9IFtdO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZFNjcmVlblR5cGUhOiBEYXRhVmlld1NjcmVlblNpemU7XG4gICAgcHVibGljIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U6IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U7XG4gICAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBob3N0RWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIC8vIHByaXZhdGUgbGF5b3V0QnVpbGRlclNlcnZpY2U6IFBlcExheW91dEJ1aWxkZXJTZXJ2aWNlLFxuICAgICAgICAvLyBwcml2YXRlIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U6IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UsXG4gICAgICAgIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U6IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcGVwQWRkb25TZXJ2aWNlOiBQZXBBZGRvblNlcnZpY2UgfCBudWxsLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZSA9IGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAncGVwLWxheW91dC1idWlsZGVyJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3VudEVsZW1lbnQoaG9zdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBob3N0ID0gaG9zdFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFob3N0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBob3N0LnJlcGxhY2VDaGlsZHJlbigpO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBob3N0LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3VudEhlYWRlckVuZEVsZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91bnRFbGVtZW50KHRoaXMuaGVhZGVyRW5kSG9zdCwgdGhpcy5faGVhZGVyRW5kRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3VudEJsb2NrRWRpdG9yRWxlbWVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3VudEVsZW1lbnQodGhpcy5ibG9ja0VkaXRvckhvc3QsIHRoaXMuX2Jsb2NrRWRpdG9yRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3VudExheW91dENvbnRlbnRFbGVtZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdW50RWxlbWVudCh0aGlzLmxheW91dENvbnRlbnRIb3N0LCB0aGlzLl9sYXlvdXRDb250ZW50RWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTY3JlZW5XaWR0aChzY3JlZW5UeXBlOiBEYXRhVmlld1NjcmVlblNpemUpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlPy5zZXRTY3JlZW5XaWR0aChzY3JlZW5UeXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZpZXdwb3J0V2lkdGgoKSB7XG4gICAgICAgIGlmICh0aGlzLmxheW91dEJ1aWxkZXJXcmFwcGVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0V2lkdGggPSB0aGlzLmxheW91dEJ1aWxkZXJXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIHN1YnNjcmliZUV2ZW50cyhsYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlOiBMYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChsYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlKSB7XG4gICAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWwgRXZlbnRzIC0gZm9yIGNvZGUgdXNhZ2VcbiAgICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAgICAgICAgIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uuc2VjdGlvbnNDb2x1bW5zRHJvcExpc3RDaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdCA9IHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UucHJldmlld01vZGVDaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChwcmV2aWV3TW9kZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3TW9kZSA9IHByZXZpZXdNb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdGFibGVTdGF0ZUNoYW5nZS5lbWl0KCF0aGlzLnByZXZpZXdNb2RlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBsYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmxvY2tTY3JlZW5DaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChsb2NrU2NyZWVuOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vICAgICB0aGlzLmxvY2tTY3JlZW4gPSBsb2NrU2NyZWVuO1xuICAgICAgICAgICAgLy8gfSk7XG5cbiAgICAgICAgICAgIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKHNpemU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcmVlblR5cGUgPSBsYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmdldFNjcmVlblR5cGUoc2l6ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNjcmVlblR5cGUgPSBzY3JlZW5UeXBlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVHlwZUNoYW5nZS5lbWl0KHNjcmVlblR5cGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEZvciB1cGRhdGUgdGhlIGxheW91dCBkYXRhXG4gICAgICAgICAgICBsYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmxheW91dFZpZXdDaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChsYXlvdXRWaWV3OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobGF5b3V0Vmlldykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXlvdXRCdWlsZGVyV3JhcHBlcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eShsYXlvdXRWaWV3LkxheW91dC5NYXhXaWR0aCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhXaWR0aFRvU2V0ID0gbWF4V2lkdGggPT09IDAgPyAnMTAwJScgOiBgJHttYXhXaWR0aH1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubGF5b3V0QnVpbGRlcldyYXBwZXIubmF0aXZlRWxlbWVudCwgJ21heC13aWR0aCcsIG1heFdpZHRoVG9TZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFdpZHRoKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFZpZXdDaGFuZ2UuZW1pdChsYXlvdXRWaWV3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zY3JlZW5XaWR0aENoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKHdpZHRoOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXlvdXRCdWlsZGVyV3JhcHBlcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubGF5b3V0QnVpbGRlcldyYXBwZXIubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgd2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBzZWN0aW9ucyBpZCdzIGludG8gc2VjdGlvbnNDb2x1bW5zRHJvcExpc3QgZm9yIHRoZSBkcmFnICYgZHJvcC5cbiAgICAgICAgICAgIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uuc2VjdGlvbnNDaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChzZWN0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQ29uY2F0IGFsbCByZXN1bHRzIGludG8gb25lIGFycmF5LlxuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0ID0gW10uY29uY2F0KC4uLnNlY3Rpb25zLm1hcCgoc2VjdGlvbjogSVBlcExheW91dFNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlY3Rpb24uQ29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+IFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5nZXRTZWN0aW9uQ29sdW1uS2V5KHNlY3Rpb24uS2V5LCBpbmRleC50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgbGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zZXRTZWN0aW9uc0NvbHVtbnNEcm9wTGlzdENoYW5nZShzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsIEV2ZW50cyAtIGZvciByYWlzZSB0byB0aGUgY2xpZW50XG4gICAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAgICAgICAgIC8vIEZvciB1cGRhdGUgZWRpdG9yLlxuICAgICAgICAgICAgbGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5lZGl0b3JDaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChlZGl0b3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5pdCB0aGUgc2lkZSBiYXIgc2Nyb2xsIHRvcCB0byAwLlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaWRlQmFyQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWRlTGF5b3V0ID0gdGhpcy5zaWRlQmFyQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNpZGUtbGF5b3V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaWRlTGF5b3V0Py5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RWRpdG9yID0gZWRpdG9yO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgLy8gUmFpc2UgZXZlbnQgdG8gbGV0IHRoZSB1c2VyIHNldCB0aGUgYmxvY2sgZWRpdG9yIGluIHRoZSBVSS5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JDaGFuZ2UuZW1pdChlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmJsb2NrQWRkZWRFdmVudFN1YmplY3QkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tBZGRlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5ibG9ja3NSZW1vdmVkRXZlbnRTdWJqZWN0JC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc1JlbW92ZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEJsb2Nrc0NvbmZpZygpIHtcbiAgICAgICAgaWYgKHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLnNldEJsb2Nrc0NvbmZpZyh0aGlzLl9ibG9ja3NMYXlvdXRDb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdW50SGVhZGVyRW5kRWxlbWVudCgpO1xuICAgICAgICB0aGlzLm1vdW50QmxvY2tFZGl0b3JFbGVtZW50KCk7XG4gICAgICAgIHRoaXMubW91bnRMYXlvdXRDb250ZW50RWxlbWVudCgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ21hbmFnZUdsb2JhbEN1cnNvciddKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U/LnNldE1hbmFnZUdsb2JhbEN1cnNvcih0aGlzLm1hbmFnZUdsb2JhbEN1cnNvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlc1snbGF5b3V0VmlldyddKSB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gY2hhbmdlc1snbGF5b3V0VmlldyddLmN1cnJlbnRWYWx1ZSBhcyBJUGVwTGF5b3V0VmlldyB8IG51bGw7XG4gICAgICAgICAgICBpZiAobGF5b3V0Vmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZT8ubG9hZExheW91dEJ1aWxkZXIobGF5b3V0Vmlldyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlc1sndXBkYXRlU2hlbGxSb3V0ZXJEYXRhJ10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnVwZGF0ZVNoZWxsUm91dGVyRGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVwQWRkb25TZXJ2aWNlPy5zZXRTaGVsbFJvdXRlckRhdGEoeyBzaG93U2lkZWJhcjogZmFsc2UsIGFkZFBhZGRpbmc6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlU2hlbGxSb3V0ZXJEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnBlcEFkZG9uU2VydmljZT8uc2V0U2hlbGxSb3V0ZXJEYXRhKHsgc2hvd1NpZGViYXI6IGZhbHNlLCBhZGRQYWRkaW5nOiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlPy5zZXRNYW5hZ2VHbG9iYWxDdXJzb3IodGhpcy5tYW5hZ2VHbG9iYWxDdXJzb3IpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlPy5zZXRFZGl0b3JNb2RlKHRydWUpO1xuICAgICAgICB0aGlzLnNldEJsb2Nrc0NvbmZpZygpO1xuXG4gICAgICAgIGlmICh0aGlzLmxheW91dFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZT8ubG9hZExheW91dEJ1aWxkZXIodGhpcy5sYXlvdXRWaWV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgZmlyc3QgdHJhbnNsYXRpb24gZm9yIGxvYWQgYWxsIHRyYW5zbGF0aW9ucy5cbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCdMQVlPVVRfQlVJTERFUi5ERVNLVE9QJykuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5zY3JlZW5UeXBlcyA9IFtcbiAgICAgICAgICAgICAgICB7IGtleTogJ0xhbmRzY2FwZScsIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdMQVlPVVRfQlVJTERFUi5ERVNLVE9QJyksIGNhbGxiYWNrOiAoKSA9PiB0aGlzLnNldFNjcmVlbldpZHRoKCdMYW5kc2NhcGUnKSwgaWNvbk5hbWU6IHBlcEljb25EZXZpY2VEZXNrdG9wLm5hbWUsIGljb25Qb3NpdGlvbjogJ2VuZCcgfSxcbiAgICAgICAgICAgICAgICB7IGtleTogJ1RhYmxldCcsIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdMQVlPVVRfQlVJTERFUi5UQUJMRVQnKSwgY2FsbGJhY2s6ICgpID0+IHRoaXMuc2V0U2NyZWVuV2lkdGgoJ1RhYmxldCcpLCBpY29uTmFtZTogcGVwSWNvbkRldmljZVRhYmxldC5uYW1lLCBpY29uUG9zaXRpb246ICdlbmQnIH0sXG4gICAgICAgICAgICAgICAgeyBrZXk6ICdQaGFibGV0JywgdmFsdWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0xBWU9VVF9CVUlMREVSLk1PQklMRScpLCBjYWxsYmFjazogKCkgPT4gdGhpcy5zZXRTY3JlZW5XaWR0aCgnUGhhYmxldCcpLCBpY29uTmFtZTogcGVwSWNvbkRldmljZU1vYmlsZS5uYW1lLCBpY29uUG9zaXRpb246ICdlbmQnIH1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVFdmVudHModGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlPy5zZXRFZGl0b3JNb2RlKGZhbHNlKTtcbiAgICAgICAgLy8gdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5yZW1vdmVJbnRlcm5hbFNlcnZpY2UodGhpcy5fbGF5b3V0S2V5KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgICBvblJlc2l6ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRXaWR0aCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZVByZXZpZXdNb2RlKCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U/LmNoYW5nZVByZXZpZXdNb2RlKCF0aGlzLnByZXZpZXdNb2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydFdpZHRoKCk7XG4gICAgfVxuXG4gICAgb25TaWRlYmFyU3RhdGVDaGFuZ2UoZXZlbnQ6IElQZXBTaWRlQmFyU3RhdGVDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0V2lkdGgoKTtcbiAgICB9XG5cbiAgICBvbkxheW91dEVkaXRvck9iamVjdENoYW5nZShwYWdlRWRpdG9yOiBJTGF5b3V0RWRpdG9yKSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZT8udXBkYXRlTGF5b3V0RnJvbUVkaXRvcihwYWdlRWRpdG9yKTtcbiAgICB9XG5cbiAgICBvblNlY3Rpb25FZGl0b3JPYmplY3RDaGFuZ2Uoc2VjdGlvbkVkaXRvcjogSUxheW91dFNlY3Rpb25FZGl0b3IpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlPy51cGRhdGVTZWN0aW9uRnJvbUVkaXRvcihzZWN0aW9uRWRpdG9yKTtcbiAgICB9XG5cbiAgICBvbkFkZFNlY3Rpb25DbGljayhldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZT8uYWRkU2VjdGlvbigpO1xuICAgIH1cblxuICAgIG9uQmxvY2tEcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U/Lm9uQmxvY2tEcmFnU3RhcnQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uQmxvY2tEcmFnRW5kKGV2ZW50OiBDZGtEcmFnRW5kKSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZT8ub25CbG9ja0RyYWdFbmQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uTmF2aWdhdGVCYWNrRnJvbUVkaXRvcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRFZGl0b3IgfHwgdGhpcy5jdXJyZW50RWRpdG9yPy50eXBlID09PSAnbGF5b3V0LWJ1aWxkZXInKSB7XG4gICAgICAgICAgICB0aGlzLmJhY2tDbGljay5lbWl0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U/Lm5hdmlnYXRlQmFja0Zyb21FZGl0b3IoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJsb2NrU2NyZWVuXCIgY2xhc3M9XCJjZGstb3ZlcmxheS1iYWNrZHJvcCBjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wIGNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdcIj48L2Rpdj5cblxuPHBlcC1wYWdlLWxheW91dCBbc2hvd1NoYWRvd109XCIhcHJldmlld01vZGUgJiYgY3VycmVudEVkaXRvciAhPT0gbnVsbFwiID5cbiAgICA8ZGl2IHBlcC1zaWRlLWFyZWEgW2hpZGRlbl09XCJwcmV2aWV3TW9kZSB8fCAhY3VycmVudEVkaXRvclwiIHN0eWxlPVwiaGVpZ2h0OiBpbmhlcml0O1wiPlxuICAgICAgICA8cGVwLXNpZGUtYmFyICNzaWRlQmFyIFtpZ25vcmVSZXNpemVdPVwidHJ1ZVwiIChzdGF0ZUNoYW5nZSk9XCJvblNpZGViYXJTdGF0ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZGl2IGhlYWRlci1jb250ZW50IGNsYXNzPVwic2lkZS1iYXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8cGVwLWJ1dHRvbiBjbGFzcz1cImJhY2stYnV0dG9uXCIgc2l6ZVR5cGU9XCJzbVwiIGljb25OYW1lPVwiYXJyb3dfbGVmdF9hbHRcIiAoYnV0dG9uQ2xpY2spPVwib25OYXZpZ2F0ZUJhY2tGcm9tRWRpdG9yKCk7XCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgI2VkaXRvclRpdGxlIGNsYXNzPVwidGl0bGUgdGl0bGUtbGcgZWxsaXBzaXNcIiBcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImN1cnJlbnRFZGl0b3I/LnR5cGUgPT09ICdsYXlvdXQtYnVpbGRlcicgPyAobGF5b3V0RWRpdG9yVGl0bGUgfHwgY3VycmVudEVkaXRvcj8udGl0bGUpIDogKGN1cnJlbnRFZGl0b3I/LnRpdGxlIHx8ICcnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzXCI+e3sgZWRpdG9yVGl0bGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtYnVpbGRlci1lZGl0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxtYWluLWVkaXRvciBbaGlkZGVuXT1cImN1cnJlbnRFZGl0b3I/LnR5cGUgIT09ICdsYXlvdXQtYnVpbGRlcidcIiBbc2VjdGlvbnNDb2x1bW5zRHJvcExpc3RdPVwic2VjdGlvbnNDb2x1bW5zRHJvcExpc3RcIiBbYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ109XCJhdmFpbGFibGVCbG9ja3NGb3JEcmFnXCJcbiAgICAgICAgICAgICAgICAgICAgW2hvc3RPYmplY3RdPVwiY3VycmVudEVkaXRvcj8uaG9zdE9iamVjdFwiIFtsYXlvdXRFZGl0b3JUb3BFbGVtZW50XT1cImxheW91dEVkaXRvclRvcEVsZW1lbnRcIiAoaG9zdE9iamVjdENoYW5nZSk9XCJvbkxheW91dEVkaXRvck9iamVjdENoYW5nZSgkZXZlbnQpXCIgXG4gICAgICAgICAgICAgICAgICAgIChhZGRTZWN0aW9uQ2xpY2spPVwib25BZGRTZWN0aW9uQ2xpY2soJGV2ZW50KVwiIChvbkJsb2NrRHJhZ1N0YXJ0KT1cIm9uQmxvY2tEcmFnU3RhcnQoJGV2ZW50KVwiIChvbkJsb2NrRHJhZ0VuZCk9XCJvbkJsb2NrRHJhZ0VuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9tYWluLWVkaXRvcj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxzZWN0aW9uLWVkaXRvciBbaGlkZGVuXT1cImN1cnJlbnRFZGl0b3I/LnR5cGUgIT09ICdzZWN0aW9uJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbaG9zdE9iamVjdF09XCJjdXJyZW50RWRpdG9yPy5ob3N0T2JqZWN0XCIgKGhvc3RPYmplY3RDaGFuZ2UpPVwib25TZWN0aW9uRWRpdG9yT2JqZWN0Q2hhbmdlKCRldmVudClcIj48L3NlY3Rpb24tZWRpdG9yPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cImN1cnJlbnRFZGl0b3I/LnR5cGUgIT09ICdibG9jaydcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjYmxvY2tFZGl0b3JIb3N0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcGVwLXNpZGUtYmFyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgcGVwLW1haW4tYXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tYXJlYS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J3ByZXZpZXctbW9kZSc6IHByZXZpZXdNb2RlIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCIgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcHJldmlld01vZGU7IHRoZW4gZWRpdG9yVGl0bGVUZW1wbGF0ZTsgZWxzZSBwcmV2aWV3VGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdG9yVGl0bGVUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXRpdGxlIGJvZHkteHNcIj57eygnTEFZT1VUX0JVSUxERVIuVklFV1BPUlRfV0lEVEgnIHwgdHJhbnNsYXRlKX19OiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keS14c1wiPjxiPnt7dmlld3BvcnRXaWR0aH19PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ByZXZpZXdUaXRsZVRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy10aXRsZSBib2R5LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eygnTEFZT1VUX0JVSUxERVIuUFJFVklFV19USVRMRScgfCB0cmFuc2xhdGUpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLWdyb3VwLWJ1dHRvbnMgW2J1dHRvbnNdPVwic2NyZWVuVHlwZXNcIiBbc2VsZWN0ZWRCdXR0b25LZXldPVwic2VsZWN0ZWRTY3JlZW5UeXBlXCIgc2l6ZVR5cGU9XCJzbVwiIHZpZXdUeXBlPVwidG9nZ2xlXCIgPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1ncm91cC1idXR0b25zPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1lbmRcIiBbc3R5bGUuZGlzcGxheV09XCJwcmV2aWV3TW9kZSA/ICdub25lJyA6IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1idXR0b24ga2V5PSdQcmV2aWV3JyBbdmFsdWVdPVwiJ0FDVElPTlMuUFJFVklFVycgfCB0cmFuc2xhdGVcIiBzaXplVHlwZT1cInNtXCIgKGJ1dHRvbkNsaWNrKT1cInRvZ2dsZVByZXZpZXdNb2RlKClcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2hlYWRlckVuZEhvc3Qgc3R5bGU9XCJkaXNwbGF5OiBjb250ZW50cztcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImNvbG9yLWxpbmsgYm9keS1zbVwiIFtzdHlsZS5kaXNwbGF5XT1cInByZXZpZXdNb2RlID8gbnVsbCA6ICdub25lJ1wiIChjbGljayk9XCJ0b2dnbGVQcmV2aWV3TW9kZSgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPnt7KCdMQVlPVVRfQlVJTERFUi5QUkVWSUVXX0NMSUNLX0hFUkUnIHwgdHJhbnNsYXRlKX19PC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICNsYXlvdXRCdWlsZGVyV3JhcHBlciBjbGFzcz1cImxheW91dC1idWlsZGVyLXdyYXBwZXJcIiBbbmdDbGFzc109XCJ7J2xpbWl0LW1pbi13aWR0aCc6IHNlbGVjdGVkU2NyZWVuVHlwZSA9PT0gJ0xhbmRzY2FwZScgfVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgI2xheW91dENvbnRlbnRIb3N0IFtoaWRkZW5dPVwiIWxheW91dENvbnRlbnRFbGVtZW50XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsYXlvdXRDb250ZW50RWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLWxheW91dDJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGF5b3V0VmlldyAmJiAhYmxvY2tUZW1wbGF0ZVJlbmRlcmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0b3JNb2RlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTa2VsZXRvbl09XCJzaG93U2tlbGV0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dFZpZXddPVwibGF5b3V0Vmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmxvY2tUZW1wbGF0ZV09XCJkZWZhdWx0QmxvY2tUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1sYXlvdXQyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxwZXAtbGF5b3V0MlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsYXlvdXRWaWV3ICYmIGJsb2NrVGVtcGxhdGVSZW5kZXJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZWRpdG9yTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2tlbGV0b25dPVwic2hvd1NrZWxldG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRWaWV3XT1cImxheW91dFZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Jsb2NrVGVtcGxhdGVSZW5kZXJlcl09XCJibG9ja1RlbXBsYXRlUmVuZGVyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Jsb2NrVGVtcGxhdGVVbm1vdW50XT1cImJsb2NrVGVtcGxhdGVVbm1vdW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLWxheW91dDI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QmxvY2tUZW1wbGF0ZSBsZXQtYmxvY2tLZXk9XCJibG9ja0tleVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UuZ2V0QmxvY2tUaXRsZShibG9ja0tleSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcHJldmlld01vZGVcIiBjbGFzcz1cImJhY2tkcm9wXCIgW25nQ2xhc3NdPVwieydzaG93LWJhY2tkcm9wJzogY3VycmVudEVkaXRvcj8udHlwZSA9PT0gJ3NlY3Rpb24nIHx8IGN1cnJlbnRFZGl0b3I/LnR5cGUgPT09ICdibG9jayd9XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3BlcC1wYWdlLWxheW91dD4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlcjIvbGF5b3V0LWJ1aWxkZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2VCbG9ja0NvbnRhaW5lciwgUGFnZUxheW91dCwgUGFnZVNlY3Rpb24sIFBhZ2VTZWN0aW9uQ29sdW1uLCBQYWdlU2l6ZVR5cGUsIFNwbGl0VHlwZSB9IGZyb20gXCJAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGtcIjtcbmltcG9ydCB7IElQZXBEcmFnZ2FibGVJdGVtIH0gZnJvbSBcIkBwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RyYWdnYWJsZS1pdGVtc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgdHlwZSBQZXBMYXlvdXRTaXplVHlwZSA9IFBhZ2VTaXplVHlwZTtcblxuZXhwb3J0IGludGVyZmFjZSBJUGVwTGF5b3V0VmlldyB7XG4gICAgLy8gS2V5OiBzdHJpbmcsXG4gICAgLy8gVGl0bGU6IHN0cmluZyxcbiAgICBMYXlvdXQ6IElQZXBMYXlvdXQsXG59XG5leHBvcnQgaW50ZXJmYWNlIElQZXBMYXlvdXQgZXh0ZW5kcyBQYWdlTGF5b3V0IHtcbiAgICBTZWN0aW9uczogSVBlcExheW91dFNlY3Rpb25bXTtcbiAgICBWZXJ0aWNhbFNwYWNpbmc/OiBQZXBMYXlvdXRTaXplVHlwZTtcbiAgICBIb3Jpem9udGFsU3BhY2luZz86IFBlcExheW91dFNpemVUeXBlO1xuICAgIFNlY3Rpb25zR2FwPzogUGVwTGF5b3V0U2l6ZVR5cGU7XG4gICAgQ29sdW1uc0dhcD86IFBlcExheW91dFNpemVUeXBlO1xufVxuZXhwb3J0IGludGVyZmFjZSBJUGVwTGF5b3V0U2VjdGlvbiBleHRlbmRzIFBhZ2VTZWN0aW9uIHsgXG4gICAgQ29sdW1uczogSVBlcExheW91dFNlY3Rpb25Db2x1bW5bXTtcbiAgICBDb2x1bW5zR2FwPzogUGVwTGF5b3V0U2l6ZVR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIElQZXBMYXlvdXRTZWN0aW9uQ29sdW1uIGV4dGVuZHMgUGFnZVNlY3Rpb25Db2x1bW4ge1xuICAgIEJsb2NrQ29udGFpbmVyPzogSVBlcExheW91dEJsb2NrQ29udGFpbmVyO1xufVxuZXhwb3J0IHR5cGUgSVBlcExheW91dEJsb2NrQ29udGFpbmVyID0gUGFnZUJsb2NrQ29udGFpbmVyXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExheW91dEJsb2NrQ29uZmlnIHtcbiAgICAvLyBCbG9ja0tleTogc3RyaW5nLFxuICAgIC8vIGJsb2NrQWRkZWRDYWxsYmFjazogdW5kZWZpbmVkIHwgKChldmVudDogSVBlcExheW91dEJsb2NrQWRkZWRFdmVudCkgPT4gUHJvbWlzZTx2b2lkPik7XG4gICAgbmF2aWdhdGVUb0VkaXRvckFmdGVyQmxvY2tBZGRlZD86IGJvb2xlYW47XG4gICAgYmxvY2tzTGltaXROdW1iZXI/OiBudW1iZXI7XG4gICAgZ2V0QmxvY2tUaXRsZT86IChibG9ja0tleTogc3RyaW5nKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcExheW91dEJsb2NrQWRkZWRFdmVudCB7XG4gICAgQmxvY2tLZXk6IHN0cmluZyxcbiAgICBEcmFnZ2FibGVJdGVtOiBJUGVwRHJhZ2dhYmxlSXRlbSxcbn1cbiAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvciB7XG4gICAgaWQ6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFBlcExheW91dEVkaXRvclR5cGUsXG4gICAgaG9zdE9iamVjdD86IGFueVxufVxuXG5leHBvcnQgdHlwZSBQZXBMYXlvdXRFZGl0b3JUeXBlID0gJ2xheW91dC1idWlsZGVyJyB8ICdzZWN0aW9uJyB8ICdibG9jayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEVkaXRvclRhYiB7XG4gICAga2V5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxufSJdfQ==
|