@coolon/angular-ui-powerups 13.1.7 → 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 -446
  40. package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -1
  41. package/fesm2020/coolon-angular-ui-powerups.mjs +740 -580
  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 -392
  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,392 +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, 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._columnModelTextSearchPredicate || this._cellRendererTextSearchPredicate || 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 (isFunction(component?.matches)) {
119
- this._cellRendererTextSearchPredicate = (row, text) => component.matches(row, text);
120
- }
121
- else {
122
- this._cellRendererTextSearchPredicate = undefined;
123
- }
124
- }
125
- // @Trace()
126
- onEditorAttached(host, ref) {
127
- this._cellEditorPortalRef.onPortalAttached(host, this.getComponent(ref));
128
- }
129
- updatePortalContent(host) {
130
- this._cellRendererPortalRef.pushState(host);
131
- }
132
- _selectRowOnClick(selectRowOnClick) {
133
- this._enableRowSelection = selectRowOnClick;
134
- return this;
135
- }
136
- isRowSelectionEnabled() {
137
- return this._enableRowSelection;
138
- }
139
- getComponent(ref) {
140
- if (ref instanceof ComponentRef) {
141
- return ref.instance;
142
- }
143
- else {
144
- console.error("headers only support component portals, got", ref);
145
- lang.illegalState(`headers only support component portals, got ${ref}`);
146
- }
147
- }
148
- getComponentOrEmbeddedView(ref) {
149
- if (ref instanceof ComponentRef) {
150
- return ref.instance;
151
- }
152
- else {
153
- return ref;
154
- }
155
- }
156
- }
157
- __decorate([
158
- Memoize(),
159
- __metadata("design:type", Function),
160
- __metadata("design:paramtypes", []),
161
- __metadata("design:returntype", String)
162
- ], ColumnModel.prototype, "getHeaderText", null);
163
- __decorate([
164
- Memoize(),
165
- __metadata("design:type", Function),
166
- __metadata("design:paramtypes", []),
167
- __metadata("design:returntype", Object)
168
- ], ColumnModel.prototype, "getColumnTextProperties", null);
169
- export class PropertyColumnModel extends ColumnModel {
170
- constructor(id, property, defaults) {
171
- super(id, defaults);
172
- this.property = property;
173
- this._format = (value) => value?.toString();
174
- this.cellRenderer(DefaultCellRendererComponent);
175
- this.useTextSearchPredicate((row, regex) => {
176
- return regex.test(this._format(row[this.property]));
177
- });
178
- }
179
- cellRenderer(componentType, onComponentInitOrOptions) {
180
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
181
- if (firstTime) {
182
- if (isFunction(onComponentInitOrOptions)) {
183
- onComponentInitOrOptions(component);
184
- }
185
- else {
186
- if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
187
- onComponentInitOrOptions.onComponentInit(component);
188
- }
189
- }
190
- }
191
- component.value = this._format(rowData.row[this.property]);
192
- }));
193
- return this;
194
- }
195
- liveEditCellRenderer(componentType, options) {
196
- return this.mutableCellRenderer(componentType, options);
197
- }
198
- /**
199
- * Deprecated. Use #liveEditCellRenderer instead.
200
- * @param componentType
201
- * @param options
202
- */
203
- mutableCellRenderer(componentType, options) {
204
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
205
- // keep a local copy most recent row value so it's available to teh
206
- // edit callback without having to add/remove subscribers all the time.
207
- component[CELL_RENDERER_COMPONENT_ROW_CACHE] = rowData.row;
208
- let disableEditCallback = false;
209
- if (firstTime) {
210
- if (isFunction(options?.onComponentInit)) {
211
- options.onComponentInit(component);
212
- }
213
- // install our edit callback
214
- component.onValueEdited((is, was) => {
215
- if (!disableEditCallback) {
216
- options.onValueEdit(component[CELL_RENDERER_COMPONENT_ROW_CACHE], is, was);
217
- }
218
- });
219
- }
220
- // now push the value the component and disable the callback just incase the component misbehaves
221
- // and fires a value change during the operation.
222
- disableEditCallback = true;
223
- component.value = rowData.row[this.property];
224
- disableEditCallback = false;
225
- if (!isFunction(options) && isFunction(options?.onRowUpdate)) {
226
- options.onRowUpdate(component, rowData.row);
227
- }
228
- }));
229
- return this;
230
- }
231
- cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
232
- const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
233
- const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
234
- this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
235
- const formValueModel = editSession.form.pluck(this.property);
236
- if (validators) {
237
- formValueModel.validateUsing(validators);
238
- }
239
- component.valueModel = formValueModel;
240
- if (initialiser) {
241
- initialiser(component);
242
- }
243
- }));
244
- return this;
245
- }
246
- format(formatter) {
247
- assert.isFunction(formatter);
248
- this._format = formatter;
249
- return this;
250
- }
251
- selectRowOnClick(selectOnRowClick) {
252
- return this._selectRowOnClick(selectOnRowClick);
253
- }
254
- }
255
- export class ListPropertyColumnModel extends ColumnModel {
256
- constructor(id, property, defaults) {
257
- super(id, defaults);
258
- this.property = property;
259
- this._format = (value) => value.map(v => v?.toString()).join(', ');
260
- this.cellRenderer(DefaultCellRendererComponent);
261
- this.useTextSearchPredicate((row, regex) => {
262
- let rowElement = row[this.property];
263
- // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...
264
- return regex.test(this._format(rowElement));
265
- });
266
- }
267
- cellRenderer(componentType) {
268
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
269
- let rowElement = rowData.row[this.property];
270
- // @ts-ignore Started complaining in ts 4.5.. but I think my logic is correct...
271
- component.value = this._format(rowElement);
272
- }));
273
- return this;
274
- }
275
- cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
276
- const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
277
- const initialiser = isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
278
- this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
279
- const formListModel = editSession.form.pluckList(this.property);
280
- if (validators) {
281
- formListModel.validateUsing(validators);
282
- }
283
- component.listModel = formListModel;
284
- if (initialiser) {
285
- initialiser(component);
286
- }
287
- }));
288
- return this;
289
- }
290
- format(formatter) {
291
- assert.isFunction(formatter);
292
- this._format = formatter;
293
- return this;
294
- }
295
- selectRowOnClick(selectRowOnClick) {
296
- return this._selectRowOnClick(selectRowOnClick);
297
- }
298
- }
299
- export class CustomValueColumnModel extends ColumnModel {
300
- constructor(columnId, defaults, getValue) {
301
- super(columnId, defaults);
302
- this.getValue = getValue;
303
- this.cellRenderer(DefaultCellRendererComponent);
304
- }
305
- cellRenderer(componentType, onComponentInitOrOptions) {
306
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
307
- if (firstTime) {
308
- if (isFunction(onComponentInitOrOptions)) {
309
- onComponentInitOrOptions(component);
310
- }
311
- else {
312
- if (isFunction(onComponentInitOrOptions?.onComponentInit)) {
313
- onComponentInitOrOptions.onComponentInit(component);
314
- }
315
- }
316
- }
317
- component.value = this.getValue(rowData.row);
318
- if (!isFunction(onComponentInitOrOptions) && isFunction(onComponentInitOrOptions?.onRowUpdate)) {
319
- onComponentInitOrOptions.onRowUpdate(component, rowData.row);
320
- }
321
- }));
322
- return this;
323
- }
324
- selectRowOnClick(selectOnRowClick) {
325
- return this._selectRowOnClick(selectOnRowClick);
326
- }
327
- }
328
- export class EditorControlColumnModel extends ColumnModel {
329
- constructor(columnId, saveCommandFactory, defaults) {
330
- super(columnId, defaults);
331
- this.cellRenderer(EditRowControls);
332
- }
333
- cellRenderer(componentType) {
334
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
335
- component.row = rowData.row;
336
- component.editSession = rowData.editSession;
337
- component.editRowCommand = rowData.editRowCommand;
338
- }));
339
- return this;
340
- }
341
- getDefaultHeaderText() {
342
- return '';
343
- }
344
- }
345
- export class CustomTemplateColumnModel extends ColumnModel {
346
- constructor(columnId, defaults) {
347
- super(columnId, defaults);
348
- this.config = new TemplateCellRendererPortalRef();
349
- this.configureCellRenderer(this.config);
350
- }
351
- setTemplate(templateRef, viewContainer, fillCell, padChild) {
352
- this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);
353
- }
354
- selectRowOnClick(selectOnRowClick) {
355
- return this._selectRowOnClick(selectOnRowClick);
356
- }
357
- }
358
- export class SelectionColumnModel extends ColumnModel {
359
- constructor(columnId, defaults, selectionModel) {
360
- super(columnId, defaults);
361
- this._enableHeaderControls = true;
362
- this.selectionModel = DelegatingSelectionModel.createDelegate();
363
- this._selectRowOnClick(false);
364
- this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {
365
- component.selectionModel = this.selectionModel;
366
- component.enableHeaderControls = this._enableHeaderControls;
367
- });
368
- this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData) => {
369
- component.row = rowData.row;
370
- component.selectionModel = this.selectionModel;
371
- }));
372
- this.setSelectionModel(selectionModel);
373
- }
374
- setSelectionModel(selectionModel) {
375
- this.selectionModel.setDelegate(selectionModel);
376
- this.setDefaultVisibility(selectionModel instanceof MultipleSelectionModel ? ValueModel.TRUE : ValueModel.FALSE);
377
- }
378
- getDefaultHeaderText() {
379
- return '';
380
- }
381
- enableHeaderControls(enable) {
382
- this._enableHeaderControls = enable;
383
- return this;
384
- }
385
- selectRow(row) {
386
- this.selectionModel.selectCommand.execute(row);
387
- }
388
- isSelected(row) {
389
- return this.selectionModel.isSelected(row);
390
- }
391
- }
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUVwQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBS3RCLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBRW5CLDhCQUE4QixFQUM5Qiw2QkFBNkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUczQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFHbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFNeEgsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO0FBQ2xCLENBQUMsQ0FBQztBQVFGLE1BQU0saUNBQWlDLEdBQUcsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFjckYsTUFBTSw2QkFBNkIsR0FBaUMs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Y0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsY0FBbUM7UUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsWUFBWSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBZTtRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFRO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbC9wb3J0YWwtZGlyZWN0aXZlc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBDb21tYW5kLCBDb21tYW5kRmFjdG9yeSxcbiAgRGVsZWdhdGluZ1NlbGVjdGlvbk1vZGVsLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRGlydHlUcmFja2luZ0Zvcm0sXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIE11bHRpcGxlU2VsZWN0aW9uTW9kZWwsXG4gIFNlbGVjdGlvbk1vZGVsLFxuICBUeXBlcyxcbiAgVW5hcnlDb21tYW5kLFxuICBWYWxpZGF0b3IsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgYXNzZXJ0LCBsYW5nLCBTdHJpbmd5IH0gZnJvbSBcIkBjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXNcIjtcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3InO1xuXG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IENlbGxFZGl0b3JDb21wb25lbnQsIENlbGxMaXN0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMnO1xuaW1wb3J0IHtcbiAgQ2VsbEVkaXRvclBvcnRhbFJlZixcbiAgQ2VsbEhlYWRlclBvcnRhbFJlZixcbiAgQ2VsbFJlbmRlcmVyUG9ydGFsUmVmLFxuICBDb21wb25lbnRDZWxsUmVuZGVyZXJQb3J0YWxSZWYsXG4gIFRlbXBsYXRlQ2VsbFJlbmRlcmVyUG9ydGFsUmVmXG59IGZyb20gJy4vY2VsbC1wb3J0YWwtcmVmJztcbmltcG9ydCB7IENlbGxSZW5kZXJlciB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBDb2x1bW5UZXh0UHJvcGVydGllcyB9IGZyb20gJy4vY29sdW1uLXRleHQtcHJvcGVydGllcyc7XG5pbXBvcnQgeyBEZWZhdWx0Q2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kZWZhdWx0LWNlbGwtcmVuZGVyZXIvZGVmYXVsdC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0SGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRSb3dDb250cm9scyB9IGZyb20gJy4vZWRpdC1yb3ctY29udHJvbHMvZWRpdC1yb3ctY29udHJvbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vZWRpdC1zZXNzaW9uJztcbmltcG9ydCB7IE11dGFibGVDZWxsUmVuZGVyZXIgfSBmcm9tICcuL211dGFibGUtY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBTZWxlY3RDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC1jZWxsLXJlbmRlcmVyL3NlbGVjdC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC1oZWFkZXItY2VsbC1yZW5kZXJlci9zZWxlY3QtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1jZWxsLXJlbmRlcmVyL3RhYmxlLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlSGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1oZWFkZXItY2VsbC1yZW5kZXJlci90YWJsZS1oZWFkZXItY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dFNlYXJjaFByZWRpY2F0ZSB9IGZyb20gJy4vdGV4dC1zZWFyY2gtcHJlZGljYXRlJztcblxuXG5jb25zdCBub29wID0gKCkgPT4ge1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSb3dEYXRhPFJvdz4ge1xuICByb3c6IFJvdztcbiAgZWRpdFNlc3Npb24/OiBFZGl0U2Vzc2lvbjxSb3c+O1xuICBlZGl0Um93Q29tbWFuZDogQ29tbWFuZDx2b2lkPjtcbn1cblxuY29uc3QgQ0VMTF9SRU5ERVJFUl9DT01QT05FTlRfUk9XX0NBQ0hFID0gU3ltYm9sKCdhdXAtY2VsbC1yZW5kZXJlcjpyb3ctZGF0YS1jYWNoZScpO1xuXG5leHBvcnQgdHlwZSBPbkNvbXBvbmVudEluaXQ8Qz4gPSAoY29tcG9uZW50OiBDKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBFPiB7XG4gIG9uQ29tcG9uZW50SW5pdD86IChjb21wb25lbnQ6IEUpID0+IHZvaWQ7XG4gIG9uUm93VXBkYXRlPzogKGNvbXBvbmVudDogRSwgcm93OiBSb3cpID0+IHZvaWQ7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEUsIFAgZXh0ZW5kcyBrZXlvZiBSb3c+IGV4dGVuZHMgQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEU+IHtcbiAgb25WYWx1ZUVkaXQ6IChyb3c6IFJvdywgaXM6IFJvd1tQXSwgd2FzOiBSb3dbUF0pID0+IHZvaWQ7XG59XG5cbmNvbnN0IERFRkFVTFRfVEVYVF9TRUFSQ0hfUFJFRElDQVRFOiBUZXh0U2VhcmNoUHJlZGljYXRlPHVua25vd24+ID0gKHJvdzogdW5rbm93biwgdGV4dDogUmVnRXhwKSA9PiBmYWxzZTtcblxuZXhwb3J0IGNsYXNzIENvbHVtbk1vZGVsPFJvdz4gZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIF9jb2x1bW5UZXh0UHJvcGVydGllczogQ29sdW1uVGV4dFByb3BlcnRpZXM7XG5cbiAgcHJpdmF0ZSBfY29sdW1uSGVhZGVyUG9ydGFsUmVmOiBDZWxsSGVhZGVyUG9ydGFsUmVmPFJvdywgYW55PjtcbiAgcHJpdmF0ZSBfY2VsbFJlbmRlcmVyUG9ydGFsUmVmOiBDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBhbnk+O1xuICBwcml2YXRlIF9jZWxsRWRpdG9yUG9ydGFsUmVmOiBDZWxsRWRpdG9yUG9ydGFsUmVmPFJvdywgYW55PjtcblxuICBwcml2YXRlIF9lbmFibGVSb3dTZWxlY3Rpb24gPSB0cnVlO1xuICBwcml2YXRlIF9mbGV4ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFZpc2liaWxpdHkgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8Ym9vbGVhbj4oKS53aXRoRGVmYXVsdCh0cnVlKSk7XG4gIHByaXZhdGUgX3Zpc2libGUgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8Ym9vbGVhbj4oKS53aXRoRGVmYXVsdCh0aGlzLl9kZWZhdWx0VmlzaWJpbGl0eSkpO1xuICByZWFkb25seSBkYXNoZXJpc2VkQ29sdW1uSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9jb2x1bW5Nb2RlbFRleHRTZWFyY2hQcmVkaWNhdGU6IFRleHRTZWFyY2hQcmVkaWNhdGU8Um93PiA9IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9jZWxsUmVuZGVyZXJUZXh0U2VhcmNoUHJlZGljYXRlOiBUZXh0U2VhcmNoUHJlZGljYXRlPFJvdz4gPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29sdW1uSWQ6IHN0cmluZywgcHJpdmF0ZSB0ZXh0UHJvcGVydGllc1Byb3ZpZGVyOiBDb2x1bW5Nb2RlbC5UZXh0UHJvcGVydGllc1Byb3ZpZGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluc3RhbGxIZWFkZXJSZW5kZXJlcigpO1xuICAgIHRoaXMuZGFzaGVyaXNlZENvbHVtbklkID0gU3RyaW5neS5mcm9tKGNvbHVtbklkKS5kYXNoZXJpemUoKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc3RhbGxIZWFkZXJSZW5kZXJlcigpIHtcbiAgICB0aGlzLmNlbGxIZWFkZXJSZW5kZXJlcihEZWZhdWx0SGVhZGVyQ2VsbFJlbmRlcmVyQ29tcG9uZW50LCAoY29tcG9uZW50LCBjb2x1bW4pID0+IHtcbiAgICAgIGNvbXBvbmVudC5oZWFkZXJUZXh0ID0gY29sdW1uLmdldEhlYWRlclRleHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0SGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKCk/LmhlYWRlclRleHQoKSB8fCB0aGlzLmdldERlZmF1bHRIZWFkZXJUZXh0KCk7XG4gIH1cblxuICBpc1Zpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZS52YWx1ZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlLnJlYWRvbmx5O1xuICB9XG5cbiAgdmlzaWJsZVdoaWxlKHZpc2libGU6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pOiB0aGlzIHtcbiAgICB0aGlzLl92aXNpYmxlLnNldERlbGVnYXRlKHZpc2libGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldERlZmF1bHRWaXNpYmlsaXR5KHZpc2libGU6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl9kZWZhdWx0VmlzaWJpbGl0eS5zZXREZWxlZ2F0ZSh2aXNpYmxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0SGVhZGVyVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5JZDtcbiAgfVxuXG4gIGdldCBpc1RleHRNYXRjaCgpOiBUZXh0U2VhcmNoUHJlZGljYXRlPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5Nb2RlbFRleHRTZWFyY2hQcmVkaWNhdGUgfHwgdGhpcy5fY2VsbFJlbmRlcmVyVGV4dFNlYXJjaFByZWRpY2F0ZSB8fCBERUZBVUxUX1RFWFRfU0VBUkNIX1BSRURJQ0FURTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwcmVkaWNhdGUgdG8gdXNlIHdoZW4gY2hlY2tpbmcgaWYgdGhlIHNwZWNpZmllZCByb3cgaXMgYSB0ZXh0IG1hdGNoIGZvciB0aGlzIGNvbHVtbi5cbiAgICogQHBhcmFtIHByZWRpY2F0ZVxuICAgKi9cbiAgdXNlVGV4dFNlYXJjaFByZWRpY2F0ZShwcmVkaWNhdGU6IFRleHRTZWFyY2hQcmVkaWNhdGU8Um93Pik6dGhpcyB7XG4gICAgdGhpcy5fY29sdW1uTW9kZWxUZXh0U2VhcmNoUHJlZGljYXRlID0gcHJlZGljYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRDb2x1bW5UZXh0UHJvcGVydGllcygpOiBDb2x1bW5UZXh0UHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzIHx8IHRoaXMudGV4dFByb3BlcnRpZXNQcm92aWRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSAjY29sdW1uVGV4dFByb3BlcnRpZXMgaW5zdGVhZFxuICAgKiBAcGFyYW0gY29sdW1uVGV4dFByb3BlcnRpZXNcbiAgICovXG4gIHRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzOiBDb2x1bW5UZXh0UHJvcGVydGllcyk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGNvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzOiBDb2x1bW5UZXh0UHJvcGVydGllcyk6IHRoaXMge1xuICAgIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzID0gY29sdW1uVGV4dFByb3BlcnRpZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uZmlndXJlSGVhZGVyUmVuZGVyZXI8Qz4oY29uZmlnOiBDZWxsSGVhZGVyUG9ydGFsUmVmPFJvdywgYW55Pik6IHZvaWQge1xuICAgIHRoaXMuX2NvbHVtbkhlYWRlclBvcnRhbFJlZiA9IGNvbmZpZztcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25maWd1cmVDZWxsUmVuZGVyZXI8Qz4oY29uZmlnOiBDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5fY2VsbFJlbmRlcmVyUG9ydGFsUmVmID0gY29uZmlnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUNlbGxFZGl0b3I8RT4oY2VsbEVkaXRvcjogQ2VsbEVkaXRvclBvcnRhbFJlZjxSb3csIEU+KTogdm9pZCB7XG4gICAgdGhpcy5fY2VsbEVkaXRvclBvcnRhbFJlZiA9IGNlbGxFZGl0b3I7XG4gIH1cblxuICBjZWxsSGVhZGVyUmVuZGVyZXI8Qz4oY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxDPiwgaW5pdGlhbGlzZXI6IChjb21wb25lbnQ6IEMsIGNvbHVtbjogQ29sdW1uTW9kZWw8Um93PikgPT4gdm9pZCk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlndXJlSGVhZGVyUmVuZGVyZXIobmV3IENlbGxIZWFkZXJQb3J0YWxSZWY8Um93LCBDPihjb21wb25lbnRUeXBlLCBpbml0aWFsaXNlcikpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxleChmbGV4ID0gdHJ1ZSkge1xuICAgIHRoaXMuX2ZsZXggPSBmbGV4O1xuICB9XG5cbiAgaXNGbGV4KCkge1xuICAgIHJldHVybiB0aGlzLl9mbGV4O1xuICB9XG5cbiAgaGFzRWRpdG9yUG9ydGFsKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2NlbGxFZGl0b3JQb3J0YWxSZWY7XG4gIH1cblxuICBhdHRhY2hIZWFkZXJDZWxsKGhvc3Q6IGFueSkge1xuICAgIHRoaXMuX2NvbHVtbkhlYWRlclBvcnRhbFJlZi5pbml0aWFsaXNlSG9zdChob3N0LCB0aGlzKTtcbiAgfVxuXG4gIGF0dGFjaENlbGwoaG9zdDogYW55KSB7XG4gICAgdGhpcy5fY2VsbFJlbmRlcmVyUG9ydGFsUmVmLmluaXRpYWxpc2VIb3N0KGhvc3QsIHRoaXMpO1xuICAgIGlmICh0aGlzLmhhc0VkaXRvclBvcnRhbCgpKSB7XG4gICAgICB0aGlzLl9jZWxsRWRpdG9yUG9ydGFsUmVmLmluaXRpYWxpc2VIb3N0KGhvc3QsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIG9uSGVhZGVyQXR0YWNoZWQoaG9zdDogVGFibGVIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQsIHJlZjogQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudChyZWYpO1xuICAgIHRoaXMuX2NvbHVtbkhlYWRlclBvcnRhbFJlZi5vblBvcnRhbEF0dGFjaGVkKGhvc3QsIGNvbXBvbmVudCk7XG4gIH1cblxuICBvblJlbmRlcmVyQXR0YWNoZWQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgcmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZikge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50T3JFbWJlZGRlZFZpZXcocmVmKTtcbiAgICB0aGlzLl9jZWxsUmVuZGVyZXJQb3J0YWxSZWYub25Qb3J0YWxBdHRhY2hlZChob3N0LCBjb21wb25lbnQpO1xuICAgIGlmIChpc0Z1bmN0aW9uKGNvbXBvbmVudD8ubWF0Y2hlcykpIHtcbiAgICAgIHRoaXMuX2NlbGxSZW5kZXJlclRleHRTZWFyY2hQcmVkaWNhdGUgPSAocm93LCB0ZXh0KSA9PiBjb21wb25lbnQubWF0Y2hlcyhyb3csIHRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jZWxsUmVuZGVyZXJUZXh0U2VhcmNoUHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uRWRpdG9yQXR0YWNoZWQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgcmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZikge1xuICAgIHRoaXMuX2NlbGxFZGl0b3JQb3J0YWxSZWYub25Qb3J0YWxBdHRhY2hlZChob3N0LCB0aGlzLmdldENvbXBvbmVudChyZWYpKTtcbiAgfVxuXG4gIHVwZGF0ZVBvcnRhbENvbnRlbnQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93Pikge1xuICAgIHRoaXMuX2NlbGxSZW5kZXJlclBvcnRhbFJlZi5wdXNoU3RhdGUoaG9zdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlbGVjdFJvd09uQ2xpY2soc2VsZWN0Um93T25DbGljazogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuX2VuYWJsZVJvd1NlbGVjdGlvbiA9IHNlbGVjdFJvd09uQ2xpY2s7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZVJvd1NlbGVjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnQocmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZik6IGFueSB7XG4gICAgaWYgKHJlZiBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIHJlZi5pbnN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihcImhlYWRlcnMgb25seSBzdXBwb3J0IGNvbXBvbmVudCBwb3J0YWxzLCBnb3RcIiwgcmVmKTtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGBoZWFkZXJzIG9ubHkgc3VwcG9ydCBjb21wb25lbnQgcG9ydGFscywgZ290ICR7cmVmfWApXG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnRPckVtYmVkZGVkVmlldyhyZWY6IENka1BvcnRhbE91dGxldEF0dGFjaGVkUmVmKTogYW55IHtcbiAgICBpZiAocmVmIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm4gcmVmLmluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVmO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvbHVtbk1vZGVsIHtcbiAgZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXNQcm92aWRlciA9ICgpID0+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