@skyux/ag-grid 5.7.2 → 6.0.0-beta.2
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.
- package/documentation.json +2 -2
- package/esm2020/index.mjs +28 -0
- package/esm2020/lib/modules/ag-grid/ag-grid-adapter.service.mjs +55 -0
- package/esm2020/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.mjs +211 -0
- package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.component.mjs +77 -0
- package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.directive.mjs +229 -0
- package/esm2020/lib/modules/ag-grid/ag-grid-wrapper.component.mjs +92 -0
- package/esm2020/lib/modules/ag-grid/ag-grid.module.mjs +101 -0
- package/esm2020/lib/modules/ag-grid/ag-grid.service.mjs +408 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.mjs +36 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.mjs +20 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.mjs +52 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.mjs +20 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.mjs +70 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.mjs +19 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.mjs +68 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.mjs +38 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.mjs +44 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.mjs +19 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.mjs +44 -0
- package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.mjs +19 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.mjs +39 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.mjs +48 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.mjs +47 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.mjs +29 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.mjs +19 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.mjs +62 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.mjs +20 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.mjs +36 -0
- package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.mjs +18 -0
- package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.mjs +78 -0
- package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.mjs +20 -0
- package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-config.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-contents.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/autocomplete-properties.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-class.mjs +17 -0
- package/esm2020/lib/modules/ag-grid/types/cell-editor-autocomplete-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-editor-currency-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-editor-datepicker-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-editor-lookup-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-renderer-currency-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-renderer-lookup-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-renderer-validator-params.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/cell-type.mjs +93 -0
- package/esm2020/lib/modules/ag-grid/types/currency-properties.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/datepicker-properties.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/header-class.mjs +8 -0
- package/esm2020/lib/modules/ag-grid/types/lookup-properties.mjs +26 -0
- package/esm2020/lib/modules/ag-grid/types/sky-grid-options.mjs +2 -0
- package/esm2020/lib/modules/ag-grid/types/validator-options.mjs +2 -0
- package/esm2020/lib/modules/shared/sky-ag-grid-resources.module.mjs +71 -0
- package/esm2020/skyux-ag-grid.mjs +5 -0
- package/fesm2015/{skyux-ag-grid.js → skyux-ag-grid.mjs} +176 -248
- package/fesm2015/skyux-ag-grid.mjs.map +1 -0
- package/fesm2020/skyux-ag-grid.mjs +2084 -0
- package/fesm2020/skyux-ag-grid.mjs.map +1 -0
- package/package.json +37 -21
- package/bundles/skyux-ag-grid.umd.js +0 -2569
- package/esm2015/index.js +0 -28
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid-adapter.service.js +0 -55
- package/esm2015/lib/modules/ag-grid/ag-grid-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.js +0 -211
- package/esm2015/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.component.js +0 -77
- package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.directive.js +0 -230
- package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.directive.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid-wrapper.component.js +0 -96
- package/esm2015/lib/modules/ag-grid/ag-grid-wrapper.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid.module.js +0 -122
- package/esm2015/lib/modules/ag-grid/ag-grid.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/ag-grid.service.js +0 -355
- package/esm2015/lib/modules/ag-grid/ag-grid.service.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.js +0 -41
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.js +0 -20
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.js +0 -57
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.js +0 -20
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.js +0 -77
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.js +0 -19
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.js +0 -74
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.js +0 -38
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.js +0 -49
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.js +0 -19
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.js +0 -49
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.js +0 -19
- package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.js +0 -43
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.js +0 -54
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.js +0 -47
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.js +0 -35
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.js +0 -19
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.js +0 -68
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.js +0 -20
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.js +0 -41
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.js +0 -18
- package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.js +0 -83
- package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.js +0 -20
- package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-config.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-config.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-contents.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-contents.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/autocomplete-properties.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/autocomplete-properties.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-class.js +0 -17
- package/esm2015/lib/modules/ag-grid/types/cell-class.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-editor-autocomplete-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-editor-autocomplete-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-editor-currency-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-editor-currency-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-editor-datepicker-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-editor-datepicker-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-editor-lookup-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-editor-lookup-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-renderer-currency-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-renderer-currency-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-renderer-lookup-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-renderer-lookup-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-renderer-validator-params.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/cell-renderer-validator-params.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/cell-type.js +0 -93
- package/esm2015/lib/modules/ag-grid/types/cell-type.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/currency-properties.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/currency-properties.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/datepicker-properties.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/datepicker-properties.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/header-class.js +0 -8
- package/esm2015/lib/modules/ag-grid/types/header-class.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/lookup-properties.js +0 -26
- package/esm2015/lib/modules/ag-grid/types/lookup-properties.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/sky-grid-options.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/sky-grid-options.js.map +0 -1
- package/esm2015/lib/modules/ag-grid/types/validator-options.js +0 -2
- package/esm2015/lib/modules/ag-grid/types/validator-options.js.map +0 -1
- package/esm2015/lib/modules/shared/sky-ag-grid-resources.module.js +0 -71
- package/esm2015/lib/modules/shared/sky-ag-grid-resources.module.js.map +0 -1
- package/esm2015/skyux-ag-grid.js +0 -5
- package/esm2015/skyux-ag-grid.js.map +0 -1
- package/fesm2015/skyux-ag-grid.js.map +0 -1
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { SkyLibResourcesService } from '@skyux/i18n';
|
|
3
|
+
import { SkyThemeService } from '@skyux/theme';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { SkyAgGridAdapterService } from './ag-grid-adapter.service';
|
|
7
|
+
import { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';
|
|
8
|
+
import { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';
|
|
9
|
+
import { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';
|
|
10
|
+
import { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';
|
|
11
|
+
import { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';
|
|
12
|
+
import { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';
|
|
13
|
+
import { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';
|
|
14
|
+
import { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';
|
|
15
|
+
import { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';
|
|
16
|
+
import { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';
|
|
17
|
+
import { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';
|
|
18
|
+
import { SkyCellClass } from './types/cell-class';
|
|
19
|
+
import { SkyCellType } from './types/cell-type';
|
|
20
|
+
import { SkyHeaderClass } from './types/header-class';
|
|
21
|
+
import { applySkyLookupPropertiesDefaults } from './types/lookup-properties';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "./ag-grid-adapter.service";
|
|
24
|
+
import * as i2 from "@skyux/theme";
|
|
25
|
+
import * as i3 from "@skyux/i18n";
|
|
26
|
+
function autocompleteComparator(value1, value2) {
|
|
27
|
+
if (value1 && value2) {
|
|
28
|
+
if (value1.name > value2.name) {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
if (value1.name < value2.name) {
|
|
32
|
+
return -1;
|
|
33
|
+
}
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
return value1 ? 1 : -1;
|
|
37
|
+
}
|
|
38
|
+
function autocompleteFormatter(params) {
|
|
39
|
+
return params.value && params.value.name;
|
|
40
|
+
}
|
|
41
|
+
function dateComparator(date1, date2) {
|
|
42
|
+
let date1value = date1;
|
|
43
|
+
let date2value = date2;
|
|
44
|
+
if (typeof date1value === 'string') {
|
|
45
|
+
date1value = new Date(date1);
|
|
46
|
+
}
|
|
47
|
+
if (typeof date2value === 'string') {
|
|
48
|
+
date2value = new Date(date2);
|
|
49
|
+
}
|
|
50
|
+
if (date1value && date2value) {
|
|
51
|
+
if (date1value > date2value) {
|
|
52
|
+
return 1;
|
|
53
|
+
}
|
|
54
|
+
if (date1value < date2value) {
|
|
55
|
+
return -1;
|
|
56
|
+
}
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
return date1value ? 1 : -1;
|
|
60
|
+
}
|
|
61
|
+
function getValidatorCellRendererSelector(component, fallback) {
|
|
62
|
+
return (params) => {
|
|
63
|
+
if (params.colDef &&
|
|
64
|
+
typeof params.colDef.cellRendererParams?.skyComponentProperties
|
|
65
|
+
?.validator === 'function') {
|
|
66
|
+
if (!params.colDef.cellRendererParams.skyComponentProperties.validator(params.value, params.data, params.rowIndex)) {
|
|
67
|
+
return {
|
|
68
|
+
component,
|
|
69
|
+
params: {
|
|
70
|
+
...params.colDef.cellRendererParams,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return fallback;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
let rowNodeId = -1;
|
|
79
|
+
/**
|
|
80
|
+
* `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.
|
|
81
|
+
*/
|
|
82
|
+
export class SkyAgGridService {
|
|
83
|
+
constructor(agGridAdapterService, themeSvc, resources) {
|
|
84
|
+
this.agGridAdapterService = agGridAdapterService;
|
|
85
|
+
this.themeSvc = themeSvc;
|
|
86
|
+
this.resources = resources;
|
|
87
|
+
this.ngUnsubscribe = new Subject();
|
|
88
|
+
/*istanbul ignore else*/
|
|
89
|
+
if (this.themeSvc) {
|
|
90
|
+
this.themeSvc.settingsChange
|
|
91
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
92
|
+
.subscribe((settingsChange) => (this.currentTheme = settingsChange.currentSettings));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
ngOnDestroy() {
|
|
96
|
+
this.ngUnsubscribe.next();
|
|
97
|
+
this.ngUnsubscribe.complete();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell renderers registered for read-only grids.
|
|
101
|
+
* @param args
|
|
102
|
+
* @returns
|
|
103
|
+
*/
|
|
104
|
+
getGridOptions(args) {
|
|
105
|
+
const defaultGridOptions = this.getDefaultGridOptions(args);
|
|
106
|
+
const mergedGridOptions = this.mergeGridOptions(defaultGridOptions, args.gridOptions);
|
|
107
|
+
return mergedGridOptions;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell editors registered for editable grids.
|
|
111
|
+
* @param args
|
|
112
|
+
* @returns
|
|
113
|
+
*/
|
|
114
|
+
getEditableGridOptions(args) {
|
|
115
|
+
const defaultGridOptions = this.getDefaultEditableGridOptions(args);
|
|
116
|
+
const mergedGridOptions = this.mergeGridOptions(defaultGridOptions, args.gridOptions);
|
|
117
|
+
return mergedGridOptions;
|
|
118
|
+
}
|
|
119
|
+
mergeGridOptions(defaultGridOptions, providedGridOptions) {
|
|
120
|
+
const mergedGridOptions = {
|
|
121
|
+
...defaultGridOptions,
|
|
122
|
+
...providedGridOptions,
|
|
123
|
+
columnTypes: {
|
|
124
|
+
...providedGridOptions.columnTypes,
|
|
125
|
+
// apply default second to prevent consumers from overwriting our default column types
|
|
126
|
+
...defaultGridOptions.columnTypes,
|
|
127
|
+
},
|
|
128
|
+
defaultColDef: {
|
|
129
|
+
...defaultGridOptions.defaultColDef,
|
|
130
|
+
...providedGridOptions.defaultColDef,
|
|
131
|
+
// allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling
|
|
132
|
+
cellClassRules: defaultGridOptions.defaultColDef.cellClassRules,
|
|
133
|
+
},
|
|
134
|
+
icons: {
|
|
135
|
+
...defaultGridOptions.icons,
|
|
136
|
+
...providedGridOptions.icons,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
return mergedGridOptions;
|
|
140
|
+
}
|
|
141
|
+
getDefaultGridOptions(args) {
|
|
142
|
+
// cellClassRules can be functions or string expressions
|
|
143
|
+
const cellClassRuleTrueExpression = 'true';
|
|
144
|
+
function getEditableFn(isUneditable) {
|
|
145
|
+
return function (params) {
|
|
146
|
+
let isEditable = params.colDef.editable;
|
|
147
|
+
if (typeof isEditable === 'function') {
|
|
148
|
+
const column = params.columnApi.getColumn(params.colDef.field);
|
|
149
|
+
isEditable = isEditable({
|
|
150
|
+
...params,
|
|
151
|
+
column,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return isUneditable ? !isEditable : isEditable;
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
const editableCellClassRules = {
|
|
158
|
+
[SkyCellClass.Editable]: getEditableFn(),
|
|
159
|
+
[SkyCellClass.Uneditable]: getEditableFn(true),
|
|
160
|
+
};
|
|
161
|
+
function getValidatorFn() {
|
|
162
|
+
return function (param) {
|
|
163
|
+
if (param.colDef &&
|
|
164
|
+
typeof param.colDef.cellRendererParams?.skyComponentProperties
|
|
165
|
+
?.validator === 'function') {
|
|
166
|
+
return !param.colDef.cellRendererParams.skyComponentProperties.validator(param.value, param.data, param.rowIndex);
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const validatorCellClassRules = {
|
|
172
|
+
[SkyCellClass.Invalid]: getValidatorFn(),
|
|
173
|
+
};
|
|
174
|
+
const defaultSkyGridOptions = {
|
|
175
|
+
columnTypes: {
|
|
176
|
+
[SkyCellType.Autocomplete]: {
|
|
177
|
+
cellClassRules: {
|
|
178
|
+
[SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,
|
|
179
|
+
...editableCellClassRules,
|
|
180
|
+
},
|
|
181
|
+
cellEditorFramework: SkyAgGridCellEditorAutocompleteComponent,
|
|
182
|
+
valueFormatter: autocompleteFormatter,
|
|
183
|
+
comparator: autocompleteComparator,
|
|
184
|
+
minWidth: 185,
|
|
185
|
+
},
|
|
186
|
+
[SkyCellType.Currency]: {
|
|
187
|
+
cellClassRules: {
|
|
188
|
+
[SkyCellClass.Currency]: cellClassRuleTrueExpression,
|
|
189
|
+
...validatorCellClassRules,
|
|
190
|
+
...editableCellClassRules,
|
|
191
|
+
},
|
|
192
|
+
cellRendererSelector: getValidatorCellRendererSelector('sky-ag-grid-cell-renderer-currency-validator', { component: 'sky-ag-grid-cell-renderer-currency' }),
|
|
193
|
+
cellEditorFramework: SkyAgGridCellEditorCurrencyComponent,
|
|
194
|
+
headerClass: SkyHeaderClass.RightAligned,
|
|
195
|
+
minWidth: 185,
|
|
196
|
+
},
|
|
197
|
+
[SkyCellType.Date]: {
|
|
198
|
+
cellClassRules: {
|
|
199
|
+
[SkyCellClass.Date]: cellClassRuleTrueExpression,
|
|
200
|
+
...editableCellClassRules,
|
|
201
|
+
},
|
|
202
|
+
cellEditorFramework: SkyAgGridCellEditorDatepickerComponent,
|
|
203
|
+
comparator: dateComparator,
|
|
204
|
+
minWidth: this.currentTheme?.theme?.name === 'modern' ? 180 : 160,
|
|
205
|
+
valueFormatter: (params) => this.dateFormatter(params, args.locale),
|
|
206
|
+
},
|
|
207
|
+
[SkyCellType.Lookup]: {
|
|
208
|
+
cellClassRules: {
|
|
209
|
+
[SkyCellClass.Lookup]: cellClassRuleTrueExpression,
|
|
210
|
+
...editableCellClassRules,
|
|
211
|
+
},
|
|
212
|
+
cellEditorFramework: SkyAgGridCellEditorLookupComponent,
|
|
213
|
+
cellRendererFramework: SkyAgGridCellRendererLookupComponent,
|
|
214
|
+
valueFormatter: (params) => {
|
|
215
|
+
const lookupProperties = applySkyLookupPropertiesDefaults(params);
|
|
216
|
+
return (params.value || [])
|
|
217
|
+
.map((value) => {
|
|
218
|
+
return value[lookupProperties.descriptorProperty];
|
|
219
|
+
})
|
|
220
|
+
.filter((value) => value !== '' && value !== undefined)
|
|
221
|
+
.join('; ');
|
|
222
|
+
},
|
|
223
|
+
minWidth: 185,
|
|
224
|
+
},
|
|
225
|
+
[SkyCellType.Number]: {
|
|
226
|
+
cellClassRules: {
|
|
227
|
+
[SkyCellClass.Number]: cellClassRuleTrueExpression,
|
|
228
|
+
...editableCellClassRules,
|
|
229
|
+
},
|
|
230
|
+
cellEditorFramework: SkyAgGridCellEditorNumberComponent,
|
|
231
|
+
headerClass: SkyHeaderClass.RightAligned,
|
|
232
|
+
},
|
|
233
|
+
[SkyCellType.RowSelector]: {
|
|
234
|
+
cellClassRules: {
|
|
235
|
+
[SkyCellClass.RowSelector]: cellClassRuleTrueExpression,
|
|
236
|
+
[SkyCellClass.Uneditable]: cellClassRuleTrueExpression,
|
|
237
|
+
},
|
|
238
|
+
cellRendererFramework: SkyAgGridCellRendererRowSelectorComponent,
|
|
239
|
+
headerName: '',
|
|
240
|
+
minWidth: 55,
|
|
241
|
+
maxWidth: 55,
|
|
242
|
+
sortable: false,
|
|
243
|
+
width: 55,
|
|
244
|
+
},
|
|
245
|
+
[SkyCellType.Text]: {
|
|
246
|
+
cellClassRules: {
|
|
247
|
+
[SkyCellClass.Text]: cellClassRuleTrueExpression,
|
|
248
|
+
...editableCellClassRules,
|
|
249
|
+
},
|
|
250
|
+
cellEditorFramework: SkyAgGridCellEditorTextComponent,
|
|
251
|
+
},
|
|
252
|
+
[SkyCellType.Validator]: {
|
|
253
|
+
cellClassRules: {
|
|
254
|
+
...validatorCellClassRules,
|
|
255
|
+
...editableCellClassRules,
|
|
256
|
+
},
|
|
257
|
+
cellRendererSelector: getValidatorCellRendererSelector('sky-ag-grid-cell-renderer-validator-tooltip'),
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
defaultColDef: {
|
|
261
|
+
cellClassRules: editableCellClassRules,
|
|
262
|
+
minWidth: 100,
|
|
263
|
+
resizable: true,
|
|
264
|
+
sortable: true,
|
|
265
|
+
suppressKeyboardEvent: (keypress) => this.suppressTab(keypress),
|
|
266
|
+
},
|
|
267
|
+
domLayout: 'autoHeight',
|
|
268
|
+
enterMovesDownAfterEdit: true,
|
|
269
|
+
frameworkComponents: {
|
|
270
|
+
'sky-ag-grid-cell-renderer-currency': SkyAgGridCellRendererCurrencyComponent,
|
|
271
|
+
'sky-ag-grid-cell-renderer-currency-validator': SkyAgGridCellRendererCurrencyValidatorComponent,
|
|
272
|
+
'sky-ag-grid-cell-renderer-validator-tooltip': SkyAgGridCellRendererValidatorTooltipComponent,
|
|
273
|
+
},
|
|
274
|
+
getRowNodeId(data) {
|
|
275
|
+
if ('id' in data && data.id !== undefined) {
|
|
276
|
+
return `${data.id}`;
|
|
277
|
+
}
|
|
278
|
+
return `${rowNodeId--}`;
|
|
279
|
+
},
|
|
280
|
+
getRowClass: (params) => {
|
|
281
|
+
if (params.node.id) {
|
|
282
|
+
return `sky-ag-grid-row-${params.node.id}`;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
return undefined;
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
headerHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 37,
|
|
289
|
+
icons: {
|
|
290
|
+
sortDescending: this.getIconTemplate('caret-down'),
|
|
291
|
+
sortAscending: this.getIconTemplate('caret-up'),
|
|
292
|
+
columnMoveMove: this.getIconTemplate('arrows'),
|
|
293
|
+
columnMoveHide: this.getIconTemplate('arrows'),
|
|
294
|
+
columnMoveLeft: this.getIconTemplate('arrows'),
|
|
295
|
+
columnMoveRight: this.getIconTemplate('arrows'),
|
|
296
|
+
columnMovePin: this.getIconTemplate('arrows'),
|
|
297
|
+
},
|
|
298
|
+
onCellFocused: () => this.onCellFocused(),
|
|
299
|
+
rowHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 38,
|
|
300
|
+
rowMultiSelectWithClick: true,
|
|
301
|
+
rowSelection: 'multiple',
|
|
302
|
+
singleClickEdit: true,
|
|
303
|
+
// tslint:disable-next-line: no-null-keyword
|
|
304
|
+
sortingOrder: ['desc', 'asc', null],
|
|
305
|
+
stopEditingWhenGridLosesFocus: false,
|
|
306
|
+
suppressRowClickSelection: true,
|
|
307
|
+
suppressDragLeaveHidesColumns: true,
|
|
308
|
+
};
|
|
309
|
+
defaultSkyGridOptions.columnTypes[SkyCellType.CurrencyValidator] = {
|
|
310
|
+
...defaultSkyGridOptions.columnTypes[SkyCellType.Currency],
|
|
311
|
+
cellRendererParams: {
|
|
312
|
+
skyComponentProperties: {
|
|
313
|
+
validator: (value, data, rowIndex) => {
|
|
314
|
+
return !!`${value || ''}`.match(/^[^0-9]*(\d+[,.]?)+\d*[^0-9]*$/);
|
|
315
|
+
},
|
|
316
|
+
validatorMessage: 'Please enter a valid currency',
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
};
|
|
320
|
+
/*istanbul ignore else*/
|
|
321
|
+
if (this.resources) {
|
|
322
|
+
this.resources
|
|
323
|
+
.getString('sky_ag_grid_cell_renderer_currency_validator_message')
|
|
324
|
+
.subscribe((value) => {
|
|
325
|
+
defaultSkyGridOptions.columnTypes[SkyCellType.CurrencyValidator].cellRendererParams.skyComponentProperties.validatorMessage = value;
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
defaultSkyGridOptions.columnTypes[SkyCellType.NumberValidator] = {
|
|
329
|
+
...defaultSkyGridOptions.columnTypes[SkyCellType.Validator],
|
|
330
|
+
...defaultSkyGridOptions.columnTypes[SkyCellType.Number],
|
|
331
|
+
cellClassRules: {
|
|
332
|
+
...defaultSkyGridOptions.columnTypes[SkyCellType.Validator]
|
|
333
|
+
.cellClassRules,
|
|
334
|
+
...defaultSkyGridOptions.columnTypes[SkyCellType.Number].cellClassRules,
|
|
335
|
+
},
|
|
336
|
+
cellRendererParams: {
|
|
337
|
+
skyComponentProperties: {
|
|
338
|
+
validator: (value, data, rowIndex) => {
|
|
339
|
+
return !!value && !isNaN(parseFloat(value));
|
|
340
|
+
},
|
|
341
|
+
validatorMessage: 'Please enter a valid number',
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
/*istanbul ignore else*/
|
|
346
|
+
if (this.resources) {
|
|
347
|
+
this.resources
|
|
348
|
+
.getString('sky_ag_grid_cell_renderer_number_validator_message')
|
|
349
|
+
.subscribe((value) => {
|
|
350
|
+
defaultSkyGridOptions.columnTypes[SkyCellType.NumberValidator].cellRendererParams.skyComponentProperties.validatorMessage = value;
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
return defaultSkyGridOptions;
|
|
354
|
+
}
|
|
355
|
+
onCellFocused() {
|
|
356
|
+
const currentElement = this.agGridAdapterService.getFocusedElement();
|
|
357
|
+
this.agGridAdapterService.focusOnFocusableChildren(currentElement);
|
|
358
|
+
}
|
|
359
|
+
getDefaultEditableGridOptions(args) {
|
|
360
|
+
const defaultGridOptions = this.getDefaultGridOptions(args);
|
|
361
|
+
defaultGridOptions.rowSelection = 'none';
|
|
362
|
+
return defaultGridOptions;
|
|
363
|
+
}
|
|
364
|
+
dateFormatter(params, locale = 'en-us') {
|
|
365
|
+
const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };
|
|
366
|
+
let date = params.value;
|
|
367
|
+
if (date && typeof date === 'string') {
|
|
368
|
+
date = new Date(params.value);
|
|
369
|
+
}
|
|
370
|
+
const formattedDate = date &&
|
|
371
|
+
date.toLocaleDateString &&
|
|
372
|
+
date.toLocaleDateString(locale, dateConfig);
|
|
373
|
+
if (date && date.getTime && !isNaN(date.getTime())) {
|
|
374
|
+
return formattedDate;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
getIconTemplate(iconName) {
|
|
378
|
+
return `<i class="fa fa-${iconName}"></i>`;
|
|
379
|
+
}
|
|
380
|
+
suppressTab(params) {
|
|
381
|
+
if (params.event.code === 'Tab') {
|
|
382
|
+
if (params.editing) {
|
|
383
|
+
const currentlyFocusedEl = this.agGridAdapterService.getFocusedElement();
|
|
384
|
+
// inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class
|
|
385
|
+
const cellEl = this.agGridAdapterService.getElementOrParentWithClass(currentlyFocusedEl, 'ag-cell');
|
|
386
|
+
const popupEl = this.agGridAdapterService.getElementOrParentWithClass(currentlyFocusedEl, 'ag-popup-editor');
|
|
387
|
+
const parentEl = cellEl || popupEl;
|
|
388
|
+
const nextFocusableElementInCell = this.agGridAdapterService.getNextFocusableElement(currentlyFocusedEl, parentEl, params.event.shiftKey);
|
|
389
|
+
return !!nextFocusableElementInCell;
|
|
390
|
+
}
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
SkyAgGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridService, deps: [{ token: i1.SkyAgGridAdapterService }, { token: i2.SkyThemeService, optional: true }, { token: i3.SkyLibResourcesService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
397
|
+
SkyAgGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridService, providedIn: 'any' });
|
|
398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridService, decorators: [{
|
|
399
|
+
type: Injectable,
|
|
400
|
+
args: [{
|
|
401
|
+
providedIn: 'any',
|
|
402
|
+
}]
|
|
403
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAgGridAdapterService }, { type: i2.SkyThemeService, decorators: [{
|
|
404
|
+
type: Optional
|
|
405
|
+
}] }, { type: i3.SkyLibResourcesService, decorators: [{
|
|
406
|
+
type: Optional
|
|
407
|
+
}] }]; } });
|
|
408
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLGNBQWMsQ0FBQztBQVdqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMxSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNoSSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUNySixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUM1SCxPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztB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aEIsZ0JBQWdCLGNBRmYsS0FBSzsyRkFFTixnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFVSSxRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSwgU2t5VGhlbWVTZXR0aW5ncyB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIENlbGxDbGFzc1BhcmFtcyxcbiAgR3JpZE9wdGlvbnMsXG4gIElDZWxsUmVuZGVyZXJQYXJhbXMsXG4gIFJvd0NsYXNzUGFyYW1zLFxuICBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMsXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBFZGl0YWJsZUNhbGxiYWNrUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHkvZGlzdC9saWIvZW50aXRpZXMvY29sRGVmJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2FnLWdyaWQtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1jdXJyZW5jeS9jZWxsLWVkaXRvci1jdXJyZW5jeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvckRhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1kYXRlcGlja2VyL2NlbGwtZWRpdG9yLWRhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1sb29rdXAvY2VsbC1lZGl0b3ItbG9va3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItbnVtYmVyL2NlbGwtZWRpdG9yLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvclRleHRDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci10ZXh0L2NlbGwtZWRpdG9yLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlckN1cnJlbmN5VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5L2NlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItbG9va3VwL2NlbGwtcmVuZGVyZXItbG9va3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJSb3dTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1yb3ctc2VsZWN0b3IvY2VsbC1yZW5kZXJlci1yb3ctc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlclZhbGlkYXRvclRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Q2VsbENsYXNzIH0gZnJvbSAnLi90eXBlcy9jZWxsLWNsYXNzJztcbmltcG9ydCB7IFNreUNlbGxUeXBlIH0gZnJvbSAnLi90eXBlcy9jZWxsLXR5cGUnO1xuaW1wb3J0IHsgU2t5SGVhZGVyQ2xhc3MgfSBmcm9tICcuL3R5cGVzL2hlYWRlci1jbGFzcyc7XG5pbXBvcnQgeyBhcHBseVNreUxvb2t1cFByb3BlcnRpZXNEZWZhdWx0cyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgU2t5R2V0R3JpZE9wdGlvbnNBcmdzIH0gZnJvbSAnLi90eXBlcy9za3ktZ3JpZC1vcHRpb25zJztcblxuZnVuY3Rpb24gYXV0b2NvbXBsZXRlQ29tcGFyYXRvcihcbiAgdmFsdWUxOiB7IG5hbWU6IHN0cmluZyB9LFxuICB2YWx1ZTI6IHsgbmFtZTogc3RyaW5nIH1cbik6IG51bWJlciB7XG4gIGlmICh2YWx1ZTEgJiYgdmFsdWUyKSB7XG4gICAgaWYgKHZhbHVlMS5uYW1lID4gdmFsdWUyLm5hbWUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZTEubmFtZSA8IHZhbHVlMi5uYW1lKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdmFsdWUxID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBhdXRvY29tcGxldGVGb3JtYXR0ZXIoXG4gIHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXNcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBwYXJhbXMudmFsdWUgJiYgcGFyYW1zLnZhbHVlLm5hbWU7XG59XG5cbmZ1bmN0aW9uIGRhdGVDb21wYXJhdG9yKGRhdGUxOiBhbnksIGRhdGUyOiBhbnkpOiBudW1iZXIge1xuICBsZXQgZGF0ZTF2YWx1ZSA9IGRhdGUxO1xuICBsZXQgZGF0ZTJ2YWx1ZSA9IGRhdGUyO1xuXG4gIGlmICh0eXBlb2YgZGF0ZTF2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRlMXZhbHVlID0gbmV3IERhdGUoZGF0ZTEpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBkYXRlMnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGRhdGUydmFsdWUgPSBuZXcgRGF0ZShkYXRlMik7XG4gIH1cblxuICBpZiAoZGF0ZTF2YWx1ZSAmJiBkYXRlMnZhbHVlKSB7XG4gICAgaWYgKGRhdGUxdmFsdWUgPiBkYXRlMnZhbHVlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZTF2YWx1ZSA8IGRhdGUydmFsdWUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiBkYXRlMXZhbHVlID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JDZWxsUmVuZGVyZXJTZWxlY3Rvcihjb21wb25lbnQ6IHN0cmluZywgZmFsbGJhY2s/OiBhbnkpIHtcbiAgcmV0dXJuIChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpID0+IHtcbiAgICBpZiAoXG4gICAgICBwYXJhbXMuY29sRGVmICYmXG4gICAgICB0eXBlb2YgcGFyYW1zLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXM/LnNreUNvbXBvbmVudFByb3BlcnRpZXNcbiAgICAgICAgPy52YWxpZGF0b3IgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yKFxuICAgICAgICAgIHBhcmFtcy52YWx1ZSxcbiAgICAgICAgICBwYXJhbXMuZGF0YSxcbiAgICAgICAgICBwYXJhbXMucm93SW5kZXhcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgLi4ucGFyYW1zLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9O1xufVxuXG5sZXQgcm93Tm9kZUlkID0gLTE7XG5cbi8qKlxuICogYFNreUFnR3JpZFNlcnZpY2VgIHByb3ZpZGVzIG1ldGhvZHMgdG8gZ2V0IEFHIEdyaWQgYGdyaWRPcHRpb25zYCB0byBlbnN1cmUgZ3JpZHMgbWF0Y2ggU0tZIFVYIGZ1bmN0aW9uYWxpdHkuIFRoZSBgZ3JpZE9wdGlvbnNgIGNhbiBiZSBvdmVycmlkZGVuLCBhbmQgaW5jbHVkZSByZWdpc3RlcmVkIFNLWSBVWCBjb2x1bW4gdHlwZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgY3VycmVudFRoZW1lOiBTa3lUaGVtZVNldHRpbmdzO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWdHcmlkQWRhcHRlclNlcnZpY2U6IFNreUFnR3JpZEFkYXB0ZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZXNvdXJjZXM/OiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlXG4gICkge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnRoZW1lU3ZjKSB7XG4gICAgICB0aGlzLnRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChzZXR0aW5nc0NoYW5nZSkgPT5cbiAgICAgICAgICAgICh0aGlzLmN1cnJlbnRUaGVtZSA9IHNldHRpbmdzQ2hhbmdlLmN1cnJlbnRTZXR0aW5ncylcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIFtBRyBHcmlkIGBncmlkT3B0aW9uc2BdKGh0dHBzOi8vd3d3LmFnLWdyaWQuY29tL2phdmFzY3JpcHQtZ3JpZC1wcm9wZXJ0aWVzLykgd2l0aCBkZWZhdWx0IFNLWSBVWCBvcHRpb25zLCBzdHlsaW5nLCBhbmQgY2VsbCByZW5kZXJlcnMgcmVnaXN0ZXJlZCBmb3IgcmVhZC1vbmx5IGdyaWRzLlxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGdldEdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzKTtcbiAgICBjb25zdCBtZXJnZWRHcmlkT3B0aW9ucyA9IHRoaXMubWVyZ2VHcmlkT3B0aW9ucyhcbiAgICAgIGRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIGFyZ3MuZ3JpZE9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgW0FHIEdyaWQgYGdyaWRPcHRpb25zYF0oaHR0cHM6Ly93d3cuYWctZ3JpZC5jb20vamF2YXNjcmlwdC1ncmlkLXByb3BlcnRpZXMvKSB3aXRoIGRlZmF1bHQgU0tZIFVYIG9wdGlvbnMsIHN0eWxpbmcsIGFuZCBjZWxsIGVkaXRvcnMgcmVnaXN0ZXJlZCBmb3IgZWRpdGFibGUgZ3JpZHMuXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgZ2V0RWRpdGFibGVHcmlkT3B0aW9ucyhhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3MpOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zID0gdGhpcy5nZXREZWZhdWx0RWRpdGFibGVHcmlkT3B0aW9ucyhhcmdzKTtcbiAgICBjb25zdCBtZXJnZWRHcmlkT3B0aW9ucyA9IHRoaXMubWVyZ2VHcmlkT3B0aW9ucyhcbiAgICAgIGRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIGFyZ3MuZ3JpZE9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUdyaWRPcHRpb25zKFxuICAgIGRlZmF1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMsXG4gICAgcHJvdmlkZWRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnNcbiAgKTogR3JpZE9wdGlvbnMge1xuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucyxcbiAgICAgIGNvbHVtblR5cGVzOiB7XG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuY29sdW1uVHlwZXMsXG4gICAgICAgIC8vIGFwcGx5IGRlZmF1bHQgc2Vjb25kIHRvIHByZXZlbnQgY29uc3VtZXJzIGZyb20gb3ZlcndyaXRpbmcgb3VyIGRlZmF1bHQgY29sdW1uIHR5cGVzXG4gICAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucy5jb2x1bW5UeXBlcyxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XG4gICAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLFxuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmRlZmF1bHRDb2xEZWYsXG4gICAgICAgIC8vIGFsbG93IGNvbnN1bWVycyB0byBvdmVycmlkZSBhbGwgZGVmYXVsdENvbERlZiBwcm9wZXJ0aWVzIGV4Y2VwdCBjZWxsQ2xhc3NSdWxlcywgd2hpY2ggd2UgcmVzZXJ2ZSBmb3Igc3R5bGluZ1xuICAgICAgICBjZWxsQ2xhc3NSdWxlczogZGVmYXVsdEdyaWRPcHRpb25zLmRlZmF1bHRDb2xEZWYuY2VsbENsYXNzUnVsZXMsXG4gICAgICB9LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmljb25zLFxuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmljb25zLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0R3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIC8vIGNlbGxDbGFzc1J1bGVzIGNhbiBiZSBmdW5jdGlvbnMgb3Igc3RyaW5nIGV4cHJlc3Npb25zXG4gICAgY29uc3QgY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uID0gJ3RydWUnO1xuXG4gICAgZnVuY3Rpb24gZ2V0RWRpdGFibGVGbihcbiAgICAgIGlzVW5lZGl0YWJsZT86IGJvb2xlYW5cbiAgICApOiAocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpID0+IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgaXNFZGl0YWJsZSA9IHBhcmFtcy5jb2xEZWYuZWRpdGFibGU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpc0VkaXRhYmxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uID0gcGFyYW1zLmNvbHVtbkFwaS5nZXRDb2x1bW4ocGFyYW1zLmNvbERlZi5maWVsZCk7XG4gICAgICAgICAgaXNFZGl0YWJsZSA9IGlzRWRpdGFibGUoe1xuICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0gYXMgRWRpdGFibGVDYWxsYmFja1BhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNVbmVkaXRhYmxlID8gIWlzRWRpdGFibGUgOiBpc0VkaXRhYmxlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzID0ge1xuICAgICAgW1NreUNlbGxDbGFzcy5FZGl0YWJsZV06IGdldEVkaXRhYmxlRm4oKSxcbiAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGdldEVkaXRhYmxlRm4odHJ1ZSksXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFZhbGlkYXRvckZuKCk6IChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcykgPT4gYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtOiBDZWxsQ2xhc3NQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmFtLmNvbERlZiAmJlxuICAgICAgICAgIHR5cGVvZiBwYXJhbS5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzXG4gICAgICAgICAgICA/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gIXBhcmFtLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3IoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmRhdGEsXG4gICAgICAgICAgICBwYXJhbS5yb3dJbmRleFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyA9IHtcbiAgICAgIFtTa3lDZWxsQ2xhc3MuSW52YWxpZF06IGdldFZhbGlkYXRvckZuKCksXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRTa3lHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb2x1bW5UeXBlczoge1xuICAgICAgICBbU2t5Q2VsbFR5cGUuQXV0b2NvbXBsZXRlXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkF1dG9jb21wbGV0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiBhdXRvY29tcGxldGVGb3JtYXR0ZXIsXG4gICAgICAgICAgY29tcGFyYXRvcjogYXV0b2NvbXBsZXRlQ29tcGFyYXRvcixcbiAgICAgICAgICBtaW5XaWR0aDogMTg1LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuQ3VycmVuY3ldOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuQ3VycmVuY3ldOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3InLFxuICAgICAgICAgICAgeyBjb21wb25lbnQ6ICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JyB9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuRGF0ZV06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5EYXRlXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgICAgICAgIGNvbXBhcmF0b3I6IGRhdGVDb21wYXJhdG9yLFxuICAgICAgICAgIG1pbldpZHRoOiB0aGlzLmN1cnJlbnRUaGVtZT8udGhlbWU/Lm5hbWUgPT09ICdtb2Rlcm4nID8gMTgwIDogMTYwLFxuICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcykgPT5cbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdHRlcihwYXJhbXMsIGFyZ3MubG9jYWxlKSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLkxvb2t1cF06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5Mb29rdXBdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2t5QWdHcmlkQ2VsbEVkaXRvckxvb2t1cENvbXBvbmVudCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJGcmFtZXdvcms6IFNreUFnR3JpZENlbGxSZW5kZXJlckxvb2t1cENvbXBvbmVudCxcbiAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9va3VwUHJvcGVydGllcyA9IGFwcGx5U2t5TG9va3VwUHJvcGVydGllc0RlZmF1bHRzKHBhcmFtcyk7XG4gICAgICAgICAgICByZXR1cm4gKHBhcmFtcy52YWx1ZSB8fCBbXSlcbiAgICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbbG9va3VwUHJvcGVydGllcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIC5qb2luKCc7ICcpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbWluV2lkdGg6IDE4NSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLk51bWJlcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5OdW1iZXJdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2t5QWdHcmlkQ2VsbEVkaXRvck51bWJlckNvbXBvbmVudCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogU2t5SGVhZGVyQ2xhc3MuUmlnaHRBbGlnbmVkLFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuUm93U2VsZWN0b3JdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuUm93U2VsZWN0b3JdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLlVuZWRpdGFibGVdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJGcmFtZXdvcms6IFNreUFnR3JpZENlbGxSZW5kZXJlclJvd1NlbGVjdG9yQ29tcG9uZW50LFxuICAgICAgICAgIGhlYWRlck5hbWU6ICcnLFxuICAgICAgICAgIG1pbldpZHRoOiA1NSxcbiAgICAgICAgICBtYXhXaWR0aDogNTUsXG4gICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgIHdpZHRoOiA1NSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlRleHRdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVGV4dF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yVGV4dENvbXBvbmVudCxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlZhbGlkYXRvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgLi4udmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyU2VsZWN0b3I6IGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKFxuICAgICAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAnXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XG4gICAgICAgIGNlbGxDbGFzc1J1bGVzOiBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICBtaW5XaWR0aDogMTAwLFxuICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IChrZXlwcmVzczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKSA9PlxuICAgICAgICAgIHRoaXMuc3VwcHJlc3NUYWIoa2V5cHJlc3MpLFxuICAgICAgfSxcbiAgICAgIGRvbUxheW91dDogJ2F1dG9IZWlnaHQnLFxuICAgICAgZW50ZXJNb3Zlc0Rvd25BZnRlckVkaXQ6IHRydWUsXG4gICAgICBmcmFtZXdvcmtDb21wb25lbnRzOiB7XG4gICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JzpcbiAgICAgICAgICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yJzpcbiAgICAgICAgICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeVZhbGlkYXRvckNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAnOlxuICAgICAgICAgIFNreUFnR3JpZENlbGxSZW5kZXJlclZhbGlkYXRvclRvb2x0aXBDb21wb25lbnQsXG4gICAgICB9LFxuICAgICAgZ2V0Um93Tm9kZUlkKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICgnaWQnIGluIGRhdGEgJiYgZGF0YS5pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGAke2RhdGEuaWR9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7cm93Tm9kZUlkLS19YDtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dDbGFzczogKHBhcmFtczogUm93Q2xhc3NQYXJhbXMpID0+IHtcbiAgICAgICAgaWYgKHBhcmFtcy5ub2RlLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIGBza3ktYWctZ3JpZC1yb3ctJHtwYXJhbXMubm9kZS5pZH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoZWFkZXJIZWlnaHQ6IHRoaXMuY3VycmVudFRoZW1lPy50aGVtZT8ubmFtZSA9PT0gJ21vZGVybicgPyA2MCA6IDM3LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgc29ydERlc2NlbmRpbmc6IHRoaXMuZ2V0SWNvblRlbXBsYXRlKCdjYXJldC1kb3duJyksXG4gICAgICAgIHNvcnRBc2NlbmRpbmc6IHRoaXMuZ2V0SWNvblRlbXBsYXRlKCdjYXJldC11cCcpLFxuICAgICAgICBjb2x1bW5Nb3ZlTW92ZTogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlSGlkZTogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlTGVmdDogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlUmlnaHQ6IHRoaXMuZ2V0SWNvblRlbXBsYXRlKCdhcnJvd3MnKSxcbiAgICAgICAgY29sdW1uTW92ZVBpbjogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgfSxcbiAgICAgIG9uQ2VsbEZvY3VzZWQ6ICgpID0+IHRoaXMub25DZWxsRm9jdXNlZCgpLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLmN1cnJlbnRUaGVtZT8udGhlbWU/Lm5hbWUgPT09ICdtb2Rlcm4nID8gNjAgOiAzOCxcbiAgICAgIHJvd011bHRpU2VsZWN0V2l0aENsaWNrOiB0cnVlLFxuICAgICAgcm93U2VsZWN0aW9uOiAnbXVsdGlwbGUnLFxuICAgICAgc2luZ2xlQ2xpY2tFZGl0OiB0cnVlLFxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1udWxsLWtleXdvcmRcbiAgICAgIHNvcnRpbmdPcmRlcjogWydkZXNjJywgJ2FzYycsIG51bGxdLFxuICAgICAgc3RvcEVkaXRpbmdXaGVuR3JpZExvc2VzRm9jdXM6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbjogdHJ1ZSxcbiAgICAgIHN1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zOiB0cnVlLFxuICAgIH07XG5cbiAgICBkZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3lWYWxpZGF0b3JdID0ge1xuICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLkN1cnJlbmN5XSxcbiAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICBza3lDb21wb25lbnRQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6IGFueSwgZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISFgJHt2YWx1ZSB8fCAnJ31gLm1hdGNoKC9eW14wLTldKihcXGQrWywuXT8pK1xcZCpbXjAtOV0qJC8pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGN1cnJlbmN5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5yZXNvdXJjZXMpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreV9hZ19ncmlkX2NlbGxfcmVuZGVyZXJfY3VycmVuY3lfdmFsaWRhdG9yX21lc3NhZ2UnKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tcbiAgICAgICAgICAgIFNreUNlbGxUeXBlLkN1cnJlbmN5VmFsaWRhdG9yXG4gICAgICAgICAgXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5OdW1iZXJWYWxpZGF0b3JdID0ge1xuICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLlZhbGlkYXRvcl0sXG4gICAgICAuLi5kZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuTnVtYmVyXSxcbiAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgIC4uLmRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5WYWxpZGF0b3JdXG4gICAgICAgICAgLmNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAuLi5kZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuTnVtYmVyXS5jZWxsQ2xhc3NSdWxlcyxcbiAgICAgIH0sXG4gICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgc2t5Q29tcG9uZW50UHJvcGVydGllczoge1xuICAgICAgICAgIHZhbGlkYXRvcjogKHZhbHVlOiBhbnksIGRhdGE6IGFueSwgcm93SW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEhdmFsdWUgJiYgIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZhbGlkYXRvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXInLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnJlc291cmNlcykge1xuICAgICAgdGhpcy5yZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5X2FnX2dyaWRfY2VsbF9yZW5kZXJlcl9udW1iZXJfdmFsaWRhdG9yX21lc3NhZ2UnKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tcbiAgICAgICAgICAgIFNreUNlbGxUeXBlLk51bWJlclZhbGlkYXRvclxuICAgICAgICAgIF0uY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yTWVzc2FnZSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFNreUdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNlbGxGb2N1c2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRGb2N1c2VkRWxlbWVudCgpO1xuXG4gICAgdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5mb2N1c09uRm9jdXNhYmxlQ2hpbGRyZW4oY3VycmVudEVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0RWRpdGFibGVHcmlkT3B0aW9ucyhcbiAgICBhcmdzOiBTa3lHZXRHcmlkT3B0aW9uc0FyZ3NcbiAgKTogR3JpZE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9ucyA9IHRoaXMuZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3MpO1xuXG4gICAgZGVmYXVsdEdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9ICdub25lJztcblxuICAgIHJldHVybiBkZWZhdWx0R3JpZE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGRhdGVGb3JtYXR0ZXIoXG4gICAgcGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcyxcbiAgICBsb2NhbGU6IHN0cmluZyA9ICdlbi11cydcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkYXRlQ29uZmlnID0geyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnMi1kaWdpdCcsIGRheTogJzItZGlnaXQnIH07XG4gICAgbGV0IGRhdGU6IERhdGUgPSBwYXJhbXMudmFsdWU7XG5cbiAgICBpZiAoZGF0ZSAmJiB0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShwYXJhbXMudmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPVxuICAgICAgZGF0ZSAmJlxuICAgICAgZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcgJiZcbiAgICAgIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgZGF0ZUNvbmZpZyBhcyBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk7XG5cbiAgICBpZiAoZGF0ZSAmJiBkYXRlLmdldFRpbWUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGVtcGxhdGUoaWNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGA8aSBjbGFzcz1cImZhIGZhLSR7aWNvbk5hbWV9XCI+PC9pPmA7XG4gIH1cblxuICBwcml2YXRlIHN1cHByZXNzVGFiKHBhcmFtczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgaWYgKHBhcmFtcy5ldmVudC5jb2RlID09PSAnVGFiJykge1xuICAgICAgaWYgKHBhcmFtcy5lZGl0aW5nKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRseUZvY3VzZWRFbCA9XG4gICAgICAgICAgdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRGb2N1c2VkRWxlbWVudCgpO1xuICAgICAgICAvLyBpbmxpbmUgY2VsbCBlZGl0b3JzIGhhdmUgdGhlICdhZy1jZWxsJyBjbGFzcywgd2hpbGUgcG9wdXAgZWRpdG9ycyBoYXZlIHRoZSAnYWctcG9wdXAtZWRpdG9yJyBjbGFzc1xuICAgICAgICBjb25zdCBjZWxsRWwgPSB0aGlzLmFnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldEVsZW1lbnRPclBhcmVudFdpdGhDbGFzcyhcbiAgICAgICAgICBjdXJyZW50bHlGb2N1c2VkRWwsXG4gICAgICAgICAgJ2FnLWNlbGwnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBvcHVwRWwgPSB0aGlzLmFnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldEVsZW1lbnRPclBhcmVudFdpdGhDbGFzcyhcbiAgICAgICAgICBjdXJyZW50bHlGb2N1c2VkRWwsXG4gICAgICAgICAgJ2FnLXBvcHVwLWVkaXRvcidcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcGFyZW50RWwgPSBjZWxsRWwgfHwgcG9wdXBFbDtcblxuICAgICAgICBjb25zdCBuZXh0Rm9jdXNhYmxlRWxlbWVudEluQ2VsbCA9XG4gICAgICAgICAgdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXROZXh0Rm9jdXNhYmxlRWxlbWVudChcbiAgICAgICAgICAgIGN1cnJlbnRseUZvY3VzZWRFbCxcbiAgICAgICAgICAgIHBhcmVudEVsLFxuICAgICAgICAgICAgcGFyYW1zLmV2ZW50LnNoaWZ0S2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuICEhbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@skyux/lookup";
|
|
4
|
+
import * as i2 from "@angular/forms";
|
|
5
|
+
import * as i3 from "@skyux/i18n";
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export class SkyAgGridCellEditorAutocompleteComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.skyComponentProperties = {};
|
|
12
|
+
}
|
|
13
|
+
agInit(params) {
|
|
14
|
+
this.params = params;
|
|
15
|
+
this.currentSelection = this.params.value;
|
|
16
|
+
this.columnHeader = this.params.colDef && this.params.colDef.headerName;
|
|
17
|
+
this.rowNumber = this.params.rowIndex + 1;
|
|
18
|
+
this.skyComponentProperties = this.params.skyComponentProperties || {};
|
|
19
|
+
}
|
|
20
|
+
afterGuiAttached() {
|
|
21
|
+
this.input.nativeElement.focus();
|
|
22
|
+
}
|
|
23
|
+
getValue() {
|
|
24
|
+
return this.currentSelection;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
SkyAgGridCellEditorAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
SkyAgGridCellEditorAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyAgGridCellEditorAutocompleteComponent, selector: "sky-ag-grid-cell-editor-autocomplete", viewQueries: [{ propertyName: "input", first: true, predicate: ["skyCellEditorAutocomplete"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"sky-ag-grid-cell-editor-autocomplete\">\n <sky-autocomplete\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n >\n <input\n skyAutocomplete\n #skyCellEditorAutocomplete\n type=\"text\"\n [(ngModel)]=\"currentSelection\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n", styles: ["sky-autocomplete input{border:none;box-shadow:none}\n"], components: [{ type: i1.λ2, selector: "sky-autocomplete", inputs: ["ariaLabelledBy", "data", "debounceTime", "descriptorProperty", "enableShowMore", "messageStream", "wrapperClass", "propertiesToSearch", "search", "searchResultTemplate", "searchTextMinimumCharacters", "searchFilters", "searchResultsLimit", "showAddButton", "noResultsFoundText", "searchAsyncDisabled"], outputs: ["addClick", "showMoreClick", "selectionChange", "searchAsync"] }], directives: [{ type: i1.λ1, selector: "input[skyAutocomplete], textarea[skyAutocomplete]", inputs: ["autocompleteAttribute", "disabled"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorAutocompleteComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'sky-ag-grid-cell-editor-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-ag-grid-cell-editor-autocomplete\">\n <sky-autocomplete\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n >\n <input\n skyAutocomplete\n #skyCellEditorAutocomplete\n type=\"text\"\n [(ngModel)]=\"currentSelection\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n", styles: ["sky-autocomplete input{border:none;box-shadow:none}\n"] }]
|
|
32
|
+
}], propDecorators: { input: [{
|
|
33
|
+
type: ViewChild,
|
|
34
|
+
args: ['skyCellEditorAutocomplete', { read: ElementRef }]
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7Ozs7O0FBT3ZCOztHQUVHO0FBT0gsTUFBTSxPQUFPLHdDQUF3QztJQU5yRDtRQVlTLDJCQUFzQixHQUE4QixFQUFFLENBQUM7S0FxQi9EO0lBZlEsTUFBTSxDQUFDLE1BQXVDO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsSUFBSSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7O3FJQTFCVSx3Q0FBd0M7eUhBQXhDLHdDQUF3QywyS0FTSCxVQUFVLDZCQzlCNUQsOG5DQThCQTsyRkRUYSx3Q0FBd0M7a0JBTnBELFNBQVM7K0JBQ0Usc0NBQXNDLG1CQUcvQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVl4QyxLQUFLO3NCQURYLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi90eXBlcy9hdXRvY29tcGxldGUtcHJvcGVydGllcyc7XG5pbXBvcnQgeyBTa3lDZWxsRWRpdG9yQXV0b2NvbXBsZXRlUGFyYW1zIH0gZnJvbSAnLi4vLi4vdHlwZXMvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLXBhcmFtcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1hZy1ncmlkLWNlbGwtZWRpdG9yLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBJQ2VsbEVkaXRvckFuZ3VsYXJDb21wXG57XG4gIHB1YmxpYyBjdXJyZW50U2VsZWN0aW9uOiBhbnk7XG4gIHB1YmxpYyBjb2x1bW5IZWFkZXI6IHN0cmluZztcbiAgcHVibGljIHJvd051bWJlcjogbnVtYmVyO1xuICBwdWJsaWMgc2t5Q29tcG9uZW50UHJvcGVydGllczogU2t5QXV0b2NvbXBsZXRlUHJvcGVydGllcyA9IHt9O1xuICBwcml2YXRlIHBhcmFtczogU2t5Q2VsbEVkaXRvckF1dG9jb21wbGV0ZVBhcmFtcztcblxuICBAVmlld0NoaWxkKCdza3lDZWxsRWRpdG9yQXV0b2NvbXBsZXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgYWdJbml0KHBhcmFtczogU2t5Q2VsbEVkaXRvckF1dG9jb21wbGV0ZVBhcmFtcykge1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMucGFyYW1zLnZhbHVlO1xuICAgIHRoaXMuY29sdW1uSGVhZGVyID0gdGhpcy5wYXJhbXMuY29sRGVmICYmIHRoaXMucGFyYW1zLmNvbERlZi5oZWFkZXJOYW1lO1xuICAgIHRoaXMucm93TnVtYmVyID0gdGhpcy5wYXJhbXMucm93SW5kZXggKyAxO1xuICAgIHRoaXMuc2t5Q29tcG9uZW50UHJvcGVydGllcyA9IHRoaXMucGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMgfHwge307XG4gIH1cblxuICBwdWJsaWMgYWZ0ZXJHdWlBdHRhY2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZWxlY3Rpb247XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktYWctZ3JpZC1jZWxsLWVkaXRvci1hdXRvY29tcGxldGVcIj5cbiAgPHNreS1hdXRvY29tcGxldGVcbiAgICBbZGF0YV09XCJza3lDb21wb25lbnRQcm9wZXJ0aWVzLmRhdGFcIlxuICAgIFtkZWJvdW5jZVRpbWVdPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5kZWJvdW5jZVRpbWVcIlxuICAgIFtkZXNjcmlwdG9yUHJvcGVydHldPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5kZXNjcmlwdG9yUHJvcGVydHlcIlxuICAgIFtwcm9wZXJ0aWVzVG9TZWFyY2hdPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5wcm9wZXJ0aWVzVG9TZWFyY2hcIlxuICAgIFtzZWFyY2hdPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5zZWFyY2hcIlxuICAgIFtzZWFyY2hGaWx0ZXJzXT1cInNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VhcmNoRmlsdGVyc1wiXG4gICAgW3NlYXJjaFJlc3VsdHNMaW1pdF09XCJza3lDb21wb25lbnRQcm9wZXJ0aWVzLnNlYXJjaFJlc3VsdHNMaW1pdFwiXG4gICAgW3NlYXJjaFJlc3VsdFRlbXBsYXRlXT1cInNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VhcmNoUmVzdWx0VGVtcGxhdGVcIlxuICAgIFtzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNdPVwiXG4gICAgICBza3lDb21wb25lbnRQcm9wZXJ0aWVzLnNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc1xuICAgIFwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJcbiAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VsZWN0aW9uQ2hhbmdlICYmXG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VsZWN0aW9uQ2hhbmdlKCRldmVudClcbiAgICBcIlxuICA+XG4gICAgPGlucHV0XG4gICAgICBza3lBdXRvY29tcGxldGVcbiAgICAgICNza3lDZWxsRWRpdG9yQXV0b2NvbXBsZXRlXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRTZWxlY3Rpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ3NreV9hZ19ncmlkX2NlbGxfZWRpdG9yX2F1dG9jb21wbGV0ZV9hcmlhX2xhYmVsJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb2x1bW5IZWFkZXI6cm93TnVtYmVyXG4gICAgICBcIlxuICAgIC8+XG4gIDwvc2t5LWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { SkyAutocompleteModule } from '@skyux/lookup';
|
|
4
|
+
import { SkyAgGridResourcesModule } from '../../../shared/sky-ag-grid-resources.module';
|
|
5
|
+
import { SkyAgGridCellEditorAutocompleteComponent } from '../cell-editor-autocomplete/cell-editor-autocomplete.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class SkyAgGridCellEditorAutocompleteModule {
|
|
8
|
+
}
|
|
9
|
+
SkyAgGridCellEditorAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
+
SkyAgGridCellEditorAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, declarations: [SkyAgGridCellEditorAutocompleteComponent], imports: [FormsModule, SkyAgGridResourcesModule, SkyAutocompleteModule], exports: [SkyAgGridCellEditorAutocompleteComponent] });
|
|
11
|
+
SkyAgGridCellEditorAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, imports: [[FormsModule, SkyAgGridResourcesModule, SkyAutocompleteModule]] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, decorators: [{
|
|
13
|
+
type: NgModule,
|
|
14
|
+
args: [{
|
|
15
|
+
imports: [FormsModule, SkyAgGridResourcesModule, SkyAutocompleteModule],
|
|
16
|
+
declarations: [SkyAgGridCellEditorAutocompleteComponent],
|
|
17
|
+
exports: [SkyAgGridCellEditorAutocompleteComponent],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sZ0VBQWdFLENBQUM7O0FBTzFILE1BQU0sT0FBTyxxQ0FBcUM7O2tJQUFyQyxxQ0FBcUM7bUlBQXJDLHFDQUFxQyxpQkFIakMsd0NBQXdDLGFBRDdDLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsYUFFNUQsd0NBQXdDO21JQUV2QyxxQ0FBcUMsWUFKdkMsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLENBQUM7MkZBSTVELHFDQUFxQztrQkFMakQsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3ZFLFlBQVksRUFBRSxDQUFDLHdDQUF3QyxDQUFDO29CQUN4RCxPQUFPLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztpQkFDcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAc2t5dXgvbG9va3VwJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NreS1hZy1ncmlkLXJlc291cmNlcy5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvckF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2NlbGwtZWRpdG9yLWF1dG9jb21wbGV0ZS9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBTa3lBZ0dyaWRSZXNvdXJjZXNNb2R1bGUsIFNreUF1dG9jb21wbGV0ZU1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1NreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnRdLFxuICBleHBvcnRzOiBbU2t5QWdHcmlkQ2VsbEVkaXRvckF1dG9jb21wbGV0ZUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "@skyux/autonumeric";
|
|
5
|
+
import * as i3 from "@skyux/i18n";
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export class SkyAgGridCellEditorCurrencyComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.skyComponentProperties = {};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.
|
|
15
|
+
* @param params The cell editor params that include data about the cell, column, row, and grid.
|
|
16
|
+
*/
|
|
17
|
+
agInit(params) {
|
|
18
|
+
this.params = params;
|
|
19
|
+
this.value = this.params.value;
|
|
20
|
+
this.columnHeader = this.params.colDef.headerName;
|
|
21
|
+
this.rowNumber = this.params.rowIndex + 1;
|
|
22
|
+
this.columnWidth = this.params.column.getActualWidth();
|
|
23
|
+
this.rowHeightWithoutBorders =
|
|
24
|
+
this.params.node && this.params.node.rowHeight - 4;
|
|
25
|
+
this.skyComponentProperties = this.params.skyComponentProperties || {
|
|
26
|
+
decimalPlaces: 2,
|
|
27
|
+
currencySymbol: '$',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.
|
|
32
|
+
*/
|
|
33
|
+
afterGuiAttached() {
|
|
34
|
+
this.input.nativeElement.focus();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* getValue is called by agGrid when editing is stopped to get the new value of the cell.
|
|
38
|
+
*/
|
|
39
|
+
getValue() {
|
|
40
|
+
return this.value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
SkyAgGridCellEditorCurrencyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorCurrencyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
SkyAgGridCellEditorCurrencyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyAgGridCellEditorCurrencyComponent, selector: "sky-ag-grid-cell-editor-currency", viewQueries: [{ propertyName: "input", first: true, predicate: ["skyCellEditorCurrency"], descendants: true, read: ElementRef }], ngImport: i0, template: "<input\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n [skyAutonumeric]=\"skyComponentProperties\"\n #skyCellEditorCurrency\n/>\n", styles: ["input{border:none;padding-left:11px}\n"], directives: [{ type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.λ1, selector: "input[skyAutonumeric]", inputs: ["skyAutonumeric"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAgGridCellEditorCurrencyComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'sky-ag-grid-cell-editor-currency', changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader:rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [(ngModel)]=\"value\"\n [skyAutonumeric]=\"skyComponentProperties\"\n #skyCellEditorCurrency\n/>\n", styles: ["input{border:none;padding-left:11px}\n"] }]
|
|
48
|
+
}], propDecorators: { input: [{
|
|
49
|
+
type: ViewChild,
|
|
50
|
+
args: ['skyCellEditorCurrency', { read: ElementRef }]
|
|
51
|
+
}] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1lZGl0b3ItY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWN1cnJlbmN5L2NlbGwtZWRpdG9yLWN1cnJlbmN5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1jdXJyZW5jeS9jZWxsLWVkaXRvci1jdXJyZW5jeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7OztBQU92Qjs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQ0FBb0M7SUFOakQ7UUFVUywyQkFBc0IsR0FBMEIsRUFBRSxDQUFDO0tBMEMzRDtJQS9CQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBbUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUI7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsSUFBSTtZQUNsRSxhQUFhLEVBQUUsQ0FBQztZQUNoQixjQUFjLEVBQUUsR0FBRztTQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7aUlBN0NVLG9DQUFvQztxSEFBcEMsb0NBQW9DLG1LQVlILFVBQVUsNkJDakN4RCx3VkFZQTsyRkRTYSxvQ0FBb0M7a0JBTmhELFNBQVM7K0JBQ0Usa0NBQWtDLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNOzhCQWV2QyxLQUFLO3NCQURaLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7IFNreUNlbGxFZGl0b3JDdXJyZW5jeVBhcmFtcyB9IGZyb20gJy4uLy4uL3R5cGVzL2NlbGwtZWRpdG9yLWN1cnJlbmN5LXBhcmFtcyc7XG5pbXBvcnQgeyBTa3lDdXJyZW5jeVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi90eXBlcy9jdXJyZW5jeS1wcm9wZXJ0aWVzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWFnLWdyaWQtY2VsbC1lZGl0b3ItY3VycmVuY3knLFxuICB0ZW1wbGF0ZVVybDogJy4vY2VsbC1lZGl0b3ItY3VycmVuY3kuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZWxsLWVkaXRvci1jdXJyZW5jeS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkQ2VsbEVkaXRvckN1cnJlbmN5Q29tcG9uZW50XG4gIGltcGxlbWVudHMgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcFxue1xuICBwdWJsaWMgdmFsdWU6IG51bWJlcjtcbiAgcHVibGljIHNreUNvbXBvbmVudFByb3BlcnRpZXM6IFNreUN1cnJlbmN5UHJvcGVydGllcyA9IHt9O1xuICBwdWJsaWMgY29sdW1uSGVhZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBjb2x1bW5XaWR0aDogbnVtYmVyO1xuICBwdWJsaWMgcm93SGVpZ2h0V2l0aG91dEJvcmRlcnM6IG51bWJlcjtcbiAgcHVibGljIHJvd051bWJlcjogbnVtYmVyO1xuXG4gIHByaXZhdGUgcGFyYW1zOiBTa3lDZWxsRWRpdG9yQ3VycmVuY3lQYXJhbXM7XG5cbiAgQFZpZXdDaGlsZCgnc2t5Q2VsbEVkaXRvckN1cnJlbmN5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIGFnSW5pdCBpcyBjYWxsZWQgYnkgYWdHcmlkIG9uY2UgYWZ0ZXIgdGhlIGVkaXRvciBpcyBjcmVhdGVkIGFuZCBwcm92aWRlcyB0aGUgZWRpdG9yIHdpdGggdGhlIGluZm9ybWF0aW9uIGl0IG5lZWRzLlxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBjZWxsIGVkaXRvciBwYXJhbXMgdGhhdCBpbmNsdWRlIGRhdGEgYWJvdXQgdGhlIGNlbGwsIGNvbHVtbiwgcm93LCBhbmQgZ3JpZC5cbiAgICovXG4gIHB1YmxpYyBhZ0luaXQocGFyYW1zOiBTa3lDZWxsRWRpdG9yQ3VycmVuY3lQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJhbXMudmFsdWU7XG4gICAgdGhpcy5jb2x1bW5IZWFkZXIgPSB0aGlzLnBhcmFtcy5jb2xEZWYuaGVhZGVyTmFtZTtcbiAgICB0aGlzLnJvd051bWJlciA9IHRoaXMucGFyYW1zLnJvd0luZGV4ICsgMTtcbiAgICB0aGlzLmNvbHVtbldpZHRoID0gdGhpcy5wYXJhbXMuY29sdW1uLmdldEFjdHVhbFdpZHRoKCk7XG4gICAgdGhpcy5yb3dIZWlnaHRXaXRob3V0Qm9yZGVycyA9XG4gICAgICB0aGlzLnBhcmFtcy5ub2RlICYmIHRoaXMucGFyYW1zLm5vZGUucm93SGVpZ2h0IC0gNDtcbiAgICB0aGlzLnNreUNvbXBvbmVudFByb3BlcnRpZXMgPSB0aGlzLnBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzIHx8IHtcbiAgICAgIGRlY2ltYWxQbGFjZXM6IDIsXG4gICAgICBjdXJyZW5jeVN5bWJvbDogJyQnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogYWZ0ZXJHdWlBdHRhY2hlZCBpcyBjYWxsZWQgYnkgYWdHcmlkIGFmdGVyIHRoZSBlZGl0b3IgaXMgcmVuZGVyZWQgaW4gdGhlIERPTS4gT25jZSBpdCBpcyBhdHRhY2hlZCB0aGUgZWRpdG9yIGlzIHJlYWR5IHRvIGJlIGZvY3VzZWQgb24uXG4gICAqL1xuICBwdWJsaWMgYWZ0ZXJHdWlBdHRhY2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXRWYWx1ZSBpcyBjYWxsZWQgYnkgYWdHcmlkIHdoZW4gZWRpdGluZyBpcyBzdG9wcGVkIHRvIGdldCB0aGUgbmV3IHZhbHVlIG9mIHRoZSBjZWxsLlxuICAgKi9cbiAgcHVibGljIGdldFZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICB0eXBlPVwidGV4dFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgJ3NreV9hZ19ncmlkX2NlbGxfZWRpdG9yX2N1cnJlbmN5X2FyaWFfbGFiZWwnXG4gICAgICB8IHNreUxpYlJlc291cmNlczogY29sdW1uSGVhZGVyOnJvd051bWJlclxuICBcIlxuICBbc3R5bGUud2lkdGgucHhdPVwiY29sdW1uV2lkdGhcIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFdpdGhvdXRCb3JkZXJzXCJcbiAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gIFtza3lBdXRvbnVtZXJpY109XCJza3lDb21wb25lbnRQcm9wZXJ0aWVzXCJcbiAgI3NreUNlbGxFZGl0b3JDdXJyZW5jeVxuLz5cbiJdfQ==
|