@skyux/ag-grid 8.7.0 → 9.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/{esm2020 → esm2022}/lib/modules/ag-grid/ag-grid-adapter.service.mjs +8 -11
  2. package/esm2022/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.mjs +240 -0
  3. package/{esm2020 → esm2022}/lib/modules/ag-grid/ag-grid-row-delete.component.mjs +6 -6
  4. package/esm2022/lib/modules/ag-grid/ag-grid-row-delete.directive.mjs +268 -0
  5. package/esm2022/lib/modules/ag-grid/ag-grid-wrapper.component.mjs +259 -0
  6. package/{esm2020 → esm2022}/lib/modules/ag-grid/ag-grid.module.mjs +51 -51
  7. package/esm2022/lib/modules/ag-grid/ag-grid.service.mjs +457 -0
  8. package/esm2022/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.mjs +72 -0
  9. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.mjs +9 -9
  10. package/esm2022/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.mjs +95 -0
  11. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.mjs +9 -9
  12. package/esm2022/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.mjs +119 -0
  13. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.mjs +5 -5
  14. package/esm2022/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.mjs +109 -0
  15. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.mjs +13 -13
  16. package/esm2022/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.mjs +77 -0
  17. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.mjs +5 -5
  18. package/esm2022/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.mjs +75 -0
  19. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.mjs +5 -5
  20. package/esm2022/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.mjs +42 -0
  21. package/esm2022/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.mjs +49 -0
  22. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.mjs +15 -15
  23. package/esm2022/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.mjs +31 -0
  24. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.mjs +5 -5
  25. package/esm2022/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.mjs +78 -0
  26. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.mjs +5 -5
  27. package/esm2022/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.mjs +38 -0
  28. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.mjs +5 -5
  29. package/esm2022/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.mjs +88 -0
  30. package/{esm2020 → esm2022}/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.mjs +5 -5
  31. package/esm2022/lib/modules/ag-grid/header/header-group.component.mjs +97 -0
  32. package/esm2022/lib/modules/ag-grid/header/header.component.mjs +144 -0
  33. package/{esm2020 → esm2022}/lib/modules/ag-grid/types/header-group-info.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/modules/ag-grid/types/header-info.mjs +4 -4
  35. package/esm2022/lib/modules/shared/sky-ag-grid-resources.module.mjs +74 -0
  36. package/fesm2022/skyux-ag-grid.mjs +3025 -0
  37. package/fesm2022/skyux-ag-grid.mjs.map +1 -0
  38. package/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.d.ts +1 -1
  39. package/lib/modules/ag-grid/ag-grid-row-delete.directive.d.ts +1 -1
  40. package/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.d.ts +1 -1
  41. package/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.d.ts +1 -1
  42. package/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.d.ts +1 -1
  43. package/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.d.ts +1 -1
  44. package/package.json +19 -25
  45. package/esm2020/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.mjs +0 -233
  46. package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.directive.mjs +0 -264
  47. package/esm2020/lib/modules/ag-grid/ag-grid-wrapper.component.mjs +0 -247
  48. package/esm2020/lib/modules/ag-grid/ag-grid.service.mjs +0 -453
  49. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.mjs +0 -75
  50. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.mjs +0 -98
  51. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.mjs +0 -122
  52. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.mjs +0 -112
  53. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.mjs +0 -80
  54. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.mjs +0 -78
  55. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.mjs +0 -45
  56. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.mjs +0 -52
  57. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.mjs +0 -34
  58. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.mjs +0 -80
  59. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.mjs +0 -41
  60. package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.mjs +0 -90
  61. package/esm2020/lib/modules/ag-grid/header/header-group.component.mjs +0 -95
  62. package/esm2020/lib/modules/ag-grid/header/header.component.mjs +0 -141
  63. package/esm2020/lib/modules/shared/sky-ag-grid-resources.module.mjs +0 -74
  64. package/fesm2015/skyux-ag-grid.mjs +0 -2996
  65. package/fesm2015/skyux-ag-grid.mjs.map +0 -1
  66. package/fesm2020/skyux-ag-grid.mjs +0 -3012
  67. package/fesm2020/skyux-ag-grid.mjs.map +0 -1
  68. /package/{esm2020 → esm2022}/index.mjs +0 -0
  69. /package/{esm2020 → esm2022}/lib/modules/ag-grid/apply-lookup-properties-defaults.mjs +0 -0
  70. /package/{esm2020 → esm2022}/lib/modules/ag-grid/icons/icon-map.mjs +0 -0
  71. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.mjs +0 -0
  72. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/ag-grid-row-delete-config.mjs +0 -0
  73. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.mjs +0 -0
  74. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/ag-grid-row-delete-contents.mjs +0 -0
  75. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/autocomplete-properties.mjs +0 -0
  76. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-class.mjs +0 -0
  77. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-autocomplete-params.mjs +0 -0
  78. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-currency-params.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-datepicker-params.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-initial-action.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-lookup-params.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-number-params.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-text-params.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-editor-utils.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-renderer-currency-params.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-renderer-lookup-params.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-renderer-validator-params.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/cell-type.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/currency-properties.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/datepicker-properties.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/header-class.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/header-group-params.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/header-params.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/lookup-properties.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/number-properties.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/sky-grid-options.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/text-properties.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/modules/ag-grid/types/validator-properties.mjs +0 -0
  99. /package/{esm2020 → esm2022}/skyux-ag-grid.mjs +0 -0
