@pepperi-addons/ngx-composite-lib 0.4.2-beta.7 → 0.4.2-beta.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/color-settings/color-settings.component.d.ts +3 -2
  2. package/core/common/services/dimx.service.d.ts +4 -0
  3. package/esm2020/color-settings/color-settings.component.mjs +6 -3
  4. package/esm2020/core/common/directives/reset-configuration-field.directive.mjs +5 -4
  5. package/esm2020/core/common/services/dimx.service.mjs +1 -1
  6. package/esm2020/file-status-panel/file-status-panel.module.mjs +23 -3
  7. package/esm2020/flow-picker-button/flow-picker-button.component.mjs +94 -0
  8. package/esm2020/flow-picker-button/flow-picker-button.module.mjs +36 -0
  9. package/esm2020/flow-picker-button/flow-picker-button.service.mjs +21 -0
  10. package/esm2020/flow-picker-button/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +5 -0
  11. package/esm2020/flow-picker-button/public-api.mjs +6 -0
  12. package/esm2020/generic-list/generic-list.component.mjs +64 -7
  13. package/esm2020/generic-list/generic-list.service.mjs +6 -2
  14. package/esm2020/group-buttons-settings/group-buttons-settings.component.mjs +17 -4
  15. package/esm2020/group-buttons-settings/group-buttons-settings.model.mjs +1 -1
  16. package/esm2020/icon-picker/icon-picker.component.mjs +79 -0
  17. package/esm2020/icon-picker/icon-picker.module.mjs +44 -0
  18. package/esm2020/icon-picker/icon-picker.service.mjs +17 -0
  19. package/esm2020/icon-picker/pepperi-addons-ngx-composite-lib-icon-picker.mjs +5 -0
  20. package/esm2020/icon-picker/public-api.mjs +6 -0
  21. package/esm2020/layout-builder/hide-in/hide-in.component.mjs +54 -0
  22. package/esm2020/layout-builder/hide-in/hide-in.module.mjs +81 -0
  23. package/esm2020/layout-builder/layout/layout.component.mjs +204 -0
  24. package/esm2020/layout-builder/layout/layout.module.mjs +58 -0
  25. package/esm2020/layout-builder/layout-builder-internal.service.mjs +655 -0
  26. package/esm2020/layout-builder/layout-builder.component.mjs +205 -0
  27. package/esm2020/layout-builder/layout-builder.model.mjs +6 -0
  28. package/esm2020/layout-builder/layout-builder.module.mjs +136 -0
  29. package/esm2020/layout-builder/layout-builder.service.mjs +33 -0
  30. package/esm2020/layout-builder/layout-editor/layout-editor.component.mjs +156 -0
  31. package/esm2020/layout-builder/layout-editor/layout-editor.module.mjs +109 -0
  32. package/esm2020/layout-builder/pepperi-addons-ngx-composite-lib-layout-builder.mjs +5 -0
  33. package/esm2020/layout-builder/public-api.mjs +10 -0
  34. package/esm2020/layout-builder/section/section.component.mjs +298 -0
  35. package/esm2020/layout-builder/section/section.module.mjs +45 -0
  36. package/esm2020/layout-builder/section-block/section-block.component.mjs +109 -0
  37. package/esm2020/layout-builder/section-block/section-block.module.mjs +48 -0
  38. package/esm2020/layout-builder/section-editor/section-editor.component.mjs +191 -0
  39. package/esm2020/layout-builder/section-editor/section-editor.module.mjs +40 -0
  40. package/esm2020/manage-parameters/manage-parameter/manage-parameter.component.mjs +82 -0
  41. package/esm2020/manage-parameters/manage-parameters.component.mjs +153 -0
  42. package/esm2020/manage-parameters/manage-parameters.model.mjs +24 -0
  43. package/esm2020/manage-parameters/manage-parameters.module.mjs +45 -0
  44. package/esm2020/manage-parameters/manage-parameters.service.mjs +142 -0
  45. package/esm2020/manage-parameters/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +5 -0
  46. package/esm2020/manage-parameters/public-api.mjs +8 -0
  47. package/esm2020/rich-text/pepperi-addons-ngx-composite-lib-rich-text.mjs +5 -0
  48. package/esm2020/rich-text/public-api.mjs +6 -0
  49. package/esm2020/rich-text/rich-text.component.mjs +154 -0
  50. package/esm2020/rich-text/rich-text.module.mjs +52 -0
  51. package/esm2020/rich-text/rich-text.service.mjs +21 -0
  52. package/esm2020/shadow-settings/shadow-settings.component.mjs +7 -4
  53. package/esm2020/show-if-badge/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +5 -0
  54. package/esm2020/show-if-badge/public-api.mjs +6 -0
  55. package/esm2020/show-if-badge/show-if-badge.component.mjs +44 -0
  56. package/esm2020/show-if-badge/show-if-badge.module.mjs +50 -0
  57. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +5 -2
  58. package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
  59. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +22 -3
  60. package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
  61. package/fesm2015/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +161 -0
  62. package/fesm2015/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs.map +1 -0
  63. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +70 -7
  64. package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
  65. package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +16 -3
  66. package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -1
  67. package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +146 -0
  68. package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -0
  69. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2307 -0
  70. package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -0
  71. package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +441 -0
  72. package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -0
  73. package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs +234 -0
  74. package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -0
  75. package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +6 -3
  76. package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
  77. package/fesm2015/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +100 -0
  78. package/fesm2015/pepperi-addons-ngx-composite-lib-show-if-badge.mjs.map +1 -0
  79. package/fesm2015/pepperi-addons-ngx-composite-lib.mjs +4 -3
  80. package/fesm2015/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
  81. package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +5 -2
  82. package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
  83. package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +22 -3
  84. package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
  85. package/fesm2020/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +155 -0
  86. package/fesm2020/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs.map +1 -0
  87. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +68 -7
  88. package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
  89. package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +16 -3
  90. package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -1
  91. package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs +145 -0
  92. package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -0
  93. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2286 -0
  94. package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -0
  95. package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +438 -0
  96. package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -0
  97. package/fesm2020/pepperi-addons-ngx-composite-lib-rich-text.mjs +230 -0
  98. package/fesm2020/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -0
  99. package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +6 -3
  100. package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
  101. package/fesm2020/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +100 -0
  102. package/fesm2020/pepperi-addons-ngx-composite-lib-show-if-badge.mjs.map +1 -0
  103. package/fesm2020/pepperi-addons-ngx-composite-lib.mjs +4 -3
  104. package/fesm2020/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
  105. package/flow-picker-button/flow-picker-button.component.d.ts +27 -0
  106. package/flow-picker-button/flow-picker-button.module.d.ts +11 -0
  107. package/flow-picker-button/flow-picker-button.service.d.ts +9 -0
  108. package/flow-picker-button/index.d.ts +5 -0
  109. package/flow-picker-button/public-api.d.ts +2 -0
  110. package/generic-list/generic-list.component.d.ts +17 -5
  111. package/generic-list/generic-list.service.d.ts +2 -1
  112. package/group-buttons-settings/group-buttons-settings.component.d.ts +5 -2
  113. package/group-buttons-settings/group-buttons-settings.model.d.ts +1 -1
  114. package/icon-picker/icon-picker.component.d.ts +24 -0
  115. package/icon-picker/icon-picker.module.d.ts +13 -0
  116. package/icon-picker/icon-picker.service.d.ts +8 -0
  117. package/icon-picker/index.d.ts +5 -0
  118. package/icon-picker/public-api.d.ts +2 -0
  119. package/layout-builder/hide-in/hide-in.component.d.ts +25 -0
  120. package/layout-builder/hide-in/hide-in.component.theme.scss +9 -0
  121. package/layout-builder/hide-in/hide-in.module.d.ts +20 -0
  122. package/layout-builder/index.d.ts +5 -0
  123. package/layout-builder/layout/layout.component.d.ts +51 -0
  124. package/layout-builder/layout/layout.module.d.ts +17 -0
  125. package/layout-builder/layout-builder-internal.service.d.ts +107 -0
  126. package/layout-builder/layout-builder.component.d.ts +51 -0
  127. package/layout-builder/layout-builder.component.theme.scss +56 -0
  128. package/layout-builder/layout-builder.model.d.ts +51 -0
  129. package/layout-builder/layout-builder.module.d.ts +32 -0
  130. package/layout-builder/layout-builder.service.d.ts +14 -0
  131. package/layout-builder/layout-editor/layout-editor.component.d.ts +49 -0
  132. package/layout-builder/layout-editor/layout-editor.module.d.ts +28 -0
  133. package/layout-builder/public-api.d.ts +6 -0
  134. package/layout-builder/section/section.component.d.ts +76 -0
  135. package/layout-builder/section/section.component.theme.scss +115 -0
  136. package/layout-builder/section/section.module.d.ts +14 -0
  137. package/layout-builder/section-block/section-block.component.d.ts +39 -0
  138. package/layout-builder/section-block/section-block.component.theme.scss +13 -0
  139. package/layout-builder/section-block/section-block.module.d.ts +13 -0
  140. package/layout-builder/section-editor/section-editor.component.d.ts +53 -0
  141. package/layout-builder/section-editor/section-editor.module.d.ts +13 -0
  142. package/manage-parameters/index.d.ts +5 -0
  143. package/manage-parameters/manage-parameter/manage-parameter.component.d.ts +28 -0
  144. package/manage-parameters/manage-parameters.component.d.ts +33 -0
  145. package/manage-parameters/manage-parameters.model.d.ts +21 -0
  146. package/manage-parameters/manage-parameters.module.d.ts +14 -0
  147. package/manage-parameters/manage-parameters.service.d.ts +16 -0
  148. package/manage-parameters/public-api.d.ts +3 -0
  149. package/package.json +50 -2
  150. package/rich-text/index.d.ts +5 -0
  151. package/rich-text/public-api.d.ts +2 -0
  152. package/rich-text/rich-text.component.d.ts +43 -0
  153. package/rich-text/rich-text.module.d.ts +16 -0
  154. package/rich-text/rich-text.service.d.ts +9 -0
  155. package/shadow-settings/shadow-settings.component.d.ts +2 -1
  156. package/show-if-badge/index.d.ts +5 -0
  157. package/show-if-badge/public-api.d.ts +2 -0
  158. package/show-if-badge/show-if-badge.component.d.ts +20 -0
  159. package/show-if-badge/show-if-badge.module.d.ts +16 -0
  160. package/src/assets/i18n/en.ngx-composite-lib.json +77 -4
  161. package/src/assets/images/brand-leaf-full@1x.png +0 -0
  162. package/src/assets/images/brand-leaf-full@2x.png +0 -0
  163. package/src/assets/images/brand-leaf-round.png +0 -0
  164. package/src/assets/images/brand-leaf-round@2x.png +0 -0
  165. package/src/assets/images/brand-leaf-skiny@1x.png +0 -0
  166. package/src/assets/images/brand-leaf-skiny@2x.png +0 -0
