@fundamental-ngx/cdk 0.38.3-rc.4

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 (399) hide show
  1. package/README.md +89 -0
  2. package/data-source/README.md +7 -0
  3. package/data-source/base/abstract-data-provider.class.d.ts +43 -0
  4. package/data-source/base/base-data-source.class.d.ts +57 -0
  5. package/data-source/data-source.directive.d.ts +47 -0
  6. package/data-source/data-source.module.d.ts +7 -0
  7. package/data-source/helpers/apply-datasource-directive.d.ts +6 -0
  8. package/data-source/helpers/common.d.ts +7 -0
  9. package/data-source/helpers/is-datasource.d.ts +5 -0
  10. package/data-source/index.d.ts +8 -0
  11. package/data-source/models/data-source-provider.d.ts +23 -0
  12. package/data-source/models/data-source.d.ts +16 -0
  13. package/data-source/models/index.d.ts +3 -0
  14. package/data-source/models/matching-strategy.d.ts +10 -0
  15. package/data-source/tokens.d.ts +6 -0
  16. package/esm2020/data-source/base/abstract-data-provider.class.mjs +126 -0
  17. package/esm2020/data-source/base/base-data-source.class.mjs +99 -0
  18. package/esm2020/data-source/data-source.directive.mjs +96 -0
  19. package/esm2020/data-source/data-source.module.mjs +16 -0
  20. package/esm2020/data-source/fundamental-ngx-cdk-data-source.mjs +5 -0
  21. package/esm2020/data-source/helpers/apply-datasource-directive.mjs +7 -0
  22. package/esm2020/data-source/helpers/common.mjs +17 -0
  23. package/esm2020/data-source/helpers/is-datasource.mjs +7 -0
  24. package/esm2020/data-source/index.mjs +9 -0
  25. package/esm2020/data-source/models/data-source-provider.mjs +2 -0
  26. package/esm2020/data-source/models/data-source.mjs +2 -0
  27. package/esm2020/data-source/models/index.mjs +4 -0
  28. package/esm2020/data-source/models/matching-strategy.mjs +7 -0
  29. package/esm2020/data-source/tokens.mjs +6 -0
  30. package/esm2020/forms/cva/cva-control.class.mjs +43 -0
  31. package/esm2020/forms/cva/cva.directive.mjs +309 -0
  32. package/esm2020/forms/forms.module.mjs +16 -0
  33. package/esm2020/forms/fundamental-ngx-cdk-forms.mjs +5 -0
  34. package/esm2020/forms/helpers/state.mjs +6 -0
  35. package/esm2020/forms/index.mjs +13 -0
  36. package/esm2020/forms/models/cva.mjs +2 -0
  37. package/esm2020/forms/models/form-error.mjs +2 -0
  38. package/esm2020/forms/models/form-field-control.mjs +2 -0
  39. package/esm2020/forms/models/form-field.mjs +9 -0
  40. package/esm2020/forms/models/form-state.mjs +2 -0
  41. package/esm2020/forms/models/select-item.mjs +14 -0
  42. package/esm2020/forms/tokens/form-field-control.token.mjs +3 -0
  43. package/esm2020/forms/tokens/form-field.token.mjs +3 -0
  44. package/esm2020/fundamental-ngx-cdk.mjs +5 -0
  45. package/esm2020/fundamental-ngx.module.mjs +19 -0
  46. package/esm2020/public_api.mjs +5 -0
  47. package/esm2020/utils/abstract-fd-ngx-class.mjs +56 -0
  48. package/esm2020/utils/coercion/array.mjs +7 -0
  49. package/esm2020/utils/consts/error-messages.mjs +6 -0
  50. package/esm2020/utils/consts/index.mjs +5 -0
  51. package/esm2020/utils/consts/overflow-priority-score.mjs +8 -0
  52. package/esm2020/utils/consts/unicode-letters.regex.mjs +11 -0
  53. package/esm2020/utils/consts/unicode-numbers.regex.mjs +8 -0
  54. package/esm2020/utils/datatypes/color-accent.datatype.mjs +2 -0
  55. package/esm2020/utils/datatypes/hash.datatype.mjs +2 -0
  56. package/esm2020/utils/datatypes/index.mjs +4 -0
  57. package/esm2020/utils/datatypes/size.datatype.mjs +2 -0
  58. package/esm2020/utils/decorators/apply-css-class.decorator.mjs +60 -0
  59. package/esm2020/utils/decorators/apply-css-style.decorator.mjs +28 -0
  60. package/esm2020/utils/decorators/coerce-boolean.mjs +7 -0
  61. package/esm2020/utils/decorators/coerce-css-pixel.mjs +4 -0
  62. package/esm2020/utils/decorators/index.mjs +6 -0
  63. package/esm2020/utils/decorators/setter-alternator.mjs +18 -0
  64. package/esm2020/utils/deprecated-selector.class.mjs +20 -0
  65. package/esm2020/utils/directives/auto-complete/auto-complete.directive.mjs +136 -0
  66. package/esm2020/utils/directives/auto-complete/auto-complete.module.mjs +17 -0
  67. package/esm2020/utils/directives/clicked/clicked-behavior.module.mjs +45 -0
  68. package/esm2020/utils/directives/clicked/clicked-event.plugin.mjs +74 -0
  69. package/esm2020/utils/directives/clicked/clicked.directive.mjs +52 -0
  70. package/esm2020/utils/directives/clicked/fdk-clicked-provider.service.mjs +49 -0
  71. package/esm2020/utils/directives/clicked/index.mjs +4 -0
  72. package/esm2020/utils/directives/disabled/default-disabled-view-modifier.mjs +12 -0
  73. package/esm2020/utils/directives/disabled/disabled-behavior.directive.mjs +102 -0
  74. package/esm2020/utils/directives/disabled/disabled-behavior.interface.mjs +2 -0
  75. package/esm2020/utils/directives/disabled/disabled-behavior.module.mjs +16 -0
  76. package/esm2020/utils/directives/disabled/disabled-view-modifier.interface.mjs +2 -0
  77. package/esm2020/utils/directives/disabled/disabled.observer.mjs +35 -0
  78. package/esm2020/utils/directives/disabled/fdk-disabled-provider.service.mjs +101 -0
  79. package/esm2020/utils/directives/disabled/fdk-disabled.token.mjs +3 -0
  80. package/esm2020/utils/directives/disabled/index.mjs +9 -0
  81. package/esm2020/utils/directives/disabled/set-disabled-state.mjs +16 -0
  82. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +33 -0
  83. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +98 -0
  84. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +113 -0
  85. package/esm2020/utils/directives/focus-key-manager/focus-key-manager.tokens.mjs +3 -0
  86. package/esm2020/utils/directives/focus-key-manager/index.mjs +5 -0
  87. package/esm2020/utils/directives/focusable-item/default-focusable-item-view-modifier.mjs +14 -0
  88. package/esm2020/utils/directives/focusable-item/fdk-focusable-item-provider.service.mjs +97 -0
  89. package/esm2020/utils/directives/focusable-item/focusable-item-view-modifier.interface.mjs +2 -0
  90. package/esm2020/utils/directives/focusable-item/focusable-item.directive.mjs +106 -0
  91. package/esm2020/utils/directives/focusable-item/focusable-item.module.mjs +16 -0
  92. package/esm2020/utils/directives/focusable-item/focusable.observer.mjs +47 -0
  93. package/esm2020/utils/directives/focusable-item/focusable.tokens.mjs +3 -0
  94. package/esm2020/utils/directives/focusable-item/index.mjs +9 -0
  95. package/esm2020/utils/directives/focusable-item/is-element-focusable-by-default.mjs +32 -0
  96. package/esm2020/utils/directives/focusable-item/set-focusable.mjs +12 -0
  97. package/esm2020/utils/directives/focusable-list/focusable-list.directive.mjs +79 -0
  98. package/esm2020/utils/directives/focusable-list/focusable-list.module.mjs +17 -0
  99. package/esm2020/utils/directives/focusable-list/focusable-list.service.mjs +54 -0
  100. package/esm2020/utils/directives/focusable-list/index.mjs +4 -0
  101. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +79 -0
  102. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +16 -0
  103. package/esm2020/utils/directives/ignore-click-on-selection/tokens.mjs +3 -0
  104. package/esm2020/utils/directives/index.mjs +31 -0
  105. package/esm2020/utils/directives/initial-focus/initial-focus.directive.mjs +117 -0
  106. package/esm2020/utils/directives/initial-focus/initial-focus.module.mjs +16 -0
  107. package/esm2020/utils/directives/line-clamp/line-clamp.directive.mjs +263 -0
  108. package/esm2020/utils/directives/line-clamp/line-clamp.module.mjs +32 -0
  109. package/esm2020/utils/directives/only-digits/only-digits.directive.mjs +218 -0
  110. package/esm2020/utils/directives/only-digits/only-digits.module.mjs +16 -0
  111. package/esm2020/utils/directives/overflow-list/overflow-list-item.directive.mjs +42 -0
  112. package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +140 -0
  113. package/esm2020/utils/directives/overflow-list/overflow-list.module.mjs +33 -0
  114. package/esm2020/utils/directives/readonly/default-readonly-view-modifier.mjs +12 -0
  115. package/esm2020/utils/directives/readonly/fdk-readonly-provider.service.mjs +102 -0
  116. package/esm2020/utils/directives/readonly/fdk-readonly.token.mjs +3 -0
  117. package/esm2020/utils/directives/readonly/index.mjs +10 -0
  118. package/esm2020/utils/directives/readonly/readonly-behavior.directive.mjs +97 -0
  119. package/esm2020/utils/directives/readonly/readonly-behavior.interface.mjs +2 -0
  120. package/esm2020/utils/directives/readonly/readonly-behavior.module.mjs +16 -0
  121. package/esm2020/utils/directives/readonly/readonly-view-modifier.interface.mjs +2 -0
  122. package/esm2020/utils/directives/readonly/readonly.observer.mjs +33 -0
  123. package/esm2020/utils/directives/readonly/set-readonly-state.mjs +14 -0
  124. package/esm2020/utils/directives/repeat/repeat.directive.mjs +65 -0
  125. package/esm2020/utils/directives/repeat/repeat.module.mjs +16 -0
  126. package/esm2020/utils/directives/resize/resize-handle.directive.mjs +42 -0
  127. package/esm2020/utils/directives/resize/resize.directive.mjs +231 -0
  128. package/esm2020/utils/directives/resize/resize.module.mjs +17 -0
  129. package/esm2020/utils/directives/selectable-list/index.mjs +8 -0
  130. package/esm2020/utils/directives/selectable-list/select-component-root.token.mjs +3 -0
  131. package/esm2020/utils/directives/selectable-list/selectable-item.directive.mjs +147 -0
  132. package/esm2020/utils/directives/selectable-list/selectable-item.token.mjs +3 -0
  133. package/esm2020/utils/directives/selectable-list/selectable-list.directive.mjs +93 -0
  134. package/esm2020/utils/directives/selectable-list/selectable-list.module.mjs +17 -0
  135. package/esm2020/utils/directives/selectable-list/selectable-list.tokens.mjs +3 -0
  136. package/esm2020/utils/directives/selectable-list/selection.service.mjs +135 -0
  137. package/esm2020/utils/directives/template/template.directive.mjs +49 -0
  138. package/esm2020/utils/directives/template/template.module.mjs +16 -0
  139. package/esm2020/utils/directives/truncate/truncate.directive.mjs +96 -0
  140. package/esm2020/utils/directives/truncate/truncate.module.mjs +16 -0
  141. package/esm2020/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +255 -0
  142. package/esm2020/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +88 -0
  143. package/esm2020/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +83 -0
  144. package/esm2020/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +220 -0
  145. package/esm2020/utils/drag-and-drop/dnd.interfaces.mjs +2 -0
  146. package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +22 -0
  147. package/esm2020/utils/drag-and-drop/index.mjs +8 -0
  148. package/esm2020/utils/drag-and-drop/tokens.mjs +4 -0
  149. package/esm2020/utils/dynamic-component/dynamic-component-config.mjs +2 -0
  150. package/esm2020/utils/dynamic-component/dynamic-component-container.mjs +21 -0
  151. package/esm2020/utils/dynamic-component/dynamic-component-injector.mjs +20 -0
  152. package/esm2020/utils/dynamic-component/dynamic-component.service.mjs +90 -0
  153. package/esm2020/utils/dynamic-component/index.mjs +5 -0
  154. package/esm2020/utils/functions/consumer-provider-factory.mjs +12 -0
  155. package/esm2020/utils/functions/element-size.mjs +23 -0
  156. package/esm2020/utils/functions/get-document-font-size.mjs +5 -0
  157. package/esm2020/utils/functions/index.mjs +13 -0
  158. package/esm2020/utils/functions/intersection-observable.mjs +26 -0
  159. package/esm2020/utils/functions/is-compact-density.mjs +11 -0
  160. package/esm2020/utils/functions/key-util.mjs +77 -0
  161. package/esm2020/utils/functions/module-deprecations-provider.mjs +18 -0
  162. package/esm2020/utils/functions/parser-file-size.mjs +37 -0
  163. package/esm2020/utils/functions/random-color-accent.mjs +5 -0
  164. package/esm2020/utils/functions/resize-observable.mjs +33 -0
  165. package/esm2020/utils/functions/scroll.mjs +19 -0
  166. package/esm2020/utils/functions/uuidv4-generator.mjs +12 -0
  167. package/esm2020/utils/fundamental-ngx-cdk-utils.mjs +5 -0
  168. package/esm2020/utils/helpers/get-native-element.mjs +18 -0
  169. package/esm2020/utils/helpers/index.mjs +3 -0
  170. package/esm2020/utils/helpers/range-selector.mjs +117 -0
  171. package/esm2020/utils/index.mjs +19 -0
  172. package/esm2020/utils/interfaces/content-density.mjs +2 -0
  173. package/esm2020/utils/interfaces/css-class-builder.interface.mjs +2 -0
  174. package/esm2020/utils/interfaces/css-style-builder.interface.mjs +2 -0
  175. package/esm2020/utils/interfaces/has-element-ref.interface.mjs +2 -0
  176. package/esm2020/utils/interfaces/index.mjs +8 -0
  177. package/esm2020/utils/interfaces/keyboard-support-item.interface.mjs +2 -0
  178. package/esm2020/utils/interfaces/module-deprecation.interface.mjs +2 -0
  179. package/esm2020/utils/interfaces/require.interface.mjs +2 -0
  180. package/esm2020/utils/list-item/list-item-utils.mjs +3 -0
  181. package/esm2020/utils/models/nullable.mjs +2 -0
  182. package/esm2020/utils/pipes/displayFn.pipe.mjs +17 -0
  183. package/esm2020/utils/pipes/filter-strings.pipe.mjs +30 -0
  184. package/esm2020/utils/pipes/index.mjs +10 -0
  185. package/esm2020/utils/pipes/is-compact.pipe.mjs +16 -0
  186. package/esm2020/utils/pipes/pipe.module.mjs +55 -0
  187. package/esm2020/utils/pipes/safe.pipe.mjs +36 -0
  188. package/esm2020/utils/pipes/search-highlight.pipe.mjs +31 -0
  189. package/esm2020/utils/pipes/truncate.pipe.mjs +17 -0
  190. package/esm2020/utils/pipes/two-digits.pipe.mjs +22 -0
  191. package/esm2020/utils/pipes/value-by-path.pipe.mjs +16 -0
  192. package/esm2020/utils/services/content-density.service.mjs +34 -0
  193. package/esm2020/utils/services/destroyed.service.mjs +20 -0
  194. package/esm2020/utils/services/focus-trap.service.mjs +92 -0
  195. package/esm2020/utils/services/index.mjs +11 -0
  196. package/esm2020/utils/services/keyboard-support/keyboard-support.service.mjs +73 -0
  197. package/esm2020/utils/services/local-storage.service.mjs +38 -0
  198. package/esm2020/utils/services/observers/attribute.observer.mjs +81 -0
  199. package/esm2020/utils/services/resize-observer.service.mjs +94 -0
  200. package/esm2020/utils/services/rtl.service.mjs +29 -0
  201. package/esm2020/utils/services/tabbable-element.service.mjs +43 -0
  202. package/esm2020/utils/services/themes.service.mjs +133 -0
  203. package/esm2020/utils/tokens/module-deprecations.token.mjs +3 -0
  204. package/esm2020/utils/typecheck.mjs +75 -0
  205. package/esm2020/utils/utils.module.mjs +136 -0
  206. package/fesm2015/fundamental-ngx-cdk-data-source.mjs +378 -0
  207. package/fesm2015/fundamental-ngx-cdk-data-source.mjs.map +1 -0
  208. package/fesm2015/fundamental-ngx-cdk-forms.mjs +404 -0
  209. package/fesm2015/fundamental-ngx-cdk-forms.mjs.map +1 -0
  210. package/fesm2015/fundamental-ngx-cdk-utils.mjs +5767 -0
  211. package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +1 -0
  212. package/fesm2015/fundamental-ngx-cdk.mjs +30 -0
  213. package/fesm2015/fundamental-ngx-cdk.mjs.map +1 -0
  214. package/fesm2020/fundamental-ngx-cdk-data-source.mjs +374 -0
  215. package/fesm2020/fundamental-ngx-cdk-data-source.mjs.map +1 -0
  216. package/fesm2020/fundamental-ngx-cdk-forms.mjs +399 -0
  217. package/fesm2020/fundamental-ngx-cdk-forms.mjs.map +1 -0
  218. package/fesm2020/fundamental-ngx-cdk-utils.mjs +5724 -0
  219. package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +1 -0
  220. package/fesm2020/fundamental-ngx-cdk.mjs +30 -0
  221. package/fesm2020/fundamental-ngx-cdk.mjs.map +1 -0
  222. package/forms/README.md +7 -0
  223. package/forms/cva/cva-control.class.d.ts +26 -0
  224. package/forms/cva/cva.directive.d.ts +178 -0
  225. package/forms/forms.module.d.ts +7 -0
  226. package/forms/helpers/state.d.ts +3 -0
  227. package/forms/index.d.ts +12 -0
  228. package/forms/models/cva.d.ts +4 -0
  229. package/forms/models/form-error.d.ts +31 -0
  230. package/forms/models/form-field-control.d.ts +61 -0
  231. package/forms/models/form-field.d.ts +30 -0
  232. package/forms/models/form-state.d.ts +1 -0
  233. package/forms/models/select-item.d.ts +47 -0
  234. package/forms/tokens/form-field-control.token.d.ts +3 -0
  235. package/forms/tokens/form-field.token.d.ts +3 -0
  236. package/fundamental-ngx-cdk-v0.38.3-rc.4.tgz +0 -0
  237. package/fundamental-ngx.module.d.ts +9 -0
  238. package/index.d.ts +5 -0
  239. package/package.json +80 -0
  240. package/public_api.d.ts +4 -0
  241. package/utils/README.md +7 -0
  242. package/utils/abstract-fd-ngx-class.d.ts +27 -0
  243. package/utils/coercion/array.d.ts +2 -0
  244. package/utils/consts/error-messages.d.ts +3 -0
  245. package/utils/consts/index.d.ts +4 -0
  246. package/utils/consts/overflow-priority-score.d.ts +2 -0
  247. package/utils/consts/unicode-letters.regex.d.ts +7 -0
  248. package/utils/consts/unicode-numbers.regex.d.ts +6 -0
  249. package/utils/datatypes/color-accent.datatype.d.ts +1 -0
  250. package/utils/datatypes/hash.datatype.d.ts +3 -0
  251. package/utils/datatypes/index.d.ts +3 -0
  252. package/utils/datatypes/size.datatype.d.ts +1 -0
  253. package/utils/decorators/apply-css-class.decorator.d.ts +10 -0
  254. package/utils/decorators/apply-css-style.decorator.d.ts +10 -0
  255. package/utils/decorators/coerce-boolean.d.ts +4 -0
  256. package/utils/decorators/coerce-css-pixel.d.ts +1 -0
  257. package/utils/decorators/index.d.ts +5 -0
  258. package/utils/decorators/setter-alternator.d.ts +4 -0
  259. package/utils/deprecated-selector.class.d.ts +14 -0
  260. package/utils/directives/auto-complete/auto-complete.directive.d.ts +58 -0
  261. package/utils/directives/auto-complete/auto-complete.module.d.ts +7 -0
  262. package/utils/directives/clicked/clicked-behavior.module.d.ts +12 -0
  263. package/utils/directives/clicked/clicked-event.plugin.d.ts +22 -0
  264. package/utils/directives/clicked/clicked.directive.d.ts +21 -0
  265. package/utils/directives/clicked/fdk-clicked-provider.service.d.ts +24 -0
  266. package/utils/directives/clicked/index.d.ts +3 -0
  267. package/utils/directives/disabled/default-disabled-view-modifier.d.ts +9 -0
  268. package/utils/directives/disabled/disabled-behavior.directive.d.ts +35 -0
  269. package/utils/directives/disabled/disabled-behavior.interface.d.ts +7 -0
  270. package/utils/directives/disabled/disabled-behavior.module.d.ts +7 -0
  271. package/utils/directives/disabled/disabled-view-modifier.interface.d.ts +3 -0
  272. package/utils/directives/disabled/disabled.observer.d.ts +18 -0
  273. package/utils/directives/disabled/fdk-disabled-provider.service.d.ts +35 -0
  274. package/utils/directives/disabled/fdk-disabled.token.d.ts +3 -0
  275. package/utils/directives/disabled/index.d.ts +8 -0
  276. package/utils/directives/disabled/set-disabled-state.d.ts +4 -0
  277. package/utils/directives/focus-key-manager/focus-key-manager-helpers.module.d.ts +8 -0
  278. package/utils/directives/focus-key-manager/focus-key-manager-item.directive.d.ts +37 -0
  279. package/utils/directives/focus-key-manager/focus-key-manager-list.directive.d.ts +42 -0
  280. package/utils/directives/focus-key-manager/focus-key-manager.tokens.d.ts +3 -0
  281. package/utils/directives/focus-key-manager/index.d.ts +4 -0
  282. package/utils/directives/focusable-item/default-focusable-item-view-modifier.d.ts +11 -0
  283. package/utils/directives/focusable-item/fdk-focusable-item-provider.service.d.ts +43 -0
  284. package/utils/directives/focusable-item/focusable-item-view-modifier.interface.d.ts +3 -0
  285. package/utils/directives/focusable-item/focusable-item.directive.d.ts +37 -0
  286. package/utils/directives/focusable-item/focusable-item.module.d.ts +7 -0
  287. package/utils/directives/focusable-item/focusable.observer.d.ts +18 -0
  288. package/utils/directives/focusable-item/focusable.tokens.d.ts +2 -0
  289. package/utils/directives/focusable-item/index.d.ts +8 -0
  290. package/utils/directives/focusable-item/is-element-focusable-by-default.d.ts +4 -0
  291. package/utils/directives/focusable-item/set-focusable.d.ts +4 -0
  292. package/utils/directives/focusable-list/focusable-list.directive.d.ts +25 -0
  293. package/utils/directives/focusable-list/focusable-list.module.d.ts +8 -0
  294. package/utils/directives/focusable-list/focusable-list.service.d.ts +35 -0
  295. package/utils/directives/focusable-list/index.d.ts +3 -0
  296. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +22 -0
  297. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.d.ts +7 -0
  298. package/utils/directives/ignore-click-on-selection/tokens.d.ts +2 -0
  299. package/utils/directives/index.d.ts +30 -0
  300. package/utils/directives/initial-focus/initial-focus.directive.d.ts +43 -0
  301. package/utils/directives/initial-focus/initial-focus.module.d.ts +7 -0
  302. package/utils/directives/line-clamp/line-clamp.directive.d.ts +101 -0
  303. package/utils/directives/line-clamp/line-clamp.module.d.ts +7 -0
  304. package/utils/directives/only-digits/only-digits.directive.d.ts +44 -0
  305. package/utils/directives/only-digits/only-digits.module.d.ts +7 -0
  306. package/utils/directives/overflow-list/overflow-list-item.directive.d.ts +14 -0
  307. package/utils/directives/overflow-list/overflow-list.directive.d.ts +62 -0
  308. package/utils/directives/overflow-list/overflow-list.module.d.ts +8 -0
  309. package/utils/directives/readonly/default-readonly-view-modifier.d.ts +9 -0
  310. package/utils/directives/readonly/fdk-readonly-provider.service.d.ts +35 -0
  311. package/utils/directives/readonly/fdk-readonly.token.d.ts +2 -0
  312. package/utils/directives/readonly/index.d.ts +9 -0
  313. package/utils/directives/readonly/readonly-behavior.directive.d.ts +32 -0
  314. package/utils/directives/readonly/readonly-behavior.interface.d.ts +7 -0
  315. package/utils/directives/readonly/readonly-behavior.module.d.ts +7 -0
  316. package/utils/directives/readonly/readonly-view-modifier.interface.d.ts +3 -0
  317. package/utils/directives/readonly/readonly.observer.d.ts +18 -0
  318. package/utils/directives/readonly/set-readonly-state.d.ts +4 -0
  319. package/utils/directives/repeat/repeat.directive.d.ts +28 -0
  320. package/utils/directives/repeat/repeat.module.d.ts +7 -0
  321. package/utils/directives/resize/resize-handle.directive.d.ts +14 -0
  322. package/utils/directives/resize/resize.directive.d.ts +57 -0
  323. package/utils/directives/resize/resize.module.d.ts +8 -0
  324. package/utils/directives/selectable-list/index.d.ts +7 -0
  325. package/utils/directives/selectable-list/select-component-root.token.d.ts +10 -0
  326. package/utils/directives/selectable-list/selectable-item.directive.d.ts +47 -0
  327. package/utils/directives/selectable-list/selectable-item.token.d.ts +11 -0
  328. package/utils/directives/selectable-list/selectable-list.directive.d.ts +33 -0
  329. package/utils/directives/selectable-list/selectable-list.module.d.ts +8 -0
  330. package/utils/directives/selectable-list/selectable-list.tokens.d.ts +2 -0
  331. package/utils/directives/selectable-list/selection.service.d.ts +65 -0
  332. package/utils/directives/template/template.directive.d.ts +18 -0
  333. package/utils/directives/template/template.module.d.ts +7 -0
  334. package/utils/directives/truncate/truncate.directive.d.ts +51 -0
  335. package/utils/directives/truncate/truncate.module.d.ts +7 -0
  336. package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +86 -0
  337. package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +32 -0
  338. package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +61 -0
  339. package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +65 -0
  340. package/utils/drag-and-drop/dnd.interfaces.d.ts +33 -0
  341. package/utils/drag-and-drop/drag-and-drop.module.d.ts +12 -0
  342. package/utils/drag-and-drop/index.d.ts +7 -0
  343. package/utils/drag-and-drop/tokens.d.ts +3 -0
  344. package/utils/dynamic-component/dynamic-component-config.d.ts +6 -0
  345. package/utils/dynamic-component/dynamic-component-container.d.ts +19 -0
  346. package/utils/dynamic-component/dynamic-component-injector.d.ts +13 -0
  347. package/utils/dynamic-component/dynamic-component.service.d.ts +46 -0
  348. package/utils/dynamic-component/index.d.ts +4 -0
  349. package/utils/functions/consumer-provider-factory.d.ts +5 -0
  350. package/utils/functions/element-size.d.ts +12 -0
  351. package/utils/functions/get-document-font-size.d.ts +2 -0
  352. package/utils/functions/index.d.ts +12 -0
  353. package/utils/functions/intersection-observable.d.ts +8 -0
  354. package/utils/functions/is-compact-density.d.ts +7 -0
  355. package/utils/functions/key-util.d.ts +16 -0
  356. package/utils/functions/module-deprecations-provider.d.ts +5 -0
  357. package/utils/functions/parser-file-size.d.ts +2 -0
  358. package/utils/functions/random-color-accent.d.ts +3 -0
  359. package/utils/functions/resize-observable.d.ts +8 -0
  360. package/utils/functions/scroll.d.ts +7 -0
  361. package/utils/functions/uuidv4-generator.d.ts +2 -0
  362. package/utils/helpers/get-native-element.d.ts +13 -0
  363. package/utils/helpers/index.d.ts +2 -0
  364. package/utils/helpers/range-selector.d.ts +84 -0
  365. package/utils/index.d.ts +18 -0
  366. package/utils/interfaces/content-density.d.ts +1 -0
  367. package/utils/interfaces/css-class-builder.interface.d.ts +6 -0
  368. package/utils/interfaces/css-style-builder.interface.d.ts +5 -0
  369. package/utils/interfaces/has-element-ref.interface.d.ts +5 -0
  370. package/utils/interfaces/index.d.ts +7 -0
  371. package/utils/interfaces/keyboard-support-item.interface.d.ts +6 -0
  372. package/utils/interfaces/module-deprecation.interface.d.ts +8 -0
  373. package/utils/interfaces/require.interface.d.ts +6 -0
  374. package/utils/list-item/list-item-utils.d.ts +7 -0
  375. package/utils/models/nullable.d.ts +6 -0
  376. package/utils/pipes/displayFn.pipe.d.ts +8 -0
  377. package/utils/pipes/filter-strings.pipe.d.ts +16 -0
  378. package/utils/pipes/index.d.ts +9 -0
  379. package/utils/pipes/is-compact.pipe.d.ts +9 -0
  380. package/utils/pipes/pipe.module.d.ts +14 -0
  381. package/utils/pipes/safe.pipe.d.ts +12 -0
  382. package/utils/pipes/search-highlight.pipe.d.ts +8 -0
  383. package/utils/pipes/truncate.pipe.d.ts +8 -0
  384. package/utils/pipes/two-digits.pipe.d.ts +8 -0
  385. package/utils/pipes/value-by-path.pipe.d.ts +8 -0
  386. package/utils/services/content-density.service.d.ts +19 -0
  387. package/utils/services/destroyed.service.d.ts +11 -0
  388. package/utils/services/focus-trap.service.d.ts +43 -0
  389. package/utils/services/index.d.ts +10 -0
  390. package/utils/services/keyboard-support/keyboard-support.service.d.ts +34 -0
  391. package/utils/services/local-storage.service.d.ts +13 -0
  392. package/utils/services/observers/attribute.observer.d.ts +26 -0
  393. package/utils/services/resize-observer.service.d.ts +34 -0
  394. package/utils/services/rtl.service.d.ts +12 -0
  395. package/utils/services/tabbable-element.service.d.ts +12 -0
  396. package/utils/services/themes.service.d.ts +43 -0
  397. package/utils/tokens/module-deprecations.token.d.ts +3 -0
  398. package/utils/typecheck.d.ts +47 -0
  399. package/utils/utils.module.d.ts +23 -0
