@skyux/ag-grid 5.9.4 → 6.0.0-beta.10

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 (186) hide show
  1. package/css/sky-ag-grid.css +693 -126
  2. package/documentation.json +325 -338
  3. package/esm2020/index.mjs +35 -0
  4. package/esm2020/lib/modules/ag-grid/ag-grid-adapter.service.mjs +55 -0
  5. package/esm2020/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.mjs +212 -0
  6. package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.component.mjs +77 -0
  7. package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.directive.mjs +220 -0
  8. package/esm2020/lib/modules/ag-grid/ag-grid-wrapper.component.mjs +96 -0
  9. package/esm2020/lib/modules/ag-grid/ag-grid.module.mjs +101 -0
  10. package/esm2020/lib/modules/ag-grid/ag-grid.service.mjs +424 -0
  11. package/esm2020/lib/modules/ag-grid/apply-lookup-properties-defaults.mjs +29 -0
  12. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.mjs +36 -0
  13. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.mjs +20 -0
  14. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.mjs +59 -0
  15. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.mjs +20 -0
  16. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.mjs +70 -0
  17. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.mjs +19 -0
  18. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.mjs +79 -0
  19. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.mjs +38 -0
  20. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.mjs +46 -0
  21. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.mjs +19 -0
  22. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.mjs +45 -0
  23. package/esm2020/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.mjs +19 -0
  24. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.mjs +39 -0
  25. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.mjs +48 -0
  26. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.mjs +47 -0
  27. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.mjs +30 -0
  28. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.mjs +19 -0
  29. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.mjs +62 -0
  30. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.mjs +20 -0
  31. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.mjs +36 -0
  32. package/esm2020/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.mjs +18 -0
  33. package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.mjs +85 -0
  34. package/esm2020/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.mjs +20 -0
  35. package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.mjs +2 -0
  36. package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-config.mjs +2 -0
  37. package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.mjs +2 -0
  38. package/esm2020/lib/modules/ag-grid/types/ag-grid-row-delete-contents.mjs +2 -0
  39. package/esm2020/lib/modules/ag-grid/types/autocomplete-properties.mjs +2 -0
  40. package/esm2020/lib/modules/ag-grid/types/cell-class.mjs +17 -0
  41. package/esm2020/lib/modules/ag-grid/types/cell-editor-autocomplete-params.mjs +2 -0
  42. package/esm2020/lib/modules/ag-grid/types/cell-editor-currency-params.mjs +2 -0
  43. package/esm2020/lib/modules/ag-grid/types/cell-editor-datepicker-params.mjs +2 -0
  44. package/esm2020/lib/modules/ag-grid/types/cell-editor-lookup-params.mjs +2 -0
  45. package/esm2020/lib/modules/ag-grid/types/cell-editor-number-params.mjs +2 -0
  46. package/esm2020/lib/modules/ag-grid/types/cell-editor-text-params.mjs +2 -0
  47. package/esm2020/lib/modules/ag-grid/types/cell-renderer-currency-params.mjs +2 -0
  48. package/esm2020/lib/modules/ag-grid/types/cell-renderer-lookup-params.mjs +2 -0
  49. package/esm2020/lib/modules/ag-grid/types/cell-renderer-validator-params.mjs +2 -0
  50. package/esm2020/lib/modules/ag-grid/types/cell-type.mjs +93 -0
  51. package/esm2020/lib/modules/ag-grid/types/currency-properties.mjs +2 -0
  52. package/esm2020/lib/modules/ag-grid/types/datepicker-properties.mjs +2 -0
  53. package/esm2020/lib/modules/ag-grid/types/header-class.mjs +8 -0
  54. package/esm2020/lib/modules/ag-grid/types/lookup-properties.mjs +2 -0
  55. package/esm2020/lib/modules/ag-grid/types/number-properties.mjs +2 -0
  56. package/esm2020/lib/modules/ag-grid/types/sky-grid-options.mjs +2 -0
  57. package/esm2020/lib/modules/ag-grid/types/text-properties.mjs +2 -0
  58. package/esm2020/lib/modules/ag-grid/types/validator-properties.mjs +2 -0
  59. package/esm2020/lib/modules/shared/sky-ag-grid-resources.module.mjs +71 -0
  60. package/esm2020/skyux-ag-grid.mjs +5 -0
  61. package/fesm2015/{skyux-ag-grid.js → skyux-ag-grid.mjs} +202 -274
  62. package/fesm2015/skyux-ag-grid.mjs.map +1 -0
  63. package/fesm2020/skyux-ag-grid.mjs +2130 -0
  64. package/fesm2020/skyux-ag-grid.mjs.map +1 -0
  65. package/lib/modules/ag-grid/ag-grid-row-delete.directive.d.ts +2 -3
  66. package/lib/modules/ag-grid/ag-grid.service.d.ts +1 -0
  67. package/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.d.ts +0 -1
  68. package/package.json +38 -22
  69. package/bundles/skyux-ag-grid.umd.js +0 -2612
  70. package/esm2015/index.js +0 -35
  71. package/esm2015/index.js.map +0 -1
  72. package/esm2015/lib/modules/ag-grid/ag-grid-adapter.service.js +0 -55
  73. package/esm2015/lib/modules/ag-grid/ag-grid-adapter.service.js.map +0 -1
  74. package/esm2015/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.js +0 -212
  75. package/esm2015/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.js.map +0 -1
  76. package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.component.js +0 -77
  77. package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.component.js.map +0 -1
  78. package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.directive.js +0 -227
  79. package/esm2015/lib/modules/ag-grid/ag-grid-row-delete.directive.js.map +0 -1
  80. package/esm2015/lib/modules/ag-grid/ag-grid-wrapper.component.js +0 -100
  81. package/esm2015/lib/modules/ag-grid/ag-grid-wrapper.component.js.map +0 -1
  82. package/esm2015/lib/modules/ag-grid/ag-grid.module.js +0 -122
  83. package/esm2015/lib/modules/ag-grid/ag-grid.module.js.map +0 -1
  84. package/esm2015/lib/modules/ag-grid/ag-grid.service.js +0 -357
  85. package/esm2015/lib/modules/ag-grid/ag-grid.service.js.map +0 -1
  86. package/esm2015/lib/modules/ag-grid/apply-lookup-properties-defaults.js +0 -29
  87. package/esm2015/lib/modules/ag-grid/apply-lookup-properties-defaults.js.map +0 -1
  88. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.js +0 -41
  89. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.js.map +0 -1
  90. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.js +0 -20
  91. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.module.js.map +0 -1
  92. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.js +0 -64
  93. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.js.map +0 -1
  94. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.js +0 -20
  95. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.module.js.map +0 -1
  96. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.js +0 -77
  97. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.js.map +0 -1
  98. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.js +0 -19
  99. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.module.js.map +0 -1
  100. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.js +0 -85
  101. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.js.map +0 -1
  102. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.js +0 -38
  103. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.module.js.map +0 -1
  104. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.js +0 -52
  105. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.js.map +0 -1
  106. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.js +0 -19
  107. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.module.js.map +0 -1
  108. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.js +0 -51
  109. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.js.map +0 -1
  110. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.js +0 -19
  111. package/esm2015/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.module.js.map +0 -1
  112. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.js +0 -43
  113. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.js.map +0 -1
  114. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.js +0 -54
  115. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.js.map +0 -1
  116. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.js +0 -47
  117. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.module.js.map +0 -1
  118. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.js +0 -38
  119. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.js.map +0 -1
  120. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.js +0 -19
  121. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.module.js.map +0 -1
  122. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.js +0 -68
  123. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.js.map +0 -1
  124. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.js +0 -20
  125. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.module.js.map +0 -1
  126. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.js +0 -41
  127. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.js.map +0 -1
  128. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.js +0 -18
  129. package/esm2015/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.module.js.map +0 -1
  130. package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.js +0 -90
  131. package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.js.map +0 -1
  132. package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.js +0 -20
  133. package/esm2015/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator.module.js.map +0 -1
  134. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.js +0 -2
  135. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args.js.map +0 -1
  136. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-config.js +0 -2
  137. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-config.js.map +0 -1
  138. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.js +0 -2
  139. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args.js.map +0 -1
  140. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-contents.js +0 -2
  141. package/esm2015/lib/modules/ag-grid/types/ag-grid-row-delete-contents.js.map +0 -1
  142. package/esm2015/lib/modules/ag-grid/types/autocomplete-properties.js +0 -2
  143. package/esm2015/lib/modules/ag-grid/types/autocomplete-properties.js.map +0 -1
  144. package/esm2015/lib/modules/ag-grid/types/cell-class.js +0 -17
  145. package/esm2015/lib/modules/ag-grid/types/cell-class.js.map +0 -1
  146. package/esm2015/lib/modules/ag-grid/types/cell-editor-autocomplete-params.js +0 -2
  147. package/esm2015/lib/modules/ag-grid/types/cell-editor-autocomplete-params.js.map +0 -1
  148. package/esm2015/lib/modules/ag-grid/types/cell-editor-currency-params.js +0 -2
  149. package/esm2015/lib/modules/ag-grid/types/cell-editor-currency-params.js.map +0 -1
  150. package/esm2015/lib/modules/ag-grid/types/cell-editor-datepicker-params.js +0 -2
  151. package/esm2015/lib/modules/ag-grid/types/cell-editor-datepicker-params.js.map +0 -1
  152. package/esm2015/lib/modules/ag-grid/types/cell-editor-lookup-params.js +0 -2
  153. package/esm2015/lib/modules/ag-grid/types/cell-editor-lookup-params.js.map +0 -1
  154. package/esm2015/lib/modules/ag-grid/types/cell-editor-number-params.js +0 -2
  155. package/esm2015/lib/modules/ag-grid/types/cell-editor-number-params.js.map +0 -1
  156. package/esm2015/lib/modules/ag-grid/types/cell-editor-text-params.js +0 -2
  157. package/esm2015/lib/modules/ag-grid/types/cell-editor-text-params.js.map +0 -1
  158. package/esm2015/lib/modules/ag-grid/types/cell-renderer-currency-params.js +0 -2
  159. package/esm2015/lib/modules/ag-grid/types/cell-renderer-currency-params.js.map +0 -1
  160. package/esm2015/lib/modules/ag-grid/types/cell-renderer-lookup-params.js +0 -2
  161. package/esm2015/lib/modules/ag-grid/types/cell-renderer-lookup-params.js.map +0 -1
  162. package/esm2015/lib/modules/ag-grid/types/cell-renderer-validator-params.js +0 -2
  163. package/esm2015/lib/modules/ag-grid/types/cell-renderer-validator-params.js.map +0 -1
  164. package/esm2015/lib/modules/ag-grid/types/cell-type.js +0 -93
  165. package/esm2015/lib/modules/ag-grid/types/cell-type.js.map +0 -1
  166. package/esm2015/lib/modules/ag-grid/types/currency-properties.js +0 -2
  167. package/esm2015/lib/modules/ag-grid/types/currency-properties.js.map +0 -1
  168. package/esm2015/lib/modules/ag-grid/types/datepicker-properties.js +0 -2
  169. package/esm2015/lib/modules/ag-grid/types/datepicker-properties.js.map +0 -1
  170. package/esm2015/lib/modules/ag-grid/types/header-class.js +0 -8
  171. package/esm2015/lib/modules/ag-grid/types/header-class.js.map +0 -1
  172. package/esm2015/lib/modules/ag-grid/types/lookup-properties.js +0 -2
  173. package/esm2015/lib/modules/ag-grid/types/lookup-properties.js.map +0 -1
  174. package/esm2015/lib/modules/ag-grid/types/number-properties.js +0 -2
  175. package/esm2015/lib/modules/ag-grid/types/number-properties.js.map +0 -1
  176. package/esm2015/lib/modules/ag-grid/types/sky-grid-options.js +0 -2
  177. package/esm2015/lib/modules/ag-grid/types/sky-grid-options.js.map +0 -1
  178. package/esm2015/lib/modules/ag-grid/types/text-properties.js +0 -2
  179. package/esm2015/lib/modules/ag-grid/types/text-properties.js.map +0 -1
  180. package/esm2015/lib/modules/ag-grid/types/validator-properties.js +0 -2
  181. package/esm2015/lib/modules/ag-grid/types/validator-properties.js.map +0 -1
  182. package/esm2015/lib/modules/shared/sky-ag-grid-resources.module.js +0 -71
  183. package/esm2015/lib/modules/shared/sky-ag-grid-resources.module.js.map +0 -1
  184. package/esm2015/skyux-ag-grid.js +0 -5
  185. package/esm2015/skyux-ag-grid.js.map +0 -1
  186. package/fesm2015/skyux-ag-grid.js.map +0 -1
