@fundamental-ngx/cdk 0.54.2 → 0.55.0-rc.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 (256) hide show
  1. package/fesm2022/fundamental-ngx-cdk-data-source.mjs +7 -7
  2. package/fesm2022/fundamental-ngx-cdk-forms.mjs +21 -14
  3. package/fesm2022/fundamental-ngx-cdk-forms.mjs.map +1 -1
  4. package/fesm2022/fundamental-ngx-cdk-utils.mjs +361 -312
  5. package/fesm2022/fundamental-ngx-cdk-utils.mjs.map +1 -1
  6. package/fesm2022/fundamental-ngx-cdk.mjs +4 -4
  7. package/forms/cva/cva.directive.d.ts +7 -3
  8. package/package.json +8 -16
  9. package/utils/abstract-fd-ngx-class.d.ts +1 -1
  10. package/utils/directives/overflow-list/overflow-list.directive.d.ts +7 -0
  11. package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +1 -1
  12. package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +1 -1
  13. package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +1 -1
  14. package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +1 -1
  15. package/utils/drag-and-drop/drag-and-drop.module.d.ts +7 -7
  16. package/utils/toast/base-toast-positions.d.ts +16 -16
  17. package/utils/toast/classes/base-toast-animated-container.component.d.ts +1 -1
  18. package/utils/toast/classes/base-toast-container.component.d.ts +1 -1
  19. package/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.d.ts +1 -1
  20. package/esm2022/data-source/base/abstract-data-provider.class.mjs +0 -142
  21. package/esm2022/data-source/base/base-data-source.class.mjs +0 -112
  22. package/esm2022/data-source/data-source.directive.mjs +0 -95
  23. package/esm2022/data-source/data-source.module.mjs +0 -16
  24. package/esm2022/data-source/fundamental-ngx-cdk-data-source.mjs +0 -5
  25. package/esm2022/data-source/helpers/apply-datasource-directive.mjs +0 -7
  26. package/esm2022/data-source/helpers/common.mjs +0 -17
  27. package/esm2022/data-source/helpers/is-datasource.mjs +0 -7
  28. package/esm2022/data-source/index.mjs +0 -9
  29. package/esm2022/data-source/models/data-source-provider.mjs +0 -2
  30. package/esm2022/data-source/models/data-source.mjs +0 -2
  31. package/esm2022/data-source/models/index.mjs +0 -4
  32. package/esm2022/data-source/models/matching-strategy.mjs +0 -7
  33. package/esm2022/data-source/tokens.mjs +0 -6
  34. package/esm2022/forms/cva/cva-control.class.mjs +0 -42
  35. package/esm2022/forms/cva/cva.directive.mjs +0 -321
  36. package/esm2022/forms/forms.module.mjs +0 -16
  37. package/esm2022/forms/fundamental-ngx-cdk-forms.mjs +0 -5
  38. package/esm2022/forms/helpers/state.mjs +0 -7
  39. package/esm2022/forms/index.mjs +0 -13
  40. package/esm2022/forms/models/control-type.model.mjs +0 -2
  41. package/esm2022/forms/models/cva.mjs +0 -2
  42. package/esm2022/forms/models/form-error.mjs +0 -2
  43. package/esm2022/forms/models/form-field.mjs +0 -9
  44. package/esm2022/forms/models/form-state.mjs +0 -2
  45. package/esm2022/forms/models/select-item.mjs +0 -14
  46. package/esm2022/forms/tokens/form-field-control.token.mjs +0 -3
  47. package/esm2022/forms/tokens/form-field.token.mjs +0 -3
  48. package/esm2022/fundamental-ngx-cdk.mjs +0 -5
  49. package/esm2022/fundamental-ngx.module.mjs +0 -19
  50. package/esm2022/index.mjs +0 -5
  51. package/esm2022/utils/abstract-fd-ngx-class.mjs +0 -61
  52. package/esm2022/utils/async-strategy/function-strategy.class.mjs +0 -12
  53. package/esm2022/utils/async-strategy/index.mjs +0 -7
  54. package/esm2022/utils/async-strategy/observable-strategy.class.mjs +0 -13
  55. package/esm2022/utils/async-strategy/promise-strategy.class.mjs +0 -12
  56. package/esm2022/utils/async-strategy/select-strategy.class.mjs +0 -23
  57. package/esm2022/utils/async-strategy/subscription-strategy.interface.mjs +0 -2
  58. package/esm2022/utils/async-strategy/value-strategy.class.mjs +0 -10
  59. package/esm2022/utils/coercion/array.mjs +0 -7
  60. package/esm2022/utils/components/dynamic-portal/dynamic-portal.component.mjs +0 -98
  61. package/esm2022/utils/components/index.mjs +0 -2
  62. package/esm2022/utils/consts/error-messages.mjs +0 -6
  63. package/esm2022/utils/consts/index.mjs +0 -5
  64. package/esm2022/utils/consts/overflow-priority-score.mjs +0 -8
  65. package/esm2022/utils/consts/unicode-letters.regex.mjs +0 -11
  66. package/esm2022/utils/consts/unicode-numbers.regex.mjs +0 -8
  67. package/esm2022/utils/datatypes/color-accent.datatype.mjs +0 -2
  68. package/esm2022/utils/datatypes/hash.datatype.mjs +0 -2
  69. package/esm2022/utils/datatypes/index.mjs +0 -5
  70. package/esm2022/utils/datatypes/object-nesting.types.mjs +0 -2
  71. package/esm2022/utils/datatypes/size.datatype.mjs +0 -2
  72. package/esm2022/utils/decorators/apply-css-class.decorator.mjs +0 -61
  73. package/esm2022/utils/decorators/apply-css-style.decorator.mjs +0 -26
  74. package/esm2022/utils/decorators/coerce-boolean.mjs +0 -7
  75. package/esm2022/utils/decorators/coerce-css-pixel.mjs +0 -4
  76. package/esm2022/utils/decorators/index.mjs +0 -6
  77. package/esm2022/utils/decorators/setter-alternator.mjs +0 -18
  78. package/esm2022/utils/deprecated-selector.class.mjs +0 -35
  79. package/esm2022/utils/directives/auto-complete/auto-complete.directive.mjs +0 -135
  80. package/esm2022/utils/directives/auto-complete/auto-complete.module.mjs +0 -17
  81. package/esm2022/utils/directives/breakpoints/breakpoint.directive.mjs +0 -156
  82. package/esm2022/utils/directives/breakpoints/responsive-breakpoints.mjs +0 -19
  83. package/esm2022/utils/directives/clicked/clicked-behavior.module.mjs +0 -35
  84. package/esm2022/utils/directives/clicked/clicked-event.plugin.mjs +0 -79
  85. package/esm2022/utils/directives/clicked/clicked.directive.mjs +0 -36
  86. package/esm2022/utils/directives/clicked/element-click.observable.mjs +0 -21
  87. package/esm2022/utils/directives/clicked/fdk-clicked-provider.service.mjs +0 -48
  88. package/esm2022/utils/directives/clicked/index.mjs +0 -6
  89. package/esm2022/utils/directives/clicked/provide-fdk-clicked.mjs +0 -29
  90. package/esm2022/utils/directives/disabled/default-disabled-view-modifier.mjs +0 -12
  91. package/esm2022/utils/directives/disabled/disabled-behavior.directive.mjs +0 -84
  92. package/esm2022/utils/directives/disabled/disabled-behavior.interface.mjs +0 -2
  93. package/esm2022/utils/directives/disabled/disabled-behavior.module.mjs +0 -16
  94. package/esm2022/utils/directives/disabled/disabled-view-modifier.interface.mjs +0 -2
  95. package/esm2022/utils/directives/disabled/disabled.observer.mjs +0 -35
  96. package/esm2022/utils/directives/disabled/fdk-disabled-provider.service.mjs +0 -101
  97. package/esm2022/utils/directives/disabled/fdk-disabled.token.mjs +0 -3
  98. package/esm2022/utils/directives/disabled/index.mjs +0 -9
  99. package/esm2022/utils/directives/disabled/set-disabled-state.mjs +0 -18
  100. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +0 -17
  101. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +0 -67
  102. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +0 -88
  103. package/esm2022/utils/directives/focus-key-manager/focus-key-manager.tokens.mjs +0 -3
  104. package/esm2022/utils/directives/focus-key-manager/index.mjs +0 -5
  105. package/esm2022/utils/directives/focusable-grid/focusable-grid.directive.mjs +0 -164
  106. package/esm2022/utils/directives/focusable-grid/focusable-grid.module.mjs +0 -17
  107. package/esm2022/utils/directives/focusable-grid/focusable-grid.tokens.mjs +0 -3
  108. package/esm2022/utils/directives/focusable-grid/index.mjs +0 -4
  109. package/esm2022/utils/directives/focusable-item/focusable-item.directive.mjs +0 -198
  110. package/esm2022/utils/directives/focusable-item/focusable-item.module.mjs +0 -16
  111. package/esm2022/utils/directives/focusable-item/focusable-item.tokens.mjs +0 -3
  112. package/esm2022/utils/directives/focusable-item/focusable-list.position.mjs +0 -2
  113. package/esm2022/utils/directives/focusable-item/focusable.item.mjs +0 -2
  114. package/esm2022/utils/directives/focusable-item/focusable.observer.mjs +0 -46
  115. package/esm2022/utils/directives/focusable-item/get-item-element.mjs +0 -14
  116. package/esm2022/utils/directives/focusable-item/index.mjs +0 -9
  117. package/esm2022/utils/directives/focusable-item/indirect-focusable-item.directive.mjs +0 -44
  118. package/esm2022/utils/directives/focusable-item/is-element-focusable-by-default.mjs +0 -32
  119. package/esm2022/utils/directives/focusable-item/is-item-focusable.mjs +0 -8
  120. package/esm2022/utils/directives/focusable-list/focusable-list.directive.mjs +0 -300
  121. package/esm2022/utils/directives/focusable-list/focusable-list.module.mjs +0 -17
  122. package/esm2022/utils/directives/focusable-list/focusable-list.tokens.mjs +0 -3
  123. package/esm2022/utils/directives/focusable-list/index.mjs +0 -6
  124. package/esm2022/utils/directives/focusable-list/indirect-focusable-list.directive.mjs +0 -59
  125. package/esm2022/utils/directives/focusable-list/scroll.mjs +0 -43
  126. package/esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +0 -55
  127. package/esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +0 -16
  128. package/esm2022/utils/directives/ignore-click-on-selection/tokens.mjs +0 -3
  129. package/esm2022/utils/directives/index.mjs +0 -35
  130. package/esm2022/utils/directives/initial-focus/initial-focus.directive.mjs +0 -99
  131. package/esm2022/utils/directives/initial-focus/initial-focus.module.mjs +0 -16
  132. package/esm2022/utils/directives/intersection-spy/intersection-spy.directive.mjs +0 -42
  133. package/esm2022/utils/directives/line-clamp/line-clamp.directive.mjs +0 -213
  134. package/esm2022/utils/directives/line-clamp/line-clamp.module.mjs +0 -16
  135. package/esm2022/utils/directives/only-digits/only-digits.directive.mjs +0 -206
  136. package/esm2022/utils/directives/only-digits/only-digits.module.mjs +0 -16
  137. package/esm2022/utils/directives/overflow-list/overflow-list-item.directive.mjs +0 -18
  138. package/esm2022/utils/directives/overflow-list/overflow-list.directive.mjs +0 -114
  139. package/esm2022/utils/directives/overflow-list/overflow-list.module.mjs +0 -17
  140. package/esm2022/utils/directives/readonly/default-readonly-view-modifier.mjs +0 -12
  141. package/esm2022/utils/directives/readonly/fdk-readonly-provider.service.mjs +0 -101
  142. package/esm2022/utils/directives/readonly/fdk-readonly.token.mjs +0 -3
  143. package/esm2022/utils/directives/readonly/index.mjs +0 -10
  144. package/esm2022/utils/directives/readonly/readonly-behavior.directive.mjs +0 -67
  145. package/esm2022/utils/directives/readonly/readonly-behavior.interface.mjs +0 -2
  146. package/esm2022/utils/directives/readonly/readonly-behavior.module.mjs +0 -16
  147. package/esm2022/utils/directives/readonly/readonly-view-modifier.interface.mjs +0 -2
  148. package/esm2022/utils/directives/readonly/readonly.observer.mjs +0 -33
  149. package/esm2022/utils/directives/readonly/set-readonly-state.mjs +0 -14
  150. package/esm2022/utils/directives/repeat/repeat.directive.mjs +0 -34
  151. package/esm2022/utils/directives/repeat/repeat.module.mjs +0 -16
  152. package/esm2022/utils/directives/resize/resize-handle.directive.mjs +0 -18
  153. package/esm2022/utils/directives/resize/resize.directive.mjs +0 -241
  154. package/esm2022/utils/directives/resize/resize.module.mjs +0 -17
  155. package/esm2022/utils/directives/resize-observer/index.mjs +0 -2
  156. package/esm2022/utils/directives/resize-observer/resize-observer.directive.mjs +0 -29
  157. package/esm2022/utils/directives/selectable-list/index.mjs +0 -8
  158. package/esm2022/utils/directives/selectable-list/select-component-root.token.mjs +0 -3
  159. package/esm2022/utils/directives/selectable-list/selectable-item.directive.mjs +0 -147
  160. package/esm2022/utils/directives/selectable-list/selectable-item.token.mjs +0 -3
  161. package/esm2022/utils/directives/selectable-list/selectable-list.directive.mjs +0 -85
  162. package/esm2022/utils/directives/selectable-list/selectable-list.module.mjs +0 -17
  163. package/esm2022/utils/directives/selectable-list/selectable-list.tokens.mjs +0 -3
  164. package/esm2022/utils/directives/selectable-list/selection.service.mjs +0 -138
  165. package/esm2022/utils/directives/template/template.directive.mjs +0 -25
  166. package/esm2022/utils/directives/template/template.module.mjs +0 -16
  167. package/esm2022/utils/directives/truncate/truncate.directive.mjs +0 -94
  168. package/esm2022/utils/directives/truncate/truncate.module.mjs +0 -16
  169. package/esm2022/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +0 -274
  170. package/esm2022/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +0 -88
  171. package/esm2022/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +0 -83
  172. package/esm2022/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +0 -378
  173. package/esm2022/utils/drag-and-drop/dnd.interfaces.mjs +0 -2
  174. package/esm2022/utils/drag-and-drop/drag-and-drop.module.mjs +0 -22
  175. package/esm2022/utils/drag-and-drop/index.mjs +0 -8
  176. package/esm2022/utils/drag-and-drop/tokens.mjs +0 -4
  177. package/esm2022/utils/dynamic-component/dynamic-component-config.mjs +0 -2
  178. package/esm2022/utils/dynamic-component/dynamic-component-container.mjs +0 -32
  179. package/esm2022/utils/dynamic-component/dynamic-component-injector.mjs +0 -20
  180. package/esm2022/utils/dynamic-component/dynamic-component.service.mjs +0 -100
  181. package/esm2022/utils/dynamic-component/index.mjs +0 -5
  182. package/esm2022/utils/functions/consumer-provider-factory.mjs +0 -12
  183. package/esm2022/utils/functions/element-size.mjs +0 -23
  184. package/esm2022/utils/functions/get-document-font-size.mjs +0 -9
  185. package/esm2022/utils/functions/index.mjs +0 -14
  186. package/esm2022/utils/functions/intersection-observable.mjs +0 -26
  187. package/esm2022/utils/functions/is-compact-density.mjs +0 -11
  188. package/esm2022/utils/functions/is-odd.mjs +0 -9
  189. package/esm2022/utils/functions/key-util.mjs +0 -90
  190. package/esm2022/utils/functions/module-deprecations-provider.mjs +0 -18
  191. package/esm2022/utils/functions/parser-file-size.mjs +0 -37
  192. package/esm2022/utils/functions/random-color-accent.mjs +0 -5
  193. package/esm2022/utils/functions/resize-observable.mjs +0 -33
  194. package/esm2022/utils/functions/scroll.mjs +0 -19
  195. package/esm2022/utils/functions/uuidv4-generator.mjs +0 -12
  196. package/esm2022/utils/fundamental-ngx-cdk-utils.mjs +0 -5
  197. package/esm2022/utils/helpers/destroy-observable.mjs +0 -12
  198. package/esm2022/utils/helpers/dfs.mjs +0 -47
  199. package/esm2022/utils/helpers/get-native-element.mjs +0 -19
  200. package/esm2022/utils/helpers/index.mjs +0 -6
  201. package/esm2022/utils/helpers/range-selector.mjs +0 -117
  202. package/esm2022/utils/helpers/warn-once.mjs +0 -9
  203. package/esm2022/utils/index.mjs +0 -25
  204. package/esm2022/utils/interfaces/content-density.mjs +0 -2
  205. package/esm2022/utils/interfaces/css-class-builder.interface.mjs +0 -2
  206. package/esm2022/utils/interfaces/css-style-builder.interface.mjs +0 -2
  207. package/esm2022/utils/interfaces/has-element-ref.interface.mjs +0 -2
  208. package/esm2022/utils/interfaces/index.mjs +0 -8
  209. package/esm2022/utils/interfaces/keyboard-support-item.interface.mjs +0 -2
  210. package/esm2022/utils/interfaces/module-deprecation.interface.mjs +0 -2
  211. package/esm2022/utils/interfaces/require.interface.mjs +0 -2
  212. package/esm2022/utils/list-item/list-item-utils.mjs +0 -3
  213. package/esm2022/utils/models/nullable.mjs +0 -2
  214. package/esm2022/utils/pipes/async-or-sync.pipe.mjs +0 -35
  215. package/esm2022/utils/pipes/displayFn.pipe.mjs +0 -18
  216. package/esm2022/utils/pipes/filter-strings.pipe.mjs +0 -31
  217. package/esm2022/utils/pipes/index.mjs +0 -12
  218. package/esm2022/utils/pipes/is-compact.pipe.mjs +0 -16
  219. package/esm2022/utils/pipes/make-async.pipe.mjs +0 -24
  220. package/esm2022/utils/pipes/pipe.module.mjs +0 -65
  221. package/esm2022/utils/pipes/safe.pipe.mjs +0 -37
  222. package/esm2022/utils/pipes/search-highlight.pipe.mjs +0 -40
  223. package/esm2022/utils/pipes/truncate.pipe.mjs +0 -18
  224. package/esm2022/utils/pipes/two-digits.pipe.mjs +0 -23
  225. package/esm2022/utils/pipes/value-by-path.pipe.mjs +0 -16
  226. package/esm2022/utils/services/content-density.service.mjs +0 -35
  227. package/esm2022/utils/services/destroyed.service.mjs +0 -26
  228. package/esm2022/utils/services/focus-trap.service.mjs +0 -92
  229. package/esm2022/utils/services/index.mjs +0 -10
  230. package/esm2022/utils/services/keyboard-support/keyboard-support.service.mjs +0 -73
  231. package/esm2022/utils/services/local-storage.service.mjs +0 -38
  232. package/esm2022/utils/services/observers/attribute.observer.mjs +0 -81
  233. package/esm2022/utils/services/resize-observer.service.mjs +0 -92
  234. package/esm2022/utils/services/rtl.service.mjs +0 -32
  235. package/esm2022/utils/services/tabbable-element.service.mjs +0 -43
  236. package/esm2022/utils/toast/base-toast-animations.mjs +0 -22
  237. package/esm2022/utils/toast/base-toast-positions.mjs +0 -108
  238. package/esm2022/utils/toast/base-toast.service.mjs +0 -261
  239. package/esm2022/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.mjs +0 -36
  240. package/esm2022/utils/toast/classes/base-toast-animated-container.component.mjs +0 -87
  241. package/esm2022/utils/toast/classes/base-toast-config.mjs +0 -23
  242. package/esm2022/utils/toast/classes/base-toast-container.component.mjs +0 -72
  243. package/esm2022/utils/toast/classes/base-toast-overlay-container.mjs +0 -25
  244. package/esm2022/utils/toast/classes/base-toast-ref.mjs +0 -45
  245. package/esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.mjs +0 -19
  246. package/esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.mjs +0 -39
  247. package/esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.mjs +0 -23
  248. package/esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.mjs +0 -25
  249. package/esm2022/utils/toast/index.mjs +0 -16
  250. package/esm2022/utils/toast/interfaces/toast-container-component.interface.mjs +0 -2
  251. package/esm2022/utils/toast/interfaces/toast-duration-dismissible-container-component.interface.mjs +0 -2
  252. package/esm2022/utils/toast/interfaces/toast-text-component.interface.mjs +0 -2
  253. package/esm2022/utils/tokens/module-deprecations.token.mjs +0 -3
  254. package/esm2022/utils/tokens/viewport-size.observable.mjs +0 -20
  255. package/esm2022/utils/typecheck.mjs +0 -75
  256. package/esm2022/utils/utils.module.mjs +0 -131
