@fundamental-ngx/cdk 0.43.2 → 0.44.0-rc.1

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 (303) hide show
  1. package/data-source/data-source.directive.d.ts +1 -1
  2. package/esm2022/data-source/base/base-data-source.class.mjs +112 -0
  3. package/{esm2020 → esm2022}/data-source/data-source.directive.mjs +4 -4
  4. package/{esm2020 → esm2022}/data-source/data-source.module.mjs +5 -5
  5. package/{esm2020 → esm2022}/forms/cva/cva-control.class.mjs +4 -4
  6. package/{esm2020 → esm2022}/forms/cva/cva.directive.mjs +4 -4
  7. package/{esm2020 → esm2022}/forms/forms.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/fundamental-ngx.module.mjs +5 -5
  9. package/{esm2020 → esm2022}/utils/abstract-fd-ngx-class.mjs +4 -4
  10. package/{esm2020 → esm2022}/utils/components/dynamic-portal/dynamic-portal.component.mjs +4 -4
  11. package/esm2022/utils/directives/auto-complete/auto-complete.directive.mjs +136 -0
  12. package/{esm2020 → esm2022}/utils/directives/auto-complete/auto-complete.module.mjs +5 -5
  13. package/{esm2020 → esm2022}/utils/directives/breakpoints/breakpoint.directive.mjs +8 -8
  14. package/{esm2020 → esm2022}/utils/directives/clicked/clicked-behavior.module.mjs +5 -5
  15. package/{esm2020 → esm2022}/utils/directives/clicked/clicked-event.plugin.mjs +4 -4
  16. package/esm2022/utils/directives/clicked/clicked.directive.mjs +51 -0
  17. package/{esm2020 → esm2022}/utils/directives/clicked/fdk-clicked-provider.service.mjs +4 -4
  18. package/esm2022/utils/directives/disabled/disabled-behavior.directive.mjs +114 -0
  19. package/{esm2020 → esm2022}/utils/directives/disabled/disabled-behavior.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/utils/directives/disabled/disabled.observer.mjs +4 -4
  21. package/{esm2020 → esm2022}/utils/directives/disabled/fdk-disabled-provider.service.mjs +4 -4
  22. package/{esm2020 → esm2022}/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +11 -11
  23. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +98 -0
  24. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +114 -0
  25. package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.directive.mjs +10 -10
  26. package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.module.mjs +5 -5
  27. package/esm2022/utils/directives/focusable-item/focusable-item.directive.mjs +217 -0
  28. package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable-item.module.mjs +5 -5
  29. package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable.observer.mjs +4 -4
  30. package/esm2022/utils/directives/focusable-list/focusable-list.directive.mjs +330 -0
  31. package/{esm2020 → esm2022}/utils/directives/focusable-list/focusable-list.module.mjs +5 -5
  32. package/esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +79 -0
  33. package/{esm2020 → esm2022}/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +5 -5
  34. package/esm2022/utils/directives/initial-focus/initial-focus.directive.mjs +152 -0
  35. package/{esm2020 → esm2022}/utils/directives/initial-focus/initial-focus.module.mjs +5 -5
  36. package/{esm2020 → esm2022}/utils/directives/intersection-spy/intersection-spy.directive.mjs +4 -4
  37. package/esm2022/utils/directives/line-clamp/line-clamp.directive.mjs +262 -0
  38. package/{esm2020 → esm2022}/utils/directives/line-clamp/line-clamp.module.mjs +11 -11
  39. package/esm2022/utils/directives/only-digits/only-digits.directive.mjs +218 -0
  40. package/{esm2020 → esm2022}/utils/directives/only-digits/only-digits.module.mjs +5 -5
  41. package/esm2022/utils/directives/overflow-list/overflow-list-item.directive.mjs +42 -0
  42. package/esm2022/utils/directives/overflow-list/overflow-list.directive.mjs +142 -0
  43. package/{esm2020 → esm2022}/utils/directives/overflow-list/overflow-list.module.mjs +11 -11
  44. package/{esm2020 → esm2022}/utils/directives/readonly/fdk-readonly-provider.service.mjs +4 -4
  45. package/esm2022/utils/directives/readonly/readonly-behavior.directive.mjs +97 -0
  46. package/{esm2020 → esm2022}/utils/directives/readonly/readonly-behavior.module.mjs +5 -5
  47. package/{esm2020 → esm2022}/utils/directives/readonly/readonly.observer.mjs +4 -4
  48. package/esm2022/utils/directives/repeat/repeat.directive.mjs +65 -0
  49. package/{esm2020 → esm2022}/utils/directives/repeat/repeat.module.mjs +5 -5
  50. package/esm2022/utils/directives/resize/resize-handle.directive.mjs +42 -0
  51. package/esm2022/utils/directives/resize/resize.directive.mjs +231 -0
  52. package/{esm2020 → esm2022}/utils/directives/resize/resize.module.mjs +5 -5
  53. package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-item.directive.mjs +12 -12
  54. package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.directive.mjs +10 -10
  55. package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.module.mjs +5 -5
  56. package/{esm2020 → esm2022}/utils/directives/selectable-list/selection.service.mjs +4 -4
  57. package/esm2022/utils/directives/template/template.directive.mjs +49 -0
  58. package/{esm2020 → esm2022}/utils/directives/template/template.module.mjs +5 -5
  59. package/esm2022/utils/directives/truncate/truncate.directive.mjs +96 -0
  60. package/{esm2020 → esm2022}/utils/directives/truncate/truncate.module.mjs +5 -5
  61. package/esm2022/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +274 -0
  62. package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +4 -4
  63. package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +4 -4
  64. package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +4 -4
  65. package/{esm2020 → esm2022}/utils/drag-and-drop/drag-and-drop.module.mjs +5 -5
  66. package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component.service.mjs +4 -4
  67. package/esm2022/utils/functions/get-document-font-size.mjs +9 -0
  68. package/{esm2020 → esm2022}/utils/pipes/async-or-sync.pipe.mjs +4 -4
  69. package/{esm2020 → esm2022}/utils/pipes/displayFn.pipe.mjs +4 -4
  70. package/{esm2020 → esm2022}/utils/pipes/filter-strings.pipe.mjs +4 -4
  71. package/{esm2020 → esm2022}/utils/pipes/is-compact.pipe.mjs +4 -4
  72. package/{esm2020 → esm2022}/utils/pipes/make-async.pipe.mjs +4 -4
  73. package/{esm2020 → esm2022}/utils/pipes/pipe.module.mjs +23 -23
  74. package/{esm2020 → esm2022}/utils/pipes/safe.pipe.mjs +4 -4
  75. package/esm2022/utils/pipes/search-highlight.pipe.mjs +32 -0
  76. package/{esm2020 → esm2022}/utils/pipes/truncate.pipe.mjs +4 -4
  77. package/{esm2020 → esm2022}/utils/pipes/two-digits.pipe.mjs +4 -4
  78. package/{esm2020 → esm2022}/utils/pipes/value-by-path.pipe.mjs +4 -4
  79. package/{esm2020 → esm2022}/utils/services/content-density.service.mjs +4 -4
  80. package/{esm2020 → esm2022}/utils/services/destroyed.service.mjs +4 -4
  81. package/{esm2020 → esm2022}/utils/services/focus-trap.service.mjs +4 -4
  82. package/{esm2020 → esm2022}/utils/services/keyboard-support/keyboard-support.service.mjs +4 -4
  83. package/{esm2020 → esm2022}/utils/services/local-storage.service.mjs +4 -4
  84. package/{esm2020 → esm2022}/utils/services/observers/attribute.observer.mjs +4 -4
  85. package/{esm2020 → esm2022}/utils/services/resize-observer.service.mjs +7 -7
  86. package/{esm2020 → esm2022}/utils/services/rtl.service.mjs +4 -4
  87. package/{esm2020 → esm2022}/utils/services/tabbable-element.service.mjs +4 -4
  88. package/{esm2020 → esm2022}/utils/services/themes.service.mjs +4 -4
  89. package/esm2022/utils/toast/base-toast-positions.mjs +108 -0
  90. package/{esm2020 → esm2022}/utils/toast/base-toast.service.mjs +4 -4
  91. package/{esm2020 → esm2022}/utils/toast/classes/base-toast-animated-container.component.mjs +4 -4
  92. package/{esm2020 → esm2022}/utils/toast/classes/base-toast-container.component.mjs +4 -4
  93. package/{esm2020 → esm2022}/utils/toast/classes/base-toast-overlay-container.mjs +4 -4
  94. package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.mjs +4 -4
  95. package/{esm2020 → esm2022}/utils/utils.module.mjs +77 -77
  96. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-data-source.mjs +11 -11
  97. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-data-source.mjs.map +1 -1
  98. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-forms.mjs +10 -10
  99. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-forms.mjs.map +1 -1
  100. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-utils.mjs +662 -657
  101. package/fesm2022/fundamental-ngx-cdk-utils.mjs.map +1 -0
  102. package/{fesm2015 → fesm2022}/fundamental-ngx-cdk.mjs +4 -4
  103. package/fesm2022/fundamental-ngx-cdk.mjs.map +1 -0
  104. package/forms/cva/cva.directive.d.ts +1 -1
  105. package/fundamental-ngx-cdk-v0.44.0-rc.1.tgz +0 -0
  106. package/package.json +23 -35
  107. package/utils/abstract-fd-ngx-class.d.ts +1 -1
  108. package/utils/components/dynamic-portal/dynamic-portal.component.d.ts +1 -1
  109. package/utils/directives/auto-complete/auto-complete.directive.d.ts +2 -2
  110. package/utils/directives/breakpoints/breakpoint.directive.d.ts +1 -1
  111. package/utils/directives/clicked/clicked.directive.d.ts +2 -2
  112. package/utils/directives/disabled/disabled-behavior.directive.d.ts +2 -2
  113. package/utils/directives/focus-key-manager/focus-key-manager-item.directive.d.ts +2 -2
  114. package/utils/directives/focus-key-manager/focus-key-manager-list.directive.d.ts +2 -2
  115. package/utils/directives/focusable-grid/focusable-grid.directive.d.ts +1 -1
  116. package/utils/directives/focusable-item/focusable-item.directive.d.ts +2 -2
  117. package/utils/directives/focusable-list/focusable-list.directive.d.ts +2 -2
  118. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +2 -2
  119. package/utils/directives/initial-focus/initial-focus.directive.d.ts +2 -2
  120. package/utils/directives/intersection-spy/intersection-spy.directive.d.ts +1 -1
  121. package/utils/directives/line-clamp/line-clamp.directive.d.ts +4 -4
  122. package/utils/directives/only-digits/only-digits.directive.d.ts +2 -2
  123. package/utils/directives/overflow-list/overflow-list-item.directive.d.ts +2 -2
  124. package/utils/directives/overflow-list/overflow-list.directive.d.ts +2 -2
  125. package/utils/directives/readonly/readonly-behavior.directive.d.ts +2 -2
  126. package/utils/directives/repeat/repeat.directive.d.ts +2 -2
  127. package/utils/directives/resize/resize-handle.directive.d.ts +2 -2
  128. package/utils/directives/resize/resize.directive.d.ts +2 -2
  129. package/utils/directives/selectable-list/selectable-item.directive.d.ts +1 -1
  130. package/utils/directives/selectable-list/selectable-list.directive.d.ts +1 -1
  131. package/utils/directives/template/template.directive.d.ts +2 -2
  132. package/utils/directives/truncate/truncate.directive.d.ts +2 -2
  133. package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +1 -1
  134. package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +1 -1
  135. package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +1 -1
  136. package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +1 -1
  137. package/utils/toast/classes/base-toast-animated-container.component.d.ts +1 -1
  138. package/utils/toast/classes/base-toast-container.component.d.ts +1 -1
  139. package/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.d.ts +1 -1
  140. package/esm2020/data-source/base/base-data-source.class.mjs +0 -112
  141. package/esm2020/utils/directives/auto-complete/auto-complete.directive.mjs +0 -136
  142. package/esm2020/utils/directives/clicked/clicked.directive.mjs +0 -51
  143. package/esm2020/utils/directives/disabled/disabled-behavior.directive.mjs +0 -114
  144. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +0 -98
  145. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +0 -114
  146. package/esm2020/utils/directives/focusable-item/focusable-item.directive.mjs +0 -217
  147. package/esm2020/utils/directives/focusable-list/focusable-list.directive.mjs +0 -330
  148. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +0 -79
  149. package/esm2020/utils/directives/initial-focus/initial-focus.directive.mjs +0 -152
  150. package/esm2020/utils/directives/line-clamp/line-clamp.directive.mjs +0 -262
  151. package/esm2020/utils/directives/only-digits/only-digits.directive.mjs +0 -218
  152. package/esm2020/utils/directives/overflow-list/overflow-list-item.directive.mjs +0 -42
  153. package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +0 -142
  154. package/esm2020/utils/directives/readonly/readonly-behavior.directive.mjs +0 -97
  155. package/esm2020/utils/directives/repeat/repeat.directive.mjs +0 -65
  156. package/esm2020/utils/directives/resize/resize-handle.directive.mjs +0 -42
  157. package/esm2020/utils/directives/resize/resize.directive.mjs +0 -231
  158. package/esm2020/utils/directives/template/template.directive.mjs +0 -49
  159. package/esm2020/utils/directives/truncate/truncate.directive.mjs +0 -96
  160. package/esm2020/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +0 -272
  161. package/esm2020/utils/functions/get-document-font-size.mjs +0 -5
  162. package/esm2020/utils/pipes/search-highlight.pipe.mjs +0 -32
  163. package/esm2020/utils/toast/base-toast-positions.mjs +0 -108
  164. package/fesm2015/fundamental-ngx-cdk-data-source.mjs +0 -405
  165. package/fesm2015/fundamental-ngx-cdk-data-source.mjs.map +0 -1
  166. package/fesm2015/fundamental-ngx-cdk-forms.mjs +0 -398
  167. package/fesm2015/fundamental-ngx-cdk-forms.mjs.map +0 -1
  168. package/fesm2015/fundamental-ngx-cdk-utils.mjs +0 -7611
  169. package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +0 -1
  170. package/fesm2015/fundamental-ngx-cdk.mjs.map +0 -1
  171. package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +0 -1
  172. package/fesm2020/fundamental-ngx-cdk.mjs +0 -29
  173. package/fesm2020/fundamental-ngx-cdk.mjs.map +0 -1
  174. package/fundamental-ngx-cdk-v0.43.2.tgz +0 -0
  175. /package/{esm2020 → esm2022}/data-source/base/abstract-data-provider.class.mjs +0 -0
  176. /package/{esm2020 → esm2022}/data-source/fundamental-ngx-cdk-data-source.mjs +0 -0
  177. /package/{esm2020 → esm2022}/data-source/helpers/apply-datasource-directive.mjs +0 -0
  178. /package/{esm2020 → esm2022}/data-source/helpers/common.mjs +0 -0
  179. /package/{esm2020 → esm2022}/data-source/helpers/is-datasource.mjs +0 -0
  180. /package/{esm2020 → esm2022}/data-source/index.mjs +0 -0
  181. /package/{esm2020 → esm2022}/data-source/models/data-source-provider.mjs +0 -0
  182. /package/{esm2020 → esm2022}/data-source/models/data-source.mjs +0 -0
  183. /package/{esm2020 → esm2022}/data-source/models/index.mjs +0 -0
  184. /package/{esm2020 → esm2022}/data-source/models/matching-strategy.mjs +0 -0
  185. /package/{esm2020 → esm2022}/data-source/tokens.mjs +0 -0
  186. /package/{esm2020 → esm2022}/forms/fundamental-ngx-cdk-forms.mjs +0 -0
  187. /package/{esm2020 → esm2022}/forms/helpers/state.mjs +0 -0
  188. /package/{esm2020 → esm2022}/forms/index.mjs +0 -0
  189. /package/{esm2020 → esm2022}/forms/models/cva.mjs +0 -0
  190. /package/{esm2020 → esm2022}/forms/models/form-error.mjs +0 -0
  191. /package/{esm2020 → esm2022}/forms/models/form-field.mjs +0 -0
  192. /package/{esm2020 → esm2022}/forms/models/form-state.mjs +0 -0
  193. /package/{esm2020 → esm2022}/forms/models/select-item.mjs +0 -0
  194. /package/{esm2020 → esm2022}/forms/tokens/form-field-control.token.mjs +0 -0
  195. /package/{esm2020 → esm2022}/forms/tokens/form-field.token.mjs +0 -0
  196. /package/{esm2020 → esm2022}/fundamental-ngx-cdk.mjs +0 -0
  197. /package/{esm2020 → esm2022}/index.mjs +0 -0
  198. /package/{esm2020 → esm2022}/utils/async-strategy/function-strategy.class.mjs +0 -0
  199. /package/{esm2020 → esm2022}/utils/async-strategy/index.mjs +0 -0
  200. /package/{esm2020 → esm2022}/utils/async-strategy/observable-strategy.class.mjs +0 -0
  201. /package/{esm2020 → esm2022}/utils/async-strategy/promise-strategy.class.mjs +0 -0
  202. /package/{esm2020 → esm2022}/utils/async-strategy/select-strategy.class.mjs +0 -0
  203. /package/{esm2020 → esm2022}/utils/async-strategy/subscription-strategy.interface.mjs +0 -0
  204. /package/{esm2020 → esm2022}/utils/async-strategy/value-strategy.class.mjs +0 -0
  205. /package/{esm2020 → esm2022}/utils/coercion/array.mjs +0 -0
  206. /package/{esm2020 → esm2022}/utils/components/index.mjs +0 -0
  207. /package/{esm2020 → esm2022}/utils/consts/error-messages.mjs +0 -0
  208. /package/{esm2020 → esm2022}/utils/consts/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/utils/consts/overflow-priority-score.mjs +0 -0
  210. /package/{esm2020 → esm2022}/utils/consts/unicode-letters.regex.mjs +0 -0
  211. /package/{esm2020 → esm2022}/utils/consts/unicode-numbers.regex.mjs +0 -0
  212. /package/{esm2020 → esm2022}/utils/datatypes/color-accent.datatype.mjs +0 -0
  213. /package/{esm2020 → esm2022}/utils/datatypes/hash.datatype.mjs +0 -0
  214. /package/{esm2020 → esm2022}/utils/datatypes/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/utils/datatypes/size.datatype.mjs +0 -0
  216. /package/{esm2020 → esm2022}/utils/decorators/apply-css-class.decorator.mjs +0 -0
  217. /package/{esm2020 → esm2022}/utils/decorators/apply-css-style.decorator.mjs +0 -0
  218. /package/{esm2020 → esm2022}/utils/decorators/coerce-boolean.mjs +0 -0
  219. /package/{esm2020 → esm2022}/utils/decorators/coerce-css-pixel.mjs +0 -0
  220. /package/{esm2020 → esm2022}/utils/decorators/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/utils/decorators/setter-alternator.mjs +0 -0
  222. /package/{esm2020 → esm2022}/utils/deprecated-selector.class.mjs +0 -0
  223. /package/{esm2020 → esm2022}/utils/directives/breakpoints/responsive-breakpoints.mjs +0 -0
  224. /package/{esm2020 → esm2022}/utils/directives/clicked/index.mjs +0 -0
  225. /package/{esm2020 → esm2022}/utils/directives/disabled/default-disabled-view-modifier.mjs +0 -0
  226. /package/{esm2020 → esm2022}/utils/directives/disabled/disabled-behavior.interface.mjs +0 -0
  227. /package/{esm2020 → esm2022}/utils/directives/disabled/disabled-view-modifier.interface.mjs +0 -0
  228. /package/{esm2020 → esm2022}/utils/directives/disabled/fdk-disabled.token.mjs +0 -0
  229. /package/{esm2020 → esm2022}/utils/directives/disabled/index.mjs +0 -0
  230. /package/{esm2020 → esm2022}/utils/directives/disabled/set-disabled-state.mjs +0 -0
  231. /package/{esm2020 → esm2022}/utils/directives/focus-key-manager/focus-key-manager.tokens.mjs +0 -0
  232. /package/{esm2020 → esm2022}/utils/directives/focus-key-manager/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.tokens.mjs +0 -0
  234. /package/{esm2020 → esm2022}/utils/directives/focusable-grid/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable-item.tokens.mjs +0 -0
  236. /package/{esm2020 → esm2022}/utils/directives/focusable-item/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/utils/directives/focusable-item/is-element-focusable-by-default.mjs +0 -0
  238. /package/{esm2020 → esm2022}/utils/directives/focusable-list/focusable-list.tokens.mjs +0 -0
  239. /package/{esm2020 → esm2022}/utils/directives/focusable-list/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/utils/directives/focusable-list/scroll.mjs +0 -0
  241. /package/{esm2020 → esm2022}/utils/directives/ignore-click-on-selection/tokens.mjs +0 -0
  242. /package/{esm2020 → esm2022}/utils/directives/index.mjs +0 -0
  243. /package/{esm2020 → esm2022}/utils/directives/readonly/default-readonly-view-modifier.mjs +0 -0
  244. /package/{esm2020 → esm2022}/utils/directives/readonly/fdk-readonly.token.mjs +0 -0
  245. /package/{esm2020 → esm2022}/utils/directives/readonly/index.mjs +0 -0
  246. /package/{esm2020 → esm2022}/utils/directives/readonly/readonly-behavior.interface.mjs +0 -0
  247. /package/{esm2020 → esm2022}/utils/directives/readonly/readonly-view-modifier.interface.mjs +0 -0
  248. /package/{esm2020 → esm2022}/utils/directives/readonly/set-readonly-state.mjs +0 -0
  249. /package/{esm2020 → esm2022}/utils/directives/selectable-list/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/utils/directives/selectable-list/select-component-root.token.mjs +0 -0
  251. /package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-item.token.mjs +0 -0
  252. /package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.tokens.mjs +0 -0
  253. /package/{esm2020 → esm2022}/utils/drag-and-drop/dnd.interfaces.mjs +0 -0
  254. /package/{esm2020 → esm2022}/utils/drag-and-drop/index.mjs +0 -0
  255. /package/{esm2020 → esm2022}/utils/drag-and-drop/tokens.mjs +0 -0
  256. /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-config.mjs +0 -0
  257. /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-container.mjs +0 -0
  258. /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-injector.mjs +0 -0
  259. /package/{esm2020 → esm2022}/utils/dynamic-component/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/utils/functions/consumer-provider-factory.mjs +0 -0
  261. /package/{esm2020 → esm2022}/utils/functions/element-size.mjs +0 -0
  262. /package/{esm2020 → esm2022}/utils/functions/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/utils/functions/intersection-observable.mjs +0 -0
  264. /package/{esm2020 → esm2022}/utils/functions/is-compact-density.mjs +0 -0
  265. /package/{esm2020 → esm2022}/utils/functions/is-odd.mjs +0 -0
  266. /package/{esm2020 → esm2022}/utils/functions/key-util.mjs +0 -0
  267. /package/{esm2020 → esm2022}/utils/functions/module-deprecations-provider.mjs +0 -0
  268. /package/{esm2020 → esm2022}/utils/functions/parser-file-size.mjs +0 -0
  269. /package/{esm2020 → esm2022}/utils/functions/random-color-accent.mjs +0 -0
  270. /package/{esm2020 → esm2022}/utils/functions/resize-observable.mjs +0 -0
  271. /package/{esm2020 → esm2022}/utils/functions/scroll.mjs +0 -0
  272. /package/{esm2020 → esm2022}/utils/functions/uuidv4-generator.mjs +0 -0
  273. /package/{esm2020 → esm2022}/utils/fundamental-ngx-cdk-utils.mjs +0 -0
  274. /package/{esm2020 → esm2022}/utils/helpers/get-native-element.mjs +0 -0
  275. /package/{esm2020 → esm2022}/utils/helpers/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/utils/helpers/range-selector.mjs +0 -0
  277. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  278. /package/{esm2020 → esm2022}/utils/interfaces/content-density.mjs +0 -0
  279. /package/{esm2020 → esm2022}/utils/interfaces/css-class-builder.interface.mjs +0 -0
  280. /package/{esm2020 → esm2022}/utils/interfaces/css-style-builder.interface.mjs +0 -0
  281. /package/{esm2020 → esm2022}/utils/interfaces/has-element-ref.interface.mjs +0 -0
  282. /package/{esm2020 → esm2022}/utils/interfaces/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/utils/interfaces/keyboard-support-item.interface.mjs +0 -0
  284. /package/{esm2020 → esm2022}/utils/interfaces/module-deprecation.interface.mjs +0 -0
  285. /package/{esm2020 → esm2022}/utils/interfaces/require.interface.mjs +0 -0
  286. /package/{esm2020 → esm2022}/utils/list-item/list-item-utils.mjs +0 -0
  287. /package/{esm2020 → esm2022}/utils/models/nullable.mjs +0 -0
  288. /package/{esm2020 → esm2022}/utils/pipes/index.mjs +0 -0
  289. /package/{esm2020 → esm2022}/utils/services/index.mjs +0 -0
  290. /package/{esm2020 → esm2022}/utils/toast/base-toast-animations.mjs +0 -0
  291. /package/{esm2020 → esm2022}/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.mjs +0 -0
  292. /package/{esm2020 → esm2022}/utils/toast/classes/base-toast-config.mjs +0 -0
  293. /package/{esm2020 → esm2022}/utils/toast/classes/base-toast-ref.mjs +0 -0
  294. /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.mjs +0 -0
  295. /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.mjs +0 -0
  296. /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.mjs +0 -0
  297. /package/{esm2020 → esm2022}/utils/toast/index.mjs +0 -0
  298. /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-container-component.interface.mjs +0 -0
  299. /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-duration-dismissible-container-component.interface.mjs +0 -0
  300. /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-text-component.interface.mjs +0 -0
  301. /package/{esm2020 → esm2022}/utils/tokens/module-deprecations.token.mjs +0 -0
  302. /package/{esm2020 → esm2022}/utils/tokens/viewport-size.observable.mjs +0 -0
  303. /package/{esm2020 → esm2022}/utils/typecheck.mjs +0 -0
