@coolon/angular-ui-powerups 13.1.6 → 13.2.1

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 (102) hide show
  1. package/assets/table.scss +2 -2
  2. package/esm2020/lib/components/components.module.mjs +22 -19
  3. package/esm2020/lib/components/exports.mjs +28 -21
  4. package/esm2020/lib/components/tables/abstract-table-model.mjs +70 -29
  5. package/esm2020/lib/components/tables/abstract-table.component.mjs +12 -10
  6. package/esm2020/lib/components/tables/column/column-list-model.mjs +39 -0
  7. package/esm2020/lib/components/tables/column/column-model.mjs +180 -0
  8. package/esm2020/lib/components/tables/column/column-template/column-template.directive.mjs +35 -0
  9. package/esm2020/lib/components/tables/column/column-text-properties.mjs +2 -0
  10. package/esm2020/lib/components/tables/column/custom-template-column-model.mjs +16 -0
  11. package/esm2020/lib/components/tables/column/custom-value-column-model.mjs +37 -0
  12. package/esm2020/lib/components/tables/column/editor-controls-column-model.mjs +21 -0
  13. package/esm2020/lib/components/tables/column/list-propery-column-model.mjs +48 -0
  14. package/esm2020/lib/components/tables/column/property-column-model.mjs +92 -0
  15. package/esm2020/lib/components/tables/column/selection-column-model.mjs +40 -0
  16. package/esm2020/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +55 -0
  17. package/esm2020/lib/components/tables/editor/edit-session.mjs +23 -0
  18. package/esm2020/lib/components/tables/editor/editable-cell-renderer.mjs +2 -0
  19. package/esm2020/lib/components/tables/{table/paginator → paginator}/paginator.component.mjs +4 -4
  20. package/esm2020/lib/components/tables/renderer/cell-editors.mjs +2 -0
  21. package/esm2020/lib/components/tables/renderer/cell-portal-ref.mjs +93 -0
  22. package/esm2020/lib/components/tables/renderer/cell-renderer.mjs +2 -0
  23. package/esm2020/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +30 -0
  24. package/esm2020/lib/components/tables/{table → renderer}/default-header-cell-renderer/default-header-cell-renderer.component.mjs +1 -1
  25. package/esm2020/lib/components/tables/renderer/default-list-cell-renderer/default-list-cell-renderer.component.mjs +40 -0
  26. package/esm2020/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +31 -0
  27. package/esm2020/lib/components/tables/renderer/selection-cell/selection-cell.component.mjs +26 -0
  28. package/esm2020/lib/components/tables/renderer/table-cell/table-cell.component.mjs +93 -0
  29. package/esm2020/lib/components/tables/renderer/table-header-cell/table-header-cell.component.mjs +32 -0
  30. package/esm2020/lib/components/tables/search/column-text-search-formatter.mjs +52 -0
  31. package/esm2020/lib/components/tables/search/enable-cell-text-search.decorator.mjs +30 -0
  32. package/esm2020/lib/components/tables/table/table-model.mjs +2 -10
  33. package/esm2020/lib/components/tables/table/table.component.mjs +12 -12
  34. package/esm2020/lib/components/tables/table-row-menu/table-row-menu.component.mjs +84 -0
  35. package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  36. package/esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  37. package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +10 -10
  38. package/esm2020/lib/components/tables/tree-table/tree-table-model.mjs +1 -1
  39. package/fesm2015/coolon-angular-ui-powerups.mjs +608 -450
  40. package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -1
  41. package/fesm2020/coolon-angular-ui-powerups.mjs +740 -583
  42. package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -1
  43. package/lib/components/components.module.d.ts +55 -54
  44. package/lib/components/exports.d.ts +27 -20
  45. package/lib/components/tables/abstract-table-model.d.ts +24 -13
  46. package/lib/components/tables/abstract-table.component.d.ts +6 -5
  47. package/lib/components/tables/{column-list-model.d.ts → column/column-list-model.d.ts} +4 -4
  48. package/lib/components/tables/column/column-model.d.ts +77 -0
  49. package/lib/components/tables/column/custom-template-column-model.d.ts +8 -0
  50. package/lib/components/tables/column/custom-value-column-model.d.ts +10 -0
  51. package/lib/components/tables/column/editor-controls-column-model.d.ts +13 -0
  52. package/lib/components/tables/column/list-propery-column-model.d.ts +15 -0
  53. package/lib/components/tables/column/property-column-model.d.ts +24 -0
  54. package/lib/components/tables/column/selection-column-model.d.ts +12 -0
  55. package/lib/components/tables/{table → editor}/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  56. package/lib/components/tables/{edit-session.d.ts → editor/edit-session.d.ts} +2 -2
  57. package/lib/components/tables/{table/mutable-cell-renderer.d.ts → editor/editable-cell-renderer.d.ts} +2 -2
  58. package/lib/components/tables/{table/paginator → paginator}/paginator.component.d.ts +1 -1
  59. package/lib/components/tables/{table → renderer}/cell-portal-ref.d.ts +18 -18
  60. package/lib/components/tables/renderer/cell-renderer.d.ts +3 -0
  61. package/lib/components/tables/{table → renderer}/default-cell-renderer/default-cell-renderer.component.d.ts +1 -1
  62. package/lib/components/tables/renderer/default-list-cell-renderer/default-list-cell-renderer.component.d.ts +12 -0
  63. package/lib/components/tables/{table/select-header-cell-renderer/select-header-cell-renderer.component.d.ts → renderer/select-header-cell/selection-header-cell.component.d.ts} +3 -3
  64. package/lib/components/tables/{table/select-cell-renderer/select-cell-renderer.component.d.ts → renderer/selection-cell/selection-cell.component.d.ts} +3 -3
  65. package/lib/components/tables/{table/table-cell-renderer/table-cell-renderer.component.d.ts → renderer/table-cell/table-cell.component.d.ts} +5 -5
  66. package/lib/components/tables/{table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts → renderer/table-header-cell/table-header-cell.component.d.ts} +4 -4
  67. package/lib/components/tables/search/column-text-search-formatter.d.ts +28 -0
  68. package/lib/components/tables/search/enable-cell-text-search.decorator.d.ts +25 -0
  69. package/lib/components/tables/table/table-model.d.ts +3 -9
  70. package/lib/components/tables/table/table.component.d.ts +4 -4
  71. package/lib/components/tables/{table/table-row-menu → table-row-menu}/table-row-menu.component.d.ts +3 -3
  72. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  73. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +1 -1
  74. package/lib/components/tables/tree-table/tree-table-component.d.ts +2 -2
  75. package/lib/components/tables/tree-table/tree-table-model.d.ts +1 -1
  76. package/package.json +2 -1
  77. package/esm2020/lib/components/tables/column-list-model.mjs +0 -39
  78. package/esm2020/lib/components/tables/edit-session.mjs +0 -23
  79. package/esm2020/lib/components/tables/table/cell-editors.mjs +0 -2
  80. package/esm2020/lib/components/tables/table/cell-portal-ref.mjs +0 -93
  81. package/esm2020/lib/components/tables/table/cell-renderer.mjs +0 -2
  82. package/esm2020/lib/components/tables/table/column-model.mjs +0 -395
  83. package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +0 -35
  84. package/esm2020/lib/components/tables/table/column-text-properties.mjs +0 -2
  85. package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +0 -22
  86. package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +0 -55
  87. package/esm2020/lib/components/tables/table/mutable-cell-renderer.mjs +0 -2
  88. package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +0 -26
  89. package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +0 -31
  90. package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +0 -93
  91. package/esm2020/lib/components/tables/table/table-def.mjs +0 -2
  92. package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +0 -32
  93. package/esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs +0 -84
  94. package/esm2020/lib/components/tables/table/text-search-predicate.mjs +0 -2
  95. package/lib/components/tables/table/cell-renderer.d.ts +0 -5
  96. package/lib/components/tables/table/column-model.d.ts +0 -145
  97. package/lib/components/tables/table/table-def.d.ts +0 -7
  98. package/lib/components/tables/table/text-search-predicate.d.ts +0 -1
  99. /package/lib/components/tables/{table → column}/column-template/column-template.directive.d.ts +0 -0
  100. /package/lib/components/tables/{table → column}/column-text-properties.d.ts +0 -0
  101. /package/lib/components/tables/{table → renderer}/cell-editors.d.ts +0 -0
  102. /package/lib/components/tables/{table → renderer}/default-header-cell-renderer/default-header-cell-renderer.component.d.ts +0 -0