@@ -15,5 +15,5 @@ export declare class SkyAgGridDataManagerAdapterDirective implements AfterConten
15
15
  ngAfterContentInit(): void;
16
16
  ngOnDestroy(): void;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAgGridDataManagerAdapterDirective, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<SkyAgGridDataManagerAdapterDirective, "[skyAgGridDataManagerAdapter]", never, { "viewId": "viewId"; }, {}, ["agGridList", "skyAgGridWrapperList"], never, false, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SkyAgGridDataManagerAdapterDirective, "[skyAgGridDataManagerAdapter]", never, { "viewId": { "alias": "viewId"; "required": false; }; }, {}, ["agGridList", "skyAgGridWrapperList"], never, false, never>;
19
19
  }
@@ -34,5 +34,5 @@ export declare class SkyAgGridRowDeleteDirective implements AfterContentInit, Af
34
34
  confirmRowDelete(row: RowNode): void;
35
35
  getRowDeleteItem(row: RowNode): SkyAgGridRowDeleteConfig | undefined;
36
36
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAgGridRowDeleteDirective, [null, null, null, null, null, null, { optional: true; }]>;
37
- static ɵdir: i0.ɵɵDirectiveDeclaration<SkyAgGridRowDeleteDirective, "[skyAgGridRowDelete]", never, { "rowDeleteIds": "rowDeleteIds"; }, { "rowDeleteCancel": "rowDeleteCancel"; "rowDeleteConfirm": "rowDeleteConfirm"; "rowDeleteIdsChange": "rowDeleteIdsChange"; }, ["agGrid"], never, false, never>;
37
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SkyAgGridRowDeleteDirective, "[skyAgGridRowDelete]", never, { "rowDeleteIds": { "alias": "rowDeleteIds"; "required": false; }; }, { "rowDeleteCancel": "rowDeleteCancel"; "rowDeleteConfirm": "rowDeleteConfirm"; "rowDeleteIdsChange": "rowDeleteIdsChange"; }, ["agGrid"], never, false, never>;
38
38
  }
@@ -18,5 +18,5 @@ export declare class SkyAgGridCellRendererCurrencyValidatorComponent implements
18
18
  isNumeric(value: any): boolean;
19
19
  refresh(params: SkyCellRendererCurrencyParams): boolean;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAgGridCellRendererCurrencyValidatorComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellRendererCurrencyValidatorComponent, "sky-ag-grid-cell-renderer-currency-validator", never, { "parameters": "parameters"; }, {}, never, never, false, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellRendererCurrencyValidatorComponent, "sky-ag-grid-cell-renderer-currency-validator", never, { "parameters": { "alias": "parameters"; "required": false; }; }, {}, never, never, false, never>;
22
22
  }
@@ -23,5 +23,5 @@ export declare class SkyAgGridCellRendererCurrencyComponent implements ICellRend
23
23
  agInit(params: SkyCellRendererCurrencyParams): void;
24
24
  refresh(params: SkyCellRendererCurrencyParams): boolean;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAgGridCellRendererCurrencyComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellRendererCurrencyComponent, "sky-ag-grid-cell-renderer-currency", never, { "params": "params"; }, {}, never, never, false, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellRendererCurrencyComponent, "sky-ag-grid-cell-renderer-currency", never, { "params": { "alias": "params"; "required": false; }; }, {}, never, never, false, never>;
27
27
  }
@@ -14,5 +14,5 @@ export declare class SkyAgGridCellRendererValidatorTooltipComponent implements I
14
14
  agInit(params: SkyCellRendererValidatorParams): void;
15
15
  refresh(params: unknown): boolean;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAgGridCellRendererValidatorTooltipComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellRendererValidatorTooltipComponent, "sky-ag-grid-cell-renderer-validator-tooltip", never, { "params": "params"; }, {}, never, never, false, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellRendererValidatorTooltipComponent, "sky-ag-grid-cell-renderer-validator-tooltip", never, { "params": { "alias": "params"; "required": false; }; }, {}, never, never, false, never>;
18
18
  }
@@ -16,5 +16,5 @@ export declare class SkyAgGridCellValidatorTooltipComponent {
16
16
  hidePopover(): void;
17
17
  showPopover(): void;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyAgGridCellValidatorTooltipComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellValidatorTooltipComponent, "sky-ag-grid-cell-validator-tooltip", never, { "params": "params"; }, {}, never, ["*"], false, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkyAgGridCellValidatorTooltipComponent, "sky-ag-grid-cell-validator-tooltip", never, { "params": { "alias": "params"; "required": false; }; }, {}, never, ["*"], false, never>;
20
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyux/ag-grid",
3
- "version": "8.7.0",
3
+ "version": "9.0.0-alpha.0",
4
4
  "author": "Blackbaud, Inc.",
5
5
  "keywords": [
6
6
  "blackbaud",
@@ -21,42 +21,36 @@
21
21
  },
22
22
  ".": {
23
23
  "types": "./index.d.ts",
24
- "esm2020": "./esm2020/skyux-ag-grid.mjs",
25
- "es2020": "./fesm2020/skyux-ag-grid.mjs",
26
- "es2015": "./fesm2015/skyux-ag-grid.mjs",
27
- "node": "./fesm2015/skyux-ag-grid.mjs",
28
- "default": "./fesm2020/skyux-ag-grid.mjs"
24
+ "esm2022": "./esm2022/skyux-ag-grid.mjs",
25
+ "esm": "./esm2022/skyux-ag-grid.mjs",
26
+ "default": "./fesm2022/skyux-ag-grid.mjs"
29
27
  },
30
28
  "./documentation.json": {
31
29
  "default": "./documentation.json"
32
30
  }
33
31
  },