@@ -0,0 +1,330 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ContentChildren, Directive, ElementRef, EventEmitter, HostBinding, HostListener, inject, Input, Output, QueryList, Renderer2 } from '@angular/core';
3
+ import { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';
4
+ import { DestroyedService } from '../../services/destroyed.service';
5
+ import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
6
+ import { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableObserver } from '../focusable-item';
7
+ import { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';
8
+ import { merge, Subject } from 'rxjs';
9
+ import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';
10
+ import { getNativeElement } from '../../helpers';
11
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
12
+ import { intersectionObservable, KeyUtil } from '../../functions';
13
+ import { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';
14
+ import { scrollIntoView } from './scroll';
15
+ import * as i0 from "@angular/core";
16
+ export class DeprecatedFocusableListDirective extends DeprecatedSelector {
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DeprecatedFocusableListDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: DeprecatedFocusableListDirective, isStandalone: true, selector: "[fnFocusableList]", providers: [
19
+ {
20
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
21
+ useValue: getDeprecatedModel('[fdkFocusableList]', '[fnFocusableList]')
22
+ }
23
+ ], usesInheritance: true, ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DeprecatedFocusableListDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{
28
+ // eslint-disable-next-line @angular-eslint/directive-selector
29
+ selector: '[fnFocusableList]',
30
+ standalone: true,
31
+ providers: [
32
+ {
33
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
34
+ useValue: getDeprecatedModel('[fdkFocusableList]', '[fnFocusableList]')
35
+ }
36
+ ]
37
+ }]
38
+ }] });
39
+ export class FocusableListDirective {
40
+ /** Whether the whole list should be focusable, handy in grids. */
41
+ set focusable(value) {
42
+ this._focusable = coerceBooleanProperty(value);
43
+ this.setTabbable(this._focusable);
44
+ }
45
+ get focusable() {
46
+ return this._focusable;
47
+ }
48
+ /** @hidden */
49
+ get _focusableItems() {
50
+ return this._items ? this._items : this._projectedFocusableItems;
51
+ }
52
+ /** @hidden */
53
+ get _tabindex() {
54
+ return this._tabbable ? 0 : -1;
55
+ }
56
+ /** @hidden */
57
+ constructor() {
58
+ /** @hidden */
59
+ this._focusable = false;
60
+ /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */
61
+ this.navigationDirection = 'vertical';
62
+ /** Direction of the content. */
63
+ this.contentDirection = 'ltr';
64
+ /**
65
+ * 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.
66
+ */
67
+ this.wrap = false;
68
+ /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */
69
+ this.listFocusedEventAnnouncer = this._defaultListFocusedEventAnnouncer;
70
+ /** Event emitted when list's item focused, contains item's position info. */
71
+ this.itemFocused = new EventEmitter();
72
+ /** @hidden */
73
+ this._gridItemFocused$ = new Subject();
74
+ /** @hidden */
75
+ this._gridListFocused$ = new Subject();
76
+ /** @hidden */
77
+ this._keydown$ = new Subject();
78
+ /** @hidden */
79
+ this._tabbable = false;
80
+ /** @hidden */
81
+ this._refreshItems$ = new Subject();
82
+ /** @hidden */
83
+ this._refresh$ = new Subject();
84
+ /** @hidden */
85
+ this._renderer = inject(Renderer2);
86
+ /** @hidden */
87
+ this._destroy$ = inject(DestroyedService);
88
+ /** @hidden */
89
+ this._elementRef = inject(ElementRef);
90
+ /** @hidden */
91
+ this._liveAnnouncer = inject(LiveAnnouncer);
92
+ /** @hidden */
93
+ this._focusableObserver = inject(FocusableObserver);
94
+ /** @hidden */
95
+ this._document = inject(DOCUMENT);
96
+ /** @hidden */
97
+ this._isVisible = false;
98
+ intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })
99
+ .pipe(takeUntil(this._destroy$))
100
+ .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));
101
+ this._focusableObserver
102
+ .observe(this._elementRef, false)
103
+ .pipe(takeUntil(this._destroy$))
104
+ .subscribe((isFocusable) => {
105
+ if (!isFocusable && isFocusable !== this.focusable) {
106
+ this.focusable = isFocusable;
107
+ }
108
+ });
109
+ }
110
+ /** @hidden */
111
+ ngOnChanges(changes) {
112
+ if (!this._keyManager) {
113
+ return;
114
+ }
115
+ if (changes['wrap']) {
116
+ this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);
117
+ }
118
+ if (changes['navigationDirection']) {
119
+ this._updateNavigationDirection();
120
+ }
121
+ }
122
+ /** @hidden */
123
+ ngAfterViewInit() {
124
+ this._listenOnItems();
125
+ }
126
+ /** Set items programmatically. */
127
+ setItems(items) {
128
+ this._items = items;
129
+ this._listenOnItems();
130
+ }
131
+ /** @hidden */
132
+ _listenOnItems() {
133
+ const refresh$ = merge(this._refresh$, this._destroy$);
134
+ this._refresh$.next();
135
+ this._focusableItems.changes
136
+ .pipe(startWith(null), map(() => this._focusableItems.toArray()), tap((items) => {
137
+ const focusableItems = items.map((item, index) => ({
138
+ index,
139
+ focusable: () => item.fdkFocusableItem,
140
+ elementRef: item.elementRef,
141
+ focus: () => item.elementRef.nativeElement.focus(),
142
+ keydown: item._keydown$
143
+ }));
144
+ const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;
145
+ this._initializeFocusManager(focusableItems, this, {
146
+ direction,
147
+ contentDirection: this.contentDirection,
148
+ wrap: this.wrap
149
+ });
150
+ }), takeUntil(refresh$))
151
+ .subscribe();
152
+ }
153
+ /** @hidden */
154
+ ngOnDestroy() {
155
+ this._keyManager?.destroy();
156
+ }
157
+ /** @hidden */
158
+ _onKeydown(event) {
159
+ // Already handled
160
+ if (event.defaultPrevented) {
161
+ return;
162
+ }
163
+ const isFocused = this._document.activeElement === this._elementRef.nativeElement;
164
+ const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;
165
+ const shouldFocusList = ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;
166
+ if (shouldFocusChild) {
167
+ event.stopPropagation();
168
+ this.setActiveItem(0);
169
+ return;
170
+ }
171
+ else if (shouldFocusList) {
172
+ event.stopPropagation();
173
+ this.focus();
174
+ return;
175
+ }
176
+ this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });
177
+ }
178
+ /** Set active item in list */
179
+ setActiveItem(index, scrollPosition) {
180
+ let availableIndex;
181
+ this._focusableItems.find((item, itemIndex) => {
182
+ if (itemIndex >= index && item.fdkFocusableItem) {
183
+ availableIndex = itemIndex;
184
+ return true;
185
+ }
186
+ return false;
187
+ });
188
+ if (availableIndex != null) {
189
+ scrollIntoView(this._focusableItems.get(availableIndex)?.elementRef.nativeElement, scrollPosition);
190
+ this._keyManager?.setActiveItem(availableIndex);
191
+ }
192
+ }
193
+ /** Focus whole list */
194
+ focus(scrollPosition) {
195
+ if (this.focusable) {
196
+ scrollIntoView(this._elementRef.nativeElement, scrollPosition);
197
+ this._elementRef.nativeElement.focus();
198
+ }
199
+ }
200
+ /** Set tabbable state */
201
+ setTabbable(state) {
202
+ this._tabbable = state;
203
+ }
204
+ /** @hidden */
205
+ async _onFocus() {
206
+ if (this._gridPosition) {
207
+ this._gridListFocused$.next(this._gridPosition);
208
+ this._liveAnnouncer.clear();
209
+ await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));
210
+ this.setTabbable(true);
211
+ }
212
+ }
213
+ /** @hidden */
214
+ _updateNavigationDirection() {
215
+ if (!this._keyManager) {
216
+ return;
217
+ }
218
+ if (this.navigationDirection === 'vertical') {
219
+ this._keyManager = this._keyManager.withVerticalOrientation(true);
220
+ this._keyManager = this._keyManager.withHorizontalOrientation(null);
221
+ }
222
+ else {
223
+ this._keyManager = this._keyManager.withVerticalOrientation(false);
224
+ this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection || 'ltr');
225
+ }
226
+ }
227
+ /** @hidden */
228
+ _setItemsTabbable(state) {
229
+ this._focusableItems.forEach((item) => item.setTabbable(state));
230
+ }
231
+ /** @hidden */
232
+ _setGridPosition(position) {
233
+ this._gridPosition = position;
234
+ this._focusableItems.changes
235
+ .pipe(startWith(this._focusableItems), takeUntil(this._destroy$))
236
+ .subscribe((items) => items.forEach((item, index) => (item._position = {
237
+ ...this._gridPosition,
238
+ colIndex: index,
239
+ totalCols: this._focusableItems.length
240
+ })));
241
+ }
242
+ /** @hidden */
243
+ _initializeFocusManager(items, list, config = {}) {
244
+ this._refreshItems$.next();
245
+ let keyManager = new FocusKeyManager(items).withHomeAndEnd();
246
+ if (config.wrap !== false) {
247
+ keyManager = keyManager.withWrap();
248
+ }
249
+ if (config.direction === 'horizontal') {
250
+ keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced
251
+ // Vertical is enabled by default, so let's disable it here in consistency purposes
252
+ keyManager = keyManager.withVerticalOrientation(false);
253
+ }
254
+ keyManager.skipPredicate((item) => !(typeof item.focusable === 'boolean' ? item.focusable : item.focusable()));
255
+ this._keyManager = keyManager;
256
+ const focusListenerDestroyers = items.map((item, index) => this._renderer.listen(getNativeElement(item), 'focus', () => {
257
+ const directiveItem = this._focusableItems.get(index);
258
+ if (!directiveItem) {
259
+ return;
260
+ }
261
+ if (this._gridPosition) {
262
+ this._gridItemFocused$.next(directiveItem._position);
263
+ }
264
+ this.itemFocused.next({ index: item.index, total: items.length });
265
+ this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));
266
+ this._keyManager?.setActiveItem(item.index);
267
+ }));
268
+ merge(...items.map((item) => item.keydown))
269
+ .pipe(tap((event) => {
270
+ // Already handled
271
+ if (event.defaultPrevented) {
272
+ return;
273
+ }
274
+ this._keyManager?.onKeydown(event);
275
+ }), takeUntil(merge(this._refreshItems$, this._destroy$)), finalize(() => focusListenerDestroyers.forEach((d) => d())))
276
+ .subscribe();
277
+ }
278
+ /** @hidden */
279
+ _defaultListFocusedEventAnnouncer(position) {
280
+ return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;
281
+ }
282
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FocusableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
283
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: FocusableListDirective, isStandalone: true, selector: "[fdkFocusableList]", inputs: { focusable: "focusable", navigationDirection: "navigationDirection", contentDirection: "contentDirection", wrap: "wrap", listFocusedEventAnnouncer: "listFocusedEventAnnouncer" }, outputs: { itemFocused: "itemFocused" }, host: { listeners: { "keydown": "_onKeydown($event)", "focus": "_onFocus()" }, properties: { "attr.tabindex": "this._tabindex" } }, providers: [
284
+ {
285
+ provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
286
+ useExisting: FocusableListDirective
287
+ },
288
+ DestroyedService
289
+ ], queries: [{ propertyName: "_projectedFocusableItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }], exportAs: ["fdkFocusableList"], usesOnChanges: true, ngImport: i0 }); }
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FocusableListDirective, decorators: [{
292
+ type: Directive,
293
+ args: [{
294
+ selector: '[fdkFocusableList]',
295
+ exportAs: 'fdkFocusableList',
296
+ standalone: true,
297
+ providers: [
298
+ {
299
+ provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
300
+ useExisting: FocusableListDirective
301
+ },
302
+ DestroyedService
303
+ ]
304
+ }]
305
+ }], ctorParameters: function () { return []; }, propDecorators: { focusable: [{
306
+ type: Input
307
+ }], navigationDirection: [{
308
+ type: Input
309
+ }], contentDirection: [{
310
+ type: Input
311
+ }], wrap: [{
312
+ type: Input
313
+ }], listFocusedEventAnnouncer: [{
314
+ type: Input
315
+ }], itemFocused: [{
316
+ type: Output
317
+ }], _projectedFocusableItems: [{
318
+ type: ContentChildren,
319
+ args: [FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true }]
320
+ }], _tabindex: [{
321
+ type: HostBinding,
322
+ args: ['attr.tabindex']
323
+ }], _onKeydown: [{
324
+ type: HostListener,
325
+ args: ['keydown', ['$event']]
326
+ }], _onFocus: [{
327
+ type: HostListener,
328
+ args: ['focus']
329
+ }] } });
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1saXN0L2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQW1CLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFB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RUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcsd0JBQXdCO3lCQUN0Qzt3QkFDRCxnQkFBZ0I7cUJBQ25CO2lCQUNKOzBFQUlPLFNBQVM7c0JBRFosS0FBSztnQkFlTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLRyxXQUFXO3NCQURuQixNQUFNO2dCQUtTLHdCQUF3QjtzQkFEdkMsZUFBZTt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBa0RoRSxTQUFTO3NCQURaLFdBQVc7dUJBQUMsZUFBZTtnQkF1RjVCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBK0Q3QixRQUFRO3NCQURiLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbiB9IGZyb20gJy4uL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVzdHJveWVkLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuaW1wb3J0IHsgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgRm9jdXNhYmxlT2JzZXJ2ZXIgfSBmcm9tICcuLi9mb2N1c2FibGUtaXRlbSc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFIH0gZnJvbSAnLi9mb2N1c2FibGUtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL251bGxhYmxlJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNLZXlNYW5hZ2VyLCBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgSGFzRWxlbWVudFJlZiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgaW50ZXJzZWN0aW9uT2JzZXJ2YWJsZSwgS2V5VXRpbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBFTlRFUiwgRVNDQVBFLCBGMiwgTUFDX0VOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IHNjcm9sbEludG9WaWV3LCBTY3JvbGxQb3NpdGlvbiB9IGZyb20gJy4vc2Nyb2xsJztcblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c2FibGVMaXN0UG9zaXRpb24ge1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgdG90YWxSb3dzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNhYmxlTGlzdEl0ZW1Gb2N1c2VkRXZlbnQge1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgdG90YWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c2FibGVMaXN0S2V5ZG93bkV2ZW50IHtcbiAgICBsaXN0OiBGb2N1c2FibGVMaXN0RGlyZWN0aXZlO1xuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50O1xuICAgIGFjdGl2ZUl0ZW1JbmRleDogTnVsbGFibGU8bnVtYmVyPjtcbn1cblxuaW50ZXJmYWNlIEZvY3VzYWJsZUxpc3RDb25maWcge1xuICAgIHdyYXA/OiBib29sZWFuO1xuICAgIGRpcmVjdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gICAgY29udGVudERpcmVjdGlvbj86ICdsdHInIHwgJ3J0bCcgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBGb2N1c2FibGVJdGVtID0gRm9jdXNhYmxlT3B0aW9uICZcbiAgICBIYXNFbGVtZW50UmVmICYgeyBpbmRleDogbnVtYmVyOyBmb2N1c2FibGU6ICgoKSA9PiBib29sZWFuKSB8IGJvb2xlYW47IGtleWRvd246IFN1YmplY3Q8S2V5Ym9hcmRFdmVudD4gfTtcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmbkZvY3VzYWJsZUxpc3RdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtGb2N1c2FibGVMaXN0XScsICdbZm5Gb2N1c2FibGVMaXN0XScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRGb2N1c2FibGVMaXN0RGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0ZvY3VzYWJsZUxpc3RdJyxcbiAgICBleHBvcnRBczogJ2Zka0ZvY3VzYWJsZUxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRm9jdXNhYmxlTGlzdERpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVMaXN0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBXaGV0aGVyIHRoZSB3aG9sZSBsaXN0IHNob3VsZCBiZSBmb2N1c2FibGUsIGhhbmR5IGluIGdyaWRzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvY3VzYWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5zZXRUYWJiYWJsZSh0aGlzLl9mb2N1c2FibGUpO1xuICAgIH1cbiAgICBnZXQgZm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNhYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9mb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKiBEaXJlY3Rpb24gb2YgbmF2aWdhdGlvbi4gU2hvdWxkIGJlIHNldCB0byAnZ3JpZCcgd2hlbiBsaXN0IGlzIGEgcGFydCBvZiBncmlkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbkRpcmVjdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyB8ICdncmlkJyA9ICd2ZXJ0aWNhbCc7XG5cbiAgICAvKiogRGlyZWN0aW9uIG9mIHRoZSBjb250ZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudERpcmVjdGlvbjogJ2x0cicgfCAncnRsJyB8IG51bGwgPSAnbHRyJztcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgd3JhcHBpbmcgbW9kZSB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGFjdGl2ZSBpdGVtIHdpbGwgd3JhcCB0byB0aGUgb3RoZXIgZW5kIG9mIGxpc3Qgd2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgd3JhcCA9IGZhbHNlO1xuXG4gICAgLyoqIEZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEgc3RyaW5nIHRvIGJlIGFubm91bmNlZCBieSBzY3JlZW4tcmVhZGVyIHdoZW5ldmVyIGFuIHJvdyB3aGljaCBpcyBpbiBncmlkIHJlY2VpdmVzIGZvY3VzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGlzdEZvY3VzZWRFdmVudEFubm91bmNlcjogKHBvc2l0aW9uOiBGb2N1c2FibGVMaXN0UG9zaXRpb24pID0+IHN0cmluZyA9IHRoaXMuX2RlZmF1bHRMaXN0Rm9jdXNlZEV2ZW50QW5ub3VuY2VyO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBsaXN0J3MgaXRlbSBmb2N1c2VkLCBjb250YWlucyBpdGVtJ3MgcG9zaXRpb24gaW5mby4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpdGVtRm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNhYmxlTGlzdEl0ZW1Gb2N1c2VkRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHB1YmxpYyByZWFkb25seSBfcHJvamVjdGVkRm9jdXNhYmxlSXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9mb2N1c2FibGVJdGVtcygpOiBRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMgPyB0aGlzLl9pdGVtcyA6IHRoaXMuX3Byb2plY3RlZEZvY3VzYWJsZUl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2l0ZW1zOiBRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBfZ3JpZEl0ZW1Gb2N1c2VkJCA9IG5ldyBTdWJqZWN0PEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHJlYWRvbmx5IF9ncmlkTGlzdEZvY3VzZWQkID0gbmV3IFN1YmplY3Q8Rm9jdXNhYmxlTGlzdFBvc2l0aW9uPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgX2tleWRvd24kID0gbmV3IFN1YmplY3Q8Rm9jdXNhYmxlTGlzdEtleWRvd25FdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ3JpZFBvc2l0aW9uOiB7IHJvd0luZGV4OiBudW1iZXI7IHRvdGFsUm93czogbnVtYmVyIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2tleU1hbmFnZXI/OiBGb2N1c0tleU1hbmFnZXI8Rm9jdXNhYmxlSXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmJhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hJdGVtcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyID0gaW5qZWN0KExpdmVBbm5vdW5jZXIpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlT2JzZXJ2ZXIgPSBpbmplY3QoRm9jdXNhYmxlT2JzZXJ2ZXIpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIGdldCBfdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmJhYmxlID8gMCA6IC0xO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzVmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2YWJsZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHsgdGhyZXNob2xkOiAwLjI1IH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaXNWaXNpYmxlKSA9PiAodGhpcy5faXNWaXNpYmxlID0gaXNWaXNpYmxlWzBdPy5pc0ludGVyc2VjdGluZykpO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZU9ic2VydmVyXG4gICAgICAgICAgICAub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLCBmYWxzZSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpc0ZvY3VzYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNGb2N1c2FibGUgJiYgaXNGb2N1c2FibGUgIT09IHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlID0gaXNGb2N1c2FibGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fa2V5TWFuYWdlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3dyYXAnXSkge1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aFdyYXAoY2hhbmdlc1snd3JhcCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlc1snbmF2aWdhdGlvbkRpcmVjdGlvbiddKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVOYXZpZ2F0aW9uRGlyZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25JdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgaXRlbXMgcHJvZ3JhbW1hdGljYWxseS4gKi9cbiAgICBzZXRJdGVtcyhpdGVtczogUXVlcnlMaXN0PEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2gkID0gbWVyZ2UodGhpcy5fcmVmcmVzaCQsIHRoaXMuX2Rlc3Ryb3kkKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuICAgICAgICB0aGlzLl9mb2N1c2FibGVJdGVtcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLnRvQXJyYXkoKSksXG4gICAgICAgICAgICAgICAgdGFwKChpdGVtczogRm9jdXNhYmxlSXRlbURpcmVjdGl2ZVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzYWJsZUl0ZW1zOiBGb2N1c2FibGVJdGVtW10gPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6ICgpID0+IGl0ZW0uZmRrRm9jdXNhYmxlSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRSZWY6IGl0ZW0uZWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOiAoKSA9PiBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5ZG93bjogaXRlbS5fa2V5ZG93biRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbiA9PT0gJ2dyaWQnID8gJ2hvcml6b250YWwnIDogdGhpcy5uYXZpZ2F0aW9uRGlyZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVGb2N1c01hbmFnZXIoZm9jdXNhYmxlSXRlbXMsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnREaXJlY3Rpb246IHRoaXMuY29udGVudERpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyYXA6IHRoaXMud3JhcFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwocmVmcmVzaCQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlcj8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX29uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBBbHJlYWR5IGhhbmRsZWRcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRm9jdXNlZCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2hvdWxkRm9jdXNDaGlsZCA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIE1BQ19FTlRFUiwgRjJdKSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgaXNGb2N1c2VkO1xuICAgICAgICBjb25zdCBzaG91bGRGb2N1c0xpc3QgPVxuICAgICAgICAgICAgKChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRjIpICYmIGV2ZW50LnNoaWZ0S2V5KSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkgJiYgIWlzRm9jdXNlZDtcblxuICAgICAgICBpZiAoc2hvdWxkRm9jdXNDaGlsZCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSgwKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHNob3VsZEZvY3VzTGlzdCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fa2V5ZG93biQubmV4dCh7IGxpc3Q6IHRoaXMsIGV2ZW50LCBhY3RpdmVJdGVtSW5kZXg6IHRoaXMuX2tleU1hbmFnZXI/LmFjdGl2ZUl0ZW1JbmRleCA/PyBudWxsIH0pO1xuICAgIH1cblxuICAgIC8qKiBTZXQgYWN0aXZlIGl0ZW0gaW4gbGlzdCAqL1xuICAgIHNldEFjdGl2ZUl0ZW0oaW5kZXg6IG51bWJlciwgc2Nyb2xsUG9zaXRpb24/OiBTY3JvbGxQb3NpdGlvbik6IHZvaWQge1xuICAgICAgICBsZXQgYXZhaWxhYmxlSW5kZXg7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuZmluZCgoaXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbUluZGV4ID49IGluZGV4ICYmIGl0ZW0uZmRrRm9jdXNhYmxlSXRlbSkge1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZUluZGV4ID0gaXRlbUluZGV4O1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhdmFpbGFibGVJbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLl9mb2N1c2FibGVJdGVtcy5nZXQoYXZhaWxhYmxlSW5kZXgpPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oYXZhaWxhYmxlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIHdob2xlIGxpc3QgKi9cbiAgICBmb2N1cyhzY3JvbGxQb3NpdGlvbj86IFNjcm9sbFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBzY3JvbGxQb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTZXQgdGFiYmFibGUgc3RhdGUgKi9cbiAgICBzZXRUYWJiYWJsZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJiYWJsZSA9IHN0YXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIGFzeW5jIF9vbkZvY3VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fZ3JpZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9ncmlkTGlzdEZvY3VzZWQkLm5leHQodGhpcy5fZ3JpZFBvc2l0aW9uKTtcblxuICAgICAgICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5jbGVhcigpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0aGlzLmxpc3RGb2N1c2VkRXZlbnRBbm5vdW5jZXIodGhpcy5fZ3JpZFBvc2l0aW9uKSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0VGFiYmFibGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91cGRhdGVOYXZpZ2F0aW9uRGlyZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2tleU1hbmFnZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5jb250ZW50RGlyZWN0aW9uIHx8ICdsdHInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEl0ZW1zVGFiYmFibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRUYWJiYWJsZShzdGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEdyaWRQb3NpdGlvbihwb3NpdGlvbjogRm9jdXNhYmxlTGlzdFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyaWRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLl9mb2N1c2FibGVJdGVtcyksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtcykgPT5cbiAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbS5fcG9zaXRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fZ3JpZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbHM6IHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZvY3VzTWFuYWdlcihcbiAgICAgICAgaXRlbXM6IEZvY3VzYWJsZUl0ZW1bXSxcbiAgICAgICAgbGlzdDogRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgY29uZmlnOiBGb2N1c2FibGVMaXN0Q29uZmlnID0ge31cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEl0ZW1zJC5uZXh0KCk7XG5cbiAgICAgICAgbGV0IGtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPGFueT4oaXRlbXMpLndpdGhIb21lQW5kRW5kKCk7XG5cbiAgICAgICAgaWYgKGNvbmZpZy53cmFwICE9PSBmYWxzZSkge1xuICAgICAgICAgICAga2V5TWFuYWdlciA9IGtleU1hbmFnZXIud2l0aFdyYXAoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIGtleU1hbmFnZXIgPSBrZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24oY29uZmlnLmNvbnRlbnREaXJlY3Rpb24gfHwgJ2x0cicpOyAvLyBzaG91bGQgYmUgcmVwbGFjZWRcblxuICAgICAgICAgICAgLy8gVmVydGljYWwgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyBsZXQncyBkaXNhYmxlIGl0IGhlcmUgaW4gY29uc2lzdGVuY3kgcHVycG9zZXNcbiAgICAgICAgICAgIGtleU1hbmFnZXIgPSBrZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleU1hbmFnZXIuc2tpcFByZWRpY2F0ZSgoaXRlbSkgPT4gISh0eXBlb2YgaXRlbS5mb2N1c2FibGUgPT09ICdib29sZWFuJyA/IGl0ZW0uZm9jdXNhYmxlIDogaXRlbS5mb2N1c2FibGUoKSkpO1xuXG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSBrZXlNYW5hZ2VyO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzTGlzdGVuZXJEZXN0cm95ZXJzID0gaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbihnZXROYXRpdmVFbGVtZW50KGl0ZW0pLCAnZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0aXZlSXRlbSA9IHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmdldChpbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXJlY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JpZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyaWRJdGVtRm9jdXNlZCQubmV4dChkaXJlY3RpdmVJdGVtLl9wb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtRm9jdXNlZC5uZXh0KHsgaW5kZXg6IGl0ZW0uaW5kZXgsIHRvdGFsOiBpdGVtcy5sZW5ndGggfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuZm9yRWFjaCgoaSkgPT4gaS5zZXRUYWJiYWJsZShpID09PSBkaXJlY3RpdmVJdGVtKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlcj8uc2V0QWN0aXZlSXRlbShpdGVtLmluZGV4KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgbWVyZ2UoLi4uaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmtleWRvd24pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHJlYWR5IGhhbmRsZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKHRoaXMuX3JlZnJlc2hJdGVtcyQsIHRoaXMuX2Rlc3Ryb3kkKSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gZm9jdXNMaXN0ZW5lckRlc3Ryb3llcnMuZm9yRWFjaCgoZCkgPT4gZCgpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmF1bHRMaXN0Rm9jdXNlZEV2ZW50QW5ub3VuY2VyKHBvc2l0aW9uOiBGb2N1c2FibGVMaXN0UG9zaXRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYFJvdzogJHtwb3NpdGlvbi5yb3dJbmRleCArIDF9IG9mICR7cG9zaXRpb24udG90YWxSb3dzfSwgdXNlIEYyIGJ1dHRvbiB0byBkaXZlIGluIGFuZCBmb2N1cyBsaXN0J3MgaXRlbWA7XG4gICAgfVxufVxuIl19
@@ -3,15 +3,15 @@ import { FocusableListDirective, DeprecatedFocusableListDirective } from './focu
3
3
  import { FocusableItemModule } from '../focusable-item';
