@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,255 @@
1
+ import { Directive, ElementRef, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';
2
+ import { DragDrop } from '@angular/cdk/drag-drop';
3
+ import { Subscription } from 'rxjs';
4
+ import { delay } from 'rxjs/operators';
5
+ import { DND_ITEM } from '../tokens';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/cdk/drag-drop";
8
+ export class DndItemDirective {
9
+ /** @hidden */
10
+ constructor(elementRef, _dragDrop) {
11
+ this.elementRef = elementRef;
12
+ this._dragDrop = _dragDrop;
13
+ /**
14
+ * Whether to apply "fd-dnd-item" class.
15
+ * @default true
16
+ */
17
+ this.applyDragItemClass = true;
18
+ /** Event thrown when the element is moved by 1px */
19
+ this.moved = new EventEmitter();
20
+ /** Event thrown when the element is released */
21
+ this.released = new EventEmitter();
22
+ /** Event thrown when the element is started to be dragged */
23
+ this.started = new EventEmitter();
24
+ /**
25
+ * Defines if the item is prevented from being moved by other elements.
26
+ * So nothing can be placed just before and just after it
27
+ */
28
+ this.stickInPlace = false;
29
+ /** Class added to element, when it's dragged. */
30
+ this.classWhenElementDragged = 'fd-dnd-on-drag';
31
+ /** Defines if every element in list is draggable */
32
+ this.listDraggable = true;
33
+ /** @hidden */
34
+ this._draggable = true;
35
+ /** @hidden */
36
+ this._subscriptions = new Subscription();
37
+ }
38
+ /** Defines if element is draggable */
39
+ set draggable(draggable) {
40
+ this._draggable = draggable;
41
+ this.changeCDKDragState();
42
+ }
43
+ /** @hidden */
44
+ getElementCoordinates(isBefore) {
45
+ /** Takes distance from the beginning of window page */
46
+ const rect = this.elementRef.nativeElement.getBoundingClientRect();
47
+ const position = isBefore ? 'before' : 'after';
48
+ /** Vertically distance is counted by distance from top of the side + half of the element height */
49
+ return {
50
+ x: rect.left,
51
+ position,
52
+ y: rect.top,
53
+ stickToPosition: this.stickInPlace,
54
+ width: rect.width,
55
+ height: rect.height
56
+ };
57
+ }
58
+ /** @hidden */
59
+ ngAfterContentInit() {
60
+ this._setCDKDrag();
61
+ this._listenElementEvents();
62
+ }
63
+ /** @hidden */
64
+ ngOnDestroy() {
65
+ this._subscriptions.unsubscribe();
66
+ }
67
+ /** @hidden */
68
+ onCdkMove(position) {
69
+ this.moved.emit(position);
70
+ }
71
+ /** @hidden */
72
+ onCdkDragReleased() {
73
+ /** Remove class which is added, when element is dragged */
74
+ this.elementRef.nativeElement.classList.remove(this.classWhenElementDragged);
75
+ this.released.emit();
76
+ /** Resets the position of element. */
77
+ this._dragRef.reset();
78
+ /** Removes placeholder element */
79
+ this.removePlaceholder();
80
+ }
81
+ /** @hidden */
82
+ onCdkDragStart() {
83
+ /** Adds class */
84
+ this.elementRef.nativeElement.classList.add(this.classWhenElementDragged);
85
+ if (!this._placeholderElement) {
86
+ this.createPlaceholder();
87
+ }
88
+ this.started.emit();
89
+ }
90
+ /** @hidden */
91
+ removePlaceholder() {
92
+ if (this._placeholderElement && this._placeholderElement.parentNode) {
93
+ // IE11 workaround
94
+ this._placeholderElement.parentNode.removeChild(this._placeholderElement);
95
+ this._placeholderElement = null;
96
+ }
97
+ }
98
+ /** @hidden */
99
+ removeLine() {
100
+ if (this._lineElement && this._lineElement.parentNode) {
101
+ // IE11 workaround
102
+ this._lineElement.parentNode.removeChild(this._lineElement);
103
+ this._lineElement = null;
104
+ }
105
+ }
106
+ /** @hidden */
107
+ removeReplaceIndicator() {
108
+ if (this._replaceIndicator && this._replaceIndicator.parentNode) {
109
+ // IE11 workaround
110
+ this._replaceIndicator.parentNode.removeChild(this._replaceIndicator);
111
+ this._replaceIndicator = null;
112
+ }
113
+ }
114
+ /** @hidden */
115
+ createReplaceIndicator() {
116
+ this._replaceIndicator = document.createElement('DIV');
117
+ this._replaceIndicator.classList.add('fd-replace-indicator');
118
+ let container = this.elementRef.nativeElement;
119
+ if (this.containerSelector) {
120
+ const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);
121
+ if (newContainer) {
122
+ container = newContainer;
123
+ }
124
+ }
125
+ container.appendChild(this._replaceIndicator);
126
+ }
127
+ /** @hidden */
128
+ createLine(position, gridMode) {
129
+ /** Creating of line element */
130
+ this._lineElement = document.createElement('div');
131
+ this._lineElement.classList.add('drop-area__line');
132
+ if (gridMode) {
133
+ this._lineElement.classList.add('drop-area__line--vertical');
134
+ }
135
+ else {
136
+ this._lineElement.classList.add('drop-area__line--horizontal');
137
+ }
138
+ if (position === 'after') {
139
+ this._lineElement.classList.add('after');
140
+ }
141
+ if (position === 'before') {
142
+ this._lineElement.classList.add('before');
143
+ }
144
+ /** Putting element to the container */
145
+ let container = this.elementRef.nativeElement;
146
+ if (this.containerSelector) {
147
+ const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);
148
+ if (newContainer) {
149
+ container = newContainer;
150
+ }
151
+ }
152
+ container.appendChild(this._lineElement);
153
+ }
154
+ /** @hidden */
155
+ changeCDKDragState() {
156
+ if (this._dragRef) {
157
+ this._dragRef.disabled = !(this._draggable && this.listDraggable);
158
+ }
159
+ }
160
+ /** @hidden */
161
+ createPlaceholder() {
162
+ const placeholder = this.elementRef.nativeElement.cloneNode(true);
163
+ /** Cloning container element */
164
+ this._placeholderElement = placeholder;
165
+ placeholder.classList.add('fd-dnd-placeholder');
166
+ this._setPlaceholderStyles();
167
+ /** Including element to the container
168
+ * IE11 equivalent to `this.element.nativeElement.after(clone);`
169
+ */
170
+ this._placeAfter(this.elementRef.nativeElement, placeholder);
171
+ }
172
+ /** @hidden */
173
+ _setPlaceholderStyles() {
174
+ const offset = this._getOffsetToParent(this.elementRef.nativeElement);
175
+ if (!offset || !this._placeholderElement) {
176
+ return;
177
+ }
178
+ this._placeholderElement.style.top = offset.y + 'px';
179
+ this._placeholderElement.style.left = offset.x + 'px';
180
+ this._placeholderElement.style.position = 'absolute';
181
+ this._placeholderElement.style.zIndex = '0';
182
+ this._placeholderElement.style.opacity = '0.3';
183
+ this._placeholderElement.style.width = this.elementRef.nativeElement.offsetWidth + 'px';
184
+ this._placeholderElement.style.height = this.elementRef.nativeElement.offsetHeight + 'px';
185
+ }
186
+ /** @hidden */
187
+ _getOffsetToParent(element) {
188
+ const parentElement = element.parentElement;
189
+ if (!parentElement) {
190
+ return;
191
+ }
192
+ const parentTop = parentElement.getBoundingClientRect().top;
193
+ const parentLeft = parentElement.getBoundingClientRect().left;
194
+ return {
195
+ x: Math.abs(element.getBoundingClientRect().left - parentLeft),
196
+ y: Math.abs(element.getBoundingClientRect().top - parentTop)
197
+ };
198
+ }
199
+ /** @hidden */
200
+ _setCDKDrag() {
201
+ this._dragRef = this._dragDrop.createDrag(this.elementRef);
202
+ this._dragRef.disabled = !this._draggable;
203
+ this._subscriptions.add(this._dragRef.moved.subscribe((event) => this.onCdkMove(event.pointerPosition)));
204
+ this._subscriptions.add(this._dragRef.released.subscribe(() => this.onCdkDragReleased()));
205
+ this._subscriptions.add(this._dragRef.started.subscribe(() => this.onCdkDragStart()));
206
+ }
207
+ /** IE11 equivalent of Node.after() Method */
208
+ _placeAfter(element, cloneNode) {
209
+ const docFrag = document.createDocumentFragment();
210
+ docFrag.appendChild(cloneNode);
211
+ element.parentNode?.insertBefore(docFrag, element.nextSibling);
212
+ }
213
+ /** @hidden */
214
+ _listenElementEvents() {
215
+ this._subscriptions.add(this.released
216
+ .pipe(
217
+ // postpone blur
218
+ delay(0))
219
+ .subscribe(() => {
220
+ if (this.containerSelector) {
221
+ this.elementRef.nativeElement.children[0].blur();
222
+ }
223
+ this.elementRef.nativeElement.blur();
224
+ }));
225
+ }
226
+ }
227
+ DndItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DndItemDirective, deps: [{ token: i0.ElementRef }, { token: i1.DragDrop }], target: i0.ɵɵFactoryTarget.Directive });
228
+ DndItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DndItemDirective, selector: "[fdkDndItem], [fd-dnd-item]", inputs: { applyDragItemClass: "applyDragItemClass", containerSelector: "containerSelector", stickInPlace: "stickInPlace", draggable: "draggable", classWhenElementDragged: "classWhenElementDragged" }, outputs: { moved: "moved", released: "released", started: "started" }, host: { properties: { "class.fd-dnd-item": "this.applyDragItemClass" } }, providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }], ngImport: i0 });
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DndItemDirective, decorators: [{
230
+ type: Directive,
231
+ args: [{
232
+ selector: '[fdkDndItem], [fd-dnd-item]',
233
+ providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }]
234
+ }]
235
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DragDrop }]; }, propDecorators: { applyDragItemClass: [{
236
+ type: Input
237
+ }, {
238
+ type: HostBinding,
239
+ args: ['class.fd-dnd-item']
240
+ }], containerSelector: [{
241
+ type: Input
242
+ }], moved: [{
243
+ type: Output
244
+ }], released: [{
245
+ type: Output
246
+ }], started: [{
247
+ type: Output
248
+ }], stickInPlace: [{
249
+ type: Input
250
+ }], draggable: [{
251
+ type: Input
252
+ }], classWhenElementDragged: [{
253
+ type: Input
254
+ }] } });
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RuZC1pdGVtL2RuZC1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQVcsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFNckMsTUFBTSxPQUFPLGdCQUFnQjtJQWtFekIsY0FBYztJQUNkLFlBQW1CLFVBQXNCLEVBQVUsU0FBbUI7UUFBbkQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFsRXRFOzs7V0FHRztRQUdILHVCQUFrQixHQUFHLElBQUksQ0FBQztRQU0xQixvREFBb0Q7UUFFM0MsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRXJELGdEQUFnRDtRQUV2QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3Qyw2REFBNkQ7UUFFcEQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFNUM7OztXQUdHO1FBRUgsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFTckIsaURBQWlEO1FBRWpELDRCQUF1QixHQUFHLGdCQUFnQixDQUFDO1FBRTNDLG9EQUFvRDtRQUNwRCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQU9yQixjQUFjO1FBQ04sZUFB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QUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7aUJBQ2hHO3dIQVFHLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBS2hDLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLRyxLQUFLO3NCQURiLE1BQU07Z0JBS0UsUUFBUTtzQkFEaEIsTUFBTTtnQkFLRSxPQUFPO3NCQURmLE1BQU07Z0JBUVAsWUFBWTtzQkFEWCxLQUFLO2dCQUtGLFNBQVM7c0JBRFosS0FBSztnQkFRTix1QkFBdUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdEcm9wLCBEcmFnUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBEbmRJdGVtLCBFbGVtZW50Q2hvcmQsIEVsZW1lbnRQb3NpdGlvbiwgTGlua1Bvc2l0aW9uIH0gZnJvbSAnLi4vZG5kLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERORF9JVEVNIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRG5kSXRlbV0sIFtmZC1kbmQtaXRlbV0nLFxuICAgIHByb3ZpZGVyczogW0RyYWdEcm9wLCB7IHByb3ZpZGU6IERORF9JVEVNLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEbmRJdGVtRGlyZWN0aXZlKSB9XVxufSlcbmV4cG9ydCBjbGFzcyBEbmRJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgRG5kSXRlbSwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGFwcGx5IFwiZmQtZG5kLWl0ZW1cIiBjbGFzcy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWRuZC1pdGVtJylcbiAgICBhcHBseURyYWdJdGVtQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqIENvbnRhaW5lciBzZWxlY3RvciAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGFpbmVyU2VsZWN0b3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duIHdoZW4gdGhlIGVsZW1lbnQgaXMgbW92ZWQgYnkgMXB4ICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEVsZW1lbnRQb3NpdGlvbj4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24gd2hlbiB0aGUgZWxlbWVudCBpcyByZWxlYXNlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHJlbGVhc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biB3aGVuIHRoZSBlbGVtZW50IGlzIHN0YXJ0ZWQgdG8gYmUgZHJhZ2dlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHN0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiAgRGVmaW5lcyBpZiB0aGUgaXRlbSBpcyBwcmV2ZW50ZWQgZnJvbSBiZWluZyBtb3ZlZCBieSBvdGhlciBlbGVtZW50cy5cbiAgICAgKiBTbyBub3RoaW5nIGNhbiBiZSBwbGFjZWQganVzdCBiZWZvcmUgYW5kIGp1c3QgYWZ0ZXIgaXRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0aWNrSW5QbGFjZSA9IGZhbHNlO1xuXG4gICAgLyoqIERlZmluZXMgaWYgZWxlbWVudCBpcyBkcmFnZ2FibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkcmFnZ2FibGUoZHJhZ2dhYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2RyYWdnYWJsZSA9IGRyYWdnYWJsZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VDREtEcmFnU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQ2xhc3MgYWRkZWQgdG8gZWxlbWVudCwgd2hlbiBpdCdzIGRyYWdnZWQuICovXG4gICAgQElucHV0KClcbiAgICBjbGFzc1doZW5FbGVtZW50RHJhZ2dlZCA9ICdmZC1kbmQtb24tZHJhZyc7XG5cbiAgICAvKiogRGVmaW5lcyBpZiBldmVyeSBlbGVtZW50IGluIGxpc3QgaXMgZHJhZ2dhYmxlICovXG4gICAgbGlzdERyYWdnYWJsZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIERyYWcgcmVmZXJlbmNlLCBvYmplY3QgY3JlYXRlZCBmcm9tIERORCBDREsgU2VydmljZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2RyYWdSZWY6IERyYWdSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdnYWJsZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXBsYWNlSW5kaWNhdG9yOiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9kcmFnRHJvcDogRHJhZ0Ryb3ApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldEVsZW1lbnRDb29yZGluYXRlcyhpc0JlZm9yZTogYm9vbGVhbik6IEVsZW1lbnRDaG9yZCB7XG4gICAgICAgIC8qKiBUYWtlcyBkaXN0YW5jZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2Ygd2luZG93IHBhZ2UgKi9cbiAgICAgICAgY29uc3QgcmVjdDogRE9NUmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiBMaW5rUG9zaXRpb24gPSBpc0JlZm9yZSA/ICdiZWZvcmUnIDogJ2FmdGVyJztcblxuICAgICAgICAvKiogVmVydGljYWxseSBkaXN0YW5jZSBpcyBjb3VudGVkIGJ5IGRpc3RhbmNlIGZyb20gdG9wIG9mIHRoZSBzaWRlICsgaGFsZiBvZiB0aGUgZWxlbWVudCBoZWlnaHQgKi9cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHJlY3QubGVmdCxcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgeTogcmVjdC50b3AsXG4gICAgICAgICAgICBzdGlja1RvUG9zaXRpb246IHRoaXMuc3RpY2tJblBsYWNlLFxuICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENES0RyYWcoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuRWxlbWVudEV2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2RrTW92ZShwb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW92ZWQuZW1pdChwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNka0RyYWdSZWxlYXNlZCgpOiB2b2lkIHtcbiAgICAgICAgLyoqIFJlbW92ZSBjbGFzcyB3aGljaCBpcyBhZGRlZCwgd2hlbiBlbGVtZW50IGlzIGRyYWdnZWQgKi9cbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNsYXNzV2hlbkVsZW1lbnREcmFnZ2VkKTtcbiAgICAgICAgdGhpcy5yZWxlYXNlZC5lbWl0KCk7XG5cbiAgICAgICAgLyoqIFJlc2V0cyB0aGUgcG9zaXRpb24gb2YgZWxlbWVudC4gKi9cbiAgICAgICAgdGhpcy5fZHJhZ1JlZi5yZXNldCgpO1xuXG4gICAgICAgIC8qKiBSZW1vdmVzIHBsYWNlaG9sZGVyIGVsZW1lbnQgKi9cbiAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DZGtEcmFnU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIC8qKiBBZGRzIGNsYXNzICovXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc1doZW5FbGVtZW50RHJhZ2dlZCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXJ0ZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlUGxhY2Vob2xkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQgJiYgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIC8vIElFMTEgd29ya2Fyb3VuZFxuICAgICAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUxpbmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9saW5lRWxlbWVudCAmJiB0aGlzLl9saW5lRWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAvLyBJRTExIHdvcmthcm91bmRcbiAgICAgICAgICAgIHRoaXMuX2xpbmVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fbGluZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fbGluZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVSZXBsYWNlSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcmVwbGFjZUluZGljYXRvciAmJiB0aGlzLl9yZXBsYWNlSW5kaWNhdG9yLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIC8vIElFMTEgd29ya2Fyb3VuZFxuICAgICAgICAgICAgdGhpcy5fcmVwbGFjZUluZGljYXRvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IpO1xuICAgICAgICAgICAgdGhpcy5fcmVwbGFjZUluZGljYXRvciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcbiAgICAgICAgdGhpcy5fcmVwbGFjZUluZGljYXRvci5jbGFzc0xpc3QuYWRkKCdmZC1yZXBsYWNlLWluZGljYXRvcicpO1xuXG4gICAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXJTZWxlY3Rvcik7XG4gICAgICAgICAgICBpZiAobmV3Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyID0gbmV3Q29udGFpbmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY3JlYXRlTGluZShwb3NpdGlvbjogTGlua1Bvc2l0aW9uLCBncmlkTW9kZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAvKiogQ3JlYXRpbmcgb2YgbGluZSBlbGVtZW50ICovXG4gICAgICAgIHRoaXMuX2xpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuX2xpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Ryb3AtYXJlYV9fbGluZScpO1xuXG4gICAgICAgIGlmIChncmlkTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fbGluZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZHJvcC1hcmVhX19saW5lLS12ZXJ0aWNhbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbGluZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZHJvcC1hcmVhX19saW5lLS1ob3Jpem9udGFsJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAnYWZ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLl9saW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhZnRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ2JlZm9yZScpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2JlZm9yZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIFB1dHRpbmcgZWxlbWVudCB0byB0aGUgY29udGFpbmVyICovXG4gICAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb250YWluZXJTZWxlY3Rvcik7XG4gICAgICAgICAgICBpZiAobmV3Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyID0gbmV3Q29udGFpbmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2xpbmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoYW5nZUNES0RyYWdTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RyYWdSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX2RyYWdSZWYuZGlzYWJsZWQgPSAhKHRoaXMuX2RyYWdnYWJsZSAmJiB0aGlzLmxpc3REcmFnZ2FibGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGNyZWF0ZVBsYWNlaG9sZGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgLyoqIENsb25pbmcgY29udGFpbmVyIGVsZW1lbnQgKi9cbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50ID0gcGxhY2Vob2xkZXI7XG5cbiAgICAgICAgcGxhY2Vob2xkZXIuY2xhc3NMaXN0LmFkZCgnZmQtZG5kLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIHRoaXMuX3NldFBsYWNlaG9sZGVyU3R5bGVzKCk7XG5cbiAgICAgICAgLyoqIEluY2x1ZGluZyBlbGVtZW50IHRvIHRoZSBjb250YWluZXJcbiAgICAgICAgICogIElFMTEgZXF1aXZhbGVudCB0byBgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYWZ0ZXIoY2xvbmUpO2BcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3BsYWNlQWZ0ZXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHBsYWNlaG9sZGVyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFBsYWNlaG9sZGVyU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLl9nZXRPZmZzZXRUb1BhcmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKCFvZmZzZXQgfHwgIXRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnN0eWxlLnRvcCA9IG9mZnNldC55ICsgJ3B4JztcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnN0eWxlLmxlZnQgPSBvZmZzZXQueCArICdweCc7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudC5zdHlsZS56SW5kZXggPSAnMCc7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJzAuMyc7XG5cbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAncHgnO1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE9mZnNldFRvUGFyZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudFRvcCA9IHBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICBjb25zdCBwYXJlbnRMZWZ0ID0gcGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBNYXRoLmFicyhlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSBwYXJlbnRMZWZ0KSxcbiAgICAgICAgICAgIHk6IE1hdGguYWJzKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gcGFyZW50VG9wKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q0RLRHJhZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHJhZ1JlZiA9IHRoaXMuX2RyYWdEcm9wLmNyZWF0ZURyYWcodGhpcy5lbGVtZW50UmVmKTtcbiAgICAgICAgdGhpcy5fZHJhZ1JlZi5kaXNhYmxlZCA9ICF0aGlzLl9kcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX2RyYWdSZWYubW92ZWQuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNka01vdmUoZXZlbnQucG9pbnRlclBvc2l0aW9uKSkpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9kcmFnUmVmLnJlbGVhc2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2RrRHJhZ1JlbGVhc2VkKCkpKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fZHJhZ1JlZi5zdGFydGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2RrRHJhZ1N0YXJ0KCkpKTtcbiAgICB9XG5cbiAgICAvKiogSUUxMSBlcXVpdmFsZW50IG9mIE5vZGUuYWZ0ZXIoKSBNZXRob2QgKi9cbiAgICBwcml2YXRlIF9wbGFjZUFmdGVyKGVsZW1lbnQ6IEVsZW1lbnQsIGNsb25lTm9kZTogTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkb2NGcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICBkb2NGcmFnLmFwcGVuZENoaWxkKGNsb25lTm9kZSk7XG4gICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGRvY0ZyYWcsIGVsZW1lbnQubmV4dFNpYmxpbmcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRWxlbWVudEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLnJlbGVhc2VkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIC8vIHBvc3Rwb25lIGJsdXJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXkoMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,88 @@
1
+ import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
2
+ import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';
3
+ import { ChangeDetectorRef, Directive, Input, Optional } from '@angular/core';
4
+ import { Subject } from 'rxjs';
5
+ import { KeyUtil } from '../../functions';
6
+ import { RtlService } from '../../services/rtl.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../services/rtl.service";
9
+ /**
10
+ * This directive is used to provide drag & drop with keyboard support.
11
+ * It should be used together with directive fdDndKeyboardItem.
12
+ */
13
+ export class DndKeyboardGroupDirective {
14
+ /** @hidden */
15
+ constructor(_cdr, _rtlService) {
16
+ this._cdr = _cdr;
17
+ this._rtlService = _rtlService;
18
+ /** Whether to disable drag & drop */
19
+ this.disableKeyboardDragDrop = false;
20
+ /** Used to apply indexes when moving between groups */
21
+ this.orientation = 'vertical';
22
+ /** @hidden */
23
+ this._onDndItemFocus$ = new Subject();
24
+ /** Custom function to call when moving item inside the group */
25
+ this.customMoveFn = (group, fromIndex, toIndex) => moveItemInArray(group, fromIndex, toIndex);
26
+ /** Custom function to call when moving item between groups */
27
+ this.customTransferFn = (group, nextGroup, fromIndex, toIndex) => transferArrayItem(group, nextGroup, fromIndex, toIndex);
28
+ }
29
+ /** Process drag & drop */
30
+ processDragDrop(event, itemIndex, groupIndex) {
31
+ if (this.disableKeyboardDragDrop || !event.altKey) {
32
+ return;
33
+ }
34
+ const isRtl = this._rtlService.rtl.value;
35
+ const group = this.groups[groupIndex];
36
+ const indexInNextGroup = this.orientation === 'vertical' ? 0 : itemIndex;
37
+ const nextGroupExists = this.groups.length > groupIndex + 1;
38
+ const prevGroupExists = !!groupIndex;
39
+ if (KeyUtil.isKeyCode(event, RIGHT_ARROW) && (isRtl ? prevGroupExists : nextGroupExists)) {
40
+ event.preventDefault();
41
+ const nextGroupIndex = groupIndex + (isRtl ? -1 : 1);
42
+ const nextGroup = this.groups[nextGroupIndex];
43
+ this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);
44
+ this._focusDndItem(nextGroupIndex, indexInNextGroup);
45
+ }
46
+ else if (KeyUtil.isKeyCode(event, LEFT_ARROW) && (isRtl ? nextGroupExists : prevGroupExists)) {
47
+ event.preventDefault();
48
+ const nextGroupIndex = groupIndex + (isRtl ? 1 : -1);
49
+ const nextGroup = this.groups[nextGroupIndex];
50
+ this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);
51
+ this._focusDndItem(nextGroupIndex, indexInNextGroup);
52
+ }
53
+ else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {
54
+ event.preventDefault();
55
+ this.customMoveFn(group, itemIndex, itemIndex + 1);
56
+ this._focusDndItem(groupIndex, itemIndex + 1);
57
+ }
58
+ else if (KeyUtil.isKeyCode(event, UP_ARROW)) {
59
+ event.preventDefault();
60
+ this.customMoveFn(group, itemIndex, itemIndex - 1);
61
+ this._focusDndItem(groupIndex, itemIndex - 1);
62
+ }
63
+ }
64
+ /** @hidden Focus after moving elements with keyboard */
65
+ _focusDndItem(groupIndex, itemIndex) {
66
+ this._cdr.detectChanges();
67
+ this._onDndItemFocus$.next([groupIndex, itemIndex]);
68
+ }
69
+ }
70
+ DndKeyboardGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DndKeyboardGroupDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
71
+ DndKeyboardGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DndKeyboardGroupDirective, selector: "[fdkDndKeyboardGroup], [fdDndKeyboardGroup]", inputs: { groups: "groups", disableKeyboardDragDrop: "disableKeyboardDragDrop", orientation: "orientation", customMoveFn: "customMoveFn", customTransferFn: "customTransferFn" }, ngImport: i0 });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DndKeyboardGroupDirective, decorators: [{
73
+ type: Directive,
74
+ args: [{ selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]' }]
75
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{
76
+ type: Optional
77
+ }] }]; }, propDecorators: { groups: [{
78
+ type: Input
79
+ }], disableKeyboardDragDrop: [{
80
+ type: Input
81
+ }], orientation: [{
82
+ type: Input
83
+ }], customMoveFn: [{
84
+ type: Input
85
+ }], customTransferFn: [{
86
+ type: Input
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWtleWJvYXJkLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZHJhZy1hbmQtZHJvcC9kbmQta2V5Ym9hcmQtZ3JvdXAvZG5kLWtleWJvYXJkLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUV4RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBMEJsQyxjQUFjO0lBQ2QsWUFBNkIsSUFBdUIsRUFBK0IsV0FBdUI7UUFBN0UsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBK0IsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF0QjFHLHFDQUFxQztRQUVyQyw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFFaEMsdURBQXVEO1FBRXZELGdCQUFXLEdBQThCLFVBQVUsQ0FBQztRQUVwRCxjQUFjO1FBQ2QscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUFFbkQsZ0VBQWdFO1FBRWhFLGlCQUFZLEdBQUcsQ0FBQyxLQUFZLEVBQUUsU0FBaUIsRUFBRSxPQUFlLEVBQVEsRUFBRSxDQUN0RSxlQUFlLENBQUMsS0FBSyxF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QWMsRUFBRSxDQUFDO1lBRXZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQztJQUVELHdEQUF3RDtJQUNoRCxhQUFhLENBQUMsVUFBa0IsRUFBRSxTQUFpQjtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDOztzSEE3RVEseUJBQXlCOzBHQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSw2Q0FBNkMsRUFBRTs7MEJBNEJYLFFBQVE7NENBeEIvRCxNQUFNO3NCQURMLEtBQUs7Z0JBS04sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBTU4sZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ydGwuc2VydmljZSc7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCB0byBwcm92aWRlIGRyYWcgJiBkcm9wIHdpdGgga2V5Ym9hcmQgc3VwcG9ydC5cbiAqIEl0IHNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlyZWN0aXZlIGZkRG5kS2V5Ym9hcmRJdGVtLlxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZmRrRG5kS2V5Ym9hcmRHcm91cF0sIFtmZERuZEtleWJvYXJkR3JvdXBdJyB9KVxuZXhwb3J0IGNsYXNzIERuZEtleWJvYXJkR3JvdXBEaXJlY3RpdmUge1xuICAgIC8qKiBHcm91cCBvZiBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBzOiBhbnlbXVtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzYWJsZSBkcmFnICYgZHJvcCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZUtleWJvYXJkRHJhZ0Ryb3AgPSBmYWxzZTtcblxuICAgIC8qKiBVc2VkIHRvIGFwcGx5IGluZGV4ZXMgd2hlbiBtb3ZpbmcgYmV0d2VlbiBncm91cHMgKi9cbiAgICBASW5wdXQoKVxuICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ3ZlcnRpY2FsJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRG5kSXRlbUZvY3VzJCA9IG5ldyBTdWJqZWN0PFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgICAvKiogQ3VzdG9tIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBtb3ZpbmcgaXRlbSBpbnNpZGUgdGhlIGdyb3VwICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IGFueVtdLCBmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyKTogdm9pZCA9PlxuICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZ3JvdXAsIGZyb21JbmRleCwgdG9JbmRleCk7XG5cbiAgICAvKiogQ3VzdG9tIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBtb3ZpbmcgaXRlbSBiZXR3ZWVuIGdyb3VwcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tVHJhbnNmZXJGbiA9IChncm91cDogYW55W10sIG5leHRHcm91cDogYW55W10sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiB2b2lkID0+XG4gICAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKGdyb3VwLCBuZXh0R3JvdXAsIGZyb21JbmRleCwgdG9JbmRleCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UpIHt9XG5cbiAgICAvKiogUHJvY2VzcyBkcmFnICYgZHJvcCAqL1xuICAgIHByb2Nlc3NEcmFnRHJvcChldmVudDogS2V5Ym9hcmRFdmVudCwgaXRlbUluZGV4OiBudW1iZXIsIGdyb3VwSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlS2V5Ym9hcmREcmFnRHJvcCB8fCAhZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1J0bCA9IHRoaXMuX3J0bFNlcnZpY2UucnRsLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cHNbZ3JvdXBJbmRleF07XG4gICAgICAgIGNvbnN0IGluZGV4SW5OZXh0R3JvdXAgPSB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gMCA6IGl0ZW1JbmRleDtcblxuICAgICAgICBjb25zdCBuZXh0R3JvdXBFeGlzdHMgPSB0aGlzLmdyb3Vwcy5sZW5ndGggPiBncm91cEluZGV4ICsgMTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwRXhpc3RzID0gISFncm91cEluZGV4O1xuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpICYmIChpc1J0bCA/IHByZXZHcm91cEV4aXN0cyA6IG5leHRHcm91cEV4aXN0cykpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cEluZGV4ID0gZ3JvdXBJbmRleCArIChpc1J0bCA/IC0xIDogMSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0R3JvdXAgPSB0aGlzLmdyb3Vwc1tuZXh0R3JvdXBJbmRleF07XG5cbiAgICAgICAgICAgIHRoaXMuY3VzdG9tVHJhbnNmZXJGbihncm91cCwgbmV4dEdyb3VwLCBpdGVtSW5kZXgsIGluZGV4SW5OZXh0R3JvdXApO1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNEbmRJdGVtKG5leHRHcm91cEluZGV4LCBpbmRleEluTmV4dEdyb3VwKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgJiYgKGlzUnRsID8gbmV4dEdyb3VwRXhpc3RzIDogcHJldkdyb3VwRXhpc3RzKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwSW5kZXggPSBncm91cEluZGV4ICsgKGlzUnRsID8gMSA6IC0xKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cCA9IHRoaXMuZ3JvdXBzW25leHRHcm91cEluZGV4XTtcblxuICAgICAgICAgICAgdGhpcy5jdXN0b21UcmFuc2ZlckZuKGdyb3VwLCBuZXh0R3JvdXAsIGl0ZW1JbmRleCwgaW5kZXhJbk5leHRHcm91cCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0RuZEl0ZW0obmV4dEdyb3VwSW5kZXgsIGluZGV4SW5OZXh0R3JvdXApO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5jdXN0b21Nb3ZlRm4oZ3JvdXAsIGl0ZW1JbmRleCwgaXRlbUluZGV4ICsgMSk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0RuZEl0ZW0oZ3JvdXBJbmRleCwgaXRlbUluZGV4ICsgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5jdXN0b21Nb3ZlRm4oZ3JvdXAsIGl0ZW1JbmRleCwgaXRlbUluZGV4IC0gMSk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0RuZEl0ZW0oZ3JvdXBJbmRleCwgaXRlbUluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1cyBhZnRlciBtb3ZpbmcgZWxlbWVudHMgd2l0aCBrZXlib2FyZCAqL1xuICAgIHByaXZhdGUgX2ZvY3VzRG5kSXRlbShncm91cEluZGV4OiBudW1iZXIsIGl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fb25EbmRJdGVtRm9jdXMkLm5leHQoW2dyb3VwSW5kZXgsIGl0ZW1JbmRleF0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { Directive, ElementRef, HostListener, Input } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { DndKeyboardGroupDirective } from '../dnd-keyboard-group/dnd-keyboard-group.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../dnd-keyboard-group/dnd-keyboard-group.directive";
6
+ /**
7
+ * This directive is used to provide drag & drop with keyboard support.
8
+ * It should be used together with directive fdDndKeyboardGroup.
9
+ * We are using _groups from fdDndKeyboardGroup and adding a possibility to move cards.
10
+ * Please see example below:
11
+ * @Component({
12
+ * selector: 'cdk-drag-drop-example',
13
+ * template: `<div
14
+ * cdkDragListGroup
15
+ * fdDndKeyboardGroup
16
+ * [groups]="groups"
17
+ * >
18
+ * <div
19
+ * *ngFor="let group of groups; let groupIndex = index"
20
+ * cdkDragList
21
+ * >
22
+ * Group #{{ groupIndex }}
23
+ * <div
24
+ * *ngFor="let item of group; let index = index"
25
+ * cdkDrag
26
+ * fdDndKeyboardItem
27
+ * [itemIndex]="index"
28
+ * [groupIndex]="groupIndex"
29
+ * [dndKeyboardDisabled]="flag for disable/enable keyboard navigation if needed"
30
+ * tabindex="0"
31
+ * >
32
+ * Item #{{ item }}
33
+ * </div>
34
+ * </div>
35
+ * </div>`,
36
+ * })
37
+ * export class CdkDragDropExample {
38
+ * groups = [
39
+ * [1, 2, 3],
40
+ * [4, 5, 6],
41
+ * ];
42
+ * }
43
+ */
44
+ export class DndKeyboardItemDirective {
45
+ /** @hidden */
46
+ constructor(_dndGroup, _elementRef) {
47
+ this._dndGroup = _dndGroup;
48
+ this._elementRef = _elementRef;
49
+ /** @hidden */
50
+ this._onDestroy$ = new Subject();
51
+ }
52
+ /** @hidden */
53
+ ngOnInit() {
54
+ this._dndGroup._onDndItemFocus$.subscribe(([groupIndex, itemIndex]) => {
55
+ if (this.groupIndex === groupIndex && this.itemIndex === itemIndex) {
56
+ this._elementRef.nativeElement.focus();
57
+ }
58
+ });
59
+ }
60
+ /** @hidden */
61
+ ngOnDestroy() {
62
+ this._onDestroy$.next();
63
+ this._onDestroy$.complete();
64
+ }
65
+ /** @hidden */
66
+ _onKeyDown(event) {
67
+ this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);
68
+ }
69
+ }
70
+ DndKeyboardItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DndKeyboardItemDirective, deps: [{ token: i1.DndKeyboardGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
71
+ DndKeyboardItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DndKeyboardItemDirective, selector: "[fdkDndKeyboardItem], [fdDndKeyboardItem]", inputs: { itemIndex: "itemIndex", groupIndex: "groupIndex" }, host: { listeners: { "keydown": "_onKeyDown($event)" } }, ngImport: i0 });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DndKeyboardItemDirective, decorators: [{
73
+ type: Directive,
74
+ args: [{ selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]' }]
75
+ }], ctorParameters: function () { return [{ type: i1.DndKeyboardGroupDirective }, { type: i0.ElementRef }]; }, propDecorators: { itemIndex: [{
76
+ type: Input
77
+ }], groupIndex: [{
78
+ type: Input
79
+ }], _onKeyDown: [{
80
+ type: HostListener,
81
+ args: ['keydown', ['$event']]
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWtleWJvYXJkLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RuZC1rZXlib2FyZC1pdGVtL2RuZC1rZXlib2FyZC1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7QUFFL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBWWpDLGNBQWM7SUFDZCxZQUE2QixTQUFvQyxFQUFtQixXQUF1QjtRQUE5RSxjQUFTLEdBQVQsU0FBUyxDQUEyQjtRQUFtQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUozRyxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRzJELENBQUM7SUFFL0csY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDbEUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDMUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztJQUVkLFVBQVUsQ0FBQyxLQUFvQjtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7cUhBbENRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMkNBQTJDLEVBQUU7eUlBSWhFLFNBQVM7c0JBRFIsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBMEJOLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERuZEtleWJvYXJkR3JvdXBEaXJlY3RpdmUgfSBmcm9tICcuLi9kbmQta2V5Ym9hcmQtZ3JvdXAvZG5kLWtleWJvYXJkLWdyb3VwLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCB0byBwcm92aWRlIGRyYWcgJiBkcm9wIHdpdGgga2V5Ym9hcmQgc3VwcG9ydC5cbiAqIEl0IHNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlyZWN0aXZlIGZkRG5kS2V5Ym9hcmRHcm91cC5cbiAqIFdlIGFyZSB1c2luZyBfZ3JvdXBzIGZyb20gZmREbmRLZXlib2FyZEdyb3VwIGFuZCBhZGRpbmcgYSBwb3NzaWJpbGl0eSB0byBtb3ZlIGNhcmRzLlxuICogUGxlYXNlIHNlZSBleGFtcGxlIGJlbG93OlxuICogQENvbXBvbmVudCh7XG4gKiBzZWxlY3RvcjogJ2Nkay1kcmFnLWRyb3AtZXhhbXBsZScsXG4gKiB0ZW1wbGF0ZTogYDxkaXZcbiAqICAgICAgICAgICAgICAgY2RrRHJhZ0xpc3RHcm91cFxuICogICAgICAgICAgICAgICBmZERuZEtleWJvYXJkR3JvdXBcbiAqICAgICAgICAgICAgICAgW2dyb3Vwc109XCJncm91cHNcIlxuICogICAgICAgICAgID5cbiAqICAgICAgICAgICAgICAgPGRpdlxuICogICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwczsgbGV0IGdyb3VwSW5kZXggPSBpbmRleFwiXG4gKiAgICAgICAgICAgICAgICAgICBjZGtEcmFnTGlzdFxuICogICAgICAgICAgICAgICA+XG4gKiAgICAgICAgICAgICAgICAgICBHcm91cCAje3sgZ3JvdXBJbmRleCB9fVxuICogICAgICAgICAgICAgICAgICAgPGRpdlxuICogICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gKiAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICogICAgICAgICAgICAgICAgICAgICAgIGZkRG5kS2V5Ym9hcmRJdGVtXG4gKiAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1JbmRleF09XCJpbmRleFwiXG4gKiAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwSW5kZXhdPVwiZ3JvdXBJbmRleFwiXG4gKiAgICAgICAgICAgICAgICAgICAgICAgW2RuZEtleWJvYXJkRGlzYWJsZWRdPVwiZmxhZyBmb3IgZGlzYWJsZS9lbmFibGUga2V5Ym9hcmQgbmF2aWdhdGlvbiBpZiBuZWVkZWRcIlxuICogICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gKiAgICAgICAgICAgICAgICAgICA+XG4gKiAgICAgICAgICAgICAgICAgICAgICAgSXRlbSAje3sgaXRlbSB9fVxuICogICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gKiAgICAgICAgICAgICAgIDwvZGl2PlxuICogICAgICAgICAgIDwvZGl2PmAsXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIENka0RyYWdEcm9wRXhhbXBsZSB7XG4gKiAgIGdyb3VwcyA9IFtcbiAqICAgICAgICBbMSwgMiwgM10sXG4gKiAgICAgICAgWzQsIDUsIDZdLFxuICogICAgICBdO1xuICogICB9XG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZGtEbmRLZXlib2FyZEl0ZW1dLCBbZmREbmRLZXlib2FyZEl0ZW1dJyB9KVxuZXhwb3J0IGNsYXNzIERuZEtleWJvYXJkSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogaXRlbSBpbmRleCBpbiBncm91cChjb2x1bW4pICovXG4gICAgQElucHV0KClcbiAgICBpdGVtSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBncm91cChjb2x1bW4pIGluZGV4ICovXG4gICAgQElucHV0KClcbiAgICBncm91cEluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9kbmRHcm91cDogRG5kS2V5Ym9hcmRHcm91cERpcmVjdGl2ZSwgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RuZEdyb3VwLl9vbkRuZEl0ZW1Gb2N1cyQuc3Vic2NyaWJlKChbZ3JvdXBJbmRleCwgaXRlbUluZGV4XSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBJbmRleCA9PT0gZ3JvdXBJbmRleCAmJiB0aGlzLml0ZW1JbmRleCA9PT0gaXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RuZEdyb3VwLnByb2Nlc3NEcmFnRHJvcChldmVudCwgdGhpcy5pdGVtSW5kZXgsIHRoaXMuZ3JvdXBJbmRleCk7XG4gICAgfVxufVxuIl19