@@ -1,95 +0,0 @@
1
- import { DestroyRef, Directive, EventEmitter, inject, Input, Output } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { BehaviorSubject, Subscription } from 'rxjs';
4
- import { isDataSource } from './helpers/is-datasource';
5
- import { FD_DATA_SOURCE_TRANSFORMER } from './tokens';
6
- import * as i0 from "@angular/core";
7
- export class DataSourceDirective {
8
- constructor() {
9
- /**
10
- * Emits when the data source object has been changed.
11
- */
12
- this.dataSourceChanged = new EventEmitter();
13
- /**
14
- * Event emitted when datasource content has been changed.
15
- */
16
- this.dataChanged = new EventEmitter();
17
- /**
18
- * Event emitted when data provider loading state has been changed.
19
- */
20
- this.isLoading = new EventEmitter();
21
- /**
22
- * Data stream. Emits when new data retrieved.
23
- */
24
- this.dataChanged$ = new BehaviorSubject([]);
25
- /** @hidden */
26
- this._destroyRef = inject(DestroyRef);
27
- /** @hidden */
28
- this._dsSubscription = new Subscription();
29
- /** @hidden */
30
- this._dataSourceTransformer = inject(FD_DATA_SOURCE_TRANSFORMER);
31
- }
32
- /**
33
- * Data source.
34
- * @param source
35
- */
36
- set dataSource(source) {
37
- this._dataSource = source;
38
- this._initializeDataSource();
39
- this.dataSourceChanged.next();
40
- }
41
- get dataSource() {
42
- return this._dataSource;
43
- }
44
- /** @hidden */
45
- ngOnDestroy() {
46
- this.dataSourceProvider?.unsubscribe();
47
- this._dsSubscription?.unsubscribe();
48
- }
49
- /** @Hidden */
50
- _toDataStream(source) {
51
- return !source
52
- ? undefined
53
- : this._dataSourceTransformer
54
- ? this._dataSourceTransformer.parse(source)
55
- : undefined;
56
- }
57
- /** @hidden */
58
- _initializeDataSource() {
59
- if (isDataSource(this.dataSource)) {
60
- this.dataSourceProvider?.unsubscribe();
61
- this._dsSubscription?.unsubscribe();
62
- }
63
- // Convert whatever comes in as DataSource, so we can work with it identically
64
- this.dataSourceProvider = this._toDataStream(this.dataSource);
65
- if (!this.dataSourceProvider) {
66
- return;
67
- }
68
- this._dsSubscription = new Subscription();
69
- this._dsSubscription.add(this.dataSourceProvider.dataLoading
70
- .pipe(takeUntilDestroyed(this._destroyRef))
71
- .subscribe((isLoading) => this.isLoading.emit(isLoading)));
72
- this._dsSubscription.add(this.dataSourceProvider.dataChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((data) => {
73
- this.dataChanged.emit(data);
74
- this.dataChanged$.next(data);
75
- }));
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DataSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: DataSourceDirective, isStandalone: true, selector: "[fdkDataSource]", inputs: { dataSource: "dataSource" }, outputs: { dataSourceChanged: "dataSourceChanged", dataChanged: "dataChanged", isLoading: "isLoading" }, ngImport: i0 }); }
79
- }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DataSourceDirective, decorators: [{
81
- type: Directive,
82
- args: [{
83
- selector: '[fdkDataSource]',
84
- standalone: true
85
- }]
86
- }], propDecorators: { dataSourceChanged: [{
87
- type: Output
88
- }], dataChanged: [{
89
- type: Output
90
- }], isLoading: [{
91
- type: Output
92
- }], dataSource: [{
93
- type: Input
94
- }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU10RCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBT0k7O1dBRUc7UUFFTSxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXREOztXQUVHO1FBRU0sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRS9DOztXQUVHO1FBRU0sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQmpEOztXQUVHO1FBQ00saUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUVyRCxjQUFjO1FBQ0ssZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFLcEQsY0FBYztRQUNOLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QyxjQUFjO1FBQ0csMkJBQXNCLEdBQUcsTUFBTSxDQUF5QiwwQkFBMEIsQ0FBQyxDQUFDO0tBOEN4RztJQS9FRzs7O09BR0c7SUFDSCxJQUNJLFVBQVUsQ0FBQyxNQUErQjtRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBc0JELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWM7SUFDSixhQUFhLENBQUMsTUFBNEI7UUFDaEQsT0FBTyxDQUFDLE1BQU07WUFDVixDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCO2dCQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEIsQ0FBQztJQUVELGNBQWM7SUFDTixxQkFBcUI7UUFDekIsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBRXZDLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVzthQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDaEUsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5RixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs4R0FuR1EsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQVFZLGlCQUFpQjtzQkFEekIsTUFBTTtnQkFPRSxXQUFXO3NCQURuQixNQUFNO2dCQU9FLFNBQVM7c0JBRGpCLE1BQU07Z0JBUUgsVUFBVTtzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNEYXRhU291cmNlIH0gZnJvbSAnLi9oZWxwZXJzL2lzLWRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSwgRGF0YVNvdXJjZVBhcnNlciwgRGF0YVNvdXJjZVByb3ZpZGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIgfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0RhdGFTb3VyY2VdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VEaXJlY3RpdmU8VCA9IGFueSwgUCBleHRlbmRzIERhdGFTb3VyY2VQcm92aWRlcjxUPiA9IERhdGFTb3VyY2VQcm92aWRlcjxUPj5cbiAgICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIGRhdGEgc291cmNlIG9iamVjdCBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGRhdGFTb3VyY2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGFzb3VyY2UgY29udGVudCBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGRhdGFDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBwcm92aWRlciBsb2FkaW5nIHN0YXRlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXNMb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogRGF0YSBzb3VyY2UuXG4gICAgICogQHBhcmFtIHNvdXJjZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2Uoc291cmNlOiBEYXRhU291cmNlPFQsIFA+IHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gc291cmNlO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplRGF0YVNvdXJjZSgpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2VDaGFuZ2VkLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBEYXRhU291cmNlPFQsIFA+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGF0YVNvdXJjZVByb3ZpZGVyOiBQIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRGF0YSBzdHJlYW0uIEVtaXRzIHdoZW4gbmV3IGRhdGEgcmV0cmlldmVkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRhdGFDaGFuZ2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogRGF0YVNvdXJjZTxULCBQPiB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlVHJhbnNmb3JtZXIgPSBpbmplY3Q8RGF0YVNvdXJjZVBhcnNlcjxULCBQPj4oRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlUHJvdmlkZXI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF90b0RhdGFTdHJlYW0oc291cmNlOiBEYXRhU291cmNlPFQ+IHwgbnVsbCk6IFAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gIXNvdXJjZVxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdGhpcy5fZGF0YVNvdXJjZVRyYW5zZm9ybWVyXG4gICAgICAgICAgICAgID8gdGhpcy5fZGF0YVNvdXJjZVRyYW5zZm9ybWVyLnBhcnNlKHNvdXJjZSlcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VQcm92aWRlcj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29udmVydCB3aGF0ZXZlciBjb21lcyBpbiBhcyBEYXRhU291cmNlLCBzbyB3ZSBjYW4gd29yayB3aXRoIGl0IGlkZW50aWNhbGx5XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVByb3ZpZGVyID0gdGhpcy5fdG9EYXRhU3RyZWFtKHRoaXMuZGF0YVNvdXJjZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmRhdGFTb3VyY2VQcm92aWRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlUHJvdmlkZXIuZGF0YUxvYWRpbmdcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoaXNMb2FkaW5nKSA9PiB0aGlzLmlzTG9hZGluZy5lbWl0KGlzTG9hZGluZykpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlUHJvdmlkZXIuZGF0YUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZWQuZW1pdChkYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VkJC5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DataSourceDirective } from './data-source.directive';
3
- import * as i0 from "@angular/core";
4
- export class DataSourceModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: DataSourceModule, imports: [DataSourceDirective], exports: [DataSourceDirective] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DataSourceModule }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DataSourceModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [DataSourceDirective],
13
- exports: [DataSourceDirective]
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTTlELE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLFlBSGYsbUJBQW1CLGFBQ25CLG1CQUFtQjsrR0FFcEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZURpcmVjdGl2ZSB9IGZyb20gJy4vZGF0YS1zb3VyY2UuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbRGF0YVNvdXJjZURpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0RhdGFTb3VyY2VEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VNb2R1bGUge31cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNkay1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL2RhdGEtc291cmNlL2Z1bmRhbWVudGFsLW5neC1jZGstZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -1,7 +0,0 @@
1
- import { DataSourceDirective } from '../data-source.directive';
2
- export const applyDatasourceDirective = {
3
- directive: DataSourceDirective,
4
- inputs: ['dataSource'],
5
- outputs: ['dataChanged']
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktZGF0YXNvdXJjZS1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9kYXRhLXNvdXJjZS9oZWxwZXJzL2FwcGx5LWRhdGFzb3VyY2UtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQU0zQjtJQUNOLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3RCLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RhdGEtc291cmNlLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBhcHBseURhdGFzb3VyY2VEaXJlY3RpdmU6XG4gICAgfCBUeXBlPHVua25vd24+XG4gICAgfCB7XG4gICAgICAgICAgZGlyZWN0aXZlOiBUeXBlPHVua25vd24+O1xuICAgICAgICAgIGlucHV0cz86IHN0cmluZ1tdO1xuICAgICAgICAgIG91dHB1dHM/OiBzdHJpbmdbXTtcbiAgICAgIH0gPSB7XG4gICAgZGlyZWN0aXZlOiBEYXRhU291cmNlRGlyZWN0aXZlLFxuICAgIGlucHV0czogWydkYXRhU291cmNlJ10sXG4gICAgb3V0cHV0czogWydkYXRhQ2hhbmdlZCddXG59O1xuIl19
@@ -1,17 +0,0 @@
1
- import { isBlank, isStringMap, isType } from '@fundamental-ngx/cdk/utils';
2
- /** @Hidden */
3
- export function getMatchingStrategyStartsWithPerTermReqexp(value) {
4
- return new RegExp(`(\\s|^)(${value})`, 'gi');
5
- }
6
- /** @hidden */
7
- export function objectValues(obj) {
8
- return Object.keys(obj).map((key) => obj[key]);
9
- }
10
- /** @hidden */
11
- export function objectToName(target) {
12
- if (isBlank(target) || (!isStringMap(target) && !isType(target))) {
13
- throw new Error(' Cannot convert. Uknown object');
14
- }
15
- return isType(target) ? target.prototype.constructor.name : target.constructor.name;
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvZGF0YS1zb3VyY2UvaGVscGVycy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJMUUsY0FBYztBQUNkLE1BQU0sVUFBVSwwQ0FBMEMsQ0FBQyxLQUFhO0lBQ3BFLE9BQU8sSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBUTtJQUNqQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBVztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0FBQ3hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0JsYW5rLCBpc1N0cmluZ01hcCwgaXNUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBQcm92aWRlclBhcmFtcyA9IFJlYWRvbmx5TWFwPHN0cmluZywgYW55PjtcblxuLyoqIEBIaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGluZ1N0cmF0ZWd5U3RhcnRzV2l0aFBlclRlcm1SZXFleHAodmFsdWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYChcXFxcc3xeKSgke3ZhbHVlfSlgLCAnZ2knKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RWYWx1ZXMob2JqOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubWFwKChrZXkpID0+IG9ialtrZXldKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb05hbWUodGFyZ2V0OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChpc0JsYW5rKHRhcmdldCkgfHwgKCFpc1N0cmluZ01hcCh0YXJnZXQpICYmICFpc1R5cGUodGFyZ2V0KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcgQ2Fubm90IGNvbnZlcnQuIFVrbm93biBvYmplY3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNUeXBlKHRhcmdldCkgPyB0YXJnZXQucHJvdG90eXBlLmNvbnN0cnVjdG9yLm5hbWUgOiB0YXJnZXQuY29uc3RydWN0b3IubmFtZTtcbn1cbiJdfQ==
@@ -1,7 +0,0 @@
1
- /**
2
- * Checks whether passed value is a valid data source.
3
- */
4
- export function isDataSource(value) {
5
- return value && typeof value.unsubscribe === 'function' && value.dataChanges;
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZGF0YXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL2RhdGEtc291cmNlL2hlbHBlcnMvaXMtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQVUsS0FBVTtJQUM1QyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxXQUFXLEtBQUssVUFBVSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2VQcm92aWRlciB9IGZyb20gJy4uL21vZGVscy9kYXRhLXNvdXJjZS1wcm92aWRlcic7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgcGFzc2VkIHZhbHVlIGlzIGEgdmFsaWQgZGF0YSBzb3VyY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFTb3VyY2U8VCA9IGFueT4odmFsdWU6IGFueSk6IHZhbHVlIGlzIERhdGFTb3VyY2VQcm92aWRlcjxUPiB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS51bnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZS5kYXRhQ2hhbmdlcztcbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- export * from './data-source.module';
2
- export * from './base/abstract-data-provider.class';
3
- export * from './base/base-data-source.class';
4
- export * from './data-source.directive';
5
- export * from './helpers/apply-datasource-directive';
6
- export * from './helpers/is-datasource';
7
- export * from './models';
8
- export * from './tokens';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9kYXRhLXNvdXJjZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0YS1zb3VyY2UubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9iYXNlL2Fic3RyYWN0LWRhdGEtcHJvdmlkZXIuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlL2Jhc2UtZGF0YS1zb3VyY2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLXNvdXJjZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2FwcGx5LWRhdGFzb3VyY2UtZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9pcy1kYXRhc291cmNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9kYXRhLXNvdXJjZS9tb2RlbHMvZGF0YS1zb3VyY2UtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBEYXRhIHNvdXJjZSBwcm92aWRlciBjbGFzcyBjb250cm9scyB0aGUgZGF0YSBzdHJlYW0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVNvdXJjZVByb3ZpZGVyPFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBTdHJlYW0gZW1pdHMgd2hlbiBuZXcgZGF0YSBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gICAgICovXG4gICAgZGF0YVJlcXVlc3RlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKipcbiAgICAgKiBTdHJlYW0gZW1pdHMgd2hlbiBuZXcgZGF0YSBoYXMgYmVlbiBsb2FkZWQuXG4gICAgICovXG4gICAgZGF0YVJlY2VpdmVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKlxuICAgICAqIFN0cmVhbSBlbWl0cyB3aGVuIGxvYWRpbmcgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBkYXRhTG9hZGluZzogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogU3RyZWFtIGVtaXRzIHdoZW4gZGF0YSBjaGFuZ2VkLiAqL1xuICAgIGRhdGFDaGFuZ2VzOiBPYnNlcnZhYmxlPFRbXT47XG4gICAgLyoqIENsb3NlcyB0aGUgZGF0YSBzdHJlYW0uICovXG4gICAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9kYXRhLXNvdXJjZS9tb2RlbHMvZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGFTb3VyY2VQcm92aWRlciB9IGZyb20gJy4vZGF0YS1zb3VyY2UtcHJvdmlkZXInO1xuXG4vKipcbiAqIEFjY2VwdGFibGUgZGF0YSBzb3VyY2UgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2U8VCA9IGFueSwgUCBleHRlbmRzIERhdGFTb3VyY2VQcm92aWRlcjxUPiA9IERhdGFTb3VyY2VQcm92aWRlcjxUPj4gPSBQIHwgT2JzZXJ2YWJsZTxUW10+IHwgVFtdO1xuXG4vKipcbiAqIERhdGEgc291cmNlIHBhcnNlciBpcyBhIHNwZWNpYWwgY2xhc3MgdGhhdCBwYXJzZXMgaW5jb21pbmcgZGF0YSBpbnRvIGFwcHJvcHJpYXRlIGRhdGEgc291cmNlIHByb3ZpZGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTb3VyY2VQYXJzZXI8VCA9IGFueSwgUCBleHRlbmRzIERhdGFTb3VyY2VQcm92aWRlcjxUPiA9IERhdGFTb3VyY2VQcm92aWRlcjxUPj4ge1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hpY2ggZGF0YSBwcm92aWRlciBjbGFzcyB0byBpbml0aWF0ZS5cbiAgICAgKiBAcGFyYW0gc291cmNlIGRhdGEgc291cmNlIHRvIGJlIHBhcnNlZC5cbiAgICAgKi9cbiAgICBwYXJzZShzb3VyY2U6IERhdGFTb3VyY2U8VD4pOiBQIHwgdW5kZWZpbmVkO1xufVxuIl19
@@ -1,4 +0,0 @@
1
- export * from './data-source';
2
- export * from './data-source-provider';
3
- export * from './matching-strategy';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9kYXRhLXNvdXJjZS9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtc291cmNlLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbWF0Y2hpbmctc3RyYXRlZ3knO1xuIl19
@@ -1,7 +0,0 @@
1
- export var MatchingStrategy;
2
- (function (MatchingStrategy) {
3
- MatchingStrategy["STARTS_WITH_PER_TERM"] = "starts with per term";
4
- MatchingStrategy["STARTS_WITH"] = "starts with";
5
- MatchingStrategy["CONTAINS"] = "contains";
6
- })(MatchingStrategy || (MatchingStrategy = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hpbmctc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9kYXRhLXNvdXJjZS9tb2RlbHMvbWF0Y2hpbmctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUN4QixpRUFBNkMsQ0FBQTtJQUM3QywrQ0FBMkIsQ0FBQTtJQUMzQix5Q0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE1hdGNoaW5nU3RyYXRlZ3kge1xuICAgIFNUQVJUU19XSVRIX1BFUl9URVJNID0gJ3N0YXJ0cyB3aXRoIHBlciB0ZXJtJyxcbiAgICBTVEFSVFNfV0lUSCA9ICdzdGFydHMgd2l0aCcsXG4gICAgQ09OVEFJTlMgPSAnY29udGFpbnMnXG59XG5cbmV4cG9ydCB0eXBlIE1hdGNoQnkgPSAoaXRlbTogYW55KSA9PiBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0Y2hpbmdCeSB7XG4gICAgZmlyc3RCeTogTWF0Y2hCeTtcbiAgICBzZWNvbmRhcnlCeT86IE1hdGNoQnk7XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Injection token used for passing custom datasource transformer into DataSourceProvider.
4
- */
5
- export const FD_DATA_SOURCE_TRANSFORMER = new InjectionToken('FdDataSourceTransformer');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvZGF0YS1zb3VyY2UvdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBbUIseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlUGFyc2VyIH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1zb3VyY2UnO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB1c2VkIGZvciBwYXNzaW5nIGN1c3RvbSBkYXRhc291cmNlIHRyYW5zZm9ybWVyIGludG8gRGF0YVNvdXJjZVByb3ZpZGVyLlxuICovXG5leHBvcnQgY29uc3QgRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0YVNvdXJjZVBhcnNlcj4oJ0ZkRGF0YVNvdXJjZVRyYW5zZm9ybWVyJyk7XG4iXX0=
@@ -1,42 +0,0 @@
1
- import { ChangeDetectorRef, DestroyRef, inject, Injectable } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { CvaDirective } from './cva.directive';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Base ControlValueAccessor control class.
7
- * Used in conjunction with CvaDirective.
8
- *
9
- * This class performs generic change detection based on `CvaDirective` outputs.
10
- */
11
- export class CvaControl {
12
- constructor() {
13
- /**
14
- * Control value accessor directive instance.
15
- */
16
- this.cvaDirective = inject(CvaDirective, {
17
- self: true,
18
- optional: true
19
- });
20
- /**
21
- * Change detector instance.
22
- */
23
- this._changeDetector = inject(ChangeDetectorRef);
24
- /** @Hidden */
25
- this._destroyRef = inject(DestroyRef);
26
- }
27
- /** @hidden */
28
- listenToChanges() {
29
- this.cvaDirective?.markForCheck.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
30
- this._changeDetector.detectChanges();
31
- });
32
- this.cvaDirective?.detectChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
33
- this._changeDetector.detectChanges();
34
- });
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CvaControl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
37
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CvaControl }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CvaControl, decorators: [{
40
- type: Injectable
41
- }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLWNvbnRyb2wuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9mb3Jtcy9jdmEvY3ZhLWNvbnRyb2wuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0M7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVJOztXQUVHO1FBQ0ksaUJBQVksR0FBRyxNQUFNLENBQWtCLFlBQVksRUFBRTtZQUN4RCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ08sb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV0RCxjQUFjO1FBQ0osZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FZOUM7SUFWRyxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RGLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN2RixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0ExQlEsVUFBVTtrSEFBVixVQUFVOzsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ3ZhRGlyZWN0aXZlIH0gZnJvbSAnLi9jdmEuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBCYXNlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNvbnRyb2wgY2xhc3MuXG4gKiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggQ3ZhRGlyZWN0aXZlLlxuICpcbiAqIFRoaXMgY2xhc3MgcGVyZm9ybXMgZ2VuZXJpYyBjaGFuZ2UgZGV0ZWN0aW9uIGJhc2VkIG9uIGBDdmFEaXJlY3RpdmVgIG91dHB1dHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdmFDb250cm9sPFQ+IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9sIHZhbHVlIGFjY2Vzc29yIGRpcmVjdGl2ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3ZhRGlyZWN0aXZlID0gaW5qZWN0PEN2YURpcmVjdGl2ZTxUPj4oQ3ZhRGlyZWN0aXZlLCB7XG4gICAgICAgIHNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgZGV0ZWN0b3IgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGlzdGVuVG9DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN2YURpcmVjdGl2ZT8ubWFya0ZvckNoZWNrLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmN2YURpcmVjdGl2ZT8uZGV0ZWN0Q2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -1,321 +0,0 @@
1
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { Directive, ElementRef, EventEmitter, Input, Output, ViewChild, computed, inject, isDevMode, signal } from '@angular/core';
3
- import { ControlContainer, NgControl, NgForm } from '@angular/forms';
4
- import { Subject, Subscription } from 'rxjs';
5
- import { isValidControlState } from '../helpers/state';
6
- import { FD_FORM_FIELD_CONTROL } from '../tokens/form-field-control.token';
7
- import { FD_FORM_FIELD } from '../tokens/form-field.token';
8
- import * as i0 from "@angular/core";
9
- let randomId = 0;
10
- export class CvaDirective {
11
- /**
12
- * The state of the form control - applies css classes.
13
- * Can be 'success', 'error', 'warning', 'default', 'information'.
14
- *
15
- * @default 'default'
16
- */
17
- set state(state) {
18
- if (!state || isValidControlState(state)) {
19
- this._state$.set(state);
20
- }
21
- else if (isDevMode()) {
22
- console.warn(`Provided value "${state}" is not a valid option for FormStates type`);
23
- }
24
- }
25
- get state() {
26
- return this.normalizedState$();
27
- }
28
- /** Whether the input is disabled */
29
- set disabled(value) {
30
- this.setDisabledState(value);
31
- }
32
- get disabled() {
33
- if (this.ngControl && this.ngControl.disabled !== null) {
34
- return this.ngControl.disabled;
35
- }
36
- return this._disabled;
37
- }
38
- /**
39
- * Tell the component if we are in editing mode.
40
- */
41
- set editable(value) {
42
- const newVal = coerceBooleanProperty(value);
43
- if (this._editable !== newVal) {
44
- this._editable = newVal;
45
- this._markForCheck();
46
- this.stateChanges.next('editable');
47
- }
48
- }
49
- get editable() {
50
- return this._editable;
51
- }
52
- /** Whether control has errors */
53
- get controlInvalid() {
54
- return this._controlInvalid$();
55
- }
56
- /** @hidden */
57
- constructor() {
58
- /**
59
- * Emits when change detection is needed.
60
- */
61
- this.detectChanges = new EventEmitter();
62
- /**
63
- * Emits when mark for changes detection is needed.
64
- */
65
- this.markForCheck = new EventEmitter();
66
- /**
67
- * See @FormFieldControl
68
- */
69
- this.focused = false;
70
- /**
71
- * See @FormFieldControl
72
- */
73
- this.stateChanges = new Subject();
74
- /** @hidden */
75
- this.formField = inject(FD_FORM_FIELD, {
76
- skipSelf: true,
77
- optional: true
78
- });
79
- /**
80
- * NgControl instance.
81
- */
82
- this.ngControl = inject(NgControl, {
83
- optional: true,
84
- host: true
85
- });
86
- /**
87
- * Form container instance. Usually ngForm or FormGroup directives.
88
- */
89
- this.controlContainer = inject(ControlContainer, {
90
- optional: true,
91
- skipSelf: true
92
- });
93
- /**
94
- * Separate NgForm instance. For cases when formGroup is used with the form itself.
95
- */
96
- this.ngForm = inject(NgForm, {
97
- optional: true,
98
- skipSelf: true
99
- });
100
- /** @hidden */
101
- this.normalizedState$ = computed(() => {
102
- const storedState = this._state$();
103
- if (storedState) {
104
- return storedState;
105
- }
106
- if (!this._controlInvalid$()) {
107
- return 'default';
108
- }
109
- return this.formField?.getPriorityState() || 'default';
110
- });
111
- /**
112
- * Element reference.
113
- */
114
- this.elementRef = inject(ElementRef);
115
- /** @hidden */
116
- this._subscriptions = new Subscription();
117
- /** @hidden */
118
- this._defaultId = `fd-input-id-${randomId++}`;
119
- /** ID for the Element */
120
- // eslint-disable-next-line @typescript-eslint/member-ordering
121
- this.id = this._defaultId;
122
- /** @hidden */
123
- this._editable = true;
124
- /**
125
- * @hidden
126
- */
127
- this._controlInvalid$ = signal(false);
128
- /** @hidden */
129
- this._parentControl = inject(FD_FORM_FIELD_CONTROL, {
130
- skipSelf: true,
131
- optional: true
132
- });
133
- /**
134
- * @hidden
135
- * The state of the form control - applies css classes.
136
- * Can be `success`, `error`, `warning`, `information` or 'default'
137
- */
138
- this._state$ = signal(null);
139
- /** @hidden */
140
- this.onChange = () => { };
141
- /** @hidden */
142
- this.onTouched = () => { };
143
- if (this.ngControl) {
144
- this.ngControl.valueAccessor = this;
145
- }
146
- }
147
- /** @hidden */
148
- ngOnInit() {
149
- // There may be cases when one form control is used as a base to build another form control.
150
- if (!this._parentControl) {
151
- this.formField?.registerFormFieldControl(this);
152
- }
153
- }
154
- /**
155
- * Re-validate and emit event to parent container on every CD cycle as they are some errors
156
- * that we can't subscribe to.
157
- */
158
- ngDoCheck() {
159
- if (this.ngControl) {
160
- this.updateErrorState();
161
- }
162
- }
163
- /** @hidden */
164
- ngAfterViewInit() {
165
- if (this.ngControl) {
166
- this._subscriptions.add(this.ngControl.statusChanges?.subscribe(() => {
167
- this._markForCheck();
168
- }));
169
- }
170
- const labelAndHelpId = `fdp-form-label-content-${this.id}`;
171
- // if not specified, associate label and inline help ids with the input,
172
- // else add these ids to the specified ones
173
- if (!this.ariaLabelledBy) {
174
- this.ariaLabelledBy = labelAndHelpId;
175
- }
176
- else {
177
- this.ariaLabelledBy += ' ' + labelAndHelpId;
178
- }
179
- this._markForCheck();
180
- }
181
- /** @hidden */
182
- registerOnChange(fn) {
183
- this.onChange = fn;
184
- }
185
- /** @hidden */
186
- registerOnTouched(fn) {
187
- this.onTouched = fn;
188
- }
189
- /** @hidden */
190
- ngOnDestroy() {
191
- this._subscriptions.unsubscribe();
192
- this.stateChanges.complete();
193
- this.formField?.unregisterFormFieldControl(this);
194
- }
195
- /** @hidden */
196
- setDisabledState(isDisabled) {
197
- const newState = coerceBooleanProperty(isDisabled);
198
- this._markForCheck();
199
- if (newState !== this._disabled) {
200
- this._disabled = newState;
201
- this.stateChanges.next('setDisabledState');
202
- }
203
- }
204
- /**
205
- * Method for setting the value
206
- * @param value
207
- */
208
- writeValue(value) {
209
- this.value = value;
210
- this.stateChanges.next('writeValue');
211
- this._markForCheck();
212
- }
213
- /**
214
- *
215
- * Keeps track of element focus
216
- */
217
- _onFocusChanged(isFocused) {
218
- if (isFocused !== this.focused && (!this.disabled || !isFocused)) {
219
- this.focused = isFocused;
220
- this.stateChanges.next('_onFocusChanged');
221
- }
222
- if (!isFocused) {
223
- this.onTouched();
224
- }
225
- }
226
- /**
227
- * Handles even when we click on parent container which is the FormField Wrapping this
228
- * control
229
- */
230
- onContainerClick(event) {
231
- this.focus(event);
232
- }
233
- /**
234
- * In most of the cases when working with input element directly you should be just find to assign
235
- * variable to this element
236
- *
237
- * ```
238
- * <input #inputElementRef fd-form-control ...>
239
- * ```
240
- *
241
- * and this default behavior used. For other cases implement focus.
242
- *
243
- */
244
- focus(event) {
245
- if (this._elementRef && !this.focused) {
246
- this._elementRef.nativeElement.focus(event);
247
- }
248
- }
249
- /**
250
- * Need re-validates errors on every CD iteration to make sure we are also
251
- * covering non-control errors, errors that happens outside of this control
252
- */
253
- updateErrorState() {
254
- const parent = this.ngForm;
255
- const parentControlContainer = this.controlContainer;
256
- const control = this.ngControl ? this.ngControl.control : null;
257
- const newStatusIsError = !!(control?.invalid &&
258
- (control.dirty || control.touched || parent?.submitted || parentControlContainer?.submitted));
259
- if (newStatusIsError !== this._controlInvalid$()) {
260
- this._controlInvalid$.set(newStatusIsError);
261
- this.stateChanges.next('updateErrorState');
262
- this._markForCheck();
263
- }
264
- }
265
- /**
266
- * Used to change the value of a control.
267
- * @param value the value to be applied
268
- * @param emitOnChange whether to emit "onChange" event.
269
- * Should be "false", if the change is made programmatically (internally) by the control, "true" otherwise
270
- */
271
- setValue(value, emitOnChange = true) {
272
- if (value !== this.value) {
273
- this.writeValue(value);
274
- if (emitOnChange) {
275
- this.onChange(value);
276
- }
277
- this._markForCheck();
278
- }
279
- }
280
- /** @hidden */
281
- _markForCheck() {
282
- this.markForCheck.emit();
283
- }
284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CvaDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
285
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: CvaDirective, isStandalone: true, selector: "[fdkCva]", inputs: { placeholder: "placeholder", state: "state", stateMessage: "stateMessage", disabled: "disabled", readonly: "readonly", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", editable: "editable", name: "name", id: "id" }, outputs: { detectChanges: "detectChanges", markForCheck: "markForCheck" }, viewQueries: [{ propertyName: "_elementRef", first: true, predicate: ["inputElementRef"], descendants: true, read: ElementRef, static: true }], ngImport: i0 }); }
286
- }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CvaDirective, decorators: [{
288
- type: Directive,
289
- args: [{
290
- selector: '[fdkCva]',
291
- standalone: true
292
- }]
293
- }], ctorParameters: () => [], propDecorators: { placeholder: [{
294
- type: Input
295
- }], state: [{
296
- type: Input
297
- }], stateMessage: [{
298
- type: Input
299
- }], disabled: [{
300
- type: Input
301
- }], readonly: [{
302
- type: Input
303
- }], ariaLabelledBy: [{
304
- type: Input
305
- }], ariaLabel: [{
306
- type: Input
307
- }], editable: [{
308
- type: Input
309
- }], name: [{
310
- type: Input
311
- }], detectChanges: [{
312
- type: Output
313
- }], markForCheck: [{
314
- type: Output
315
- }], _elementRef: [{
316
- type: ViewChild,
317
- args: ['inputElementRef', { static: true, read: ElementRef }]
318
- }], id: [{
319
- type: Input
320
- }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL2Zvcm1zL2N2YS9jdmEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFM0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBTWpCLE1BQU0sT0FBTyxZQUFZO0lBZXJCOzs7OztPQUtHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBMkI7UUFDakMsSUFBSSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7YUFBTSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFB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LEVBQUUsVUFBVTtvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQWNHLFdBQVc7c0JBRFYsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBY04sWUFBWTtzQkFEWCxLQUFLO2dCQUtGLFFBQVE7c0JBRFgsS0FBSztnQkFlTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBaUJOLElBQUk7c0JBREgsS0FBSztnQkFPTixhQUFhO3NCQURaLE1BQU07Z0JBT1AsWUFBWTtzQkFEWCxNQUFNO2dCQU9HLFdBQVc7c0JBRHBCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBa0ZoRSxFQUFFO3NCQURELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBpc0Rldk1vZGUsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1ZhbGlkQ29udHJvbFN0YXRlIH0gZnJvbSAnLi4vaGVscGVycy9zdGF0ZSc7XG5pbXBvcnQgeyBCYXNlQ1ZBIH0gZnJvbSAnLi4vbW9kZWxzL2N2YSc7XG5pbXBvcnQgeyBGb3JtRmllbGQsIEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnLi4vdG9rZW5zL2Zvcm0tZmllbGQtY29udHJvbC50b2tlbic7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vdG9rZW5zL2Zvcm0tZmllbGQudG9rZW4nO1xuXG5sZXQgcmFuZG9tSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtDdmFdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEN2YURpcmVjdGl2ZTxUID0gYW55PlxuICAgIGltcGxlbWVudHNcbiAgICAgICAgSGFzRWxlbWVudFJlZixcbiAgICAgICAgQmFzZUNWQSxcbiAgICAgICAgRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBEb0NoZWNrLFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiAgQ2FuIGJlICdzdWNjZXNzJywgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnZGVmYXVsdCcsICdpbmZvcm1hdGlvbicuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogTnVsbGFibGU8Rm9ybVN0YXRlcz4pIHtcbiAgICAgICAgaWYgKCFzdGF0ZSB8fCBpc1ZhbGlkQ29udHJvbFN0YXRlKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLnNldChzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUHJvdmlkZWQgdmFsdWUgXCIke3N0YXRlfVwiIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgRm9ybVN0YXRlcyB0eXBlYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHN0YXRlKCk6IEZvcm1TdGF0ZXMge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVkU3RhdGUkKCk7XG4gICAgfVxuXG4gICAgLyoqIEhvbGRzIHRoZSBtZXNzYWdlIHdpdGggcmVzcGVjdCB0byBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVhZE9ubHkgVmFsdWUgdG8gTWFyayBjb21wb25lbnQgcmVhZCBvbmx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seTogYm9vbGVhbjtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogVGVsbCB0aGUgY29tcG9uZW50IGlmIHdlIGFyZSBpbiBlZGl0aW5nIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZWRpdGFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fZWRpdGFibGUgIT09IG5ld1ZhbCkge1xuICAgICAgICAgICAgdGhpcy5fZWRpdGFibGUgPSBuZXdWYWw7XG4gICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ2VkaXRhYmxlJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gY2hhbmdlIGRldGVjdGlvbiBpcyBuZWVkZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZGV0ZWN0Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gbWFyayBmb3IgY2hhbmdlcyBkZXRlY3Rpb24gaXMgbmVlZGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG1hcmtGb3JDaGVjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBpbnRlcm5hbCBJbnB1dCBlbGVtZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50UmVmJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlOiBUO1xuXG4gICAgLyoqIHNldCB3aGVuIGlucHV0IGZpZWxkIGlzIG1hbmRhdG9yeSBmb3JtIGZpZWxkICovXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTZWUgQEZvcm1GaWVsZENvbnRyb2xcbiAgICAgKi9cbiAgICBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBjb250cm9sIGhhcyBlcnJvcnMgKi9cbiAgICBnZXQgY29udHJvbEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250cm9sSW52YWxpZCQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWUgQEZvcm1GaWVsZENvbnRyb2xcbiAgICAgKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgZm9ybUZpZWxkOiBGb3JtRmllbGQgfCBudWxsID0gaW5qZWN0KEZEX0ZPUk1fRklFTEQsIHtcbiAgICAgICAgc2tpcFNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBOZ0NvbnRyb2wgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgaG9zdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogRm9ybSBjb250YWluZXIgaW5zdGFuY2UuIFVzdWFsbHkgbmdGb3JtIG9yIEZvcm1Hcm91cCBkaXJlY3RpdmVzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lciwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNlcGFyYXRlIE5nRm9ybSBpbnN0YW5jZS4gRm9yIGNhc2VzIHdoZW4gZm9ybUdyb3VwIGlzIHVzZWQgd2l0aCB0aGUgZm9ybSBpdHNlbGYuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmdGb3JtID0gaW5qZWN0KE5nRm9ybSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgbm9ybWFsaXplZFN0YXRlJCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVkU3RhdGUgPSB0aGlzLl9zdGF0ZSQoKTtcbiAgICAgICAgaWYgKHN0b3JlZFN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmVkU3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NvbnRyb2xJbnZhbGlkJCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkPy5nZXRQcmlvcml0eVN0YXRlKCkgfHwgJ2RlZmF1bHQnO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogRWxlbWVudCByZWZlcmVuY2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0SWQgPSBgZmQtaW5wdXQtaWQtJHtyYW5kb21JZCsrfWA7XG5cbiAgICAvKiogSUQgZm9yIHRoZSBFbGVtZW50ICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSB0aGlzLl9kZWZhdWx0SWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWRpdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xJbnZhbGlkJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudENvbnRyb2wgPSBpbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MLCB7XG4gICAgICAgIHNraXBTZWxmOiB0cnVlLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBjb250cm9sIC0gYXBwbGllcyBjc3MgY2xhc3Nlcy5cbiAgICAgKiBDYW4gYmUgYHN1Y2Nlc3NgLCBgZXJyb3JgLCBgd2FybmluZ2AsIGBpbmZvcm1hdGlvbmAgb3IgJ2RlZmF1bHQnXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUkID0gc2lnbmFsPE51bGxhYmxlPEZvcm1TdGF0ZXM+PihudWxsKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFRoZXJlIG1heSBiZSBjYXNlcyB3aGVuIG9uZSBmb3JtIGNvbnRyb2wgaXMgdXNlZCBhcyBhIGJhc2UgdG8gYnVpbGQgYW5vdGhlciBmb3JtIGNvbnRyb2wuXG4gICAgICAgIGlmICghdGhpcy5fcGFyZW50Q29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRmllbGQ/LnJlZ2lzdGVyRm9ybUZpZWxkQ29udHJvbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlLXZhbGlkYXRlIGFuZCBlbWl0IGV2ZW50IHRvIHBhcmVudCBjb250YWluZXIgb24gZXZlcnkgQ0QgY3ljbGUgYXMgdGhleSBhcmUgc29tZSBlcnJvcnNcbiAgICAgKiB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0by5cbiAgICAgKi9cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzPy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsQW5kSGVscElkID0gYGZkcC1mb3JtLWxhYmVsLWNvbnRlbnQtJHt0aGlzLmlkfWA7XG4gICAgICAgIC8vIGlmIG5vdCBzcGVjaWZpZWQsIGFzc29jaWF0ZSBsYWJlbCBhbmQgaW5saW5lIGhlbHAgaWRzIHdpdGggdGhlIGlucHV0LFxuICAgICAgICAvLyBlbHNlIGFkZCB0aGVzZSBpZHMgdG8gdGhlIHNwZWNpZmllZCBvbmVzXG4gICAgICAgIGlmICghdGhpcy5hcmlhTGFiZWxsZWRCeSkge1xuICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWxsZWRCeSA9IGxhYmVsQW5kSGVscElkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWxsZWRCeSArPSAnICcgKyBsYWJlbEFuZEhlbHBJZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZm9ybUZpZWxkPy51bnJlZ2lzdGVyRm9ybUZpZWxkQ29udHJvbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogQm9vbGVhbklucHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGlzRGlzYWJsZWQpO1xuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKG5ld1N0YXRlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ3NldERpc2FibGVkU3RhdGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3Igc2V0dGluZyB0aGUgdmFsdWVcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnd3JpdGVWYWx1ZScpO1xuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEtlZXBzIHRyYWNrIG9mIGVsZW1lbnQgZm9jdXNcbiAgICAgKi9cbiAgICBfb25Gb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCAmJiAoIXRoaXMuZGlzYWJsZWQgfHwgIWlzRm9jdXNlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ19vbkZvY3VzQ2hhbmdlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGV2ZW4gd2hlbiB3ZSBjbGljayBvbiBwYXJlbnQgY29udGFpbmVyIHdoaWNoIGlzIHRoZSBGb3JtRmllbGQgV3JhcHBpbmcgdGhpc1xuICAgICAqIGNvbnRyb2xcbiAgICAgKi9cbiAgICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXMoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluIG1vc3Qgb2YgdGhlIGNhc2VzIHdoZW4gd29ya2luZyB3aXRoIGlucHV0IGVsZW1lbnQgZGlyZWN0bHkgeW91IHNob3VsZCBiZSBqdXN0IGZpbmQgdG8gYXNzaWduXG4gICAgICogdmFyaWFibGUgdG8gdGhpcyBlbGVtZW50XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiA8aW5wdXQgI2lucHV0RWxlbWVudFJlZiBmZC1mb3JtLWNvbnRyb2wgLi4uPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYW5kIHRoaXMgZGVmYXVsdCBiZWhhdmlvciB1c2VkLiBGb3Igb3RoZXIgY2FzZXMgaW1wbGVtZW50IGZvY3VzLlxuICAgICAqXG4gICAgICovXG4gICAgZm9jdXMoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9lbGVtZW50UmVmICYmICF0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyhldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgTmVlZCByZS12YWxpZGF0ZXMgZXJyb3JzIG9uIGV2ZXJ5IENEIGl0ZXJhdGlvbiB0byBtYWtlIHN1cmUgd2UgYXJlIGFsc29cbiAgICAgKiAgY292ZXJpbmcgbm9uLWNvbnRyb2wgZXJyb3JzLCBlcnJvcnMgdGhhdCBoYXBwZW5zIG91dHNpZGUgb2YgdGhpcyBjb250cm9sXG4gICAgICovXG4gICAgdXBkYXRlRXJyb3JTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5uZ0Zvcm07XG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRyb2xDb250YWluZXIgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbCA/ICh0aGlzLm5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1c0lzRXJyb3IgPSAhIShcbiAgICAgICAgICAgIGNvbnRyb2w/LmludmFsaWQgJiZcbiAgICAgICAgICAgIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCB8fCBwYXJlbnQ/LnN1Ym1pdHRlZCB8fCAocGFyZW50Q29udHJvbENvbnRhaW5lciBhcyBhbnkpPy5zdWJtaXR0ZWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKG5ld1N0YXR1c0lzRXJyb3IgIT09IHRoaXMuX2NvbnRyb2xJbnZhbGlkJCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250cm9sSW52YWxpZCQuc2V0KG5ld1N0YXR1c0lzRXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgndXBkYXRlRXJyb3JTdGF0ZScpO1xuICAgICAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNldFZhbHVlKHZhbHVlOiBULCBlbWl0T25DaGFuZ2UgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChlbWl0T25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX21hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrLmVtaXQoKTtcbiAgICB9XG59XG4iXX0=