coer-elements 0.0.22 → 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. package/esm2022/coer-elements.mjs +2 -2
  2. package/esm2022/index.mjs +2 -0
  3. package/fesm2022/coer-elements.mjs +0 -4081
  4. package/fesm2022/coer-elements.mjs.map +1 -1
  5. package/index.d.ts +1 -5
  6. package/package.json +1 -1
  7. package/styles/angular-material.scss +8 -11
  8. package/styles/bootstrap.scss +3 -3
  9. package/components/index.d.ts +0 -16
  10. package/components/lib/coer-alert/coer-alert.component.d.ts +0 -23
  11. package/components/lib/coer-button/coer-button.component.d.ts +0 -44
  12. package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +0 -28
  13. package/components/lib/coer-filebox/coer-filebox.component.d.ts +0 -33
  14. package/components/lib/coer-form/coer-form.component.d.ts +0 -33
  15. package/components/lib/coer-grid/coer-grid.component.d.ts +0 -53
  16. package/components/lib/coer-grid/coer-grid.extension.d.ts +0 -105
  17. package/components/lib/coer-grid/coer-grid.templates.d.ts +0 -9
  18. package/components/lib/coer-modal/coer-modal.component.d.ts +0 -38
  19. package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +0 -56
  20. package/components/lib/coer-page-title/coer-page-title.component.d.ts +0 -12
  21. package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +0 -75
  22. package/components/lib/coer-switch/coer-switch.component.d.ts +0 -31
  23. package/components/lib/coer-tab/coer-tab.component.d.ts +0 -35
  24. package/components/lib/coer-textarea/coer-textarea.component.d.ts +0 -51
  25. package/components/lib/coer-textbox/coer-textbox.component.d.ts +0 -57
  26. package/components/lib/components.module.d.ts +0 -31
  27. package/directives/index.d.ts +0 -3
  28. package/directives/lib/coer-ref.directive.d.ts +0 -14
  29. package/directives/lib/directives.module.d.ts +0 -8
  30. package/directives/lib/life-cycle.directive.d.ts +0 -16
  31. package/esm2022/components/index.mjs +0 -17
  32. package/esm2022/components/lib/coer-alert/coer-alert.component.mjs +0 -227
  33. package/esm2022/components/lib/coer-button/coer-button.component.mjs +0 -133
  34. package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +0 -84
  35. package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +0 -104
  36. package/esm2022/components/lib/coer-form/coer-form.component.mjs +0 -102
  37. package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +0 -515
  38. package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +0 -412
  39. package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +0 -30
  40. package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +0 -108
  41. package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +0 -260
  42. package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +0 -44
  43. package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +0 -339
  44. package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +0 -94
  45. package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +0 -116
  46. package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +0 -157
  47. package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +0 -196
  48. package/esm2022/components/lib/components.module.mjs +0 -134
  49. package/esm2022/directives/index.mjs +0 -4
  50. package/esm2022/directives/lib/coer-ref.directive.mjs +0 -23
  51. package/esm2022/directives/lib/directives.module.mjs +0 -25
  52. package/esm2022/directives/lib/life-cycle.directive.mjs +0 -33
  53. package/esm2022/interfaces/index.mjs +0 -39
  54. package/esm2022/interfaces/lib/app-source.interface.mjs +0 -2
  55. package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +0 -2
  56. package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +0 -2
  57. package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +0 -2
  58. package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +0 -2
  59. package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +0 -2
  60. package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +0 -2
  61. package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +0 -2
  62. package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +0 -2
  63. package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +0 -2
  64. package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +0 -2
  65. package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +0 -2
  66. package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +0 -2
  67. package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +0 -2
  68. package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +0 -2
  69. package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +0 -2
  70. package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +0 -2
  71. package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +0 -2
  72. package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +0 -2
  73. package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +0 -2
  74. package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +0 -2
  75. package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +0 -2
  76. package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +0 -2
  77. package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +0 -2
  78. package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +0 -2
  79. package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +0 -2
  80. package/esm2022/interfaces/lib/coer-ref.interface.mjs +0 -2
  81. package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +0 -2
  82. package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +0 -2
  83. package/esm2022/interfaces/lib/screen-size.interface.mjs +0 -2
  84. package/esm2022/interfaces/lib/service/http-request.interface.mjs +0 -2
  85. package/esm2022/interfaces/lib/service/http-response.interface.mjs +0 -2
  86. package/esm2022/interfaces/lib/service/patch.interface.mjs +0 -2
  87. package/esm2022/pipes/index.mjs +0 -5
  88. package/esm2022/pipes/lib/html.pipe.mjs +0 -18
  89. package/esm2022/pipes/lib/no-image.pipe.mjs +0 -23
  90. package/esm2022/pipes/lib/numeric-format.pipe.mjs +0 -15
  91. package/esm2022/pipes/lib/pipes.module.mjs +0 -31
  92. package/esm2022/public_api.mjs +0 -6
  93. package/esm2022/signals/index.mjs +0 -6
  94. package/esm2022/signals/lib/breakpoint.signal.mjs +0 -4
  95. package/esm2022/signals/lib/is-loading.signal.mjs +0 -3
  96. package/esm2022/signals/lib/is-menu-open.signal.mjs +0 -3
  97. package/esm2022/signals/lib/is-modal-open.signal.mjs +0 -3
  98. package/esm2022/signals/lib/menu.signal.mjs +0 -3
  99. package/esm2022/tools/index.mjs +0 -11
  100. package/esm2022/tools/lib/breadcrumbs.class.mjs +0 -63
  101. package/esm2022/tools/lib/control-value.class.mjs +0 -46
  102. package/esm2022/tools/lib/date-time.class.mjs +0 -29
  103. package/esm2022/tools/lib/files.class.mjs +0 -91
  104. package/esm2022/tools/lib/menu.class.mjs +0 -23
  105. package/esm2022/tools/lib/page.class.mjs +0 -156
  106. package/esm2022/tools/lib/screen.class.mjs +0 -51
  107. package/esm2022/tools/lib/service.class.mjs +0 -248
  108. package/esm2022/tools/lib/source.class.mjs +0 -80
  109. package/esm2022/tools/lib/tools.mjs +0 -220
  110. package/interfaces/index.d.ts +0 -33
  111. package/interfaces/lib/app-source.interface.d.ts +0 -4
  112. package/interfaces/lib/coer-filebox/file-image.interface.d.ts +0 -14
  113. package/interfaces/lib/coer-filebox/file.interface.d.ts +0 -5
  114. package/interfaces/lib/coer-grid/grid-button-by-row.interface.d.ts +0 -6
  115. package/interfaces/lib/coer-grid/grid-checkbox.interface.d.ts +0 -5
  116. package/interfaces/lib/coer-grid/grid-coer-numberbox.interface.d.ts +0 -12
  117. package/interfaces/lib/coer-grid/grid-coer-selectbox.interface.d.ts +0 -9
  118. package/interfaces/lib/coer-grid/grid-coer-switch.interface.d.ts +0 -6
  119. package/interfaces/lib/coer-grid/grid-coer-textbox.interface.d.ts +0 -11
  120. package/interfaces/lib/coer-grid/grid-column.interface.d.ts +0 -22
  121. package/interfaces/lib/coer-grid/grid-data-source.interface.d.ts +0 -6
  122. package/interfaces/lib/coer-grid/grid-header-button.interface.d.ts +0 -8
  123. package/interfaces/lib/coer-grid/grid-header-export-button.interface.d.ts +0 -10
  124. package/interfaces/lib/coer-grid/grid-header.interface.d.ts +0 -5
  125. package/interfaces/lib/coer-grid/grid-import.interface.d.ts +0 -4
  126. package/interfaces/lib/coer-grid/grid-input-checkbox.interface.d.ts +0 -5
  127. package/interfaces/lib/coer-grid/grid-input-switch-change.interface.d.ts +0 -5
  128. package/interfaces/lib/coer-grid/grid-input-textbox.interface.d.ts +0 -5
  129. package/interfaces/lib/coer-grid/grid-item.interface.d.ts +0 -5
  130. package/interfaces/lib/coer-grid/grid-keyup-enter.interface.d.ts +0 -6
  131. package/interfaces/lib/coer-grid/grid-length.interface.d.ts +0 -5
  132. package/interfaces/lib/coer-grid/grid-search.interface.d.ts +0 -4
  133. package/interfaces/lib/coer-grid/grid-sort.interface.d.ts +0 -5
  134. package/interfaces/lib/coer-menu/menu-option-selected.interface.d.ts +0 -9
  135. package/interfaces/lib/coer-menu/menu-selected.interface.d.ts +0 -10
  136. package/interfaces/lib/coer-menu/menu.interface.d.ts +0 -6
  137. package/interfaces/lib/coer-ref.interface.d.ts +0 -10
  138. package/interfaces/lib/page-title/breadcrumb.interface.d.ts +0 -6
  139. package/interfaces/lib/page-title/go-back.interface.d.ts +0 -6
  140. package/interfaces/lib/screen-size.interface.d.ts +0 -5
  141. package/interfaces/lib/service/http-request.interface.d.ts +0 -10
  142. package/interfaces/lib/service/http-response.interface.d.ts +0 -6
  143. package/interfaces/lib/service/patch.interface.d.ts +0 -5
  144. package/pipes/index.d.ts +0 -4
  145. package/pipes/lib/html.pipe.d.ts +0 -10
  146. package/pipes/lib/no-image.pipe.d.ts +0 -7
  147. package/pipes/lib/numeric-format.pipe.d.ts +0 -7
  148. package/pipes/lib/pipes.module.d.ts +0 -9
  149. package/public_api.d.ts +0 -5
  150. package/signals/index.d.ts +0 -5
  151. package/signals/lib/breakpoint.signal.d.ts +0 -1
  152. package/signals/lib/is-loading.signal.d.ts +0 -1
  153. package/signals/lib/is-menu-open.signal.d.ts +0 -1
  154. package/signals/lib/is-modal-open.signal.d.ts +0 -1
  155. package/signals/lib/menu.signal.d.ts +0 -2
  156. package/tools/index.d.ts +0 -10
  157. package/tools/lib/breadcrumbs.class.d.ts +0 -18
  158. package/tools/lib/control-value.class.d.ts +0 -25
  159. package/tools/lib/date-time.class.d.ts +0 -13
  160. package/tools/lib/files.class.d.ts +0 -16
  161. package/tools/lib/menu.class.d.ts +0 -8
  162. package/tools/lib/page.class.d.ts +0 -60
  163. package/tools/lib/screen.class.d.ts +0 -13
  164. package/tools/lib/service.class.d.ts +0 -39
  165. package/tools/lib/source.class.d.ts +0 -20
  166. package/tools/lib/tools.d.ts +0 -34