@@ -0,0 +1,424 @@
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 { applySkyLookupPropertiesDefaults } from './apply-lookup-properties-defaults';
8
+ import { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';
9
+ import { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';
10
+ import { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';
11
+ import { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';
12
+ import { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';
13
+ import { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';
14
+ import { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';
15
+ import { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';
16
+ import { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';
17
+ import { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';
18
+ import { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';
19
+ import { SkyCellClass } from './types/cell-class';
20
+ import { SkyCellType } from './types/cell-type';
21
+ import { SkyHeaderClass } from './types/header-class';
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
+ this.keyMap = new WeakMap();
89
+ /*istanbul ignore else*/
90
+ if (this.themeSvc) {
91
+ this.themeSvc.settingsChange
92
+ .pipe(takeUntil(this.ngUnsubscribe))
93
+ .subscribe((settingsChange) => (this.currentTheme = settingsChange.currentSettings));
94
+ }
95
+ }
96
+ ngOnDestroy() {
97
+ this.ngUnsubscribe.next();
98
+ this.ngUnsubscribe.complete();
99
+ }
100
+ /**
101
+ * 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.
102
+ * @param args
103
+ * @returns
104
+ */
105
+ getGridOptions(args) {
106
+ const defaultGridOptions = this.getDefaultGridOptions(args);
107
+ const mergedGridOptions = this.mergeGridOptions(defaultGridOptions, args.gridOptions);
108
+ return mergedGridOptions;
109
+ }
110
+ /**
111
+ * 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.
112
+ * @param args
113
+ * @returns
114
+ */
115
+ getEditableGridOptions(args) {
116
+ const defaultGridOptions = this.getDefaultEditableGridOptions(args);
117
+ const mergedGridOptions = this.mergeGridOptions(defaultGridOptions, args.gridOptions);
118
+ return mergedGridOptions;
119
+ }
120
+ mergeGridOptions(defaultGridOptions, providedGridOptions) {
121
+ const mergedGridOptions = {
122
+ ...defaultGridOptions,
123
+ ...providedGridOptions,
124
+ components: {
125
+ ...providedGridOptions.components,
126
+ // Apply default components last to prevent consumers from overwriting our component types.
127
+ ...defaultGridOptions.components,
128
+ },
129
+ columnTypes: {
130
+ ...providedGridOptions.columnTypes,
131
+ // apply default second to prevent consumers from overwriting our default column types
132
+ ...defaultGridOptions.columnTypes,
133
+ },
134
+ defaultColDef: {
135
+ ...defaultGridOptions.defaultColDef,
136
+ ...providedGridOptions.defaultColDef,
137
+ // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling
138
+ cellClassRules: defaultGridOptions.defaultColDef.cellClassRules,
139
+ },
140
+ icons: {
141
+ ...defaultGridOptions.icons,
142
+ ...providedGridOptions.icons,
143
+ },
144
+ };
145
+ // Prefer `getRowNodeId` over `getNodeId` if set by the consumer, for backward compatibility.
146
+ if (mergedGridOptions.getRowNodeId) {
147
+ delete mergedGridOptions.getRowId;
148
+ }
149
+ return mergedGridOptions;
150
+ }
151
+ getDefaultGridOptions(args) {
152
+ // cellClassRules can be functions or string expressions
153
+ const cellClassRuleTrueExpression = 'true';
154
+ function getEditableFn(isUneditable) {
155
+ return function (params) {
156
+ let isEditable = params.colDef.editable;
157
+ if (typeof isEditable === 'function') {
158
+ const column = params.columnApi.getColumn(params.colDef.field);
159
+ isEditable = isEditable({
160
+ ...params,
161
+ column,
162
+ });
163
+ }
164
+ return isUneditable ? !isEditable : isEditable;
165
+ };
166
+ }
167
+ const editableCellClassRules = {
168
+ [SkyCellClass.Editable]: getEditableFn(),
169
+ [SkyCellClass.Uneditable]: getEditableFn(true),
170
+ };
171
+ function getValidatorFn() {
172
+ return function (param) {
173
+ if (param.colDef &&
174
+ typeof param.colDef.cellRendererParams?.skyComponentProperties
175
+ ?.validator === 'function') {
176
+ return !param.colDef.cellRendererParams.skyComponentProperties.validator(param.value, param.data, param.rowIndex);
177
+ }
178
+ return false;
179
+ };
180
+ }
181
+ const validatorCellClassRules = {
182
+ [SkyCellClass.Invalid]: getValidatorFn(),
183
+ };
184
+ const defaultSkyGridOptions = {
185
+ columnTypes: {
186
+ [SkyCellType.Autocomplete]: {
187
+ cellClassRules: {
188
+ [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,
189
+ ...editableCellClassRules,
190
+ },
191
+ cellEditor: SkyAgGridCellEditorAutocompleteComponent,
192
+ valueFormatter: autocompleteFormatter,
193
+ comparator: autocompleteComparator,
194
+ minWidth: 185,
195
+ },
196
+ [SkyCellType.Currency]: {
197
+ cellClassRules: {
198
+ [SkyCellClass.Currency]: cellClassRuleTrueExpression,
199
+ ...validatorCellClassRules,
200
+ ...editableCellClassRules,
201
+ },
202
+ cellRendererSelector: getValidatorCellRendererSelector('sky-ag-grid-cell-renderer-currency-validator', { component: 'sky-ag-grid-cell-renderer-currency' }),
203
+ cellEditor: SkyAgGridCellEditorCurrencyComponent,
204
+ headerClass: SkyHeaderClass.RightAligned,
205
+ minWidth: 185,
206
+ },
207
+ [SkyCellType.Date]: {
208
+ cellClassRules: {
209
+ [SkyCellClass.Date]: cellClassRuleTrueExpression,
210
+ ...editableCellClassRules,
211
+ },
212
+ cellEditor: SkyAgGridCellEditorDatepickerComponent,
213
+ comparator: dateComparator,
214
+ minWidth: this.currentTheme?.theme?.name === 'modern' ? 180 : 160,
215
+ valueFormatter: (params) => this.dateFormatter(params, args.locale),
216
+ },
217
+ [SkyCellType.Lookup]: {
218
+ cellClassRules: {
219
+ [SkyCellClass.Lookup]: cellClassRuleTrueExpression,
220
+ ...editableCellClassRules,
221
+ },
222
+ cellEditor: SkyAgGridCellEditorLookupComponent,
223
+ cellRenderer: SkyAgGridCellRendererLookupComponent,
224
+ valueFormatter: (params) => {
225
+ const lookupProperties = applySkyLookupPropertiesDefaults(params);
226
+ return (params.value || [])
227
+ .map((value) => {
228
+ return value[lookupProperties.descriptorProperty];
229
+ })
230
+ .filter((value) => value !== '' && value !== undefined)
231
+ .join('; ');
232
+ },
233
+ minWidth: 185,
234
+ },
235
+ [SkyCellType.Number]: {
236
+ cellClassRules: {
237
+ [SkyCellClass.Number]: cellClassRuleTrueExpression,
238
+ ...validatorCellClassRules,
239
+ ...editableCellClassRules,
240
+ },
241
+ cellRendererSelector: getValidatorCellRendererSelector('sky-ag-grid-cell-renderer-validator-tooltip'),
242
+ cellEditor: SkyAgGridCellEditorNumberComponent,
243
+ headerClass: SkyHeaderClass.RightAligned,
244
+ },
245
+ [SkyCellType.RowSelector]: {
246
+ cellClassRules: {
247
+ [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,
248
+ [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,
249
+ },
250
+ cellRenderer: SkyAgGridCellRendererRowSelectorComponent,
251
+ headerName: '',
252
+ minWidth: 55,
253
+ maxWidth: 55,
254
+ sortable: false,
255
+ width: 55,
256
+ },
257
+ [SkyCellType.Text]: {
258
+ cellClassRules: {
259
+ [SkyCellClass.Text]: cellClassRuleTrueExpression,
260
+ ...validatorCellClassRules,
261
+ ...editableCellClassRules,
262
+ },
263
+ cellEditor: SkyAgGridCellEditorTextComponent,
264
+ cellRendererSelector: getValidatorCellRendererSelector('sky-ag-grid-cell-renderer-validator-tooltip'),
265
+ },
266
+ [SkyCellType.Validator]: {
267
+ cellClassRules: {
268
+ ...validatorCellClassRules,
269
+ ...editableCellClassRules,
270
+ },
271
+ cellRendererSelector: getValidatorCellRendererSelector('sky-ag-grid-cell-renderer-validator-tooltip'),
272
+ },
273
+ },
274
+ defaultColDef: {
275
+ cellClassRules: editableCellClassRules,
276
+ minWidth: 100,
277
+ resizable: true,
278
+ sortable: true,
279
+ suppressKeyboardEvent: (keypress) => this.suppressTab(keypress),
280
+ },
281
+ domLayout: 'autoHeight',
282
+ enterMovesDownAfterEdit: true,
283
+ components: {
284
+ 'sky-ag-grid-cell-renderer-currency': SkyAgGridCellRendererCurrencyComponent,
285
+ 'sky-ag-grid-cell-renderer-currency-validator': SkyAgGridCellRendererCurrencyValidatorComponent,
286
+ 'sky-ag-grid-cell-renderer-validator-tooltip': SkyAgGridCellRendererValidatorTooltipComponent,
287
+ },
288
+ getRowId: (params) => {
289
+ const dataId = params.data.id;
290
+ if (dataId !== undefined) {
291
+ return `${params.data.id}`;
292
+ }
293
+ if (!this.keyMap.has(params.data)) {
294
+ this.keyMap.set(params.data, `${rowNodeId--}`);
295
+ }
296
+ return this.keyMap.get(params.data);
297
+ },
298
+ getRowClass: (params) => {
299
+ if (params.node.id) {
300
+ return `sky-ag-grid-row-${params.node.id}`;
301
+ }
302
+ else {
303
+ return undefined;
304
+ }
305
+ },
306
+ headerHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 37,
307
+ icons: {
308
+ sortDescending: this.getIconTemplate('caret-down'),
309
+ sortAscending: this.getIconTemplate('caret-up'),
310
+ columnMoveMove: this.getIconTemplate('arrows'),
311
+ columnMoveHide: this.getIconTemplate('arrows'),
312
+ columnMoveLeft: this.getIconTemplate('arrows'),
313
+ columnMoveRight: this.getIconTemplate('arrows'),
314
+ columnMovePin: this.getIconTemplate('arrows'),
315
+ },
316
+ onCellFocused: () => this.onCellFocused(),
317
+ rowHeight: this.currentTheme?.theme?.name === 'modern' ? 60 : 38,
318
+ rowMultiSelectWithClick: true,
319
+ rowSelection: 'multiple',
320
+ singleClickEdit: true,
321
+ sortingOrder: ['desc', 'asc', null],
322
+ suppressRowClickSelection: true,
323
+ suppressDragLeaveHidesColumns: true,
324
+ };
325
+ defaultSkyGridOptions.columnTypes[SkyCellType.CurrencyValidator] = {
326
+ ...defaultSkyGridOptions.columnTypes[SkyCellType.Currency],
327
+ cellRendererParams: {
328
+ skyComponentProperties: {
329
+ validator: (value, data, rowIndex) => {
330
+ return !!`${value || ''}`.match(/^[^0-9]*(\d+[,.]?)+\d*[^0-9]*$/);
331
+ },
332
+ validatorMessage: 'Please enter a valid currency',
333
+ },
334
+ },
335
+ };
336
+ /*istanbul ignore else*/
337
+ if (this.resources) {
338
+ this.resources
339
+ .getString('sky_ag_grid_cell_renderer_currency_validator_message')
340
+ .subscribe((value) => {
341
+ defaultSkyGridOptions.columnTypes[SkyCellType.CurrencyValidator].cellRendererParams.skyComponentProperties.validatorMessage = value;
342
+ });
343
+ }
344
+ defaultSkyGridOptions.columnTypes[SkyCellType.NumberValidator] = {
345
+ ...defaultSkyGridOptions.columnTypes[SkyCellType.Validator],
346
+ ...defaultSkyGridOptions.columnTypes[SkyCellType.Number],
347
+ cellClassRules: {
348
+ ...defaultSkyGridOptions.columnTypes[SkyCellType.Validator]
349
+ .cellClassRules,
350
+ ...defaultSkyGridOptions.columnTypes[SkyCellType.Number].cellClassRules,
351
+ },
352
+ cellRendererParams: {
353
+ skyComponentProperties: {
354
+ validator: (value, data, rowIndex) => {
355
+ return !!value && !isNaN(parseFloat(value));
356
+ },
357
+ validatorMessage: 'Please enter a valid number',
358
+ },
359
+ },
360
+ };
361
+ /*istanbul ignore else*/
362
+ if (this.resources) {
363
+ this.resources
364
+ .getString('sky_ag_grid_cell_renderer_number_validator_message')
365
+ .subscribe((value) => {
366
+ defaultSkyGridOptions.columnTypes[SkyCellType.NumberValidator].cellRendererParams.skyComponentProperties.validatorMessage = value;
367
+ });
368
+ }
369
+ return defaultSkyGridOptions;
370
+ }
371
+ onCellFocused() {
372
+ const currentElement = this.agGridAdapterService.getFocusedElement();
373
+ this.agGridAdapterService.focusOnFocusableChildren(currentElement);
374
+ }
375
+ getDefaultEditableGridOptions(args) {
376
+ const defaultGridOptions = this.getDefaultGridOptions(args);
377
+ defaultGridOptions.rowSelection = 'none';
378
+ return defaultGridOptions;
379
+ }
380
+ dateFormatter(params, locale = 'en-us') {
381
+ const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };
382
+ let date = params.value;
383
+ if (date && typeof date === 'string') {
384
+ date = new Date(params.value);
385
+ }
386
+ const formattedDate = date &&
387
+ date.toLocaleDateString &&
388
+ date.toLocaleDateString(locale, dateConfig);
389
+ if (date && date.getTime && !isNaN(date.getTime())) {
390
+ return formattedDate;
391
+ }
392
+ }
393
+ getIconTemplate(iconName) {
394
+ return `<i class="fa fa-${iconName}"></i>`;
395
+ }
396
+ suppressTab(params) {
397
+ if (params.event.code === 'Tab') {
398
+ if (params.editing) {
399
+ const currentlyFocusedEl = this.agGridAdapterService.getFocusedElement();
400
+ // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class
401
+ const cellEl = this.agGridAdapterService.getElementOrParentWithClass(currentlyFocusedEl, 'ag-cell');
402
+ const popupEl = this.agGridAdapterService.getElementOrParentWithClass(currentlyFocusedEl, 'ag-popup-editor');
403
+ const parentEl = cellEl || popupEl;
404
+ const nextFocusableElementInCell = this.agGridAdapterService.getNextFocusableElement(currentlyFocusedEl, parentEl, params.event.shiftKey);
405
+ return !!nextFocusableElementInCell;
406
+ }
407
+ return true;
408
+ }
409
+ return false;
410
+ }
411
+ }
412
+ SkyAgGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAgGridService, deps: [{ token: i1.SkyAgGridAdapterService }, { token: i2.SkyThemeService, optional: true }, { token: i3.SkyLibResourcesService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
413
+ SkyAgGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAgGridService, providedIn: 'any' });
414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAgGridService, decorators: [{
415
+ type: Injectable,
416
+ args: [{
417
+ providedIn: 'any',
418
+ }]
419
+ }], ctorParameters: function () { return [{ type: i1.SkyAgGridAdapterService }, { type: i2.SkyThemeService, decorators: [{
420
+ type: Optional
421
+ }] }, { type: i3.SkyLibResourcesService, decorators: [{
422
+ type: Optional
423
+ }] }]; } });
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2FnLWdyaWQvc3JjL2xpYi9tb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLGNBQWMsQ0FBQztBQVdqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMxSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNoSSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUNySixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztB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RTtnQkFDbEIsTUFBTSxrQkFBa0IsR0FDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2hELHFHQUFxRztnQkFDckcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUNsRSxrQkFBa0IsRUFDbEIsU0FBUyxDQUNWLENBQUM7Z0JBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUNuRSxrQkFBa0IsRUFDbEIsaUJBQWlCLENBQ2xCLENBQUM7Z0JBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQztnQkFFbkMsTUFBTSwwQkFBMEIsR0FDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUMvQyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUN0QixDQUFDO2dCQUNKLE9BQU8sQ0FBQyxDQUFDLDBCQUEwQixDQUFDO2FBQ3JDO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7NkdBdGFVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsS0FBSzsyRkFFTixnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFhSSxRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSwgU2t5VGhlbWVTZXR0aW5ncyB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIENlbGxDbGFzc1BhcmFtcyxcbiAgRWRpdGFibGVDYWxsYmFja1BhcmFtcyxcbiAgR3JpZE9wdGlvbnMsXG4gIElDZWxsUmVuZGVyZXJQYXJhbXMsXG4gIFJvd0NsYXNzUGFyYW1zLFxuICBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMsXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUFnR3JpZEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZy1ncmlkLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBhcHBseVNreUxvb2t1cFByb3BlcnRpZXNEZWZhdWx0cyB9IGZyb20gJy4vYXBwbHktbG9va3VwLXByb3BlcnRpZXMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvckF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWF1dG9jb21wbGV0ZS9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JDdXJyZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWN1cnJlbmN5L2NlbGwtZWRpdG9yLWN1cnJlbmN5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWRhdGVwaWNrZXIvY2VsbC1lZGl0b3ItZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbEVkaXRvckxvb2t1cENvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWxvb2t1cC9jZWxsLWVkaXRvci1sb29rdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxFZGl0b3JOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1udW1iZXIvY2VsbC1lZGl0b3ItbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRDZWxsRWRpdG9yVGV4dENvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLXRleHQvY2VsbC1lZGl0b3ItdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyQ3VycmVuY3lWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItY3VycmVuY3kvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlckN1cnJlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5L2NlbGwtcmVuZGVyZXItY3VycmVuY3kuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlckxvb2t1cENvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1sb29rdXAvY2VsbC1yZW5kZXJlci1sb29rdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZENlbGxSZW5kZXJlclJvd1NlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLXJvdy1zZWxlY3Rvci9jZWxsLXJlbmRlcmVyLXJvdy1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcC9jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lDZWxsQ2xhc3MgfSBmcm9tICcuL3R5cGVzL2NlbGwtY2xhc3MnO1xuaW1wb3J0IHsgU2t5Q2VsbFR5cGUgfSBmcm9tICcuL3R5cGVzL2NlbGwtdHlwZSc7XG5pbXBvcnQgeyBTa3lIZWFkZXJDbGFzcyB9IGZyb20gJy4vdHlwZXMvaGVhZGVyLWNsYXNzJztcbmltcG9ydCB7IFNreUdldEdyaWRPcHRpb25zQXJncyB9IGZyb20gJy4vdHlwZXMvc2t5LWdyaWQtb3B0aW9ucyc7XG5cbmZ1bmN0aW9uIGF1dG9jb21wbGV0ZUNvbXBhcmF0b3IoXG4gIHZhbHVlMTogeyBuYW1lOiBzdHJpbmcgfSxcbiAgdmFsdWUyOiB7IG5hbWU6IHN0cmluZyB9XG4pOiBudW1iZXIge1xuICBpZiAodmFsdWUxICYmIHZhbHVlMikge1xuICAgIGlmICh2YWx1ZTEubmFtZSA+IHZhbHVlMi5uYW1lKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUxLm5hbWUgPCB2YWx1ZTIubmFtZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlMSA/IDEgOiAtMTtcbn1cblxuZnVuY3Rpb24gYXV0b2NvbXBsZXRlRm9ybWF0dGVyKFxuICBwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gcGFyYW1zLnZhbHVlICYmIHBhcmFtcy52YWx1ZS5uYW1lO1xufVxuXG5mdW5jdGlvbiBkYXRlQ29tcGFyYXRvcihkYXRlMTogYW55LCBkYXRlMjogYW55KTogbnVtYmVyIHtcbiAgbGV0IGRhdGUxdmFsdWUgPSBkYXRlMTtcbiAgbGV0IGRhdGUydmFsdWUgPSBkYXRlMjtcblxuICBpZiAodHlwZW9mIGRhdGUxdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0ZTF2YWx1ZSA9IG5ldyBEYXRlKGRhdGUxKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0ZTJ2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRlMnZhbHVlID0gbmV3IERhdGUoZGF0ZTIpO1xuICB9XG5cbiAgaWYgKGRhdGUxdmFsdWUgJiYgZGF0ZTJ2YWx1ZSkge1xuICAgIGlmIChkYXRlMXZhbHVlID4gZGF0ZTJ2YWx1ZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUxdmFsdWUgPCBkYXRlMnZhbHVlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gZGF0ZTF2YWx1ZSA/IDEgOiAtMTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoY29tcG9uZW50OiBzdHJpbmcsIGZhbGxiYWNrPzogYW55KSB7XG4gIHJldHVybiAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmNvbERlZiAmJlxuICAgICAgdHlwZW9mIHBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzXG4gICAgICAgID8udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFwYXJhbXMuY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvcihcbiAgICAgICAgICBwYXJhbXMudmFsdWUsXG4gICAgICAgICAgcGFyYW1zLmRhdGEsXG4gICAgICAgICAgcGFyYW1zLnJvd0luZGV4XG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLnBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfTtcbn1cblxubGV0IHJvd05vZGVJZCA9IC0xO1xuXG4vKipcbiAqIGBTa3lBZ0dyaWRTZXJ2aWNlYCBwcm92aWRlcyBtZXRob2RzIHRvIGdldCBBRyBHcmlkIGBncmlkT3B0aW9uc2AgdG8gZW5zdXJlIGdyaWRzIG1hdGNoIFNLWSBVWCBmdW5jdGlvbmFsaXR5LiBUaGUgYGdyaWRPcHRpb25zYCBjYW4gYmUgb3ZlcnJpZGRlbiwgYW5kIGluY2x1ZGUgcmVnaXN0ZXJlZCBTS1kgVVggY29sdW1uIHR5cGVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGN1cnJlbnRUaGVtZTogU2t5VGhlbWVTZXR0aW5ncztcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUga2V5TWFwID0gbmV3IFdlYWtNYXA8YW55LCBzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZ0dyaWRBZGFwdGVyU2VydmljZTogU2t5QWdHcmlkQWRhcHRlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlc291cmNlcz86IFNreUxpYlJlc291cmNlc1NlcnZpY2VcbiAgKSB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMudGhlbWVTdmMpIHtcbiAgICAgIHRoaXMudGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHNldHRpbmdzQ2hhbmdlKSA9PlxuICAgICAgICAgICAgKHRoaXMuY3VycmVudFRoZW1lID0gc2V0dGluZ3NDaGFuZ2UuY3VycmVudFNldHRpbmdzKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgW0FHIEdyaWQgYGdyaWRPcHRpb25zYF0oaHR0cHM6Ly93d3cuYWctZ3JpZC5jb20vamF2YXNjcmlwdC1ncmlkLXByb3BlcnRpZXMvKSB3aXRoIGRlZmF1bHQgU0tZIFVYIG9wdGlvbnMsIHN0eWxpbmcsIGFuZCBjZWxsIHJlbmRlcmVycyByZWdpc3RlcmVkIGZvciByZWFkLW9ubHkgZ3JpZHMuXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgZ2V0R3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9ucyA9IHRoaXMuZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3MpO1xuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zID0gdGhpcy5tZXJnZUdyaWRPcHRpb25zKFxuICAgICAgZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgYXJncy5ncmlkT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gbWVyZ2VkR3JpZE9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBbQUcgR3JpZCBgZ3JpZE9wdGlvbnNgXShodHRwczovL3d3dy5hZy1ncmlkLmNvbS9qYXZhc2NyaXB0LWdyaWQtcHJvcGVydGllcy8pIHdpdGggZGVmYXVsdCBTS1kgVVggb3B0aW9ucywgc3R5bGluZywgYW5kIGNlbGwgZWRpdG9ycyByZWdpc3RlcmVkIGZvciBlZGl0YWJsZSBncmlkcy5cbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBnZXRFZGl0YWJsZUdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRFZGl0YWJsZUdyaWRPcHRpb25zKGFyZ3MpO1xuICAgIGNvbnN0IG1lcmdlZEdyaWRPcHRpb25zID0gdGhpcy5tZXJnZUdyaWRPcHRpb25zKFxuICAgICAgZGVmYXVsdEdyaWRPcHRpb25zLFxuICAgICAgYXJncy5ncmlkT3B0aW9uc1xuICAgICk7XG5cbiAgICByZXR1cm4gbWVyZ2VkR3JpZE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlR3JpZE9wdGlvbnMoXG4gICAgZGVmYXVsdEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyxcbiAgICBwcm92aWRlZEdyaWRPcHRpb25zOiBHcmlkT3B0aW9uc1xuICApOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgbWVyZ2VkR3JpZE9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMsXG4gICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLFxuICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmNvbXBvbmVudHMsXG4gICAgICAgIC8vIEFwcGx5IGRlZmF1bHQgY29tcG9uZW50cyBsYXN0IHRvIHByZXZlbnQgY29uc3VtZXJzIGZyb20gb3ZlcndyaXRpbmcgb3VyIGNvbXBvbmVudCB0eXBlcy5cbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmNvbXBvbmVudHMsXG4gICAgICB9LFxuICAgICAgY29sdW1uVHlwZXM6IHtcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5jb2x1bW5UeXBlcyxcbiAgICAgICAgLy8gYXBwbHkgZGVmYXVsdCBzZWNvbmQgdG8gcHJldmVudCBjb25zdW1lcnMgZnJvbSBvdmVyd3JpdGluZyBvdXIgZGVmYXVsdCBjb2x1bW4gdHlwZXNcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmNvbHVtblR5cGVzLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmRlZmF1bHRDb2xEZWYsXG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuZGVmYXVsdENvbERlZixcbiAgICAgICAgLy8gYWxsb3cgY29uc3VtZXJzIHRvIG92ZXJyaWRlIGFsbCBkZWZhdWx0Q29sRGVmIHByb3BlcnRpZXMgZXhjZXB0IGNlbGxDbGFzc1J1bGVzLCB3aGljaCB3ZSByZXNlcnZlIGZvciBzdHlsaW5nXG4gICAgICAgIGNlbGxDbGFzc1J1bGVzOiBkZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbERlZi5jZWxsQ2xhc3NSdWxlcyxcbiAgICAgIH0sXG4gICAgICBpY29uczoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuaWNvbnMsXG4gICAgICAgIC4uLnByb3ZpZGVkR3JpZE9wdGlvbnMuaWNvbnMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBQcmVmZXIgYGdldFJvd05vZGVJZGAgb3ZlciBgZ2V0Tm9kZUlkYCBpZiBzZXQgYnkgdGhlIGNvbnN1bWVyLCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICBpZiAobWVyZ2VkR3JpZE9wdGlvbnMuZ2V0Um93Tm9kZUlkKSB7XG4gICAgICBkZWxldGUgbWVyZ2VkR3JpZE9wdGlvbnMuZ2V0Um93SWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0R3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIC8vIGNlbGxDbGFzc1J1bGVzIGNhbiBiZSBmdW5jdGlvbnMgb3Igc3RyaW5nIGV4cHJlc3Npb25zXG4gICAgY29uc3QgY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uID0gJ3RydWUnO1xuXG4gICAgZnVuY3Rpb24gZ2V0RWRpdGFibGVGbihcbiAgICAgIGlzVW5lZGl0YWJsZT86IGJvb2xlYW5cbiAgICApOiAocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpID0+IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgaXNFZGl0YWJsZSA9IHBhcmFtcy5jb2xEZWYuZWRpdGFibGU7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpc0VkaXRhYmxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uID0gcGFyYW1zLmNvbHVtbkFwaS5nZXRDb2x1bW4ocGFyYW1zLmNvbERlZi5maWVsZCk7XG4gICAgICAgICAgaXNFZGl0YWJsZSA9IGlzRWRpdGFibGUoe1xuICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0gYXMgRWRpdGFibGVDYWxsYmFja1BhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNVbmVkaXRhYmxlID8gIWlzRWRpdGFibGUgOiBpc0VkaXRhYmxlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzID0ge1xuICAgICAgW1NreUNlbGxDbGFzcy5FZGl0YWJsZV06IGdldEVkaXRhYmxlRm4oKSxcbiAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGdldEVkaXRhYmxlRm4odHJ1ZSksXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFZhbGlkYXRvckZuKCk6IChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcykgPT4gYm9vbGVhbiB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtOiBDZWxsQ2xhc3NQYXJhbXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmFtLmNvbERlZiAmJlxuICAgICAgICAgIHR5cGVvZiBwYXJhbS5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzXG4gICAgICAgICAgICA/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gIXBhcmFtLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3IoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmRhdGEsXG4gICAgICAgICAgICBwYXJhbS5yb3dJbmRleFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyA9IHtcbiAgICAgIFtTa3lDZWxsQ2xhc3MuSW52YWxpZF06IGdldFZhbGlkYXRvckZuKCksXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRTa3lHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb2x1bW5UeXBlczoge1xuICAgICAgICBbU2t5Q2VsbFR5cGUuQXV0b2NvbXBsZXRlXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkF1dG9jb21wbGV0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiBhdXRvY29tcGxldGVGb3JtYXR0ZXIsXG4gICAgICAgICAgY29tcGFyYXRvcjogYXV0b2NvbXBsZXRlQ29tcGFyYXRvcixcbiAgICAgICAgICBtaW5XaWR0aDogMTg1LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuQ3VycmVuY3ldOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuQ3VycmVuY3ldOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3InLFxuICAgICAgICAgICAgeyBjb21wb25lbnQ6ICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JyB9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1LFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuRGF0ZV06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5EYXRlXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3I6IFNreUFnR3JpZENlbGxFZGl0b3JEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgICAgICAgIGNvbXBhcmF0b3I6IGRhdGVDb21wYXJhdG9yLFxuICAgICAgICAgIG1pbldpZHRoOiB0aGlzLmN1cnJlbnRUaGVtZT8udGhlbWU/Lm5hbWUgPT09ICdtb2Rlcm4nID8gMTgwIDogMTYwLFxuICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcykgPT5cbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdHRlcihwYXJhbXMsIGFyZ3MubG9jYWxlKSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLkxvb2t1cF06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5Mb29rdXBdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbEVkaXRvcjogU2t5QWdHcmlkQ2VsbEVkaXRvckxvb2t1cENvbXBvbmVudCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXI6IFNreUFnR3JpZENlbGxSZW5kZXJlckxvb2t1cENvbXBvbmVudCxcbiAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9va3VwUHJvcGVydGllcyA9IGFwcGx5U2t5TG9va3VwUHJvcGVydGllc0RlZmF1bHRzKHBhcmFtcyk7XG4gICAgICAgICAgICByZXR1cm4gKHBhcmFtcy52YWx1ZSB8fCBbXSlcbiAgICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbbG9va3VwUHJvcGVydGllcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIC5qb2luKCc7ICcpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbWluV2lkdGg6IDE4NSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLk51bWJlcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5OdW1iZXJdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcCdcbiAgICAgICAgICApLFxuICAgICAgICAgIGNlbGxFZGl0b3I6IFNreUFnR3JpZENlbGxFZGl0b3JOdW1iZXJDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCxcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlJvd1NlbGVjdG9yXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLlJvd1NlbGVjdG9yXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5VbmVkaXRhYmxlXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJSb3dTZWxlY3RvckNvbXBvbmVudCxcbiAgICAgICAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICAgICAgICBtaW5XaWR0aDogNTUsXG4gICAgICAgICAgbWF4V2lkdGg6IDU1LFxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3aWR0aDogNTUsXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5UZXh0XToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLlRleHRdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yOiBTa3lBZ0dyaWRDZWxsRWRpdG9yVGV4dENvbXBvbmVudCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcCdcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuVmFsaWRhdG9yXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICAuLi52YWxpZGF0b3JDZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcCdcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgIG1pbldpZHRoOiAxMDAsXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIHN1cHByZXNzS2V5Ym9hcmRFdmVudDogKGtleXByZXNzOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpID0+XG4gICAgICAgICAgdGhpcy5zdXBwcmVzc1RhYihrZXlwcmVzcyksXG4gICAgICB9LFxuICAgICAgZG9tTGF5b3V0OiAnYXV0b0hlaWdodCcsXG4gICAgICBlbnRlck1vdmVzRG93bkFmdGVyRWRpdDogdHJ1ZSxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3knOlxuICAgICAgICAgIFNreUFnR3JpZENlbGxSZW5kZXJlckN1cnJlbmN5Q29tcG9uZW50LFxuICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3InOlxuICAgICAgICAgIFNreUFnR3JpZENlbGxSZW5kZXJlckN1cnJlbmN5VmFsaWRhdG9yQ29tcG9uZW50LFxuICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcCc6XG4gICAgICAgICAgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgICBnZXRSb3dJZDogKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBkYXRhSWQgPSBwYXJhbXMuZGF0YS5pZDtcbiAgICAgICAgaWYgKGRhdGFJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGAke3BhcmFtcy5kYXRhLmlkfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmtleU1hcC5oYXMocGFyYW1zLmRhdGEpKSB7XG4gICAgICAgICAgdGhpcy5rZXlNYXAuc2V0KHBhcmFtcy5kYXRhLCBgJHtyb3dOb2RlSWQtLX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5rZXlNYXAuZ2V0KHBhcmFtcy5kYXRhKTtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dDbGFzczogKHBhcmFtczogUm93Q2xhc3NQYXJhbXMpID0+IHtcbiAgICAgICAgaWYgKHBhcmFtcy5ub2RlLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIGBza3ktYWctZ3JpZC1yb3ctJHtwYXJhbXMubm9kZS5pZH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoZWFkZXJIZWlnaHQ6IHRoaXMuY3VycmVudFRoZW1lPy50aGVtZT8ubmFtZSA9PT0gJ21vZGVybicgPyA2MCA6IDM3LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgc29ydERlc2NlbmRpbmc6IHRoaXMuZ2V0SWNvblRlbXBsYXRlKCdjYXJldC1kb3duJyksXG4gICAgICAgIHNvcnRBc2NlbmRpbmc6IHRoaXMuZ2V0SWNvblRlbXBsYXRlKCdjYXJldC11cCcpLFxuICAgICAgICBjb2x1bW5Nb3ZlTW92ZTogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlSGlkZTogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlTGVmdDogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlUmlnaHQ6IHRoaXMuZ2V0SWNvblRlbXBsYXRlKCdhcnJvd3MnKSxcbiAgICAgICAgY29sdW1uTW92ZVBpbjogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgfSxcbiAgICAgIG9uQ2VsbEZvY3VzZWQ6ICgpID0+IHRoaXMub25DZWxsRm9jdXNlZCgpLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLmN1cnJlbnRUaGVtZT8udGhlbWU/Lm5hbWUgPT09ICdtb2Rlcm4nID8gNjAgOiAzOCxcbiAgICAgIHJvd011bHRpU2VsZWN0V2l0aENsaWNrOiB0cnVlLFxuICAgICAgcm93U2VsZWN0aW9uOiAnbXVsdGlwbGUnLFxuICAgICAgc2luZ2xlQ2xpY2tFZGl0OiB0cnVlLFxuICAgICAgc29ydGluZ09yZGVyOiBbJ2Rlc2MnLCAnYXNjJywgbnVsbF0sXG4gICAgICBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgc3VwcHJlc3NEcmFnTGVhdmVIaWRlc0NvbHVtbnM6IHRydWUsXG4gICAgfTtcblxuICAgIGRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5DdXJyZW5jeVZhbGlkYXRvcl0gPSB7XG4gICAgICAuLi5kZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3ldLFxuICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXM6IHtcbiAgICAgICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogYW55LCBkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhIWAke3ZhbHVlIHx8ICcnfWAubWF0Y2goL15bXjAtOV0qKFxcZCtbLC5dPykrXFxkKlteMC05XSokLyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWxpZGF0b3JNZXNzYWdlOiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgY3VycmVuY3knLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnJlc291cmNlcykge1xuICAgICAgdGhpcy5yZXNvdXJjZXNcbiAgICAgICAgLmdldFN0cmluZygnc2t5X2FnX2dyaWRfY2VsbF9yZW5kZXJlcl9jdXJyZW5jeV92YWxpZGF0b3JfbWVzc2FnZScpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1xuICAgICAgICAgICAgU2t5Q2VsbFR5cGUuQ3VycmVuY3lWYWxpZGF0b3JcbiAgICAgICAgICBdLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvck1lc3NhZ2UgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlclZhbGlkYXRvcl0gPSB7XG4gICAgICAuLi5kZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuVmFsaWRhdG9yXSxcbiAgICAgIC4uLmRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5OdW1iZXJdLFxuICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLlZhbGlkYXRvcl1cbiAgICAgICAgICAuY2VsbENsYXNzUnVsZXMsXG4gICAgICAgIC4uLmRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5OdW1iZXJdLmNlbGxDbGFzc1J1bGVzLFxuICAgICAgfSxcbiAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICBza3lDb21wb25lbnRQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6IGFueSwgZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISF2YWx1ZSAmJiAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlcicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMucmVzb3VyY2VzKSB7XG4gICAgICB0aGlzLnJlc291cmNlc1xuICAgICAgICAuZ2V0U3RyaW5nKCdza3lfYWdfZ3JpZF9jZWxsX3JlbmRlcmVyX251bWJlcl92YWxpZGF0b3JfbWVzc2FnZScpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1xuICAgICAgICAgICAgU2t5Q2VsbFR5cGUuTnVtYmVyVmFsaWRhdG9yXG4gICAgICAgICAgXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0U2t5R3JpZE9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIG9uQ2VsbEZvY3VzZWQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0aGlzLmFnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzZWRFbGVtZW50KCk7XG5cbiAgICB0aGlzLmFnR3JpZEFkYXB0ZXJTZXJ2aWNlLmZvY3VzT25Gb2N1c2FibGVDaGlsZHJlbihjdXJyZW50RWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRFZGl0YWJsZUdyaWRPcHRpb25zKFxuICAgIGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJnc1xuICApOiBHcmlkT3B0aW9ucyB7XG4gICAgY29uc3QgZGVmYXVsdEdyaWRPcHRpb25zID0gdGhpcy5nZXREZWZhdWx0R3JpZE9wdGlvbnMoYXJncyk7XG5cbiAgICBkZWZhdWx0R3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0gJ25vbmUnO1xuXG4gICAgcmV0dXJuIGRlZmF1bHRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZGF0ZUZvcm1hdHRlcihcbiAgICBwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxuICAgIGxvY2FsZTogc3RyaW5nID0gJ2VuLXVzJ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRhdGVDb25maWcgPSB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICcyLWRpZ2l0JywgZGF5OiAnMi1kaWdpdCcgfTtcbiAgICBsZXQgZGF0ZTogRGF0ZSA9IHBhcmFtcy52YWx1ZTtcblxuICAgIGlmIChkYXRlICYmIHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHBhcmFtcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9XG4gICAgICBkYXRlICYmXG4gICAgICBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyAmJlxuICAgICAgZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCBkYXRlQ29uZmlnIGFzIEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zKTtcblxuICAgIGlmIChkYXRlICYmIGRhdGUuZ2V0VGltZSAmJiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEljb25UZW1wbGF0ZShpY29uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYDxpIGNsYXNzPVwiZmEgZmEtJHtpY29uTmFtZX1cIj48L2k+YDtcbiAgfVxuXG4gIHByaXZhdGUgc3VwcHJlc3NUYWIocGFyYW1zOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpOiBib29sZWFuIHtcbiAgICBpZiAocGFyYW1zLmV2ZW50LmNvZGUgPT09ICdUYWInKSB7XG4gICAgICBpZiAocGFyYW1zLmVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudGx5Rm9jdXNlZEVsID1cbiAgICAgICAgICB0aGlzLmFnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzZWRFbGVtZW50KCk7XG4gICAgICAgIC8vIGlubGluZSBjZWxsIGVkaXRvcnMgaGF2ZSB0aGUgJ2FnLWNlbGwnIGNsYXNzLCB3aGlsZSBwb3B1cCBlZGl0b3JzIGhhdmUgdGhlICdhZy1wb3B1cC1lZGl0b3InIGNsYXNzXG4gICAgICAgIGNvbnN0IGNlbGxFbCA9IHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0RWxlbWVudE9yUGFyZW50V2l0aENsYXNzKFxuICAgICAgICAgIGN1cnJlbnRseUZvY3VzZWRFbCxcbiAgICAgICAgICAnYWctY2VsbCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcG9wdXBFbCA9IHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0RWxlbWVudE9yUGFyZW50V2l0aENsYXNzKFxuICAgICAgICAgIGN1cnJlbnRseUZvY3VzZWRFbCxcbiAgICAgICAgICAnYWctcG9wdXAtZWRpdG9yJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBwYXJlbnRFbCA9IGNlbGxFbCB8fCBwb3B1cEVsO1xuXG4gICAgICAgIGNvbnN0IG5leHRGb2N1c2FibGVFbGVtZW50SW5DZWxsID1cbiAgICAgICAgICB0aGlzLmFnR3JpZEFkYXB0ZXJTZXJ2aWNlLmdldE5leHRGb2N1c2FibGVFbGVtZW50KFxuICAgICAgICAgICAgY3VycmVudGx5Rm9jdXNlZEVsLFxuICAgICAgICAgICAgcGFyZW50RWwsXG4gICAgICAgICAgICBwYXJhbXMuZXZlbnQuc2hpZnRLZXlcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gISFuZXh0Rm9jdXNhYmxlRWxlbWVudEluQ2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export function applySkyLookupPropertiesDefaults(skyLookupProperties) {
5
+ return {
6
+ addClick: skyLookupProperties.addClick || undefined,
7
+ ariaLabel: skyLookupProperties.ariaLabel || '',
8
+ autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',
9
+ data: skyLookupProperties.data || [],
10
+ debounceTime: skyLookupProperties.debounceTime || 0,
11
+ descriptorProperty: skyLookupProperties.descriptorProperty || 'name',
12
+ disabled: skyLookupProperties.disabled || false,
13
+ enableShowMore: skyLookupProperties.enableShowMore || false,
14
+ idProperty: skyLookupProperties.idProperty || undefined,
15
+ placeholderText: skyLookupProperties.placeholderText || '',
16
+ propertiesToSearch: skyLookupProperties.propertiesToSearch || undefined,
17
+ search: skyLookupProperties.search || undefined,
18
+ searchAsync: skyLookupProperties.searchAsync || undefined,
19
+ searchFilters: skyLookupProperties.searchFilters || [],
20
+ searchResultsLimit: skyLookupProperties.searchResultsLimit || undefined,
21
+ searchResultTemplate: skyLookupProperties.searchResultTemplate || undefined,
22
+ searchTextMinimumCharacters: skyLookupProperties.searchTextMinimumCharacters || 1,
23
+ selectMode: skyLookupProperties.selectMode || undefined,
24
+ showAddButton: skyLookupProperties.showAddButton || false,
25
+ showMoreConfig: skyLookupProperties.showMoreConfig || {},
26
+ wrapperClass: 'ag-custom-component-popup',
27
+ };
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktbG9va3VwLXByb3BlcnRpZXMtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYWctZ3JpZC9zcmMvbGliL21vZHVsZXMvYWctZ3JpZC9hcHBseS1sb29rdXAtcHJvcGVydGllcy1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsbUJBQThDO0lBRTlDLE9BQU87UUFDTCxRQUFRLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxJQUFJLFNBQVM7UUFDbkQsU0FBUyxFQUFFLG1CQUFtQixDQUFDLFNBQVMsSUFBSSxFQUFFO1FBQzlDLHFCQUFxQixFQUFFLG1CQUFtQixDQUFDLHFCQUFxQixJQUFJLEtBQUs7UUFDekUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3BDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxZQUFZLElBQUksQ0FBQztRQUNuRCxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxrQkFBa0IsSUFBSSxNQUFNO1FBQ3BFLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLElBQUksS0FBSztRQUMvQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsY0FBYyxJQUFJLEtBQUs7UUFDM0QsVUFBVSxFQUFFLG1CQUFtQixDQUFDLFVBQVUsSUFBSSxTQUFTO1FBQ3ZELGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxlQUFlLElBQUksRUFBRTtRQUMxRCxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxrQkFBa0IsSUFBSSxTQUFTO1FBQ3ZFLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLElBQUksU0FBUztRQUMvQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxJQUFJLFNBQVM7UUFDekQsYUFBYSxFQUFFLG1CQUFtQixDQUFDLGFBQWEsSUFBSSxFQUFFO1FBQ3RELGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLGtCQUFrQixJQUFJLFNBQVM7UUFDdkUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsb0JBQW9CLElBQUksU0FBUztRQUMzRSwyQkFBMkIsRUFDekIsbUJBQW1CLENBQUMsMkJBQTJCLElBQUksQ0FBQztRQUN0RCxVQUFVLEVBQUUsbUJBQW1CLENBQUMsVUFBVSxJQUFJLFNBQVM7UUFDdkQsYUFBYSxFQUFFLG1CQUFtQixDQUFDLGFBQWEsSUFBSSxLQUFLO1FBQ3pELGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUN4RCxZQUFZLEVBQUUsMkJBQTJCO0tBQzFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5QWdHcmlkTG9va3VwUHJvcGVydGllcyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXByb3BlcnRpZXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTa3lMb29rdXBQcm9wZXJ0aWVzRGVmYXVsdHMoXG4gIHNreUxvb2t1cFByb3BlcnRpZXM6IFNreUFnR3JpZExvb2t1cFByb3BlcnRpZXNcbikge1xuICByZXR1cm4ge1xuICAgIGFkZENsaWNrOiBza3lMb29rdXBQcm9wZXJ0aWVzLmFkZENsaWNrIHx8IHVuZGVmaW5lZCxcbiAgICBhcmlhTGFiZWw6IHNreUxvb2t1cFByb3BlcnRpZXMuYXJpYUxhYmVsIHx8ICcnLFxuICAgIGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc2t5TG9va3VwUHJvcGVydGllcy5hdXRvY29tcGxldGVBdHRyaWJ1dGUgfHwgJ29mZicsXG4gICAgZGF0YTogc2t5TG9va3VwUHJvcGVydGllcy5kYXRhIHx8IFtdLFxuICAgIGRlYm91bmNlVGltZTogc2t5TG9va3VwUHJvcGVydGllcy5kZWJvdW5jZVRpbWUgfHwgMCxcbiAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHNreUxvb2t1cFByb3BlcnRpZXMuZGVzY3JpcHRvclByb3BlcnR5IHx8ICduYW1lJyxcbiAgICBkaXNhYmxlZDogc2t5TG9va3VwUHJvcGVydGllcy5kaXNhYmxlZCB8fCBmYWxzZSxcbiAgICBlbmFibGVTaG93TW9yZTogc2t5TG9va3VwUHJvcGVydGllcy5lbmFibGVTaG93TW9yZSB8fCBmYWxzZSxcbiAgICBpZFByb3BlcnR5OiBza3lMb29rdXBQcm9wZXJ0aWVzLmlkUHJvcGVydHkgfHwgdW5kZWZpbmVkLFxuICAgIHBsYWNlaG9sZGVyVGV4dDogc2t5TG9va3VwUHJvcGVydGllcy5wbGFjZWhvbGRlclRleHQgfHwgJycsXG4gICAgcHJvcGVydGllc1RvU2VhcmNoOiBza3lMb29rdXBQcm9wZXJ0aWVzLnByb3BlcnRpZXNUb1NlYXJjaCB8fCB1bmRlZmluZWQsXG4gICAgc2VhcmNoOiBza3lMb29rdXBQcm9wZXJ0aWVzLnNlYXJjaCB8fCB1bmRlZmluZWQsXG4gICAgc2VhcmNoQXN5bmM6IHNreUxvb2t1cFByb3BlcnRpZXMuc2VhcmNoQXN5bmMgfHwgdW5kZWZpbmVkLFxuICAgIHNlYXJjaEZpbHRlcnM6IHNreUxvb2t1cFByb3BlcnRpZXMuc2VhcmNoRmlsdGVycyB8fCBbXSxcbiAgICBzZWFyY2hSZXN1bHRzTGltaXQ6IHNreUxvb2t1cFByb3BlcnRpZXMuc2VhcmNoUmVzdWx0c0xpbWl0IHx8IHVuZGVmaW5lZCxcbiAgICBzZWFyY2hSZXN1bHRUZW1wbGF0ZTogc2t5TG9va3VwUHJvcGVydGllcy5zZWFyY2hSZXN1bHRUZW1wbGF0ZSB8fCB1bmRlZmluZWQsXG4gICAgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzOlxuICAgICAgc2t5TG9va3VwUHJvcGVydGllcy5zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgfHwgMSxcbiAgICBzZWxlY3RNb2RlOiBza3lMb29rdXBQcm9wZXJ0aWVzLnNlbGVjdE1vZGUgfHwgdW5kZWZpbmVkLFxuICAgIHNob3dBZGRCdXR0b246IHNreUxvb2t1cFByb3BlcnRpZXMuc2hvd0FkZEJ1dHRvbiB8fCBmYWxzZSxcbiAgICBzaG93TW9yZUNvbmZpZzogc2t5TG9va3VwUHJvcGVydGllcy5zaG93TW9yZUNvbmZpZyB8fCB7fSxcbiAgICB3cmFwcGVyQ2xhc3M6ICdhZy1jdXN0b20tY29tcG9uZW50LXBvcHVwJyxcbiAgfTtcbn1cbiJdfQ==
@@ -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.3.2", ngImport: i0, type: SkyAgGridCellEditorAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ SkyAgGridCellEditorAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", 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.3.2", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7Ozs7O0FBT3ZCOztHQUVHO0FBT0gsTUFBTSxPQUFPLHdDQUF3QztJQU5yRDtRQVlTLDJCQUFzQixHQUFvQyxFQUFFLENBQUM7S0FxQnJFO0lBZlEsTUFBTSxDQUFDLE1BQXVDO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsSUFBSSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7O3FJQTFCVSx3Q0FBd0M7eUhBQXhDLHdDQUF3QywyS0FTSCxVQUFVLDZCQzlCNUQsOG5DQThCQTsyRkRUYSx3Q0FBd0M7a0JBTnBELFNBQVM7K0JBQ0Usc0NBQXNDLG1CQUcvQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVl4QyxLQUFLO3NCQURYLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7IFNreUFnR3JpZEF1dG9jb21wbGV0ZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi90eXBlcy9hdXRvY29tcGxldGUtcHJvcGVydGllcyc7XG5pbXBvcnQgeyBTa3lDZWxsRWRpdG9yQXV0b2NvbXBsZXRlUGFyYW1zIH0gZnJvbSAnLi4vLi4vdHlwZXMvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLXBhcmFtcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1hZy1ncmlkLWNlbGwtZWRpdG9yLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBJQ2VsbEVkaXRvckFuZ3VsYXJDb21wXG57XG4gIHB1YmxpYyBjdXJyZW50U2VsZWN0aW9uOiBhbnk7XG4gIHB1YmxpYyBjb2x1bW5IZWFkZXI6IHN0cmluZztcbiAgcHVibGljIHJvd051bWJlcjogbnVtYmVyO1xuICBwdWJsaWMgc2t5Q29tcG9uZW50UHJvcGVydGllczogU2t5QWdHcmlkQXV0b2NvbXBsZXRlUHJvcGVydGllcyA9IHt9O1xuICBwcml2YXRlIHBhcmFtczogU2t5Q2VsbEVkaXRvckF1dG9jb21wbGV0ZVBhcmFtcztcblxuICBAVmlld0NoaWxkKCdza3lDZWxsRWRpdG9yQXV0b2NvbXBsZXRlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgYWdJbml0KHBhcmFtczogU2t5Q2VsbEVkaXRvckF1dG9jb21wbGV0ZVBhcmFtcykge1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMucGFyYW1zLnZhbHVlO1xuICAgIHRoaXMuY29sdW1uSGVhZGVyID0gdGhpcy5wYXJhbXMuY29sRGVmICYmIHRoaXMucGFyYW1zLmNvbERlZi5oZWFkZXJOYW1lO1xuICAgIHRoaXMucm93TnVtYmVyID0gdGhpcy5wYXJhbXMucm93SW5kZXggKyAxO1xuICAgIHRoaXMuc2t5Q29tcG9uZW50UHJvcGVydGllcyA9IHRoaXMucGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMgfHwge307XG4gIH1cblxuICBwdWJsaWMgYWZ0ZXJHdWlBdHRhY2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZWxlY3Rpb247XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktYWctZ3JpZC1jZWxsLWVkaXRvci1hdXRvY29tcGxldGVcIj5cbiAgPHNreS1hdXRvY29tcGxldGVcbiAgICBbZGF0YV09XCJza3lDb21wb25lbnRQcm9wZXJ0aWVzLmRhdGFcIlxuICAgIFtkZWJvdW5jZVRpbWVdPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5kZWJvdW5jZVRpbWVcIlxuICAgIFtkZXNjcmlwdG9yUHJvcGVydHldPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5kZXNjcmlwdG9yUHJvcGVydHlcIlxuICAgIFtwcm9wZXJ0aWVzVG9TZWFyY2hdPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5wcm9wZXJ0aWVzVG9TZWFyY2hcIlxuICAgIFtzZWFyY2hdPVwic2t5Q29tcG9uZW50UHJvcGVydGllcy5zZWFyY2hcIlxuICAgIFtzZWFyY2hGaWx0ZXJzXT1cInNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VhcmNoRmlsdGVyc1wiXG4gICAgW3NlYXJjaFJlc3VsdHNMaW1pdF09XCJza3lDb21wb25lbnRQcm9wZXJ0aWVzLnNlYXJjaFJlc3VsdHNMaW1pdFwiXG4gICAgW3NlYXJjaFJlc3VsdFRlbXBsYXRlXT1cInNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VhcmNoUmVzdWx0VGVtcGxhdGVcIlxuICAgIFtzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNdPVwiXG4gICAgICBza3lDb21wb25lbnRQcm9wZXJ0aWVzLnNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc1xuICAgIFwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJcbiAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VsZWN0aW9uQ2hhbmdlICYmXG4gICAgICAgIHNreUNvbXBvbmVudFByb3BlcnRpZXMuc2VsZWN0aW9uQ2hhbmdlKCRldmVudClcbiAgICBcIlxuICA+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.3.2", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ SkyAgGridCellEditorAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, declarations: [SkyAgGridCellEditorAutocompleteComponent], imports: [FormsModule, SkyAgGridResourcesModule, SkyAutocompleteModule], exports: [SkyAgGridCellEditorAutocompleteComponent] });
11
+ SkyAgGridCellEditorAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyAgGridCellEditorAutocompleteModule, imports: [[FormsModule, SkyAgGridResourcesModule, SkyAutocompleteModule]] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", 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==