@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,300 +0,0 @@
1
- import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';
2
- import { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';
3
- import { DOCUMENT } from '@angular/common';
4
- import { ContentChildren, DestroyRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2, booleanAttribute, inject } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { Subject, merge } from 'rxjs';
7
- import { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';
8
- import { KeyUtil, intersectionObservable } from '../../functions';
9
- import { destroyObservable } from '../../helpers';
10
- import { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableObserver, isItemFocusable } from '../focusable-item';
11
- import { getItemElement } from '../focusable-item/get-item-element';
12
- import { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';
13
- import { scrollIntoView } from './scroll';
14
- import * as i0 from "@angular/core";
15
- export class FocusableListDirective {
16
- /** Whether the whole list should be focusable, handy in grids. */
17
- set focusable(value) {
18
- this._focusable = value;
19
- this.setTabbable(this._focusable);
20
- }
21
- get focusable() {
22
- return this._focusable;
23
- }
24
- /** @hidden */
25
- get _focusableItems() {
26
- return this._items ? this._items : this._projectedFocusableItems;
27
- }
28
- /** @hidden */
29
- get _tabindex() {
30
- return this._tabbable ? 0 : -1;
31
- }
32
- /** @hidden */
33
- constructor() {
34
- /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */
35
- this.navigationDirection = 'vertical';
36
- /** Direction of the content. */
37
- this.contentDirection = 'ltr';
38
- /**
39
- * Configures wrapping mode which determines whether the active item will wrap to the other end of list when there are no more items in the given direction.
40
- */
41
- this.wrap = false;
42
- /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */
43
- this.listFocusedEventAnnouncer = this._defaultListFocusedEventAnnouncer;
44
- /** Event emitted when list's item focused, contains item's position info. */
45
- this.itemFocused = new EventEmitter();
46
- /** @hidden */
47
- this._gridItemFocused$ = new Subject();
48
- /** @hidden */
49
- this._gridListFocused$ = new Subject();
50
- /** @hidden */
51
- this._keydown$ = new Subject();
52
- /** @hidden */
53
- this._isVisible = false;
54
- /** @hidden */
55
- this._destroyRef = inject(DestroyRef);
56
- /** @hidden */
57
- this._focusable = false;
58
- /** @hidden */
59
- this._tabbable = false;
60
- /** @hidden */
61
- this._refreshItems$ = new Subject();
62
- /** @hidden */
63
- this._refresh$ = new Subject();
64
- /** @hidden */
65
- this._renderer = inject(Renderer2);
66
- /** @hidden */
67
- this._elementRef = inject(ElementRef);
68
- /** @hidden */
69
- this._liveAnnouncer = inject(LiveAnnouncer);
70
- /** @hidden */
71
- this._focusableObserver = inject(FocusableObserver);
72
- /** @hidden */
73
- this._document = inject(DOCUMENT);
74
- intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })
75
- .pipe(takeUntilDestroyed())
76
- .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));
77
- this._focusableObserver
78
- .observe(this._elementRef, false)
79
- .pipe(takeUntilDestroyed())
80
- .subscribe((isFocusable) => {
81
- if (!isFocusable && isFocusable !== this.focusable) {
82
- this.focusable = isFocusable;
83
- }
84
- });
85
- }
86
- /** @hidden */
87
- _onKeydown(event) {
88
- // Already handled
89
- if (event.defaultPrevented) {
90
- return;
91
- }
92
- const isFocused = this._document.activeElement === this._elementRef.nativeElement;
93
- const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;
94
- const shouldFocusList = ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;
95
- if (shouldFocusChild) {
96
- event.stopPropagation();
97
- this.setActiveItem(0);
98
- return;
99
- }
100
- else if (shouldFocusList) {
101
- event.stopPropagation();
102
- this.focus();
103
- return;
104
- }
105
- this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });
106
- }
107
- /** @hidden */
108
- async _onFocus() {
109
- if (this._gridPosition) {
110
- this._gridListFocused$.next(this._gridPosition);
111
- this._liveAnnouncer.clear();
112
- await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));
113
- this.setTabbable(true);
114
- }
115
- }
116
- /** @hidden */
117
- ngOnChanges(changes) {
118
- if (!this._keyManager) {
119
- return;
120
- }
121
- if (changes['wrap']) {
122
- this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);
123
- }
124
- if (changes['navigationDirection']) {
125
- this._updateNavigationDirection();
126
- }
127
- }
128
- /** @hidden */
129
- ngAfterViewInit() {
130
- this._listenOnItems();
131
- }
132
- /** Set items programmatically. */
133
- setItems(items) {
134
- this._items = items;
135
- this._listenOnItems();
136
- }
137
- /** @hidden */
138
- ngOnDestroy() {
139
- this._keyManager?.destroy();
140
- }
141
- /** Set active item in list */
142
- setActiveItem(index, scrollPosition) {
143
- let availableIndex;
144
- this._focusableItems.find((item, itemIndex) => {
145
- if (itemIndex >= index && isItemFocusable(item)) {
146
- availableIndex = itemIndex;
147
- return true;
148
- }
149
- return false;
150
- });
151
- if (availableIndex != null) {
152
- scrollIntoView(getItemElement(this._focusableItems.get(availableIndex)), scrollPosition);
153
- this._keyManager?.setActiveItem(availableIndex);
154
- }
155
- }
156
- /** Focus whole list */
157
- focus(scrollPosition) {
158
- if (this.focusable) {
159
- scrollIntoView(this._elementRef.nativeElement, scrollPosition);
160
- this._elementRef.nativeElement.focus();
161
- }
162
- }
163
- /** Set tabbable state */
164
- setTabbable(state) {
165
- this._tabbable = state;
166
- }
167
- /** @hidden */
168
- _updateNavigationDirection() {
169
- if (!this._keyManager) {
170
- return;
171
- }
172
- if (this.navigationDirection === 'vertical') {
173
- this._keyManager = this._keyManager.withVerticalOrientation(true);
174
- this._keyManager = this._keyManager.withHorizontalOrientation(null);
175
- }
176
- else {
177
- this._keyManager = this._keyManager.withVerticalOrientation(false);
178
- this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection || 'ltr');
179
- }
180
- }
181
- /** @hidden */
182
- _setItemsTabbable(state) {
183
- this._focusableItems.forEach((item) => item.setTabbable(state));
184
- }
185
- /** @hidden */
186
- _setGridPosition(position) {
187
- this._gridPosition = position;
188
- this._focusableItems.changes
189
- .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))
190
- .subscribe((items) => items.forEach((item, index) => (item._position = {
191
- ...this._gridPosition,
192
- colIndex: index,
193
- totalCols: this._focusableItems.length
194
- })));
195
- }
196
- /** @hidden */
197
- _initializeFocusManager(items, config = {}) {
198
- this._refreshItems$.next();
199
- let keyManager = new FocusKeyManager(items).withHomeAndEnd();
200
- if (config.wrap !== false) {
201
- keyManager = keyManager.withWrap();
202
- }
203
- if (config.direction === 'horizontal') {
204
- keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced
205
- // Vertical is enabled by default, so let's disable it here in consistency purposes
206
- keyManager = keyManager.withVerticalOrientation(false);
207
- }
208
- keyManager.skipPredicate((i) => !isItemFocusable(i));
209
- this._keyManager = keyManager;
210
- const focusListenerDestroyers = items.map((item, index) => this._renderer.listen(getItemElement(item), 'focus', () => {
211
- const directiveItem = this._focusableItems.get(index);
212
- if (!directiveItem) {
213
- return;
214
- }
215
- if (this._gridPosition) {
216
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
217
- this._gridItemFocused$.next(directiveItem._position);
218
- }
219
- this.itemFocused.next({ index, total: items.length });
220
- this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));
221
- this._keyManager?.setActiveItem(index);
222
- }));
223
- merge(...items.map((item) => item.keydown))
224
- .pipe(tap((event) => {
225
- // Already handled
226
- if (event.defaultPrevented) {
227
- return;
228
- }
229
- this._keyManager?.onKeydown(event);
230
- }), takeUntil(merge(this._refreshItems$, destroyObservable(this._destroyRef))), finalize(() => focusListenerDestroyers.forEach((d) => d())))
231
- .subscribe();
232
- }
233
- /** @hidden */
234
- _defaultListFocusedEventAnnouncer(position) {
235
- return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;
236
- }
237
- /** @hidden */
238
- _listenOnItems() {
239
- const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));
240
- this._refresh$.next();
241
- this._focusableItems.changes
242
- .pipe(startWith(null), map(() => this._focusableItems.toArray()), tap((items) => {
243
- const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;
244
- this._initializeFocusManager(items, {
245
- direction,
246
- contentDirection: this.contentDirection,
247
- wrap: !!this.wrap
248
- });
249
- }), takeUntil(refresh$))
250
- .subscribe();
251
- }
252
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FocusableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
253
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.3", type: FocusableListDirective, isStandalone: true, selector: "[fdkFocusableList]", inputs: { focusable: ["focusable", "focusable", booleanAttribute], navigationDirection: "navigationDirection", contentDirection: "contentDirection", wrap: ["wrap", "wrap", booleanAttribute], listFocusedEventAnnouncer: "listFocusedEventAnnouncer" }, outputs: { itemFocused: "itemFocused" }, host: { listeners: { "keydown": "_onKeydown($event)", "focus": "_onFocus()" }, properties: { "attr.tabindex": "this._tabindex" } }, providers: [
254
- {
255
- provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
256
- useExisting: FocusableListDirective
257
- }
258
- ], queries: [{ propertyName: "_projectedFocusableItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }], exportAs: ["fdkFocusableList"], usesOnChanges: true, ngImport: i0 }); }
259
- }
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FocusableListDirective, decorators: [{
261
- type: Directive,
262
- args: [{
263
- selector: '[fdkFocusableList]',
264
- exportAs: 'fdkFocusableList',
265
- standalone: true,
266
- providers: [
267
- {
268
- provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
269
- useExisting: FocusableListDirective
270
- }
271
- ]
272
- }]
273
- }], ctorParameters: () => [], propDecorators: { focusable: [{
274
- type: Input,
275
- args: [{ transform: booleanAttribute }]
276
- }], navigationDirection: [{
277
- type: Input
278
- }], contentDirection: [{
279
- type: Input
280
- }], wrap: [{
281
- type: Input,
282
- args: [{ transform: booleanAttribute }]
283
- }], listFocusedEventAnnouncer: [{
284
- type: Input
285
- }], itemFocused: [{
286
- type: Output
287
- }], _projectedFocusableItems: [{
288
- type: ContentChildren,
289
- args: [FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true }]
290
- }], _tabindex: [{
291
- type: HostBinding,
292
- args: ['attr.tabindex']
293
- }], _onKeydown: [{
294
- type: HostListener,
295
- args: ['keydown', ['$event']]
296
- }], _onFocus: [{
297
- type: HostListener,
298
- args: ['focus']
299
- }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFSCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUNILDRCQUE0QixFQUc1QixpQkFBaUIsRUFDakIsZUFBZSxFQUNsQixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0Ms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QUFnQiw0R0FzQmhCLGdCQUFnQixxUEEvQnpCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsV0FBVyxFQUFFLHNCQUFzQjthQUN0QztTQUNKLG1FQXNDZ0IsNEJBQTRCOzsyRkFwQ3BDLHNCQUFzQjtrQkFYbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcsd0JBQXdCO3lCQUN0QztxQkFDSjtpQkFDSjt3REFJTyxTQUFTO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYXRDLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS3RDLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLRyxXQUFXO3NCQURuQixNQUFNO2dCQUtFLHdCQUF3QjtzQkFEaEMsZUFBZTt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBd0RoRSxTQUFTO3NCQURaLFdBQVc7dUJBQUMsZUFBZTtnQkF1QjVCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBK0I3QixRQUFRO3NCQURiLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciwgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEVOVEVSLCBFU0NBUEUsIEYyLCBNQUNfRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleVV0aWwsIGludGVyc2VjdGlvbk9ic2VydmFibGUgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgZGVzdHJveU9ic2VydmFibGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL251bGxhYmxlJztcbmltcG9ydCB7XG4gICAgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSxcbiAgICBGb2N1c2FibGVJdGVtLFxuICAgIEZvY3VzYWJsZUxpc3RQb3NpdGlvbixcbiAgICBGb2N1c2FibGVPYnNlcnZlcixcbiAgICBpc0l0ZW1Gb2N1c2FibGVcbn0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbVBvc2l0aW9uIH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0vZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IGdldEl0ZW1FbGVtZW50IH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0vZ2V0LWl0ZW0tZWxlbWVudCc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFIH0gZnJvbSAnLi9mb2N1c2FibGUtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHsgU2Nyb2xsUG9zaXRpb24sIHNjcm9sbEludG9WaWV3IH0gZnJvbSAnLi9zY3JvbGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzYWJsZUxpc3RJdGVtRm9jdXNlZEV2ZW50IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHRvdGFsOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNhYmxlTGlzdEtleWRvd25FdmVudCB7XG4gICAgbGlzdDogRm9jdXNhYmxlTGlzdERpcmVjdGl2ZTtcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudDtcbiAgICBhY3RpdmVJdGVtSW5kZXg6IE51bGxhYmxlPG51bWJlcj47XG59XG5cbmludGVyZmFjZSBGb2N1c2FibGVMaXN0Q29uZmlnIHtcbiAgICB3cmFwPzogYm9vbGVhbjtcbiAgICBkaXJlY3Rpb24/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnO1xuICAgIGNvbnRlbnREaXJlY3Rpb24/OiAnbHRyJyB8ICdydGwnIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVtc1F1ZXJ5TGlzdDxUPiBleHRlbmRzIEl0ZXJhYmxlPFQ+IHtcbiAgICBjaGFuZ2VzOiBPYnNlcnZhYmxlPEl0ZW1zUXVlcnlMaXN0PFQ+PjtcbiAgICBsZW5ndGg6IG51bWJlcjtcbiAgICB0b0FycmF5KCk6IFRbXTtcbiAgICBmaW5kKHByZWRpY2F0ZTogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4pOiBOdWxsYWJsZTxUPjtcbiAgICBnZXQoaW5kZXg6IG51bWJlcik6IE51bGxhYmxlPFQ+O1xuICAgIGZvckVhY2gocGFyYW06IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB2b2lkKTogdm9pZDtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRm9jdXNhYmxlTGlzdF0nLFxuICAgIGV4cG9ydEFzOiAnZmRrRm9jdXNhYmxlTGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRLX0ZPQ1VTQUJMRV9MSVNUX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBGb2N1c2FibGVMaXN0RGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgdGhlIHdob2xlIGxpc3Qgc2hvdWxkIGJlIGZvY3VzYWJsZSwgaGFuZHkgaW4gZ3JpZHMuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IGZvY3VzYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLnNldFRhYmJhYmxlKHRoaXMuX2ZvY3VzYWJsZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzYWJsZTtcbiAgICB9XG5cbiAgICAvKiogRGlyZWN0aW9uIG9mIG5hdmlnYXRpb24uIFNob3VsZCBiZSBzZXQgdG8gJ2dyaWQnIHdoZW4gbGlzdCBpcyBhIHBhcnQgb2YgZ3JpZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25EaXJlY3Rpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgfCAnZ3JpZCcgPSAndmVydGljYWwnO1xuXG4gICAgLyoqIERpcmVjdGlvbiBvZiB0aGUgY29udGVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnREaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcgfCBudWxsID0gJ2x0cic7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHdyYXBwaW5nIG1vZGUgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBhY3RpdmUgaXRlbSB3aWxsIHdyYXAgdG8gdGhlIG90aGVyIGVuZCBvZiBsaXN0IHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgaXRlbXMgaW4gdGhlIGdpdmVuIGRpcmVjdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB3cmFwID0gZmFsc2U7XG5cbiAgICAvKiogRnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYSBzdHJpbmcgdG8gYmUgYW5ub3VuY2VkIGJ5IHNjcmVlbi1yZWFkZXIgd2hlbmV2ZXIgYW4gcm93IHdoaWNoIGlzIGluIGdyaWQgcmVjZWl2ZXMgZm9jdXMuICovXG4gICAgQElucHV0KClcbiAgICBsaXN0Rm9jdXNlZEV2ZW50QW5ub3VuY2VyOiAocG9zaXRpb246IEZvY3VzYWJsZUxpc3RQb3NpdGlvbikgPT4gc3RyaW5nID0gdGhpcy5fZGVmYXVsdExpc3RGb2N1c2VkRXZlbnRBbm5vdW5jZXI7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGxpc3QncyBpdGVtIGZvY3VzZWQsIGNvbnRhaW5zIGl0ZW0ncyBwb3NpdGlvbiBpbmZvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGl0ZW1Gb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c2FibGVMaXN0SXRlbUZvY3VzZWRFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgX3Byb2plY3RlZEZvY3VzYWJsZUl0ZW1zOiBJdGVtc1F1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9mb2N1c2FibGVJdGVtcygpOiBJdGVtc1F1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcyA/IHRoaXMuX2l0ZW1zIDogdGhpcy5fcHJvamVjdGVkRm9jdXNhYmxlSXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXRlbXM6IEl0ZW1zUXVlcnlMaXN0PEZvY3VzYWJsZUl0ZW0+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfZ3JpZEl0ZW1Gb2N1c2VkJCA9IG5ldyBTdWJqZWN0PEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2dyaWRMaXN0Rm9jdXNlZCQgPSBuZXcgU3ViamVjdDxGb2N1c2FibGVMaXN0UG9zaXRpb24+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9rZXlkb3duJCA9IG5ldyBTdWJqZWN0PEZvY3VzYWJsZUxpc3RLZXlkb3duRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1Zpc2libGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZvY3VzYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ncmlkUG9zaXRpb246IHsgcm93SW5kZXg6IG51bWJlcjsgdG90YWxSb3dzOiBudW1iZXIgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfa2V5TWFuYWdlcj86IEZvY3VzS2V5TWFuYWdlcjxGb2N1c2FibGVJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFiYmFibGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaEl0ZW1zJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyID0gaW5qZWN0KExpdmVBbm5vdW5jZXIpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlT2JzZXJ2ZXIgPSBpbmplY3QoRm9jdXNhYmxlT2JzZXJ2ZXIpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgZ2V0IF90YWJpbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFiYmFibGUgPyAwIDogLTE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2YWJsZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHsgdGhyZXNob2xkOiAwLjI1IH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGlzVmlzaWJsZSkgPT4gKHRoaXMuX2lzVmlzaWJsZSA9IGlzVmlzaWJsZVswXT8uaXNJbnRlcnNlY3RpbmcpKTtcblxuICAgICAgICB0aGlzLl9mb2N1c2FibGVPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZiwgZmFsc2UpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGlzRm9jdXNhYmxlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0ZvY3VzYWJsZSAmJiBpc0ZvY3VzYWJsZSAhPT0gdGhpcy5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUgPSBpc0ZvY3VzYWJsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIF9vbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gQWxyZWFkeSBoYW5kbGVkXG4gICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0ZvY3VzZWQgPSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZEZvY3VzQ2hpbGQgPSBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBNQUNfRU5URVIsIEYyXSkgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmIGlzRm9jdXNlZDtcbiAgICAgICAgY29uc3Qgc2hvdWxkRm9jdXNMaXN0ID1cbiAgICAgICAgICAgICgoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEYyKSAmJiBldmVudC5zaGlmdEtleSkgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVTQ0FQRSkpICYmICFpc0ZvY3VzZWQ7XG5cbiAgICAgICAgaWYgKHNob3VsZEZvY3VzQ2hpbGQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0oMCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRGb2N1c0xpc3QpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2tleWRvd24kLm5leHQoeyBsaXN0OiB0aGlzLCBldmVudCwgYWN0aXZlSXRlbUluZGV4OiB0aGlzLl9rZXlNYW5hZ2VyPy5hY3RpdmVJdGVtSW5kZXggPz8gbnVsbCB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBhc3luYyBfb25Gb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2dyaWRQb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZ3JpZExpc3RGb2N1c2VkJC5uZXh0KHRoaXMuX2dyaWRQb3NpdGlvbik7XG5cbiAgICAgICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodGhpcy5saXN0Rm9jdXNlZEV2ZW50QW5ub3VuY2VyKHRoaXMuX2dyaWRQb3NpdGlvbikpO1xuXG4gICAgICAgICAgICB0aGlzLnNldFRhYmJhYmxlKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fa2V5TWFuYWdlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3dyYXAnXSkge1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aFdyYXAoY2hhbmdlc1snd3JhcCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlc1snbmF2aWdhdGlvbkRpcmVjdGlvbiddKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVOYXZpZ2F0aW9uRGlyZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25JdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgaXRlbXMgcHJvZ3JhbW1hdGljYWxseS4gKi9cbiAgICBzZXRJdGVtcyhpdGVtczogSXRlbXNRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcztcbiAgICAgICAgdGhpcy5fbGlzdGVuT25JdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGFjdGl2ZSBpdGVtIGluIGxpc3QgKi9cbiAgICBzZXRBY3RpdmVJdGVtKGluZGV4OiBudW1iZXIsIHNjcm9sbFBvc2l0aW9uPzogU2Nyb2xsUG9zaXRpb24pOiB2b2lkIHtcbiAgICAgICAgbGV0IGF2YWlsYWJsZUluZGV4O1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmZpbmQoKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW1JbmRleCA+PSBpbmRleCAmJiBpc0l0ZW1Gb2N1c2FibGUoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICBhdmFpbGFibGVJbmRleCA9IGl0ZW1JbmRleDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYXZhaWxhYmxlSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXcoZ2V0SXRlbUVsZW1lbnQodGhpcy5fZm9jdXNhYmxlSXRlbXMuZ2V0KGF2YWlsYWJsZUluZGV4KSksIHNjcm9sbFBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oYXZhaWxhYmxlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIHdob2xlIGxpc3QgKi9cbiAgICBmb2N1cyhzY3JvbGxQb3NpdGlvbj86IFNjcm9sbFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBzY3JvbGxQb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTZXQgdGFiYmFibGUgc3RhdGUgKi9cbiAgICBzZXRUYWJiYWJsZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJiYWJsZSA9IHN0YXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VwZGF0ZU5hdmlnYXRpb25EaXJlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fa2V5TWFuYWdlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aFZlcnRpY2FsT3JpZW50YXRpb24odHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyID0gdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aFZlcnRpY2FsT3JpZW50YXRpb24oZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLmNvbnRlbnREaXJlY3Rpb24gfHwgJ2x0cicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0SXRlbXNUYWJiYWJsZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnNldFRhYmJhYmxlKHN0YXRlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0R3JpZFBvc2l0aW9uKHBvc2l0aW9uOiBGb2N1c2FibGVMaXN0UG9zaXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3JpZFBvc2l0aW9uID0gcG9zaXRpb247XG5cbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2ZvY3VzYWJsZUl0ZW1zKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbXMpID0+XG4gICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0sIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0uX3Bvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2dyaWRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb2xzOiB0aGlzLl9mb2N1c2FibGVJdGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVGb2N1c01hbmFnZXIoaXRlbXM6IEZvY3VzYWJsZUl0ZW1bXSwgY29uZmlnOiBGb2N1c2FibGVMaXN0Q29uZmlnID0ge30pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEl0ZW1zJC5uZXh0KCk7XG5cbiAgICAgICAgbGV0IGtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPGFueT4oaXRlbXMpLndpdGhIb21lQW5kRW5kKCk7XG5cbiAgICAgICAgaWYgKGNvbmZpZy53cmFwICE9PSBmYWxzZSkge1xuICAgICAgICAgICAga2V5TWFuYWdlciA9IGtleU1hbmFnZXIud2l0aFdyYXAoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIGtleU1hbmFnZXIgPSBrZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24oY29uZmlnLmNvbnRlbnREaXJlY3Rpb24gfHwgJ2x0cicpOyAvLyBzaG91bGQgYmUgcmVwbGFjZWRcblxuICAgICAgICAgICAgLy8gVmVydGljYWwgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyBsZXQncyBkaXNhYmxlIGl0IGhlcmUgaW4gY29uc2lzdGVuY3kgcHVycG9zZXNcbiAgICAgICAgICAgIGtleU1hbmFnZXIgPSBrZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleU1hbmFnZXIuc2tpcFByZWRpY2F0ZSgoaSkgPT4gIWlzSXRlbUZvY3VzYWJsZShpKSk7XG5cbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IGtleU1hbmFnZXI7XG5cbiAgICAgICAgY29uc3QgZm9jdXNMaXN0ZW5lckRlc3Ryb3llcnMgPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PlxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIubGlzdGVuKGdldEl0ZW1FbGVtZW50KGl0ZW0pLCAnZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlSXRlbSA9IHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmdldChpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXJlY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JpZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyaWRJdGVtRm9jdXNlZCQubmV4dChkaXJlY3RpdmVJdGVtLl9wb3NpdGlvbiEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUZvY3VzZWQubmV4dCh7IGluZGV4LCB0b3RhbDogaXRlbXMubGVuZ3RoIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmZvckVhY2goKGkpID0+IGkuc2V0VGFiYmFibGUoaSA9PT0gZGlyZWN0aXZlSXRlbSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5ZG93bikpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlcj8ub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5fcmVmcmVzaEl0ZW1zJCwgZGVzdHJveU9ic2VydmFibGUodGhpcy5fZGVzdHJveVJlZikpKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiBmb2N1c0xpc3RlbmVyRGVzdHJveWVycy5mb3JFYWNoKChkKSA9PiBkKCkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdExpc3RGb2N1c2VkRXZlbnRBbm5vdW5jZXIocG9zaXRpb246IEZvY3VzYWJsZUxpc3RQb3NpdGlvbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgUm93OiAke3Bvc2l0aW9uLnJvd0luZGV4ICsgMX0gb2YgJHtwb3NpdGlvbi50b3RhbFJvd3N9LCB1c2UgRjIgYnV0dG9uIHRvIGRpdmUgaW4gYW5kIGZvY3VzIGxpc3QncyBpdGVtYDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2gkID0gbWVyZ2UodGhpcy5fcmVmcmVzaCQsIGRlc3Ryb3lPYnNlcnZhYmxlKHRoaXMuX2Rlc3Ryb3lSZWYpKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVJdGVtcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLnRvQXJyYXkoKSksXG4gICAgICAgICAgICAgICAgdGFwKChpdGVtczogRm9jdXNhYmxlSXRlbVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbiA9PT0gJ2dyaWQnID8gJ2hvcml6b250YWwnIDogdGhpcy5uYXZpZ2F0aW9uRGlyZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVGb2N1c01hbmFnZXIoaXRlbXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnREaXJlY3Rpb246IHRoaXMuY29udGVudERpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXA6ICEhdGhpcy53cmFwXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChyZWZyZXNoJClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,17 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { FocusableItemDirective } from '../focusable-item';
3
- import { FocusableListDirective } from './focusable-list.directive';
4
- import * as i0 from "@angular/core";
5
- export class FocusableListModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FocusableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: FocusableListModule, imports: [FocusableItemDirective, FocusableListDirective], exports: [FocusableItemDirective, FocusableListDirective] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FocusableListModule }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FocusableListModule, decorators: [{
11
- type: NgModule,
12
- args: [{
13
- imports: [FocusableItemDirective, FocusableListDirective],
14
- exports: [FocusableItemDirective, FocusableListDirective]
15
- }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIbEIsc0JBQXNCLEVBQUUsc0JBQXNCLGFBQzlDLHNCQUFzQixFQUFFLHNCQUFzQjsrR0FFL0MsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDO29CQUN6RCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztpQkFDNUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2ZvY3VzYWJsZS1pdGVtJztcbmltcG9ydCB7IEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0ZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsIEZvY3VzYWJsZUxpc3REaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtGb2N1c2FibGVJdGVtRGlyZWN0aXZlLCBGb2N1c2FibGVMaXN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVMaXN0TW9kdWxlIHt9XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ZvY3VzYWJsZSBsaXN0IHRva2VuJyk7XG4iXX0=
@@ -1,6 +0,0 @@
1
- export * from './focusable-list.directive';
2
- export * from './focusable-list.module';
3
- export * from './focusable-list.tokens';
4
- export * from './indirect-focusable-list.directive';
5
- export * from './scroll';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1saXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LnRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2luZGlyZWN0LWZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbCc7XG4iXX0=
@@ -1,59 +0,0 @@
1
- import { Directive, inject, Injector } from '@angular/core';
2
- import deepEqual from 'fast-deep-equal';
3
- import { BehaviorSubject, debounceTime, distinctUntilChanged, map } from 'rxjs';
4
- import { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';
5
- import * as i0 from "@angular/core";
6
- export class IndirectFocusableListDirective {
7
- /** @hidden */
8
- constructor() {
9
- /** @hidden */
10
- this.injector = inject(Injector);
11
- /** @hidden */
12
- this._focusableList = inject(FDK_FOCUSABLE_LIST_DIRECTIVE, { optional: true });
13
- /** @hidden */
14
- this._indirectChildren = new BehaviorSubject([]);
15
- /** @hidden */
16
- this._indirectChildrenMap = new Map();
17
- if (this._focusableList) {
18
- const queryList = {
19
- toArray: () => this._indirectChildren.value,
20
- get: (index) => this._indirectChildren.value[index],
21
- [Symbol.iterator]: () => this._indirectChildren.value[Symbol.iterator](),
22
- forEach: (callback, thisArg) => this._indirectChildren.value.forEach(callback, thisArg)
23
- };
24
- queryList['changes'] = this._indirectChildren.pipe(debounceTime(100), distinctUntilChanged(deepEqual), map(() => queryList));
25
- this._focusableList.setItems(queryList);
26
- }
27
- }
28
- /** @hidden */
29
- register(item, itemOrder) {
30
- this._indirectChildrenMap.set(item, itemOrder);
31
- this._updateIndirectChildren();
32
- }
33
- /** @hidden */
34
- unregister(item) {
35
- this._indirectChildrenMap.delete(item);
36
- this._updateIndirectChildren();
37
- }
38
- /** @hidden */
39
- _updateIndirectChildren() {
40
- this._indirectChildren.next(Array.from(this._indirectChildrenMap.entries())
41
- .sort(([, orderA], [, orderB]) => {
42
- const orderAValue = typeof orderA === 'function' ? orderA() : orderA;
43
- const orderBValue = typeof orderB === 'function' ? orderB() : orderB;
44
- return orderAValue - orderBValue;
45
- })
46
- .map(([focusableItem]) => focusableItem));
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IndirectFocusableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: IndirectFocusableListDirective, isStandalone: true, selector: "[fdkIndirectFocusableList]", exportAs: ["fdkIndirectFocusableList"], ngImport: i0 }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IndirectFocusableListDirective, decorators: [{
52
- type: Directive,
53
- args: [{
54
- selector: '[fdkIndirectFocusableList]',
55
- exportAs: 'fdkIndirectFocusableList',
56
- standalone: true
57
- }]
58
- }], ctorParameters: () => [] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kaXJlY3QtZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9pbmRpcmVjdC1mb2N1c2FibGUtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLDhCQUE4QjtJQVV2QyxjQUFjO0lBQ2Q7UUFWQSxjQUFjO1FBQ2QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixjQUFjO1FBQ2QsbUJBQWMsR0FBRyxNQUFNLENBQXlCLDRCQUE0QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEcsY0FBYztRQUNkLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUM3RCxjQUFjO1FBQ2QseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTBDLENBQUM7UUFJckUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQWtDO2dCQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQzNDLEdBQUcsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzNELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN4RSxPQUFPLEVBQUUsQ0FDTCxRQUErRSxFQUMvRSxPQUFhLEVBQ2YsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDeEQsQ0FBQztZQUNULFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUM5QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxFQUMvQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQ3ZCLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRLENBQUMsSUFBbUIsRUFBRSxTQUFrQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxJQUFtQjtRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ0osdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDckUsTUFBTSxXQUFXLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3JFLE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNyQyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FDL0MsQ0FBQztJQUNOLENBQUM7OEdBdERRLDhCQUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUwxQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvY3VzYWJsZUl0ZW0gfSBmcm9tICcuLi9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUuaXRlbSc7XG5pbXBvcnQgeyBGb2N1c2FibGVMaXN0RGlyZWN0aXZlLCBJdGVtc1F1ZXJ5TGlzdCB9IGZyb20gJy4vZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LnRva2Vucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0luZGlyZWN0Rm9jdXNhYmxlTGlzdF0nLFxuICAgIGV4cG9ydEFzOiAnZmRrSW5kaXJlY3RGb2N1c2FibGVMaXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEluZGlyZWN0Rm9jdXNhYmxlTGlzdERpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9jdXNhYmxlTGlzdCA9IGluamVjdDxGb2N1c2FibGVMaXN0RGlyZWN0aXZlPihGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luZGlyZWN0Q2hpbGRyZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvY3VzYWJsZUl0ZW1bXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luZGlyZWN0Q2hpbGRyZW5NYXAgPSBuZXcgTWFwPEZvY3VzYWJsZUl0ZW0sIG51bWJlciB8ICgoKSA9PiBudW1iZXIpPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZvY3VzYWJsZUxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5TGlzdDogSXRlbXNRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbT4gPSB7XG4gICAgICAgICAgICAgICAgdG9BcnJheTogKCkgPT4gdGhpcy5faW5kaXJlY3RDaGlsZHJlbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBnZXQ6IChpbmRleDogbnVtYmVyKSA9PiB0aGlzLl9pbmRpcmVjdENoaWxkcmVuLnZhbHVlW2luZGV4XSxcbiAgICAgICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4gdGhpcy5faW5kaXJlY3RDaGlsZHJlbi52YWx1ZVtTeW1ib2wuaXRlcmF0b3JdKCksXG4gICAgICAgICAgICAgICAgZm9yRWFjaDogKFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBGb2N1c2FibGVJdGVtLCBpbmRleDogbnVtYmVyLCBhcnJheTogRm9jdXNhYmxlSXRlbVtdKSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzQXJnPzogYW55XG4gICAgICAgICAgICAgICAgKSA9PiB0aGlzLl9pbmRpcmVjdENoaWxkcmVuLnZhbHVlLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpXG4gICAgICAgICAgICB9IGFzIGFueTtcbiAgICAgICAgICAgIHF1ZXJ5TGlzdFsnY2hhbmdlcyddID0gdGhpcy5faW5kaXJlY3RDaGlsZHJlbi5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGRlZXBFcXVhbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHF1ZXJ5TGlzdClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0LnNldEl0ZW1zKHF1ZXJ5TGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyKGl0ZW06IEZvY3VzYWJsZUl0ZW0sIGl0ZW1PcmRlcjogbnVtYmVyIHwgKCgpID0+IG51bWJlcikpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5kaXJlY3RDaGlsZHJlbk1hcC5zZXQoaXRlbSwgaXRlbU9yZGVyKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlSW5kaXJlY3RDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdW5yZWdpc3RlcihpdGVtOiBGb2N1c2FibGVJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luZGlyZWN0Q2hpbGRyZW5NYXAuZGVsZXRlKGl0ZW0pO1xuICAgICAgICB0aGlzLl91cGRhdGVJbmRpcmVjdENoaWxkcmVuKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUluZGlyZWN0Q2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luZGlyZWN0Q2hpbGRyZW4ubmV4dChcbiAgICAgICAgICAgIEFycmF5LmZyb20odGhpcy5faW5kaXJlY3RDaGlsZHJlbk1hcC5lbnRyaWVzKCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoKFssIG9yZGVyQV0sIFssIG9yZGVyQl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXJBVmFsdWUgPSB0eXBlb2Ygb3JkZXJBID09PSAnZnVuY3Rpb24nID8gb3JkZXJBKCkgOiBvcmRlckE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyQlZhbHVlID0gdHlwZW9mIG9yZGVyQiA9PT0gJ2Z1bmN0aW9uJyA/IG9yZGVyQigpIDogb3JkZXJCO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXJBVmFsdWUgLSBvcmRlckJWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoKFtmb2N1c2FibGVJdGVtXSkgPT4gZm9jdXNhYmxlSXRlbSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,43 +0,0 @@
1
- /** Helper function to scroll to focusable list or its item relatively to the container. */
2
- export function scrollIntoView(element, position) {
3
- if (!element) {
4
- return;
5
- }
6
- const scrollableParent = getScrollParent(element);
7
- if (scrollableParent) {
8
- const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;
9
- if (!position) {
10
- /**
11
- * check if top of focused element is fully visible, and if not, adjust scroll.
12
- * this is triggered when a sticky table header overlaps the focused cell.
13
- */
14
- const elRect = element.getBoundingClientRect();
15
- const topEl = document.elementFromPoint(elRect.left, elRect.top);
16
- if (!element.isSameNode(topEl) &&
17
- topEl &&
18
- element.getBoundingClientRect().top !== topEl.getBoundingClientRect().top) {
19
- scrollableParent.scrollBy({ top: elRect.top - topEl.getBoundingClientRect().bottom });
20
- }
21
- }
22
- switch (position) {
23
- case 'top':
24
- scrollableParent.scrollTop = itemOffsetTop;
25
- break;
26
- case 'bottom':
27
- scrollableParent.scrollTop = itemOffsetTop - (scrollableParent.offsetHeight - element.offsetHeight);
28
- break;
29
- }
30
- }
31
- }
32
- function getScrollParent(node) {
33
- if (node == null) {
34
- return null;
35
- }
36
- if (node.scrollHeight > node.clientHeight && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {
37
- return node;
38
- }
39
- else {
40
- return getScrollParent(node.parentNode);
41
- }
42
- }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9zY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBOEIsRUFBRSxRQUFrQztJQUM3RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDWCxPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWjs7O2VBR0c7WUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFnQixDQUFDO1lBQ2hGLElBQ0ksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztnQkFDMUIsS0FBSztnQkFDTCxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxFQUMzRSxDQUFDO2dCQUNDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUYsQ0FBQztRQUNMLENBQUM7UUFDRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2YsS0FBSyxLQUFLO2dCQUNOLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGFBQWEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BHLE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUF3QjtJQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxVQUF5QixDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL21vZGVscy9udWxsYWJsZSc7XG5cbmV4cG9ydCB0eXBlIFNjcm9sbFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8IHVuZGVmaW5lZDtcblxuLyoqIEhlbHBlciBmdW5jdGlvbiB0byBzY3JvbGwgdG8gZm9jdXNhYmxlIGxpc3Qgb3IgaXRzIGl0ZW0gcmVsYXRpdmVseSB0byB0aGUgY29udGFpbmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KGVsZW1lbnQ6IE51bGxhYmxlPEhUTUxFbGVtZW50PiwgcG9zaXRpb246IE51bGxhYmxlPFNjcm9sbFBvc2l0aW9uPik6IHZvaWQge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcblxuICAgIGlmIChzY3JvbGxhYmxlUGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1PZmZzZXRUb3AgPSBlbGVtZW50Lm9mZnNldFRvcCAtIHNjcm9sbGFibGVQYXJlbnQub2Zmc2V0VG9wO1xuICAgICAgICBpZiAoIXBvc2l0aW9uKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGNoZWNrIGlmIHRvcCBvZiBmb2N1c2VkIGVsZW1lbnQgaXMgZnVsbHkgdmlzaWJsZSwgYW5kIGlmIG5vdCwgYWRqdXN0IHNjcm9sbC5cbiAgICAgICAgICAgICAqIHRoaXMgaXMgdHJpZ2dlcmVkIHdoZW4gYSBzdGlja3kgdGFibGUgaGVhZGVyIG92ZXJsYXBzIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCB0b3BFbCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZWxSZWN0LmxlZnQsIGVsUmVjdC50b3ApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFlbGVtZW50LmlzU2FtZU5vZGUodG9wRWwpICYmXG4gICAgICAgICAgICAgICAgdG9wRWwgJiZcbiAgICAgICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAhPT0gdG9wRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlUGFyZW50LnNjcm9sbEJ5KHsgdG9wOiBlbFJlY3QudG9wIC0gdG9wRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZVBhcmVudC5zY3JvbGxUb3AgPSBpdGVtT2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlUGFyZW50LnNjcm9sbFRvcCA9IGl0ZW1PZmZzZXRUb3AgLSAoc2Nyb2xsYWJsZVBhcmVudC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlOiBIVE1MRWxlbWVudCB8IG51bGwpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuc2Nyb2xsSGVpZ2h0ID4gbm9kZS5jbGllbnRIZWlnaHQgJiYgWydhdXRvJywgJ3Njcm9sbCddLmluY2x1ZGVzKGdldENvbXB1dGVkU3R5bGUobm9kZSkub3ZlcmZsb3dZKSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KG5vZGUucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxufVxuIl19
@@ -1,55 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Directive, ElementRef, HostListener, Inject } from '@angular/core';
3
- import { IgnoreClickOnSelectionDirectiveToken } from './tokens';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Directive will stop propagation and prevent default of click, if selected area is coming from
7
- * directive's host element. This gives ability to not cancel all clicks on element, just the ones
8
- * which include selection
9
- */
10
- export class IgnoreClickOnSelectionDirective {
11
- /** @hidden */
12
- constructor(document, _elementRef) {
13
- this.document = document;
14
- this._elementRef = _elementRef;
15
- }
16
- /** Host click listener. Checks for selection existence and if finds one, checks anchor */
17
- clicked($event) {
18
- const selection = this.document.getSelection();
19
- if (selection?.toString()) {
20
- if (selection.anchorNode &&
21
- (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||
22
- this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))) {
23
- $event.stopPropagation();
24
- $event.preventDefault();
25
- }
26
- }
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IgnoreClickOnSelectionDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
29
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: IgnoreClickOnSelectionDirective, isStandalone: true, selector: "[fdkIgnoreClickOnSelection]", host: { listeners: { "click": "clicked($event)" } }, providers: [
30
- {
31
- provide: IgnoreClickOnSelectionDirectiveToken,
32
- useExisting: IgnoreClickOnSelectionDirective
33
- }
34
- ], ngImport: i0 }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IgnoreClickOnSelectionDirective, decorators: [{
37
- type: Directive,
38
- args: [{
39
- selector: '[fdkIgnoreClickOnSelection]',
40
- standalone: true,
41
- providers: [
42
- {
43
- provide: IgnoreClickOnSelectionDirectiveToken,
44
- useExisting: IgnoreClickOnSelectionDirective
45
- }
46
- ]
47
- }]
48
- }], ctorParameters: () => [{ type: Document, decorators: [{
49
- type: Inject,
50
- args: [DOCUMENT]
51
- }] }, { type: i0.ElementRef }], propDecorators: { clicked: [{
52
- type: HostListener,
53
- args: ['click', ['$event']]
54
- }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUVoRTs7OztHQUlHO0FBV0gsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxjQUFjO0lBQ2QsWUFDOEIsUUFBa0IsRUFDcEMsV0FBb0M7UUFEbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7SUFDN0MsQ0FBQztJQUVKLDBGQUEwRjtJQUUxRixPQUFPLENBQUMsTUFBa0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQyxJQUFJLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQ0ksU0FBUyxDQUFDLFVBQVU7Z0JBQ3BCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQ3BGLENBQUM7Z0JBQ0MsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOzhHQXJCUSwrQkFBK0Isa0JBRzVCLFFBQVE7a0dBSFgsK0JBQStCLCtIQVA3QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxvQ0FBb0M7Z0JBQzdDLFdBQVcsRUFBRSwrQkFBK0I7YUFDL0M7U0FDSjs7MkZBRVEsK0JBQStCO2tCQVYzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG9DQUFvQzs0QkFDN0MsV0FBVyxpQ0FBaUM7eUJBQy9DO3FCQUNKO2lCQUNKOzswQkFJUSxNQUFNOzJCQUFDLFFBQVE7a0VBTXBCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlVG9rZW4gfSBmcm9tICcuL3Rva2Vucyc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHdpbGwgc3RvcCBwcm9wYWdhdGlvbiBhbmQgcHJldmVudCBkZWZhdWx0IG9mIGNsaWNrLCBpZiBzZWxlY3RlZCBhcmVhIGlzIGNvbWluZyBmcm9tXG4gKiBkaXJlY3RpdmUncyBob3N0IGVsZW1lbnQuIFRoaXMgZ2l2ZXMgYWJpbGl0eSB0byBub3QgY2FuY2VsIGFsbCBjbGlja3Mgb24gZWxlbWVudCwganVzdCB0aGUgb25lc1xuICogd2hpY2ggaW5jbHVkZSBzZWxlY3Rpb25cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrSWdub3JlQ2xpY2tPblNlbGVjdGlvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVUb2tlbixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmUge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge31cblxuICAgIC8qKiBIb3N0IGNsaWNrIGxpc3RlbmVyLiBDaGVja3MgZm9yIHNlbGVjdGlvbiBleGlzdGVuY2UgYW5kIGlmIGZpbmRzIG9uZSwgY2hlY2tzIGFuY2hvciAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBjbGlja2VkKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoc2VsZWN0aW9uPy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmFuY2hvck5vZGUgJiZcbiAgICAgICAgICAgICAgICAodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoc2VsZWN0aW9uLmFuY2hvck5vZGUpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKHNlbGVjdGlvbi5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { IgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';
3
- import * as i0 from "@angular/core";
4
- export class IgnoreClickOnSelectionModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IgnoreClickOnSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.3", ngImport: i0, type: IgnoreClickOnSelectionModule, imports: [IgnoreClickOnSelectionDirective], exports: [IgnoreClickOnSelectionDirective] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IgnoreClickOnSelectionModule }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: IgnoreClickOnSelectionModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [IgnoreClickOnSelectionDirective],
13
- exports: [IgnoreClickOnSelectionDirective]
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFNeEYsTUFBTSxPQUFPLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOytHQUE1Qiw0QkFBNEIsWUFIM0IsK0JBQStCLGFBQy9CLCtCQUErQjsrR0FFaEMsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWdub3JlQ2xpY2tPblNlbGVjdGlvbk1vZHVsZSB7fVxuIl19
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLElBQUksY0FBYyxDQUFDLHFDQUFxQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVRva2VuID0gbmV3IEluamVjdGlvblRva2VuKCdJZ25vcmUgY2xpY2sgb24gc2VsZWN0aW9uIGRpcmVjdGl2ZScpO1xuIl19