@@ -1,395 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ComponentRef } from "@angular/core";
3
- import { DelegatingSelectionModel, DelegatingValueModel, GarbageCollector, MultipleSelectionModel, ValueModel } from '@coolon/pectin';
4
- import { assert, lang, Stringy } from "@coolon/typescript-utilities";
5
- import { Memoize } from '@typescript-plus/fast-memoize-decorator';
6
- import { isFunction } from 'lodash';
7
- import { CellEditorPortalRef, CellHeaderPortalRef, CellRendererPortalRef, ComponentCellRendererPortalRef, TemplateCellRendererPortalRef } from './cell-portal-ref';
8
- import { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';
9
- import { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';
10
- import { EditRowControls } from './edit-row-controls/edit-row-controls.component';
11
- import { SelectCellRendererComponent } from './select-cell-renderer/select-cell-renderer.component';
12
- import { SelectHeaderCellRendererComponent } from './select-header-cell-renderer/select-header-cell-renderer.component';
13
- const noop = () => {
14
- };
15
- const CELL_RENDERER_COMPONENT_ROW_CACHE = Symbol('aup-cell-renderer:row-data-cache');
16
- const DEFAULT_TEXT_SEARCH_PREDICATE = (row, text) => false;
17
- export class ColumnModel extends GarbageCollector {
18
- constructor(columnId, textPropertiesProvider) {
19
- super();
20
- this.columnId = columnId;
21
- this.textPropertiesProvider = textPropertiesProvider;
22
- this._enableRowSelection = true;
23
- this._flex = false;
24
- this._defaultVisibility = this.registerDisposable(new DelegatingValueModel().withDefault(true));
25
- this._visible = this.registerDisposable(new DelegatingValueModel().withDefault(this._defaultVisibility));
26
- this._columnModelTextSearchPredicate = undefined;
27
- this._cellRendererTextSearchPredicate = undefined;
28
- this.installHeaderRenderer();
29
- this.dasherisedColumnId = Stringy.from(columnId).dasherize().toString();
30
- }
31
- installHeaderRenderer() {
32
- this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {
33
- component.headerText = column.getHeaderText();
34
- });
35
- }
36
- getHeaderText() {
37
- return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();
38
- }
39
- isVisible() {
40
- return this.visible.value;
41
- }
42
- get visible() {
43
- return this._visible.readonly;
44
- }
45
- visibleWhile(visible) {
46
- this._visible.setDelegate(visible);
47
- return this;
48
- }
49
- setDefaultVisibility(visible) {
50
- this._defaultVisibility.setDelegate(visible);
51
- }
52
- getDefaultHeaderText() {
53
- return this.columnId;
54
- }
55
- get isTextMatch() {
56
- return this._cellRendererTextSearchPredicate ?? this._columnModelTextSearchPredicate ?? DEFAULT_TEXT_SEARCH_PREDICATE;
57
- }
58
- /**
59
- * Sets the predicate to use when checking if the specified row is a text match for this column.
60
- * @param predicate
61
- */
62
- useTextSearchPredicate(predicate) {
63
- this._columnModelTextSearchPredicate = predicate;
64
- return this;
65
- }
66
- getColumnTextProperties() {
67
- return this._columnTextProperties || this.textPropertiesProvider();
68
- }
69
- /**
70
- * @deprecated use #columnTextProperties instead
71
- * @param columnTextProperties
72
- */
73
- textProperties(columnTextProperties) {
74
- return this.columnTextProperties(columnTextProperties);
75
- }
76
- columnTextProperties(columnTextProperties) {
77
- this._columnTextProperties = columnTextProperties;
78
- return this;
79
- }
80
- configureHeaderRenderer(config) {
81
- this._columnHeaderPortalRef = config;
82
- }
83
- configureCellRenderer(config) {
84
- this._cellRendererPortalRef = config;
85
- }
86
- configureCellEditor(cellEditor) {
87
- this._cellEditorPortalRef = cellEditor;
88
- }
89
- cellHeaderRenderer(componentType, initialiser) {
90
- this.configureHeaderRenderer(new CellHeaderPortalRef(componentType, initialiser));
91
- return this;
92
- }
93
- flex(flex = true) {
94
- this._flex = flex;
95
- }
96
- isFlex() {
97
- return this._flex;
98
- }
99
- hasEditorPortal() {
100
- return !!this._cellEditorPortalRef;
101
- }
102
- attachHeaderCell(host) {
103
- this._columnHeaderPortalRef.initialiseHost(host, this);
104
- }
105
- attachCell(host) {
106
- this._cellRendererPortalRef.initialiseHost(host, this);
107
- if (this.hasEditorPortal()) {
108
- this._cellEditorPortalRef.initialiseHost(host, this);
109
- }
110
- }
111
- onHeaderAttached(host, ref) {
112
- const component = this.getComponent(ref);
113
- this._columnHeaderPortalRef.onPortalAttached(host, component);
114
- }
115
- onRendererAttached(host, ref) {
116
- const component = this.getComponentOrEmbeddedView(ref);
117
- this._cellRendererPortalRef.onPortalAttached(host, component);
118
- if (ref instanceof CellRendererPortalRef && isFunction(component?.matches)) {
119
- // we've had the case where we were calling matches on disposed components, so we have
120
- // to make sure we only handle matches on components that we can track destroys.
121
- this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);
122
- ref.onDestroy(() => this._cellRendererTextSearchPredicate = undefined);
123
- }
124
- else {
125
- this._cellRendererTextSearchPredicate = undefined;
126
- }
127
- }
128
- // @Trace()
129
- onEditorAttached(host, ref) {
130
- this._cellEditorPortalRef.onPortalAttached(host, this.getComponent(ref));
131
- }
132
- updatePortalContent(host) {
133
- this._cellRendererPortalRef.pushState(host);
134
- }
135
- _selectRowOnClick(selectRowOnClick) {
136
- this._enableRowSelection = selectRowOnClick;
137
- return this;
138
- }
139
- isRowSelectionEnabled() {
140
- return this._enableRowSelection;
141
- }
142
- getComponent(ref) {
143
- if (ref instanceof ComponentRef) {
144
- return ref.instance;
145
- }
146
- else {
147
- console.error("headers only support component portals, got", ref);
148
- lang.illegalState(`headers only support component portals, got ${ref}`);
149
- }
150
- }
151
- getComponentOrEmbeddedView(ref) {
152
- if (ref instanceof ComponentRef) {
153
- return ref.instance;
154
- }
155
- else {
156
- return ref;
157
- }
158
- }
159
- }
160
- __decorate([
161
- Memoize(),
162
- __metadata("design:type", Function),
163
- __metadata("design:paramtypes", []),
164
- __metadata("design:returntype", String)
165
- ], ColumnModel.prototype, "getHeaderText", null);
166
- __decorate([
167
- Memoize(),
168
- __metadata("design:type", Function),
169
- __metadata("design:paramtypes", []),
170
- __metadata("design:returntype", Object)
171
- ], ColumnModel.prototype, "getColumnTextProperties", null);
172
- export class PropertyColumnModel extends ColumnModel {
173
- constructor(id, property, defaults) {
174
- super(id, defaults);
175
- this.property = property;
176
- this._format = (value) => value?.toString();
177
- this.cellRenderer(DefaultCellRendererComponent);
178
- this.useTextSearchPredicate((row, regex) => {
179
- return regex.test(this._format(row[this.property]));
180
- });
181
- }
182
- cellRenderer(componentType, onComponentInitOrOptions) {
183
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
184
- if (firstTime) {
185
- if (isFunction(onComponentInitOrOptions)) {
186
- onComponentInitOrOptions(component);
187
- }
188
- else {
189
- if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
190
- onComponentInitOrOptions.onComponentInit(component);
191
- }
192
- }
193
- }
194
- component.value = this._format(rowData.row[this.property]);
195
- }));
196
- return this;
197
- }
198
- liveEditCellRenderer(componentType, options) {
199
- return this.mutableCellRenderer(componentType, options);
200
- }
201
- /**
202
- * Deprecated. Use #liveEditCellRenderer instead.
203
- * @param componentType
204
- * @param options
205
- */
206
- mutableCellRenderer(componentType, options) {
207
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
208
- // keep a local copy most recent row value so it's available to teh
209
- // edit callback without having to add/remove subscribers all the time.
210
- component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
211
- let disableEditCallback = false;
212
- if (firstTime) {
213
- if (isFunction(options?.onComponentInit)) {
214
- options.onComponentInit(component);
215
- }
216
- // install our edit callback
217
- component.onValueEdited((is, was) => {
218
- if (!disableEditCallback) {
219
- options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
220
- }
221
- });
222
- }
223
- // now push the value the component and disable the callback just incase the component misbehaves
224
- // and fires a value change during the operation.
225
- disableEditCallback = true;
226
- component.value = rowData.row[this.property];
227
- disableEditCallback = false;
228
- if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
229
- options.onRowUpdate(component, rowData.row);
230
- }
231
- }));
232
- return this;
233
- }
234
- cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
235
- const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
236
- const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
237
- this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
238
- const formValueModel = editSession.form.pluck(this.property);
239
- if (validators) {
240
- formValueModel.validateUsing(validators);
241
- }
242
- component.valueModel = formValueModel;
243
- if (initialiser) {
244
- initialiser(component);
245
- }
246
- }));
247
- return this;
248
- }
249
- format(formatter) {
250
- assert.isFunction(formatter);
251
- this._format = formatter;
252
- return this;
253
- }
254
- selectRowOnClick(selectOnRowClick) {
255
- return this._selectRowOnClick(selectOnRowClick);
256
- }
257
- }
258
- export class ListPropertyColumnModel extends ColumnModel {
259
- constructor(id, property, defaults) {
260
- super(id, defaults);
261
- this.property = property;
262
- this._format = (value) => value.map(v => v?.toString()).join(', ');
263
- this.cellRenderer(DefaultCellRendererComponent);
264
- this.useTextSearchPredicate((row, regex) => {
265
- let rowElement = row[this.property];
266
- // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...
267
- return regex.test(this._format(rowElement));
268
- });
269
- }
270
- cellRenderer(componentType) {
271
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
272
- let rowElement = rowData.row[this.property];
273
- // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...
274
- component.value = this._format(rowElement);
275
- }));
276
- return this;
277
- }
278
- cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
279
- const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
280
- const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
281
- this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
282
- const formListModel = editSession.form.pluckList(this.property);
283
- if (validators) {
284
- formListModel.validateUsing(validators);
285
- }
286
- component.listModel = formListModel;
287
- if (initialiser) {
288
- initialiser(component);
289
- }
290
- }));
291
- return this;
292
- }
293
- format(formatter) {
294
- assert.isFunction(formatter);
295
- this._format = formatter;
296
- return this;
297
- }
298
- selectRowOnClick(selectRowOnClick) {
299
- return this._selectRowOnClick(selectRowOnClick);
300
- }
301
- }
302
- export class CustomValueColumnModel extends ColumnModel {
303
- constructor(columnId, defaults, getValue) {
304
- super(columnId, defaults);
305
- this.getValue = getValue;
306
- this.cellRenderer(DefaultCellRendererComponent);
307
- }
308
- cellRenderer(componentType, onComponentInitOrOptions) {
309
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
310
- if (firstTime) {
311
- if (isFunction(onComponentInitOrOptions)) {
312
- onComponentInitOrOptions(component);
313
- }
314
- else {
315
- if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
316
- onComponentInitOrOptions.onComponentInit(component);
317
- }
318
- }
319
- }
320
- component.value = this.getValue(rowData.row);
321
- if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {
322
- onComponentInitOrOptions.onRowUpdate(component, rowData.row);
323
- }
324
- }));
325
- return this;
326
- }
327
- selectRowOnClick(selectOnRowClick) {
328
- return this._selectRowOnClick(selectOnRowClick);
329
- }
330
- }
331
- export class EditorControlColumnModel extends ColumnModel {
332
- constructor(columnId, saveCommandFactory, defaults) {
333
- super(columnId, defaults);
334
- this.cellRenderer(EditRowControls);
335
- }
336
- cellRenderer(componentType) {
337
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
338
- component.row = rowData.row;
339
- component.editSession = rowData.editSession;
340
- component.editRowCommand = rowData.editRowCommand;
341
- }));
342
- return this;
343
- }
344
- getDefaultHeaderText() {
345
- return '';
346
- }
347
- }
348
- export class CustomTemplateColumnModel extends ColumnModel {
349
- constructor(columnId, defaults) {
350
- super(columnId, defaults);
351
- this.config = new TemplateCellRendererPortalRef();
352
- this.configureCellRenderer(this.config);
353
- }
354
- setTemplate(templateRef, viewContainer, fillCell, padChild) {
355
- this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);
356
- }
357
- selectRowOnClick(selectOnRowClick) {
358
- return this._selectRowOnClick(selectOnRowClick);
359
- }
360
- }
361
- export class SelectionColumnModel extends ColumnModel {
362
- constructor(columnId, defaults, selectionModel) {
363
- super(columnId, defaults);
364
- this._enableHeaderControls = true;
365
- this.selectionModel = DelegatingSelectionModel.createDelegate();
366
- this._selectRowOnClick(false);
367
- this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {
368
- component.selectionModel = this.selectionModel;
369
- component.enableHeaderControls = this._enableHeaderControls;
370
- });
371
- this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData) => {
372
- component.row = rowData.row;
373
- component.selectionModel = this.selectionModel;
374
- }));
375
- this.setSelectionModel(selectionModel);
376
- }
377
- setSelectionModel(selectionModel) {
378
- this.selectionModel.setDelegate(selectionModel);
379
- this.setDefaultVisibility(selectionModel instanceof MultipleSelectionModel ? ValueModel.TRUE : ValueModel.FALSE);
380
- }
381
- getDefaultHeaderText() {
382
- return '';
383
- }
384
- enableHeaderControls(enable) {
385
- this._enableHeaderControls = enable;
386
- return this;
387
- }
388
- selectRow(row) {
389
- this.selectionModel.selectCommand.execute(row);
390
- }
391
- isSelected(row) {
392
- return this.selectionModel.isSelected(row);
393
- }
394
- }
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUVwQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBS3RCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzlCLE1BQU0sbUJBQW1CLENBQUM7QUFHM0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDM0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBR2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBTXhILE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtBQUNsQixDQUFDLENBQUM7QUFRRixNQUFNLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBY3JGLE1BQU0s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Q0FBQyxxQkFBcUIsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLDJCQUEyQixFQUFFLENBQUMsU0FBUyxFQUFFLE9BQXFCLEVBQUUsRUFBRTtZQUM5SCxTQUFTLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDNUIsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQW1DO1FBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLFlBQVksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRVMsb0JBQW9CO1FBQzVCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWU7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBUTtRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWwvcG9ydGFsLWRpcmVjdGl2ZXNcIjtcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgQ29tbWFuZCwgQ29tbWFuZEZhY3RvcnksXG4gIERlbGVnYXRpbmdTZWxlY3Rpb25Nb2RlbCxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERpcnR5VHJhY2tpbmdGb3JtLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBNdWx0aXBsZVNlbGVjdGlvbk1vZGVsLFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgVHlwZXMsXG4gIFVuYXJ5Q29tbWFuZCxcbiAgVmFsaWRhdG9yLFxuICBWYWx1ZU1vZGVsXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IGFzc2VydCwgbGFuZywgU3RyaW5neSB9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yJztcblxuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDZWxsRWRpdG9yQ29tcG9uZW50LCBDZWxsTGlzdEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzJztcbmltcG9ydCB7XG4gIENlbGxFZGl0b3JQb3J0YWxSZWYsXG4gIENlbGxIZWFkZXJQb3J0YWxSZWYsXG4gIENlbGxSZW5kZXJlclBvcnRhbFJlZixcbiAgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmLFxuICBUZW1wbGF0ZUNlbGxSZW5kZXJlclBvcnRhbFJlZlxufSBmcm9tICcuL2NlbGwtcG9ydGFsLXJlZic7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXIgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgQ29sdW1uVGV4dFByb3BlcnRpZXMgfSBmcm9tICcuL2NvbHVtbi10ZXh0LXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgRGVmYXVsdENlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vZGVmYXVsdC1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVmYXVsdEhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vZGVmYXVsdC1oZWFkZXItY2VsbC1yZW5kZXJlci9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0Um93Q29udHJvbHMgfSBmcm9tICcuL2VkaXQtcm93LWNvbnRyb2xzL2VkaXQtcm93LWNvbnRyb2xzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4uL2VkaXQtc2Vzc2lvbic7XG5pbXBvcnQgeyBNdXRhYmxlQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi9tdXRhYmxlLWNlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgU2VsZWN0Q2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtY2VsbC1yZW5kZXJlci9zZWxlY3QtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtaGVhZGVyLWNlbGwtcmVuZGVyZXIvc2VsZWN0LWhlYWRlci1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtY2VsbC1yZW5kZXJlci90YWJsZS1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaGVhZGVyLWNlbGwtcmVuZGVyZXIvdGFibGUtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRTZWFyY2hQcmVkaWNhdGUgfSBmcm9tICcuL3RleHQtc2VhcmNoLXByZWRpY2F0ZSc7XG5cblxuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm93RGF0YTxSb3c+IHtcbiAgcm93OiBSb3c7XG4gIGVkaXRTZXNzaW9uPzogRWRpdFNlc3Npb248Um93PjtcbiAgZWRpdFJvd0NvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG59XG5cbmNvbnN0IENFTExfUkVOREVSRVJfQ09NUE9ORU5UX1JPV19DQUNIRSA9IFN5bWJvbCgnYXVwLWNlbGwtcmVuZGVyZXI6cm93LWRhdGEtY2FjaGUnKTtcblxuZXhwb3J0IHR5cGUgT25Db21wb25lbnRJbml0PEM+ID0gKGNvbXBvbmVudDogQykgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRT4ge1xuICBvbkNvbXBvbmVudEluaXQ/OiAoY29tcG9uZW50OiBFKSA9PiB2b2lkO1xuICBvblJvd1VwZGF0ZT86IChjb21wb25lbnQ6IEUsIHJvdzogUm93KSA9PiB2b2lkO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZUNlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBFLCBQIGV4dGVuZHMga2V5b2YgUm93PiBleHRlbmRzIENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBFPiB7XG4gIG9uVmFsdWVFZGl0OiAocm93OiBSb3csIGlzOiBSb3dbUF0sIHdhczogUm93W1BdKSA9PiB2b2lkO1xufVxuXG5jb25zdCBERUZBVUxUX1RFWFRfU0VBUkNIX1BSRURJQ0FURTogVGV4dFNlYXJjaFByZWRpY2F0ZTx1bmtub3duPiA9IChyb3c6IHVua25vd24sIHRleHQ6IFJlZ0V4cCkgPT4gZmFsc2U7XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5Nb2RlbDxSb3c+IGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJpdmF0ZSBfY29sdW1uVGV4dFByb3BlcnRpZXM6IENvbHVtblRleHRQcm9wZXJ0aWVzO1xuXG4gIHByaXZhdGUgX2NvbHVtbkhlYWRlclBvcnRhbFJlZjogQ2VsbEhlYWRlclBvcnRhbFJlZjxSb3csIGFueT47XG4gIHByaXZhdGUgX2NlbGxSZW5kZXJlclBvcnRhbFJlZjogQ2VsbFJlbmRlcmVyUG9ydGFsUmVmPFJvdywgYW55PjtcbiAgcHJpdmF0ZSBfY2VsbEVkaXRvclBvcnRhbFJlZjogQ2VsbEVkaXRvclBvcnRhbFJlZjxSb3csIGFueT47XG5cbiAgcHJpdmF0ZSBfZW5hYmxlUm93U2VsZWN0aW9uID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfZmxleCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RlZmF1bHRWaXNpYmlsaXR5ID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQodHJ1ZSkpO1xuICBwcml2YXRlIF92aXNpYmxlID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQodGhpcy5fZGVmYXVsdFZpc2liaWxpdHkpKTtcbiAgcmVhZG9ubHkgZGFzaGVyaXNlZENvbHVtbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY29sdW1uTW9kZWxUZXh0U2VhcmNoUHJlZGljYXRlOiBUZXh0U2VhcmNoUHJlZGljYXRlPFJvdz4gPSB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfY2VsbFJlbmRlcmVyVGV4dFNlYXJjaFByZWRpY2F0ZTogVGV4dFNlYXJjaFByZWRpY2F0ZTxSb3c+ID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbHVtbklkOiBzdHJpbmcsIHByaXZhdGUgdGV4dFByb3BlcnRpZXNQcm92aWRlcjogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbnN0YWxsSGVhZGVyUmVuZGVyZXIoKTtcbiAgICB0aGlzLmRhc2hlcmlzZWRDb2x1bW5JZCA9IFN0cmluZ3kuZnJvbShjb2x1bW5JZCkuZGFzaGVyaXplKCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnN0YWxsSGVhZGVyUmVuZGVyZXIoKSB7XG4gICAgdGhpcy5jZWxsSGVhZGVyUmVuZGVyZXIoRGVmYXVsdEhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCwgKGNvbXBvbmVudCwgY29sdW1uKSA9PiB7XG4gICAgICBjb21wb25lbnQuaGVhZGVyVGV4dCA9IGNvbHVtbi5nZXRIZWFkZXJUZXh0KCk7XG4gICAgfSk7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldEhlYWRlclRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcygpPy5oZWFkZXJUZXh0KCkgfHwgdGhpcy5nZXREZWZhdWx0SGVhZGVyVGV4dCgpO1xuICB9XG5cbiAgaXNWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGUudmFsdWU7XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZS5yZWFkb25seTtcbiAgfVxuXG4gIHZpc2libGVXaGlsZSh2aXNpYmxlOiBWYWx1ZU1vZGVsPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgdGhpcy5fdmlzaWJsZS5zZXREZWxlZ2F0ZSh2aXNpYmxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXREZWZhdWx0VmlzaWJpbGl0eSh2aXNpYmxlOiBWYWx1ZU1vZGVsPGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fZGVmYXVsdFZpc2liaWxpdHkuc2V0RGVsZWdhdGUodmlzaWJsZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdEhlYWRlclRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uSWQ7XG4gIH1cblxuICBnZXQgaXNUZXh0TWF0Y2goKTogVGV4dFNlYXJjaFByZWRpY2F0ZTxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFJlbmRlcmVyVGV4dFNlYXJjaFByZWRpY2F0ZSA/PyB0aGlzLl9jb2x1bW5Nb2RlbFRleHRTZWFyY2hQcmVkaWNhdGUgPz8gREVGQVVMVF9URVhUX1NFQVJDSF9QUkVESUNBVEU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcHJlZGljYXRlIHRvIHVzZSB3aGVuIGNoZWNraW5nIGlmIHRoZSBzcGVjaWZpZWQgcm93IGlzIGEgdGV4dCBtYXRjaCBmb3IgdGhpcyBjb2x1bW4uXG4gICAqIEBwYXJhbSBwcmVkaWNhdGVcbiAgICovXG4gIHVzZVRleHRTZWFyY2hQcmVkaWNhdGUocHJlZGljYXRlOiBUZXh0U2VhcmNoUHJlZGljYXRlPFJvdz4pOnRoaXMge1xuICAgIHRoaXMuX2NvbHVtbk1vZGVsVGV4dFNlYXJjaFByZWRpY2F0ZSA9IHByZWRpY2F0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoKTogQ29sdW1uVGV4dFByb3BlcnRpZXMge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllcyB8fCB0aGlzLnRleHRQcm9wZXJ0aWVzUHJvdmlkZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgI2NvbHVtblRleHRQcm9wZXJ0aWVzIGluc3RlYWRcbiAgICogQHBhcmFtIGNvbHVtblRleHRQcm9wZXJ0aWVzXG4gICAqL1xuICB0ZXh0UHJvcGVydGllcyhjb2x1bW5UZXh0UHJvcGVydGllczogQ29sdW1uVGV4dFByb3BlcnRpZXMpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5UZXh0UHJvcGVydGllcyk7XG4gIH1cblxuICBjb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5UZXh0UHJvcGVydGllczogQ29sdW1uVGV4dFByb3BlcnRpZXMpOiB0aGlzIHtcbiAgICB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllcyA9IGNvbHVtblRleHRQcm9wZXJ0aWVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUhlYWRlclJlbmRlcmVyPEM+KGNvbmZpZzogQ2VsbEhlYWRlclBvcnRhbFJlZjxSb3csIGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLl9jb2x1bW5IZWFkZXJQb3J0YWxSZWYgPSBjb25maWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uZmlndXJlQ2VsbFJlbmRlcmVyPEM+KGNvbmZpZzogQ2VsbFJlbmRlcmVyUG9ydGFsUmVmPFJvdywgYW55Pik6IHZvaWQge1xuICAgIHRoaXMuX2NlbGxSZW5kZXJlclBvcnRhbFJlZiA9IGNvbmZpZztcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25maWd1cmVDZWxsRWRpdG9yPEU+KGNlbGxFZGl0b3I6IENlbGxFZGl0b3JQb3J0YWxSZWY8Um93LCBFPik6IHZvaWQge1xuICAgIHRoaXMuX2NlbGxFZGl0b3JQb3J0YWxSZWYgPSBjZWxsRWRpdG9yO1xuICB9XG5cbiAgY2VsbEhlYWRlclJlbmRlcmVyPEM+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8Qz4sIGluaXRpYWxpc2VyOiAoY29tcG9uZW50OiBDLCBjb2x1bW46IENvbHVtbk1vZGVsPFJvdz4pID0+IHZvaWQpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZ3VyZUhlYWRlclJlbmRlcmVyKG5ldyBDZWxsSGVhZGVyUG9ydGFsUmVmPFJvdywgQz4oY29tcG9uZW50VHlwZSwgaW5pdGlhbGlzZXIpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZsZXgoZmxleCA9IHRydWUpIHtcbiAgICB0aGlzLl9mbGV4ID0gZmxleDtcbiAgfVxuXG4gIGlzRmxleCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmxleDtcbiAgfVxuXG4gIGhhc0VkaXRvclBvcnRhbCgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9jZWxsRWRpdG9yUG9ydGFsUmVmO1xuICB9XG5cbiAgYXR0YWNoSGVhZGVyQ2VsbChob3N0OiBhbnkpIHtcbiAgICB0aGlzLl9jb2x1bW5IZWFkZXJQb3J0YWxSZWYuaW5pdGlhbGlzZUhvc3QoaG9zdCwgdGhpcyk7XG4gIH1cblxuICBhdHRhY2hDZWxsKGhvc3Q6IGFueSkge1xuICAgIHRoaXMuX2NlbGxSZW5kZXJlclBvcnRhbFJlZi5pbml0aWFsaXNlSG9zdChob3N0LCB0aGlzKTtcbiAgICBpZiAodGhpcy5oYXNFZGl0b3JQb3J0YWwoKSkge1xuICAgICAgdGhpcy5fY2VsbEVkaXRvclBvcnRhbFJlZi5pbml0aWFsaXNlSG9zdChob3N0LCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBvbkhlYWRlckF0dGFjaGVkKGhvc3Q6IFRhYmxlSGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50LCByZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5nZXRDb21wb25lbnQocmVmKTtcbiAgICB0aGlzLl9jb2x1bW5IZWFkZXJQb3J0YWxSZWYub25Qb3J0YWxBdHRhY2hlZChob3N0LCBjb21wb25lbnQpO1xuICB9XG5cbiAgb25SZW5kZXJlckF0dGFjaGVkKGhvc3Q6IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIHJlZjogQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudE9yRW1iZWRkZWRWaWV3KHJlZik7XG4gICAgdGhpcy5fY2VsbFJlbmRlcmVyUG9ydGFsUmVmLm9uUG9ydGFsQXR0YWNoZWQoaG9zdCwgY29tcG9uZW50KTtcbiAgICBpZiAocmVmIGluc3RhbmNlb2YgQ2VsbFJlbmRlcmVyUG9ydGFsUmVmICYmIGlzRnVuY3Rpb24oY29tcG9uZW50Py5tYXRjaGVzKSkge1xuICAgICAgLy8gd2UndmUgaGFkIHRoZSBjYXNlIHdoZXJlIHdlIHdlcmUgY2FsbGluZyBtYXRjaGVzIG9uIGRpc3Bvc2VkIGNvbXBvbmVudHMsIHNvIHdlIGhhdmVcbiAgICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGhhbmRsZSBtYXRjaGVzIG9uIGNvbXBvbmVudHMgdGhhdCB3ZSBjYW4gdHJhY2sgZGVzdHJveXMuXG4gICAgICB0aGlzLl9jZWxsUmVuZGVyZXJUZXh0U2VhcmNoUHJlZGljYXRlID0gKHJvdywgdGV4dCkgPT4gY29tcG9uZW50Lm1hdGNoZXMocm93LCB0ZXh0KTtcbiAgICAgIHJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5fY2VsbFJlbmRlcmVyVGV4dFNlYXJjaFByZWRpY2F0ZSA9IHVuZGVmaW5lZClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2VsbFJlbmRlcmVyVGV4dFNlYXJjaFByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uRWRpdG9yQXR0YWNoZWQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgcmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZikge1xuICAgIHRoaXMuX2NlbGxFZGl0b3JQb3J0YWxSZWYub25Qb3J0YWxBdHRhY2hlZChob3N0LCB0aGlzLmdldENvbXBvbmVudChyZWYpKTtcbiAgfVxuXG4gIHVwZGF0ZVBvcnRhbENvbnRlbnQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93Pikge1xuICAgIHRoaXMuX2NlbGxSZW5kZXJlclBvcnRhbFJlZi5wdXNoU3RhdGUoaG9zdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlbGVjdFJvd09uQ2xpY2soc2VsZWN0Um93T25DbGljazogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuX2VuYWJsZVJvd1NlbGVjdGlvbiA9IHNlbGVjdFJvd09uQ2xpY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZVJvd1NlbGVjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnQocmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZik6IGFueSB7XG4gICAgaWYgKHJlZiBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIHJlZi5pbnN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihcImhlYWRlcnMgb25seSBzdXBwb3J0IGNvbXBvbmVudCBwb3J0YWxzLCBnb3RcIiwgcmVmKTtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGBoZWFkZXJzIG9ubHkgc3VwcG9ydCBjb21wb25lbnQgcG9ydGFscywgZ290ICR7cmVmfWApXG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnRPckVtYmVkZGVkVmlldyhyZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKTogYW55IHtcbiAgICBpZiAocmVmIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm4gcmVmLmluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvbHVtbk1vZGVsIHtcbiAgZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXNQcm92aWRlciA9ICgpID0+IENvbHVtblRleHRQcm9wZXJ0aWVzXG59XG5cblxuZXhwb3J0IGNsYXNzIFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQIGV4dGVuZHMgVHlwZXMuVmFsdWVQcm9wZXJ0aWVzT2Y8Um93Pj4gZXh0ZW5kcyBDb2x1bW5Nb2RlbDxSb3c+IHtcblxuICBwcml2YXRlIF9mb3JtYXQ6ICh2YWx1ZTogUm93W1BdKSA9PiBhbnkgPSAodmFsdWUpID0+IHZhbHVlPy50b1N0cmluZygpO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHJlYWRvbmx5IHByb3BlcnR5OiBQLCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlcikge1xuICAgIHN1cGVyKGlkLCBkZWZhdWx0cyk7XG4gICAgdGhpcy5jZWxsUmVuZGVyZXIoRGVmYXVsdENlbGxSZW5kZXJlckNvbXBvbmVudCk7XG4gICAgdGhpcy51c2VUZXh0U2VhcmNoUHJlZGljYXRlKChyb3c6IFJvdywgcmVnZXg6IFJlZ0V4cCkgPT4ge1xuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5fZm9ybWF0KHJvd1t0aGlzLnByb3BlcnR5XSkpO1xuICAgIH0pO1xuICB9XG5cbiAgY2VsbFJlbmRlcmVyPEUgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8Um93W1BdPj4oY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxFPiwgb3B0aW9ucz86IENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBFPik6IHRoaXNcbiAgY2VsbFJlbmRlcmVyPEUgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8Um93W1BdPj4oY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxFPiwgb25Db21wb25lbnRJbml0PzogT25Db21wb25lbnRJbml0PEU+KTogdGhpc1xuICBjZWxsUmVuZGVyZXI8RSBleHRlbmRzIENlbGxSZW5kZXJlcjxSb3dbUF0+Pihjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPEU+LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnM/OiBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRT4gfCBPbkNvbXBvbmVudEluaXQ8RT4pOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKGNvbXBvbmVudFR5cGUsIChjb21wb25lbnQsIHJvd0RhdGEsIGZpcnN0VGltZSkgPT4ge1xuICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkNvbXBvbmVudEluaXRPck9wdGlvbnMpKSB7XG4gICAgICAgICAgb25Db21wb25lbnRJbml0T3JPcHRpb25zKGNvbXBvbmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Db21wb25lbnRJbml0T3JPcHRpb25zPy5vbkNvbXBvbmVudEluaXQpKSB7XG4gICAgICAgICAgICBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMub25Db21wb25lbnRJbml0KGNvbXBvbmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb21wb25lbnQudmFsdWUgPSB0aGlzLl9mb3JtYXQocm93RGF0YS5yb3dbdGhpcy5wcm9wZXJ0eV0pO1xuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpdmVFZGl0Q2VsbFJlbmRlcmVyPEUgZXh0ZW5kcyBNdXRhYmxlQ2VsbFJlbmRlcmVyPFJvd1tQXT4+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8RT4sIG9wdGlvbnM6IE11dGFibGVDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRSwgUD4pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhYmxlQ2VsbFJlbmRlcmVyKGNvbXBvbmVudFR5cGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQuICBVc2UgI2xpdmVFZGl0Q2VsbFJlbmRlcmVyIGluc3RlYWQuXG4gICAqIEBwYXJhbSBjb21wb25lbnRUeXBlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBtdXRhYmxlQ2VsbFJlbmRlcmVyPEUgZXh0ZW5kcyBNdXRhYmxlQ2VsbFJlbmRlcmVyPFJvd1tQXT4+KGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8RT4sIG9wdGlvbnM6IE11dGFibGVDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgRSwgUD4pOiB0aGlzIHtcblxuICAgIHRoaXMuY29uZmlndXJlQ2VsbFJlbmRlcmVyKG5ldyBDb21wb25lbnRDZWxsUmVuZGVyZXJQb3J0YWxSZWYoY29tcG9uZW50VHlwZSwgKGNvbXBvbmVudCwgcm93RGF0YSwgZmlyc3RUaW1lKSA9PiB7XG5cbiAgICAgIC8vIGtlZXAgYSBsb2NhbCBjb3B5IG1vc3QgcmVjZW50IHJvdyB2YWx1ZSBzbyBpdCdzIGF2YWlsYWJsZSB0byB0ZWhcbiAgICAgIC8vIGVkaXQgY2FsbGJhY2sgd2l0aG91dCBoYXZpbmcgdG8gYWRkL3JlbW92ZSBzdWJzY3JpYmVycyBhbGwgdGhlIHRpbWUuXG4gICAgICBjb21wb25lbnRbQ0VMTF9SRU5ERVJFUl9DT01QT05FTlRfUk9XX0NBQ0hFXSA9IHJvd0RhdGEucm93O1xuICAgICAgbGV0IGRpc2FibGVFZGl0Q2FsbGJhY2sgPSBmYWxzZTtcblxuICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvcHRpb25zPy5vbkNvbXBvbmVudEluaXQpKSB7XG4gICAgICAgICAgb3B0aW9ucy5vbkNvbXBvbmVudEluaXQoY29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbnN0YWxsIG91ciBlZGl0IGNhbGxiYWNrXG4gICAgICAgIGNvbXBvbmVudC5vblZhbHVlRWRpdGVkKChpcywgd2FzKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlRWRpdENhbGxiYWNrKSB7XG4gICAgICAgICAgICBvcHRpb25zLm9uVmFsdWVFZGl0KGNvbXBvbmVudFtDRUxMX1JFTkRFUkVSX0NPTVBPTkVOVF9ST1dfQ0FDSEVdLCBpcywgd2FzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyBwdXNoIHRoZSB2YWx1ZSB0aGUgY29tcG9uZW50IGFuZCBkaXNhYmxlIHRoZSBjYWxsYmFjayBqdXN0IGluY2FzZSB0aGUgY29tcG9uZW50IG1pc2JlaGF2ZXNcbiAgICAgIC8vIGFuZCBmaXJlcyBhIHZhbHVlIGNoYW5nZSBkdXJpbmcgdGhlIG9wZXJhdGlvbi5cbiAgICAgIGRpc2FibGVFZGl0Q2FsbGJhY2sgPSB0cnVlO1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gcm93RGF0YS5yb3dbdGhpcy5wcm9wZXJ0eV07XG4gICAgICBkaXNhYmxlRWRpdENhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgIGlmICghaXNGdW5jdGlvbihvcHRpb25zKSAmJiBpc0Z1bmN0aW9uKG9wdGlvbnM/Lm9uUm93VXBkYXRlKSkge1xuICAgICAgICBvcHRpb25zLm9uUm93VXBkYXRlKGNvbXBvbmVudCwgcm93RGF0YS5yb3cpO1xuICAgICAgfVxuXG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY2VsbEVkaXRvcjxFIGV4dGVuZHMgQ2VsbEVkaXRvckNvbXBvbmVudDxSb3dbUF0+PihlZGl0b3I6IENvbXBvbmVudFR5cGU8RT4sIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3I8Um93W1BdPltdLCBpbml0aWFsaXNlQ29tcG9uZW50PzogKGNvbXBvbmVudDogRSkgPT4gdm9pZCk6IHRoaXNcbiAgY2VsbEVkaXRvcjxFIGV4dGVuZHMgQ2VsbEVkaXRvckNvbXBvbmVudDxSb3dbUF0+PihlZGl0b3I6IENvbXBvbmVudFR5cGU8RT4sIGluaXRpYWxpc2VDb21wb25lbnQ/OiAoY29tcG9uZW50OiBFKSA9PiB2b2lkKTogdGhpc1xuICBjZWxsRWRpdG9yPEUgZXh0ZW5kcyBDZWxsRWRpdG9yQ29tcG9uZW50PFJvd1tQXT4+KGVkaXRvcjogQ29tcG9uZW50VHlwZTxFPiwgdmFsaWRhdG9yc09ySW5pdGlhbGlzZXI/OiBWYWxpZGF0b3I8Um93W1BdPltdIHwgKChjb21wb25lbnQ6IEUpID0+IHZvaWQpLCBvbkNvbXBvbmVudEluaXQ/OiAoY29tcG9uZW50OiBFKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IEFycmF5LmlzQXJyYXkodmFsaWRhdG9yc09ySW5pdGlhbGlzZXIpID8gdmFsaWRhdG9yc09ySW5pdGlhbGlzZXIgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5pdGlhbGlzZXIgPSBpc0Z1bmN0aW9uKHZhbGlkYXRvcnNPckluaXRpYWxpc2VyKSA/IHZhbGlkYXRvcnNPckluaXRpYWxpc2VyIDogb25Db21wb25lbnRJbml0O1xuICAgIHRoaXMuY29uZmlndXJlQ2VsbEVkaXRvcihuZXcgQ2VsbEVkaXRvclBvcnRhbFJlZihlZGl0b3IsIChjb21wb25lbnQ6IEUsIGVkaXRTZXNzaW9uOiBFZGl0U2Vzc2lvbjxSb3c+KSA9PiB7XG4gICAgICBjb25zdCBmb3JtVmFsdWVNb2RlbCA9IGVkaXRTZXNzaW9uLmZvcm0ucGx1Y2sodGhpcy5wcm9wZXJ0eSk7XG4gICAgICBpZiAodmFsaWRhdG9ycykge1xuICAgICAgICBmb3JtVmFsdWVNb2RlbC52YWxpZGF0ZVVzaW5nKHZhbGlkYXRvcnMpO1xuICAgICAgfVxuICAgICAgY29tcG9uZW50LnZhbHVlTW9kZWwgPSBmb3JtVmFsdWVNb2RlbDtcbiAgICAgIGlmIChpbml0aWFsaXNlcikge1xuICAgICAgICBpbml0aWFsaXNlcihjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvcm1hdChmb3JtYXR0ZXI6ICh2YWx1ZTogUm93W1BdKSA9PiBhbnkpOiB0aGlzIHtcbiAgICBhc3NlcnQuaXNGdW5jdGlvbihmb3JtYXR0ZXIpO1xuICAgIHRoaXMuX2Zvcm1hdCA9IGZvcm1hdHRlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RSb3dPbkNsaWNrKHNlbGVjdE9uUm93Q2xpY2s6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0Um93T25DbGljayhzZWxlY3RPblJvd0NsaWNrKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFAgZXh0ZW5kcyBUeXBlcy5BcnJheVByb3BlcnRpZXNPZjxSb3c+PiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuXG4gIHByaXZhdGUgX2Zvcm1hdDogKHZhbHVlOiBUeXBlcy5BcnJheUVsZW1lbnRUeXBlPFJvdywgUD5bXSkgPT4gYW55ID0gKHZhbHVlKSA9PiB2YWx1ZS5tYXAodiA9PiB2Py50b1N0cmluZygpKS5qb2luKCcsICcpO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHJlYWRvbmx5IHByb3BlcnR5OiBQLCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlcikge1xuICAgIHN1cGVyKGlkLCBkZWZhdWx0cyk7XG4gICAgdGhpcy5jZWxsUmVuZGVyZXIoRGVmYXVsdENlbGxSZW5kZXJlckNvbXBvbmVudCk7XG4gICAgdGhpcy51c2VUZXh0U2VhcmNoUHJlZGljYXRlKChyb3c6IFJvdywgcmVnZXg6IFJlZ0V4cCkgPT4ge1xuICAgICAgbGV0IHJvd0VsZW1lbnQgPSByb3dbdGhpcy5wcm9wZXJ0eV07XG4gICAgICAvLyBAdHMtaWdub3JlIFN0YXJ0ZWQgY29tcGxhaW5pbmcgaW4gdHMgNC41Li4gYnV0IEkgdGhpbmsgbXkgbG9naWMgaXMgY29ycmVjdC4uLlxuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5fZm9ybWF0KHJvd0VsZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNlbGxSZW5kZXJlcihjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPHsgdmFsdWU6IFR5cGVzLkFycmF5RWxlbWVudFR5cGU8Um93LCBQPltdIH0+KTogdGhpcyB7XG4gICAgdGhpcy5jb25maWd1cmVDZWxsUmVuZGVyZXIobmV3IENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZihjb21wb25lbnRUeXBlLCAoY29tcG9uZW50LCByb3dEYXRhKSA9PiB7XG4gICAgICBsZXQgcm93RWxlbWVudCA9IHJvd0RhdGEucm93W3RoaXMucHJvcGVydHldO1xuICAgICAgLy8gQHRzLWlnbm9yZSBTdGFydGVkIGNvbXBsYWluaW5nIGluIHRzIDQuNS4uIGJ1dCBJIHRoaW5rIG15IGxvZ2ljIGlzIGNvcnJlY3QuLi5cbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuX2Zvcm1hdChyb3dFbGVtZW50KTtcbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjZWxsRWRpdG9yPEMgZXh0ZW5kcyBDZWxsTGlzdEVkaXRvckNvbXBvbmVudDxUeXBlcy5BcnJheUVsZW1lbnRUeXBlPFJvdywgUD4+PihlZGl0b3I6IENvbXBvbmVudFR5cGU8Qz4sIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3I8VHlwZXMuQXJyYXlFbGVtZW50VHlwZTxSb3csIFA+W10+W10sIGluaXRpYWxpc2VDb21wb25lbnQ/OiAoY29tcG9uZW50OiBDKSA9PiB2b2lkKTogdGhpc1xuICBjZWxsRWRpdG9yPEMgZXh0ZW5kcyBDZWxsTGlzdEVkaXRvckNvbXBvbmVudDxUeXBlcy5BcnJheUVsZW1lbnRUeXBlPFJvdywgUD4+PihlZGl0b3I6IENvbXBvbmVudFR5cGU8Qz4sIGluaXRpYWxpc2VDb21wb25lbnQ/OiAoY29tcG9uZW50OiBDKSA9PiB2b2lkKTogdGhpc1xuICBjZWxsRWRpdG9yPEMgZXh0ZW5kcyBDZWxsTGlzdEVkaXRvckNvbXBvbmVudDxUeXBlcy5BcnJheUVsZW1lbnRUeXBlPFJvdywgUD4+PihlZGl0b3I6IENvbXBvbmVudFR5cGU8Qz4sIHZhbGlkYXRvcnNPckluaXRpYWxpc2VyPzogVmFsaWRhdG9yPFR5cGVzLkFycmF5RWxlbWVudFR5cGU8Um93LCBQPltdPltdIHwgKChjb21wb25lbnQ6IEMpID0+IHZvaWQpLCBpbml0aWFsaXNlQ29tcG9uZW50PzogKGNvbXBvbmVudDogQykgPT4gdm9pZCk6IHRoaXMge1xuICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBBcnJheS5pc0FycmF5KHZhbGlkYXRvcnNPckluaXRpYWxpc2VyKSA/IHZhbGlkYXRvcnNPckluaXRpYWxpc2VyIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGluaXRpYWxpc2VyID0gaXNGdW5jdGlvbih2YWxpZGF0b3JzT3JJbml0aWFsaXNlcikgPyB2YWxpZGF0b3JzT3JJbml0aWFsaXNlciA6IGluaXRpYWxpc2VDb21wb25lbnQ7XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxFZGl0b3IobmV3IENlbGxFZGl0b3JQb3J0YWxSZWYoZWRpdG9yLCAoY29tcG9uZW50OiBDLCBlZGl0U2Vzc2lvbjogRWRpdFNlc3Npb248Um93PikgPT4ge1xuICAgICAgY29uc3QgZm9ybUxpc3RNb2RlbCA9IGVkaXRTZXNzaW9uLmZvcm0ucGx1Y2tMaXN0KHRoaXMucHJvcGVydHkpO1xuICAgICAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICAgICAgZm9ybUxpc3RNb2RlbC52YWxpZGF0ZVVzaW5nKHZhbGlkYXRvcnMpO1xuICAgICAgfVxuICAgICAgY29tcG9uZW50Lmxpc3RNb2RlbCA9IGZvcm1MaXN0TW9kZWw7XG4gICAgICBpZiAoaW5pdGlhbGlzZXIpIHtcbiAgICAgICAgaW5pdGlhbGlzZXIoY29tcG9uZW50KTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmb3JtYXQoZm9ybWF0dGVyOiAodmFsdWU6IFR5cGVzLkFycmF5RWxlbWVudFR5cGU8Um93LCBQPltdKSA9PiBhbnkpOiB0aGlzIHtcbiAgICBhc3NlcnQuaXNGdW5jdGlvbihmb3JtYXR0ZXIpO1xuICAgIHRoaXMuX2Zvcm1hdCA9IGZvcm1hdHRlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RSb3dPbkNsaWNrKHNlbGVjdFJvd09uQ2xpY2s6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0Um93T25DbGljayhzZWxlY3RSb3dPbkNsaWNrKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgVj4gZXh0ZW5kcyBDb2x1bW5Nb2RlbDxSb3c+IHtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5JZDogc3RyaW5nLCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlciwgcHJpdmF0ZSBnZXRWYWx1ZTogKHJvdzogUm93KSA9PiBWKSB7XG4gICAgc3VwZXIoY29sdW1uSWQsIGRlZmF1bHRzKTtcbiAgICB0aGlzLmNlbGxSZW5kZXJlcihEZWZhdWx0Q2VsbFJlbmRlcmVyQ29tcG9uZW50KTtcbiAgfVxuXG4gIGNlbGxSZW5kZXJlcjxDIGV4dGVuZHMgeyB2YWx1ZTogUGFydGlhbDxWPiB9Pihjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPEM+LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnM/OiBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgQz4gfCBPbkNvbXBvbmVudEluaXQ8Qz4pOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKGNvbXBvbmVudFR5cGUsIChjb21wb25lbnQsIHJvd0RhdGEsIGZpcnN0VGltZSkgPT4ge1xuICAgICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkNvbXBvbmVudEluaXRPck9wdGlvbnMpKSB7XG4gICAgICAgICAgb25Db21wb25lbnRJbml0T3JPcHRpb25zKGNvbXBvbmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Db21wb25lbnRJbml0T3JPcHRpb25zPy5vbkNvbXBvbmVudEluaXQpKSB7XG4gICAgICAgICAgICBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMub25Db21wb25lbnRJbml0KGNvbXBvbmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb21wb25lbnQudmFsdWUgPSB0aGlzLmdldFZhbHVlKHJvd0RhdGEucm93KTtcblxuICAgICAgaWYgKCFpc0Z1bmN0aW9uKG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucykgJiYgaXNGdW5jdGlvbihvbkNvbXBvbmVudEluaXRPck9wdGlvbnM/Lm9uUm93VXBkYXRlKSkge1xuICAgICAgICBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMub25Sb3dVcGRhdGUoY29tcG9uZW50LCByb3dEYXRhLnJvdyk7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFJvd09uQ2xpY2soc2VsZWN0T25Sb3dDbGljazogYm9vbGVhbik6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RSb3dPbkNsaWNrKHNlbGVjdE9uUm93Q2xpY2spO1xuICB9XG5cbn1cblxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbDxSb3c+IGV4dGVuZHMgQ29sdW1uTW9kZWw8Um93PiB7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uSWQ6IHN0cmluZywgc2F2ZUNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8RGlydHlUcmFja2luZ0Zvcm08Um93PiwgYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+LCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlcikge1xuICAgIHN1cGVyKGNvbHVtbklkLCBkZWZhdWx0cyk7XG4gICAgdGhpcy5jZWxsUmVuZGVyZXIoRWRpdFJvd0NvbnRyb2xzKTtcbiAgfVxuXG4gIGNlbGxSZW5kZXJlcihjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPHsgcm93OiBSb3csIGVkaXRTZXNzaW9uOiBFZGl0U2Vzc2lvbjxSb3c+LCBlZGl0Um93Q29tbWFuZDogQ29tbWFuZDx2b2lkPiB9Pik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlndXJlQ2VsbFJlbmRlcmVyKG5ldyBDb21wb25lbnRDZWxsUmVuZGVyZXJQb3J0YWxSZWYoY29tcG9uZW50VHlwZSwgKGNvbXBvbmVudCwgcm93RGF0YTogUm93RGF0YTxSb3c+KSA9PiB7XG4gICAgICBjb21wb25lbnQucm93ID0gcm93RGF0YS5yb3c7XG4gICAgICBjb21wb25lbnQuZWRpdFNlc3Npb24gPSByb3dEYXRhLmVkaXRTZXNzaW9uO1xuICAgICAgY29tcG9uZW50LmVkaXRSb3dDb21tYW5kID0gcm93RGF0YS5lZGl0Um93Q29tbWFuZDtcbiAgICB9KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdEhlYWRlclRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEN1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWw8Um93PiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IG5ldyBUZW1wbGF0ZUNlbGxSZW5kZXJlclBvcnRhbFJlZjxSb3c+KCk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uSWQ6IHN0cmluZywgZGVmYXVsdHM6IENvbHVtbk1vZGVsLlRleHRQcm9wZXJ0aWVzUHJvdmlkZXIpIHtcbiAgICBzdXBlcihjb2x1bW5JZCwgZGVmYXVsdHMpO1xuICAgIHRoaXMuY29uZmlndXJlQ2VsbFJlbmRlcmVyKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHNldFRlbXBsYXRlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBmaWxsQ2VsbDogYm9vbGVhbiwgcGFkQ2hpbGQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZy5yZWdpc3RlclBvcnRhbCh0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lciwgZmlsbENlbGwsIHBhZENoaWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RSb3dPbkNsaWNrKHNlbGVjdE9uUm93Q2xpY2s6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0Um93T25DbGljayhzZWxlY3RPblJvd0NsaWNrKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+IGV4dGVuZHMgQ29sdW1uTW9kZWw8Um93PiB7XG5cbiAgcHJpdmF0ZSBfZW5hYmxlSGVhZGVyQ29udHJvbHMgPSB0cnVlO1xuICByZWFkb25seSBzZWxlY3Rpb25Nb2RlbCA9IERlbGVnYXRpbmdTZWxlY3Rpb25Nb2RlbC5jcmVhdGVEZWxlZ2F0ZTxSb3csIHVua25vd24+KCk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uSWQ6IHN0cmluZywgZGVmYXVsdHM6IENvbHVtbk1vZGVsLlRleHRQcm9wZXJ0aWVzUHJvdmlkZXIsIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxSb3c+KSB7XG4gICAgc3VwZXIoY29sdW1uSWQsIGRlZmF1bHRzKTtcbiAgICB0aGlzLl9zZWxlY3RSb3dPbkNsaWNrKGZhbHNlKTtcbiAgICB0aGlzLmNlbGxIZWFkZXJSZW5kZXJlcihTZWxlY3RIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQsIChjb21wb25lbnQpID0+IHtcbiAgICAgIGNvbXBvbmVudC5zZWxlY3Rpb25Nb2RlbCA9IHRoaXMuc2VsZWN0aW9uTW9kZWw7XG4gICAgICBjb21wb25lbnQuZW5hYmxlSGVhZGVyQ29udHJvbHMgPSB0aGlzLl9lbmFibGVIZWFkZXJDb250cm9scztcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKFNlbGVjdENlbGxSZW5kZXJlckNvbXBvbmVudCwgKGNvbXBvbmVudCwgcm93RGF0YTogUm93RGF0YTxSb3c+KSA9PiB7XG4gICAgICBjb21wb25lbnQucm93ID0gcm93RGF0YS5yb3c7XG4gICAgICBjb21wb25lbnQuc2VsZWN0aW9uTW9kZWwgPSB0aGlzLnNlbGVjdGlvbk1vZGVsO1xuICAgIH0pKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbk1vZGVsKHNlbGVjdGlvbk1vZGVsKTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbk1vZGVsKHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxSb3c+KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZXREZWxlZ2F0ZShzZWxlY3Rpb25Nb2RlbCk7XG4gICAgdGhpcy5zZXREZWZhdWx0VmlzaWJpbGl0eShzZWxlY3Rpb25Nb2RlbCBpbnN0YW5jZW9mIE11bHRpcGxlU2VsZWN0aW9uTW9kZWwgPyBWYWx1ZU1vZGVsLlRSVUUgOiBWYWx1ZU1vZGVsLkZBTFNFKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0SGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGVuYWJsZUhlYWRlckNvbnRyb2xzKGVuYWJsZTogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuX2VuYWJsZUhlYWRlckNvbnRyb2xzID0gZW5hYmxlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogUm93KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RDb21tYW5kLmV4ZWN1dGUocm93KTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQocm93OiBSb3cpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHJvdyk7XG4gIH1cbn1cblxuXG4iXX0=
@@ -1,35 +0,0 @@
1
- import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
2
- import { assert } from '@coolon/pectin';
3
- import { AbstractTableComponent } from '../../abstract-table.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../abstract-table.component";
6
- export class ColumnTemplateDirective {
7
- constructor(host, templateRef, viewContainer) {
8
- this.host = host;
9
- this.templateRef = templateRef;
10
- this.viewContainer = viewContainer;
11
- this.aupColumnTemplateFillCell = false;
12
- this.aupColumnTemplateAutoPadChild = undefined;
13
- }
14
- ngOnInit() {
15
- assert.isTruthy(this.aupColumnTemplateColumnId);
16
- this.host.registerColumnTemplate(this.aupColumnTemplateColumnId, this.templateRef, this.viewContainer, this.aupColumnTemplateFillCell, this.aupColumnTemplateAutoPadChild ?? this.aupColumnTemplateFillCell);
17
- }
18
- }
19
- ColumnTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, deps: [{ token: i1.AbstractTableComponent }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
20
- ColumnTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: ColumnTemplateDirective, selector: "[aupColumnTemplate]", inputs: { aupColumnTemplate: "aupColumnTemplate", aupColumnTemplateColumnId: "aupColumnTemplateColumnId", aupColumnTemplateFillCell: "aupColumnTemplateFillCell", aupColumnTemplateAutoPadChild: "aupColumnTemplateAutoPadChild" }, ngImport: i0 });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ColumnTemplateDirective, decorators: [{
22
- type: Directive,
23
- args: [{
24
- selector: '[aupColumnTemplate]'
25
- }]
26
- }], ctorParameters: function () { return [{ type: i1.AbstractTableComponent }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { aupColumnTemplate: [{
27
- type: Input
28
- }], aupColumnTemplateColumnId: [{
29
- type: Input
30
- }], aupColumnTemplateFillCell: [{
31
- type: Input
32
- }], aupColumnTemplateAutoPadChild: [{
33
- type: Input
34
- }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlL2NvbHVtbi10ZW1wbGF0ZS9jb2x1bW4tdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQUt4RSxNQUFNLE9BQU8sdUJBQXVCO0lBY2xDLFlBQXFCLElBQWlDLEVBQ2xDLFdBQTZCLEVBQzdCLGFBQStCO1FBRjlCLFNBQUksR0FBSixJQUFJLENBQTZCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFQbkQsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBR2xDLGtDQUE2QixHQUFHLFNBQVMsQ0FBQztJQUsxQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQzdELElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyx5QkFBeUIsRUFDOUIsSUFBSSxDQUFDLDZCQUE2QixJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O29IQTFCVSx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUhuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDO3NLQUlDLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLDZCQUE2QjtzQkFENUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEFic3RyYWN0VGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC10YWJsZS5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXVwQ29sdW1uVGVtcGxhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgYXVwQ29sdW1uVGVtcGxhdGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBhdXBDb2x1bW5UZW1wbGF0ZUNvbHVtbklkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYXVwQ29sdW1uVGVtcGxhdGVGaWxsQ2VsbCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGF1cENvbHVtblRlbXBsYXRlQXV0b1BhZENoaWxkID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGhvc3Q6IEFic3RyYWN0VGFibGVDb21wb25lbnQ8YW55PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5hdXBDb2x1bW5UZW1wbGF0ZUNvbHVtbklkKTtcbiAgICB0aGlzLmhvc3QucmVnaXN0ZXJDb2x1bW5UZW1wbGF0ZSh0aGlzLmF1cENvbHVtblRlbXBsYXRlQ29sdW1uSWQsXG4gICAgICB0aGlzLnRlbXBsYXRlUmVmLFxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLFxuICAgICAgdGhpcy5hdXBDb2x1bW5UZW1wbGF0ZUZpbGxDZWxsLFxuICAgICAgdGhpcy5hdXBDb2x1bW5UZW1wbGF0ZUF1dG9QYWRDaGlsZCA/PyB0aGlzLmF1cENvbHVtblRlbXBsYXRlRmlsbENlbGwpO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRleHQtcHJvcGVydGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlL2NvbHVtbi10ZXh0LXByb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uVGV4dFByb3BlcnRpZXMge1xuICBoZWFkZXJUZXh0PygpOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,22 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../../../directives/highlight.pipe";
4
- export class DefaultCellRendererComponent {
5
- constructor() {
6
- }
7
- set value(value) {
8
- this._value = value;
9
- }
10
- get value() {
11
- return this._value;
12
- }
13
- }
14
- DefaultCellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- DefaultCellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: DefaultCellRendererComponent, selector: "aup-default-cell-renderer", inputs: { value: "value" }, ngImport: i0, template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""], pipes: { "aupHighlight": i1.HighlightPipe } });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DefaultCellRendererComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'aup-default-cell-renderer', template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n", styles: [""] }]
19
- }], ctorParameters: function () { return []; }, propDecorators: { value: [{
20
- type: Input
21
- }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlL2RlZmF1bHQtY2VsbC1yZW5kZXJlci9kZWZhdWx0LWNlbGwtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvZGVmYXVsdC1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBU2pELE1BQU0sT0FBTyw0QkFBNEI7SUFZdkM7SUFDQSxDQUFDO0lBVkQsSUFDSSxLQUFLLENBQUMsS0FBUTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O3lIQVZVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDZGQ1R6QyxxREFDQTsyRkRRYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMkJBQTJCOzBFQVFqQyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi9jZWxsLXJlbmRlcmVyJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtZGVmYXVsdC1jZWxsLXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRDZWxsUmVuZGVyZXJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBDZWxsUmVuZGVyZXI8VD57XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cbiIsIjxzcGFuIFtpbm5lckhUTUxdPVwidmFsdWV8IGF1cEhpZ2hsaWdodFwiPjwvc3Bhbj5cbiJdfQ==
@@ -1,55 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, Input } from '@angular/core';
3
- import { Command, TrackExternal } from '@coolon/pectin';
4
- import { DisposableComponent } from '../../../disposable-component';
5
- import { EditSession } from '../../edit-session';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/button";
8
- import * as i2 from "../../../icon/icon.component";
9
- import * as i3 from "@angular/common";
10
- import * as i4 from "../../../../directives/command.directive";
11
- export class EditRowControls extends DisposableComponent {
12
- constructor() {
13
- super();
14
- this.saveCommand = Command.create(async () => {
15
- const finished = await this.editSession.saveCommand.execute();
16
- if (finished) {
17
- this.editSession.dispose();
18
- }
19
- });
20
- this.cancelCommand = Command.create(() => {
21
- this.editSession.dispose();
22
- }).disableWhile(this.saveCommand.busy);
23
- }
24
- set editSession(session) {
25
- if (session) {
26
- session.form.disableWhile(this.saveCommand.busy);
27
- }
28
- this._session = session;
29
- }
30
- get editSession() {
31
- return this._session;
32
- }
33
- ngOnInit() {
34
- }
35
- get form() {
36
- return this.editSession?.form;
37
- }
38
- }
39
- EditRowControls.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditRowControls, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
- EditRowControls.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EditRowControls, selector: "aup-row-editor-controls", inputs: { row: "row", editRowCommand: "editRowCommand", editSession: "editSession" }, usesInheritance: true, ngImport: i0, template: "<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n", styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2.IconComponent, selector: "aup-icon", inputs: ["icon"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
41
- __decorate([
42
- TrackExternal(),
43
- __metadata("design:type", Command)
44
- ], EditRowControls.prototype, "editRowCommand", void 0);
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditRowControls, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'aup-row-editor-controls', template: "<button *ngIf=\"!editSession\" mat-icon-button [pectinCommand]=\"editRowCommand\" class=\"edit-button\"><aup-icon icon=\"mat:edit\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"saveCommand\"><aup-icon icon=\"mat:done\"></aup-icon></button>\n<button *ngIf=\"editSession\" mat-icon-button [pectinCommand]=\"cancelCommand\"><aup-icon icon=\"mat:clear\"></aup-icon></button>\n", styles: [":host{display:block;width:80px}.edit-button{visibility:hidden}:host-context(tr:hover) .edit-button{visibility:visible}\n"] }]
48
- }], ctorParameters: function () { return []; }, propDecorators: { row: [{
49
- type: Input
50
- }], editRowCommand: [{
51
- type: Input
52
- }], editSession: [{
53
- type: Input
54
- }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1yb3ctY29udHJvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvZWRpdC1yb3ctY29udHJvbHMvZWRpdC1yb3ctY29udHJvbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvZWRpdC1yb3ctY29udHJvbHMvZWRpdC1yb3ctY29udHJvbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsT0FBTyxFQUFrQyxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQVFqRCxNQUFNLE9BQU8sZUFBcUIsU0FBUSxtQkFBbUI7SUF5QjNEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUM3RCxJQUFJLFFBQVEsRUFBRTtnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQXpCRCxJQUNJLFdBQVcsQ0FBQyxPQUF5QjtRQUN2QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFrQkQsUUFBUTtJQUNSLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO0lBQ2hDLENBQUM7OzRHQTNDVSxlQUFlO2dHQUFmLGVBQWUsNEtDWDVCLCtaQUdBO0FEZUU7SUFEQyxhQUFhLEVBQUU7OEJBQ0EsT0FBTzt1REFBTTsyRkFQbEIsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSx5QkFBeUI7MEVBT25DLEdBQUc7c0JBREYsS0FBSztnQkFLTixjQUFjO3NCQUZiLEtBQUs7Z0JBT0YsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1hbmQsIERpcnR5VHJhY2tpbmdGb3JtLCBGb3JtLCBUcmFjZSwgVHJhY2tFeHRlcm5hbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4uLy4uL2VkaXQtc2Vzc2lvbic7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vdGFibGUtbW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtcm93LWVkaXRvci1jb250cm9scycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXJvdy1jb250cm9scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXQtcm93LWNvbnRyb2xzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRWRpdFJvd0NvbnRyb2xzPFJvdz4gZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICByb3c6IFJvd1xuXG4gIEBJbnB1dCgpXG4gIEBUcmFja0V4dGVybmFsKClcbiAgZWRpdFJvd0NvbW1hbmQ6IENvbW1hbmQ8dm9pZD5cblxuICBwcml2YXRlIF9zZXNzaW9uOiBFZGl0U2Vzc2lvbjxSb3c+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBlZGl0U2Vzc2lvbihzZXNzaW9uOiBFZGl0U2Vzc2lvbjxSb3c+KSB7XG4gICAgaWYgKHNlc3Npb24pIHtcbiAgICAgIHNlc3Npb24uZm9ybS5kaXNhYmxlV2hpbGUodGhpcy5zYXZlQ29tbWFuZC5idXN5KTtcbiAgICB9XG4gICAgdGhpcy5fc2Vzc2lvbiA9IHNlc3Npb247XG4gIH1cbiAgZ2V0IGVkaXRTZXNzaW9uKCk6IEVkaXRTZXNzaW9uPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uO1xuICB9XG5cbiAgcmVhZG9ubHkgc2F2ZUNvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG4gIHJlYWRvbmx5IGNhbmNlbENvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNhdmVDb21tYW5kID0gQ29tbWFuZC5jcmVhdGUoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmluaXNoZWQgPSBhd2FpdCB0aGlzLmVkaXRTZXNzaW9uLnNhdmVDb21tYW5kLmV4ZWN1dGUoKVxuICAgICAgaWYgKGZpbmlzaGVkKSB7XG4gICAgICAgIHRoaXMuZWRpdFNlc3Npb24uZGlzcG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY2FuY2VsQ29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuZWRpdFNlc3Npb24uZGlzcG9zZSgpO1xuICAgIH0pLmRpc2FibGVXaGlsZSh0aGlzLnNhdmVDb21tYW5kLmJ1c3kpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBnZXQgZm9ybSgpOiBEaXJ0eVRyYWNraW5nRm9ybTxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5lZGl0U2Vzc2lvbj8uZm9ybTtcbiAgfVxuXG59XG4iLCI8YnV0dG9uICpuZ0lmPVwiIWVkaXRTZXNzaW9uXCIgbWF0LWljb24tYnV0dG9uIFtwZWN0aW5Db21tYW5kXT1cImVkaXRSb3dDb21tYW5kXCIgY2xhc3M9XCJlZGl0LWJ1dHRvblwiPjxhdXAtaWNvbiBpY29uPVwibWF0OmVkaXRcIj48L2F1cC1pY29uPjwvYnV0dG9uPlxuPGJ1dHRvbiAqbmdJZj1cImVkaXRTZXNzaW9uXCIgbWF0LWljb24tYnV0dG9uIFtwZWN0aW5Db21tYW5kXT1cInNhdmVDb21tYW5kXCI+PGF1cC1pY29uIGljb249XCJtYXQ6ZG9uZVwiPjwvYXVwLWljb24+PC9idXR0b24+XG48YnV0dG9uICpuZ0lmPVwiZWRpdFNlc3Npb25cIiBtYXQtaWNvbi1idXR0b24gW3BlY3RpbkNvbW1hbmRdPVwiY2FuY2VsQ29tbWFuZFwiPjxhdXAtaWNvbiBpY29uPVwibWF0OmNsZWFyXCI+PC9hdXAtaWNvbj48L2J1dHRvbj5cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YWJsZS1jZWxsLXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvbXV0YWJsZS1jZWxsLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsUmVuZGVyZXIgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgRGlzcG9zYWJsZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlQ2VsbFJlbmRlcmVyPFQ+IGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFQ+IHtcbiAgdmFsdWU6IFQ7XG5cbiAgb25WYWx1ZUVkaXRlZChjYWxsYmFjazogKGlzOiBULCB3YXM6IFQpID0+IHZvaWQpOiBEaXNwb3NhYmxlO1xufVxuIl19