@@ -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
+ }
8
+ DeprecatedIgnoreClickOnSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedIgnoreClickOnSelectionDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
9
+ DeprecatedIgnoreClickOnSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedIgnoreClickOnSelectionDirective, isStandalone: true, selector: "[fdIgnoreClickOnSelection]", providers: [
10
+ {
11
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
12
+ useValue: getDeprecatedModel('[fdkIgnoreClickOnSelection]', '[fdIgnoreClickOnSelection]')
13
+ }
14
+ ], usesInheritance: true, ngImport: i0 });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", 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
+ }
53
+ IgnoreClickOnSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: IgnoreClickOnSelectionDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
54
+ IgnoreClickOnSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: IgnoreClickOnSelectionDirective, isStandalone: true, selector: "[fdkIgnoreClickOnSelection], [fdIgnoreClickOnSelection]", host: { listeners: { "click": "clicked($event)" } }, providers: [
55
+ {
56
+ provide: IgnoreClickOnSelectionDirectiveToken,
57
+ useExisting: IgnoreClickOnSelectionDirective
58
+ }
59
+ ], ngImport: i0 });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7O0FBYXpDLE1BQU0sT0FBTyx5Q0FBMEMsU0FBUSxrQkFBa0I7O3NJQUFwRSx5Q0FBeUM7MEhBQXpDLHlDQUF5Qyx5RUFQdkM7UUFDUDtZQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLDZCQUE2QixFQUFFLDRCQUE0QixDQUFDO1NBQzVGO0tBQ0o7MkZBRVEseUNBQXlDO2tCQVhyRCxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsNkJBQTZCLEVBQUUsNEJBQTRCLENBQUM7eUJBQzVGO3FCQUNKO2lCQUNKOztBQUdEOzs7O0dBSUc7QUFXSCxNQUFNLE9BQU8sK0JBQStCO0lBQ3hDLGNBQWM7SUFDZCxZQUFzQyxRQUFrQixFQUFVLFdBQW9DO1FBQWhFLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7SUFBRyxDQUFDO0lBRTFHLDBGQUEwRjtJQUUxRixPQUFPLENBQUMsTUFBa0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQyxJQUFJLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN2QixJQUNJLFNBQVMsQ0FBQyxVQUFVO2dCQUNwQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO29CQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUNwRjtnQkFDRSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUMzQjtTQUNKO0lBQ0wsQ0FBQzs7NEhBbEJRLCtCQUErQixrQkFFcEIsUUFBUTtnSEFGbkIsK0JBQStCLDJKQVA3QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG9DQUFvQztZQUM3QyxXQUFXLEVBQUUsK0JBQStCO1NBQy9DO0tBQ0o7MkZBRVEsK0JBQStCO2tCQVYzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5REFBeUQ7b0JBQ25FLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG9DQUFvQzs0QkFDN0MsV0FBVyxpQ0FBaUM7eUJBQy9DO3FCQUNKO2lCQUNKOzswQkFHZ0IsTUFBTTsyQkFBQyxRQUFRO3FFQUk1QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVRva2VuIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkSWdub3JlQ2xpY2tPblNlbGVjdGlvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0lnbm9yZUNsaWNrT25TZWxlY3Rpb25dJywgJ1tmZElnbm9yZUNsaWNrT25TZWxlY3Rpb25dJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuLyoqXG4gKiBEaXJlY3RpdmUgd2lsbCBzdG9wIHByb3BhZ2F0aW9uIGFuZCBwcmV2ZW50IGRlZmF1bHQgb2YgY2xpY2ssIGlmIHNlbGVjdGVkIGFyZWEgaXMgY29taW5nIGZyb21cbiAqIGRpcmVjdGl2ZSdzIGhvc3QgZWxlbWVudC4gVGhpcyBnaXZlcyBhYmlsaXR5IHRvIG5vdCBjYW5jZWwgYWxsIGNsaWNrcyBvbiBlbGVtZW50LCBqdXN0IHRoZSBvbmVzXG4gKiB3aGljaCBpbmNsdWRlIHNlbGVjdGlvblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtJZ25vcmVDbGlja09uU2VsZWN0aW9uXSwgW2ZkSWdub3JlQ2xpY2tPblNlbGVjdGlvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVUb2tlbixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmUge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgLyoqIEhvc3QgY2xpY2sgbGlzdGVuZXIuIENoZWNrcyBmb3Igc2VsZWN0aW9uIGV4aXN0ZW5jZSBhbmQgaWYgZmluZHMgb25lLCBjaGVja3MgYW5jaG9yICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIGNsaWNrZWQoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24/LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYW5jaG9yTm9kZSAmJlxuICAgICAgICAgICAgICAgICh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaXNTYW1lTm9kZShzZWxlY3Rpb24uYW5jaG9yTm9kZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoc2VsZWN0aW9uLmFuY2hvck5vZGUucGFyZW50RWxlbWVudCkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class IgnoreClickOnSelectionModule {
5
+ }
6
+ IgnoreClickOnSelectionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: IgnoreClickOnSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ IgnoreClickOnSelectionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: IgnoreClickOnSelectionModule, imports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective], exports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective] });
8
+ IgnoreClickOnSelectionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: IgnoreClickOnSelectionModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: IgnoreClickOnSelectionModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective],
13
+ exports: [IgnoreClickOnSelectionDirective, DeprecatedIgnoreClickOnSelectionDirective]
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDSCwrQkFBK0IsRUFDL0IseUNBQXlDLEVBQzVDLE1BQU0sdUNBQXVDLENBQUM7O0FBTS9DLE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7MEhBQTVCLDRCQUE0QixZQUgzQiwrQkFBK0IsRUFBRSx5Q0FBeUMsYUFDMUUsK0JBQStCLEVBQUUseUNBQXlDOzBIQUUzRSw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFKeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSx5Q0FBeUMsQ0FBQztvQkFDckYsT0FBTyxFQUFFLENBQUMsK0JBQStCLEVBQUUseUNBQXlDLENBQUM7aUJBQ3hGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSxcbiAgICBEZXByZWNhdGVkSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24uZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSwgRGVwcmVjYXRlZElnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlLCBEZXByZWNhdGVkSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWdub3JlQ2xpY2tPblNlbGVjdGlvbk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsSUFBSSxjQUFjLENBQUMscUNBQXFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0lnbm9yZSBjbGljayBvbiBzZWxlY3Rpb24gZGlyZWN0aXZlJyk7XG4iXX0=
@@ -0,0 +1,31 @@
1
+ export * from './auto-complete/auto-complete.directive';
2
+ export * from './auto-complete/auto-complete.module';
3
+ export * from './focus-key-manager';
4
+ export * from './ignore-click-on-selection/ignore-click-on-selection.directive';
5
+ export * from './ignore-click-on-selection/ignore-click-on-selection.module';
6
+ export * from './ignore-click-on-selection/tokens';
7
+ export * from './initial-focus/initial-focus.directive';
8
+ export * from './initial-focus/initial-focus.module';
9
+ export * from './line-clamp/line-clamp.directive';
10
+ export * from './line-clamp/line-clamp.module';
11
+ export * from './only-digits/only-digits.directive';
12
+ export * from './only-digits/only-digits.module';
13
+ export * from './overflow-list/overflow-list-item.directive';
14
+ export * from './overflow-list/overflow-list.directive';
15
+ export * from './overflow-list/overflow-list.module';
16
+ export * from './repeat/repeat.directive';
17
+ export * from './repeat/repeat.module';
18
+ export * from './resize/resize-handle.directive';
19
+ export * from './resize/resize.module';
20
+ export * from './resize/resize.directive';
21
+ export * from './template/template.directive';
22
+ export * from './template/template.module';
23
+ export * from './truncate/truncate.directive';
24
+ export * from './truncate/truncate.module';
25
+ export * from './focusable-item';
26
+ export * from './focusable-list';
27
+ export * from './readonly';
28
+ export * from './disabled';
29
+ export * from './clicked';
30
+ export * from './selectable-list';
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXMta2V5LW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vdG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWwtZm9jdXMvaW5pdGlhbC1mb2N1cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLWNsYW1wL2xpbmUtY2xhbXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGluZS1jbGFtcC9saW5lLWNsYW1wLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL29ubHktZGlnaXRzL29ubHktZGlnaXRzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL29ubHktZGlnaXRzL29ubHktZGlnaXRzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVyZmxvdy1saXN0L292ZXJmbG93LWxpc3QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwZWF0L3JlcGVhdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBlYXQvcmVwZWF0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2l6ZS9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2l6ZS9yZXNpemUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzaXplL3Jlc2l6ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZS90ZW1wbGF0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi90cnVuY2F0ZS90cnVuY2F0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi90cnVuY2F0ZS90cnVuY2F0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtaXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1saXN0JztcbmV4cG9ydCAqIGZyb20gJy4vcmVhZG9ubHknO1xuZXhwb3J0ICogZnJvbSAnLi9kaXNhYmxlZCc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RhYmxlLWxpc3QnO1xuIl19
@@ -0,0 +1,117 @@
1
+ import { Directive, ElementRef, Input, NgZone } from '@angular/core';
2
+ import { take } from 'rxjs/operators';
3
+ import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
4
+ import { TabbableElementService } from '../../services/tabbable-element.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../services/tabbable-element.service";
7
+ export class DeprecatedInitialFocusDirective extends DeprecatedSelector {
8
+ }
9
+ DeprecatedInitialFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedInitialFocusDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
+ DeprecatedInitialFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedInitialFocusDirective, isStandalone: true, selector: "[fdInitialFocus], [fd-initial-focus]", providers: [
11
+ {
12
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
13
+ useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
14
+ }
15
+ ], usesInheritance: true, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedInitialFocusDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ // eslint-disable-next-line @angular-eslint/directive-selector
20
+ selector: '[fdInitialFocus], [fd-initial-focus]',
21
+ standalone: true,
22
+ providers: [
23
+ {
24
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
25
+ useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
26
+ }
27
+ ]
28
+ }]
29
+ }] });
30
+ export class InitialFocusDirective {
31
+ /** @hidden */
32
+ constructor(_elmRef, _ngZone, _tabbableService) {
33
+ this._elmRef = _elmRef;
34
+ this._ngZone = _ngZone;
35
+ this._tabbableService = _tabbableService;
36
+ /**
37
+ * CSS selector of element that should be focused.
38
+ */
39
+ this.focusableItem = '.fd-initial-focus-item';
40
+ /**
41
+ * Whether initial focus enabled for current element.
42
+ */
43
+ this.enabled = true;
44
+ /**
45
+ * Whether to focus last element in found array of elements.
46
+ */
47
+ this.focusLastElement = false;
48
+ }
49
+ /** @hidden */
50
+ ngAfterViewInit() {
51
+ this._executeOnStable(() => this._focus());
52
+ }
53
+ /**
54
+ * @hidden
55
+ * Executes a function when the zone is stable.
56
+ */
57
+ _executeOnStable(fn) {
58
+ if (this._ngZone.isStable) {
59
+ fn();
60
+ }
61
+ else {
62
+ this._ngZone.onStable.pipe(take(1)).subscribe(fn);
63
+ }
64
+ }
65
+ /**
66
+ * @hidden
67
+ * Searches for appropriate focusable element
68
+ */
69
+ _getFocusableElement() {
70
+ if (!this.focusableItem) {
71
+ return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);
72
+ }
73
+ const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(this.focusableItem);
74
+ if (autoFocusableItems.length > 0) {
75
+ return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];
76
+ }
77
+ // If no elements found, fallback to first tabbable element.
78
+ return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);
79
+ }
80
+ /** @hidden */
81
+ _focus() {
82
+ if (!this.enabled) {
83
+ return;
84
+ }
85
+ this._getFocusableElement()?.focus();
86
+ }
87
+ }
88
+ InitialFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: InitialFocusDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.TabbableElementService }], target: i0.ɵɵFactoryTarget.Directive });
89
+ InitialFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: InitialFocusDirective, isStandalone: true, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: { focusableItem: ["fd-initial-focus", "focusableItem"], enabled: "enabled", focusLastElement: "focusLastElement" }, providers: [
90
+ TabbableElementService,
91
+ {
92
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
93
+ useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
94
+ }
95
+ ], ngImport: i0 });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: InitialFocusDirective, decorators: [{
97
+ type: Directive,
98
+ args: [{
99
+ selector: '[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]',
100
+ standalone: true,
101
+ providers: [
102
+ TabbableElementService,
103
+ {
104
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
105
+ useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
106
+ }
107
+ ]
108
+ }]
109
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.TabbableElementService }]; }, propDecorators: { focusableItem: [{
110
+ type: Input,
111
+ args: ['fd-initial-focus']
112
+ }], enabled: [{
113
+ type: Input
114
+ }], focusLastElement: [{
115
+ type: Input
116
+ }] } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7OztBQWFqRixNQUFNLE9BQU8sK0JBQWdDLFNBQVEsa0JBQWtCOzs0SEFBMUQsK0JBQStCO2dIQUEvQiwrQkFBK0IsbUZBUDdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUM1RjtLQUNKOzJGQUVRLCtCQUErQjtrQkFYM0MsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLHNDQUFzQyxDQUFDO3lCQUM1RjtxQkFDSjtpQkFDSjs7QUFjRCxNQUFNLE9BQU8scUJBQXFCO0lBbUI5QixjQUFjO0lBQ2QsWUFDWSxPQUFnQyxFQUNoQyxPQUFlLEVBQ04sZ0JBQXdDO1FBRmpELFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDTixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBdEI3RDs7V0FFRztRQUVILGtCQUFhLEdBQUcsd0JBQXdCLENBQUM7UUFFekM7O1dBRUc7UUFFSCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWY7O1dBRUc7UUFFSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFPdEIsQ0FBQztJQUVKLGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxFQUFhO1FBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdkIsRUFBRSxFQUFFLENBQUM7U0FDUjthQUFNO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNyRDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdEc7UUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUNsRSxJQUFJLENBQUMsYUFBYSxDQUNNLENBQUM7UUFFN0IsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0c7UUFFRCw0REFBNEQ7UUFDNUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVELGNBQWM7SUFDTixNQUFNO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN6QyxDQUFDOztrSEF0RVEscUJBQXFCO3NHQUFyQixxQkFBcUIsa09BUm5CO1FBQ1Asc0JBQXNCO1FBQ3RCO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsc0NBQXNDLENBQUM7U0FDNUY7S0FDSjsyRkFFUSxxQkFBcUI7a0JBWGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlEQUF5RDtvQkFDbkUsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCxzQkFBc0I7d0JBQ3RCOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxzQ0FBc0MsQ0FBQzt5QkFDNUY7cUJBQ0o7aUJBQ0o7MkpBTUcsYUFBYTtzQkFEWixLQUFLO3VCQUFDLGtCQUFrQjtnQkFPekIsT0FBTztzQkFETixLQUFLO2dCQU9OLGdCQUFnQjtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuaW1wb3J0IHsgVGFiYmFibGVFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYmJhYmxlLWVsZW1lbnQuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRJbml0aWFsRm9jdXNdLCBbZmQtaW5pdGlhbC1mb2N1c10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0luaXRpYWxGb2N1c10nLCAnW2ZkSW5pdGlhbEZvY3VzXSwgW2ZkLWluaXRpYWwtZm9jdXNdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZEluaXRpYWxGb2N1c0RpcmVjdGl2ZSBleHRlbmRzIERlcHJlY2F0ZWRTZWxlY3RvciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtJbml0aWFsRm9jdXNdLCBbZmRJbml0aWFsRm9jdXNdLCBbZmQtaW5pdGlhbC1mb2N1c10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFRhYmJhYmxlRWxlbWVudFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0luaXRpYWxGb2N1c10nLCAnW2ZkSW5pdGlhbEZvY3VzXSwgW2ZkLWluaXRpYWwtZm9jdXNdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSW5pdGlhbEZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQ1NTIHNlbGVjdG9yIG9mIGVsZW1lbnQgdGhhdCBzaG91bGQgYmUgZm9jdXNlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2ZkLWluaXRpYWwtZm9jdXMnKVxuICAgIGZvY3VzYWJsZUl0ZW0gPSAnLmZkLWluaXRpYWwtZm9jdXMtaXRlbSc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGluaXRpYWwgZm9jdXMgZW5hYmxlZCBmb3IgY3VycmVudCBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZvY3VzIGxhc3QgZWxlbWVudCBpbiBmb3VuZCBhcnJheSBvZiBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzTGFzdEVsZW1lbnQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsbVJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJiYWJsZVNlcnZpY2U6IFRhYmJhYmxlRWxlbWVudFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgpID0+IHRoaXMuX2ZvY3VzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdoZW4gdGhlIHpvbmUgaXMgc3RhYmxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2V4ZWN1dGVPblN0YWJsZShmbjogKCkgPT4gYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9uZ1pvbmUuaXNTdGFibGUpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlYXJjaGVzIGZvciBhcHByb3ByaWF0ZSBmb2N1c2FibGUgZWxlbWVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvY3VzYWJsZUl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzTGFzdEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b0ZvY3VzYWJsZUl0ZW1zID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlSXRlbVxuICAgICAgICApIGFzIE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+O1xuXG4gICAgICAgIGlmIChhdXRvRm9jdXNhYmxlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmZvY3VzTGFzdEVsZW1lbnQgPyBhdXRvRm9jdXNhYmxlSXRlbXNbMF0gOiBhdXRvRm9jdXNhYmxlSXRlbXNbYXV0b0ZvY3VzYWJsZUl0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgbm8gZWxlbWVudHMgZm91bmQsIGZhbGxiYWNrIHRvIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQuXG4gICAgICAgIHJldHVybiB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzTGFzdEVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZ2V0Rm9jdXNhYmxlRWxlbWVudCgpPy5mb2N1cygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { InitialFocusDirective, DeprecatedInitialFocusDirective } from './initial-focus.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class InitialFocusModule {
5
+ }
6
+ InitialFocusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: InitialFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ InitialFocusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: InitialFocusModule, imports: [InitialFocusDirective, DeprecatedInitialFocusDirective], exports: [InitialFocusDirective, DeprecatedInitialFocusDirective] });
8
+ InitialFocusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: InitialFocusModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: InitialFocusModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [InitialFocusDirective, DeprecatedInitialFocusDirective],
13
+ exports: [InitialFocusDirective, DeprecatedInitialFocusDirective]
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1mb2N1cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU1uRyxNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsWUFIakIscUJBQXFCLEVBQUUsK0JBQStCLGFBQ3RELHFCQUFxQixFQUFFLCtCQUErQjtnSEFFdkQsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUsK0JBQStCLENBQUM7b0JBQ2pFLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLCtCQUErQixDQUFDO2lCQUNwRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbml0aWFsRm9jdXNEaXJlY3RpdmUsIERlcHJlY2F0ZWRJbml0aWFsRm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuL2luaXRpYWwtZm9jdXMuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSW5pdGlhbEZvY3VzRGlyZWN0aXZlLCBEZXByZWNhdGVkSW5pdGlhbEZvY3VzRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbSW5pdGlhbEZvY3VzRGlyZWN0aXZlLCBEZXByZWNhdGVkSW5pdGlhbEZvY3VzRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJbml0aWFsRm9jdXNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,263 @@
1
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ChangeDetectorRef } from '@angular/core';
3
+ import { fromEvent } from 'rxjs';
4
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
+ import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
6
+ import * as i0 from "@angular/core";
7
+ export class DeprecatedLineClampTargetDirective extends DeprecatedSelector {
8
+ }
9
+ DeprecatedLineClampTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedLineClampTargetDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
+ DeprecatedLineClampTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedLineClampTargetDirective, isStandalone: true, selector: "[fdLineClampTarget], [fd-lineclamp-target]", providers: [
11
+ {
12
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
13
+ useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClampTarget], [fd-lineclamp-target]')
14
+ }
15
+ ], usesInheritance: true, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedLineClampTargetDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ // eslint-disable-next-line @angular-eslint/directive-selector
20
+ selector: '[fdLineClampTarget], [fd-lineclamp-target]',
21
+ standalone: true,
22
+ providers: [
23
+ {
24
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
25
+ useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClampTarget], [fd-lineclamp-target]')
26
+ }
27
+ ]
28
+ }]
29
+ }] });
30
+ export class DeprecatedLineClampDirective extends DeprecatedSelector {
31
+ }
32
+ DeprecatedLineClampDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedLineClampDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
33
+ DeprecatedLineClampDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DeprecatedLineClampDirective, isStandalone: true, selector: "[fdLineClamp], [fd-lineclamp]", providers: [
34
+ {
35
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
36
+ useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClamp], [fd-lineclamp]')
37
+ }
38
+ ], usesInheritance: true, ngImport: i0 });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DeprecatedLineClampDirective, decorators: [{
40
+ type: Directive,
41
+ args: [{
42
+ // eslint-disable-next-line @angular-eslint/directive-selector
43
+ selector: '[fdLineClamp], [fd-lineclamp]',
44
+ standalone: true,
45
+ providers: [
46
+ {
47
+ provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
48
+ useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClamp], [fd-lineclamp]')
49
+ }
50
+ ]
51
+ }]
52
+ }] });
53
+ export class LineClampTargetDirective {
54
+ /** @hidden */
55
+ constructor(_elementRef) {
56
+ this._elementRef = _elementRef;
57
+ /**
58
+ * Event with target instance for clamping
59
+ */
60
+ this.update = new EventEmitter();
61
+ }
62
+ /**
63
+ * Native element of clamping target
64
+ */
65
+ get targetElement() {
66
+ return this._elementRef.nativeElement;
67
+ }
68
+ /** @hidden */
69
+ ngOnChanges() {
70
+ this.update.emit(this);
71
+ }
72
+ /** @hidden */
73
+ ngAfterViewInit() {
74
+ this.update.emit(this);
75
+ }
76
+ }
77
+ LineClampTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LineClampTargetDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
78
+ LineClampTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: LineClampTargetDirective, isStandalone: true, selector: "[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]", inputs: { fdLineClampTargetText: "fdLineClampTargetText" }, outputs: { update: "update" }, exportAs: ["fdLineClampTarget"], usesOnChanges: true, ngImport: i0 });
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LineClampTargetDirective, decorators: [{
80
+ type: Directive,
81
+ args: [{
82
+ selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',
83
+ exportAs: 'fdLineClampTarget',
84
+ standalone: true
85
+ }]
86
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fdLineClampTargetText: [{
87
+ type: Input
88
+ }], update: [{
89
+ type: Output
90
+ }] } });
91
+ export class LineClampDirective {
92
+ /** @hidden */
93
+ constructor(_elementRef, _renderer, _cdRef) {
94
+ this._elementRef = _elementRef;
95
+ this._renderer = _renderer;
96
+ this._cdRef = _cdRef;
97
+ /**
98
+ * Clamping state
99
+ */
100
+ this.fdLineclampState = false;
101
+ /**
102
+ * Event return count of lines from the target
103
+ */
104
+ this.lineCountUpdate = new EventEmitter();
105
+ /** @hidden */
106
+ this._isNativeSupport = true;
107
+ }
108
+ /**
109
+ * Count lines for clamping
110
+ */
111
+ set fdLineClampLines(value) {
112
+ this._lineCount = coerceNumberProperty(value);
113
+ }
114
+ /** @hidden */
115
+ /**
116
+ * Root native element of clamping box
117
+ */
118
+ get rootElement() {
119
+ return this._elementRef.nativeElement;
120
+ }
121
+ /** @hidden */
122
+ ngAfterViewInit() {
123
+ this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';
124
+ // need to use setTimeout to force recheck of parent elements
125
+ setTimeout(() => {
126
+ this._checkLineCount();
127
+ });
128
+ this.windowResize$ = fromEvent(window, 'resize')
129
+ .pipe(distinctUntilChanged(), debounceTime(200))
130
+ .subscribe({
131
+ next: () => this._checkLineCount()
132
+ });
133
+ }
134
+ /** @hidden */
135
+ ngOnDestroy() {
136
+ if (this.windowResize$) {
137
+ this.windowResize$.unsubscribe();
138
+ }
139
+ }
140
+ /** @hidden */
141
+ ngOnChanges() {
142
+ this.reset();
143
+ this.refreshClamp();
144
+ }
145
+ /** @hidden */
146
+ reset() {
147
+ if (this._lineClampTarget && this._originalText) {
148
+ this._lineClampTarget.textContent = this._originalText;
149
+ }
150
+ if (this._isNativeSupport) {
151
+ this._resetNative();
152
+ }
153
+ }
154
+ /** @hidden */
155
+ refreshTarget(event) {
156
+ this._lineClampTarget = event.targetElement;
157
+ this._originalText = event.fdLineClampTargetText;
158
+ this.reset();
159
+ this.refreshClamp();
160
+ }
161
+ /** @hidden */
162
+ refreshClamp() {
163
+ if (this.fdLineclampState && this._lineCount) {
164
+ this.native();
165
+ if (!this._isNativeSupport) {
166
+ this._truncate();
167
+ }
168
+ }
169
+ }
170
+ /** @hidden
171
+ * Truncate text in the target box, if browser not support lineclamp style
172
+ */
173
+ _truncate() {
174
+ if (!this._lineClampTarget) {
175
+ return;
176
+ }
177
+ const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);
178
+ const ellipsisTextArray = this._originalText.split(' ');
179
+ const ellipsisText = () => {
180
+ if (this.rootElement.scrollHeight > lineClampHeight) {
181
+ ellipsisTextArray.pop();
182
+ this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';
183
+ ellipsisText.call(this);
184
+ }
185
+ };
186
+ ellipsisText();
187
+ }
188
+ /** @hidden
189
+ * Get lineheight for rootelement, if browser not support lineclamp style
190
+ */
191
+ getLineHeight() {
192
+ const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');
193
+ if (lineHeight === 'normal') {
194
+ return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;
195
+ }
196
+ return parseFloat(lineHeight);
197
+ }
198
+ /** @hidden
199
+ * Setup native styles for lineclamp text
200
+ */
201
+ native() {
202
+ if (this._isNativeSupport) {
203
+ this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');
204
+ this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');
205
+ this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');
206
+ this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');
207
+ this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);
208
+ }
209
+ }
210
+ /** @hidden
211
+ * Reset native styles for lineclamp text
212
+ */
213
+ _resetNative() {
214
+ if (this._isNativeSupport) {
215
+ this._renderer.setStyle(this.rootElement, 'display', '');
216
+ this._renderer.setStyle(this.rootElement, 'overflow', '');
217
+ this._renderer.setStyle(this.rootElement, 'text-overflow', '');
218
+ this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');
219
+ this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');
220
+ }
221
+ }
222
+ /** @hidden */
223
+ _checkLineCount() {
224
+ if (!this.rootElement) {
225
+ return;
226
+ }
227
+ const style = window.getComputedStyle(this.rootElement, null);
228
+ this.reset();
229
+ const fontSize = parseInt(style.getPropertyValue('font-size'), 10);
230
+ const boxSizing = style.getPropertyValue('box-sizing');
231
+ let height = parseInt(style.getPropertyValue('height'), 10);
232
+ let lineHeight = parseFloat(style.getPropertyValue('line-height'));
233
+ if (isNaN(lineHeight)) {
234
+ lineHeight = fontSize * 1.2;
235
+ }
236
+ if (boxSizing === 'border-box') {
237
+ const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);
238
+ const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);
239
+ const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);
240
+ const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);
241
+ height = height - padding_top - padding_bottom - border_top - border_bottom;
242
+ }
243
+ this.refreshClamp();
244
+ this.lineCountUpdate.emit(Math.ceil(height / lineHeight));
245
+ }
246
+ }
247
+ LineClampDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LineClampDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
248
+ LineClampDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: LineClampDirective, isStandalone: true, selector: "[fdkLineClamp], [fdLineClamp], [fd-lineclamp]", inputs: { fdLineClampLines: "fdLineClampLines", fdLineclampState: "fdLineclampState" }, outputs: { lineCountUpdate: "lineCountUpdate" }, exportAs: ["fdLineClamp"], usesOnChanges: true, ngImport: i0 });
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LineClampDirective, decorators: [{
250
+ type: Directive,
251
+ args: [{
252
+ selector: '[fdkLineClamp], [fdLineClamp], [fd-lineclamp]',
253
+ exportAs: 'fdLineClamp',
254
+ standalone: true
255
+ }]
256
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { fdLineClampLines: [{
257
+ type: Input
258
+ }], fdLineclampState: [{
259
+ type: Input
260
+ }], lineCountUpdate: [{
261
+ type: Output
262
+ }] } });
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvbGluZS1jbGFtcC9saW5lLWNsYW1wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFhekMsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLGtCQUFrQjs7K0hBQTdELGtDQUFrQzttSEFBbEMsa0NBQWtDLHlGQVBoQztRQUNQO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsNENBQTRDLENBQUM7U0FDckc7S0FDSjsyRkFFUSxrQ0FBa0M7a0JBWDlDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsNENBQTRDO29CQUN0RCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSw0Q0FBNEMsQ0FBQzt5QkFDckc7cUJBQ0o7aUJBQ0o7O0FBY0QsTUFBTSxPQUFPLDRCQUE2QixT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LEdBQUcsVUFBVSxHQUFHLGFBQWEsQ0FBQztTQUMvRTtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OytHQTFMUSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUw5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwrQ0FBK0M7b0JBQ3pELFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7eUpBTU8sZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLGVBQWU7c0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL21vZGVscy9udWxsYWJsZSc7XG5pbXBvcnQge1xuICAgIERlcHJlY2F0ZWRTZWxlY3RvcixcbiAgICBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICBnZXREZXByZWNhdGVkTW9kZWxcbn0gZnJvbSAnLi4vLi4vZGVwcmVjYXRlZC1zZWxlY3Rvci5jbGFzcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRMaW5lQ2xhbXBUYXJnZXRdLCBbZmQtbGluZWNsYW1wLXRhcmdldF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0xpbmVDbGFtcFRhcmdldF0nLCAnW2ZkTGluZUNsYW1wVGFyZ2V0XSwgW2ZkLWxpbmVjbGFtcC10YXJnZXRdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZExpbmVDbGFtcFRhcmdldERpcmVjdGl2ZSBleHRlbmRzIERlcHJlY2F0ZWRTZWxlY3RvciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkTGluZUNsYW1wXSwgW2ZkLWxpbmVjbGFtcF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0xpbmVDbGFtcFRhcmdldF0nLCAnW2ZkTGluZUNsYW1wXSwgW2ZkLWxpbmVjbGFtcF0nKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXByZWNhdGVkTGluZUNsYW1wRGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0xpbmVDbGFtcFRhcmdldF0sIFtmZExpbmVDbGFtcFRhcmdldF0sIFtmZC1saW5lY2xhbXAtdGFyZ2V0XScsXG4gICAgZXhwb3J0QXM6ICdmZExpbmVDbGFtcFRhcmdldCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaW5lQ2xhbXBUYXJnZXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKlxuICAgICAqIFRhcmdldCB0ZXh0IGZvciBjbGFtcGluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRMaW5lQ2xhbXBUYXJnZXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aXRoIHRhcmdldCBpbnN0YW5jZSBmb3IgY2xhbXBpbmdcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxMaW5lQ2xhbXBUYXJnZXREaXJlY3RpdmU+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvKipcbiAgICAgKiBOYXRpdmUgZWxlbWVudCBvZiBjbGFtcGluZyB0YXJnZXRcbiAgICAgKi9cbiAgICBnZXQgdGFyZ2V0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGUuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGUuZW1pdCh0aGlzKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0xpbmVDbGFtcF0sIFtmZExpbmVDbGFtcF0sIFtmZC1saW5lY2xhbXBdJyxcbiAgICBleHBvcnRBczogJ2ZkTGluZUNsYW1wJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExpbmVDbGFtcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBDb3VudCBsaW5lcyBmb3IgY2xhbXBpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmZExpbmVDbGFtcExpbmVzKHZhbHVlOiBOdWxsYWJsZTxudW1iZXI+KSB7XG4gICAgICAgIHRoaXMuX2xpbmVDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGFtcGluZyBzdGF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRMaW5lY2xhbXBTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgcmV0dXJuIGNvdW50IG9mIGxpbmVzIGZyb20gdGhlIHRhcmdldFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxpbmVDb3VudFVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lQ2xhbXBUYXJnZXQ6IEhUTUxFbGVtZW50O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxUZXh0OiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHdpbmRvd1Jlc2l6ZSQ6IFN1YnNjcmlwdGlvbjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzTmF0aXZlU3VwcG9ydCA9IHRydWU7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLyoqXG4gICAgICogUm9vdCBuYXRpdmUgZWxlbWVudCBvZiBjbGFtcGluZyBib3hcbiAgICAgKi9cbiAgICBnZXQgcm9vdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc05hdGl2ZVN1cHBvcnQgPSB0eXBlb2YgdGhpcy5yb290RWxlbWVudC5zdHlsZS53ZWJraXRMaW5lQ2xhbXAgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgICAgIC8vIG5lZWQgdG8gdXNlIHNldFRpbWVvdXQgdG8gZm9yY2UgcmVjaGVjayBvZiBwYXJlbnQgZWxlbWVudHNcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0xpbmVDb3VudCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLndpbmRvd1Jlc2l6ZSQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgyMDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5fY2hlY2tMaW5lQ291bnQoKVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud2luZG93UmVzaXplJCkge1xuICAgICAgICAgICAgdGhpcy53aW5kb3dSZXNpemUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucmVmcmVzaENsYW1wKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2xpbmVDbGFtcFRhcmdldCAmJiB0aGlzLl9vcmlnaW5hbFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVDbGFtcFRhcmdldC50ZXh0Q29udGVudCA9IHRoaXMuX29yaWdpbmFsVGV4dDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faXNOYXRpdmVTdXBwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldE5hdGl2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWZyZXNoVGFyZ2V0KGV2ZW50OiBMaW5lQ2xhbXBUYXJnZXREaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGluZUNsYW1wVGFyZ2V0ID0gZXZlbnQudGFyZ2V0RWxlbWVudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxUZXh0ID0gZXZlbnQuZmRMaW5lQ2xhbXBUYXJnZXRUZXh0O1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucmVmcmVzaENsYW1wKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWZyZXNoQ2xhbXAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZkTGluZWNsYW1wU3RhdGUgJiYgdGhpcy5fbGluZUNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZSgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90cnVuY2F0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUcnVuY2F0ZSB0ZXh0IGluIHRoZSB0YXJnZXQgYm94LCBpZiBicm93c2VyIG5vdCBzdXBwb3J0IGxpbmVjbGFtcCBzdHlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3RydW5jYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2xpbmVDbGFtcFRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmVDbGFtcEhlaWdodCA9IE1hdGguY2VpbCh0aGlzLmdldExpbmVIZWlnaHQoKSAqIHRoaXMuX2xpbmVDb3VudCk7XG4gICAgICAgIGNvbnN0IGVsbGlwc2lzVGV4dEFycmF5ID0gdGhpcy5fb3JpZ2luYWxUZXh0LnNwbGl0KCcgJyk7XG4gICAgICAgIGNvbnN0IGVsbGlwc2lzVGV4dCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvb3RFbGVtZW50LnNjcm9sbEhlaWdodCA+IGxpbmVDbGFtcEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsbGlwc2lzVGV4dEFycmF5LnBvcCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpbmVDbGFtcFRhcmdldC50ZXh0Q29udGVudCA9IGVsbGlwc2lzVGV4dEFycmF5LmpvaW4oJyAnKSArICcuLi4nO1xuICAgICAgICAgICAgICAgIGVsbGlwc2lzVGV4dC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBlbGxpcHNpc1RleHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEdldCBsaW5laGVpZ2h0IGZvciByb290ZWxlbWVudCwgaWYgYnJvd3NlciBub3Qgc3VwcG9ydCBsaW5lY2xhbXAgc3R5bGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExpbmVIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgIGlmIChsaW5lSGVpZ2h0ID09PSAnbm9ybWFsJykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAxMCkgKiAxLjI1O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobGluZUhlaWdodCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBTZXR1cCBuYXRpdmUgc3R5bGVzIGZvciBsaW5lY2xhbXAgdGV4dFxuICAgICAqL1xuICAgIHByaXZhdGUgbmF0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNOYXRpdmVTdXBwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnZGlzcGxheScsICctd2Via2l0LWJveCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ3RleHQtb3ZlcmZsb3cnLCAnZWxsaXBzaXMnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICctd2Via2l0LWJveC1vcmllbnQnLCAndmVydGljYWwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICctd2Via2l0LWxpbmUtY2xhbXAnLCBgJHt0aGlzLl9saW5lQ291bnR9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlc2V0IG5hdGl2ZSBzdHlsZXMgZm9yIGxpbmVjbGFtcCB0ZXh0XG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVzZXROYXRpdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ292ZXJmbG93JywgJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ3RleHQtb3ZlcmZsb3cnLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnLXdlYmtpdC1ib3gtb3JpZW50JywgJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJy13ZWJraXQtbGluZS1jbGFtcCcsICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tMaW5lQ291bnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yb290RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCwgbnVsbCk7XG5cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksIDEwKTtcbiAgICAgICAgY29uc3QgYm94U2l6aW5nID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0JyksIDEwKTtcbiAgICAgICAgbGV0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2xpbmUtaGVpZ2h0JykpO1xuICAgICAgICBpZiAoaXNOYU4obGluZUhlaWdodCkpIHtcbiAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBmb250U2l6ZSAqIDEuMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmdfdG9wID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApO1xuICAgICAgICAgICAgY29uc3QgcGFkZGluZ19ib3R0b20gPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJfdG9wID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJfYm90dG9tID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpLCAxMCk7XG4gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQgLSBwYWRkaW5nX3RvcCAtIHBhZGRpbmdfYm90dG9tIC0gYm9yZGVyX3RvcCAtIGJvcmRlcl9ib3R0b207XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoQ2xhbXAoKTtcbiAgICAgICAgdGhpcy5saW5lQ291bnRVcGRhdGUuZW1pdChNYXRoLmNlaWwoaGVpZ2h0IC8gbGluZUhlaWdodCkpO1xuICAgIH1cbn1cbiJdfQ==