tuain-ng-forms-lib 14.0.2 → 14.0.4

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 (99) hide show
  1. package/esm2020/lib/classes/forms/action.mjs +35 -0
  2. package/esm2020/lib/classes/forms/element.mjs +76 -0
  3. package/esm2020/lib/classes/forms/field.mjs +321 -0
  4. package/esm2020/lib/classes/forms/form.constants.mjs +26 -0
  5. package/esm2020/lib/classes/forms/form.mjs +434 -0
  6. package/esm2020/lib/classes/forms/section.mjs +132 -0
  7. package/esm2020/lib/classes/forms/subsection.mjs +70 -0
  8. package/esm2020/lib/classes/forms/table/action.mjs +22 -0
  9. package/esm2020/lib/classes/forms/table/column.mjs +61 -0
  10. package/esm2020/lib/classes/forms/table/row-data.mjs +111 -0
  11. package/esm2020/lib/classes/forms/table/table.mjs +372 -0
  12. package/esm2020/lib/components/elements/action.component.mjs +58 -0
  13. package/esm2020/lib/components/elements/field.component.mjs +90 -0
  14. package/esm2020/lib/components/elements/layout/element.component.mjs +31 -0
  15. package/esm2020/lib/components/elements/layout/form-error.component.mjs +20 -0
  16. package/esm2020/lib/components/elements/layout/form-header.component.mjs +30 -0
  17. package/esm2020/lib/components/elements/layout/section.component.mjs +22 -0
  18. package/esm2020/lib/components/elements/layout/sub-section.component.mjs +24 -0
  19. package/esm2020/lib/components/elements/tables/table-record-action.component.mjs +40 -0
  20. package/esm2020/lib/components/elements/tables/table-record-field.component.mjs +25 -0
  21. package/esm2020/lib/components/elements/tables/table.component.mjs +95 -0
  22. package/esm2020/lib/components/forms/basic-form.mjs +1425 -0
  23. package/esm2020/lib/services/event-manager.service.mjs +18 -0
  24. package/esm2020/lib/services/file-manager.service.mjs +6 -0
  25. package/esm2020/lib/services/form-manager.service.mjs +80 -0
  26. package/esm2020/lib/tuain-ng-forms-lib.module.mjs +71 -0
  27. package/esm2020/public-api.mjs +19 -0
  28. package/esm2020/tuain-ng-forms-lib.mjs +5 -0
  29. package/fesm2015/tuain-ng-forms-lib.mjs +3816 -0
  30. package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -0
  31. package/fesm2020/tuain-ng-forms-lib.mjs +3646 -0
  32. package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -0
  33. package/lib/classes/forms/action.d.ts +22 -0
  34. package/lib/classes/forms/element.d.ts +41 -0
  35. package/lib/classes/forms/field.d.ts +109 -0
  36. package/lib/classes/forms/form.constants.d.ts +25 -0
  37. package/lib/classes/forms/form.d.ts +134 -0
  38. package/lib/classes/forms/section.d.ts +39 -0
  39. package/lib/classes/forms/subsection.d.ts +26 -0
  40. package/lib/classes/forms/table/action.d.ts +20 -0
  41. package/lib/classes/forms/table/column.d.ts +33 -0
  42. package/lib/classes/forms/table/row-data.d.ts +14 -0
  43. package/lib/classes/forms/table/table.d.ts +100 -0
  44. package/lib/components/elements/action.component.d.ts +21 -0
  45. package/lib/components/elements/field.component.d.ts +43 -0
  46. package/lib/components/elements/layout/element.component.d.ts +14 -0
  47. package/lib/components/elements/layout/form-error.component.d.ts +8 -0
  48. package/lib/components/elements/layout/form-header.component.d.ts +12 -0
  49. package/lib/components/elements/layout/section.component.d.ts +10 -0
  50. package/lib/components/elements/layout/sub-section.component.d.ts +11 -0
  51. package/lib/components/elements/tables/table-record-action.component.d.ts +15 -0
  52. package/lib/components/elements/tables/table-record-field.component.d.ts +11 -0
  53. package/lib/components/elements/tables/table.component.d.ts +47 -0
  54. package/lib/components/forms/basic-form.d.ts +307 -0
  55. package/lib/services/event-manager.service.d.ts +9 -0
  56. package/lib/services/file-manager.service.d.ts +5 -0
  57. package/lib/services/form-manager.service.d.ts +28 -0
  58. package/lib/tuain-ng-forms-lib.module.d.ts +20 -0
  59. package/package.json +22 -2
  60. package/{src/public-api.ts → public-api.d.ts} +0 -5
  61. package/tuain-ng-forms-lib.d.ts +5 -0
  62. package/.browserslistrc +0 -16
  63. package/.yarn/cache/nanoid-npm-4.0.0-924f5c6312-7d5946df5c.zip +0 -0
  64. package/.yarn/cache/tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip +0 -0
  65. package/.yarn/cache/yn-npm-5.0.0-b001dab23c-f0ec7710d3.zip +0 -0
  66. package/.yarn/install-state.gz +0 -0
  67. package/karma.conf.js +0 -44
  68. package/ng-package.json +0 -11
  69. package/src/lib/classes/forms/action.ts +0 -55
  70. package/src/lib/classes/forms/element.ts +0 -98
  71. package/src/lib/classes/forms/field.ts +0 -408
  72. package/src/lib/classes/forms/form.constants.ts +0 -28
  73. package/src/lib/classes/forms/form.ts +0 -495
  74. package/src/lib/classes/forms/section.ts +0 -154
  75. package/src/lib/classes/forms/subsection.ts +0 -91
  76. package/src/lib/classes/forms/table/action.ts +0 -41
  77. package/src/lib/classes/forms/table/column.ts +0 -91
  78. package/src/lib/classes/forms/table/row-data.ts +0 -118
  79. package/src/lib/classes/forms/table/table.ts +0 -438
  80. package/src/lib/components/elements/action.component.ts +0 -53
  81. package/src/lib/components/elements/field.component.ts +0 -118
  82. package/src/lib/components/elements/layout/element.component.ts +0 -28
  83. package/src/lib/components/elements/layout/form-error.component.ts +0 -11
  84. package/src/lib/components/elements/layout/form-header.component.ts +0 -17
  85. package/src/lib/components/elements/layout/section.component.ts +0 -16
  86. package/src/lib/components/elements/layout/sub-section.component.ts +0 -17
  87. package/src/lib/components/elements/tables/table-record-action.component.ts +0 -37
  88. package/src/lib/components/elements/tables/table-record-field.component.ts +0 -19
  89. package/src/lib/components/elements/tables/table.component.ts +0 -102
  90. package/src/lib/components/forms/basic-form.ts +0 -1496
  91. package/src/lib/services/event-manager.service.ts +0 -21
  92. package/src/lib/services/file-manager.service.ts +0 -6
  93. package/src/lib/services/form-manager.service.ts +0 -89
  94. package/src/lib/services/icon-dictionary.service.ts +0 -159
  95. package/src/lib/tuain-ng-forms-lib.module.ts +0 -40
  96. package/src/test.ts +0 -27
  97. package/tsconfig.lib.json +0 -15
  98. package/tsconfig.lib.prod.json +0 -10
  99. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,372 @@
