@radix-ng/primitives 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/avatar/src/avatar-fallback.directive.d.ts +1 -1
  2. package/compodoc/documentation.json +14105 -11035
  3. package/core/index.d.ts +3 -2
  4. package/core/src/positioning/constants.d.ts +3 -0
  5. package/core/src/positioning/types.d.ts +42 -0
  6. package/{popover/src/popover.utils.d.ts → core/src/positioning/utils.d.ts} +4 -4
  7. package/dialog/src/dialog-trigger.directive.d.ts +12 -0
  8. package/fesm2022/radix-ng-primitives-accordion.mjs +19 -19
  9. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +22 -22
  11. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +3 -3
  13. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-avatar.mjs +17 -17
  15. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-checkbox.mjs +16 -16
  17. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collapsible.mjs +9 -9
  19. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-context-menu.mjs +34 -34
  21. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-core.mjs +224 -236
  23. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-dialog.mjs +31 -26
  25. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +34 -34
  27. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-label.mjs +3 -3
  29. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-menu.mjs +22 -22
  31. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-menubar.mjs +31 -31
  33. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-popover.mjs +75 -277
  35. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-progress.mjs +10 -10
  37. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-radio.mjs +12 -12
  39. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-roving-focus.mjs +6 -6
  41. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-select.mjs +34 -35
  43. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-separator.mjs +3 -3
  45. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-slider.mjs +31 -34
  47. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-switch.mjs +18 -15
  49. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-tabs.mjs +16 -16
  51. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-toggle-group.mjs +9 -9
  53. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-toggle.mjs +6 -6
  55. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-tooltip.mjs +1023 -511
  57. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +9 -9
  59. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  60. package/package.json +3 -57
  61. package/popover/index.d.ts +0 -1
  62. package/popover/src/popover-arrow.directive.d.ts +6 -6
  63. package/popover/src/popover-content.directive.d.ts +9 -8
  64. package/popover/src/popover-root.directive.d.ts +9 -8
  65. package/popover/src/popover.types.d.ts +0 -31
  66. package/popover/src/utils/cdk-event.service.d.ts +1 -0
  67. package/switch/src/switch-root.directive.d.ts +4 -1
  68. package/tooltip/README.md +2 -0
  69. package/tooltip/index.d.ts +9 -6
  70. package/tooltip/src/tooltip-anchor.directive.d.ts +28 -0
  71. package/tooltip/src/tooltip-anchor.token.d.ts +3 -0
  72. package/tooltip/src/tooltip-arrow.directive.d.ts +23 -8
  73. package/tooltip/src/tooltip-close.directive.d.ts +18 -0
  74. package/tooltip/src/tooltip-close.token.d.ts +3 -0
  75. package/tooltip/src/tooltip-content-attributes.component.d.ts +17 -0
  76. package/tooltip/src/tooltip-content-attributes.token.d.ts +3 -0
  77. package/tooltip/src/tooltip-content.directive.d.ts +88 -20
  78. package/tooltip/src/tooltip-root.directive.d.ts +122 -57
  79. package/tooltip/src/tooltip-root.inject.d.ts +3 -0
  80. package/tooltip/src/tooltip-trigger.directive.d.ts +11 -11
  81. package/tooltip/src/tooltip.types.d.ts +16 -16
  82. package/tooltip/src/utils/cdk-event.service.d.ts +30 -0
  83. package/tooltip/src/utils/constants.d.ts +1 -0
  84. package/tooltip/src/utils/types.d.ts +7 -0
  85. package/core/src/control-value-accessor/index.d.ts +0 -75
  86. package/core/src/create-inject-context/assert-injector.d.ts +0 -51
  87. package/core/src/create-inject-context/index.d.ts +0 -68
  88. package/core/src/types.d.ts +0 -23
  89. package/esm2022/accordion/index.mjs +0 -40
  90. package/esm2022/accordion/radix-ng-primitives-accordion.mjs +0 -5
  91. package/esm2022/accordion/src/accordion-content.directive.mjs +0 -42
  92. package/esm2022/accordion/src/accordion-header.directive.mjs +0 -23
  93. package/esm2022/accordion/src/accordion-item.directive.mjs +0 -196
  94. package/esm2022/accordion/src/accordion-root.directive.mjs +0 -200
  95. package/esm2022/accordion/src/accordion-trigger.directive.mjs +0 -42
  96. package/esm2022/alert-dialog/index.mjs +0 -41
  97. package/esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs +0 -5
  98. package/esm2022/alert-dialog/src/alert-dialog-cancel.directive.mjs +0 -24
  99. package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +0 -34
  100. package/esm2022/alert-dialog/src/alert-dialog-root.directive.mjs +0 -24
  101. package/esm2022/alert-dialog/src/alert-dialog-title.directive.mjs +0 -14
  102. package/esm2022/alert-dialog/src/alert-dialog-trigger.directive.mjs +0 -24
  103. package/esm2022/alert-dialog/src/alert-dialog.service.mjs +0 -46
  104. package/esm2022/aspect-ratio/index.mjs +0 -2
  105. package/esm2022/aspect-ratio/radix-ng-primitives-aspect-ratio.mjs +0 -5
  106. package/esm2022/aspect-ratio/src/aspect-ratio.directive.mjs +0 -57
  107. package/esm2022/avatar/index.mjs +0 -31
  108. package/esm2022/avatar/radix-ng-primitives-avatar.mjs +0 -5
  109. package/esm2022/avatar/src/avatar-fallback.directive.mjs +0 -67
  110. package/esm2022/avatar/src/avatar-image.directive.mjs +0 -65
  111. package/esm2022/avatar/src/avatar-root.directive.mjs +0 -26
  112. package/esm2022/avatar/src/avatar.config.mjs +0 -17
  113. package/esm2022/checkbox/index.mjs +0 -36
  114. package/esm2022/checkbox/radix-ng-primitives-checkbox.mjs +0 -5
  115. package/esm2022/checkbox/src/checkbox-button.directive.mjs +0 -33
  116. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +0 -24
  117. package/esm2022/checkbox/src/checkbox-input.directive.mjs +0 -44
  118. package/esm2022/checkbox/src/checkbox.directive.mjs +0 -141
  119. package/esm2022/checkbox/src/checkbox.token.mjs +0 -6
  120. package/esm2022/collapsible/index.mjs +0 -4
  121. package/esm2022/collapsible/radix-ng-primitives-collapsible.mjs +0 -5
  122. package/esm2022/collapsible/src/collapsible-content.directive.mjs +0 -42
  123. package/esm2022/collapsible/src/collapsible-content.token.mjs +0 -3
  124. package/esm2022/collapsible/src/collapsible-root.directive.mjs +0 -127
  125. package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +0 -49
  126. package/esm2022/context-menu/index.mjs +0 -65
  127. package/esm2022/context-menu/radix-ng-primitives-context-menu.mjs +0 -5
  128. package/esm2022/context-menu/src/context-menu-content.directive.mjs +0 -56
  129. package/esm2022/context-menu/src/context-menu-item-checkbox.directive.mjs +0 -39
  130. package/esm2022/context-menu/src/context-menu-item-indicator.directive.mjs +0 -22
  131. package/esm2022/context-menu/src/context-menu-item-radio-group.directive.mjs +0 -37
  132. package/esm2022/context-menu/src/context-menu-item-radio.directive.mjs +0 -67
  133. package/esm2022/context-menu/src/context-menu-item-selectable.mjs +0 -31
  134. package/esm2022/context-menu/src/context-menu-item.directive.mjs +0 -70
  135. package/esm2022/context-menu/src/context-menu-label.directive.mjs +0 -14
  136. package/esm2022/context-menu/src/context-menu-separator.directive.mjs +0 -21
  137. package/esm2022/context-menu/src/context-menu-trigger.directive.mjs +0 -92
  138. package/esm2022/core/index.mjs +0 -11
  139. package/esm2022/core/radix-ng-primitives-core.mjs +0 -5
  140. package/esm2022/core/src/accessor/provide-value-accessor.mjs +0 -19
  141. package/esm2022/core/src/auto-focus.directive.mjs +0 -80
  142. package/esm2022/core/src/control-value-accessor/index.mjs +0 -103
  143. package/esm2022/core/src/create-inject-context/assert-injector.mjs +0 -15
  144. package/esm2022/core/src/create-inject-context/index.mjs +0 -116
  145. package/esm2022/core/src/document.mjs +0 -6
  146. package/esm2022/core/src/id-generator.mjs +0 -43
  147. package/esm2022/core/src/inject-ng-control.mjs +0 -17
  148. package/esm2022/core/src/is-client.mjs +0 -6
  149. package/esm2022/core/src/is-inside-form.mjs +0 -7
  150. package/esm2022/core/src/types.mjs +0 -2
  151. package/esm2022/core/src/window.mjs +0 -15
  152. package/esm2022/dialog/index.mjs +0 -50
  153. package/esm2022/dialog/radix-ng-primitives-dialog.mjs +0 -5
  154. package/esm2022/dialog/src/dialog-close.directive.mjs +0 -25
  155. package/esm2022/dialog/src/dialog-content.directive.mjs +0 -46
  156. package/esm2022/dialog/src/dialog-description.directive.mjs +0 -14
  157. package/esm2022/dialog/src/dialog-dismiss.directive.mjs +0 -25
  158. package/esm2022/dialog/src/dialog-ref.mjs +0 -46
  159. package/esm2022/dialog/src/dialog-title.directive.mjs +0 -14
  160. package/esm2022/dialog/src/dialog-trigger.directive.mjs +0 -54
  161. package/esm2022/dialog/src/dialog.config.mjs +0 -6
  162. package/esm2022/dialog/src/dialog.injectors.mjs +0 -10
  163. package/esm2022/dialog/src/dialog.providers.mjs +0 -26
  164. package/esm2022/dialog/src/dialog.service.mjs +0 -96
  165. package/esm2022/dropdown-menu/index.mjs +0 -68
  166. package/esm2022/dropdown-menu/radix-ng-primitives-dropdown-menu.mjs +0 -5
  167. package/esm2022/dropdown-menu/src/dropdown-menu-content.directive.mjs +0 -56
  168. package/esm2022/dropdown-menu/src/dropdown-menu-item-checkbox.directive.mjs +0 -39
  169. package/esm2022/dropdown-menu/src/dropdown-menu-item-indicator.directive.mjs +0 -22
  170. package/esm2022/dropdown-menu/src/dropdown-menu-item-radio-group.directive.mjs +0 -37
  171. package/esm2022/dropdown-menu/src/dropdown-menu-item-radio.directive.mjs +0 -67
  172. package/esm2022/dropdown-menu/src/dropdown-menu-item-selectable.mjs +0 -31
  173. package/esm2022/dropdown-menu/src/dropdown-menu-item.directive.mjs +0 -73
  174. package/esm2022/dropdown-menu/src/dropdown-menu-label.directive.mjs +0 -14
  175. package/esm2022/dropdown-menu/src/dropdown-menu-separator.directive.mjs +0 -21
  176. package/esm2022/dropdown-menu/src/dropdown-menu-trigger.directive.mjs +0 -210
  177. package/esm2022/index.mjs +0 -2
  178. package/esm2022/label/index.mjs +0 -2
  179. package/esm2022/label/radix-ng-primitives-label.mjs +0 -5
  180. package/esm2022/label/src/label.directive.mjs +0 -57
  181. package/esm2022/menu/index.mjs +0 -45
  182. package/esm2022/menu/radix-ng-primitives-menu.mjs +0 -5
  183. package/esm2022/menu/src/menu-content.directive.mjs +0 -17
  184. package/esm2022/menu/src/menu-directive.mjs +0 -18
  185. package/esm2022/menu/src/menu-group.directive.mjs +0 -20
  186. package/esm2022/menu/src/menu-item.directive.mjs +0 -46
  187. package/esm2022/menu/src/menu-label.directive.mjs +0 -14
  188. package/esm2022/menu/src/menu-separator.directive.mjs +0 -21
  189. package/esm2022/menubar/index.mjs +0 -60
  190. package/esm2022/menubar/radix-ng-primitives-menubar.mjs +0 -5
  191. package/esm2022/menubar/src/menubar-content.directive.mjs +0 -17
  192. package/esm2022/menubar/src/menubar-item-checkbox.directive.mjs +0 -34
  193. package/esm2022/menubar/src/menubar-item-indicator.directive.mjs +0 -17
  194. package/esm2022/menubar/src/menubar-item-radio.directive.mjs +0 -35
  195. package/esm2022/menubar/src/menubar-item.directive.mjs +0 -20
  196. package/esm2022/menubar/src/menubar-radio-group.directive.mjs +0 -17
  197. package/esm2022/menubar/src/menubar-root.directive.mjs +0 -24
  198. package/esm2022/menubar/src/menubar-separator.directive.mjs +0 -17
  199. package/esm2022/menubar/src/menubar-trigger.directive.mjs +0 -45
  200. package/esm2022/popover/index.mjs +0 -51
  201. package/esm2022/popover/radix-ng-primitives-popover.mjs +0 -5
  202. package/esm2022/popover/src/popover-anchor.directive.mjs +0 -75
  203. package/esm2022/popover/src/popover-anchor.token.mjs +0 -3
  204. package/esm2022/popover/src/popover-arrow.directive.mjs +0 -117
  205. package/esm2022/popover/src/popover-arrow.token.mjs +0 -3
  206. package/esm2022/popover/src/popover-close.directive.mjs +0 -49
  207. package/esm2022/popover/src/popover-close.token.mjs +0 -3
  208. package/esm2022/popover/src/popover-content-attributes.component.mjs +0 -70
  209. package/esm2022/popover/src/popover-content-attributes.token.mjs +0 -3
  210. package/esm2022/popover/src/popover-content.directive.mjs +0 -270
  211. package/esm2022/popover/src/popover-root.directive.mjs +0 -320
  212. package/esm2022/popover/src/popover-root.inject.mjs +0 -7
  213. package/esm2022/popover/src/popover-trigger.directive.mjs +0 -41
  214. package/esm2022/popover/src/popover.constants.mjs +0 -90
  215. package/esm2022/popover/src/popover.types.mjs +0 -31
  216. package/esm2022/popover/src/popover.utils.mjs +0 -107
  217. package/esm2022/popover/src/utils/cdk-event.service.mjs +0 -153
  218. package/esm2022/popover/src/utils/constants.mjs +0 -2
  219. package/esm2022/popover/src/utils/types.mjs +0 -2
  220. package/esm2022/progress/index.mjs +0 -25
  221. package/esm2022/progress/radix-ng-primitives-progress.mjs +0 -5
  222. package/esm2022/progress/src/progress-indicator.directive.mjs +0 -33
  223. package/esm2022/progress/src/progress-root.directive.mjs +0 -132
  224. package/esm2022/radio/index.mjs +0 -5
  225. package/esm2022/radio/radix-ng-primitives-radio.mjs +0 -5
  226. package/esm2022/radio/src/radio-indicator.directive.mjs +0 -25
  227. package/esm2022/radio/src/radio-item-input.directive.mjs +0 -37
  228. package/esm2022/radio/src/radio-item.directive.mjs +0 -86
  229. package/esm2022/radio/src/radio-root.directive.mjs +0 -104
  230. package/esm2022/radio/src/radio-tokens.mjs +0 -3
  231. package/esm2022/radix-ng-primitives.mjs +0 -5
  232. package/esm2022/roving-focus/index.mjs +0 -3
  233. package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +0 -5
  234. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +0 -138
  235. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +0 -133
  236. package/esm2022/roving-focus/src/utils.mjs +0 -47
  237. package/esm2022/select/index.mjs +0 -65
  238. package/esm2022/select/radix-ng-primitives-select.mjs +0 -5
  239. package/esm2022/select/src/select-content.directive.mjs +0 -53
  240. package/esm2022/select/src/select-group.directive.mjs +0 -18
  241. package/esm2022/select/src/select-icon.directive.mjs +0 -18
  242. package/esm2022/select/src/select-item-indicator.directive.mjs +0 -23
  243. package/esm2022/select/src/select-item.directive.mjs +0 -122
  244. package/esm2022/select/src/select-label.directive.mjs +0 -15
  245. package/esm2022/select/src/select-separator.directive.mjs +0 -18
  246. package/esm2022/select/src/select-trigger.directive.mjs +0 -38
  247. package/esm2022/select/src/select-value.directive.mjs +0 -21
  248. package/esm2022/select/src/select.component.mjs +0 -234
  249. package/esm2022/separator/index.mjs +0 -2
  250. package/esm2022/separator/radix-ng-primitives-separator.mjs +0 -5
  251. package/esm2022/separator/src/separator.directive.mjs +0 -61
  252. package/esm2022/slider/index.mjs +0 -28
  253. package/esm2022/slider/radix-ng-primitives-slider.mjs +0 -5
  254. package/esm2022/slider/src/slider-horizontal.component.mjs +0 -117
  255. package/esm2022/slider/src/slider-impl.directive.mjs +0 -89
  256. package/esm2022/slider/src/slider-orientation-context.service.mjs +0 -27
  257. package/esm2022/slider/src/slider-range.component.mjs +0 -41
  258. package/esm2022/slider/src/slider-root.component.mjs +0 -210
  259. package/esm2022/slider/src/slider-thumb-impl.directive.mjs +0 -106
  260. package/esm2022/slider/src/slider-thumb.component.mjs +0 -22
  261. package/esm2022/slider/src/slider-track.component.mjs +0 -27
  262. package/esm2022/slider/src/slider-vertical.component.mjs +0 -117
  263. package/esm2022/slider/src/utils.mjs +0 -94
  264. package/esm2022/switch/index.mjs +0 -30
  265. package/esm2022/switch/radix-ng-primitives-switch.mjs +0 -5
  266. package/esm2022/switch/src/switch-input.directive.mjs +0 -44
  267. package/esm2022/switch/src/switch-root.directive.mjs +0 -145
  268. package/esm2022/switch/src/switch-thumb.directive.mjs +0 -26
  269. package/esm2022/tabs/index.mjs +0 -35
  270. package/esm2022/tabs/radix-ng-primitives-tabs.mjs +0 -5
  271. package/esm2022/tabs/src/tabs-content.directive.mjs +0 -35
  272. package/esm2022/tabs/src/tabs-list.directive.mjs +0 -26
  273. package/esm2022/tabs/src/tabs-root.directive.mjs +0 -57
  274. package/esm2022/tabs/src/tabs-trigger.directive.mjs +0 -78
  275. package/esm2022/tabs/src/utils.mjs +0 -7
  276. package/esm2022/toggle/index.mjs +0 -3
  277. package/esm2022/toggle/radix-ng-primitives-toggle.mjs +0 -5
  278. package/esm2022/toggle/src/toggle-visually-hidden-input.directive.mjs +0 -31
  279. package/esm2022/toggle/src/toggle.directive.mjs +0 -79
  280. package/esm2022/toggle-group/index.mjs +0 -6
  281. package/esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs +0 -5
  282. package/esm2022/toggle-group/src/toggle-group-item.directive.mjs +0 -85
  283. package/esm2022/toggle-group/src/toggle-group-item.token.mjs +0 -3
  284. package/esm2022/toggle-group/src/toggle-group-multiple.directive.mjs +0 -185
  285. package/esm2022/toggle-group/src/toggle-group.directive.mjs +0 -179
  286. package/esm2022/toggle-group/src/toggle-group.token.mjs +0 -6
  287. package/esm2022/tooltip/index.mjs +0 -41
  288. package/esm2022/tooltip/radix-ng-primitives-tooltip.mjs +0 -5
  289. package/esm2022/tooltip/src/get-content-position.mjs +0 -31
  290. package/esm2022/tooltip/src/tooltip-arrow.directive.mjs +0 -92
  291. package/esm2022/tooltip/src/tooltip-arrow.token.mjs +0 -3
  292. package/esm2022/tooltip/src/tooltip-content-attributes.directive.mjs +0 -24
  293. package/esm2022/tooltip/src/tooltip-content.directive.mjs +0 -48
  294. package/esm2022/tooltip/src/tooltip-content.token.mjs +0 -3
  295. package/esm2022/tooltip/src/tooltip-root.directive.mjs +0 -288
  296. package/esm2022/tooltip/src/tooltip-trigger.directive.mjs +0 -70
  297. package/esm2022/tooltip/src/tooltip.config.mjs +0 -18
  298. package/esm2022/tooltip/src/tooltip.constants.mjs +0 -84
  299. package/esm2022/tooltip/src/tooltip.types.mjs +0 -14
  300. package/esm2022/visually-hidden/index.mjs +0 -4
  301. package/esm2022/visually-hidden/radix-ng-primitives-visually-hidden.mjs +0 -5
  302. package/esm2022/visually-hidden/src/visually-hidden-input-bubble.directive.mjs +0 -74
  303. package/esm2022/visually-hidden/src/visually-hidden-input.directive.mjs +0 -74
  304. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +0 -42
  305. package/popover/src/popover.constants.d.ts +0 -8
  306. package/tooltip/src/get-content-position.d.ts +0 -3
  307. package/tooltip/src/tooltip-content-attributes.directive.d.ts +0 -8
  308. package/tooltip/src/tooltip-content.token.d.ts +0 -3
  309. package/tooltip/src/tooltip.config.d.ts +0 -6
  310. package/tooltip/src/tooltip.constants.d.ts +0 -9