@@ -0,0 +1,298 @@
1
+ import { Component, HostBinding, Input, ViewChild, ViewChildren } from '@angular/core';
2
+ import { BaseDestroyerDirective, PepScreenSizeType } from '@pepperi-addons/ngx-lib';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../layout-builder-internal.service";
5
+ import * as i2 from "@pepperi-addons/ngx-lib";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/cdk/drag-drop";
8
+ import * as i5 from "@pepperi-addons/ngx-lib/button";
9
+ import * as i6 from "../section-block/section-block.component";
10
+ import * as i7 from "../hide-in/hide-in.component";
11
+ import * as i8 from "@pepperi-addons/ngx-lib/draggable-items";
12
+ export class SectionComponent extends BaseDestroyerDirective {
13
+ constructor(renderer, layoutBuilderService, layoutService) {
14
+ super();
15
+ this.renderer = renderer;
16
+ this.layoutBuilderService = layoutBuilderService;
17
+ this.layoutService = layoutService;
18
+ this.key = '';
19
+ this.name = '';
20
+ this._split = undefined;
21
+ this._height = undefined;
22
+ this._collapseOnTablet = false;
23
+ this._columns = [];
24
+ this._hideIn = [];
25
+ this.styleMaxHeight = 'unset';
26
+ this.styleHeight = 'unset';
27
+ this.sectionsColumnsDropList = [];
28
+ // PepScreenSizeType = PepScreenSizeType;
29
+ this.sectionColumnKeyPrefix = '';
30
+ this.isMainEditorState = false;
31
+ this.isEditing = false;
32
+ this.selectedSectionKey = '';
33
+ this.selectedBlockKey = '';
34
+ this.containsBlocks = false;
35
+ this.shouldSetDefaultHeight = false;
36
+ this.pepScreenSizeToFlipToVertical = PepScreenSizeType.SM;
37
+ this.hideForCurrentScreenType = false;
38
+ this.draggingBlockKey = '';
39
+ this.draggingSectionKey = '';
40
+ this.hoverState = false;
41
+ }
42
+ set split(value) {
43
+ this._split = value;
44
+ this.refreshSplit();
45
+ }
46
+ get split() {
47
+ return this._split;
48
+ }
49
+ set height(value) {
50
+ this._height = value;
51
+ this.setStyleHeight();
52
+ }
53
+ get height() {
54
+ return this._height;
55
+ }
56
+ set collapseOnTablet(value) {
57
+ this._collapseOnTablet = value;
58
+ this.pepScreenSizeToFlipToVertical = value ? PepScreenSizeType.MD : PepScreenSizeType.SM;
59
+ this.refreshSplit();
60
+ }
61
+ get collapseOnTablet() {
62
+ return this._collapseOnTablet;
63
+ }
64
+ set columns(value) {
65
+ this._columns = value || [];
66
+ }
67
+ get columns() {
68
+ return this._columns;
69
+ }
70
+ set hideIn(value) {
71
+ this._hideIn = value;
72
+ this.setIfHideForCurrentScreenType();
73
+ }
74
+ get hideIn() {
75
+ return this._hideIn;
76
+ }
77
+ // private _editable = false;
78
+ // protected set editable(value: boolean) {
79
+ // this._editable = value;
80
+ // this.refreshSplit();
81
+ // }
82
+ get editable() {
83
+ return this.layoutBuilderService.editableState;
84
+ ;
85
+ }
86
+ set screenSize(value) {
87
+ this._screenSize = value;
88
+ this.refreshSplit();
89
+ this.setScreenType();
90
+ }
91
+ get screenSize() {
92
+ return this._screenSize;
93
+ }
94
+ calculateIfSectionContainsBlocks() {
95
+ this.containsBlocks = this.columns.some(column => column.BlockContainer);
96
+ if (this.editable) {
97
+ this.shouldSetDefaultHeight = !this.containsBlocks;
98
+ }
99
+ }
100
+ setScreenType() {
101
+ this.screenType = this.layoutBuilderService.getScreenType(this.screenSize);
102
+ this.setIfHideForCurrentScreenType();
103
+ this.setStyleHeight();
104
+ }
105
+ setIfHideForCurrentScreenType() {
106
+ this.hideForCurrentScreenType = this.layoutBuilderService.getIsHidden(this.hideIn, this.screenType);
107
+ }
108
+ getCssSplitString() {
109
+ switch (this.split) {
110
+ case '1/2 1/2':
111
+ return '1fr 1fr';
112
+ case '1/2 1/4 1/4':
113
+ return '2fr 1fr 1fr';
114
+ case '1/3 1/3 1/3':
115
+ return '1fr 1fr 1fr';
116
+ case '1/3 2/3':
117
+ return '1fr 2fr';
118
+ case '1/4 1/2 1/4':
119
+ return '1fr 2fr 1fr';
120
+ case '1/4 1/4 1/2':
121
+ return '1fr 1fr 2fr';
122
+ case '1/4 1/4 1/4 1/4':
123
+ return '1fr 1fr 1fr 1fr';
124
+ case '1/4 3/4':
125
+ return '1fr 3fr';
126
+ case '2/3 1/3':
127
+ return '2fr 1fr';
128
+ case '3/4 1/4':
129
+ return '3fr 1fr';
130
+ default: // For one column.
131
+ return '1fr';
132
+ }
133
+ }
134
+ refreshSplit() {
135
+ setTimeout(() => {
136
+ if (this.sectionContainerRef) {
137
+ let cssSplitString = this.getCssSplitString();
138
+ // Go for all the columns in the columnsWrapper
139
+ this.columnsElementRef.toArray().map((section, sectionIndex) => {
140
+ // Horizontal (true) for large screens, false for small screens.
141
+ const isHorizontalView = this.screenSize <= this.pepScreenSizeToFlipToVertical;
142
+ if (isHorizontalView) {
143
+ this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'column');
144
+ this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
145
+ this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);
146
+ }
147
+ else {
148
+ this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'row');
149
+ this.renderer.setStyle(section.nativeElement, 'grid-template-columns', 'unset');
150
+ this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitString);
151
+ // In runtime (or preview mode).
152
+ if (!this.editable) {
153
+ const cssSplitArray = cssSplitString.split(' ');
154
+ // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).
155
+ this.columns.forEach((column, index) => {
156
+ if (!column.BlockContainer) {
157
+ cssSplitArray[index] = '0';
158
+ }
159
+ });
160
+ this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');
161
+ //this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitArray.join(' '));
162
+ }
163
+ }
164
+ });
165
+ }
166
+ }, 0);
167
+ }
168
+ setStyleHeight() {
169
+ if (this.height && this.height > 0 && this.screenType !== 'Phablet') {
170
+ this.styleHeight = this.styleMaxHeight = `${this.height}px`;
171
+ }
172
+ else {
173
+ this.styleHeight = this.styleMaxHeight = 'unset';
174
+ }
175
+ }
176
+ getIsDragging() {
177
+ return this.draggingBlockKey.length > 0 && this.draggingSectionKey.length > 0;
178
+ }
179
+ getIsHidden(hideIn, currentScreenType) {
180
+ return this.layoutBuilderService.getIsHidden(hideIn, currentScreenType);
181
+ }
182
+ ngOnInit() {
183
+ this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe(previewMode => {
184
+ this.refreshSplit();
185
+ });
186
+ // Just to calculate if sections contains blocks
187
+ this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe(res => {
188
+ this.calculateIfSectionContainsBlocks();
189
+ });
190
+ this.layoutService.onResize$.pipe(this.getDestroyer()).subscribe((size) => {
191
+ this.screenSize = size;
192
+ });
193
+ this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size) => {
194
+ this.screenSize = size;
195
+ });
196
+ if (this.editable) {
197
+ this.layoutBuilderService.sectionsColumnsDropListChange$.pipe(this.getDestroyer()).subscribe((sectionsColumnsDropList) => {
198
+ this.sectionsColumnsDropList = sectionsColumnsDropList;
199
+ });
200
+ this.layoutBuilderService.editorChange$.pipe(this.getDestroyer()).subscribe((editor) => {
201
+ this.isMainEditorState = editor && editor.type === 'layout-builder';
202
+ this.isEditing = editor && editor.type === 'section' && editor.id === this.key;
203
+ this.selectedSectionKey = editor && editor.type === 'section' ? editor.id : '';
204
+ this.selectedBlockKey = editor && editor.type === 'block' ? editor.id : '';
205
+ });
206
+ this.layoutBuilderService.draggingBlockKey.pipe(this.getDestroyer()).subscribe((draggingBlockKey) => {
207
+ this.draggingBlockKey = draggingBlockKey;
208
+ if (draggingBlockKey === '') {
209
+ this.calculateIfSectionContainsBlocks();
210
+ }
211
+ else {
212
+ // If there is only one block in the section and now it's this block that the user is dragging.
213
+ const blocksLength = this.columns.filter(column => column.BlockContainer).length;
214
+ if (blocksLength === 1 && this.columns.find(c => c.BlockContainer?.BlockKey === this.draggingBlockKey)) {
215
+ this.shouldSetDefaultHeight = true;
216
+ }
217
+ }
218
+ });
219
+ this.layoutBuilderService.draggingSectionKey.pipe(this.getDestroyer()).subscribe((draggingSectionKey) => {
220
+ this.draggingSectionKey = draggingSectionKey;
221
+ });
222
+ }
223
+ this.sectionColumnKeyPrefix = this.layoutBuilderService.getSectionColumnKey(this.key);
224
+ }
225
+ onEditSectionClick() {
226
+ this.layoutBuilderService.navigateToEditor('section', this.key);
227
+ }
228
+ onRemoveSectionClick() {
229
+ this.layoutBuilderService.removeSection(this.key);
230
+ }
231
+ onHideSectionChange(hideIn) {
232
+ this.layoutBuilderService.hideSection(this.key, hideIn);
233
+ }
234
+ onHideInMenuOpened() {
235
+ this.hoverState = true;
236
+ }
237
+ onHideInMenuClosed() {
238
+ this.hoverState = false;
239
+ }
240
+ onBlockDropped(event) {
241
+ this.layoutBuilderService.onBlockDropped(event, this.key);
242
+ }
243
+ canDropPredicate(columnIndex) {
244
+ return (drag, drop) => {
245
+ const res = !this.layoutBuilderService.doesColumnContainBlock(this.key, columnIndex);
246
+ return res;
247
+ };
248
+ }
249
+ onDragStart(event) {
250
+ this.layoutBuilderService.onSectionDragStart(event);
251
+ }
252
+ onDragEnd(event) {
253
+ this.layoutBuilderService.onSectionDragEnd(event);
254
+ }
255
+ onSectionBlockDragExited(event) {
256
+ //
257
+ }
258
+ onSectionBlockDragEntered(event) {
259
+ //
260
+ }
261
+ }
262
+ SectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionComponent, deps: [{ token: i0.Renderer2 }, { token: i1.LayoutBuilderInternalService }, { token: i2.PepLayoutService }], target: i0.ɵɵFactoryTarget.Component });
263
+ SectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: SectionComponent, selector: "section", inputs: { blockTemplate: "blockTemplate", key: "key", name: "name", split: "split", height: "height", collapseOnTablet: "collapseOnTablet", columns: "columns", hideIn: "hideIn", columnsGap: "columnsGap" }, host: { properties: { "style.max-height": "this.styleMaxHeight", "style.height": "this.styleHeight" } }, viewQueries: [{ propertyName: "sectionContainerRef", first: true, predicate: ["sectionContainer"], descendants: true }, { propertyName: "columnsElementRef", predicate: ["columnsWrapper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n", styles: [".section-container{position:relative;display:grid;height:100%;max-height:inherit;min-height:2.5rem}.section-container.editable-state.default-height{min-height:16rem}.section-container.editable-state.active-section{z-index:11}.section-container.editable-state.active-section .columns-wrapper{z-index:1}.section-container.editable-state.active-section ::ng-deep .block-template-wrapper .block-template{pointer-events:unset!important;opacity:unset!important}.section-container.editable-state.cdk-drag-placeholder{opacity:.5}.section-container.editable-state:not(.cdk-drag-placeholder):hover .section-toolbar,.section-container.editable-state:not(.cdk-drag-placeholder).show-hover-state .section-toolbar{display:block!important}.section-container.editable-state:not(.cdk-drag-preview) .hide-toolbar{display:none}.section-container.editable-state.main-editor-state .mobile .is-hidden{display:none}.section-container.editable-state .mobile .is-hidden{display:block}.section-container.editable-state .section-toolbar{position:absolute;top:0;height:2.625rem;z-index:11}.section-container.editable-state .section-toolbar ::ng-deep .pep-draggable-item-container{border-radius:0 0 var(--pep-border-radius-md, .25rem) 0}.section-container.editable-state .section-background{position:absolute;width:100%;height:100%;z-index:0;display:grid;grid-template-columns:repeat(12,1fr)}.section-container.editable-state .section-background .back-template{opacity:.1}.section-container.editable-state .section-background .back-template:last-of-type{border-right:0 none}.section-container .columns-wrapper{display:grid;grid-auto-flow:column;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper.is-dragging{overflow:unset}.section-container .columns-wrapper.gap-none{gap:0}.section-container .columns-wrapper.gap-sm{gap:var(--pep-spacing-sm, .5rem)}.section-container .columns-wrapper.gap-md{gap:var(--pep-spacing-lg, 1rem)}.section-container .columns-wrapper.gap-lg{gap:var(--pep-spacing-2xl, 2rem)}.section-container .columns-wrapper .section-column{position:relative;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper .section-column .section-block{height:inherit;max-height:inherit}\n", ".section-container{background:transparent}.section-container.editable-state.active-section{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:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.active-section .columns-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%))}.section-container.editable-state.section-hidden-state:not(.active-section){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}.section-container.editable-state.main-editor-state.cdk-drag-preview{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.main-editor-state.cdk-drag-placeholder:hover,.section-container.editable-state.main-editor-state.cdk-drag-placeholder.show-hover-state{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)!important}.section-container.editable-state.main-editor-state:hover:not(.section-is-dragging),.section-container.editable-state.main-editor-state.show-hover-state:not(.section-is-dragging){box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state .section-toolbar ::ng-deep .pep-draggable-item-container{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .section-background .back-template{background-color:#bec3e5;border-right:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column{border:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column.active-column{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%))}.section-container.editable-state .columns-wrapper .section-column.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state .columns-wrapper .section-column.already-contains-block:hover{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal{border-left:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal.cdk-drop-list-dragging{border-left:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical{border-top:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical.cdk-drop-list-dragging{border-top:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i5.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i6.SectionBlockComponent, selector: "section-block", inputs: ["blockTemplate", "sectionKey", "sectionHeight", "isMainEditorState", "editable", "active", "blockContainer", "screenType"], outputs: ["dragExited", "dragEntered"] }, { kind: "component", type: i7.PepHideInComponent, selector: "hide-in", inputs: ["hideIn"], outputs: ["hideInChange", "menuOpened", "menuClosed"] }, { kind: "component", type: i8.DraggableItemComponent, selector: "pep-draggable-item", inputs: ["title", "titlePrefix", "titleClassNames", "data", "disabled", "shadow", "styleType", "toggleContent", "isToggleContentOpen", "actionsMenu", "menuStyleType"], outputs: ["contentToggle", "actionsMenuItemClick"] }] });
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionComponent, decorators: [{
265
+ type: Component,
266
+ args: [{ selector: 'section', template: "<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n", styles: [".section-container{position:relative;display:grid;height:100%;max-height:inherit;min-height:2.5rem}.section-container.editable-state.default-height{min-height:16rem}.section-container.editable-state.active-section{z-index:11}.section-container.editable-state.active-section .columns-wrapper{z-index:1}.section-container.editable-state.active-section ::ng-deep .block-template-wrapper .block-template{pointer-events:unset!important;opacity:unset!important}.section-container.editable-state.cdk-drag-placeholder{opacity:.5}.section-container.editable-state:not(.cdk-drag-placeholder):hover .section-toolbar,.section-container.editable-state:not(.cdk-drag-placeholder).show-hover-state .section-toolbar{display:block!important}.section-container.editable-state:not(.cdk-drag-preview) .hide-toolbar{display:none}.section-container.editable-state.main-editor-state .mobile .is-hidden{display:none}.section-container.editable-state .mobile .is-hidden{display:block}.section-container.editable-state .section-toolbar{position:absolute;top:0;height:2.625rem;z-index:11}.section-container.editable-state .section-toolbar ::ng-deep .pep-draggable-item-container{border-radius:0 0 var(--pep-border-radius-md, .25rem) 0}.section-container.editable-state .section-background{position:absolute;width:100%;height:100%;z-index:0;display:grid;grid-template-columns:repeat(12,1fr)}.section-container.editable-state .section-background .back-template{opacity:.1}.section-container.editable-state .section-background .back-template:last-of-type{border-right:0 none}.section-container .columns-wrapper{display:grid;grid-auto-flow:column;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper.is-dragging{overflow:unset}.section-container .columns-wrapper.gap-none{gap:0}.section-container .columns-wrapper.gap-sm{gap:var(--pep-spacing-sm, .5rem)}.section-container .columns-wrapper.gap-md{gap:var(--pep-spacing-lg, 1rem)}.section-container .columns-wrapper.gap-lg{gap:var(--pep-spacing-2xl, 2rem)}.section-container .columns-wrapper .section-column{position:relative;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper .section-column .section-block{height:inherit;max-height:inherit}\n", ".section-container{background:transparent}.section-container.editable-state.active-section{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:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.active-section .columns-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%))}.section-container.editable-state.section-hidden-state:not(.active-section){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}.section-container.editable-state.main-editor-state.cdk-drag-preview{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.main-editor-state.cdk-drag-placeholder:hover,.section-container.editable-state.main-editor-state.cdk-drag-placeholder.show-hover-state{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)!important}.section-container.editable-state.main-editor-state:hover:not(.section-is-dragging),.section-container.editable-state.main-editor-state.show-hover-state:not(.section-is-dragging){box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state .section-toolbar ::ng-deep .pep-draggable-item-container{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .section-background .back-template{background-color:#bec3e5;border-right:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column{border:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column.active-column{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%))}.section-container.editable-state .columns-wrapper .section-column.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state .columns-wrapper .section-column.already-contains-block:hover{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal{border-left:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal.cdk-drop-list-dragging{border-left:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical{border-top:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical.cdk-drop-list-dragging{border-top:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}\n"] }]
267
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LayoutBuilderInternalService }, { type: i2.PepLayoutService }]; }, propDecorators: { sectionContainerRef: [{
268
+ type: ViewChild,
269
+ args: ['sectionContainer']
270
+ }], columnsElementRef: [{
271
+ type: ViewChildren,
272
+ args: ['columnsWrapper']
273
+ }], blockTemplate: [{
274
+ type: Input
275
+ }], key: [{
276
+ type: Input
277
+ }], name: [{
278
+ type: Input
279
+ }], split: [{
280
+ type: Input
281
+ }], height: [{
282
+ type: Input
283
+ }], collapseOnTablet: [{
284
+ type: Input
285
+ }], columns: [{
286
+ type: Input
287
+ }], hideIn: [{
288
+ type: Input
289
+ }], columnsGap: [{
290
+ type: Input
291
+ }], styleMaxHeight: [{
292
+ type: HostBinding,
293
+ args: ['style.max-height']
294
+ }], styleHeight: [{
295
+ type: HostBinding,
296
+ args: ['style.height']
297
+ }] } });
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlci9zZWN0aW9uL3NlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvbGF5b3V0LWJ1aWxkZXIvc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFnQixLQUFLLEVBQXVFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEwsT0FBTyxFQUFFLHNCQUFzQixFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7O0FBU3RHLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxzQkFBc0I7SUF5R3hELFlBQ1ksUUFBbUIsRUFDbkIsb0JBQWtELEVBQ2xELGFBQStCO1FBRXZDLEtBQUssRUFBRSxDQUFDO1FBSkEsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQThCO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQXRHbEMsUUFBRyxHQUFXLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRW5CLFdBQU0sR0FBMEIsU0FBUyxDQUFDO1FBVTFDLFlBQU8sR0FBdUIsU0FBUyxDQUFDO1FBVXhDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQVduQyxhQUFRLEdBQW1DLEVBQUUsQ0FBQztRQVM5QyxZQUFPLEdBQXlCLEVBQUUsQ0FBQztRQWEzQyxtQkFBYyxHQUFHLE9BQU8sQ0FBQztRQUd6QixnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQUVaLDRCQUF1QixHQUFhLEVBQUUsQ0FBQztRQXFCakQseUNBQXlDO1FBQy9CLDJCQUFz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SSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDckYsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQW1CO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsS0FBa0I7UUFDdkMsRUFBRTtJQUNOLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFtQjtRQUN6QyxFQUFFO0lBQ04sQ0FBQzs7NkdBdFRRLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLCtrQkNaN0IsdThHQTBDQTsyRkQ5QmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNJLFNBQVM7MEtBS1ksbUJBQW1CO3NCQUFqRCxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDRyxpQkFBaUI7c0JBQWhELFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUVyQixhQUFhO3NCQUFyQixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUYsS0FBSztzQkFEUixLQUFLO2dCQVdGLE1BQU07c0JBRFQsS0FBSztnQkFXRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBWUYsT0FBTztzQkFEVixLQUFLO2dCQVVGLE1BQU07c0JBRFQsS0FBSztnQkFTRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSS9CLFdBQVc7c0JBRFYsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnRW5kLCBDZGtEcmFnRW50ZXIsIENka0RyYWdFeGl0LCBDZGtEcmFnU3RhcnQsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBEYXRhVmlld1NjcmVlblNpemUsIFNwbGl0VHlwZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9wYXBpLXNkayc7XG5pbXBvcnQgeyBCYXNlRGVzdHJveWVyRGlyZWN0aXZlLCBQZXBMYXlvdXRTZXJ2aWNlLCBQZXBTY3JlZW5TaXplVHlwZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UgfSBmcm9tICcuLi9sYXlvdXQtYnVpbGRlci1pbnRlcm5hbC5zZXJ2aWNlJztcbmltcG9ydCB7IElFZGl0b3IsIElQZXBMYXlvdXRTZWN0aW9uQ29sdW1uLCBQZXBMYXlvdXRTaXplVHlwZSB9IGZyb20gJy4uL2xheW91dC1idWlsZGVyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzZWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VjdGlvbi5jb21wb25lbnQuc2NzcycsICcuL3NlY3Rpb24uY29tcG9uZW50LnRoZW1lLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZURlc3Ryb3llckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2VjdGlvbkNvbnRhaW5lcicpIHNlY3Rpb25Db250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2NvbHVtbnNXcmFwcGVyJykgY29sdW1uc0VsZW1lbnRSZWYhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBASW5wdXQoKSBibG9ja1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkga2V5OiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgX3NwbGl0OiBTcGxpdFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgQElucHV0KClcbiAgICBzZXQgc3BsaXQodmFsdWU6IFNwbGl0VHlwZSB8IHVuZGVmaW5lZCApIHtcbiAgICAgICAgdGhpcy5fc3BsaXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICB9XG4gICAgZ2V0IHNwbGl0KCk6IFNwbGl0VHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zcGxpdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBoZWlnaHQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9oZWlnaHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTdHlsZUhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgaGVpZ2h0KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sbGFwc2VPblRhYmxldDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbGxhcHNlT25UYWJsZXQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY29sbGFwc2VPblRhYmxldCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsID0gdmFsdWUgPyBQZXBTY3JlZW5TaXplVHlwZS5NRCA6IFBlcFNjcmVlblNpemVUeXBlLlNNO1xuICAgICAgICB0aGlzLnJlZnJlc2hTcGxpdCgpO1xuICAgIH1cbiAgICBnZXQgY29sbGFwc2VPblRhYmxldCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxhcHNlT25UYWJsZXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sdW1uczogQXJyYXk8SVBlcExheW91dFNlY3Rpb25Db2x1bW4+ID0gW107XG4gICAgQElucHV0KClcbiAgICBzZXQgY29sdW1ucyh2YWx1ZTogQXJyYXk8SVBlcExheW91dFNlY3Rpb25Db2x1bW4+KSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB9XG4gICAgZ2V0IGNvbHVtbnMoKTogQXJyYXk8SVBlcExheW91dFNlY3Rpb25Db2x1bW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgX2hpZGVJbjogRGF0YVZpZXdTY3JlZW5TaXplW10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBoaWRlSW4odmFsdWU6IERhdGFWaWV3U2NyZWVuU2l6ZVtdKSB7XG4gICAgICAgIHRoaXMuX2hpZGVJbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldElmSGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKCk7XG4gICAgfVxuICAgIGdldCBoaWRlSW4oKTogRGF0YVZpZXdTY3JlZW5TaXplW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUluO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNvbHVtbnNHYXAhOiBQZXBMYXlvdXRTaXplVHlwZTtcbiAgICAgICAgXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JylcbiAgICBzdHlsZU1heEhlaWdodCA9ICd1bnNldCc7XG4gICAgXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKVxuICAgIHN0eWxlSGVpZ2h0ID0gJ3Vuc2V0JztcbiAgICBcbiAgICBwcm90ZWN0ZWQgc2VjdGlvbnNDb2x1bW5zRHJvcExpc3Q6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBwcml2YXRlIF9lZGl0YWJsZSA9IGZhbHNlO1xuICAgIC8vIHByb3RlY3RlZCBzZXQgZWRpdGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAvLyAgICAgdGhpcy5fZWRpdGFibGUgPSB2YWx1ZTtcbiAgICAvLyAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICAvLyB9XG4gICAgcHJvdGVjdGVkIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UuZWRpdGFibGVTdGF0ZTs7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2NyZWVuU2l6ZSE6IFBlcFNjcmVlblNpemVUeXBlO1xuICAgIHByb3RlY3RlZCBzZXQgc2NyZWVuU2l6ZSh2YWx1ZTogUGVwU2NyZWVuU2l6ZVR5cGUpIHtcbiAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJlZnJlc2hTcGxpdCgpO1xuICAgICAgICB0aGlzLnNldFNjcmVlblR5cGUoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldCBzY3JlZW5TaXplKCk6IFBlcFNjcmVlblNpemVUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmVlblNpemU7XG4gICAgfVxuXG4gICAgLy8gUGVwU2NyZWVuU2l6ZVR5cGUgPSBQZXBTY3JlZW5TaXplVHlwZTtcbiAgICBwcm90ZWN0ZWQgc2VjdGlvbkNvbHVtbktleVByZWZpeCA9ICcnO1xuICAgIFxuICAgIHByb3RlY3RlZCBpc01haW5FZGl0b3JTdGF0ZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRTZWN0aW9uS2V5ID0gJyc7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkQmxvY2tLZXkgPSAnJztcbiAgICBcbiAgICBwcm90ZWN0ZWQgY29udGFpbnNCbG9ja3MgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc2hvdWxkU2V0RGVmYXVsdEhlaWdodCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBwZXBTY3JlZW5TaXplVG9GbGlwVG9WZXJ0aWNhbCA9IFBlcFNjcmVlblNpemVUeXBlLlNNO1xuICAgIHByb3RlY3RlZCBzY3JlZW5UeXBlITogRGF0YVZpZXdTY3JlZW5TaXplO1xuICAgIHByb3RlY3RlZCBoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgZHJhZ2dpbmdCbG9ja0tleTogc3RyaW5nID0gJyc7XG4gICAgcHJvdGVjdGVkIGRyYWdnaW5nU2VjdGlvbktleTogc3RyaW5nID0gJyc7XG4gICAgcHJvdGVjdGVkIGhvdmVyU3RhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgbGF5b3V0QnVpbGRlclNlcnZpY2U6IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICApIHsgXG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVJZlNlY3Rpb25Db250YWluc0Jsb2NrcygpIHtcbiAgICAgICAgdGhpcy5jb250YWluc0Jsb2NrcyA9IHRoaXMuY29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4uQmxvY2tDb250YWluZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3VsZFNldERlZmF1bHRIZWlnaHQgPSAhdGhpcy5jb250YWluc0Jsb2NrcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2NyZWVuVHlwZSgpIHtcbiAgICAgICAgdGhpcy5zY3JlZW5UeXBlID0gdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5nZXRTY3JlZW5UeXBlKHRoaXMuc2NyZWVuU2l6ZSk7XG4gICAgICAgIHRoaXMuc2V0SWZIaWRlRm9yQ3VycmVudFNjcmVlblR5cGUoKTtcbiAgICAgICAgdGhpcy5zZXRTdHlsZUhlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SWZIaWRlRm9yQ3VycmVudFNjcmVlblR5cGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlID0gdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5nZXRJc0hpZGRlbih0aGlzLmhpZGVJbiwgdGhpcy5zY3JlZW5UeXBlKTtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBnZXRDc3NTcGxpdFN0cmluZygpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNwbGl0KSB7XG4gICAgICAgICAgICBjYXNlICcxLzIgMS8yJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS8yIDEvNCAxLzQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnMmZyIDFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS8zIDEvMyAxLzMnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnMWZyIDFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS8zIDIvMyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnIgMmZyJztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzIgMS80JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzFmciAyZnIgMWZyJztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzQgMS8yJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzFmciAxZnIgMmZyJztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzQgMS80IDEvNCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnIgMWZyIDFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS80IDMvNCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnIgM2ZyJztcbiAgICAgICAgICAgIGNhc2UgJzIvMyAxLzMnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnMmZyIDFmcic7XG4gICAgICAgICAgICBjYXNlICczLzQgMS80JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzNmciAxZnInO1xuICAgICAgICAgICAgZGVmYXVsdDogLy8gRm9yIG9uZSBjb2x1bW4uXG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoU3BsaXQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VjdGlvbkNvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgICAgIGxldCBjc3NTcGxpdFN0cmluZyA9IHRoaXMuZ2V0Q3NzU3BsaXRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyBHbyBmb3IgYWxsIHRoZSBjb2x1bW5zIGluIHRoZSBjb2x1bW5zV3JhcHBlclxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc0VsZW1lbnRSZWYudG9BcnJheSgpLm1hcCgoc2VjdGlvbiwgc2VjdGlvbkluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhvcml6b250YWwgKHRydWUpIGZvciBsYXJnZSBzY3JlZW5zLCBmYWxzZSBmb3Igc21hbGwgc2NyZWVucy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsVmlldyA9IHRoaXMuc2NyZWVuU2l6ZSA8PSB0aGlzLnBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWxWaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb24ubmF0aXZlRWxlbWVudCwgJ2dyaWQtYXV0by1mbG93JywgJ2NvbHVtbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCAndW5zZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJywgY3NzU3BsaXRTdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLWF1dG8tZmxvdycsICdyb3cnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJywgJ3Vuc2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb24ubmF0aXZlRWxlbWVudCwgJ2dyaWQtdGVtcGxhdGUtcm93cycsIGNzc1NwbGl0U3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gcnVudGltZSAob3IgcHJldmlldyBtb2RlKS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc1NwbGl0QXJyYXkgPSBjc3NTcGxpdFN0cmluZy5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzb21lIGhpZGRlbiBjb2x1bW5zIGNoYW5nZSB0aGUgY29sdW1uIHdpZHRoIHRvIDAgKGZvciBjdXQgdGhlIHNwYWNpbmcgaW4gdGhlIGdyaWQtdGVtcGxhdGUtcm93cykuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2x1bW4uQmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc1NwbGl0QXJyYXlbaW5kZXhdID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCAnYXV0bycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCBjc3NTcGxpdEFycmF5LmpvaW4oJyAnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdHlsZUhlaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMuaGVpZ2h0ID4gMCAmJiB0aGlzLnNjcmVlblR5cGUgIT09ICdQaGFibGV0Jykge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUhlaWdodCA9IHRoaXMuc3R5bGVNYXhIZWlnaHQgPSBgJHt0aGlzLmhlaWdodH1weGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlSGVpZ2h0ID0gdGhpcy5zdHlsZU1heEhlaWdodCA9ICd1bnNldCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJc0RyYWdnaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kcmFnZ2luZ0Jsb2NrS2V5Lmxlbmd0aCA+IDAgJiYgdGhpcy5kcmFnZ2luZ1NlY3Rpb25LZXkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXRJc0hpZGRlbihoaWRlSW46IERhdGFWaWV3U2NyZWVuU2l6ZVtdIHwgdW5kZWZpbmVkLCBjdXJyZW50U2NyZWVuVHlwZTogRGF0YVZpZXdTY3JlZW5TaXplKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLmdldElzSGlkZGVuKGhpZGVJbiwgY3VycmVudFNjcmVlblR5cGUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLnByZXZpZXdNb2RlQ2hhbmdlJC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZShwcmV2aWV3TW9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTcGxpdCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBKdXN0IHRvIGNhbGN1bGF0ZSBpZiBzZWN0aW9ucyBjb250YWlucyBibG9ja3NcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5zZWN0aW9uc0NoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSWZTZWN0aW9uQ29udGFpbnNCbG9ja3MoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoc2l6ZTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcmVlblNpemUgPSBzaXplO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLnNjcmVlblNpemVDaGFuZ2UkLnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChzaXplOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLnNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0Q2hhbmdlJC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoc2VjdGlvbnNDb2x1bW5zRHJvcExpc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNDb2x1bW5zRHJvcExpc3QgPSBzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLmVkaXRvckNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKGVkaXRvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01haW5FZGl0b3JTdGF0ZSA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ2xheW91dC1idWlsZGVyJztcbiAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ3NlY3Rpb24nICYmIGVkaXRvci5pZCA9PT0gdGhpcy5rZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlY3Rpb25LZXkgPSBlZGl0b3IgJiYgZWRpdG9yLnR5cGUgPT09ICdzZWN0aW9uJyA/IGVkaXRvci5pZCA6ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCbG9ja0tleSA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ2Jsb2NrJyA/IGVkaXRvci5pZCA6ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UuZHJhZ2dpbmdCbG9ja0tleS5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoZHJhZ2dpbmdCbG9ja0tleTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZ0Jsb2NrS2V5ID0gZHJhZ2dpbmdCbG9ja0tleTtcblxuICAgICAgICAgICAgICAgIGlmIChkcmFnZ2luZ0Jsb2NrS2V5ID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUlmU2VjdGlvbkNvbnRhaW5zQmxvY2tzKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgYmxvY2sgaW4gdGhlIHNlY3Rpb24gYW5kIG5vdyBpdCdzIHRoaXMgYmxvY2sgdGhhdCB0aGUgdXNlciBpcyBkcmFnZ2luZy5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzTGVuZ3RoID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLkJsb2NrQ29udGFpbmVyKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9ja3NMZW5ndGggPT09IDEgJiYgdGhpcy5jb2x1bW5zLmZpbmQoYyA9PiBjLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSA9PT0gdGhpcy5kcmFnZ2luZ0Jsb2NrS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRTZXREZWZhdWx0SGVpZ2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UuZHJhZ2dpbmdTZWN0aW9uS2V5LnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChkcmFnZ2luZ1NlY3Rpb25LZXk6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdTZWN0aW9uS2V5ID0gZHJhZ2dpbmdTZWN0aW9uS2V5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlY3Rpb25Db2x1bW5LZXlQcmVmaXggPSB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLmdldFNlY3Rpb25Db2x1bW5LZXkodGhpcy5rZXkpO1xuICAgIH1cblxuICAgIG9uRWRpdFNlY3Rpb25DbGljaygpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5uYXZpZ2F0ZVRvRWRpdG9yKCdzZWN0aW9uJywgdGhpcy5rZXkpO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlU2VjdGlvbkNsaWNrKCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLnJlbW92ZVNlY3Rpb24odGhpcy5rZXkpO1xuICAgIH1cblxuICAgIG9uSGlkZVNlY3Rpb25DaGFuZ2UoaGlkZUluOiBEYXRhVmlld1NjcmVlblNpemVbXSkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLmhpZGVTZWN0aW9uKHRoaXMua2V5LCBoaWRlSW4pO1xuICAgIH1cblxuICAgIG9uSGlkZUluTWVudU9wZW5lZCgpIHtcbiAgICAgICAgdGhpcy5ob3ZlclN0YXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkhpZGVJbk1lbnVDbG9zZWQoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJTdGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uQmxvY2tEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiwgYW55LCBhbnk+KSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2Uub25CbG9ja0Ryb3BwZWQoZXZlbnQsIHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBjYW5Ecm9wUHJlZGljYXRlKGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIChkcmFnOiBDZGtEcmFnLCBkcm9wOiBDZGtEcm9wTGlzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gIXRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UuZG9lc0NvbHVtbkNvbnRhaW5CbG9jayh0aGlzLmtleSwgY29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2Uub25TZWN0aW9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5vblNlY3Rpb25EcmFnRW5kKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNlY3Rpb25CbG9ja0RyYWdFeGl0ZWQoZXZlbnQ6IENka0RyYWdFeGl0KSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgb25TZWN0aW9uQmxvY2tEcmFnRW50ZXJlZChldmVudDogQ2RrRHJhZ0VudGVyKSB7XG4gICAgICAgIC8vXG4gICAgfVxufVxuIiwiPGRpdiAjc2VjdGlvbkNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlIHx8IChjb250YWluc0Jsb2NrcyAmJiAhaGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKVwiIGNsYXNzPVwic2VjdGlvbi1jb250YWluZXIgXCJcbiAgICBbbmdDbGFzc109XCJ7IFxuICAgICAgICAnbW9iaWxlJzogc2NyZWVuVHlwZSA9PT0gJ1BoYWJsZXQnLFxuICAgICAgICAnZWRpdGFibGUtc3RhdGUnOiBlZGl0YWJsZSwgJ21haW4tZWRpdG9yLXN0YXRlJzogaXNNYWluRWRpdG9yU3RhdGUsICdkZWZhdWx0LWhlaWdodCc6IHNob3VsZFNldERlZmF1bHRIZWlnaHQsICdhY3RpdmUtc2VjdGlvbic6IGlzRWRpdGluZyxcbiAgICAgICAgJ3NlY3Rpb24taGlkZGVuLXN0YXRlJzogaGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlLCAnc2VjdGlvbi1pcy1kcmFnZ2luZyc6IGRyYWdnaW5nU2VjdGlvbktleSAhPT0gJycsICdzaG93LWhvdmVyLXN0YXRlJzogaG92ZXJTdGF0ZSB9XCIgXG4gICAgICAgIGNka0RyYWdCb3VuZGFyeT1cIi5sYXlvdXQtYnVpbGRlci13cmFwcGVyXCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwia2V5XCIgW2Nka0RyYWdEaXNhYmxlZF09XCIhZWRpdGFibGUgfHwgc2VsZWN0ZWRTZWN0aW9uS2V5Lmxlbmd0aCA+IDAgfHwgc2VsZWN0ZWRCbG9ja0tleS5sZW5ndGggPiAwXCIgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIiAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCIgXG4gICAgPlxuICAgIDxwZXAtZHJhZ2dhYmxlLWl0ZW0gKm5nSWY9XCJlZGl0YWJsZSAmJiBpc01haW5FZGl0b3JTdGF0ZSAmJiBkcmFnZ2luZ1NlY3Rpb25LZXkgPT09ICcnXCIgY2RrRHJhZ0hhbmRsZSBzdHlsZT1cImN1cnNvcjogZ3JhYjtcIlxuICAgICAgICBjbGFzcz1cInNlY3Rpb24tdG9vbGJhclwiIFtuZ0NsYXNzXT1cInsgJ2hpZGUtdG9vbGJhcic6ICFob3ZlclN0YXRlIH1cIiBbdGl0bGVdPVwibmFtZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIHBlcC1hY3Rpb25zPlxuICAgICAgICAgICAgPHBlcC1idXR0b24gY2xhc3NOYW1lcz1cImNhdXRpb25cIiBzaXplVHlwZT1cInhzXCIgaWNvbk5hbWU9XCJzeXN0ZW1fYmluXCIgKGJ1dHRvbkNsaWNrKT1cIm9uUmVtb3ZlU2VjdGlvbkNsaWNrKCk7XCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICAgICAgPGhpZGUtaW4gW2hpZGVJbl09XCJoaWRlSW5cIiAoaGlkZUluQ2hhbmdlKT1cIm9uSGlkZVNlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiIChtZW51Q2xvc2VkKT1cIm9uSGlkZUluTWVudUNsb3NlZCgpXCIgKG1lbnVPcGVuZWQpPVwib25IaWRlSW5NZW51T3BlbmVkKClcIj48L2hpZGUtaW4+XG4gICAgICAgICAgICA8cGVwLWJ1dHRvbiBzaXplVHlwZT1cInhzXCIgaWNvbk5hbWU9XCJzeXN0ZW1fZWRpdFwiIChidXR0b25DbGljayk9XCJvbkVkaXRTZWN0aW9uQ2xpY2soKTtcIj48L3BlcC1idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcGVwLWRyYWdnYWJsZS1pdGVtPlxuXG4gICAgPGRpdiAqbmdJZj1cImVkaXRhYmxlXCIgY2xhc3M9XCJzZWN0aW9uLWJhY2tncm91bmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2stdGVtcGxhdGVcIiAqbmdGb3I9XCJsZXQgbnVtYmVyIG9mIFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExXVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgI2NvbHVtbnNXcmFwcGVyIGNsYXNzPVwiY29sdW1ucy13cmFwcGVyIGdhcC17eyBjb2x1bW5zR2FwIH19XCIgXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21vYmlsZSc6IHNjcmVlblR5cGUgPT09ICdQaGFibGV0JywgJ2lzLWRyYWdnaW5nJzogZWRpdGFibGUgJiYgZ2V0SXNEcmFnZ2luZyB9XCI+XG4gICAgICAgIDxkaXYgW2lkXT1cInNlY3Rpb25Db2x1bW5LZXlQcmVmaXggKyBpXCIgXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpPWluZGV4O1wiXG4gICAgICAgICAgICBjbGFzcz1cInNlY3Rpb24tY29sdW1uIHt7c2NyZWVuU2l6ZSA8PSBwZXBTY3JlZW5TaXplVG9GbGlwVG9WZXJ0aWNhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCd9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhY3RpdmUtY29sdW1uJzogc2VsZWN0ZWRCbG9ja0tleSA9PT0gY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSwgXG4gICAgICAgICAgICAgICAgJ2lzLWhpZGRlbic6IGdldElzSGlkZGVuKGNvbHVtbj8uQmxvY2tDb250YWluZXI/LkhpZGUsIHNjcmVlblR5cGUpLFxuICAgICAgICAgICAgICAgICdhbHJlYWR5LWNvbnRhaW5zLWJsb2NrJzogZWRpdGFibGUgJiYgY29sdW1uLkJsb2NrQ29udGFpbmVyICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleSAmJiBjb2x1bW4uQmxvY2tDb250YWluZXIuQmxvY2tLZXkubGVuZ3RoID4gMCAmJiBcbiAgICAgICAgICAgICAgICAgICAgZHJhZ2dpbmdCbG9ja0tleSAmJiBkcmFnZ2luZ0Jsb2NrS2V5Lmxlbmd0aCA+IDAgJiYgY29sdW1uLkJsb2NrQ29udGFpbmVyLkJsb2NrS2V5ICE9PSBkcmFnZ2luZ0Jsb2NrS2V5IH1cIlxuICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sdW1uXCJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdE9yaWVudGF0aW9uXT1cInNjcmVlblNpemUgPD0gcGVwU2NyZWVuU2l6ZVRvRmxpcFRvVmVydGljYWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnXCIgXG4gICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdFwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQmxvY2tEcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY2FuRHJvcFByZWRpY2F0ZShpKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzZWN0aW9uLWJsb2NrICpuZ0lmPVwiY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleVwiIGNsYXNzPVwic2VjdGlvbi1ibG9ja1wiIFtzZWN0aW9uS2V5XT1cImtleVwiIFtibG9ja1RlbXBsYXRlXT1cImJsb2NrVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtibG9ja0NvbnRhaW5lcl09XCJjb2x1bW4uQmxvY2tDb250YWluZXJcIiBbZWRpdGFibGVdPVwiZWRpdGFibGVcIiBbaXNNYWluRWRpdG9yU3RhdGVdPVwiaXNNYWluRWRpdG9yU3RhdGVcIiBbc2VjdGlvbkhlaWdodF09XCJzdHlsZUhlaWdodFwiXG4gICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJzZWxlY3RlZEJsb2NrS2V5ID09PSBjb2x1bW4uQmxvY2tDb250YWluZXI/LkJsb2NrS2V5XCIgW3NjcmVlblR5cGVdPVwic2NyZWVuVHlwZVwiXG4gICAgICAgICAgICAgICAgKGRyYWdFeGl0ZWQpPVwib25TZWN0aW9uQmxvY2tEcmFnRXhpdGVkKCRldmVudClcIiAoZHJhZ0VudGVyZWQpPVwib25TZWN0aW9uQmxvY2tEcmFnRW50ZXJlZCgkZXZlbnQpXCI+PC9zZWN0aW9uLWJsb2NrPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,45 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { SectionComponent } from './section.component';
4
+ import { SectionBlockModule } from '../section-block/section-block.module';
5
+ import { DragDropModule } from '@angular/cdk/drag-drop';
6
+ import { PepButtonModule } from '@pepperi-addons/ngx-lib/button';
7
+ import { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';
8
+ import { PepHideInModule } from '../hide-in/hide-in.module';
9
+ import { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';
10
+ import * as i0 from "@angular/core";
11
+ export class SectionModule {
12
+ }
13
+ SectionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ SectionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: SectionModule, declarations: [SectionComponent], imports: [CommonModule,
15
+ DragDropModule,
16
+ PepButtonModule,
17
+ PepRemoteLoaderModule,
18
+ SectionBlockModule,
19
+ PepHideInModule,
20
+ PepDraggableItemsModule], exports: [SectionComponent] });
21
+ SectionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionModule, imports: [CommonModule,
22
+ DragDropModule,
23
+ PepButtonModule,
24
+ PepRemoteLoaderModule,
25
+ SectionBlockModule,
26
+ PepHideInModule,
27
+ PepDraggableItemsModule] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ declarations: [SectionComponent],
32
+ imports: [
33
+ CommonModule,
34
+ DragDropModule,
35
+ PepButtonModule,
36
+ PepRemoteLoaderModule,
37
+ SectionBlockModule,
38
+ PepHideInModule,
39
+ PepDraggableItemsModule,
40
+ // TranslateModule.forChild()
41
+ ],
42
+ exports: [SectionComponent]
43
+ }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlci9zZWN0aW9uL3NlY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQWdCbEYsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFiUCxnQkFBZ0IsYUFFM0IsWUFBWTtRQUNaLGNBQWM7UUFDZCxlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsdUJBQXVCLGFBR2pCLGdCQUFnQjsyR0FFakIsYUFBYSxZQVhsQixZQUFZO1FBQ1osY0FBYztRQUNkLGVBQWU7UUFDZixxQkFBcUI7UUFDckIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZix1QkFBdUI7MkZBS2xCLGFBQWE7a0JBZHpCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLDZCQUE2QjtxQkFDaEM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWN0aW9uQmxvY2tNb2R1bGUgfSBmcm9tICcuLi9zZWN0aW9uLWJsb2NrL3NlY3Rpb24tYmxvY2subW9kdWxlJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBQZXBCdXR0b25Nb2R1bGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9idXR0b24nO1xuaW1wb3J0IHsgUGVwUmVtb3RlTG9hZGVyTW9kdWxlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvcmVtb3RlLWxvYWRlcic7XG5cbmltcG9ydCB7IFBlcEhpZGVJbk1vZHVsZSB9IGZyb20gJy4uL2hpZGUtaW4vaGlkZS1pbi5tb2R1bGUnO1xuaW1wb3J0IHsgUGVwRHJhZ2dhYmxlSXRlbXNNb2R1bGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kcmFnZ2FibGUtaXRlbXMnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NlY3Rpb25Db21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgUGVwQnV0dG9uTW9kdWxlLFxuICAgICAgICBQZXBSZW1vdGVMb2FkZXJNb2R1bGUsXG4gICAgICAgIFNlY3Rpb25CbG9ja01vZHVsZSxcbiAgICAgICAgUGVwSGlkZUluTW9kdWxlLFxuICAgICAgICBQZXBEcmFnZ2FibGVJdGVtc01vZHVsZSxcbiAgICAgICAgLy8gVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKClcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtTZWN0aW9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBTZWN0aW9uTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,109 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../layout-builder-internal.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/cdk/drag-drop";
7
+ import * as i4 from "@pepperi-addons/ngx-lib/button";
8
+ import * as i5 from "@pepperi-addons/ngx-lib/draggable-items";
9
+ export class SectionBlockComponent extends BaseDestroyerDirective {
10
+ constructor(layoutBuilderService) {
11
+ super();
12
+ this.layoutBuilderService = layoutBuilderService;
13
+ this.sectionKey = '';
14
+ this.sectionHeight = '';
15
+ this.isMainEditorState = false;
16
+ this.editable = false;
17
+ this.active = false;
18
+ this.dragExited = new EventEmitter();
19
+ this.dragEntered = new EventEmitter();
20
+ this.hideForCurrentScreenType = false;
21
+ }
22
+ set blockContainer(value) {
23
+ this._blockContainer = value;
24
+ if (this._blockContainer) {
25
+ this.availableBlock = this.layoutBuilderService.availableBlocksForDragMap?.get(this._blockContainer?.DraggableItemKey);
26
+ }
27
+ this.setIfHideForCurrentScreenType();
28
+ }
29
+ get blockContainer() {
30
+ return this._blockContainer;
31
+ }
32
+ set screenType(value) {
33
+ this._screenType = value;
34
+ this.setIfHideForCurrentScreenType();
35
+ }
36
+ get screenType() {
37
+ return this._screenType;
38
+ }
39
+ setIfHideForCurrentScreenType() {
40
+ this.hideForCurrentScreenType = this.blockContainer ?
41
+ this.layoutBuilderService.getIsHidden(this.blockContainer.Hide, this.screenType) : false;
42
+ }
43
+ ngOnInit() {
44
+ //
45
+ this.layoutBuilderService.availableBlocksForDragMapChange$.pipe(this.getDestroyer()).subscribe((availableBlocksForDragMap) => {
46
+ if (availableBlocksForDragMap && this.blockContainer) {
47
+ this.availableBlock = availableBlocksForDragMap.get(this.blockContainer.DraggableItemKey);
48
+ }
49
+ });
50
+ }
51
+ onEditBlockClick() {
52
+ if (this.blockContainer?.BlockKey) {
53
+ this.layoutBuilderService.navigateToEditor('block', this.blockContainer.BlockKey);
54
+ }
55
+ }
56
+ onRemoveBlockClick() {
57
+ if (this.blockContainer?.BlockKey) {
58
+ this.layoutBuilderService.removeBlockFromSection(this.blockContainer.BlockKey);
59
+ }
60
+ }
61
+ onHideBlockChange(hideIn) {
62
+ if (this.blockContainer?.BlockKey) {
63
+ this.layoutBuilderService.hideBlock(this.sectionKey, this.blockContainer.BlockKey, hideIn);
64
+ this.setIfHideForCurrentScreenType();
65
+ }
66
+ }
67
+ // onBlockLoad(event: any) {
68
+ // this.layoutBuilderService.updateBlockLoaded(this.blockContainer.BlockKey);
69
+ // }
70
+ onDragStart(event) {
71
+ this.layoutBuilderService.onBlockDragStart(event);
72
+ }
73
+ onDragEnd(event) {
74
+ this.layoutBuilderService.onBlockDragEnd(event);
75
+ }
76
+ onDragExited(event) {
77
+ this.dragExited.emit(event);
78
+ }
79
+ onDragEntered(event) {
80
+ this.dragEntered.emit(event);
81
+ }
82
+ }
83
+ SectionBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionBlockComponent, deps: [{ token: i1.LayoutBuilderInternalService }], target: i0.ɵɵFactoryTarget.Component });
84
+ SectionBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: SectionBlockComponent, selector: "section-block", inputs: { blockTemplate: "blockTemplate", sectionKey: "sectionKey", sectionHeight: "sectionHeight", isMainEditorState: "isMainEditorState", editable: "editable", active: "active", blockContainer: "blockContainer", screenType: "screenType" }, outputs: { dragExited: "dragExited", dragEntered: "dragEntered" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"blockContainer?.BlockKey && (editable || !hideForCurrentScreenType)\" \n class=\"section-block-container\"\n [ngClass]=\"{ 'editable-state': editable, 'block-hidden-state': hideForCurrentScreenType, 'active-block': active }\"\n cdkDrag [cdkDragData]=\"blockContainer\" [cdkDragDisabled]=\"!editable || !isMainEditorState\" \n (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\"\n (cdkDragExited)=\"onDragExited($event)\" (cdkDragEntered)=\"onDragEntered($event)\">\n \n <pep-draggable-item *ngIf=\"editable && isMainEditorState\" cdkDragHandle style=\"cursor: grab;\"\n class=\"block-toolbar\" [title]=\"availableBlock?.title || blockContainer?.BlockKey || ''\" >\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveBlockClick();\"></pep-button>\n <!-- <hide-in [hideIn]=\"blockContainer.Hide\" (hideInChange)=\"onHideBlockChange($event)\"></hide-in> -->\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditBlockClick();\"></pep-button>\n </ng-container>f\n </pep-draggable-item>\n <div class=\"block-template-wrapper\" [ngStyle]=\"{ 'overflow': (sectionHeight === 'unset' ? 'unset' : 'auto') }\">\n <div *ngIf=\"blockTemplate\" class=\"block-template\">\n <ng-container *ngTemplateOutlet=\"blockTemplate; context: { blockKey: blockContainer?.BlockKey, draggableItemKey: blockContainer?.DraggableItemKey }\">\n </ng-container>\n </div>\n <!-- <pep-remote-loader-element *ngIf=\"remoteLoaderOptions\" class=\"remote-loader\"\n [options]=\"remoteLoaderOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onBlockHostEventsCallback }\"\n (load)=\"onBlockLoad($event)\">\n </pep-remote-loader-element> -->\n </div>\n</div>\n", styles: [".section-block-container{height:100%;width:100%}.section-block-container.editable-state:not(.active-block) .block-template-wrapper .block-template{pointer-events:none;opacity:.5}.section-block-container.editable-state.cdk-drag-preview .block-template-wrapper,.section-block-container.editable-state.cdk-drag-placeholder .block-toolbar{opacity:0}.section-block-container.editable-state .block-toolbar{position:absolute;top:50%;left:50%;width:95%;max-width:240px;transform:translate(-50%,-50%);z-index:3}.section-block-container.editable-state .block-toolbar:hover{z-index:12!important}.section-block-container .block-template-wrapper{height:100%;position:relative}.section-block-container .block-template-wrapper .block-template{display:block;height:100%;width:100%}\n", ".section-block-container.editable-state.block-hidden-state:not(.active-block){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i4.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i5.DraggableItemComponent, selector: "pep-draggable-item", inputs: ["title", "titlePrefix", "titleClassNames", "data", "disabled", "shadow", "styleType", "toggleContent", "isToggleContentOpen", "actionsMenu", "menuStyleType"], outputs: ["contentToggle", "actionsMenuItemClick"] }] });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionBlockComponent, decorators: [{
86
+ type: Component,
87
+ args: [{ selector: 'section-block', template: "<div *ngIf=\"blockContainer?.BlockKey && (editable || !hideForCurrentScreenType)\" \n class=\"section-block-container\"\n [ngClass]=\"{ 'editable-state': editable, 'block-hidden-state': hideForCurrentScreenType, 'active-block': active }\"\n cdkDrag [cdkDragData]=\"blockContainer\" [cdkDragDisabled]=\"!editable || !isMainEditorState\" \n (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\"\n (cdkDragExited)=\"onDragExited($event)\" (cdkDragEntered)=\"onDragEntered($event)\">\n \n <pep-draggable-item *ngIf=\"editable && isMainEditorState\" cdkDragHandle style=\"cursor: grab;\"\n class=\"block-toolbar\" [title]=\"availableBlock?.title || blockContainer?.BlockKey || ''\" >\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveBlockClick();\"></pep-button>\n <!-- <hide-in [hideIn]=\"blockContainer.Hide\" (hideInChange)=\"onHideBlockChange($event)\"></hide-in> -->\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditBlockClick();\"></pep-button>\n </ng-container>f\n </pep-draggable-item>\n <div class=\"block-template-wrapper\" [ngStyle]=\"{ 'overflow': (sectionHeight === 'unset' ? 'unset' : 'auto') }\">\n <div *ngIf=\"blockTemplate\" class=\"block-template\">\n <ng-container *ngTemplateOutlet=\"blockTemplate; context: { blockKey: blockContainer?.BlockKey, draggableItemKey: blockContainer?.DraggableItemKey }\">\n </ng-container>\n </div>\n <!-- <pep-remote-loader-element *ngIf=\"remoteLoaderOptions\" class=\"remote-loader\"\n [options]=\"remoteLoaderOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onBlockHostEventsCallback }\"\n (load)=\"onBlockLoad($event)\">\n </pep-remote-loader-element> -->\n </div>\n</div>\n", styles: [".section-block-container{height:100%;width:100%}.section-block-container.editable-state:not(.active-block) .block-template-wrapper .block-template{pointer-events:none;opacity:.5}.section-block-container.editable-state.cdk-drag-preview .block-template-wrapper,.section-block-container.editable-state.cdk-drag-placeholder .block-toolbar{opacity:0}.section-block-container.editable-state .block-toolbar{position:absolute;top:50%;left:50%;width:95%;max-width:240px;transform:translate(-50%,-50%);z-index:3}.section-block-container.editable-state .block-toolbar:hover{z-index:12!important}.section-block-container .block-template-wrapper{height:100%;position:relative}.section-block-container .block-template-wrapper .block-template{display:block;height:100%;width:100%}\n", ".section-block-container.editable-state.block-hidden-state:not(.active-block){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}\n"] }]
88
+ }], ctorParameters: function () { return [{ type: i1.LayoutBuilderInternalService }]; }, propDecorators: { blockTemplate: [{
89
+ type: Input
90
+ }], sectionKey: [{
91
+ type: Input
92
+ }], sectionHeight: [{
93
+ type: Input
94
+ }], isMainEditorState: [{
95
+ type: Input
96
+ }], editable: [{
97
+ type: Input
98
+ }], active: [{
99
+ type: Input
100
+ }], blockContainer: [{
101
+ type: Input
102
+ }], screenType: [{
103
+ type: Input
104
+ }], dragExited: [{
105
+ type: Output
106
+ }], dragEntered: [{
107
+ type: Output
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlci9zZWN0aW9uLWJsb2NrL3NlY3Rpb24tYmxvY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvbGF5b3V0LWJ1aWxkZXIvc2VjdGlvbi1ibG9jay9zZWN0aW9uLWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBSXZHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBV2pFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUF3QzdELFlBQ1ksb0JBQWtEO1FBRTFELEtBQUssRUFBRSxDQUFDO1FBRkEseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE4QjtRQXRDckQsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBMEJkLGVBQVUsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzRCxnQkFBVyxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTdELDZCQUF3QixHQUFHLEtBQUssQ0FBQztJQVEzQyxDQUFDO0lBbENELElBQ0ksY0FBYyxDQUFDLEtBQTJDO1FBQzFELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElB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TWhCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJRixjQUFjO3NCQURqQixLQUFLO2dCQWVGLFVBQVU7c0JBRGIsS0FBSztnQkFTSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtEcmFnRW5kLCBDZGtEcmFnRW50ZXIsIENka0RyYWdFeGl0LCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGF0YVZpZXdTY3JlZW5TaXplIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL3BhcGktc2RrJztcbmltcG9ydCB7IEJhc2VEZXN0cm95ZXJEaXJlY3RpdmUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBJUGVwRHJhZ2dhYmxlSXRlbSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RyYWdnYWJsZS1pdGVtcyc7XG5pbXBvcnQgeyBQZXBSZW1vdGVMb2FkZXJPcHRpb25zIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvcmVtb3RlLWxvYWRlcic7XG5pbXBvcnQgeyBMYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlIH0gZnJvbSAnLi4vbGF5b3V0LWJ1aWxkZXItaW50ZXJuYWwuc2VydmljZSc7XG5pbXBvcnQgeyBJUGVwTGF5b3V0QmxvY2tDb250YWluZXIgfSBmcm9tICcuLi9sYXlvdXQtYnVpbGRlci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2VjdGlvbi1ibG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlY3Rpb24tYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlY3Rpb24tYmxvY2suY29tcG9uZW50LnNjc3MnLCAnLi9zZWN0aW9uLWJsb2NrLmNvbXBvbmVudC50aGVtZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VjdGlvbkJsb2NrQ29tcG9uZW50IGV4dGVuZHMgQmFzZURlc3Ryb3llckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgXG4gICAgQElucHV0KCkgYmxvY2tUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBzZWN0aW9uS2V5OiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBzZWN0aW9uSGVpZ2h0OiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBpc01haW5FZGl0b3JTdGF0ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGVkaXRhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KCkgYWN0aXZlID0gZmFsc2U7XG4gICAgXG4gICAgcHJpdmF0ZSBfYmxvY2tDb250YWluZXI6IElQZXBMYXlvdXRCbG9ja0NvbnRhaW5lciB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBibG9ja0NvbnRhaW5lcih2YWx1ZTogSVBlcExheW91dEJsb2NrQ29udGFpbmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Jsb2NrQ29udGFpbmVyID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9ibG9ja0NvbnRhaW5lcikge1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVCbG9jayA9IHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UuYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcD8uZ2V0KHRoaXMuX2Jsb2NrQ29udGFpbmVyPy5EcmFnZ2FibGVJdGVtS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGhpcy5zZXRJZkhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSgpO1xuICAgIH1cbiAgICBnZXQgYmxvY2tDb250YWluZXIoKTogSVBlcExheW91dEJsb2NrQ29udGFpbmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jsb2NrQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NjcmVlblR5cGUhOiBEYXRhVmlld1NjcmVlblNpemU7XG4gICAgQElucHV0KClcbiAgICBzZXQgc2NyZWVuVHlwZSh2YWx1ZTogRGF0YVZpZXdTY3JlZW5TaXplKSB7XG4gICAgICAgIHRoaXMuX3NjcmVlblR5cGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRJZkhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSgpO1xuICAgIH1cbiAgICBnZXQgc2NyZWVuVHlwZSgpOiBEYXRhVmlld1NjcmVlblNpemUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2NyZWVuVHlwZTtcbiAgICB9XG4gICAgXG4gICAgQE91dHB1dCgpIGRyYWdFeGl0ZWQ6IEV2ZW50RW1pdHRlcjxDZGtEcmFnRXhpdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGRyYWdFbnRlcmVkOiBFdmVudEVtaXR0ZXI8Q2RrRHJhZ0VudGVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByb3RlY3RlZCBoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUgPSBmYWxzZTtcbiAgICAvLyBwcm90ZWN0ZWQgcmVtb3RlTG9hZGVyT3B0aW9uczogUGVwUmVtb3RlTG9hZGVyT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgYXZhaWxhYmxlQmxvY2s6IElQZXBEcmFnZ2FibGVJdGVtIHwgdW5kZWZpbmVkO1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGxheW91dEJ1aWxkZXJTZXJ2aWNlOiBMYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIHNldElmSGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSA9IHRoaXMuYmxvY2tDb250YWluZXIgPyBcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UuZ2V0SXNIaWRkZW4odGhpcy5ibG9ja0NvbnRhaW5lci5IaWRlLCB0aGlzLnNjcmVlblR5cGUpIDogZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5hdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwQ2hhbmdlJC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXAgJiYgdGhpcy5ibG9ja0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlQmxvY2sgPSAoYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcCBhcyBSZWFkb25seU1hcDxzdHJpbmcsIElQZXBEcmFnZ2FibGVJdGVtPikuZ2V0KHRoaXMuYmxvY2tDb250YWluZXIuRHJhZ2dhYmxlSXRlbUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRWRpdEJsb2NrQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVyU2VydmljZS5uYXZpZ2F0ZVRvRWRpdG9yKCdibG9jaycsIHRoaXMuYmxvY2tDb250YWluZXIuQmxvY2tLZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZW1vdmVCbG9ja0NsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NvbnRhaW5lcj8uQmxvY2tLZXkpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UucmVtb3ZlQmxvY2tGcm9tU2VjdGlvbih0aGlzLmJsb2NrQ29udGFpbmVyLkJsb2NrS2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSGlkZUJsb2NrQ2hhbmdlKGhpZGVJbjogRGF0YVZpZXdTY3JlZW5TaXplW10pIHtcbiAgICAgICAgaWYgKHRoaXMuYmxvY2tDb250YWluZXI/LkJsb2NrS2V5KSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLmhpZGVCbG9jayh0aGlzLnNlY3Rpb25LZXksIHRoaXMuYmxvY2tDb250YWluZXIuQmxvY2tLZXksIGhpZGVJbik7XG4gICAgICAgICAgICB0aGlzLnNldElmSGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBvbkJsb2NrTG9hZChldmVudDogYW55KSB7XG4gICAgLy8gICAgIHRoaXMubGF5b3V0QnVpbGRlclNlcnZpY2UudXBkYXRlQmxvY2tMb2FkZWQodGhpcy5ibG9ja0NvbnRhaW5lci5CbG9ja0tleSk7XG4gICAgLy8gfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLm9uQmxvY2tEcmFnU3RhcnQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJTZXJ2aWNlLm9uQmxvY2tEcmFnRW5kKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFeGl0ZWQoZXZlbnQ6IENka0RyYWdFeGl0KSB7XG4gICAgICAgIHRoaXMuZHJhZ0V4aXRlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbnRlcmVkKGV2ZW50OiBDZGtEcmFnRW50ZXIpIHtcbiAgICAgICAgdGhpcy5kcmFnRW50ZXJlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiYmxvY2tDb250YWluZXI/LkJsb2NrS2V5ICYmIChlZGl0YWJsZSB8fCAhaGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKVwiIFxuICAgIGNsYXNzPVwic2VjdGlvbi1ibG9jay1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2VkaXRhYmxlLXN0YXRlJzogZWRpdGFibGUsICdibG9jay1oaWRkZW4tc3RhdGUnOiBoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUsICdhY3RpdmUtYmxvY2snOiBhY3RpdmUgfVwiXG4gICAgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwiYmxvY2tDb250YWluZXJcIiBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFlZGl0YWJsZSB8fCAhaXNNYWluRWRpdG9yU3RhdGVcIiBcbiAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kKCRldmVudClcIlxuICAgIChjZGtEcmFnRXhpdGVkKT1cIm9uRHJhZ0V4aXRlZCgkZXZlbnQpXCIgKGNka0RyYWdFbnRlcmVkKT1cIm9uRHJhZ0VudGVyZWQoJGV2ZW50KVwiPlxuICAgXG4gICAgPHBlcC1kcmFnZ2FibGUtaXRlbSAqbmdJZj1cImVkaXRhYmxlICYmIGlzTWFpbkVkaXRvclN0YXRlXCIgY2RrRHJhZ0hhbmRsZSBzdHlsZT1cImN1cnNvcjogZ3JhYjtcIlxuICAgICAgICBjbGFzcz1cImJsb2NrLXRvb2xiYXJcIiBbdGl0bGVdPVwiYXZhaWxhYmxlQmxvY2s/LnRpdGxlIHx8IGJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSB8fCAnJ1wiID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBwZXAtYWN0aW9ucz5cbiAgICAgICAgICAgIDxwZXAtYnV0dG9uIGNsYXNzTmFtZXM9XCJjYXV0aW9uXCIgc2l6ZVR5cGU9XCJ4c1wiIGljb25OYW1lPVwic3lzdGVtX2JpblwiIChidXR0b25DbGljayk9XCJvblJlbW92ZUJsb2NrQ2xpY2soKTtcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICA8IS0tIDxoaWRlLWluIFtoaWRlSW5dPVwiYmxvY2tDb250YWluZXIuSGlkZVwiIChoaWRlSW5DaGFuZ2UpPVwib25IaWRlQmxvY2tDaGFuZ2UoJGV2ZW50KVwiPjwvaGlkZS1pbj4gLS0+XG4gICAgICAgICAgICA8cGVwLWJ1dHRvbiBzaXplVHlwZT1cInhzXCIgaWNvbk5hbWU9XCJzeXN0ZW1fZWRpdFwiIChidXR0b25DbGljayk9XCJvbkVkaXRCbG9ja0NsaWNrKCk7XCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5mXG4gICAgPC9wZXAtZHJhZ2dhYmxlLWl0ZW0+XG4gICAgPGRpdiBjbGFzcz1cImJsb2NrLXRlbXBsYXRlLXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7ICdvdmVyZmxvdyc6IChzZWN0aW9uSGVpZ2h0ID09PSAndW5zZXQnID8gJ3Vuc2V0JyA6ICdhdXRvJykgfVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYmxvY2tUZW1wbGF0ZVwiIGNsYXNzPVwiYmxvY2stdGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJibG9ja1RlbXBsYXRlOyBjb250ZXh0OiB7IGJsb2NrS2V5OiBibG9ja0NvbnRhaW5lcj8uQmxvY2tLZXksIGRyYWdnYWJsZUl0ZW1LZXk6IGJsb2NrQ29udGFpbmVyPy5EcmFnZ2FibGVJdGVtS2V5IH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8cGVwLXJlbW90ZS1sb2FkZXItZWxlbWVudCAqbmdJZj1cInJlbW90ZUxvYWRlck9wdGlvbnNcIiBjbGFzcz1cInJlbW90ZS1sb2FkZXJcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwicmVtb3RlTG9hZGVyT3B0aW9uc1wiXG4gICAgICAgICAgICBbcHJvcHNdPVwieyBob3N0T2JqZWN0OiBob3N0T2JqZWN0IH1cIlxuICAgICAgICAgICAgW2V2ZW50c109XCJ7IGhvc3RFdmVudHM6IG9uQmxvY2tIb3N0RXZlbnRzQ2FsbGJhY2sgfVwiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkJsb2NrTG9hZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXJlbW90ZS1sb2FkZXItZWxlbWVudD4gLS0+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==