1
+ import { Subject } from 'rxjs';
2
+ import { elementTypes } from '../form.constants';
3
+ import { FormElement } from '../element';
4
+ import { RecordTableColumn } from './column';
5
+ import { TableAction } from './action';
6
+ import { TableRecordData } from './row-data';
7
+ const TABLE_SORT_ASCENDING = 'asc';
8
+ const TABLE_SORT_DESCENDING = 'desc';
9
+ export class RecordTable extends FormElement {
10
+ constructor(tableReceived, formConfig) {
11
+ super(tableReceived, formConfig);
12
+ this._inlineActionTrigger = new Subject();
13
+ this._globalActionTrigger = new Subject();
14
+ this._recordSelectionTrigger = new Subject();
15
+ this._selectionActionTrigger = new Subject();
16
+ this._getDataTrigger = new Subject();
17
+ this._attributeChange = new Subject();
18
+ this._tableColumnObj = {};
19
+ this._actionsObj = {};
20
+ // Mecanismos de filtrado nueva versión
21
+ this.globalFilterStrings = [];
22
+ this.tableRecordObj = {};
23
+ this.allSelected = false;
24
+ this.elementType = elementTypes.table;
25
+ this.waiting = false;
26
+ this.currentPage = 1;
27
+ this.totalPages = 1;
28
+ this.requestedPage = 1;
29
+ this.columns = [];
30
+ this._tableColumnObj = {};
31
+ this._actions = [];
32
+ this._actionsObj = {};
33
+ this.tableRecords = [];
34
+ this.globalSearch = false;
35
+ this.restrictedId = null;
36
+ this.tableTitle = tableReceived.tableTitle;
37
+ this._appendPages = tableReceived?.append ?? false;
38
+ this.selectable = tableReceived?.selectable ?? false;
39
+ this.selectionBackend = tableReceived?.selectionBackend ?? false;
40
+ this.sortable = tableReceived?.sortable ?? false;
41
+ this.setAttr('allSelected', false);
42
+ this.setAttr('tableCode', tableReceived.tableCode);
43
+ this.setAttr('clientPaging', tableReceived?.clientPaging ?? true);
44
+ this.setAttr('globalSearch', tableReceived?.simpleFilter ?? false);
45
+ this.setAttr('sorting', { columnName: '', direction: '' });
46
+ this.setAttr('recordsPerPage', formConfig.defaultRecordsPerPage);
47
+ this.setAttr('layout', '');
48
+ if (tableReceived.fields) {
49
+ const columns = [];
50
+ for (const columnReceived of tableReceived.fields) {
51
+ const columnDefinition = new RecordTableColumn(columnReceived, this._formConfig);
52
+ columns.push(columnDefinition);
53
+ this._tableColumnObj[columnDefinition.fieldCode] = columnDefinition;
54
+ }
55
+ this.setAttr('columns', columns);
56
+ }
57
+ if (tableReceived.actions) {
58
+ const tableActions = tableReceived.actions.map(objDef => {
59
+ let visibleStates = objDef.visibleStates;
60
+ let enabledStates = objDef.enabledStates;
61
+ if (!visibleStates) {
62
+ visibleStates = (objDef.actionModes || '').split(',')
63
+ .map(state => state.trim())
64
+ .filter(state => state.length > 0);
65
+ enabledStates = (objDef.actionModes || '').split(',')
66
+ .map(state => state.trim())
67
+ .filter(state => state.length > 0);
68
+ }
69
+ return { ...objDef, visibleStates, enabledStates };
70
+ });
71
+ for (const actionReceived of tableActions) {
72
+ const inlineAction = new TableAction(actionReceived);
73
+ this._actions.push(inlineAction);
74
+ this._actionsObj[inlineAction.actionCode] = inlineAction;
75
+ }
76
+ }
77
+ this.selectionField = (this.selectable) ? tableReceived?.selectionField : null;
78
+ // Filtros predefinidos en el formulario
79
+ if (tableReceived.filters) {
80
+ for (let index = 0; index < tableReceived.filters.length; index++) {
81
+ this.addFilterDefinition(tableReceived.filters[index].fieldCode, tableReceived.filters[index]);
82
+ }
83
+ }
84
+ }
85
+ get columnNames() { return Object.keys(this._tableColumnObj); }
86
+ get inlineActionTrigger() { return this._inlineActionTrigger; }
87
+ get globalActionTrigger() { return this._globalActionTrigger; }
88
+ get selectionActionTrigger() { return this._selectionActionTrigger; }
89
+ get recordSelectionTrigger() { return this._recordSelectionTrigger; }
90
+ get getDataTrigger() { return this._getDataTrigger; }
91
+ get attributeChange() { return this._attributeChange; }
92
+ getLayout() { return this.layout; }
93
+ setLayout(layout) { this.setAttr('layout', layout); }
94
+ hasActions() { return (this._actions.length > 0); }
95
+ getSelectedRecords() { return this.tableRecords.filter(rec => rec.selected).map(rec => rec.recordId); }
96
+ activateGlobalSearch() { this.globalSearch = true; }
97
+ inactivateGlobalSearch() { this.globalSearch = false; }
98
+ columnDefinition(fieldCode) { return this._tableColumnObj[fieldCode]; }
99
+ putOnWait() { this.waiting = true; }
100
+ freeWaiting() { this.waiting = false; }
101
+ setAttr(name, value) {
102
+ this[name] = value;
103
+ if (this._formConfig.monitoredTableAttributes.includes(name)) {
104
+ this._attributeChange.next({ name, value });
105
+ }
106
+ }
107
+ notifyGlobalAction(actionCode) {
108
+ const tableEvent = {
109
+ tableCode: this.tableCode,
110
+ actionCode,
111
+ actionDetail: null
112
+ };
113
+ this._globalActionTrigger.next(tableEvent);
114
+ }
115
+ notifyInlineAction(tableActionEvent) {
116
+ const tableEvent = {
117
+ tableCode: this.tableCode,
118
+ actionCode: tableActionEvent.actionCode,
119
+ actionDetail: {
120
+ recordId: tableActionEvent.recordId,
121
+ recordData: tableActionEvent.recordData
122
+ }
123
+ };
124
+ this._inlineActionTrigger.next(tableEvent);
125
+ }
126
+ notifyRecordSelection(recordId) {
127
+ const record = this.getTableRecord(recordId);
128
+ if (!record) {
129
+ return;
130
+ }
131
+ record.toggleSelect();
132
+ const tableEvent = {
133
+ tableCode: this.tableCode,
134
+ actionCode: null,
135
+ actionDetail: {
136
+ recordId: record.recordId,
137
+ recordData: record.recordData
138
+ }
139
+ };
140
+ this.recordSelectionTrigger.next(tableEvent);
141
+ }
142
+ notifySelectionAction(actionCode) {
143
+ const tableEvent = {
144
+ tableCode: this.tableCode,
145
+ actionCode,
146
+ actionDetail: {
147
+ selectedRecords: this.selectedRecords
148
+ }
149
+ };
150
+ this._selectionActionTrigger.next(tableEvent);
151
+ }
152
+ notifyGetDataAction(requestedPage = null) {
153
+ this.updateVisibleRecords();
154
+ this.requestedPage = requestedPage || this.currentPage;
155
+ const tableEvent = {
156
+ tableCode: this.tableCode,
157
+ actionCode: null,
158
+ actionDetail: null,
159
+ };
160
+ this._getDataTrigger.next(tableEvent);
161
+ return null;
162
+ }
163
+ clean() {
164
+ this.tableRecords = [];
165
+ this.unSelectAll();
166
+ this.tableRecordObj = {};
167
+ this.updateVisibleRecords();
168
+ }
169
+ selectAll() {
170
+ this.setAttr('allSelected', true);
171
+ this.tableRecords.forEach(record => record.select());
172
+ this.setAttr('selectedRecords', this.getSelectedRecords());
173
+ return true;
174
+ }
175
+ unSelectAll() {
176
+ this.setAttr('allSelected', false);
177
+ this.tableRecords.forEach(record => record.unselect());
178
+ this.setAttr('selectedRecords', this.getSelectedRecords());
179
+ return true;
180
+ }
181
+ setTableRecords(tableRecords, append) {
182
+ if (!append) {
183
+ this.clean();
184
+ }
185
+ const newRecordsObj = { ...this.tableRecordObj };
186
+ const newRecords = [...this.tableRecords];
187
+ for (const tableRecord of tableRecords) {
188
+ const recordReceived = new TableRecordData(tableRecord, this.columns, this.selectionField);
189
+ const recordIdKey = recordReceived.recordIdKey;
190
+ newRecords.push(recordReceived);
191
+ newRecordsObj[recordIdKey] = recordReceived;
192
+ }
193
+ this.tableRecords = newRecords;
194
+ this.setAttr('selectedRecords', this.getSelectedRecords());
195
+ this.tableRecordObj = newRecordsObj;
196
+ this.updateVisibleRecords();
197
+ }
198
+ appendRecords(records) { this.setTableRecords(records, true); }
199
+ replaceRecords(records) { this.setTableRecords(records, false); }
200
+ changePage(requestedPage) {
201
+ if (this.clientPaging) {
202
+ this.setAttr('currentPage', requestedPage);
203
+ this.updateVisibleRecords();
204
+ }
205
+ else {
206
+ this.notifyGetDataAction(requestedPage);
207
+ }
208
+ }
209
+ updateVisibleRecords() {
210
+ // updateView const changeViewAttributes = ['currentPage', 'recordsPerPage', 'sorting'];
211
+ let visibleRecords;
212
+ if (this.clientPaging) {
213
+ let filteredRecords = this.getFilteredRecords();
214
+ this.setAttr('totalRecordsNumber', filteredRecords.length);
215
+ visibleRecords = filteredRecords.slice((this.currentPage - 1) * this.recordsPerPage, (this.currentPage - 1) * this.recordsPerPage + this.recordsPerPage);
216
+ }
217
+ else {
218
+ visibleRecords = this.tableRecords;
219
+ }
220
+ this.setAttr('visibleRecords', visibleRecords);
221
+ }
222
+ updateFromServer(tableReceived) {
223
+ this.requestedPage = 1;
224
+ this.clean();
225
+ this.visible = tableReceived?.visible || true;
226
+ this.totalPages = tableReceived.totalPages || 1;
227
+ this.recordsNumber = tableReceived.recordsNumber;
228
+ this.setAttr('currentPage', +tableReceived?.currentPage ?? 1);
229
+ this.setAttr('recordsPerPage', +tableReceived.recordsPerPage);
230
+ this.setAttr('totalRecordsNumber', (this.clientPaging) ? tableReceived.tableRecords.length : +tableReceived.totalRecordsNumber);
231
+ this.setAttr('sorting', {
232
+ columnName: tableReceived.sortingColumn || '',
233
+ direction: tableReceived.sortingDirection || ''
234
+ });
235
+ this.waiting = false;
236
+ if (this._appendPages) {
237
+ this.replaceRecords(tableReceived.tableRecords);
238
+ }
239
+ else {
240
+ this.appendRecords(tableReceived.tableRecords);
241
+ }
242
+ this.updateVisibleRecords();
243
+ }
244
+ getTableRecord(recordId) {
245
+ const recordIdKey = (typeof recordId === 'object') ? JSON.stringify(recordId) : recordId;
246
+ return (this.tableRecordObj && recordId && this.tableRecordObj[recordId])
247
+ ? this.tableRecordObj[recordId] : null;
248
+ }
249
+ getAction(actionCode) {
250
+ return (this._actionsObj && actionCode && this._actionsObj[actionCode])
251
+ ? this._actionsObj[actionCode] : null;
252
+ }
253
+ getActions(actionClass = this._formConfig.tableActions.inline, actionTypes = null) {
254
+ return this._actions.filter(actionDef => {
255
+ const typeIncluded = (actionTypes) ? actionTypes.includes(actionDef.actionType) : true;
256
+ return actionDef.actionClass === actionClass && typeIncluded;
257
+ });
258
+ }
259
+ // Filtros
260
+ setFilterById(id) {
261
+ if (this.restrictedId === id) {
262
+ return;
263
+ }
264
+ this.restrictedId = id;
265
+ this.updateVisibleRecords();
266
+ }
267
+ cleanIdFilter() {
268
+ if (this.restrictedId === null) {
269
+ return;
270
+ }
271
+ this.restrictedId = null;
272
+ this.updateVisibleRecords();
273
+ }
274
+ setGlobalFilterString(text) {
275
+ this.globalFilterStrings = text.split(' ').filter(t => t && t.trim().length > 0).map(t => t.trim()) ?? [];
276
+ if (this.clientPaging) {
277
+ this.changePage(1);
278
+ }
279
+ }
280
+ addFilterDefinition(columnName, filterDefinition) {
281
+ const tableColumn = this.columnDefinition(columnName);
282
+ tableColumn && tableColumn.addFilterDefinition(filterDefinition);
283
+ }
284
+ getFilteredRecords() {
285
+ let filteredRecords = this.tableRecords;
286
+ if (this.restrictedId) {
287
+ filteredRecords = filteredRecords.filter(record => record.recordId === this.restrictedId);
288
+ }
289
+ if (this.globalFilterStrings.length > 0) {
290
+ filteredRecords = filteredRecords.filter(record => record.hasPattern(this.globalFilterStrings, this._tableColumnObj));
291
+ }
292
+ const columnFilters = this.columns.filter(column => column.filter).map(column => column.filter);
293
+ if (columnFilters.length > 0) {
294
+ filteredRecords = filteredRecords.filter(record => record.hasCondition(columnFilters));
295
+ }
296
+ return filteredRecords;
297
+ }
298
+ getColumnFilter(columnName) {
299
+ const tableColumn = this.columnDefinition(columnName);
300
+ return tableColumn?.filter ?? null;
301
+ }
302
+ addColumnFilter(columnName, columnValues, operator = null) {
303
+ const tableColumn = this.columnDefinition(columnName);
304
+ const columnFilterDefinition = tableColumn?.filterDefinition ?? null;
305
+ if (!columnFilterDefinition) {
306
+ return null;
307
+ }
308
+ tableColumn && tableColumn.addFilter(columnValues, operator);
309
+ this.updateVisibleRecords();
310
+ }
311
+ removeColumnFilter(columnName) {
312
+ const tableColumn = this.columnDefinition(columnName);
313
+ tableColumn && tableColumn.removeFilter();
314
+ this.updateVisibleRecords();
315
+ }
316
+ get currentFilter() {
317
+ const compactFilter = {
318
+ simpleFilterWords: this.globalFilterStrings,
319
+ advancedFilter: [],
320
+ };
321
+ const columnFilters = this.columns.filter(column => column.filter).map(column => column.filter);
322
+ for (let index = 0; index < columnFilters.length; index++) {
323
+ const columnFilter = columnFilters[index];
324
+ compactFilter.advancedFilter.push({
325
+ fieldCode: columnFilter.fieldCode,
326
+ operator: columnFilter.operator,
327
+ fieldValue1: columnFilter.values[0],
328
+ fieldValue2: columnFilter.values[1],
329
+ });
330
+ }
331
+ return compactFilter;
332
+ }
333
+ // Ordenamiento de registros local
334
+ sort(columnName, direction) {
335
+ this.setRequiredOrder(columnName, direction);
336
+ if (this.clientPaging) {
337
+ this.localSortData();
338
+ }
339
+ else {
340
+ this.notifyGetDataAction();
341
+ }
342
+ }
343
+ setRequiredOrder(columnField, direction = null) {
344
+ this.setAttr('sorting', {
345
+ columnName: columnField,
346
+ direction: (direction === 'ascend') ? TABLE_SORT_ASCENDING : TABLE_SORT_DESCENDING,
347
+ });
348
+ }
349
+ localSortData() {
350
+ if (!this.sorting.columnName || !this.sorting.direction) {
351
+ return;
352
+ }
353
+ this.tableRecords.sort((a, b) => this.recordCompare(a, b, this.sorting.columnName, this.sorting.direction));
354
+ //this.unSelectAll();
355
+ this.updateVisibleRecords();
356
+ }
357
+ recordCompare(recordA, recordB, columnCompare, direction) {
358
+ const recordAValue = recordA.getFieldValue(columnCompare);
359
+ const recordBValue = recordB.getFieldValue(columnCompare);
360
+ const recordAColumn = isNaN(recordAValue) ? recordAValue.toLocaleLowerCase() : recordAValue;
361
+ const recordBColumn = isNaN(recordBValue) ? recordBValue.toLocaleLowerCase() : recordBValue;
362
+ let result = 0;
363
+ if (recordAColumn < recordBColumn) {
364
+ result = -1;
365
+ }
366
+ else if (recordAColumn > recordBColumn) {
367
+ result = 1;
368
+ }
369
+ return direction === TABLE_SORT_ASCENDING ? result : -result;
370
+ }
371
+ }
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQWNyQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUEwQzFDLFlBQVksYUFBYSxFQUFFLFVBQVU7UUFDbkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQTFDbEIseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUNqRCx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBQ2pELDRCQUF1QixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFDcEQsNEJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUNwRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFDNUMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUMvQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUdyQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUV6Qix1Q0FBdUM7UUFDL0Isd0JBQW1CLEdBQWEsRUFB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TyxTQUFTLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuLi9lbGVtZW50JztcbmltcG9ydCB7IFJlY29yZFRhYmxlQ29sdW1uIH0gZnJvbSAnLi9jb2x1bW4nO1xuaW1wb3J0IHsgVGFibGVBY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBUYWJsZVJlY29yZERhdGEgfSBmcm9tICcuL3Jvdy1kYXRhJztcblxuY29uc3QgVEFCTEVfU09SVF9BU0NFTkRJTkcgPSAnYXNjJztcbmNvbnN0IFRBQkxFX1NPUlRfREVTQ0VORElORyA9ICdkZXNjJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUFjdGlvbkV2ZW50IHtcbiAgYWN0aW9uQ29kZTogc3RyaW5nO1xuICByZWNvcmRJZDogYW55O1xuICByZWNvcmREYXRhOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVFdmVudCB7XG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICBhY3Rpb25Db2RlOiBzdHJpbmc7XG4gIGFjdGlvbkRldGFpbDogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgUmVjb3JkVGFibGUgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lubGluZUFjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9nbG9iYWxBY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVjb3JkU2VsZWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9nZXREYXRhVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F0dHJpYnV0ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgcHJpdmF0ZSBfYXBwZW5kUGFnZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgX2FjdGlvbnM6IFRhYmxlQWN0aW9uW107XG4gIHByaXZhdGUgX2FjdGlvbnNPYmogPSB7fTtcblxuICAvLyBNZWNhbmlzbW9zIGRlIGZpbHRyYWRvIG51ZXZhIHZlcnNpw7NuXG4gIHByaXZhdGUgZ2xvYmFsRmlsdGVyU3RyaW5nczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBzZWxlY3RlZFJlY29yZHM6IGFueTtcbiAgcHJpdmF0ZSBnbG9iYWxTZWFyY2g6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVzdHJpY3RlZElkOiBhbnk7XG4gIHByaXZhdGUgbGF5b3V0OiBzdHJpbmc7XG5cbiAgdGFibGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXTtcbiAgdGFibGVSZWNvcmRPYmogPSB7fTtcbiAgdmlzaWJsZVJlY29yZHM6IFRhYmxlUmVjb3JkRGF0YVtdO1xuICBjb2x1bW5zOiBSZWNvcmRUYWJsZUNvbHVtbltdO1xuICBzZWxlY3RhYmxlOiBib29sZWFuO1xuICBzZWxlY3Rpb25CYWNrZW5kOiBib29sZWFuO1xuICBzZWxlY3Rpb25GaWVsZDogc3RyaW5nO1xuICBhbGxTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICB0YWJsZVRpdGxlOiBzdHJpbmc7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgcmVxdWVzdGVkUGFnZTogbnVtYmVyO1xuICByZWNvcmRzUGVyUGFnZTogbnVtYmVyO1xuICB0b3RhbFJlY29yZHNOdW1iZXI6IG51bWJlcjtcbiAgcmVjb3Jkc051bWJlcjogbnVtYmVyO1xuICBzb3J0aW5nOiBhbnk7XG5cbiAgd2FpdGluZzogYm9vbGVhbjtcbiAgY2xpZW50UGFnaW5nOiBib29sZWFuO1xuICBzb3J0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih0YWJsZVJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIodGFibGVSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlcy50YWJsZTtcbiAgICB0aGlzLndhaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSAxO1xuICAgIHRoaXMucmVxdWVzdGVkUGFnZSA9IDE7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5fdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fYWN0aW9uc09iaiA9IHt9O1xuICAgIHRoaXMudGFibGVSZWNvcmRzID0gW107XG4gICAgdGhpcy5nbG9iYWxTZWFyY2ggPSBmYWxzZTtcbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IG51bGw7XG5cbiAgICB0aGlzLnRhYmxlVGl0bGUgPSB0YWJsZVJlY2VpdmVkLnRhYmxlVGl0bGU7XG4gICAgdGhpcy5fYXBwZW5kUGFnZXMgPSB0YWJsZVJlY2VpdmVkPy5hcHBlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RhYmxlID0gdGFibGVSZWNlaXZlZD8uc2VsZWN0YWJsZSA/PyBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGlvbkJhY2tlbmQgPSB0YWJsZVJlY2VpdmVkPy5zZWxlY3Rpb25CYWNrZW5kID8/IGZhbHNlO1xuICAgIHRoaXMuc29ydGFibGUgPSB0YWJsZVJlY2VpdmVkPy5zb3J0YWJsZSA/PyBmYWxzZTtcblxuICAgIHRoaXMuc2V0QXR0cignYWxsU2VsZWN0ZWQnLCBmYWxzZSk7XG4gICAgdGhpcy5zZXRBdHRyKCd0YWJsZUNvZGUnLCB0YWJsZVJlY2VpdmVkLnRhYmxlQ29kZSk7XG4gICAgdGhpcy5zZXRBdHRyKCdjbGllbnRQYWdpbmcnLCB0YWJsZVJlY2VpdmVkPy5jbGllbnRQYWdpbmcgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRBdHRyKCdnbG9iYWxTZWFyY2gnLCB0YWJsZVJlY2VpdmVkPy5zaW1wbGVGaWx0ZXIgPz8gZmFsc2UpO1xuICAgIHRoaXMuc2V0QXR0cignc29ydGluZycsIHsgY29sdW1uTmFtZTogJycsIGRpcmVjdGlvbjogJycgfSk7XG4gICAgdGhpcy5zZXRBdHRyKCdyZWNvcmRzUGVyUGFnZScsIGZvcm1Db25maWcuZGVmYXVsdFJlY29yZHNQZXJQYWdlKTtcbiAgICB0aGlzLnNldEF0dHIoJ2xheW91dCcsICcnKTtcblxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgY29sdW1ucyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb2x1bW5SZWNlaXZlZCBvZiB0YWJsZVJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgICBjb25zdCBjb2x1bW5EZWZpbml0aW9uID0gbmV3IFJlY29yZFRhYmxlQ29sdW1uKGNvbHVtblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbkRlZmluaXRpb24pO1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtbk9ialtjb2x1bW5EZWZpbml0aW9uLmZpZWxkQ29kZV0gPSBjb2x1bW5EZWZpbml0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRBdHRyKCdjb2x1bW5zJywgY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRhYmxlQWN0aW9ucyA9IHRhYmxlUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIHRhYmxlQWN0aW9ucykge1xuICAgICAgICBjb25zdCBpbmxpbmVBY3Rpb24gPSBuZXcgVGFibGVBY3Rpb24oYWN0aW9uUmVjZWl2ZWQpO1xuICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goaW5saW5lQWN0aW9uKTtcbiAgICAgICAgdGhpcy5fYWN0aW9uc09ialtpbmxpbmVBY3Rpb24uYWN0aW9uQ29kZV0gPSBpbmxpbmVBY3Rpb247XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uRmllbGQgPSAodGhpcy5zZWxlY3RhYmxlKSA/IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGlvbkZpZWxkIDogbnVsbDtcbiAgICAvLyBGaWx0cm9zIHByZWRlZmluaWRvcyBlbiBlbCBmb3JtdWxhcmlvXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmlsdGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlUmVjZWl2ZWQuZmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdGhpcy5hZGRGaWx0ZXJEZWZpbml0aW9uKHRhYmxlUmVjZWl2ZWQuZmlsdGVyc1tpbmRleF0uZmllbGRDb2RlLCB0YWJsZVJlY2VpdmVkLmZpbHRlcnNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY29sdW1uTmFtZXMoKSB7IHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl90YWJsZUNvbHVtbk9iaik7IH1cbiAgZ2V0IGlubGluZUFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyOyB9XG4gIGdldCBnbG9iYWxBY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlcjsgfVxuICBnZXQgc2VsZWN0aW9uQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXI7IH1cbiAgZ2V0IHJlY29yZFNlbGVjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyOyB9XG4gIGdldCBnZXREYXRhVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2dldERhdGFUcmlnZ2VyOyB9XG4gIGdldCBhdHRyaWJ1dGVDaGFuZ2UoKSB7IHJldHVybiB0aGlzLl9hdHRyaWJ1dGVDaGFuZ2U7IH1cblxuICBnZXRMYXlvdXQoKSB7IHJldHVybiB0aGlzLmxheW91dDsgfVxuICBzZXRMYXlvdXQobGF5b3V0KSB7IHRoaXMuc2V0QXR0cignbGF5b3V0JywgbGF5b3V0KTsgfVxuICBoYXNBY3Rpb25zKCkgeyByZXR1cm4gKHRoaXMuX2FjdGlvbnMubGVuZ3RoID4gMCk7IH1cbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy50YWJsZVJlY29yZHMuZmlsdGVyKHJlYyA9PiByZWMuc2VsZWN0ZWQpLm1hcChyZWMgPT4gcmVjLnJlY29yZElkKTsgfVxuICBhY3RpdmF0ZUdsb2JhbFNlYXJjaCgpIHsgdGhpcy5nbG9iYWxTZWFyY2ggPSB0cnVlOyB9XG4gIGluYWN0aXZhdGVHbG9iYWxTZWFyY2goKSB7IHRoaXMuZ2xvYmFsU2VhcmNoID0gZmFsc2U7IH1cbiAgY29sdW1uRGVmaW5pdGlvbihmaWVsZENvZGUpIHsgcmV0dXJuIHRoaXMuX3RhYmxlQ29sdW1uT2JqW2ZpZWxkQ29kZV07IH1cbiAgcHV0T25XYWl0KCkgeyB0aGlzLndhaXRpbmcgPSB0cnVlOyB9XG4gIGZyZWVXYWl0aW5nKCkgeyB0aGlzLndhaXRpbmcgPSBmYWxzZTsgfVxuXG4gIHNldEF0dHIobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpc1tuYW1lXSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl9mb3JtQ29uZmlnLm1vbml0b3JlZFRhYmxlQXR0cmlidXRlcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgdGhpcy5fYXR0cmlidXRlQ2hhbmdlLm5leHQoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBub3RpZnlHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDogbnVsbFxuICAgIH07XG4gICAgdGhpcy5fZ2xvYmFsQWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5SW5saW5lQWN0aW9uKHRhYmxlQWN0aW9uRXZlbnQ6IFRhYmxlQWN0aW9uRXZlbnQpIHtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLnRhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGU6IHRhYmxlQWN0aW9uRXZlbnQuYWN0aW9uQ29kZSxcbiAgICAgIGFjdGlvbkRldGFpbDoge1xuICAgICAgICByZWNvcmRJZDogdGFibGVBY3Rpb25FdmVudC5yZWNvcmRJZCxcbiAgICAgICAgcmVjb3JkRGF0YTogdGFibGVBY3Rpb25FdmVudC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9pbmxpbmVBY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlSZWNvcmRTZWxlY3Rpb24ocmVjb3JkSWQpIHtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLmdldFRhYmxlUmVjb3JkKHJlY29yZElkKTtcbiAgICBpZiAoIXJlY29yZCkgeyByZXR1cm47IH1cbiAgICByZWNvcmQudG9nZ2xlU2VsZWN0KCk7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy50YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiBudWxsLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiByZWNvcmQucmVjb3JkSWQsXG4gICAgICAgIHJlY29yZERhdGE6IHJlY29yZC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnJlY29yZFNlbGVjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy50YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHNlbGVjdGVkUmVjb3JkczogdGhpcy5zZWxlY3RlZFJlY29yZHNcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3NlbGVjdGlvbkFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeUdldERhdGFBY3Rpb24ocmVxdWVzdGVkUGFnZSA9IG51bGwpIHtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gICAgdGhpcy5yZXF1ZXN0ZWRQYWdlID0gcmVxdWVzdGVkUGFnZSB8fCB0aGlzLmN1cnJlbnRQYWdlO1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMudGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogbnVsbCxcbiAgICAgIGFjdGlvbkRldGFpbDogbnVsbCxcbiAgICB9O1xuICAgIHRoaXMuX2dldERhdGFUcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICB0aGlzLnRhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMudW5TZWxlY3RBbGwoKTtcbiAgICB0aGlzLnRhYmxlUmVjb3JkT2JqID0ge307XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cignYWxsU2VsZWN0ZWQnLCB0cnVlKTtcbiAgICB0aGlzLnRhYmxlUmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiByZWNvcmQuc2VsZWN0KCkpO1xuICAgIHRoaXMuc2V0QXR0cignc2VsZWN0ZWRSZWNvcmRzJywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHVuU2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cignYWxsU2VsZWN0ZWQnLCBmYWxzZSk7XG4gICAgdGhpcy50YWJsZVJlY29yZHMuZm9yRWFjaChyZWNvcmQgPT4gcmVjb3JkLnVuc2VsZWN0KCkpO1xuICAgIHRoaXMuc2V0QXR0cignc2VsZWN0ZWRSZWNvcmRzJywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZXRUYWJsZVJlY29yZHModGFibGVSZWNvcmRzLCBhcHBlbmQpIHtcbiAgICBpZiAoIWFwcGVuZCkgeyB0aGlzLmNsZWFuKCk7IH1cbiAgICBjb25zdCBuZXdSZWNvcmRzT2JqID0geyAuLi50aGlzLnRhYmxlUmVjb3JkT2JqIH07XG4gICAgY29uc3QgbmV3UmVjb3JkcyA9IFsuLi50aGlzLnRhYmxlUmVjb3Jkc107XG4gICAgZm9yIChjb25zdCB0YWJsZVJlY29yZCBvZiB0YWJsZVJlY29yZHMpIHtcbiAgICAgIGNvbnN0IHJlY29yZFJlY2VpdmVkOiBUYWJsZVJlY29yZERhdGEgPSBuZXcgVGFibGVSZWNvcmREYXRhKHRhYmxlUmVjb3JkLCB0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0aW9uRmllbGQpO1xuICAgICAgY29uc3QgcmVjb3JkSWRLZXkgPSByZWNvcmRSZWNlaXZlZC5yZWNvcmRJZEtleTtcbiAgICAgIG5ld1JlY29yZHMucHVzaChyZWNvcmRSZWNlaXZlZCk7XG4gICAgICBuZXdSZWNvcmRzT2JqW3JlY29yZElkS2V5XSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlUmVjb3JkcyA9IG5ld1JlY29yZHM7XG4gICAgdGhpcy5zZXRBdHRyKCdzZWxlY3RlZFJlY29yZHMnLCB0aGlzLmdldFNlbGVjdGVkUmVjb3JkcygpKTtcbiAgICB0aGlzLnRhYmxlUmVjb3JkT2JqID0gbmV3UmVjb3Jkc09iajtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBhcHBlbmRSZWNvcmRzKHJlY29yZHMpIHsgdGhpcy5zZXRUYWJsZVJlY29yZHMocmVjb3JkcywgdHJ1ZSk7IH1cbiAgcmVwbGFjZVJlY29yZHMocmVjb3JkcykgeyB0aGlzLnNldFRhYmxlUmVjb3JkcyhyZWNvcmRzLCBmYWxzZSk7IH1cblxuICBjaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2UpIHtcbiAgICBpZiAodGhpcy5jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cignY3VycmVudFBhZ2UnLCByZXF1ZXN0ZWRQYWdlKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlHZXREYXRhQWN0aW9uKHJlcXVlc3RlZFBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZpc2libGVSZWNvcmRzKCkge1xuICAgIC8vIHVwZGF0ZVZpZXcgY29uc3QgY2hhbmdlVmlld0F0dHJpYnV0ZXMgPSBbJ2N1cnJlbnRQYWdlJywgJ3JlY29yZHNQZXJQYWdlJywgJ3NvcnRpbmcnXTtcbiAgICBsZXQgdmlzaWJsZVJlY29yZHM6IGFueVtdO1xuICAgIGlmICh0aGlzLmNsaWVudFBhZ2luZykge1xuICAgICAgbGV0IGZpbHRlcmVkUmVjb3JkcyA9IHRoaXMuZ2V0RmlsdGVyZWRSZWNvcmRzKCk7XG4gICAgICB0aGlzLnNldEF0dHIoJ3RvdGFsUmVjb3Jkc051bWJlcicsIGZpbHRlcmVkUmVjb3Jkcy5sZW5ndGgpO1xuICAgICAgdmlzaWJsZVJlY29yZHMgPSBmaWx0ZXJlZFJlY29yZHMuc2xpY2UoKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucmVjb3Jkc1BlclBhZ2UsXG4gICAgICAgICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJlY29yZHNQZXJQYWdlICsgdGhpcy5yZWNvcmRzUGVyUGFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZpc2libGVSZWNvcmRzID0gdGhpcy50YWJsZVJlY29yZHM7XG4gICAgfVxuICAgIHRoaXMuc2V0QXR0cigndmlzaWJsZVJlY29yZHMnLCB2aXNpYmxlUmVjb3Jkcyk7XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHRhYmxlUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnJlcXVlc3RlZFBhZ2UgPSAxO1xuICAgIHRoaXMuY2xlYW4oKTtcbiAgICB0aGlzLnZpc2libGUgPSB0YWJsZVJlY2VpdmVkPy52aXNpYmxlIHx8IHRydWU7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGFibGVSZWNlaXZlZC50b3RhbFBhZ2VzIHx8IDE7XG4gICAgdGhpcy5yZWNvcmRzTnVtYmVyID0gdGFibGVSZWNlaXZlZC5yZWNvcmRzTnVtYmVyO1xuICAgIHRoaXMuc2V0QXR0cignY3VycmVudFBhZ2UnLCArdGFibGVSZWNlaXZlZD8uY3VycmVudFBhZ2UgPz8gMSk7XG4gICAgdGhpcy5zZXRBdHRyKCdyZWNvcmRzUGVyUGFnZScsICt0YWJsZVJlY2VpdmVkLnJlY29yZHNQZXJQYWdlKTtcbiAgICB0aGlzLnNldEF0dHIoJ3RvdGFsUmVjb3Jkc051bWJlcicsICh0aGlzLmNsaWVudFBhZ2luZykgPyB0YWJsZVJlY2VpdmVkLnRhYmxlUmVjb3Jkcy5sZW5ndGggOiArdGFibGVSZWNlaXZlZC50b3RhbFJlY29yZHNOdW1iZXIpO1xuICAgIHRoaXMuc2V0QXR0cignc29ydGluZycsIHtcbiAgICAgIGNvbHVtbk5hbWU6IHRhYmxlUmVjZWl2ZWQuc29ydGluZ0NvbHVtbiB8fCAnJyxcbiAgICAgIGRpcmVjdGlvbjogdGFibGVSZWNlaXZlZC5zb3J0aW5nRGlyZWN0aW9uIHx8ICcnXG4gICAgfSk7XG4gICAgdGhpcy53YWl0aW5nID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuX2FwcGVuZFBhZ2VzKSB7XG4gICAgICB0aGlzLnJlcGxhY2VSZWNvcmRzKHRhYmxlUmVjZWl2ZWQudGFibGVSZWNvcmRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBlbmRSZWNvcmRzKHRhYmxlUmVjZWl2ZWQudGFibGVSZWNvcmRzKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpIHtcbiAgICBjb25zdCByZWNvcmRJZEtleSA9ICh0eXBlb2YgcmVjb3JkSWQgPT09ICdvYmplY3QnKSA/IEpTT04uc3RyaW5naWZ5KHJlY29yZElkKSA6IHJlY29yZElkO1xuICAgIHJldHVybiAodGhpcy50YWJsZVJlY29yZE9iaiAmJiByZWNvcmRJZCAmJiB0aGlzLnRhYmxlUmVjb3JkT2JqW3JlY29yZElkXSlcbiAgICAgID8gdGhpcy50YWJsZVJlY29yZE9ialtyZWNvcmRJZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0QWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICByZXR1cm4gKHRoaXMuX2FjdGlvbnNPYmogJiYgYWN0aW9uQ29kZSAmJiB0aGlzLl9hY3Rpb25zT2JqW2FjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9hY3Rpb25zT2JqW2FjdGlvbkNvZGVdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbnMoYWN0aW9uQ2xhc3M6IHN0cmluZyA9IHRoaXMuX2Zvcm1Db25maWcudGFibGVBY3Rpb25zLmlubGluZSwgYWN0aW9uVHlwZXM6IHN0cmluZ1tdID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zLmZpbHRlcihhY3Rpb25EZWYgPT4ge1xuICAgICAgY29uc3QgdHlwZUluY2x1ZGVkID0gKGFjdGlvblR5cGVzKSA/IGFjdGlvblR5cGVzLmluY2x1ZGVzKGFjdGlvbkRlZi5hY3Rpb25UeXBlKSA6IHRydWU7XG4gICAgICByZXR1cm4gYWN0aW9uRGVmLmFjdGlvbkNsYXNzID09PSBhY3Rpb25DbGFzcyAmJiB0eXBlSW5jbHVkZWQ7XG4gICAgfSk7XG4gIH1cblxuICAvLyBGaWx0cm9zXG5cbiAgc2V0RmlsdGVyQnlJZChpZCkge1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRJZCA9PT0gaWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5yZXN0cmljdGVkSWQgPSBpZDtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBjbGVhbklkRmlsdGVyKCkge1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRJZCA9PT0gbnVsbCkgeyByZXR1cm47IH1cbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IG51bGw7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgc2V0R2xvYmFsRmlsdGVyU3RyaW5nKHRleHQpIHtcbiAgICB0aGlzLmdsb2JhbEZpbHRlclN0cmluZ3MgPSB0ZXh0LnNwbGl0KCcgJykuZmlsdGVyKHQgPT4gdCAmJiB0LnRyaW0oKS5sZW5ndGggPiAwKS5tYXAodCA9PiB0LnRyaW0oKSkgPz8gW107XG4gICAgaWYgKHRoaXMuY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLmNoYW5nZVBhZ2UoMSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsdGVyRGVmaW5pdGlvbihjb2x1bW5OYW1lLCBmaWx0ZXJEZWZpbml0aW9uKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oY29sdW1uTmFtZSk7XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4uYWRkRmlsdGVyRGVmaW5pdGlvbihmaWx0ZXJEZWZpbml0aW9uKTtcbiAgfVxuXG4gIGdldEZpbHRlcmVkUmVjb3JkcygpIHtcbiAgICBsZXQgZmlsdGVyZWRSZWNvcmRzID0gdGhpcy50YWJsZVJlY29yZHM7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZElkKSB7XG4gICAgICBmaWx0ZXJlZFJlY29yZHMgPSBmaWx0ZXJlZFJlY29yZHMuZmlsdGVyKHJlY29yZCA9PiByZWNvcmQucmVjb3JkSWQgPT09IHRoaXMucmVzdHJpY3RlZElkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJlZFJlY29yZHMgPSBmaWx0ZXJlZFJlY29yZHMuZmlsdGVyKHJlY29yZCA9PiByZWNvcmQuaGFzUGF0dGVybih0aGlzLmdsb2JhbEZpbHRlclN0cmluZ3MsIHRoaXMuX3RhYmxlQ29sdW1uT2JqKSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGlmIChjb2x1bW5GaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNDb25kaXRpb24oY29sdW1uRmlsdGVycykpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzO1xuICB9XG5cbiAgZ2V0Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHJldHVybiB0YWJsZUNvbHVtbj8uZmlsdGVyID8/IG51bGw7XG4gIH1cblxuICBhZGRDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nLCBjb2x1bW5WYWx1ZXM6IGFueSB8IGFueVtdLCBvcGVyYXRvcjogc3RyaW5nID0gbnVsbCkge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIGNvbnN0IGNvbHVtbkZpbHRlckRlZmluaXRpb24gPSB0YWJsZUNvbHVtbj8uZmlsdGVyRGVmaW5pdGlvbiA/PyBudWxsO1xuICAgIGlmICghY29sdW1uRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRhYmxlQ29sdW1uICYmIHRhYmxlQ29sdW1uLmFkZEZpbHRlcihjb2x1bW5WYWx1ZXMsIG9wZXJhdG9yKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICByZW1vdmVDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oY29sdW1uTmFtZSk7XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4ucmVtb3ZlRmlsdGVyKCk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRGaWx0ZXIoKSB7XG4gICAgY29uc3QgY29tcGFjdEZpbHRlcjogYW55ID0ge1xuICAgICAgc2ltcGxlRmlsdGVyV29yZHM6IHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncyxcbiAgICAgIGFkdmFuY2VkRmlsdGVyOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2x1bW5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyc1tpbmRleF07XG4gICAgICBjb21wYWN0RmlsdGVyLmFkdmFuY2VkRmlsdGVyLnB1c2goe1xuICAgICAgICBmaWVsZENvZGU6IGNvbHVtbkZpbHRlci5maWVsZENvZGUsXG4gICAgICAgIG9wZXJhdG9yOiBjb2x1bW5GaWx0ZXIub3BlcmF0b3IsXG4gICAgICAgIGZpZWxkVmFsdWUxOiBjb2x1bW5GaWx0ZXIudmFsdWVzWzBdLFxuICAgICAgICBmaWVsZFZhbHVlMjogY29sdW1uRmlsdGVyLnZhbHVlc1sxXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGFjdEZpbHRlcjtcbiAgfVxuXG4gIC8vIE9yZGVuYW1pZW50byBkZSByZWdpc3Ryb3MgbG9jYWxcblxuICBzb3J0KGNvbHVtbk5hbWUsIGRpcmVjdGlvbikge1xuICAgIHRoaXMuc2V0UmVxdWlyZWRPcmRlcihjb2x1bW5OYW1lLCBkaXJlY3Rpb24pO1xuICAgIGlmICh0aGlzLmNsaWVudFBhZ2luZykge1xuICAgICAgdGhpcy5sb2NhbFNvcnREYXRhKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlHZXREYXRhQWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0UmVxdWlyZWRPcmRlcihjb2x1bW5GaWVsZCwgZGlyZWN0aW9uID0gbnVsbCkge1xuICAgIHRoaXMuc2V0QXR0cignc29ydGluZycsIHtcbiAgICAgIGNvbHVtbk5hbWU6IGNvbHVtbkZpZWxkLFxuICAgICAgZGlyZWN0aW9uOiAoZGlyZWN0aW9uID09PSAnYXNjZW5kJykgPyBUQUJMRV9TT1JUX0FTQ0VORElORyA6IFRBQkxFX1NPUlRfREVTQ0VORElORyxcbiAgICB9KTtcbiAgfVxuXG4gIGxvY2FsU29ydERhdGEoKSB7XG4gICAgaWYgKCF0aGlzLnNvcnRpbmcuY29sdW1uTmFtZSB8fCAhdGhpcy5zb3J0aW5nLmRpcmVjdGlvbikgeyByZXR1cm47IH1cbiAgICB0aGlzLnRhYmxlUmVjb3Jkcy5zb3J0KChhLCBiKSA9PiB0aGlzLnJlY29yZENvbXBhcmUoYSwgYiwgdGhpcy5zb3J0aW5nLmNvbHVtbk5hbWUsIHRoaXMuc29ydGluZy5kaXJlY3Rpb24pKTtcbiAgICAvL3RoaXMudW5TZWxlY3RBbGwoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICByZWNvcmRDb21wYXJlKHJlY29yZEE6IFRhYmxlUmVjb3JkRGF0YSwgcmVjb3JkQjogVGFibGVSZWNvcmREYXRhLCBjb2x1bW5Db21wYXJlLCBkaXJlY3Rpb24pIHtcbiAgICBjb25zdCByZWNvcmRBVmFsdWUgPSByZWNvcmRBLmdldEZpZWxkVmFsdWUoY29sdW1uQ29tcGFyZSk7XG4gICAgY29uc3QgcmVjb3JkQlZhbHVlID0gcmVjb3JkQi5nZXRGaWVsZFZhbHVlKGNvbHVtbkNvbXBhcmUpO1xuICAgIGNvbnN0IHJlY29yZEFDb2x1bW4gPSBpc05hTihyZWNvcmRBVmFsdWUpID8gcmVjb3JkQVZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgOiByZWNvcmRBVmFsdWU7XG4gICAgY29uc3QgcmVjb3JkQkNvbHVtbiA9IGlzTmFOKHJlY29yZEJWYWx1ZSkgPyByZWNvcmRCVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6IHJlY29yZEJWYWx1ZTtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBpZiAocmVjb3JkQUNvbHVtbiA8IHJlY29yZEJDb2x1bW4pIHtcbiAgICAgIHJlc3VsdCA9IC0xO1xuICAgIH0gZWxzZSBpZiAocmVjb3JkQUNvbHVtbiA+IHJlY29yZEJDb2x1bW4pIHtcbiAgICAgIHJlc3VsdCA9IDE7XG4gICAgfVxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IFRBQkxFX1NPUlRfQVNDRU5ESU5HID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,58 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ActionComponent {
4
+ constructor() {
5
+ this.style = 'primary';
6
+ this.showLabel = true;
7
+ }
8
+ ngOnInit() {
9
+ this.formConfig = this.action?._formConfig;
10
+ this.start();
11
+ }
12
+ start() { }
13
+ activate() {
14
+ if (this.action?.notifyActivation) {
15
+ this.action.notifyActivation();
16
+ }
17
+ }
18
+ visibleOnRestriction() {
19
+ if (!this.action?.restrictedOnField) {
20
+ return true;
21
+ }
22
+ if ((this.action?.restrictedOnOperator === '=='
23
+ && this.relatedField === this.action?.restrictedOnValue)
24
+ || (this.action?.restrictedOnOperator === '!='
25
+ && this.relatedField !== this.action?.restrictedOnValue)) {
26
+ return true;
27
+ }
28
+ return false;
29
+ }
30
+ get visible() {
31
+ return this.action?.visibleOn(this.state) && this.visibleOnRestriction();
32
+ }
33
+ get disabled() {
34
+ return !(this.action?.enabledOn(this.state));
35
+ }
36
+ }
37
+ ActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
+ ActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: ActionComponent, selector: "lib-action", inputs: { action: "action", busy: "busy", relatedField: "relatedField", state: "state", style: "style", showLabel: "showLabel" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ActionComponent, decorators: [{
40
+ type: Component,
41
+ args: [{
42
+ selector: 'lib-action',
43
+ template: `<ng-content></ng-content>`
44
+ }]
45
+ }], propDecorators: { action: [{
46
+ type: Input
47
+ }], busy: [{
48
+ type: Input
49
+ }], relatedField: [{
50
+ type: Input
51
+ }], state: [{
52
+ type: Input
53
+ }], style: [{
54
+ type: Input
55
+ }], showLabel: [{
56
+ type: Input
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZWxlbWVudHMvYWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFRekQsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFhVyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUM7S0FtQzNCO0lBakNDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLEtBQUssQ0FBQztJQUVYLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEtBQUssSUFBSTtlQUMxQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUM7ZUFDckQsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixLQUFLLElBQUk7bUJBQ3pDLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7NEdBM0NVLGVBQWU7Z0dBQWYsZUFBZSxvTEFIaEIsMkJBQTJCOzJGQUcxQixlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0Qzs4QkFLVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3Jtcy9hY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYWN0aW9uJyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YFxufSlcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm1Db25maWc6IGFueTtcbiAgaW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgQElucHV0KCkgYWN0aW9uOiBGb3JtQWN0aW9uO1xuICBASW5wdXQoKSBidXN5OiBhbnk7XG4gIEBJbnB1dCgpIHJlbGF0ZWRGaWVsZDogYW55O1xuICBASW5wdXQoKSBzdGF0ZTogYW55O1xuXG4gIEBJbnB1dCgpIHN0eWxlID0gJ3ByaW1hcnknO1xuICBASW5wdXQoKSBzaG93TGFiZWwgPSB0cnVlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMuYWN0aW9uPy5fZm9ybUNvbmZpZztcbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBzdGFydCgpIHsgfVxuXG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbj8ubm90aWZ5QWN0aXZhdGlvbikge1xuICAgICAgdGhpcy5hY3Rpb24ubm90aWZ5QWN0aXZhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2libGVPblJlc3RyaWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5hY3Rpb24/LnJlc3RyaWN0ZWRPbkZpZWxkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCh0aGlzLmFjdGlvbj8ucmVzdHJpY3RlZE9uT3BlcmF0b3IgPT09ICc9PSdcbiAgICAgICYmIHRoaXMucmVsYXRlZEZpZWxkID09PSB0aGlzLmFjdGlvbj8ucmVzdHJpY3RlZE9uVmFsdWUpXG4gICAgICB8fCAodGhpcy5hY3Rpb24/LnJlc3RyaWN0ZWRPbk9wZXJhdG9yID09PSAnIT0nXG4gICAgICAgICYmIHRoaXMucmVsYXRlZEZpZWxkICE9PSB0aGlzLmFjdGlvbj8ucmVzdHJpY3RlZE9uVmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IHZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uPy52aXNpYmxlT24odGhpcy5zdGF0ZSkgJiYgdGhpcy52aXNpYmxlT25SZXN0cmljdGlvbigpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiAhKHRoaXMuYWN0aW9uPy5lbmFibGVkT24odGhpcy5zdGF0ZSkpO1xuICB9XG59Il19
@@ -0,0 +1,90 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const VALUE = 'value';
4
+ const FOCUS = 'focus';
5
+ export class FieldComponent {
6
+ ngOnInit() {
7
+ if (this.field) {
8
+ this.formConfig = this.field?._formConfig;
9
+ // Inicialización
10
+ const mapping = Object.entries(this.formConfig.componentFieldAttrMap);
11
+ for (let index = 0; index < mapping.length; index++) {
12
+ const [fieldAttr1, compAttr1] = mapping[index];
13
+ const compAttr = compAttr1.toString();
14
+ const fieldAttr = fieldAttr1.toString();
15
+ const attributeValue = this.field?.[fieldAttr];
16
+ this.dafaultProcessFieldChange(compAttr, attributeValue);
17
+ this.processFieldChange(compAttr, attributeValue);
18
+ }
19
+ // Subscripción a cambios en atributos
20
+ this.field.attributeChange.subscribe(event => {
21
+ const { name: fieldAttr, value } = event;
22
+ const compAttr = this.formConfig.componentFieldAttrMap[fieldAttr];
23
+ this.dafaultProcessFieldChange(compAttr, value);
24
+ this.processFieldChange(compAttr, value);
25
+ });
26
+ }
27
+ this.start();
28
+ }
29
+ dafaultProcessFieldChange(attribute, value) {
30
+ if (attribute === VALUE) {
31
+ this.updateValue();
32
+ }
33
+ else if (attribute === FOCUS) {
34
+ this.focus();
35
+ }
36
+ else {
37
+ this[attribute] = value;
38
+ }
39
+ }
40
+ processFieldChange(attribute, value) { }
41
+ start() { }
42
+ focus() { }
43
+ updateObject() {
44
+ this.field.setValue(this.value);
45
+ }
46
+ inputChanged() {
47
+ this.field.setValue(this.value);
48
+ this.onChangeContent();
49
+ }
50
+ inputTyped() {
51
+ this.field.setValue(this.value);
52
+ this.onInputChange();
53
+ }
54
+ updateValue() {
55
+ this.value = this.field.getValue();
56
+ }
57
+ onInputChange() {
58
+ setTimeout(() => this.field.notifyEditionPartial(), 50);
59
+ }
60
+ onChangeContent() {
61
+ setTimeout(() => this.field.notifyEditionFinish(), 50);
62
+ }
63
+ onShowInfo(detail = null) {
64
+ setTimeout(() => this.field.notifyEditionDetailRequest(detail), 50);
65
+ }
66
+ numberInputValidation(event) {
67
+ const k = event.charCode;
68
+ return (k > 47 && k < 58);
69
+ }
70
+ get visible() {
71
+ return this.field?.visibleOn(this.state);
72
+ }
73
+ get disabled() {
74
+ return !this.field?.enabledOn(this.state);
75
+ }
76
+ }
77
+ FieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: FieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
+ FieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: FieldComponent, selector: "lib-field", inputs: { field: "field", state: "state" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: FieldComponent, decorators: [{
80
+ type: Component,
81
+ args: [{
82
+ selector: 'lib-field',
83
+ template: `<ng-content></ng-content>`
84
+ }]
85
+ }], propDecorators: { field: [{
86
+ type: Input
87
+ }], state: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy9maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFLdEIsTUFBTSxPQUFPLGNBQWM7SUE0QnpCLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1lBQzFDLGlCQUFpQjtZQUNqQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN0RSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQzlDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFR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QjsyRkFFMUIsY0FBYztrQkFKMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7OEJBMEJVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybXMvZmllbGQnO1xuXG5jb25zdCBWQUxVRSA9ICd2YWx1ZSc7XG5jb25zdCBGT0NVUyA9ICdmb2N1cyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZmllbGQnLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybUNvbmZpZzogYW55O1xuICAvLyBBdHJpYnV0b3Mgb2J0ZW5pZG9zIGVzdMOhdGljYW1lbnRlXG4gIGNvZGU6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgZmllbGRJbmZvOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG5cbiAgLy8gQXRyaWJ1dG9zIGFjdHVhbGl6YWRvcyBwb3Igc3Vic2NyaXBjacOzblxuICBtYXhMZW5ndGg6IGFueTtcbiAgbWluVmFsdWU6IGFueTtcbiAgbWF4VmFsdWU6IGFueTtcbiAgb25WYWxpZGF0aW9uOiBhbnk7XG4gIGNhcHR1cmVUeXBlOiBhbnk7XG4gIHRpdGxlOiBhbnk7XG4gIHR5cGU6IGFueTtcbiAgdmlzaWJsZUxhYmVsOiBhbnk7XG4gIHJlcXVpcmVkOiBhbnk7XG4gIG9wdGlvbnM6IGFueTtcblxuICBlcnJvclR5cGU6IGFueTtcbiAgZXJyb3JDb2RlOiBhbnk7XG4gIGVycm9yTWVzc2FnZTogYW55O1xuXG4gIEBJbnB1dCgpIGZpZWxkOiBGaWVsZERlc2NyaXB0b3I7XG4gIEBJbnB1dCgpIHN0YXRlOiBhbnk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMuZmllbGQ/Ll9mb3JtQ29uZmlnO1xuICAgICAgLy8gSW5pY2lhbGl6YWNpw7NuXG4gICAgICBjb25zdCBtYXBwaW5nID0gT2JqZWN0LmVudHJpZXModGhpcy5mb3JtQ29uZmlnLmNvbXBvbmVudEZpZWxkQXR0ck1hcCk7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcGluZy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgW2ZpZWxkQXR0cjEsIGNvbXBBdHRyMV0gPSBtYXBwaW5nW2luZGV4XTtcbiAgICAgICAgY29uc3QgY29tcEF0dHIgPSBjb21wQXR0cjEudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgZmllbGRBdHRyID0gZmllbGRBdHRyMS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IHRoaXMuZmllbGQ/LltmaWVsZEF0dHJdXG4gICAgICAgIHRoaXMuZGFmYXVsdFByb2Nlc3NGaWVsZENoYW5nZShjb21wQXR0ciwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgICB0aGlzLnByb2Nlc3NGaWVsZENoYW5nZShjb21wQXR0ciwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgfVxuICAgICAgLy8gU3Vic2NyaXBjacOzbiBhIGNhbWJpb3MgZW4gYXRyaWJ1dG9zXG4gICAgICB0aGlzLmZpZWxkLmF0dHJpYnV0ZUNoYW5nZS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCB7IG5hbWU6IGZpZWxkQXR0ciwgdmFsdWUgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBjb21wQXR0ciA9IHRoaXMuZm9ybUNvbmZpZy5jb21wb25lbnRGaWVsZEF0dHJNYXBbZmllbGRBdHRyXTtcbiAgICAgICAgdGhpcy5kYWZhdWx0UHJvY2Vzc0ZpZWxkQ2hhbmdlKGNvbXBBdHRyLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0ZpZWxkQ2hhbmdlKGNvbXBBdHRyLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZGFmYXVsdFByb2Nlc3NGaWVsZENoYW5nZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICBpZiAoYXR0cmlidXRlID09PSBWQUxVRSkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlID09PSBGT0NVUykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2F0dHJpYnV0ZV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzRmllbGRDaGFuZ2UoYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7IH1cbiAgc3RhcnQoKSB7IH1cbiAgZm9jdXMoKSB7IH1cblxuICB1cGRhdGVPYmplY3QoKSB7XG4gICAgdGhpcy5maWVsZC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIGlucHV0Q2hhbmdlZCgpIHtcbiAgICB0aGlzLmZpZWxkLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2VDb250ZW50KCk7XG4gIH1cblxuICBpbnB1dFR5cGVkKCkge1xuICAgIHRoaXMuZmllbGQuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbklucHV0Q2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVWYWx1ZSgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5maWVsZC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZmllbGQubm90aWZ5RWRpdGlvblBhcnRpYWwoKSwgNTApO1xuICB9XG5cbiAgb25DaGFuZ2VDb250ZW50KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maWVsZC5ub3RpZnlFZGl0aW9uRmluaXNoKCksIDUwKTtcbiAgfVxuXG4gIG9uU2hvd0luZm8oZGV0YWlsID0gbnVsbCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maWVsZC5ub3RpZnlFZGl0aW9uRGV0YWlsUmVxdWVzdChkZXRhaWwpLCA1MCk7XG4gIH1cblxuICBudW1iZXJJbnB1dFZhbGlkYXRpb24oZXZlbnQpIHtcbiAgICBjb25zdCBrID0gZXZlbnQuY2hhckNvZGU7XG4gICAgcmV0dXJuIChrID4gNDcgJiYgayA8IDU4KTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkPy52aXNpYmxlT24odGhpcy5zdGF0ZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuICF0aGlzLmZpZWxkPy5lbmFibGVkT24odGhpcy5zdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ElementComponent {
4
+ ngOnInit() {
5
+ this.formConfig = this.element?._formConfig;
6
+ this.start();
7
+ }
8
+ start() { }
9
+ get visible() {
10
+ return this.element?.visibleOn(this.state);
11
+ }
12
+ get disabled() {
13
+ return !this.element?.enabledOn(this.state);
14
+ }
15
+ }
16
+ ElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ ElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: ElementComponent, selector: "lib-element", inputs: { element: "element", form: "form", state: "state" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: ElementComponent, decorators: [{
19
+ type: Component,
20
+ args: [{
21
+ selector: 'lib-element',
22
+ template: `<ng-content></ng-content>`
23
+ }]
24
+ }], propDecorators: { element: [{
25
+ type: Input
26
+ }], form: [{
27
+ type: Input
28
+ }], state: [{
29
+ type: Input
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxLQUFLLENBQUM7SUFFWCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs2R0FwQlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsaUhBRmpCLDJCQUEyQjsyRkFFMUIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0Qzs4QkFJVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZWxlbWVudCcsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm1Db25maWc6IGFueTtcblxuICBASW5wdXQoKSBlbGVtZW50OiBhbnk7XG4gIEBJbnB1dCgpIGZvcm06IGFueTtcbiAgQElucHV0KCkgc3RhdGU6IGFueTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLmVsZW1lbnQ/Ll9mb3JtQ29uZmlnO1xuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHN0YXJ0KCkgeyB9XG5cbiAgZ2V0IHZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudD8udmlzaWJsZU9uKHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiAhdGhpcy5lbGVtZW50Py5lbmFibGVkT24odGhpcy5zdGF0ZSk7XG4gIH1cbn1cbiJdfQ==