4
4
  import * as i0 from "@angular/core";
5
5
  export class FocusableListModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FocusableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: FocusableListModule, imports: [FocusableItemModule, FocusableListDirective, DeprecatedFocusableListDirective], exports: [FocusableListDirective, FocusableItemModule, DeprecatedFocusableListDirective] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FocusableListModule, imports: [FocusableItemModule, FocusableItemModule] }); }
6
9
  }
7
- FocusableListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FocusableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- FocusableListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: FocusableListModule, imports: [FocusableItemModule, FocusableListDirective, DeprecatedFocusableListDirective], exports: [FocusableListDirective, FocusableItemModule, DeprecatedFocusableListDirective] });
9
- FocusableListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FocusableListModule, imports: [FocusableItemModule, FocusableItemModule] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FocusableListModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: FocusableListModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [FocusableItemModule, FocusableListDirective, DeprecatedFocusableListDirective],
14
14
  exports: [FocusableListDirective, FocusableItemModule, DeprecatedFocusableListDirective]
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1saXN0L2ZvY3VzYWJsZS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU14RCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsWUFIbEIsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsZ0NBQWdDLGFBQzdFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLGdDQUFnQztpSEFFOUUsbUJBQW1CLFlBSGxCLG1CQUFtQixFQUNLLG1CQUFtQjsyRkFFNUMsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLGdDQUFnQyxDQUFDO29CQUN4RixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxnQ0FBZ0MsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSwgRGVwcmVjYXRlZEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtTW9kdWxlIH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtGb2N1c2FibGVJdGVtTW9kdWxlLCBGb2N1c2FibGVMaXN0RGlyZWN0aXZlLCBEZXByZWNhdGVkRm9jdXNhYmxlTGlzdERpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0ZvY3VzYWJsZUxpc3REaXJlY3RpdmUsIEZvY3VzYWJsZUl0ZW1Nb2R1bGUsIERlcHJlY2F0ZWRGb2N1c2FibGVMaXN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVMaXN0TW9kdWxlIHt9XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1saXN0L2ZvY3VzYWJsZS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU14RCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQUhsQixtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxnQ0FBZ0MsYUFDN0Usc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsZ0NBQWdDOytHQUU5RSxtQkFBbUIsWUFIbEIsbUJBQW1CLEVBQ0ssbUJBQW1COzsyRkFFNUMsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLGdDQUFnQyxDQUFDO29CQUN4RixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxnQ0FBZ0MsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSwgRGVwcmVjYXRlZEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtTW9kdWxlIH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtGb2N1c2FibGVJdGVtTW9kdWxlLCBGb2N1c2FibGVMaXN0RGlyZWN0aXZlLCBEZXByZWNhdGVkRm9jdXNhYmxlTGlzdERpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0ZvY3VzYWJsZUxpc3REaXJlY3RpdmUsIEZvY3VzYWJsZUl0ZW1Nb2R1bGUsIERlcHJlY2F0ZWRGb2N1c2FibGVMaXN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVMaXN0TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { Directive, ElementRef, HostListener, Inject } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { IgnoreClickOnSelectionDirectiveToken } from './tokens';
4
+ import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
5
+ import * as i0 from "@angular/core";
6
+ export class DeprecatedIgnoreClickOnSelectionDirective extends DeprecatedSelector {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DeprecatedIgnoreClickOnSelectionDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: DeprecatedIgnoreClickOnSelectionDirective, isStandalone: true, selector: "[fdIgnoreClickOnSelection]", providers: [
9
+ {
10
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
11
+ useValue: getDeprecatedModel('[fdkIgnoreClickOnSelection]', '[fdIgnoreClickOnSelection]')
12
+ }
13
+ ], usesInheritance: true, ngImport: i0 }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DeprecatedIgnoreClickOnSelectionDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ // eslint-disable-next-line @angular-eslint/directive-selector
19
+ selector: '[fdIgnoreClickOnSelection]',
20
+ standalone: true,
21
+ providers: [
22
+ {
23
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
24
+ useValue: getDeprecatedModel('[fdkIgnoreClickOnSelection]', '[fdIgnoreClickOnSelection]')
25
+ }
26
+ ]
27
+ }]
28
+ }] });
29
+ /**
30
+ * Directive will stop propagation and prevent default of click, if selected area is coming from
31
+ * directive's host element. This gives ability to not cancel all clicks on element, just the ones
32
+ * which include selection
33
+ */
34
+ export class IgnoreClickOnSelectionDirective {
35
+ /** @hidden */
36
+ constructor(document, _elementRef) {
37
+ this.document = document;
38
+ this._elementRef = _elementRef;
39
+ }
40
+ /** Host click listener. Checks for selection existence and if finds one, checks anchor */
41
+ clicked($event) {
42
+ const selection = this.document.getSelection();
43
+ if (selection?.toString()) {
44
+ if (selection.anchorNode &&
45
+ (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||
46
+ this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))) {
47
+ $event.stopPropagation();
48
+ $event.preventDefault();
49
+ }
50
+ }
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: IgnoreClickOnSelectionDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
53
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: IgnoreClickOnSelectionDirective, isStandalone: true, selector: "[fdkIgnoreClickOnSelection], [fdIgnoreClickOnSelection]", host: { listeners: { "click": "clicked($event)" } }, providers: [
54
+ {
55
+ provide: IgnoreClickOnSelectionDirectiveToken,
56
+ useExisting: IgnoreClickOnSelectionDirective
57
+ }
58
+ ], ngImport: i0 }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: IgnoreClickOnSelectionDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: '[fdkIgnoreClickOnSelection], [fdIgnoreClickOnSelection]',
64
+ standalone: true,
65
+ providers: [
66
+ {
67
+ provide: IgnoreClickOnSelectionDirectiveToken,
68
+ useExisting: IgnoreClickOnSelectionDirective
69
+ }
70
+ ]
71
+ }]
72
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
73
+ type: Inject,
74
+ args: [DOCUMENT]
75
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { clicked: [{
76
+ type: HostListener,
77
+ args: ['click', ['$event']]
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7O0FBYXpDLE1BQU0sT0FBTyx5Q0FBMEMsU0FBUSxrQkFBa0I7OEdBQXBFLHlDQUF5QztrR0FBekMseUNBQXlDLHlFQVB2QztZQUNQO2dCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7Z0JBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSw0QkFBNEIsQ0FBQzthQUM1RjtTQUNKOzsyRkFFUSx5Q0FBeUM7a0JBWHJELFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSw0QkFBNEIsQ0FBQzt5QkFDNUY7cUJBQ0o7aUJBQ0o7O0FBR0Q7Ozs7R0FJRztBQVdILE1BQU0sT0FBTywrQkFBK0I7SUFDeEMsY0FBYztJQUNkLFlBQXNDLFFBQWtCLEVBQVUsV0FBb0M7UUFBaEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtJQUFHLENBQUM7SUFFMUcsMEZBQTBGO0lBRTFGLE9BQU8sQ0FBQyxNQUFrQjtRQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9DLElBQUksU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3ZCLElBQ0ksU0FBUyxDQUFDLFVBQVU7Z0JBQ3BCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQ3BGO2dCQUNFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzNCO1NBQ0o7SUFDTCxDQUFDOzhHQWxCUSwrQkFBK0Isa0JBRXBCLFFBQVE7a0dBRm5CLCtCQUErQiwySkFQN0I7WUFDUDtnQkFDSSxPQUFPLEVBQUUsb0NBQW9DO2dCQUM3QyxXQUFXLEVBQUUsK0JBQStCO2FBQy9DO1NBQ0o7OzJGQUVRLCtCQUErQjtrQkFWM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseURBQXlEO29CQUNuRSxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxvQ0FBb0M7NEJBQzdDLFdBQVcsaUNBQWlDO3lCQUMvQztxQkFDSjtpQkFDSjs7MEJBR2dCLE1BQU07MkJBQUMsUUFBUTtxRUFJNUIsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVUb2tlbiB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7XG4gICAgRGVwcmVjYXRlZFNlbGVjdG9yLFxuICAgIEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgIGdldERlcHJlY2F0ZWRNb2RlbFxufSBmcm9tICcuLi8uLi9kZXByZWNhdGVkLXNlbGVjdG9yLmNsYXNzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZElnbm9yZUNsaWNrT25TZWxlY3Rpb25dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtJZ25vcmVDbGlja09uU2VsZWN0aW9uXScsICdbZmRJZ25vcmVDbGlja09uU2VsZWN0aW9uXScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHt9XG5cbi8qKlxuICogRGlyZWN0aXZlIHdpbGwgc3RvcCBwcm9wYWdhdGlvbiBhbmQgcHJldmVudCBkZWZhdWx0IG9mIGNsaWNrLCBpZiBzZWxlY3RlZCBhcmVhIGlzIGNvbWluZyBmcm9tXG4gKiBkaXJlY3RpdmUncyBob3N0IGVsZW1lbnQuIFRoaXMgZ2l2ZXMgYWJpbGl0eSB0byBub3QgY2FuY2VsIGFsbCBjbGlja3Mgb24gZWxlbWVudCwganVzdCB0aGUgb25lc1xuICogd2hpY2ggaW5jbHVkZSBzZWxlY3Rpb25cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrSWdub3JlQ2xpY2tPblNlbGVjdGlvbl0sIFtmZElnbm9yZUNsaWNrT25TZWxlY3Rpb25dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlVG9rZW4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIC8qKiBIb3N0IGNsaWNrIGxpc3RlbmVyLiBDaGVja3MgZm9yIHNlbGVjdGlvbiBleGlzdGVuY2UgYW5kIGlmIGZpbmRzIG9uZSwgY2hlY2tzIGFuY2hvciAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBjbGlja2VkKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoc2VsZWN0aW9uPy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmFuY2hvck5vZGUgJiZcbiAgICAgICAgICAgICAgICAodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoc2VsZWN0aW9uLmFuY2hvck5vZGUpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKHNlbGVjdGlvbi5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -2,15 +2,15 @@ import { NgModule } from '@angular/core';
2
2
  import { IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  export class IgnoreClickOnSelectionModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: IgnoreClickOnSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: IgnoreClickOnSelectionModule, imports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective], exports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: IgnoreClickOnSelectionModule }); }