@@ -1,37 +0,0 @@
1
- import { computed, Directive, input } from '@angular/core';
2
- import { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';
3
- import { injectRadioItem } from './radio-item.directive';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@radix-ng/primitives/visually-hidden";
6
- export class RdxRadioItemInputDirective {
7
- constructor() {
8
- this.radioItem = injectRadioItem();
9
- this.name = input();
10
- this.value = computed(() => this.radioItem.value() || undefined);
11
- this.checked = computed(() => this.radioItem.checkedState() || undefined);
12
- this.required = input(this.radioItem.required());
13
- this.disabled = input(this.radioItem.disabled());
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemInputDirective, isStandalone: true, selector: "[rdxRadioItemInput]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "radio" }, properties: { "attr.name": "name()", "attr.required": "required()", "attr.disabled": "disabled() ? disabled() : undefined", "attr.checked": "checked()", "value": "value()" } }, exportAs: ["rdxRadioItemInput"], hostDirectives: [{ directive: i1.RdxVisuallyHiddenDirective, inputs: ["feature", "feature"] }], ngImport: i0 }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemInputDirective, decorators: [{
19
- type: Directive,
20
- args: [{
21
- selector: '[rdxRadioItemInput]',
22
- exportAs: 'rdxRadioItemInput',
23
- standalone: true,
24
- hostDirectives: [
25
- { directive: RdxVisuallyHiddenDirective, inputs: ['feature'] }
26
- ],
27
- host: {
28
- type: 'radio',
29
- '[attr.name]': 'name()',
30
- '[attr.required]': 'required()',
31
- '[attr.disabled]': 'disabled() ? disabled() : undefined',
32
- '[attr.checked]': 'checked()',
33
- '[value]': 'value()'
34
- }
35
- }]
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFpQnpELE1BQU0sT0FBTywwQkFBMEI7SUFmdkM7UUFnQnFCLGNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUV0QyxTQUFJLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkIsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQzVELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNyRSxhQUFRLEdBQUcsS0FBSyxDQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakUsYUFBUSxHQUFHLEtBQUssQ0FBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzdFOytHQVJZLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQWZ0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUU7d0JBQ1osRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUU7cUJBQUM7b0JBQ25FLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsT0FBTzt3QkFDYixhQUFhLEVBQUUsUUFBUTt3QkFDdkIsaUJBQWlCLEVBQUUsWUFBWTt3QkFDL0IsaUJBQWlCLEVBQUUscUNBQXFDO3dCQUN4RCxnQkFBZ0IsRUFBRSxXQUFXO3dCQUM3QixTQUFTLEVBQUUsU0FBUztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4VmlzdWFsbHlIaWRkZW5EaXJlY3RpdmUgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy92aXN1YWxseS1oaWRkZW4nO1xuaW1wb3J0IHsgaW5qZWN0UmFkaW9JdGVtIH0gZnJvbSAnLi9yYWRpby1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJhZGlvSXRlbUlucHV0XScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW1JbnB1dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4VmlzdWFsbHlIaWRkZW5EaXJlY3RpdmUsIGlucHV0czogWydmZWF0dXJlJ10gfV0sXG4gICAgaG9zdDoge1xuICAgICAgICB0eXBlOiAncmFkaW8nLFxuICAgICAgICAnW2F0dHIubmFtZV0nOiAnbmFtZSgpJyxcbiAgICAgICAgJ1thdHRyLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCgpJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCgpID8gZGlzYWJsZWQoKSA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5jaGVja2VkXSc6ICdjaGVja2VkKCknLFxuICAgICAgICAnW3ZhbHVlXSc6ICd2YWx1ZSgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9JdGVtSW5wdXREaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFkaW9JdGVtID0gaW5qZWN0UmFkaW9JdGVtKCk7XG5cbiAgICByZWFkb25seSBuYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yYWRpb0l0ZW0udmFsdWUoKSB8fCB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IGNoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJhZGlvSXRlbS5jaGVja2VkU3RhdGUoKSB8fCB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odGhpcy5yYWRpb0l0ZW0ucmVxdWlyZWQoKSk7XG4gICAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih0aGlzLnJhZGlvSXRlbS5kaXNhYmxlZCgpKTtcbn1cbiJdfQ==
@@ -1,86 +0,0 @@
1
- import { booleanAttribute, computed, Directive, ElementRef, inject, InjectionToken, input, signal } from '@angular/core';
2
- import { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
3
- import { RDX_RADIO_GROUP } from './radio-tokens';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@radix-ng/primitives/roving-focus";
6
- export const RdxRadioItemToken = new InjectionToken('RadioItemToken');
7
- export function injectRadioItem() {
8
- return inject(RdxRadioItemToken);
9
- }
10
- export class RdxRadioItemDirective {
11
- constructor() {
12
- this.radioGroup = inject(RDX_RADIO_GROUP);
13
- this.elementRef = inject(ElementRef);
14
- this.value = input.required();
15
- this.id = input();
16
- this.required = input();
17
- this.disabled = input(false, { transform: booleanAttribute });
18
- this.disabledState = computed(() => this.radioGroup.disableState() || this.disabled());
19
- this.checkedState = computed(() => this.radioGroup.value() === this.value());
20
- this.ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
21
- this.isArrowKeyPressedSignal = signal(false);
22
- }
23
- /** @ignore */
24
- ngOnInit() {
25
- if (this.radioGroup.defaultValue === this.value()) {
26
- this.radioGroup.select(this.value());
27
- }
28
- }
29
- /** @ignore */
30
- onClick() {
31
- if (!this.disabledState()) {
32
- this.radioGroup.select(this.value());
33
- this.isArrowKeyPressedSignal.set(true);
34
- }
35
- }
36
- /** @ignore */
37
- onKeyDown(event) {
38
- if (this.ARROW_KEYS.includes(event.key)) {
39
- this.isArrowKeyPressedSignal.set(true);
40
- }
41
- }
42
- /** @ignore */
43
- onKeyUp() {
44
- this.isArrowKeyPressedSignal.set(false);
45
- }
46
- /** @ignore */
47
- onFocus() {
48
- this.radioGroup.select(this.value());
49
- setTimeout(() => {
50
- /**
51
- * When navigating with arrow keys, focus triggers on the radio item.
52
- * To "check" the radio, we programmatically trigger a click event.
53
- */
54
- if (this.isArrowKeyPressedSignal()) {
55
- this.elementRef.nativeElement.click();
56
- }
57
- }, 0);
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemDirective, isStandalone: true, selector: "[rdxRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "radio" }, listeners: { "click": "onClick()", "keydown": "onKeyDown($event)", "keyup": "onKeyUp()", "focus": "onFocus()" }, properties: { "attr.aria-checked": "checkedState()", "attr.data-disabled": "disabledState() ? \"\" : null", "attr.data-state": "checkedState() ? \"checked\" : \"unchecked\"", "disabled": "disabledState()" } }, providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }], exportAs: ["rdxRadioItem"], hostDirectives: [{ directive: i1.RdxRovingFocusItemDirective, inputs: ["tabStopId", "id", "focusable", "focusable", "active", "active", "allowShiftKey", "allowShiftKey"] }], ngImport: i0 }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, decorators: [{
63
- type: Directive,
64
- args: [{
65
- selector: '[rdxRadioItem]',
66
- exportAs: 'rdxRadioItem',
67
- standalone: true,
68
- providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }],
69
- hostDirectives: [
70
- { directive: RdxRovingFocusItemDirective, inputs: ['tabStopId: id', 'focusable', 'active', 'allowShiftKey'] }
71
- ],
72
- host: {
73
- type: 'button',
74
- role: 'radio',
75
- '[attr.aria-checked]': 'checkedState()',
76
- '[attr.data-disabled]': 'disabledState() ? "" : null',
77
- '[attr.data-state]': 'checkedState() ? "checked" : "unchecked"',
78
- '[disabled]': 'disabledState()',
79
- '(click)': 'onClick()',
80
- '(keydown)': 'onKeyDown($event)',
81
- '(keyup)': 'onKeyUp()',
82
- '(focus)': 'onFocus()'
83
- }
84
- }]
85
- }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsZ0JBQWdCLENBQUMsQ0FBQztBQUU3RixNQUFNLFVBQVUsZUFBZTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUF1QkQsTUFBTSxPQUFPLHFCQUFxQjtJQXJCbEM7UUFzQnFCLGVBQVUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRWpDLE9BQUUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVyQixhQUFRLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFFNUIsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV0RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxD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dCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFJkeFJhZGlvSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFJhZGlvSXRlbURpcmVjdGl2ZT4oJ1JhZGlvSXRlbVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSYWRpb0l0ZW0oKTogUmR4UmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFJhZGlvSXRlbVRva2VuKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9JdGVtXScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhSYWRpb0l0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvSXRlbURpcmVjdGl2ZSB9XSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlLCBpbnB1dHM6IFsndGFiU3RvcElkOiBpZCcsICdmb2N1c2FibGUnLCAnYWN0aXZlJywgJ2FsbG93U2hpZnRLZXknXSB9XSxcblxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHJvbGU6ICdyYWRpbycsXG4gICAgICAgICdbYXR0ci5hcmlhLWNoZWNrZWRdJzogJ2NoZWNrZWRTdGF0ZSgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkU3RhdGUoKSA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrZWRTdGF0ZSgpID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWRTdGF0ZSgpJyxcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5dXApJzogJ29uS2V5VXAoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJhZGlvSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByYWRpb0dyb3VwID0gaW5qZWN0KFJEWF9SQURJT19HUk9VUCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgcmVhZG9ubHkgdmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cbiAgICByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICAgIHJlYWRvbmx5IHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmFkaW9Hcm91cC5kaXNhYmxlU3RhdGUoKSB8fCB0aGlzLmRpc2FibGVkKCkpO1xuXG4gICAgcmVhZG9ubHkgY2hlY2tlZFN0YXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yYWRpb0dyb3VwLnZhbHVlKCkgPT09IHRoaXMudmFsdWUoKSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEFSUk9XX0tFWVMgPSBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J107XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Fycm93S2V5UHJlc3NlZFNpZ25hbCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwLmRlZmF1bHRWYWx1ZSA9PT0gdGhpcy52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvR3JvdXAuc2VsZWN0KHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZFN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuQVJST1dfS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzQXJyb3dLZXlQcmVzc2VkU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25LZXlVcCgpIHtcbiAgICAgICAgdGhpcy5pc0Fycm93S2V5UHJlc3NlZFNpZ25hbC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hlbiBuYXZpZ2F0aW5nIHdpdGggYXJyb3cga2V5cywgZm9jdXMgdHJpZ2dlcnMgb24gdGhlIHJhZGlvIGl0ZW0uXG4gICAgICAgICAgICAgKiBUbyBcImNoZWNrXCIgdGhlIHJhZGlvLCB3ZSBwcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgYSBjbGljayBldmVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,104 +0,0 @@
1
- import { booleanAttribute, computed, Directive, input, Input, model, output, signal } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
4
- import { RDX_RADIO_GROUP } from './radio-tokens';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@radix-ng/primitives/roving-focus";
7
- export class RdxRadioGroupDirective {
8
- constructor() {
9
- this.value = model(null);
10
- this.disabled = input(false, { transform: booleanAttribute });
11
- this.required = input(false, { transform: booleanAttribute });
12
- this.orientation = input();
13
- /**
14
- * Event handler called when the value changes.
15
- */
16
- this.onValueChange = output();
17
- this.disable = signal(this.disabled());
18
- this.disableState = computed(() => this.disable() || this.disabled());
19
- /**
20
- * The callback function to call when the value of the radio group changes.
21
- */
22
- this.onChange = () => {
23
- /* Empty */
24
- };
25
- /**
26
- * The callback function to call when the radio group is touched.
27
- * @ignore
28
- */
29
- this.onTouched = () => {
30
- /* Empty */
31
- };
32
- }
33
- /**
34
- * Select a radio item.
35
- * @param value The value of the radio item to select.
36
- * @ignore
37
- */
38
- select(value) {
39
- this.value.set(value);
40
- this.onValueChange.emit(value);
41
- this.onChange?.(value);
42
- this.onTouched();
43
- }
44
- /**
45
- * Update the value of the radio group.
46
- * @param value The new value of the radio group.
47
- * @ignore
48
- */
49
- writeValue(value) {
50
- this.value.set(value);
51
- }
52
- /**
53
- * Register a callback function to call when the value of the radio group changes.
54
- * @param fn The callback function to call when the value of the radio group changes.
55
- * @ignore
56
- */
57
- registerOnChange(fn) {
58
- this.onChange = fn;
59
- }
60
- /** @ignore */
61
- registerOnTouched(fn) {
62
- this.onTouched = fn;
63
- }
64
- /**
65
- * Set the disabled state of the radio group.
66
- * @param isDisabled Whether the radio group is disabled.
67
- * @ignore
68
- */
69
- setDisabledState(isDisabled) {
70
- this.disable.set(isDisabled);
71
- }
72
- onKeydown() {
73
- if (this.disableState())
74
- return;
75
- }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
77
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioGroupDirective, isStandalone: true, selector: "[rdxRadioRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onValueChange: "onValueChange" }, host: { attributes: { "role": "radiogroup" }, listeners: { "keydown": "onKeydown()" }, properties: { "attr.aria-orientation": "orientation()", "attr.aria-required": "required()", "attr.data-disabled": "disableState() ? \"\" : null" } }, providers: [
78
- { provide: RDX_RADIO_GROUP, useExisting: RdxRadioGroupDirective },
79
- { provide: NG_VALUE_ACCESSOR, useExisting: RdxRadioGroupDirective, multi: true }
80
- ], exportAs: ["rdxRadioRoot"], hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective, inputs: ["dir", "dir", "orientation", "orientation", "loop", "loop"] }], ngImport: i0 }); }
81
- }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioGroupDirective, decorators: [{
83
- type: Directive,
84
- args: [{
85
- selector: '[rdxRadioRoot]',
86
- exportAs: 'rdxRadioRoot',
87
- standalone: true,
88
- providers: [
89
- { provide: RDX_RADIO_GROUP, useExisting: RdxRadioGroupDirective },
90
- { provide: NG_VALUE_ACCESSOR, useExisting: RdxRadioGroupDirective, multi: true }
91
- ],
92
- hostDirectives: [{ directive: RdxRovingFocusGroupDirective, inputs: ['dir', 'orientation', 'loop'] }],
93
- host: {
94
- role: 'radiogroup',
95
- '[attr.aria-orientation]': 'orientation()',
96
- '[attr.aria-required]': 'required()',
97
- '[attr.data-disabled]': 'disableState() ? "" : null',
98
- '(keydown)': 'onKeydown()'
99
- }
100
- }]
101
- }], propDecorators: { defaultValue: [{
102
- type: Input
103
- }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQWUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RixPQUFPLEVBQXdDLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFtQnZGLE1BQU0sT0FBTyxzQkFBc0I7SUFqQm5DO1FBa0JhLFVBQUssR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBRW5DLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFJaEYsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUVoRixnQkFBVyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBRTVDOztXQUVHO1FBQ00sa0JBQWEsR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUV6QixZQUFPLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNLLGFBQVEsR0FBNEIsR0FBRyxFQUFFO1lBQzdDLFdBQVc7UUFDZixDQUFDLENBQUM7UUFFRjs7O1dBR0c7UUFDSCxjQUFTLEdBQWUsR0FBRyxFQUFFO1lBQ3pCLFdBQVc7UUFDZixDQUFDLENBQUM7S0FpREw7SUEvQ0c7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLEVBQTJCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFUyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQUUsT0FBTztJQUNwQyxDQUFDOytHQWhGUSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyZ0NBYnBCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNqRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNuRjs7NEZBVVEsc0JBQXNCO2tCQWpCbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDakUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNuRjtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3JHLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsWUFBWTt3QkFDbEIseUJBQXlCLEVBQUUsZUFBZTt3QkFDMUMsc0JBQXNCLEVBQUUsWUFBWTt3QkFDcEMsc0JBQXNCLEVBQUUsNEJBQTRCO3dCQUNwRCxXQUFXLEVBQUUsYUFBYTtxQkFDN0I7aUJBQ0o7OEJBTVksWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBjb21wdXRlZCwgRGlyZWN0aXZlLCBpbnB1dCwgSW5wdXQsIG1vZGVsLCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT3JpZW50YXRpb24sIFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cERpcmVjdGl2ZSwgUmFkaW9Hcm91cFByb3BzLCBSRFhfUkFESU9fR1JPVVAgfSBmcm9tICcuL3JhZGlvLXRva2Vucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJhZGlvUm9vdF0nLFxuICAgIGV4cG9ydEFzOiAncmR4UmFkaW9Sb290JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFJEWF9SQURJT19HUk9VUCwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvR3JvdXBEaXJlY3RpdmUgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvR3JvdXBEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbeyBkaXJlY3RpdmU6IFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUsIGlucHV0czogWydkaXInLCAnb3JpZW50YXRpb24nLCAnbG9vcCddIH1dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JhZGlvZ3JvdXAnLFxuICAgICAgICAnW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0nOiAnb3JpZW50YXRpb24oKScsXG4gICAgICAgICdbYXR0ci5hcmlhLXJlcXVpcmVkXSc6ICdyZXF1aXJlZCgpJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVTdGF0ZSgpID8gXCJcIiA6IG51bGwnLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9Hcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIFJhZGlvR3JvdXBQcm9wcywgUmFkaW9Hcm91cERpcmVjdGl2ZSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHJlYWRvbmx5IHZhbHVlID0gbW9kZWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgQElucHV0KCkgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gICAgcmVhZG9ubHkgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gaW5wdXQ8T3JpZW50YXRpb24+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9uVmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlID0gc2lnbmFsPGJvb2xlYW4+KHRoaXMuZGlzYWJsZWQoKSk7XG4gICAgcmVhZG9ubHkgZGlzYWJsZVN0YXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kaXNhYmxlKCkgfHwgdGhpcy5kaXNhYmxlZCgpKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAvKiBFbXB0eSAqL1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSByYWRpbyBncm91cCBpcyB0b3VjaGVkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8qIEVtcHR5ICovXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIHJhZGlvIGl0ZW0uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gaXRlbSB0byBzZWxlY3QuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlPy4odmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSByYWRpbyBncm91cC5cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlLnNldChpc0Rpc2FibGVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25LZXlkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlU3RhdGUoKSkgcmV0dXJuO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const RDX_RADIO_GROUP = new InjectionToken('RdxRadioGroup');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yYWRpby9zcmMvcmFkaW8tdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQWlELE1BQU0sZUFBZSxDQUFDO0FBZ0I5RixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQXNCLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm0sIE1vZGVsU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0dyb3VwUHJvcHMge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08Ym9vbGVhbiwgQm9vbGVhbklucHV0PjtcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gICAgdmFsdWU6IE1vZGVsU2lnbmFsPHN0cmluZyB8IG51bGw+O1xuICAgIGRpc2FibGVTdGF0ZTogU2lnbmFsPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvR3JvdXBEaXJlY3RpdmUgZXh0ZW5kcyBSYWRpb0dyb3VwUHJvcHMge1xuICAgIHNlbGVjdCh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQ7XG5cbiAgICBvblRvdWNoZWQoKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IFJEWF9SQURJT19HUk9VUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSYWRpb0dyb3VwRGlyZWN0aXZlPignUmR4UmFkaW9Hcm91cCcpO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcmFkaXgtbmctcHJpbWl0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './src/roving-focus-group.directive';
2
- export * from './src/roving-focus-item.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCB0eXBlIHsgRGlyZWN0aW9uLCBPcmllbnRhdGlvbiB9IGZyb20gJy4vc3JjL3V0aWxzJztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1yb3ZpbmctZm9jdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9yYWRpeC1uZy1wcmltaXRpdmVzLXJvdmluZy1mb2N1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,138 +0,0 @@
1
- import { booleanAttribute, Directive, ElementRef, EventEmitter, inject, Input, NgZone, Output, signal } from '@angular/core';
2
- import { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils';
3
- import * as i0 from "@angular/core";
4
- export class RdxRovingFocusGroupDirective {
5
- constructor() {
6
- this.ngZone = inject(NgZone);
7
- this.elementRef = inject(ElementRef);
8
- this.dir = 'ltr';
9
- this.loop = true;
10
- this.preventScrollOnEntryFocus = false;
11
- this.entryFocus = new EventEmitter();
12
- this.currentTabStopIdChange = new EventEmitter();
13
- /** @ignore */
14
- this.currentTabStopId = signal(null);
15
- /** @ignore */
16
- this.focusableItems = signal([]);
17
- this.isClickFocus = signal(false);
18
- this.isTabbingBackOut = signal(false);
19
- this.focusableItemsCount = signal(0);
20
- }
21
- /** @ignore */
22
- get dataOrientation() {
23
- return this.orientation || 'horizontal';
24
- }
25
- /** @ignore */
26
- get tabIndex() {
27
- return this.isTabbingBackOut() || this.getFocusableItemsCount() === 0 ? -1 : 0;
28
- }
29
- /** @ignore */
30
- handleBlur() {
31
- this.isTabbingBackOut.set(false);
32
- }
33
- /** @ignore */
34
- handleMouseUp() {
35
- // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element
36
- this.ngZone.runOutsideAngular(() => {
37
- // eslint-disable-next-line promise/catch-or-return,promise/always-return
38
- Promise.resolve().then(() => {
39
- this.ngZone.run(() => {
40
- this.isClickFocus.set(false);
41
- });
42
- });
43
- });
44
- }
45
- /** @ignore */
46
- handleFocus(event) {
47
- // We normally wouldn't need this check, because we already check
48
- // that the focus is on the current target and not bubbling to it.
49
- // We do this because Safari doesn't focus buttons when clicked, and
50
- // instead, the wrapper will get focused and not through a bubbling event.
51
- const isKeyboardFocus = !this.isClickFocus();
52
- if (event.currentTarget === this.elementRef.nativeElement &&
53
- event.target === event.currentTarget &&
54
- isKeyboardFocus &&
55
- !this.isTabbingBackOut()) {
56
- const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
57
- this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);
58
- this.entryFocus.emit(entryFocusEvent);
59
- if (!entryFocusEvent.defaultPrevented) {
60
- const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');
61
- const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');
62
- const currentItem = items.find((item) => item.id === this.currentTabStopId());
63
- const candidateItems = [activeItem, currentItem, ...items].filter(Boolean);
64
- focusFirst(candidateItems, this.preventScrollOnEntryFocus);
65
- }
66
- }
67
- this.isClickFocus.set(false);
68
- }
69
- /** @ignore */
70
- handleMouseDown() {
71
- this.isClickFocus.set(true);
72
- }
73
- /** @ignore */
74
- onItemFocus(tabStopId) {
75
- this.currentTabStopId.set(tabStopId);
76
- this.currentTabStopIdChange.emit(tabStopId);
77
- }
78
- /** @ignore */
79
- onItemShiftTab() {
80
- this.isTabbingBackOut.set(true);
81
- }
82
- /** @ignore */
83
- onFocusableItemAdd() {
84
- this.focusableItemsCount.update((count) => count + 1);
85
- }
86
- /** @ignore */
87
- onFocusableItemRemove() {
88
- this.focusableItemsCount.update((count) => Math.max(0, count - 1));
89
- }
90
- /** @ignore */
91
- registerItem(item) {
92
- const currentItems = this.focusableItems();
93
- this.focusableItems.set([...currentItems, item]);
94
- }
95
- /** @ignore */
96
- unregisterItem(item) {
97
- const currentItems = this.focusableItems();
98
- this.focusableItems.set(currentItems.filter((el) => el !== item));
99
- }
100
- /** @ignore */
101
- getFocusableItemsCount() {
102
- return this.focusableItemsCount();
103
- }
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
105
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientation: "orientation", dir: "dir", loop: ["loop", "loop", booleanAttribute], preventScrollOnEntryFocus: ["preventScrollOnEntryFocus", "preventScrollOnEntryFocus", booleanAttribute] }, outputs: { entryFocus: "entryFocus", currentTabStopIdChange: "currentTabStopIdChange" }, host: { listeners: { "focus": "handleFocus($event)", "blur": "handleBlur()", "mouseup": "handleMouseUp()", "mousedown": "handleMouseDown()" }, properties: { "attr.data-orientation": "dataOrientation", "attr.tabindex": "tabIndex", "attr.dir": "dir" }, styleAttribute: "outline: none;" }, ngImport: i0 }); }
106
- }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{
108
- type: Directive,
109
- args: [{
110
- selector: '[rdxRovingFocusGroup]',
111
- standalone: true,
112
- host: {
113
- '[attr.data-orientation]': 'dataOrientation',
114
- '[attr.tabindex]': 'tabIndex',
115
- '[attr.dir]': 'dir',
116
- '(focus)': 'handleFocus($event)',
117
- '(blur)': 'handleBlur()',
118
- '(mouseup)': 'handleMouseUp()',
119
- '(mousedown)': 'handleMouseDown()',
120
- style: 'outline: none;'
121
- }
122
- }]
123
- }], propDecorators: { orientation: [{
124
- type: Input
125
- }], dir: [{
126
- type: Input
127
- }], loop: [{
128
- type: Input,
129
- args: [{ transform: booleanAttribute }]
130
- }], preventScrollOnEntryFocus: [{
131
- type: Input,
132
- args: [{ transform: booleanAttribute }]
133
- }], entryFocus: [{
134
- type: Output
135
- }], currentTabStopIdChange: [{
136
- type: Output
137
- }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQWUsTUFBTSxTQUFTLENBQUM7O0FBZ0J6RixNQUFNLE9BQU8sNEJBQTRCO0lBZHpDO1FBZXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUd4QyxRQUFHLEdBQWMsS0FBSyxDQUFDO1FBQ1EsU0FBSSxHQUFZLElBQUksQ0FBQztRQUNyQiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFekUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDdkMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFckUsY0FBYztRQUNMLHFCQUFnQixHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNMLG1CQUFjLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUVuQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBc0dwRDtJQXBHRyxjQUFjO0lBQ2Qs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Q0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7K0dBekhRLDRCQUE0QjttR0FBNUIsNEJBQTRCLGtJQU1qQixnQkFBZ0IseUZBQ2hCLGdCQUFnQjs7NEZBUDNCLDRCQUE0QjtrQkFkeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLHlCQUF5QixFQUFFLGlCQUFpQjt3QkFDNUMsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFNBQVMsRUFBRSxxQkFBcUI7d0JBQ2hDLFFBQVEsRUFBRSxjQUFjO3dCQUN4QixXQUFXLEVBQUUsaUJBQWlCO3dCQUM5QixhQUFhLEVBQUUsbUJBQW1CO3dCQUNsQyxLQUFLLEVBQUUsZ0JBQWdCO3FCQUMxQjtpQkFDSjs4QkFLWSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDa0MsSUFBSTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSx5QkFBeUI7c0JBQWhFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVCLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24sIEVOVFJZX0ZPQ1VTLCBFVkVOVF9PUFRJT05TLCBmb2N1c0ZpcnN0LCBPcmllbnRhdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhSb3ZpbmdGb2N1c0dyb3VwXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdkYXRhT3JpZW50YXRpb24nLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJ1thdHRyLmRpcl0nOiAnZGlyJyxcbiAgICAgICAgJyhmb2N1cyknOiAnaGFuZGxlRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnaGFuZGxlQmx1cigpJyxcbiAgICAgICAgJyhtb3VzZXVwKSc6ICdoYW5kbGVNb3VzZVVwKCknLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnaGFuZGxlTW91c2VEb3duKCknLFxuICAgICAgICBzdHlsZTogJ291dGxpbmU6IG5vbmU7J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogT3JpZW50YXRpb24gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbG9vcDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBlbnRyeUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgY3VycmVudFRhYlN0b3BJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY3VycmVudFRhYlN0b3BJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgZm9jdXNhYmxlSXRlbXMgPSBzaWduYWw8SFRNTEVsZW1lbnRbXT4oW10pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0NsaWNrRm9jdXMgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNUYWJiaW5nQmFja091dCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c2FibGVJdGVtc0NvdW50ID0gc2lnbmFsKDApO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXQgZGF0YU9yaWVudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiB8fCAnaG9yaXpvbnRhbCc7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVGFiYmluZ0JhY2tPdXQoKSB8fCB0aGlzLmdldEZvY3VzYWJsZUl0ZW1zQ291bnQoKSA9PT0gMCA/IC0xIDogMDtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZUJsdXIoKSB7XG4gICAgICAgIHRoaXMuaXNUYWJiaW5nQmFja091dC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlTW91c2VVcCgpIHtcbiAgICAgICAgLy8gcmVzZXQgYGlzQ2xpY2tGb2N1c2AgYWZ0ZXIgMSB0aWNrIGJlY2F1c2UgaGFuZGxlRm9jdXMgbWlnaHQgbm90IHRyaWdnZXJlZCBkdWUgdG8gZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVybixwcm9taXNlL2Fsd2F5cy1yZXR1cm5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICAvLyBXZSBub3JtYWxseSB3b3VsZG4ndCBuZWVkIHRoaXMgY2hlY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja1xuICAgICAgICAvLyB0aGF0IHRoZSBmb2N1cyBpcyBvbiB0aGUgY3VycmVudCB0YXJnZXQgYW5kIG5vdCBidWJibGluZyB0byBpdC5cbiAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGJ1dHRvbnMgd2hlbiBjbGlja2VkLCBhbmRcbiAgICAgICAgLy8gaW5zdGVhZCwgdGhlIHdyYXBwZXIgd2lsbCBnZXQgZm9jdXNlZCBhbmQgbm90IHRocm91Z2ggYSBidWJibGluZyBldmVudC5cbiAgICAgICAgY29uc3QgaXNLZXlib2FyZEZvY3VzID0gIXRoaXMuaXNDbGlja0ZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9PT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJlxuICAgICAgICAgICAgaXNLZXlib2FyZEZvY3VzICYmXG4gICAgICAgICAgICAhdGhpcy5pc1RhYmJpbmdCYWNrT3V0KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUZvY3VzRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoRU5UUllfRk9DVVMsIEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChlbnRyeUZvY3VzRXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5lbnRyeUZvY3VzLmVtaXQoZW50cnlGb2N1c0V2ZW50KTtcblxuICAgICAgICAgICAgaWYgKCFlbnRyeUZvY3VzRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRhc2V0WydkaXNhYmxlZCddICE9PSAnJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWFjdGl2ZScpID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jdXJyZW50VGFiU3RvcElkKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUl0ZW1zID0gW2FjdGl2ZUl0ZW0sIGN1cnJlbnRJdGVtLCAuLi5pdGVtc10uZmlsdGVyKEJvb2xlYW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICAgICAgICAgICAgICBmb2N1c0ZpcnN0KGNhbmRpZGF0ZUl0ZW1zLCB0aGlzLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVNb3VzZURvd24oKSB7XG4gICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uSXRlbUZvY3VzKHRhYlN0b3BJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYlN0b3BJZC5zZXQodGFiU3RvcElkKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiU3RvcElkQ2hhbmdlLmVtaXQodGFiU3RvcElkKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uSXRlbVNoaWZ0VGFiKCkge1xuICAgICAgICB0aGlzLmlzVGFiYmluZ0JhY2tPdXQuc2V0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25Gb2N1c2FibGVJdGVtQWRkKCkge1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zQ291bnQudXBkYXRlKChjb3VudCkgPT4gY291bnQgKyAxKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtc0NvdW50LnVwZGF0ZSgoY291bnQpID0+IE1hdGgubWF4KDAsIGNvdW50IC0gMSkpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVnaXN0ZXJJdGVtKGl0ZW06IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuZm9jdXNhYmxlSXRlbXMoKTtcbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtcy5zZXQoWy4uLmN1cnJlbnRJdGVtcywgaXRlbV0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgdW5yZWdpc3Rlckl0ZW0oaXRlbTogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcygpO1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zLnNldChjdXJyZW50SXRlbXMuZmlsdGVyKChlbCkgPT4gZWwgIT09IGl0ZW0pKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGdldEZvY3VzYWJsZUl0ZW1zQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW1zQ291bnQoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,133 +0,0 @@
1
- import { booleanAttribute, computed, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';
2
- import { RdxRovingFocusGroupDirective } from './roving-focus-group.directive';
3
- import { focusFirst, generateId, getFocusIntent, wrapArray } from './utils';
4
- import * as i0 from "@angular/core";
5
- export class RdxRovingFocusItemDirective {
6
- constructor() {
7
- this.elementRef = inject(ElementRef);
8
- this.ngZone = inject(NgZone);
9
- this.parent = inject(RdxRovingFocusGroupDirective);
10
- this.focusable = true;
11
- this.active = true;
12
- this.allowShiftKey = false;
13
- this.id = computed(() => this.tabStopId || generateId());
14
- /** @ignore */
15
- this.isCurrentTabStop = computed(() => this.parent.currentTabStopId() === this.id());
16
- }
17
- /**
18
- * Lifecycle hook triggered on initialization.
19
- * Registers the element with the parent roving focus group if it is focusable.
20
- * @ignore
21
- */
22
- ngOnInit() {
23
- if (this.focusable) {
24
- this.parent.registerItem(this.elementRef.nativeElement);
25
- this.parent.onFocusableItemAdd();
26
- }
27
- }
28
- /**
29
- * Lifecycle hook triggered on destruction.
30
- * Unregisters the element from the parent roving focus group if it is focusable.
31
- * @ignore
32
- */
33
- ngOnDestroy() {
34
- if (this.focusable) {
35
- this.parent.unregisterItem(this.elementRef.nativeElement);
36
- this.parent.onFocusableItemRemove();
37
- }
38
- }
39
- /**
40
- * Determines the `tabIndex` of the element.
41
- * Returns `0` if the element is the current tab stop; otherwise, returns `-1`.
42
- * @ignore
43
- */
44
- get tabIndex() {
45
- return this.isCurrentTabStop() ? 0 : -1;
46
- }
47
- /** @ignore */
48
- handleMouseDown(event) {
49
- if (!this.focusable) {
50
- // We prevent focusing non-focusable items on `mousedown`.
51
- // Even though the item has tabIndex={-1}, that only means take it out of the tab order.
52
- event.preventDefault();
53
- }
54
- else {
55
- // Safari doesn't focus a button when clicked so we run our logic on mousedown also
56
- this.parent.onItemFocus(this.id());
57
- }
58
- }
59
- /** @ignore */
60
- onFocus() {
61
- this.parent.onItemFocus(this.id());
62
- }
63
- /**
64
- * Handles the `keydown` event for keyboard navigation within the roving focus group.
65
- * Supports navigation based on orientation and direction, and focuses appropriate elements.
66
- *
67
- * @param event The `KeyboardEvent` object.
68
- * @ignore
69
- */
70
- handleKeydown(event) {
71
- if (event.key === 'Tab' && event.shiftKey) {
72
- this.parent.onItemShiftTab();
73
- return;
74
- }
75
- if (event.target !== this.elementRef.nativeElement)
76
- return;
77
- const focusIntent = getFocusIntent(event, this.parent.orientation, this.parent.dir);
78
- if (focusIntent !== undefined) {
79
- if (event.metaKey || event.ctrlKey || event.altKey || (this.allowShiftKey ? false : event.shiftKey)) {
80
- return;
81
- }
82
- event.preventDefault();
83
- let candidateNodes = this.parent.focusableItems().filter((item) => item.dataset['disabled'] !== '');
84
- if (focusIntent === 'last') {
85
- candidateNodes.reverse();
86
- }
87
- else if (focusIntent === 'prev' || focusIntent === 'next') {
88
- if (focusIntent === 'prev')
89
- candidateNodes.reverse();
90
- const currentIndex = candidateNodes.indexOf(this.elementRef.nativeElement);
91
- candidateNodes = this.parent.loop
92
- ? wrapArray(candidateNodes, currentIndex + 1)
93
- : candidateNodes.slice(currentIndex + 1);
94
- }
95
- this.ngZone.runOutsideAngular(() => {
96
- // eslint-disable-next-line promise/always-return,promise/catch-or-return
97
- Promise.resolve().then(() => {
98
- focusFirst(candidateNodes, false, this.elementRef.nativeElement);
99
- });
100
- });
101
- }
102
- }
103
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
104
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusItemDirective, isStandalone: true, selector: "[rdxRovingFocusItem]", inputs: { focusable: ["focusable", "focusable", booleanAttribute], active: ["active", "active", booleanAttribute], tabStopId: "tabStopId", allowShiftKey: ["allowShiftKey", "allowShiftKey", booleanAttribute] }, host: { listeners: { "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)", "focus": "onFocus()" }, properties: { "attr.tabindex": "tabIndex", "attr.data-orientation": "parent.orientation", "attr.data-active": "active", "attr.data-disabled": "!focusable ? \"\" : undefined" } }, ngImport: i0 }); }
105
- }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusItemDirective, decorators: [{
107
- type: Directive,
108
- args: [{
109
- selector: '[rdxRovingFocusItem]',
110
- standalone: true,
111
- host: {
112
- '[attr.tabindex]': 'tabIndex',
113
- '[attr.data-orientation]': 'parent.orientation',
114
- '[attr.data-active]': 'active',
115
- '[attr.data-disabled]': '!focusable ? "" : undefined',
116
- '(mousedown)': 'handleMouseDown($event)',
117
- '(keydown)': 'handleKeydown($event)',
118
- '(focus)': 'onFocus()'
119
- }
120
- }]
121
- }], propDecorators: { focusable: [{
122
- type: Input,
123
- args: [{ transform: booleanAttribute }]
124
- }], active: [{
125
- type: Input,
126
- args: [{ transform: booleanAttribute }]
127
- }], tabStopId: [{
128
- type: Input
129
- }], allowShiftKey: [{
130
- type: Input,
131
- args: [{ transform: booleanAttribute }]
132
- }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBZTVFLE1BQU0sT0FBTywyQkFBMkI7SUFieEM7UUFjcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUV6QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFFdkIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEQsT0FBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFckUsY0FBYztRQUNMLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FpRzVGO0lBL0ZHOzs7O09BSUc7SUFDSCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxF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a0MsYUFBYTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZHhSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZvY3VzRmlyc3QsIGdlbmVyYXRlSWQsIGdldEZvY3VzSW50ZW50LCB3cmFwQXJyYXkgfSBmcm9tICcuL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4Um92aW5nRm9jdXNJdGVtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiSW5kZXgnLFxuICAgICAgICAnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAncGFyZW50Lm9yaWVudGF0aW9uJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtYWN0aXZlXSc6ICdhY3RpdmUnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnIWZvY3VzYWJsZSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnaGFuZGxlTW91c2VEb3duKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFyZW50ID0gaW5qZWN0KFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUpO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZvY3VzYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgdGFiU3RvcElkOiBzdHJpbmc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93U2hpZnRLZXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRhYlN0b3BJZCB8fCBnZW5lcmF0ZUlkKCkpO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWFkb25seSBpc0N1cnJlbnRUYWJTdG9wID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYXJlbnQuY3VycmVudFRhYlN0b3BJZCgpID09PSB0aGlzLmlkKCkpO1xuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlIGhvb2sgdHJpZ2dlcmVkIG9uIGluaXRpYWxpemF0aW9uLlxuICAgICAqIFJlZ2lzdGVycyB0aGUgZWxlbWVudCB3aXRoIHRoZSBwYXJlbnQgcm92aW5nIGZvY3VzIGdyb3VwIGlmIGl0IGlzIGZvY3VzYWJsZS5cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnaXN0ZXJJdGVtKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uRm9jdXNhYmxlSXRlbUFkZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlIGhvb2sgdHJpZ2dlcmVkIG9uIGRlc3RydWN0aW9uLlxuICAgICAqIFVucmVnaXN0ZXJzIHRoZSBlbGVtZW50IGZyb20gdGhlIHBhcmVudCByb3ZpbmcgZm9jdXMgZ3JvdXAgaWYgaXQgaXMgZm9jdXNhYmxlLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC51bnJlZ2lzdGVySXRlbSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5vbkZvY3VzYWJsZUl0ZW1SZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGB0YWJJbmRleGAgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogUmV0dXJucyBgMGAgaWYgdGhlIGVsZW1lbnQgaXMgdGhlIGN1cnJlbnQgdGFiIHN0b3A7IG90aGVyd2lzZSwgcmV0dXJucyBgLTFgLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFRhYlN0b3AoKSA/IDAgOiAtMTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAvLyBXZSBwcmV2ZW50IGZvY3VzaW5nIG5vbi1mb2N1c2FibGUgaXRlbXMgb24gYG1vdXNlZG93bmAuXG4gICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgaXRlbSBoYXMgdGFiSW5kZXg9ey0xfSwgdGhhdCBvbmx5IG1lYW5zIHRha2UgaXQgb3V0IG9mIHRoZSB0YWIgb3JkZXIuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYSBidXR0b24gd2hlbiBjbGlja2VkIHNvIHdlIHJ1biBvdXIgbG9naWMgb24gbW91c2Vkb3duIGFsc29cbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uSXRlbUZvY3VzKHRoaXMuaWQoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIHRoaXMucGFyZW50Lm9uSXRlbUZvY3VzKHRoaXMuaWQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgYGtleWRvd25gIGV2ZW50IGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgICAqIFN1cHBvcnRzIG5hdmlnYXRpb24gYmFzZWQgb24gb3JpZW50YXRpb24gYW5kIGRpcmVjdGlvbiwgYW5kIGZvY3VzZXMgYXBwcm9wcmlhdGUgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGBLZXlib2FyZEV2ZW50YCBvYmplY3QuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uSXRlbVNoaWZ0VGFiKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzSW50ZW50ID0gZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIHRoaXMucGFyZW50Lm9yaWVudGF0aW9uLCB0aGlzLnBhcmVudC5kaXIpO1xuXG4gICAgICAgIGlmIChmb2N1c0ludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSB8fCAodGhpcy5hbGxvd1NoaWZ0S2V5ID8gZmFsc2UgOiBldmVudC5zaGlmdEtleSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IHRoaXMucGFyZW50LmZvY3VzYWJsZUl0ZW1zKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmRhdGFzZXRbJ2Rpc2FibGVkJ10gIT09ICcnKTtcblxuICAgICAgICAgICAgaWYgKGZvY3VzSW50ZW50ID09PSAnbGFzdCcpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvY3VzSW50ZW50ID09PSAncHJldicgfHwgZm9jdXNJbnRlbnQgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY2FuZGlkYXRlTm9kZXMuaW5kZXhPZih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2RlcyA9IHRoaXMucGFyZW50Lmxvb3BcbiAgICAgICAgICAgICAgICAgICAgPyB3cmFwQXJyYXkoY2FuZGlkYXRlTm9kZXMsIGN1cnJlbnRJbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgIDogY2FuZGlkYXRlTm9kZXMuc2xpY2UoY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9hbHdheXMtcmV0dXJuLHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMsIGZhbHNlLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==