34
32
  "peerDependencies": {
35
- "@angular/common": "^15.2.9",
36
- "@angular/core": "^15.2.9",
37
- "@angular/forms": "^15.2.9",
38
- "@skyux/autonumeric": "8.7.0",
39
- "@skyux/core": "8.7.0",
40
- "@skyux/data-manager": "8.7.0",
41
- "@skyux/datetime": "8.7.0",
42
- "@skyux/forms": "8.7.0",
43
- "@skyux/i18n": "8.7.0",
44
- "@skyux/indicators": "8.7.0",
45
- "@skyux/layout": "8.7.0",
46
- "@skyux/lookup": "8.7.0",
47
- "@skyux/popovers": "8.7.0",
48
- "@skyux/theme": "8.7.0",
33
+ "@angular/common": "^16.1.7",
34
+ "@angular/core": "^16.1.7",
35
+ "@angular/forms": "^16.1.7",
36
+ "@skyux/autonumeric": "9.0.0-alpha.0",
37
+ "@skyux/core": "9.0.0-alpha.0",
38
+ "@skyux/data-manager": "9.0.0-alpha.0",
39
+ "@skyux/datetime": "9.0.0-alpha.0",
40
+ "@skyux/forms": "9.0.0-alpha.0",
41
+ "@skyux/i18n": "9.0.0-alpha.0",
42
+ "@skyux/indicators": "9.0.0-alpha.0",
43
+ "@skyux/layout": "9.0.0-alpha.0",
44
+ "@skyux/lookup": "9.0.0-alpha.0",
45
+ "@skyux/popovers": "9.0.0-alpha.0",
46
+ "@skyux/theme": "9.0.0-alpha.0",
49
47
  "ag-grid-angular": "^28.2.1",
50
48
  "ag-grid-community": "^28.2.1"
51
49
  },
52
50
  "dependencies": {
53
51
  "tslib": "^2.5.0"
54
52
  },
55
- "module": "fesm2015/skyux-ag-grid.mjs",
56
- "es2020": "fesm2020/skyux-ag-grid.mjs",
57
- "esm2020": "esm2020/skyux-ag-grid.mjs",
58
- "fesm2020": "fesm2020/skyux-ag-grid.mjs",
59
- "fesm2015": "fesm2015/skyux-ag-grid.mjs",
53
+ "module": "fesm2022/skyux-ag-grid.mjs",
60
54
  "typings": "index.d.ts",
61
55
  "sideEffects": false
62
56
  }