5
8
  }
6
- IgnoreClickOnSelectionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IgnoreClickOnSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- IgnoreClickOnSelectionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: IgnoreClickOnSelectionModule, imports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective], exports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective] });
8
- IgnoreClickOnSelectionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IgnoreClickOnSelectionModule });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IgnoreClickOnSelectionModule, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: IgnoreClickOnSelectionModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  imports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective],
13
13
  exports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective]
14
14
  }]
15
15
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDSCwrQkFBK0IsRUFDL0IseUNBQXlDLEVBQzVDLE1BQU0sdUNBQXVDLENBQUM7O0FBTS9DLE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7MEhBQTVCLDRCQUE0QixZQUgzQiwrQkFBK0IsRUFBRSx5Q0FBeUMsYUFDMUUsK0JBQStCLEVBQUUseUNBQXlDOzBIQUUzRSw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFKeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSx5Q0FBeUMsQ0FBQztvQkFDckYsT0FBTyxFQUFFLENBQUMsK0JBQStCLEVBQUUseUNBQXlDLENBQUM7aUJBQ3hGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSxcbiAgICBEZXByZWNhdGVkSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24uZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSwgRGVwcmVjYXRlZElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlLCBEZXByZWNhdGVkSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWdub3JlQ2xpY2tPblNlbGVjdGlvbk1vZHVsZSB7fVxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDSCwrQkFBK0IsRUFDL0IseUNBQXlDLEVBQzVDLE1BQU0sdUNBQXVDLENBQUM7O0FBTS9DLE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjsrR0FBNUIsNEJBQTRCLFlBSDNCLCtCQUErQixFQUFFLHlDQUF5QyxhQUMxRSwrQkFBK0IsRUFBRSx5Q0FBeUM7K0dBRTNFLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFKeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSx5Q0FBeUMsQ0FBQztvQkFDckYsT0FBTyxFQUFFLENBQUMsK0JBQStCLEVBQUUseUNBQXlDLENBQUM7aUJBQ3hGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSxcbiAgICBEZXByZWNhdGVkSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24uZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSwgRGVwcmVjYXRlZElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlLCBEZXByZWNhdGVkSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWdub3JlQ2xpY2tPblNlbGVjdGlvbk1vZHVsZSB7fVxuIl19