@@ -1,412 +0,0 @@
1
- import { Component, Input, computed, inject, input, output, signal, viewChild, viewChildren } from "@angular/core";
2
- import { CoerAlert } from "../../lib/coer-alert/coer-alert.component";
3
- import { CoerCheckbox } from "../../lib/coer-checkbox/coer-checkbox.component";
4
- import { CoerNumberBox } from "../../lib/coer-numberbox/coer-numberbox.component";
5
- import { CoerSelectbox } from "../../lib/coer-selectbox/coer-selectbox.component";
6
- import { CoerTextBox } from "../../lib/coer-textbox/coer-textbox.component";
7
- import { ControlValue } from '../../../tools/lib/control-value.class';
8
- import { DateTime } from '../../../tools/lib/date-time.class';
9
- import { Screen } from '../../../tools/lib/screen.class';
10
- import { Tools } from '../../../tools/lib/tools';
11
- import * as i0 from "@angular/core";
12
- export class CoerGridExtension extends ControlValue {
13
- constructor() {
14
- super(...arguments);
15
- //Injections
16
- this.alert = inject(CoerAlert);
17
- //Elements
18
- this.inputFile = viewChild.required('inputFileRef');
19
- this.inputSearch = viewChild.required('inputSearch');
20
- this.coerTextboxList = viewChildren(CoerTextBox);
21
- this.coerNumberboxList = viewChildren(CoerNumberBox);
22
- this.coerSelectboxList = viewChildren(CoerSelectbox);
23
- this.coerCheckboxList = viewChildren(CoerCheckbox);
24
- //Variables
25
- this._value = [];
26
- this.value_signal = signal([]);
27
- this._gridSearch = signal('');
28
- this._isLoading = true;
29
- this._isLoadingMessage = true;
30
- this._id = Tools.GetGuid('coer-grid');
31
- this._expandedGroups = [];
32
- this._enableAnimations = false;
33
- this._indexFocus = signal(0);
34
- this._sort = signal({ columnName: '', direction: 'none', icon: '' });
35
- //Generic Tools
36
- this.GetNumericFormat = Tools.GetNumericFormat;
37
- this.GetDateFormat = DateTime.GetDateFormat;
38
- //Inputs
39
- this.columns = input([]);
40
- this.cleanColumnName = input(true);
41
- this.addButton = { show: false };
42
- this.exportButton = { show: false };
43
- this.importButton = { show: false };
44
- this.search = { show: false, ignore: false };
45
- this.buttonByRow = {};
46
- this.checkbox = { show: false };
47
- this.tooltipByRow = input('');
48
- this.isLoading = input(false);
49
- this.isDisabled = input(false);
50
- this.rowsByPage = input(50);
51
- this.groupBy = input('');
52
- this.showColumnGrouped = input(false);
53
- this.rowsByGroup = input(50);
54
- this.isInvisible = input(false);
55
- this.showFooter = input(true);
56
- this.width = input('100%');
57
- this.MinWidth = input('250px');
58
- this.MaxWidth = input('100%');
59
- this.height = input('350px');
60
- this.minHeight = input('140px');
61
- this.maxHeight = input('100vh');
62
- this.margin = input('auto');
63
- this.enableSort = input(true);
64
- this.enableRowFocus = input(true);
65
- //Outputs
66
- this.onClickAdd = output();
67
- this.onClickImport = output();
68
- this.onClickExport = output();
69
- this.onClickRow = output();
70
- this.onDoubleClickRow = output();
71
- this.onClickDeleteRow = output();
72
- this.onClickEditRow = output();
73
- this.onClickGoRow = output();
74
- this.onKeyupEnter = output();
75
- this.onKeyupEnterLast = output();
76
- this.onSwitchChange = output();
77
- this.onTextboxChange = output();
78
- this.onSelectboxChange = output();
79
- this.onCheckboxChange = output();
80
- //computed
81
- this._isDisabled = computed(() => {
82
- return this.isDisabled() || this.isLoading() || this.isInvisible();
83
- });
84
- //computed
85
- this._isGrouped = computed(() => {
86
- return this.groupBy().length > 0;
87
- });
88
- //computed
89
- this.gridColumns = computed(() => {
90
- const SET_COLUMNS = new Set();
91
- //Has filter columns?
92
- if (this.columns().length > 0) {
93
- for (const { property } of this.columns()) {
94
- SET_COLUMNS.add(property);
95
- }
96
- }
97
- //Get all columns
98
- else
99
- for (const row of this.value_signal()) {
100
- for (const property in row) {
101
- SET_COLUMNS.add(property);
102
- }
103
- }
104
- //Remove indexRow column
105
- if (SET_COLUMNS.has('indexRow')) {
106
- SET_COLUMNS.delete('indexRow');
107
- }
108
- //Remove groupBy column
109
- if (this._isGrouped() && !this.showColumnGrouped() && SET_COLUMNS.has(this.groupBy())) {
110
- SET_COLUMNS.delete(this.groupBy());
111
- }
112
- //Set index column
113
- let indexColumn = 0;
114
- return Array.from(SET_COLUMNS).map(property => Tools.BreakReference({
115
- columnName: property,
116
- indexColumn: indexColumn++,
117
- width: this._GetColumnConfig(property)?.width || 'auto'
118
- }));
119
- });
120
- //computed
121
- this.gridDataSource = computed(() => {
122
- let list = this.gridDataSourceFiltered();
123
- //It's Grouped?
124
- if (this._isGrouped()) {
125
- //let indexRow = 0;
126
- let indexGroup = 0;
127
- const SET_COLUMN = new Set();
128
- for (const row of list) {
129
- SET_COLUMN.add(row[this.groupBy()]);
130
- }
131
- const DATA_SOURCE_GROPUED = [];
132
- for (const column of SET_COLUMN) {
133
- DATA_SOURCE_GROPUED.push({
134
- groupBy: column,
135
- indexGroup: indexGroup++,
136
- length: list.filter((item) => item[this.groupBy()] == column).length,
137
- rows: [...list]
138
- .filter((item) => item[this.groupBy()] == column)
139
- .splice(0, this.rowsByGroup())
140
- //.map((item: any) => Object.assign({ indexRow: indexRow++ }, item))
141
- });
142
- }
143
- //Response by group
144
- return [...DATA_SOURCE_GROPUED].splice(0, this.rowsByPage());
145
- }
146
- //Response
147
- return [{
148
- groupBy: 'Not Grouped',
149
- indexGroup: -1,
150
- length: -1,
151
- rows: [...list].splice(0, this.rowsByPage())
152
- }];
153
- });
154
- //computed
155
- this.gridDataSourceFiltered = computed(() => {
156
- let list = [];
157
- const dataSource = Tools.BreakReference(this.value_signal());
158
- //Ignore Filter
159
- if (this._gridSearch() == '' || this.search?.ignore) {
160
- list = dataSource;
161
- }
162
- //Filter by search
163
- else {
164
- const SET_ROW = new Set();
165
- let listFiltered = [];
166
- for (const { columnName } of this.gridColumns()) {
167
- listFiltered = dataSource.filter((item) => !SET_ROW.has(item['indexRow'])
168
- && String(item[Tools.FirstCharToLower(columnName)]).trim().toUpperCase().includes(String(this._gridSearch()).trim().toUpperCase()));
169
- for (const { indexRow } of listFiltered) {
170
- SET_ROW.add(indexRow);
171
- }
172
- list = Tools.BreakReference(list.concat(listFiltered));
173
- }
174
- }
175
- return Tools.BreakReference(list);
176
- });
177
- /** Get Column Configuration */
178
- this._GetColumnConfig = (columnName) => {
179
- return this.columns().find(x => x.property.replaceAll(' ', '').toUpperCase() == columnName.replaceAll(' ', '').toUpperCase());
180
- };
181
- /** Clean Name or get alias */
182
- this._GetColumnName = (columnName) => {
183
- const columnConfig = this._GetColumnConfig(columnName);
184
- //Get Alias
185
- if (columnConfig && columnConfig.alias && columnConfig.alias.length > 0) {
186
- return columnConfig.alias;
187
- }
188
- //Clean headerName
189
- if (this.cleanColumnName() && columnName.length > 0) {
190
- columnName = Tools.FirstCharToLower(columnName);
191
- const charArray = [];
192
- for (const char of columnName) {
193
- if (char === char.toUpperCase())
194
- charArray.push(' ');
195
- charArray.push(char);
196
- }
197
- charArray[0] = charArray[0].toUpperCase();
198
- columnName = charArray.join('');
199
- }
200
- return columnName.trim();
201
- };
202
- /** */
203
- this._GetShortIcon = (columnName) => {
204
- return this._sort().columnName == columnName ? this._sort().icon : '';
205
- };
206
- /** */
207
- this._GetId = (indexRow, indexColumn, suffix = '') => {
208
- if (suffix.length > 0)
209
- suffix = `-${suffix}`;
210
- return `${this._id}-row${indexRow}column${indexColumn}${suffix}`;
211
- };
212
- /** */
213
- this._GetCellValue = (row, columnName) => {
214
- return row[Tools.FirstCharToLower(columnName).replaceAll(' ', '')];
215
- };
216
- /** */
217
- this._GetTooltip = (prefix, row, suffix = '') => {
218
- let column = Tools.FirstCharToLower(this.tooltipByRow()).replaceAll(' ', '');
219
- if (suffix.length > 0) {
220
- suffix = ` ${suffix}`;
221
- }
222
- return this.tooltipByRow().length > 0
223
- ? `${prefix} ${row[column]}${suffix}`
224
- : `${prefix}${suffix}`;
225
- };
226
- /** */
227
- this._HideRow = (group) => {
228
- return (this._isGrouped() ? !(this._expandedGroups.some(x => x == group.groupBy)) : false);
229
- };
230
- }
231
- //getter
232
- get _height() {
233
- let height = this.height();
234
- if (height == 'full') {
235
- const TOOLBAR = 45;
236
- const PAGE_HEADER = 70;
237
- const GRID_HEADER = document.getElementById(`${this._id}-header`);
238
- const HEADER = (GRID_HEADER && GRID_HEADER.children.length > 0) ? 50 : 0;
239
- const MARGIN = 30;
240
- const PADDING = 20;
241
- const FOOTER = this.showFooter() ? 24.5 : 0;
242
- height = (Screen.WINDOW_HEIGHT - TOOLBAR - PAGE_HEADER - MARGIN - HEADER - PADDING - FOOTER) + 'px';
243
- }
244
- return height;
245
- }
246
- //getter
247
- get _onlyOneCheck() {
248
- return Tools.IsNotNull(this.checkbox.onlyOneCheck) && this.checkbox.onlyOneCheck;
249
- }
250
- ngAfterViewInit() {
251
- Tools.Sleep().then(() => {
252
- this._enableAnimations = true;
253
- this._isLoading = false;
254
- this._isLoadingMessage = false;
255
- });
256
- }
257
- //ControlValueAccessor
258
- SetValue(value) {
259
- let indexRow = 0;
260
- if (!Tools.IsNotNull(value))
261
- value = [];
262
- const dataSource = Tools.BreakReference(value).map((item) => Object.assign({ checked: false }, { ...item }, { indexRow: indexRow++ }));
263
- this._UpdateValue(dataSource);
264
- this._value = dataSource;
265
- this.value_signal.set(dataSource);
266
- }
267
- //ControlValueAccessor
268
- writeValue(value) {
269
- let indexRow = 0;
270
- if (!Tools.IsNotNull(value))
271
- value = [];
272
- const dataSource = Tools.BreakReference(value).map((item) => Object.assign({ checked: false }, { ...item }, { indexRow: indexRow++ }));
273
- this._value = dataSource;
274
- this.value_signal.set(dataSource);
275
- }
276
- /** */
277
- _IsCellType(property, data, type) {
278
- let response = false;
279
- const columnConfig = this._GetColumnConfig(property);
280
- const value = data[property];
281
- const row = Tools.BreakReference(data);
282
- if (columnConfig) {
283
- if (['coerTextbox', 'coerNumberbox', 'coerSelectbox', 'coerSwitch'].includes(type)) {
284
- const inputConfig = columnConfig;
285
- response = inputConfig.hasOwnProperty(type)
286
- && typeof inputConfig[type] === 'function'
287
- && inputConfig[type]({ property, row, value }).isInput;
288
- }
289
- else
290
- switch (type) {
291
- case 'number': {
292
- if (typeof columnConfig.typeNumber === 'boolean') {
293
- response = columnConfig.typeNumber;
294
- }
295
- else if (typeof columnConfig.typeNumber === 'function') {
296
- response = (data === null) ? false : columnConfig.typeNumber({ property, row, value });
297
- }
298
- break;
299
- }
300
- case 'date': {
301
- if (data === null)
302
- return false;
303
- if (typeof columnConfig.typeDate === 'boolean') {
304
- response = columnConfig.typeDate;
305
- }
306
- else if (typeof columnConfig.typeDate === 'function') {
307
- response = (data === null) ? false : columnConfig.typeDate({ property, row, value });
308
- }
309
- break;
310
- }
311
- case 'template': {
312
- if (data === null)
313
- return false;
314
- response = (typeof columnConfig.template === 'string') || (typeof columnConfig.template === 'function');
315
- break;
316
- }
317
- }
318
- }
319
- return response;
320
- }
321
- /** */
322
- _IsCellColor(property, data, color) {
323
- let response = false;
324
- const columnConfig = this._GetColumnConfig(property);
325
- if (columnConfig) {
326
- if (typeof columnConfig[color] === 'boolean') {
327
- response = columnConfig[color];
328
- }
329
- else if (typeof columnConfig[color] === 'function') {
330
- response = columnConfig[color]({
331
- property,
332
- row: Tools.BreakReference(data),
333
- value: data[property]
334
- });
335
- }
336
- }
337
- return response;
338
- }
339
- /** */
340
- GetAttribute(property, data, attribute, type) {
341
- const columnConfig = this._GetColumnConfig(property);
342
- const value = Tools.IsNotNull(data) ? data[property] : null;
343
- const row = Tools.BreakReference(data);
344
- if (columnConfig) {
345
- if (type === 'defaul-cell') {
346
- switch (attribute) {
347
- case 'textAlign': {
348
- return columnConfig?.textAlign || 'left';
349
- }
350
- case 'template': {
351
- const inputConfig = columnConfig;
352
- if (inputConfig.hasOwnProperty(attribute)) {
353
- if (typeof inputConfig[attribute] === 'string') {
354
- return inputConfig[attribute];
355
- }
356
- else if (typeof inputConfig[attribute] === 'function') {
357
- return inputConfig[attribute]({ property, row, value }) || '';
358
- }
359
- }
360
- }
361
- }
362
- }
363
- else if (['coerTextbox', 'coerNumberbox', 'coerSelectbox', 'coerSwitch'].includes(type)) {
364
- const inputConfig = columnConfig;
365
- if (inputConfig.hasOwnProperty(type) && typeof inputConfig[type] === 'function') {
366
- return inputConfig[type]({ property, row, value })[attribute] || null;
367
- }
368
- }
369
- }
370
- return null;
371
- }
372
- /** */
373
- ButtonByRow(property, data = null) {
374
- let response = false;
375
- const buttonByRow = this.buttonByRow;
376
- const row = Tools.IsNotNull(data) ? Tools.BreakReference(data) : null;
377
- if (buttonByRow.hasOwnProperty(property)) {
378
- if (row === null) {
379
- response = (typeof buttonByRow[property] === 'boolean') ? buttonByRow[property] : true;
380
- }
381
- else if (typeof buttonByRow[property] === 'boolean') {
382
- response = buttonByRow[property];
383
- }
384
- else if (typeof buttonByRow[property] === 'function') {
385
- response = buttonByRow[property]({ property, row, value: null });
386
- }
387
- }
388
- return response ? (this._value && this._value.length > 0) : false;
389
- }
390
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerGridExtension, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
391
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.12", type: CoerGridExtension, selector: "coer-grid-extension", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, cleanColumnName: { classPropertyName: "cleanColumnName", publicName: "cleanColumnName", isSignal: true, isRequired: false, transformFunction: null }, addButton: { classPropertyName: "addButton", publicName: "addButton", isSignal: false, isRequired: false, transformFunction: null }, exportButton: { classPropertyName: "exportButton", publicName: "exportButton", isSignal: false, isRequired: false, transformFunction: null }, importButton: { classPropertyName: "importButton", publicName: "importButton", isSignal: false, isRequired: false, transformFunction: null }, search: { classPropertyName: "search", publicName: "search", isSignal: false, isRequired: false, transformFunction: null }, buttonByRow: { classPropertyName: "buttonByRow", publicName: "buttonByRow", isSignal: false, isRequired: false, transformFunction: null }, checkbox: { classPropertyName: "checkbox", publicName: "checkbox", isSignal: false, isRequired: false, transformFunction: null }, tooltipByRow: { classPropertyName: "tooltipByRow", publicName: "tooltipByRow", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, rowsByPage: { classPropertyName: "rowsByPage", publicName: "rowsByPage", isSignal: true, isRequired: false, transformFunction: null }, groupBy: { classPropertyName: "groupBy", publicName: "groupBy", isSignal: true, isRequired: false, transformFunction: null }, showColumnGrouped: { classPropertyName: "showColumnGrouped", publicName: "showColumnGrouped", isSignal: true, isRequired: false, transformFunction: null }, rowsByGroup: { classPropertyName: "rowsByGroup", publicName: "rowsByGroup", isSignal: true, isRequired: false, transformFunction: null }, isInvisible: { classPropertyName: "isInvisible", publicName: "isInvisible", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, MinWidth: { classPropertyName: "MinWidth", publicName: "MinWidth", isSignal: true, isRequired: false, transformFunction: null }, MaxWidth: { classPropertyName: "MaxWidth", publicName: "MaxWidth", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, margin: { classPropertyName: "margin", publicName: "margin", isSignal: true, isRequired: false, transformFunction: null }, enableSort: { classPropertyName: "enableSort", publicName: "enableSort", isSignal: true, isRequired: false, transformFunction: null }, enableRowFocus: { classPropertyName: "enableRowFocus", publicName: "enableRowFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClickAdd: "onClickAdd", onClickImport: "onClickImport", onClickExport: "onClickExport", onClickRow: "onClickRow", onDoubleClickRow: "onDoubleClickRow", onClickDeleteRow: "onClickDeleteRow", onClickEditRow: "onClickEditRow", onClickGoRow: "onClickGoRow", onKeyupEnter: "onKeyupEnter", onKeyupEnterLast: "onKeyupEnterLast", onSwitchChange: "onSwitchChange", onTextboxChange: "onTextboxChange", onSelectboxChange: "onSelectboxChange", onCheckboxChange: "onCheckboxChange" }, viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFileRef"], descendants: true, isSignal: true }, { propertyName: "inputSearch", first: true, predicate: ["inputSearch"], descendants: true, isSignal: true }, { propertyName: "coerTextboxList", predicate: CoerTextBox, descendants: true, isSignal: true }, { propertyName: "coerNumberboxList", predicate: CoerNumberBox, descendants: true, isSignal: true }, { propertyName: "coerSelectboxList", predicate: CoerSelectbox, descendants: true, isSignal: true }, { propertyName: "coerCheckboxList", predicate: CoerCheckbox, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
392
- }
393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerGridExtension, decorators: [{
394
- type: Component,
395
- args: [{
396
- selector: 'coer-grid-extension',
397
- template: ''
398
- }]
399
- }], propDecorators: { addButton: [{
400
- type: Input
401
- }], exportButton: [{
402
- type: Input
403
- }], importButton: [{
404
- type: Input
405
- }], search: [{
406
- type: Input
407
- }], buttonByRow: [{
408
- type: Input
409
- }], checkbox: [{
410
- type: Input
411
- }] } });
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1ncmlkLmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvbGliL2NvZXItZ3JpZC9jb2VyLWdyaWQuZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBTWpELE1BQU0sT0FBTyxpQkFBcUIsU0FBUSxZQUFZO0lBSnREOztRQU1JLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdDLFVBQVU7UUFDQSxjQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYSxjQUFjLENBQUMsQ0FBQztRQUMzRCxnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWMsYUFBYSxDQUFDLENB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QUFDLEtBQUssQ0FBQztJQUN0RSxDQUFDOytHQXJkUSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw2c0lBUWUsV0FBVyx1RkFDVCxhQUFhLHVGQUNiLGFBQWEsc0ZBQ2QsWUFBWSx1RkFiNUMsRUFBRTs7NEZBRUgsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzhCQWlDWSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyaWRCdXR0b25CeVJvdywgSUdyaWRDb2x1bW4sIElHcmlkRGF0YVNvdXJjZSwgSUdyaWRJbXBvcnQsIElHcmlkSGVhZGVyQnV0dG9uLCBJR3JpZEhlYWRlckV4cG9ydEJ1dHRvbiwgSUdyaWRLZXl1cEVudGVyLCBJR3JpZFNlYXJjaCwgSUdyaWRJbnB1dFN3aXRjaENoYW5nZSwgSUdyaWRJbnB1dFRleHRib3gsIElHcmlkU29ydCwgSUdyaWRDaGVja2JveCwgSUdyaWRJbnB1dENoZWNrYm94LCBJR3JpZEhlYWRlciB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkLCB2aWV3Q2hpbGRyZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItYWxlcnQvY29lci1hbGVydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29lckNoZWNrYm94IH0gZnJvbSBcIi4uLy4uL2xpYi9jb2VyLWNoZWNrYm94L2NvZXItY2hlY2tib3guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvZXJOdW1iZXJCb3ggfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItbnVtYmVyYm94L2NvZXItbnVtYmVyYm94LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb2VyU2VsZWN0Ym94IH0gZnJvbSBcIi4uLy4uL2xpYi9jb2VyLXNlbGVjdGJveC9jb2VyLXNlbGVjdGJveC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29lclRleHRCb3ggfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItdGV4dGJveC9jb2VyLXRleHRib3guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL2xpYi9jb250cm9sLXZhbHVlLmNsYXNzJztcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi8uLi90b29scy9saWIvZGF0ZS10aW1lLmNsYXNzJztcclxuaW1wb3J0IHsgU2NyZWVuIH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvbGliL3NjcmVlbi5jbGFzcyc7XHJcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvbGliL3Rvb2xzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLWdyaWQtZXh0ZW5zaW9uJyxcclxuICAgIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lckdyaWRFeHRlbnNpb248VD4gZXh0ZW5kcyBDb250cm9sVmFsdWUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICAvL0luamVjdGlvbnNcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydCA9IGluamVjdChDb2VyQWxlcnQpO1xyXG5cclxuICAgIC8vRWxlbWVudHNcclxuICAgIHByb3RlY3RlZCBpbnB1dEZpbGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2lucHV0RmlsZVJlZicpO1xyXG4gICAgcHJvdGVjdGVkIGlucHV0U2VhcmNoID0gdmlld0NoaWxkLnJlcXVpcmVkPENvZXJUZXh0Qm94PignaW5wdXRTZWFyY2gnKTtcclxuICAgIHByb3RlY3RlZCBjb2VyVGV4dGJveExpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lclRleHRCb3gpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJOdW1iZXJib3hMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJOdW1iZXJCb3gpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJTZWxlY3Rib3hMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJTZWxlY3Rib3gpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJDaGVja2JveExpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lckNoZWNrYm94KTtcclxuXHJcbiAgICAvL1ZhcmlhYmxlc1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF92YWx1ZTogVFtdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgdmFsdWVfc2lnbmFsID0gc2lnbmFsPFRbXT4oW10pO1xyXG4gICAgcHJvdGVjdGVkIF9ncmlkU2VhcmNoID0gc2lnbmFsPHN0cmluZyB8IG51bWJlcj4oJycpO1xyXG4gICAgcHJvdGVjdGVkIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHJvdGVjdGVkIF9pc0xvYWRpbmdNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9IFRvb2xzLkdldEd1aWQoJ2NvZXItZ3JpZCcpO1xyXG4gICAgcHJvdGVjdGVkIF9leHBhbmRlZEdyb3Vwczogc3RyaW5nW10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBfZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIF9pbmRleEZvY3VzID0gc2lnbmFsPG51bWJlcj4oMCk7XHJcbiAgICBwcm90ZWN0ZWQgX3NvcnQgPSBzaWduYWw8SUdyaWRTb3J0Pih7IGNvbHVtbk5hbWU6ICcnLCBkaXJlY3Rpb246ICdub25lJywgaWNvbjogJycgfSk7XHJcblxyXG4gICAgLy9HZW5lcmljIFRvb2xzXHJcbiAgICBwcm90ZWN0ZWQgR2V0TnVtZXJpY0Zvcm1hdCA9IFRvb2xzLkdldE51bWVyaWNGb3JtYXQ7XHJcbiAgICBwcm90ZWN0ZWQgR2V0RGF0ZUZvcm1hdCA9IERhdGVUaW1lLkdldERhdGVGb3JtYXQ7XHJcblxyXG4gICAgLy9JbnB1dHNcclxuICAgIHB1YmxpYyBjb2x1bW5zID0gaW5wdXQ8SUdyaWRDb2x1bW48VD5bXT4oW10pO1xyXG4gICAgcHVibGljIGNsZWFuQ29sdW1uTmFtZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgQElucHV0KCkgYWRkQnV0dG9uOiBJR3JpZEhlYWRlckJ1dHRvbiA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIEBJbnB1dCgpIGV4cG9ydEJ1dHRvbjogSUdyaWRIZWFkZXJFeHBvcnRCdXR0b24gPSB7IHNob3c6IGZhbHNlIH07XHJcbiAgICBASW5wdXQoKSBpbXBvcnRCdXR0b246IElHcmlkSGVhZGVyQnV0dG9uID0geyBzaG93OiBmYWxzZSB9O1xyXG4gICAgQElucHV0KCkgc2VhcmNoOiBJR3JpZFNlYXJjaCA9IHsgc2hvdzogZmFsc2UsIGlnbm9yZTogZmFsc2UgfTtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbkJ5Um93OiBJR3JpZEJ1dHRvbkJ5Um93PFQ+ID0ge307XHJcbiAgICBASW5wdXQoKSBjaGVja2JveDogSUdyaWRDaGVja2JveCA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIHB1YmxpYyB0b29sdGlwQnlSb3cgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyByb3dzQnlQYWdlID0gaW5wdXQ8bnVtYmVyPig1MCk7XHJcbiAgICBwdWJsaWMgZ3JvdXBCeSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIHNob3dDb2x1bW5Hcm91cGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHJvd3NCeUdyb3VwID0gaW5wdXQ8bnVtYmVyPig1MCk7XHJcbiAgICBwdWJsaWMgaXNJbnZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgc2hvd0Zvb3RlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHVibGljIHdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIE1pbldpZHRoID0gaW5wdXQ8c3RyaW5nPignMjUwcHgnKTtcclxuICAgIHB1YmxpYyBNYXhXaWR0aCA9IGlucHV0PHN0cmluZz4oJzEwMCUnKTtcclxuICAgIHB1YmxpYyBoZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCczNTBweCcpO1xyXG4gICAgcHVibGljIG1pbkhlaWdodCA9IGlucHV0PHN0cmluZz4oJzE0MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWF4SGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMTAwdmgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW4gPSBpbnB1dDxzdHJpbmc+KCdhdXRvJyk7XHJcbiAgICBwdWJsaWMgZW5hYmxlU29ydCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHVibGljIGVuYWJsZVJvd0ZvY3VzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgLy9PdXRwdXRzXHJcbiAgICBwdWJsaWMgb25DbGlja0FkZCA9IG91dHB1dDx2b2lkPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tJbXBvcnQgPSBvdXRwdXQ8SUdyaWRJbXBvcnQ8VD4+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja0V4cG9ydCA9IG91dHB1dDxUW10+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja1JvdyA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uRG91YmxlQ2xpY2tSb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrRGVsZXRlUm93ID0gb3V0cHV0PFQ+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja0VkaXRSb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrR29Sb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbktleXVwRW50ZXIgPSBvdXRwdXQ8SUdyaWRLZXl1cEVudGVyPigpO1xyXG4gICAgcHVibGljIG9uS2V5dXBFbnRlckxhc3QgPSBvdXRwdXQ8dm9pZD4oKTtcclxuICAgIHB1YmxpYyBvblN3aXRjaENoYW5nZSA9IG91dHB1dDxJR3JpZElucHV0U3dpdGNoQ2hhbmdlPFQ+PigpO1xyXG4gICAgcHVibGljIG9uVGV4dGJveENoYW5nZSA9IG91dHB1dDxJR3JpZElucHV0VGV4dGJveDxUPj4oKTtcclxuICAgIHB1YmxpYyBvblNlbGVjdGJveENoYW5nZSA9IG91dHB1dDxJR3JpZElucHV0VGV4dGJveDxUPj4oKTtcclxuICAgIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlID0gb3V0cHV0PElHcmlkSW5wdXRDaGVja2JveDxUPj4oKTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2lzRGlzYWJsZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCgpIHx8IHRoaXMuaXNMb2FkaW5nKCkgfHwgdGhpcy5pc0ludmlzaWJsZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9pc0dyb3VwZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBCeSgpLmxlbmd0aCA+IDA7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBfaGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XHJcblxyXG4gICAgICAgIGlmIChoZWlnaHQgPT0gJ2Z1bGwnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFRPT0xCQVIgPSA0NTtcclxuICAgICAgICAgICAgY29uc3QgUEFHRV9IRUFERVIgPSA3MDtcclxuICAgICAgICAgICAgY29uc3QgR1JJRF9IRUFERVIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLl9pZH0taGVhZGVyYCkhO1xyXG4gICAgICAgICAgICBjb25zdCBIRUFERVIgPSAoR1JJRF9IRUFERVIgJiYgR1JJRF9IRUFERVIuY2hpbGRyZW4ubGVuZ3RoID4gMCkgPyA1MCA6IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IE1BUkdJTiA9IDMwO1xyXG4gICAgICAgICAgICBjb25zdCBQQURESU5HID0gMjA7XHJcbiAgICAgICAgICAgIGNvbnN0IEZPT1RFUiA9IHRoaXMuc2hvd0Zvb3RlcigpID8gMjQuNSA6IDA7XHJcbiAgICAgICAgICAgIGhlaWdodCA9IChTY3JlZW4uV0lORE9XX0hFSUdIVCAtIFRPT0xCQVIgLSBQQUdFX0hFQURFUiAtIE1BUkdJTiAtIEhFQURFUiAtIFBBRERJTkcgLSBGT09URVIpICsgJ3B4JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9vbmx5T25lQ2hlY2soKSB7XHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLklzTm90TnVsbCh0aGlzLmNoZWNrYm94Lm9ubHlPbmVDaGVjaykgJiYgdGhpcy5jaGVja2JveC5vbmx5T25lQ2hlY2s7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lbmFibGVBbmltYXRpb25zID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ01lc3NhZ2UgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvL0NvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IFRbXSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBpbmRleFJvdyA9IDA7XHJcbiAgICAgICAgaWYoIVRvb2xzLklzTm90TnVsbCh2YWx1ZSkpIHZhbHVlID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBUb29scy5CcmVha1JlZmVyZW5jZSh2YWx1ZSkubWFwKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBjaGVja2VkOiBmYWxzZSB9LCB7IC4uLml0ZW0gfSwgeyBpbmRleFJvdzogaW5kZXhSb3crKyB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuX1VwZGF0ZVZhbHVlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gZGF0YVNvdXJjZTtcclxuICAgICAgICB0aGlzLnZhbHVlX3NpZ25hbC5zZXQoZGF0YVNvdXJjZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBUW10pOiB2b2lkIHtcclxuICAgICAgICBsZXQgaW5kZXhSb3cgPSAwO1xyXG4gICAgICAgIGlmKCFUb29scy5Jc05vdE51bGwodmFsdWUpKSB2YWx1ZSA9IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UodmFsdWUpLm1hcCgoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgY2hlY2tlZDogZmFsc2UgfSwgeyAuLi5pdGVtIH0sIHsgaW5kZXhSb3c6IGluZGV4Um93KysgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLl92YWx1ZSA9IGRhdGFTb3VyY2U7XHJcbiAgICAgICAgdGhpcy52YWx1ZV9zaWduYWwuc2V0KGRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgLy9jb21wdXRlZFxyXG4gICAgIHByb3RlY3RlZCBncmlkQ29sdW1ucyA9IGNvbXB1dGVkPElHcmlkSGVhZGVyW10+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBTRVRfQ09MVU1OUyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICAvL0hhcyBmaWx0ZXIgY29sdW1ucz9cclxuICAgICAgICBpZiAodGhpcy5jb2x1bW5zKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgcHJvcGVydHkgfSBvZiB0aGlzLmNvbHVtbnMoKSkge1xyXG4gICAgICAgICAgICAgICAgU0VUX0NPTFVNTlMuYWRkKHByb3BlcnR5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9HZXQgYWxsIGNvbHVtbnNcclxuICAgICAgICBlbHNlIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmFsdWVfc2lnbmFsKCkpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiByb3cpIHtcclxuICAgICAgICAgICAgICAgIFNFVF9DT0xVTU5TLmFkZChwcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUmVtb3ZlIGluZGV4Um93IGNvbHVtblxyXG4gICAgICAgIGlmIChTRVRfQ09MVU1OUy5oYXMoJ2luZGV4Um93JykpIHtcclxuICAgICAgICAgICAgU0VUX0NPTFVNTlMuZGVsZXRlKCdpbmRleFJvdycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9SZW1vdmUgZ3JvdXBCeSBjb2x1bW5cclxuICAgICAgICBpZiAodGhpcy5faXNHcm91cGVkKCkgJiYgIXRoaXMuc2hvd0NvbHVtbkdyb3VwZWQoKSAmJiBTRVRfQ09MVU1OUy5oYXModGhpcy5ncm91cEJ5KCkpKSB7XHJcbiAgICAgICAgICAgIFNFVF9DT0xVTU5TLmRlbGV0ZSh0aGlzLmdyb3VwQnkoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1NldCBpbmRleCBjb2x1bW5cclxuICAgICAgICBsZXQgaW5kZXhDb2x1bW4gPSAwO1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKFNFVF9DT0xVTU5TKS5tYXAocHJvcGVydHkgPT4gVG9vbHMuQnJlYWtSZWZlcmVuY2U8SUdyaWRIZWFkZXI+KHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogcHJvcGVydHksXHJcbiAgICAgICAgICAgIGluZGV4Q29sdW1uOiBpbmRleENvbHVtbisrLFxyXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fR2V0Q29sdW1uQ29uZmlnKHByb3BlcnR5KT8ud2lkdGggfHwgJ2F1dG8nXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBncmlkRGF0YVNvdXJjZSA9IGNvbXB1dGVkPElHcmlkRGF0YVNvdXJjZVtdPigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpc3QgPSB0aGlzLmdyaWREYXRhU291cmNlRmlsdGVyZWQoKTtcclxuXHJcbiAgICAgICAgLy9JdCdzIEdyb3VwZWQ/XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzR3JvdXBlZCgpKSB7XHJcbiAgICAgICAgICAgIC8vbGV0IGluZGV4Um93ID0gMDtcclxuICAgICAgICAgICAgbGV0IGluZGV4R3JvdXAgPSAwO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgU0VUX0NPTFVNTiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBsaXN0IGFzIGFueSkge1xyXG4gICAgICAgICAgICAgICAgU0VUX0NPTFVNTi5hZGQocm93W3RoaXMuZ3JvdXBCeSgpXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IERBVEFfU09VUkNFX0dST1BVRUQgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgU0VUX0NPTFVNTikge1xyXG4gICAgICAgICAgICAgICAgREFUQV9TT1VSQ0VfR1JPUFVFRC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cEJ5OiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhHcm91cDogaW5kZXhHcm91cCsrLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aDogbGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLmdyb3VwQnkoKV0gPT0gY29sdW1uKS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93czogWy4uLmxpc3RdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLmdyb3VwQnkoKV0gPT0gY29sdW1uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3BsaWNlKDAsIHRoaXMucm93c0J5R3JvdXAoKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8ubWFwKChpdGVtOiBhbnkpID0+IE9iamVjdC5hc3NpZ24oeyBpbmRleFJvdzogaW5kZXhSb3crKyB9LCBpdGVtKSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL1Jlc3BvbnNlIGJ5IGdyb3VwXHJcbiAgICAgICAgICAgIHJldHVybiBbLi4uREFUQV9TT1VSQ0VfR1JPUFVFRF0uc3BsaWNlKDAsIHRoaXMucm93c0J5UGFnZSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUmVzcG9uc2VcclxuICAgICAgICByZXR1cm4gW3tcclxuICAgICAgICAgICAgZ3JvdXBCeTogJ05vdCBHcm91cGVkJyxcclxuICAgICAgICAgICAgaW5kZXhHcm91cDogLTEsXHJcbiAgICAgICAgICAgIGxlbmd0aDogLTEsXHJcbiAgICAgICAgICAgIHJvd3M6IFsuLi5saXN0XS5zcGxpY2UoMCwgdGhpcy5yb3dzQnlQYWdlKCkpXHJcbiAgICAgICAgfV07XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIGdyaWREYXRhU291cmNlRmlsdGVyZWQgPSBjb21wdXRlZDxUW10+KCgpID0+IHtcclxuICAgICAgICBsZXQgbGlzdDogVFtdID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBUb29scy5CcmVha1JlZmVyZW5jZSh0aGlzLnZhbHVlX3NpZ25hbCgpKTtcclxuXHJcbiAgICAgICAgLy9JZ25vcmUgRmlsdGVyXHJcbiAgICAgICAgaWYgKHRoaXMuX2dyaWRTZWFyY2goKSA9PSAnJyB8fCB0aGlzLnNlYXJjaD8uaWdub3JlKSB7XHJcbiAgICAgICAgICAgIGxpc3QgPSBkYXRhU291cmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9GaWx0ZXIgYnkgc2VhcmNoXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFNFVF9ST1cgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBsaXN0RmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIGZvcihjb25zdCB7IGNvbHVtbk5hbWUgfSBvZiB0aGlzLmdyaWRDb2x1bW5zKCkpIHtcclxuICAgICAgICAgICAgICAgIGxpc3RGaWx0ZXJlZCA9IGRhdGFTb3VyY2UuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgIVNFVF9ST1cuaGFzKGl0ZW1bJ2luZGV4Um93J10pXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgU3RyaW5nKGl0ZW1bVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcihjb2x1bW5OYW1lKV0pLnRyaW0oKS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKFN0cmluZyh0aGlzLl9ncmlkU2VhcmNoKCkpLnRyaW0oKS50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IoY29uc3QgeyBpbmRleFJvdyB9IG9mIGxpc3RGaWx0ZXJlZCBhcyBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICBTRVRfUk9XLmFkZChpbmRleFJvdyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGlzdCA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKGxpc3QuY29uY2F0KGxpc3RGaWx0ZXJlZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gVG9vbHMuQnJlYWtSZWZlcmVuY2UobGlzdCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLyoqIEdldCBDb2x1bW4gQ29uZmlndXJhdGlvbiAqL1xyXG4gICAgcHJvdGVjdGVkIF9HZXRDb2x1bW5Db25maWcgPSAoY29sdW1uTmFtZTogc3RyaW5nKTogSUdyaWRDb2x1bW48VD4gfCB1bmRlZmluZWQgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5maW5kKHggPT4geC5wcm9wZXJ0eS5yZXBsYWNlQWxsKCcgJywgJycpLnRvVXBwZXJDYXNlKCkgPT0gY29sdW1uTmFtZS5yZXBsYWNlQWxsKCcgJywgJycpLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogQ2xlYW4gTmFtZSBvciBnZXQgYWxpYXMgKi9cclxuICAgIHByb3RlY3RlZCBfR2V0Q29sdW1uTmFtZSA9IChjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbmZpZyA9IHRoaXMuX0dldENvbHVtbkNvbmZpZyhjb2x1bW5OYW1lKTtcclxuXHJcbiAgICAgICAgLy9HZXQgQWxpYXNcclxuICAgICAgICBpZiAoY29sdW1uQ29uZmlnICYmIGNvbHVtbkNvbmZpZy5hbGlhcyAmJiBjb2x1bW5Db25maWcuYWxpYXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uQ29uZmlnLmFsaWFzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9DbGVhbiBoZWFkZXJOYW1lXHJcbiAgICAgICAgaWYgKHRoaXMuY2xlYW5Db2x1bW5OYW1lKCkgJiYgY29sdW1uTmFtZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgPSBUb29scy5GaXJzdENoYXJUb0xvd2VyKGNvbHVtbk5hbWUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY2hhckFycmF5ID0gW107XHJcbiAgICAgICAgICAgIGZvcihjb25zdCBjaGFyIG9mIGNvbHVtbk5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGlmKGNoYXIgPT09IGNoYXIudG9VcHBlckNhc2UoKSkgY2hhckFycmF5LnB1c2goJyAnKTtcclxuICAgICAgICAgICAgICAgIGNoYXJBcnJheS5wdXNoKGNoYXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjaGFyQXJyYXlbMF0gPSBjaGFyQXJyYXlbMF0udG9VcHBlckNhc2UoKTtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSA9IGNoYXJBcnJheS5qb2luKCcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lLnRyaW0oKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0dldFNob3J0SWNvbiA9IChjb2x1bW5OYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc29ydCgpLmNvbHVtbk5hbWUgPT0gY29sdW1uTmFtZSA/IHRoaXMuX3NvcnQoKS5pY29uIDogJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9HZXRJZCA9IChpbmRleFJvdzogbnVtYmVyLCBpbmRleENvbHVtbjogbnVtYmVyLCBzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nID0+IHtcclxuICAgICAgICBpZiAoc3VmZml4Lmxlbmd0aCA+IDApIHN1ZmZpeCA9IGAtJHtzdWZmaXh9YDtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5faWR9LXJvdyR7aW5kZXhSb3d9Y29sdW1uJHtpbmRleENvbHVtbn0ke3N1ZmZpeH1gO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfR2V0Q2VsbFZhbHVlID0gKHJvdzogYW55LCBjb2x1bW5OYW1lOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgICAgIHJldHVybiByb3dbVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcihjb2x1bW5OYW1lKS5yZXBsYWNlQWxsKCcgJywgJycpXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0dldFRvb2x0aXAgPSAocHJlZml4OiBzdHJpbmcsIHJvdzogYW55LCBzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nID0+IHtcclxuICAgICAgICBsZXQgY29sdW1uID0gVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcih0aGlzLnRvb2x0aXBCeVJvdygpKS5yZXBsYWNlQWxsKCcgJywgJycpO1xyXG5cclxuICAgICAgICBpZiAoc3VmZml4Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc3VmZml4ID0gYCAke3N1ZmZpeH1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcEJ5Um93KCkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IGAke3ByZWZpeH0gJHtyb3dbY29sdW1uXX0ke3N1ZmZpeH1gXHJcbiAgICAgICAgICAgIDogYCR7cHJlZml4fSR7c3VmZml4fWA7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9IaWRlUm93ID0gKGdyb3VwOiBJR3JpZERhdGFTb3VyY2UpOiBib29sZWFuID0+IHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuX2lzR3JvdXBlZCgpID8gISh0aGlzLl9leHBhbmRlZEdyb3Vwcy5zb21lKHggPT4geCA9PSBncm91cC5ncm91cEJ5KSkgOiBmYWxzZSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0lzQ2VsbFR5cGUocHJvcGVydHk6IHN0cmluZywgZGF0YTogYW55LCB0eXBlOiAnbnVtYmVyJyB8ICdkYXRlJyB8ICd0ZW1wbGF0ZScgfCAnY29lclRleHRib3gnIHwgJ2NvZXJOdW1iZXJib3gnIHwgJ2NvZXJTZWxlY3Rib3gnICB8ICdjb2VyU3dpdGNoJyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbmZpZyA9IHRoaXMuX0dldENvbHVtbkNvbmZpZyhwcm9wZXJ0eSk7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW3Byb3BlcnR5XTtcclxuICAgICAgICBjb25zdCByb3cgPSBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbHVtbkNvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoWydjb2VyVGV4dGJveCcsICdjb2VyTnVtYmVyYm94JywgJ2NvZXJTZWxlY3Rib3gnLCAnY29lclN3aXRjaCddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dENvbmZpZzogYW55ID0gY29sdW1uQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBpbnB1dENvbmZpZy5oYXNPd25Qcm9wZXJ0eSh0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBpbnB1dENvbmZpZ1t0eXBlXSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICAgICAgICAgICAgICAgICYmIGlucHV0Q29uZmlnW3R5cGVdKHsgcHJvcGVydHksIHJvdywgdmFsdWUgfSkuaXNJbnB1dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBzd2l0Y2godHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sdW1uQ29uZmlnLnR5cGVOdW1iZXIgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbHVtbkNvbmZpZy50eXBlTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZy50eXBlTnVtYmVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKGRhdGEgPT09IG51bGwpID8gZmFsc2UgOiBjb2x1bW5Db25maWcudHlwZU51bWJlcih7IHByb3BlcnR5LCByb3csIHZhbHVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZy50eXBlRGF0ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnLnR5cGVEYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZy50eXBlRGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IChkYXRhID09PSBudWxsKSA/IGZhbHNlIDogY29sdW1uQ29uZmlnLnR5cGVEYXRlKHsgcHJvcGVydHksIHJvdywgdmFsdWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICd0ZW1wbGF0ZSc6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKHR5cGVvZiBjb2x1bW5Db25maWcudGVtcGxhdGUgPT09ICdzdHJpbmcnKSB8fCAodHlwZW9mIGNvbHVtbkNvbmZpZy50ZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0lzQ2VsbENvbG9yKHByb3BlcnR5OiBzdHJpbmcsIGRhdGE6IGFueSwgY29sb3I6ICdjb2xvckJsdWUnIHwgJ2NvbG9yR3JlZW4nIHwgJ2NvbG9yWWVsbG93JyB8ICdjb2xvclJlZCcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBjb2x1bW5Db25maWc6IGFueSA9IHRoaXMuX0dldENvbHVtbkNvbmZpZyhwcm9wZXJ0eSk7XHJcblxyXG4gICAgICAgIGlmIChjb2x1bW5Db25maWcpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5Db25maWdbY29sb3JdID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnW2NvbG9yXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZ1tjb2xvcl0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnW2NvbG9yXSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHksXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YVtwcm9wZXJ0eV1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIEdldEF0dHJpYnV0ZShwcm9wZXJ0eTogc3RyaW5nLCBkYXRhOiBhbnksIGF0dHJpYnV0ZTogc3RyaW5nLCB0eXBlOiAnY29lclN3aXRjaCcgfCAnY29lclRleHRib3gnIHwgJ2NvZXJOdW1iZXJib3gnfCAnY29lclNlbGVjdGJveCcgfCAnZGVmYXVsLWNlbGwnICk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uQ29uZmlnID0gdGhpcy5fR2V0Q29sdW1uQ29uZmlnKHByb3BlcnR5KTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IFRvb2xzLklzTm90TnVsbChkYXRhKSA/IGRhdGFbcHJvcGVydHldIDogbnVsbDtcclxuICAgICAgICBjb25zdCByb3cgPSBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbHVtbkNvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RlZmF1bC1jZWxsJykge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRBbGlnbic6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbkNvbmZpZz8udGV4dEFsaWduIHx8ICdsZWZ0JztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RlbXBsYXRlJzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dENvbmZpZzogYW55ID0gY29sdW1uQ29uZmlnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Q29uZmlnLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBpbnB1dENvbmZpZ1thdHRyaWJ1dGVdID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dENvbmZpZ1thdHRyaWJ1dGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodHlwZW9mIGlucHV0Q29uZmlnW2F0dHJpYnV0ZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRDb25maWdbYXR0cmlidXRlXSh7IHByb3BlcnR5LCByb3csIHZhbHVlIH0pIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmKFsnY29lclRleHRib3gnLCAnY29lck51bWJlcmJveCcsICdjb2VyU2VsZWN0Ym94JywgJ2NvZXJTd2l0Y2gnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRDb25maWc6IGFueSA9IGNvbHVtbkNvbmZpZztcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dENvbmZpZy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSAmJiB0eXBlb2YgaW5wdXRDb25maWdbdHlwZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRDb25maWdbdHlwZV0oeyBwcm9wZXJ0eSwgcm93LCB2YWx1ZSB9KVthdHRyaWJ1dGVdIHx8IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBCdXR0b25CeVJvdyhwcm9wZXJ0eTogJ3Nob3dEZWxldGVCdXR0b24nIHwgJ3Nob3dFZGl0QnV0dG9uJyB8ICdzaG93R29CdXR0b24nLCBkYXRhOiBhbnkgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uQnlSb3c6IGFueSA9IHRoaXMuYnV0dG9uQnlSb3c7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gVG9vbHMuSXNOb3ROdWxsKGRhdGEpID8gVG9vbHMuQnJlYWtSZWZlcmVuY2UoZGF0YSkgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoYnV0dG9uQnlSb3cuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgIGlmIChyb3cgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKHR5cGVvZiBidXR0b25CeVJvd1twcm9wZXJ0eV0gPT09ICdib29sZWFuJykgPyBidXR0b25CeVJvd1twcm9wZXJ0eV0gOiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgYnV0dG9uQnlSb3dbcHJvcGVydHldID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYnV0dG9uQnlSb3dbcHJvcGVydHldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgYnV0dG9uQnlSb3dbcHJvcGVydHldID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGJ1dHRvbkJ5Um93W3Byb3BlcnR5XSh7IHByb3BlcnR5LCByb3csIHZhbHVlOiBudWxsIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2UgPyAodGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMCkgOiBmYWxzZTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,30 +0,0 @@
1
- export const GridTemplates = {
2
- /** Template for boolean property */
3
- isActiveTemplate: (item) => {
4
- if (item.value) {
5
- return `
6
- <span class='text-green-bold'>
7
- <i class="fa-solid fa-circle-check"></i> Active
8
- </span>
9
- `;
10
- }
11
- else {
12
- return `
13
- <span class='text-gray-bold'>
14
- <i class="fa-solid fa-circle-minus"></i> Disabled
15
- </span>
16
- `;
17
- }
18
- },
19
- /** Template for boolean property */
20
- coerSwitchTemplate: (item) => ({
21
- isInput: true,
22
- tooltip: `${item.value ? 'Active' : 'Disabled'}`
23
- }),
24
- /** Template for text property */
25
- coerTextboxTemplate: (item) => ({
26
- isInput: true,
27
- isInvalid: item.value.length <= 0
28
- })
29
- };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1ncmlkLnRlbXBsYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvbGliL2NvZXItZ3JpZC9jb2VyLWdyaWQudGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUV6QixvQ0FBb0M7SUFDcEMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFvQixFQUFVLEVBQUU7UUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPOzs7O2FBSU4sQ0FBQztRQUNOLENBQUM7YUFFSSxDQUFDO1lBQ0YsT0FBTzs7OzthQUlOLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxrQkFBa0IsRUFBRSxDQUFDLElBQW9CLEVBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFXLEVBQUU7S0FDcEQsQ0FBQztJQUdGLGlDQUFpQztJQUNqQyxtQkFBbUIsRUFBRSxDQUFDLElBQW9CLEVBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sRUFBRSxJQUFJO1FBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7S0FDcEMsQ0FBQztDQUNMLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJR3JpZENvZXJTd2l0Y2gsIElHcmlkQ29lclRleHRCb3gsIElHcmlkSXRlbSB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgR3JpZFRlbXBsYXRlcyA9IHtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZm9yIGJvb2xlYW4gcHJvcGVydHkgKi9cclxuICAgIGlzQWN0aXZlVGVtcGxhdGU6IChpdGVtOiBJR3JpZEl0ZW08YW55Pik6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSd0ZXh0LWdyZWVuLWJvbGQnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2lyY2xlLWNoZWNrXCI+PC9pPiBBY3RpdmVcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9J3RleHQtZ3JheS1ib2xkJz5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNpcmNsZS1taW51c1wiPjwvaT4gRGlzYWJsZWRcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgYDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBmb3IgYm9vbGVhbiBwcm9wZXJ0eSAqL1xyXG4gICAgY29lclN3aXRjaFRlbXBsYXRlOiAoaXRlbTogSUdyaWRJdGVtPGFueT4pOiBJR3JpZENvZXJTd2l0Y2ggPT4gKHtcclxuICAgICAgICBpc0lucHV0OiB0cnVlLFxyXG4gICAgICAgIHRvb2x0aXA6IGAke2l0ZW0udmFsdWUgPyAnQWN0aXZlJyA6ICdEaXNhYmxlZCcgfWBcclxuICAgIH0pLFxyXG5cclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZm9yIHRleHQgcHJvcGVydHkgKi9cclxuICAgIGNvZXJUZXh0Ym94VGVtcGxhdGU6IChpdGVtOiBJR3JpZEl0ZW08YW55Pik6IElHcmlkQ29lclRleHRCb3ggPT4gKHtcclxuICAgICAgICBpc0lucHV0OiB0cnVlLFxyXG4gICAgICAgIGlzSW52YWxpZDogaXRlbS52YWx1ZS5sZW5ndGggPD0gMFxyXG4gICAgfSlcclxufSJdfQ==