@@ -1,233 +0,0 @@
1
- var _SkyAgGridDataManagerAdapterDirective_instances, _SkyAgGridDataManagerAdapterDirective_currentAgGrid, _SkyAgGridDataManagerAdapterDirective_currentDataState, _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper, _SkyAgGridDataManagerAdapterDirective_dataStateSub, _SkyAgGridDataManagerAdapterDirective_viewConfig, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, _SkyAgGridDataManagerAdapterDirective_changeDetector, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, _SkyAgGridDataManagerAdapterDirective_checkForAgGrid, _SkyAgGridDataManagerAdapterDirective_checkForSkyAgGridWrapper, _SkyAgGridDataManagerAdapterDirective_unregisterAgGrid, _SkyAgGridDataManagerAdapterDirective_unregisterSkyAgGridWrapper, _SkyAgGridDataManagerAdapterDirective_registerSkyAgGridWrapper, _SkyAgGridDataManagerAdapterDirective_registerAgGrid, _SkyAgGridDataManagerAdapterDirective_updateColumnsInCurrentDataState, _SkyAgGridDataManagerAdapterDirective_getColumnOrder, _SkyAgGridDataManagerAdapterDirective_displayColumns, _SkyAgGridDataManagerAdapterDirective_selectAll, _SkyAgGridDataManagerAdapterDirective_clearAll;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ContentChildren, Directive, Input, } from '@angular/core';
4
- import { AgGridAngular } from 'ag-grid-angular';
5
- import { Subject } from 'rxjs';
6
- import { filter, takeUntil } from 'rxjs/operators';
7
- import { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@skyux/data-manager";
10
- /**
11
- * @internal
12
- */
13
- export class SkyAgGridDataManagerAdapterDirective {
14
- constructor(changeDetector, dataManagerSvc) {
15
- _SkyAgGridDataManagerAdapterDirective_instances.add(this);
16
- _SkyAgGridDataManagerAdapterDirective_currentAgGrid.set(this, void 0);
17
- _SkyAgGridDataManagerAdapterDirective_currentDataState.set(this, void 0);
18
- _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper.set(this, void 0);
19
- _SkyAgGridDataManagerAdapterDirective_dataStateSub.set(this, void 0);
20
- _SkyAgGridDataManagerAdapterDirective_viewConfig.set(this, void 0);
21
- _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe.set(this, new Subject());
22
- _SkyAgGridDataManagerAdapterDirective_changeDetector.set(this, void 0);
23
- _SkyAgGridDataManagerAdapterDirective_dataManagerSvc.set(this, void 0);
24
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_changeDetector, changeDetector, "f");
25
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, dataManagerSvc, "f");
26
- }
27
- ngAfterContentInit() {
28
- if (this.viewId) {
29
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").setViewkeeperClasses(this.viewId, ['.ag-header']);
30
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").getViewById(this.viewId), "f");
31
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_checkForAgGrid).call(this);
32
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_checkForSkyAgGridWrapper).call(this);
33
- this.agGridList?.changes
34
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f")))
35
- .subscribe(() => __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_checkForAgGrid).call(this));
36
- this.skyAgGridWrapperList?.changes
37
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f")))
38
- .subscribe(() => __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_checkForSkyAgGridWrapper).call(this));
39
- }
40
- }
41
- ngOnDestroy() {
42
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f").next();
43
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f").complete();
44
- }
45
- }
46
- _SkyAgGridDataManagerAdapterDirective_currentAgGrid = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_currentDataState = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_dataStateSub = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_viewConfig = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_changeDetector = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_dataManagerSvc = new WeakMap(), _SkyAgGridDataManagerAdapterDirective_instances = new WeakSet(), _SkyAgGridDataManagerAdapterDirective_checkForAgGrid = function _SkyAgGridDataManagerAdapterDirective_checkForAgGrid() {
47
- if (this.agGridList) {
48
- const agGridCount = this.agGridList.length;
49
- /* istanbul ignore else */
50
- if (agGridCount === 0) {
51
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_unregisterAgGrid).call(this);
52
- }
53
- else if (this.agGridList.first !== __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentAgGrid, "f")) {
54
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_registerAgGrid).call(this);
55
- }
56
- if (agGridCount > 1) {
57
- console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
58
- }
59
- }
60
- }, _SkyAgGridDataManagerAdapterDirective_checkForSkyAgGridWrapper = function _SkyAgGridDataManagerAdapterDirective_checkForSkyAgGridWrapper() {
61
- if (this.skyAgGridWrapperList) {
62
- const skyAgGridWrapperCount = this.skyAgGridWrapperList.length;
63
- /* istanbul ignore else */
64
- if (skyAgGridWrapperCount === 0) {
65
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_unregisterSkyAgGridWrapper).call(this);
66
- }
67
- else if (this.skyAgGridWrapperList.first !== __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper, "f")) {
68
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_registerSkyAgGridWrapper).call(this);
69
- }
70
- if (skyAgGridWrapperCount > 1) {
71
- console.warn('More than one ag-grid child component was found. Using the first ag-Grid.');
72
- }
73
- }
74
- }, _SkyAgGridDataManagerAdapterDirective_unregisterAgGrid = function _SkyAgGridDataManagerAdapterDirective_unregisterAgGrid() {
75
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_currentAgGrid, undefined, "f");
76
- /* istanbul ignore if */
77
- if (__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataStateSub, "f")) {
78
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataStateSub, "f").unsubscribe();
79
- }
80
- }, _SkyAgGridDataManagerAdapterDirective_unregisterSkyAgGridWrapper = function _SkyAgGridDataManagerAdapterDirective_unregisterSkyAgGridWrapper() {
81
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper, undefined, "f");
82
- }, _SkyAgGridDataManagerAdapterDirective_registerSkyAgGridWrapper = function _SkyAgGridDataManagerAdapterDirective_registerSkyAgGridWrapper() {
83
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_unregisterSkyAgGridWrapper).call(this);
84
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper, this.skyAgGridWrapperList?.first, "f");
85
- setTimeout(() => {
86
- if (__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper, "f")) {
87
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentSkyAgGridWrapper, "f").viewkeeperClasses = [];
88
- }
89
- });
90
- }, _SkyAgGridDataManagerAdapterDirective_registerAgGrid = function _SkyAgGridDataManagerAdapterDirective_registerAgGrid() {
91
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_unregisterAgGrid).call(this);
92
- const agGrid = this.agGridList?.first;
93
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_currentAgGrid, agGrid, "f");
94
- if (agGrid) {
95
- agGrid.gridReady.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f"))).subscribe(() => {
96
- if (__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f") && this.viewId) {
97
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").onSelectAllClick = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_selectAll).bind(this);
98
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").onClearAllClick = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_clearAll).bind(this);
99
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").updateViewConfig(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f"));
100
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_dataStateSub, __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f")
101
- .getDataStateUpdates(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id)
102
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f")))
103
- .subscribe((dataState) => {
104
- __classPrivateFieldSet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, dataState, "f");
105
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_displayColumns).call(this, dataState);
106
- }), "f");
107
- if (agGrid.gridOptions.context?.enableTopScroll) {
108
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").setViewkeeperClasses(this.viewId, [
109
- '.ag-header',
110
- '.ag-body-horizontal-scroll',
111
- ]);
112
- }
113
- agGrid.api.sizeColumnsToFit();
114
- }
115
- });
116
- agGrid.columnMoved
117
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f")), filter((event) => ![
118
- 'gridInitializing',
119
- 'uiColumnResized',
120
- 'uiColumnDragged',
121
- 'api',
122
- ].includes(event.source)))
123
- .subscribe((value) => {
124
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_updateColumnsInCurrentDataState).call(this, value.columnApi);
125
- });
126
- agGrid.dragStopped
127
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f")))
128
- .subscribe((value) => {
129
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_updateColumnsInCurrentDataState).call(this, value.columnApi);
130
- });
131
- agGrid.rowSelected
132
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f")))
133
- .subscribe((event) => {
134
- if (__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f") && __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f")) {
135
- const row = event.node;
136
- const selectedIds = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f").selectedIds || [];
137
- const rowIndex = selectedIds.indexOf(row.data.id);
138
- if (row.isSelected() && rowIndex === -1) {
139
- selectedIds.push(row.data.id);
140
- }
141
- else if (!row.isSelected() && rowIndex !== -1) {
142
- selectedIds.splice(rowIndex, 1);
143
- }
144
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f").selectedIds = selectedIds;
145
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").updateDataState(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f"), __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id);
146
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_changeDetector, "f").markForCheck();
147
- }
148
- });
149
- agGrid.sortChanged.pipe(takeUntil(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_ngUnsubscribe, "f"))).subscribe(() => {
150
- const gridColumnStates = agGrid.columnApi.getColumnState();
151
- let sortOption;
152
- /* istanbul ignore else */
153
- if (gridColumnStates.length) {
154
- const activeSortColumnState = gridColumnStates.find((aGridColumnState) => aGridColumnState.sortIndex === 0);
155
- const dataManagerConfig = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").getCurrentDataManagerConfig();
156
- /* istanbul ignore else */
157
- if (dataManagerConfig.sortOptions && activeSortColumnState) {
158
- sortOption = dataManagerConfig.sortOptions.find((option) => {
159
- return (option.propertyName === activeSortColumnState.colId &&
160
- option.descending === (activeSortColumnState.sort === 'desc'));
161
- });
162
- }
163
- else {
164
- sortOption = undefined;
165
- }
166
- }
167
- if (__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f") && __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f")) {
168
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f").activeSortOption = sortOption;
169
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").updateDataState(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f"), __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id);
170
- }
171
- });
172
- }
173
- }, _SkyAgGridDataManagerAdapterDirective_updateColumnsInCurrentDataState = function _SkyAgGridDataManagerAdapterDirective_updateColumnsInCurrentDataState(columnApi) {
174
- if (__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f") && __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f")) {
175
- const columnOrder = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_getColumnOrder).call(this, columnApi);
176
- const viewState = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f").getViewStateById(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id);
177
- if (viewState &&
178
- (viewState.displayedColumnIds.length !== columnOrder.length ||
179
- viewState.displayedColumnIds.some((col, i) => col !== columnOrder[i]))) {
180
- viewState.displayedColumnIds = columnOrder;
181
- __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_dataManagerSvc, "f").updateDataState(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentDataState, "f").addOrUpdateView(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id, viewState), __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id);
182
- }
183
- }
184
- }, _SkyAgGridDataManagerAdapterDirective_getColumnOrder = function _SkyAgGridDataManagerAdapterDirective_getColumnOrder(columnApi) {
185
- return columnApi
186
- .getColumnState()
187
- .filter((state) => !state.hide)
188
- .map((state) => state.colId);
189
- }, _SkyAgGridDataManagerAdapterDirective_displayColumns = function _SkyAgGridDataManagerAdapterDirective_displayColumns(dataState) {
190
- const agGrid = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_currentAgGrid, "f");
191
- if (agGrid && __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f")) {
192
- const viewState = dataState.getViewStateById(__classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_viewConfig, "f").id);
193
- let displayedColumnIds = [];
194
- /*istanbul ignore else*/
195
- if (viewState?.displayedColumnIds) {
196
- displayedColumnIds = viewState.displayedColumnIds;
197
- }
198
- const columnOrder = __classPrivateFieldGet(this, _SkyAgGridDataManagerAdapterDirective_instances, "m", _SkyAgGridDataManagerAdapterDirective_getColumnOrder).call(this, agGrid.columnApi);
199
- if (displayedColumnIds.length !== columnOrder.length ||
200
- displayedColumnIds.some((col, i) => col !== columnOrder[i])) {
201
- const hideColumns = agGrid.columnApi
202
- .getColumnState()
203
- .map((col) => col.colId)
204
- .filter((colId) => !displayedColumnIds.includes(colId));
205
- agGrid.columnApi.setColumnsVisible(hideColumns, false);
206
- agGrid.columnApi.setColumnsVisible(displayedColumnIds, true);
207
- agGrid.columnApi.moveColumns(displayedColumnIds, 0);
208
- }
209
- }
210
- }, _SkyAgGridDataManagerAdapterDirective_selectAll = function _SkyAgGridDataManagerAdapterDirective_selectAll() {
211
- const agGrid = this.agGridList?.first;
212
- agGrid?.api.selectAll();
213
- }, _SkyAgGridDataManagerAdapterDirective_clearAll = function _SkyAgGridDataManagerAdapterDirective_clearAll() {
214
- const agGrid = this.agGridList?.first;
215
- agGrid?.api.deselectAll();
216
- };
217
- SkyAgGridDataManagerAdapterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAgGridDataManagerAdapterDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDataManagerService }], target: i0.ɵɵFactoryTarget.Directive });
218
- SkyAgGridDataManagerAdapterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyAgGridDataManagerAdapterDirective, selector: "[skyAgGridDataManagerAdapter]", inputs: { viewId: "viewId" }, queries: [{ propertyName: "agGridList", predicate: AgGridAngular, descendants: true }, { propertyName: "skyAgGridWrapperList", predicate: SkyAgGridWrapperComponent, descendants: true }], ngImport: i0 });
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAgGridDataManagerAdapterDirective, decorators: [{
220
- type: Directive,
221
- args: [{
222
- selector: '[skyAgGridDataManagerAdapter]',
223
- }]
224
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDataManagerService }]; }, propDecorators: { viewId: [{
225
- type: Input
226
- }], agGridList: [{
227
- type: ContentChildren,
228
- args: [AgGridAngular, { descendants: true }]
229
- }], skyAgGridWrapperList: [{
230
- type: ContentChildren,
231
- args: [SkyAgGridWrapperComponent, { descendants: true }]
232
- }] } });
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYWctZ3JpZC9zcmMvbGliL21vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFHTCxlQUFlLEVBQ2YsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQVF2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRaEQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXhFOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9DQUFvQztJQXFCL0MsWUFDRSxjQUFpQyxFQUNqQyxjQUFxQzs7UUFYdkMsc0VBQTBDO1FBQzFDLHlFQUFtRDtRQUNuRCxnRkFBZ0U7UUFDaEUscUVBQXdDO1FBQ3hDLG1FQUEyQztRQUMzQyw4REFBaUIsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUNyQyx1RUFBbUM7UUFDbkMsdUVBQXVDO1FBTXJDLHVCQUFBLElBQUksd0RBQW1CLGNBQWMsTUFBQSxDQUFDO1FBQ3RDLHVCQUFBLElBQUksd0RBQW1CLGNBQWMsTUFBQSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsdUJBQUEsSUFBSSw0REFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN2RSx1QkFBQSxJQUFJ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QUM7SUFDdEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM1QixDQUFDO2lJQW5UVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQyw4SEFNOUIsYUFBYSwwRUFHYix5QkFBeUI7MkZBVC9CLG9DQUFvQztrQkFIaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQzs0SUFLUSxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsZUFBZTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxvQkFBb0I7c0JBRDFCLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24sXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29uZmlnLFxufSBmcm9tICdAc2t5dXgvZGF0YS1tYW5hZ2VyJztcblxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb2x1bW5BcGksXG4gIENvbHVtbk1vdmVkRXZlbnQsXG4gIENvbHVtblN0YXRlLFxuICBEcmFnU3RvcHBlZEV2ZW50LFxuICBSb3dTZWxlY3RlZEV2ZW50LFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWdHcmlkQW5ndWxhciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgYWdHcmlkTGlzdDogUXVlcnlMaXN0PEFnR3JpZEFuZ3VsYXI+IHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgc2t5QWdHcmlkV3JhcHBlckxpc3Q6IFF1ZXJ5TGlzdDxTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEFnR3JpZDogQWdHcmlkQW5ndWxhciB8IHVuZGVmaW5lZDtcbiAgI2N1cnJlbnREYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUgfCB1bmRlZmluZWQ7XG4gICNjdXJyZW50U2t5QWdHcmlkV3JhcHBlcjogU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgI2RhdGFTdGF0ZVN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAjdmlld0NvbmZpZzogU2t5RGF0YVZpZXdDb25maWcgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2RhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGRhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNkYXRhTWFuYWdlclN2YyA9IGRhdGFNYW5hZ2VyU3ZjO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3SWQpIHtcbiAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnNldFZpZXdrZWVwZXJDbGFzc2VzKHRoaXMudmlld0lkLCBbJy5hZy1oZWFkZXInXSk7XG4gICAgICB0aGlzLiN2aWV3Q29uZmlnID0gdGhpcy4jZGF0YU1hbmFnZXJTdmMuZ2V0Vmlld0J5SWQodGhpcy52aWV3SWQpO1xuXG4gICAgICB0aGlzLiNjaGVja0ZvckFnR3JpZCgpO1xuICAgICAgdGhpcy4jY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICAgIHRoaXMuYWdHcmlkTGlzdD8uY2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy4jY2hlY2tGb3JBZ0dyaWQoKSk7XG5cbiAgICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3Q/LmNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuI2NoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2NoZWNrRm9yQWdHcmlkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFnR3JpZExpc3QpIHtcbiAgICAgIGNvbnN0IGFnR3JpZENvdW50ID0gdGhpcy5hZ0dyaWRMaXN0Lmxlbmd0aDtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgICB0aGlzLiN1bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYWdHcmlkTGlzdC5maXJzdCAhPT0gdGhpcy4jY3VycmVudEFnR3JpZCkge1xuICAgICAgICB0aGlzLiNyZWdpc3RlckFnR3JpZCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWdHcmlkQ291bnQgPiAxKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0KSB7XG4gICAgICBjb25zdCBza3lBZ0dyaWRXcmFwcGVyQ291bnQgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0Lmxlbmd0aDtcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPT09IDApIHtcbiAgICAgICAgdGhpcy4jdW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3QgIT09IHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyXG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jcmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPiAxKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdW5yZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjdXJyZW50QWdHcmlkID0gdW5kZWZpbmVkO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMuI2RhdGFTdGF0ZVN1Yikge1xuICAgICAgdGhpcy4jZGF0YVN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgI3VucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgI3JlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLiN1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIHRoaXMuI2N1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdD8uZmlyc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLiNjdXJyZW50U2t5QWdHcmlkV3JhcHBlcikge1xuICAgICAgICB0aGlzLiNjdXJyZW50U2t5QWdHcmlkV3JhcHBlci52aWV3a2VlcGVyQ2xhc3NlcyA9IFtdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI3JlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuI3VucmVnaXN0ZXJBZ0dyaWQoKTtcblxuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdD8uZmlyc3Q7XG5cbiAgICB0aGlzLiNjdXJyZW50QWdHcmlkID0gYWdHcmlkO1xuXG4gICAgaWYgKGFnR3JpZCkge1xuICAgICAgYWdHcmlkLmdyaWRSZWFkeS5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuI3ZpZXdDb25maWcgJiYgdGhpcy52aWV3SWQpIHtcbiAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLm9uU2VsZWN0QWxsQ2xpY2sgPSB0aGlzLiNzZWxlY3RBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLm9uQ2xlYXJBbGxDbGljayA9IHRoaXMuI2NsZWFyQWxsLmJpbmQodGhpcyk7XG4gICAgICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMudXBkYXRlVmlld0NvbmZpZyh0aGlzLiN2aWV3Q29uZmlnKTtcbiAgICAgICAgICB0aGlzLiNkYXRhU3RhdGVTdWIgPSB0aGlzLiNkYXRhTWFuYWdlclN2Y1xuICAgICAgICAgICAgLmdldERhdGFTdGF0ZVVwZGF0ZXModGhpcy4jdmlld0NvbmZpZy5pZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlID0gZGF0YVN0YXRlO1xuICAgICAgICAgICAgICB0aGlzLiNkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoYWdHcmlkLmdyaWRPcHRpb25zLmNvbnRleHQ/LmVuYWJsZVRvcFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMuc2V0Vmlld2tlZXBlckNsYXNzZXModGhpcy52aWV3SWQsIFtcbiAgICAgICAgICAgICAgJy5hZy1oZWFkZXInLFxuICAgICAgICAgICAgICAnLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwnLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYWdHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuY29sdW1uTW92ZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgIChldmVudDogQ29sdW1uTW92ZWRFdmVudCkgPT5cbiAgICAgICAgICAgICAgIVtcbiAgICAgICAgICAgICAgICAnZ3JpZEluaXRpYWxpemluZycsXG4gICAgICAgICAgICAgICAgJ3VpQ29sdW1uUmVzaXplZCcsXG4gICAgICAgICAgICAgICAgJ3VpQ29sdW1uRHJhZ2dlZCcsXG4gICAgICAgICAgICAgICAgJ2FwaScsXG4gICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQuc291cmNlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3VwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGFnR3JpZC5kcmFnU3RvcHBlZFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RvcHBlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZSh2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgICB9KTtcblxuICAgICAgYWdHcmlkLnJvd1NlbGVjdGVkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJvd1NlbGVjdGVkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy4jdmlld0NvbmZpZyAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlKSB7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBldmVudC5ub2RlO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzIHx8IFtdO1xuICAgICAgICAgICAgY29uc3Qgcm93SW5kZXggPSBzZWxlY3RlZElkcy5pbmRleE9mKHJvdy5kYXRhLmlkKTtcblxuICAgICAgICAgICAgaWYgKHJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkSWRzLnB1c2gocm93LmRhdGEuaWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJZHMuc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy4jY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyA9IHNlbGVjdGVkSWRzO1xuICAgICAgICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLFxuICAgICAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLmlkXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuc29ydENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWRDb2x1bW5TdGF0ZXM6IENvbHVtblN0YXRlW10gPVxuICAgICAgICAgIGFnR3JpZC5jb2x1bW5BcGkuZ2V0Q29sdW1uU3RhdGUoKTtcblxuICAgICAgICBsZXQgc29ydE9wdGlvbjogU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChncmlkQ29sdW1uU3RhdGVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZSA9IGdyaWRDb2x1bW5TdGF0ZXMuZmluZChcbiAgICAgICAgICAgIChhR3JpZENvbHVtblN0YXRlKSA9PiBhR3JpZENvbHVtblN0YXRlLnNvcnRJbmRleCA9PT0gMFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBkYXRhTWFuYWdlckNvbmZpZyA9XG4gICAgICAgICAgICB0aGlzLiNkYXRhTWFuYWdlclN2Yy5nZXRDdXJyZW50RGF0YU1hbmFnZXJDb25maWcoKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zICYmIGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZSkge1xuICAgICAgICAgICAgc29ydE9wdGlvbiA9IGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChvcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICBvcHRpb24ucHJvcGVydHlOYW1lID09PSBhY3RpdmVTb3J0Q29sdW1uU3RhdGUuY29sSWQgJiZcbiAgICAgICAgICAgICAgICAgIG9wdGlvbi5kZXNjZW5kaW5nID09PSAoYWN0aXZlU29ydENvbHVtblN0YXRlLnNvcnQgPT09ICdkZXNjJylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0T3B0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLiN2aWV3Q29uZmlnICYmIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLmFjdGl2ZVNvcnRPcHRpb24gPSBzb3J0T3B0aW9uO1xuICAgICAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICAgIHRoaXMuI2N1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgICAgICB0aGlzLiN2aWV3Q29uZmlnLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUoY29sdW1uQXBpOiBDb2x1bW5BcGkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jdmlld0NvbmZpZyAmJiB0aGlzLiNjdXJyZW50RGF0YVN0YXRlKSB7XG4gICAgICBjb25zdCBjb2x1bW5PcmRlciA9IHRoaXMuI2dldENvbHVtbk9yZGVyKGNvbHVtbkFwaSk7XG5cbiAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuI2N1cnJlbnREYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZChcbiAgICAgICAgdGhpcy4jdmlld0NvbmZpZy5pZFxuICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICB2aWV3U3RhdGUgJiZcbiAgICAgICAgKHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMubGVuZ3RoICE9PSBjb2x1bW5PcmRlci5sZW5ndGggfHxcbiAgICAgICAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzLnNvbWUoKGNvbCwgaSkgPT4gY29sICE9PSBjb2x1bW5PcmRlcltpXSkpXG4gICAgICApIHtcbiAgICAgICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcyA9IGNvbHVtbk9yZGVyO1xuXG4gICAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyhcbiAgICAgICAgICAgIHRoaXMuI3ZpZXdDb25maWcuaWQsXG4gICAgICAgICAgICB2aWV3U3RhdGVcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuI3ZpZXdDb25maWcuaWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZ2V0Q29sdW1uT3JkZXIoY29sdW1uQXBpOiBDb2x1bW5BcGkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGNvbHVtbkFwaVxuICAgICAgLmdldENvbHVtblN0YXRlKClcbiAgICAgIC5maWx0ZXIoKHN0YXRlKSA9PiAhc3RhdGUuaGlkZSlcbiAgICAgIC5tYXAoKHN0YXRlKSA9PiBzdGF0ZS5jb2xJZCk7XG4gIH1cblxuICAjZGlzcGxheUNvbHVtbnMoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy4jY3VycmVudEFnR3JpZDtcblxuICAgIGlmIChhZ0dyaWQgJiYgdGhpcy4jdmlld0NvbmZpZykge1xuICAgICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy4jdmlld0NvbmZpZy5pZCk7XG4gICAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmICh2aWV3U3RhdGU/LmRpc3BsYXllZENvbHVtbklkcykge1xuICAgICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb2x1bW5PcmRlciA9IHRoaXMuI2dldENvbHVtbk9yZGVyKGFnR3JpZC5jb2x1bW5BcGkpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGRpc3BsYXllZENvbHVtbklkcy5sZW5ndGggIT09IGNvbHVtbk9yZGVyLmxlbmd0aCB8fFxuICAgICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMuc29tZSgoY29sLCBpKSA9PiBjb2wgIT09IGNvbHVtbk9yZGVyW2ldKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGhpZGVDb2x1bW5zID0gYWdHcmlkLmNvbHVtbkFwaVxuICAgICAgICAgIC5nZXRDb2x1bW5TdGF0ZSgpXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuY29sSWQpXG4gICAgICAgICAgLmZpbHRlcigoY29sSWQpID0+ICFkaXNwbGF5ZWRDb2x1bW5JZHMuaW5jbHVkZXMoY29sSWQpKTtcblxuICAgICAgICBhZ0dyaWQuY29sdW1uQXBpLnNldENvbHVtbnNWaXNpYmxlKGhpZGVDb2x1bW5zLCBmYWxzZSk7XG4gICAgICAgIGFnR3JpZC5jb2x1bW5BcGkuc2V0Q29sdW1uc1Zpc2libGUoZGlzcGxheWVkQ29sdW1uSWRzLCB0cnVlKTtcbiAgICAgICAgYWdHcmlkLmNvbHVtbkFwaS5tb3ZlQ29sdW1ucyhkaXNwbGF5ZWRDb2x1bW5JZHMsIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0Py5maXJzdDtcbiAgICBhZ0dyaWQ/LmFwaS5zZWxlY3RBbGwoKTtcbiAgfVxuXG4gICNjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3Q/LmZpcnN0O1xuICAgIGFnR3JpZD8uYXBpLmRlc2VsZWN0QWxsKCk7XG4gIH1cbn1cbiJdfQ==