@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,7 +1,6 @@
1
- import { NG_VALUE_ACCESSOR, NgModel, NgControl, FormControlDirective, FormControlName } from '@angular/forms';
1
+ import { NG_VALUE_ACCESSOR, NgControl, FormControlDirective, FormControlName, NgModel } from '@angular/forms';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, ElementRef, NgZone, booleanAttribute, Directive, Input, assertInInjectionContext, Injector, runInInjectionContext, InjectionToken, ENVIRONMENT_INITIALIZER, DestroyRef, model, computed, APP_ID, Injectable } from '@angular/core';
4
- import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { inject, ElementRef, NgZone, booleanAttribute, Directive, Input, APP_ID, Injectable, InjectionToken } from '@angular/core';
5
4
  import { DOCUMENT } from '@angular/common';
6
5
  import { Platform } from '@angular/cdk/platform';
7
6
 
@@ -57,10 +56,10 @@ class RdxAutoFocusDirective {
57
56
  set autoSelect(value) {
58
57
  this._autoSelect = value;
59
58
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxAutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxAutoFocusDirective, isStandalone: true, selector: "[rdxAutoFocus]", inputs: { autoFocus: ["rdxAutoFocus", "autoFocus", booleanAttribute], autoSelect: ["autoSelect", "autoSelect", booleanAttribute] }, ngImport: i0 }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: RdxAutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.5", type: RdxAutoFocusDirective, isStandalone: true, selector: "[rdxAutoFocus]", inputs: { autoFocus: ["rdxAutoFocus", "autoFocus", booleanAttribute], autoSelect: ["autoSelect", "autoSelect", booleanAttribute] }, ngImport: i0 }); }
62
61
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxAutoFocusDirective, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: RdxAutoFocusDirective, decorators: [{
64
63
  type: Directive,
65
64
  args: [{
66
65
  selector: '[rdxAutoFocus]',
@@ -101,232 +100,6 @@ function getRequestAnimationFrame() {
101
100
  // Get the requestAnimationFrame function or its polyfill.
102
101
  const reqAnimationFrame = getRequestAnimationFrame();
103
102
 
104
- /**
105
- * This code is adapted from the original implementation by the ngxTension team.
106
- * Source: https://github.com/ngxtension/ngxtension-platform/blob/main/libs/ngxtension/assert-injector/src/assert-injector.ts
107
- *
108
- * Copyright (c) ngxtension Authors. Licensed under the MIT License.
109
- */
110
- function assertInjector(fn, injector, runner) {
111
- !injector && assertInInjectionContext(fn);
112
- const assertedInjector = injector ?? inject(Injector);
113
- if (!runner)
114
- return assertedInjector;
115
- return runInInjectionContext(assertedInjector, runner);
116
- }
117
-
118
- /**
119
- *
120
- * Copyright (c) ngxtension Authors. Licensed under the MIT License.
121
- */
122
- function createInjectFn(token) {
123
- // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
124
- return function ({ injector, ...injectOptions } = {}) {
125
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
126
- // @ts-expect-error
127
- injector = assertInjector(this, injector);
128
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
129
- // @ts-expect-error
130
- return runInInjectionContext(injector, () => inject(token, injectOptions));
131
- };
132
- }
133
- function createProvideFn(token, factory, opts = {}) {
134
- const { deps = [], multi = false, extraProviders = [], isFunctionValue: isFunctionValueFromOpts = false } = opts;
135
- return (value, isFunctionValue = isFunctionValueFromOpts) => {
136
- let provider;
137
- if (typeof value !== 'undefined') {
138
- // TODO: (chau) maybe this can be made better
139
- const factory = typeof value === 'function' ? (isFunctionValue ? () => value : value) : () => value;
140
- provider = {
141
- provide: token,
142
- useFactory: factory,
143
- multi
144
- };
145
- }
146
- else {
147
- provider = {
148
- provide: token,
149
- useFactory: factory,
150
- deps: deps,
151
- multi
152
- };
153
- }
154
- return [extraProviders, provider];
155
- };
156
- }
157
- /**
158
- * `createInjectionToken` accepts a factory function and returns a tuple of `injectFn`, `provideFn`, and the `InjectionToken`
159
- * that the factory function is for.
160
- *
161
- * @param {Function} factory - Factory Function that returns the value for the `InjectionToken`
162
- * @param {CreateInjectionTokenOptions} options - object to control how the `InjectionToken` behaves
163
- * @returns {CreateInjectionTokenReturn}
164
- *
165
- * @example
166
- * ```ts
167
- * const [injectCounter, provideCounter, COUNTER] = createInjectionToken(() => signal(0));
168
- *
169
- * export class Counter {
170
- * counter = injectCounter(); // WritableSignal<number>
171
- * }
172
- * ```
173
- */
174
- function createInjectionToken(factory, options) {
175
- const tokenName = factory.name || factory.toString();
176
- const opts = options ?? { isRoot: true };
177
- opts.isRoot ??= true;
178
- // NOTE: multi tokens cannot be a root token. It has to be provided (provideFn needs to be invoked)
179
- // for the 'multi' flag to work properly
180
- if (opts.multi) {
181
- opts.isRoot = false;
182
- }
183
- if (opts.isRoot) {
184
- if (opts.token) {
185
- throw new Error(`\
186
- createInjectionToken is creating a root InjectionToken but an external token is passed in.
187
- `);
188
- }
189
- const token = new InjectionToken(`Token for ${tokenName}`, {
190
- factory: () => {
191
- if (opts.deps && Array.isArray(opts.deps)) {
192
- return factory(...opts.deps.map((dep) => {
193
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
194
- // @ts-ignore
195
- dep = (Array.isArray(dep) ? dep.at(-1) : dep);
196
- return inject(dep);
197
- }));
198
- }
199
- return factory();
200
- }
201
- });
202
- const injectFn = createInjectFn(token);
203
- return [
204
- injectFn,
205
- createProvideFn(token, factory, opts),
206
- token,
207
- () => ({
208
- provide: ENVIRONMENT_INITIALIZER,
209
- useValue: () => injectFn(),
210
- multi: true
211
- })
212
- ];
213
- }
214
- const token = opts.token || new InjectionToken(`Token for ${tokenName}`);
215
- return [
216
- createInjectFn(token),
217
- createProvideFn(token, factory, opts),
218
- token,
219
- () => []
220
- ];
221
- }
222
- function createNoopInjectionToken(description, options) {
223
- const token = options?.token || new InjectionToken(description);
224
- return [
225
- createInjectFn(token),
226
- createProvideFn(token, () => null, (options || {})),
227
- token,
228
- () => []
229
- ];
230
- }
231
-
232
- const noop = () => undefined;
233
- const [injectCvaCompareTo, provideCvaCompareTo] = createInjectionToken(() => Object.is);
234
- /**
235
- * Provides a {@link RdxControlValueAccessorCompareTo comparator} based on a property of `T`.
236
- *
237
- * @example
238
- * ```ts
239
- * interface User {
240
- * id: string;
241
- * name: string;
242
- * }
243
- *
244
- * provideCvaCompareToByProp<User>('id');
245
- * ```
246
- */
247
- const provideCvaCompareToByProp = (prop) => provideCvaCompareTo((a, b) => Object.is(a?.[prop], b?.[prop]), true);
248
- class RdxControlValueAccessor {
249
- /**
250
- * `NgModel` sets up the control in `ngOnChanges`. Idk if bug or on purpose, but `writeValue` and `setDisabledState` are called before the inputs are set.
251
- * {@link https://github.com/angular/angular/blob/main/packages/forms/src/directives/ng_model.ts#L223}
252
- *
253
- * @ignore
254
- */
255
- get registered() {
256
- return this.ngControl instanceof NgModel
257
- ? this.ngControl._registered
258
- : true;
259
- }
260
- constructor() {
261
- this.ngControl = inject(NgControl, { self: true, optional: true });
262
- this.destroyRef = inject(DestroyRef);
263
- this.injector = inject(Injector);
264
- /**
265
- * A comparator, which determines value changes. Should return true, if two values are considered semantic equal.
266
- *
267
- * Defaults to {@link Object.is} in order to align with change detection behavior for inputs.
268
- */
269
- this.compareTo = injectCvaCompareTo();
270
- /** Whether this is disabled. If a control is present, it reflects it's disabled state. */
271
- this.inputDisabled = model(this.ngControl?.disabled ?? false, { alias: 'disabled' });
272
- this.disabled = computed(() => booleanAttribute(this.inputDisabled()));
273
- /** The value of this. If a control is present, it reflects it's value. */
274
- this.value = model(this.ngControl?.value ?? undefined);
275
- this._onChange = noop;
276
- this._onTouched = noop;
277
- if (this.ngControl != null)
278
- this.ngControl.valueAccessor = this;
279
- toObservable(this.value, { injector: this.injector })
280
- .pipe(takeUntilDestroyed(this.destroyRef))
281
- .subscribe((value) => {
282
- if (this.compareTo(this.ngControl?.value, value))
283
- return;
284
- this._onChange(value);
285
- });
286
- // sync disabled state
287
- toObservable(this.inputDisabled, { injector: this.injector })
288
- .pipe(takeUntilDestroyed(this.destroyRef))
289
- .subscribe((disabled) => {
290
- if (this.ngControl == null || this.ngControl.control == null || this.ngControl.disabled === disabled)
291
- return;
292
- this.ngControl.control[disabled ? 'disable' : 'enable']();
293
- });
294
- }
295
- /**
296
- * This function should be called when this host is considered `touched`.
297
- *
298
- * NOTE: Whenever a `blur` event is triggered on this host, this function is called.
299
- *
300
- * @see {@link RdxControlValueAccessor.registerOnTouched}
301
- * @see {@link RdxControlValueAccessor._ngControl}
302
- */
303
- markAsTouched() {
304
- this._onTouched();
305
- }
306
- setDisabledState(disabled) {
307
- if (!this.registered)
308
- return;
309
- this.inputDisabled.set(disabled);
310
- }
311
- writeValue(value) {
312
- if (!this.registered || this.compareTo(value, this.value()))
313
- return;
314
- this.value.set(value);
315
- }
316
- registerOnChange(onChange) {
317
- this._onChange = onChange;
318
- }
319
- registerOnTouched(onTouched) {
320
- this._onTouched = onTouched;
321
- }
322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxControlValueAccessor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
323
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxControlValueAccessor, isStandalone: true, inputs: { inputDisabled: { classPropertyName: "inputDisabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputDisabled: "disabledChange", value: "valueChange" }, ngImport: i0 }); }
324
- }
325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxControlValueAccessor, decorators: [{
326
- type: Directive,
327
- args: [{ standalone: true }]
328
- }], ctorParameters: () => [] });
329
-
330
103
  function injectDocument() {
331
104
  return inject(DOCUMENT);
332
105
  }
@@ -364,10 +137,10 @@ class _IdGenerator {
364
137
  }
365
138
  return `${prefix}${counters[prefix]++}`;
366
139
  }
367
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: _IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
368
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: _IdGenerator, providedIn: 'root' }); }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: _IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
141
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: _IdGenerator, providedIn: 'root' }); }
369
142
  }
370
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: _IdGenerator, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: _IdGenerator, decorators: [{
371
144
  type: Injectable,
372
145
  args: [{ providedIn: 'root' }]
373
146
  }] });
@@ -411,9 +184,224 @@ function injectWindow() {
411
184
  return inject(WINDOW);
412
185
  }
413
186
 
187
+ var RdxPositionSide;
188
+ (function (RdxPositionSide) {
189
+ RdxPositionSide["Top"] = "top";
190
+ RdxPositionSide["Right"] = "right";
191
+ RdxPositionSide["Bottom"] = "bottom";
192
+ RdxPositionSide["Left"] = "left";
193
+ })(RdxPositionSide || (RdxPositionSide = {}));
194
+ var RdxPositionAlign;
195
+ (function (RdxPositionAlign) {
196
+ RdxPositionAlign["Start"] = "start";
197
+ RdxPositionAlign["Center"] = "center";
198
+ RdxPositionAlign["End"] = "end";
199
+ })(RdxPositionAlign || (RdxPositionAlign = {}));
200
+
201
+ const RDX_POSITIONS = {
202
+ [RdxPositionSide.Top]: {
203
+ [RdxPositionAlign.Center]: {
204
+ originX: 'center',
205
+ originY: 'top',
206
+ overlayX: 'center',
207
+ overlayY: 'bottom'
208
+ },
209
+ [RdxPositionAlign.Start]: {
210
+ originX: 'start',
211
+ originY: 'top',
212
+ overlayX: 'start',
213
+ overlayY: 'bottom'
214
+ },
215
+ [RdxPositionAlign.End]: {
216
+ originX: 'end',
217
+ originY: 'top',
218
+ overlayX: 'end',
219
+ overlayY: 'bottom'
220
+ }
221
+ },
222
+ [RdxPositionSide.Right]: {
223
+ [RdxPositionAlign.Center]: {
224
+ originX: 'end',
225
+ originY: 'center',
226
+ overlayX: 'start',
227
+ overlayY: 'center'
228
+ },
229
+ [RdxPositionAlign.Start]: {
230
+ originX: 'end',
231
+ originY: 'top',
232
+ overlayX: 'start',
233
+ overlayY: 'top'
234
+ },
235
+ [RdxPositionAlign.End]: {
236
+ originX: 'end',
237
+ originY: 'bottom',
238
+ overlayX: 'start',
239
+ overlayY: 'bottom'
240
+ }
241
+ },
242
+ [RdxPositionSide.Bottom]: {
243
+ [RdxPositionAlign.Center]: {
244
+ originX: 'center',
245
+ originY: 'bottom',
246
+ overlayX: 'center',
247
+ overlayY: 'top'
248
+ },
249
+ [RdxPositionAlign.Start]: {
250
+ originX: 'start',
251
+ originY: 'bottom',
252
+ overlayX: 'start',
253
+ overlayY: 'top'
254
+ },
255
+ [RdxPositionAlign.End]: {
256
+ originX: 'end',
257
+ originY: 'bottom',
258
+ overlayX: 'end',
259
+ overlayY: 'top'
260
+ }
261
+ },
262
+ [RdxPositionSide.Left]: {
263
+ [RdxPositionAlign.Center]: {
264
+ originX: 'start',
265
+ originY: 'center',
266
+ overlayX: 'end',
267
+ overlayY: 'center'
268
+ },
269
+ [RdxPositionAlign.Start]: {
270
+ originX: 'start',
271
+ originY: 'top',
272
+ overlayX: 'end',
273
+ overlayY: 'top'
274
+ },
275
+ [RdxPositionAlign.End]: {
276
+ originX: 'start',
277
+ originY: 'bottom',
278
+ overlayX: 'end',
279
+ overlayY: 'bottom'
280
+ }
281
+ }
282
+ };
283
+ const RDX_POSITIONING_DEFAULTS = {
284
+ offsets: {
285
+ side: 10,
286
+ align: 0
287
+ },
288
+ arrow: {
289
+ width: 8,
290
+ height: 6
291
+ }
292
+ };
293
+
294
+ function getContentPosition(sideAndAlignWithOffsets) {
295
+ const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;
296
+ const position = {
297
+ ...(RDX_POSITIONS[side]?.[align] ?? RDX_POSITIONS[RdxPositionSide.Top][RdxPositionAlign.Center])
298
+ };
299
+ if (sideOffset || alignOffset) {
300
+ if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(side)) {
301
+ if (sideOffset) {
302
+ position.offsetY = side === RdxPositionSide.Top ? -sideOffset : sideOffset;
303
+ }
304
+ if (alignOffset) {
305
+ position.offsetX = alignOffset;
306
+ }
307
+ }
308
+ else {
309
+ if (sideOffset) {
310
+ position.offsetX = side === RdxPositionSide.Left ? -sideOffset : sideOffset;
311
+ }
312
+ if (alignOffset) {
313
+ position.offsetY = alignOffset;
314
+ }
315
+ }
316
+ }
317
+ return position;
318
+ }
319
+ let allPossibleConnectedPositions;
320
+ function getAllPossibleConnectedPositions() {
321
+ if (!allPossibleConnectedPositions) {
322
+ allPossibleConnectedPositions = new Map();
323
+ }
324
+ if (allPossibleConnectedPositions.size < 1) {
325
+ for (const [side, aligns] of Object.entries(RDX_POSITIONS)) {
326
+ for (const [align, position] of Object.entries(aligns)) {
327
+ allPossibleConnectedPositions.set(`${side}|${align}`, position);
328
+ }
329
+ }
330
+ }
331
+ return allPossibleConnectedPositions;
332
+ }
333
+ function getSideAndAlignFromAllPossibleConnectedPositions(position) {
334
+ const allPossibleConnectedPositions = getAllPossibleConnectedPositions();
335
+ let sideAndAlign;
336
+ allPossibleConnectedPositions.forEach((value, key) => {
337
+ if (position.originX === value.originX &&
338
+ position.originY === value.originY &&
339
+ position.overlayX === value.overlayX &&
340
+ position.overlayY === value.overlayY) {
341
+ const sideAndAlignArray = key.split('|');
342
+ sideAndAlign = {
343
+ side: sideAndAlignArray[0],
344
+ align: sideAndAlignArray[1]
345
+ };
346
+ }
347
+ });
348
+ if (!sideAndAlign) {
349
+ throw Error(`[Rdx positioning] cannot infer both side and align from the given position (${JSON.stringify(position)})`);
350
+ }
351
+ return sideAndAlign;
352
+ }
353
+ function getArrowPositionParams(sideAndAlign, arrowWidthAndHeight, triggerWidthAndHeight) {
354
+ const posParams = {
355
+ top: '',
356
+ left: '',
357
+ transform: '',
358
+ transformOrigin: 'center center 0px'
359
+ };
360
+ if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(sideAndAlign.side)) {
361
+ if (sideAndAlign.side === RdxPositionSide.Top) {
362
+ posParams.top = '100%';
363
+ }
364
+ else {
365
+ posParams.top = `-${arrowWidthAndHeight.height}px`;
366
+ posParams.transform = `rotate(180deg)`;
367
+ }
368
+ if (sideAndAlign.align === RdxPositionAlign.Start) {
369
+ posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;
370
+ }
371
+ else if (sideAndAlign.align === RdxPositionAlign.Center) {
372
+ posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;
373
+ }
374
+ else if (sideAndAlign.align === RdxPositionAlign.End) {
375
+ posParams.left = `calc(100% - ${(triggerWidthAndHeight.width + arrowWidthAndHeight.width) / 2}px)`;
376
+ }
377
+ }
378
+ else if ([RdxPositionSide.Left, RdxPositionSide.Right].includes(sideAndAlign.side)) {
379
+ if (sideAndAlign.side === RdxPositionSide.Left) {
380
+ posParams.left = `calc(100% - ${arrowWidthAndHeight.width}px)`;
381
+ posParams.transform = `rotate(-90deg)`;
382
+ posParams.transformOrigin = 'top right 0px';
383
+ }
384
+ else {
385
+ posParams.left = `0`;
386
+ posParams.transform = `rotate(90deg)`;
387
+ posParams.transformOrigin = 'top left 0px';
388
+ }
389
+ if (sideAndAlign.align === RdxPositionAlign.Start) {
390
+ posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.width) / 2}px`;
391
+ }
392
+ else if (sideAndAlign.align === RdxPositionAlign.Center) {
393
+ posParams.top = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;
394
+ }
395
+ else if (sideAndAlign.align === RdxPositionAlign.End) {
396
+ posParams.top = `calc(100% - ${(triggerWidthAndHeight.height + arrowWidthAndHeight.width) / 2}px)`;
397
+ }
398
+ }
399
+ return posParams;
400
+ }
401
+
414
402
  /**
415
403
  * Generated bundle index. Do not edit.
416
404
  */
417
405
 
418
- export { RdxAutoFocusDirective, RdxControlValueAccessor, WINDOW, _IdGenerator, createInjectionToken, createNoopInjectionToken, injectCvaCompareTo, injectDocument, injectIsClient, injectNgControl, injectWindow, isInsideForm, provideCvaCompareTo, provideCvaCompareToByProp, provideValueAccessor };
406
+ export { RDX_POSITIONING_DEFAULTS, RDX_POSITIONS, RdxAutoFocusDirective, RdxPositionAlign, RdxPositionSide, WINDOW, _IdGenerator, getAllPossibleConnectedPositions, getArrowPositionParams, getContentPosition, getSideAndAlignFromAllPossibleConnectedPositions, injectDocument, injectIsClient, injectNgControl, injectWindow, isInsideForm, provideValueAccessor };
419
407
  //# sourceMappingURL=radix-ng-primitives-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/create-inject-context/assert-injector.ts","../../../packages/primitives/core/src/create-inject-context/index.ts","../../../packages/primitives/core/src/control-value-accessor/index.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor(type: Type<never>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: type,\n multi: true\n };\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","/**\n * This code is adapted from the original implementation by the ngxTension team.\n * Source: https://github.com/ngxtension/ngxtension-platform/blob/main/libs/ngxtension/assert-injector/src/assert-injector.ts\n *\n * Copyright (c) ngxtension Authors. Licensed under the MIT License.\n */\nimport { assertInInjectionContext, inject, Injector, runInInjectionContext } from '@angular/core';\nimport { Nullable, SafeFunction } from '../types';\n\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` runs the `runner` function with the guaranteed `Injector`\n * whether it is the default `Injector` within the current **Injection Context**\n * or the custom `Injector` that was passed in.\n *\n * @template {() => unknown} Runner - Runner is a function that can return anything\n * @param {SafeFunction} fn - the Function to pass in `assertInInjectionContext`\n * @param {Nullable<Injector>} injector - the optional \"custom\" Injector\n * @param {Runner} runner - the runner fn\n * @returns {ReturnType<Runner>} result - returns the result of the Runner\n *\n * @example\n * ```ts\n * function injectValue(injector?: Injector) {\n * return assertInjector(injectValue, injector, () => 'value');\n * }\n *\n * injectValue(); // string\n * ```\n */\nexport function assertInjector<Runner extends () => unknown>(\n fn: SafeFunction,\n injector: Nullable<Injector>,\n runner: Runner\n): ReturnType<Runner>;\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` returns a guaranteed `Injector` whether it is the default `Injector`\n * within the current **Injection Context** or the custom `Injector` that was passed in.\n *\n * @param {SafeFunction} fn - the Function to pass in `assertInInjectionContext`\n * @param {Nullable<Injector>} injector - the optional \"custom\" Injector\n * @returns Injector\n *\n * @example\n * ```ts\n * function injectDestroy(injector?: Injector) {\n * injector = assertInjector(injectDestroy, injector);\n *\n * return runInInjectionContext(injector, () => {\n * // code\n * })\n * }\n * ```\n */\nexport function assertInjector(fn: SafeFunction, injector: Nullable<Injector>): Injector;\nexport function assertInjector<Runner extends () => unknown>(\n fn: SafeFunction,\n injector: Nullable<Injector>,\n runner?: () => unknown\n): Injector | ReturnType<Runner> {\n !injector && assertInInjectionContext(fn);\n\n const assertedInjector = injector ?? inject(Injector);\n\n if (!runner) return assertedInjector;\n\n return runInInjectionContext(assertedInjector, runner) as ReturnType<Runner>;\n}\n","/**\n *\n * Copyright (c) ngxtension Authors. Licensed under the MIT License.\n */\nimport {\n ENVIRONMENT_INITIALIZER,\n InjectionToken,\n inject,\n runInInjectionContext,\n type EnvironmentProviders,\n type FactoryProvider,\n type Host,\n type InjectOptions,\n type Injector,\n type Optional,\n type Provider,\n type Self,\n type SkipSelf,\n type Type\n} from '@angular/core';\nimport { assertInjector } from './assert-injector';\n\ntype CreateInjectionTokenDep<TTokenType> =\n | Type<TTokenType>\n // NOTE: we don't have an AbstractType\n | (abstract new (...args: any[]) => TTokenType)\n | InjectionToken<TTokenType>;\n\ntype CreateInjectionTokenDeps<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> = {\n [Index in keyof TFactoryDeps]:\n | CreateInjectionTokenDep<TFactoryDeps[Index]>\n | [...modifiers: Array<Optional | Self | SkipSelf | Host>, token: CreateInjectionTokenDep<TFactoryDeps[Index]>];\n} & { length: TFactoryDeps['length'] };\n\nexport type CreateInjectionTokenOptions<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> =\n // this means TFunction has no parameters\n (TFactoryDeps[0] extends undefined\n ? { deps?: never }\n : { deps: CreateInjectionTokenDeps<TFactory, TFactoryDeps> }) & {\n isRoot?: boolean;\n isFunctionValue?: boolean;\n multi?: boolean;\n token?: InjectionToken<ReturnType<TFactory>>;\n extraProviders?: Provider | EnvironmentProviders;\n };\n\ntype CreateProvideFnOptions<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> = Pick<CreateInjectionTokenOptions<TFactory, TFactoryDeps>, 'deps' | 'extraProviders' | 'multi' | 'isFunctionValue'>;\n\ntype InjectFn<TFactoryReturn> = {\n (): TFactoryReturn;\n (\n injectOptions: InjectOptions & { optional?: false } & {\n injector?: Injector;\n }\n ): TFactoryReturn;\n (injectOptions: InjectOptions & { injector?: Injector }): TFactoryReturn | null;\n};\n\ntype ProvideFn<\n TNoop extends boolean,\n TFactoryReturn,\n TReturn = TFactoryReturn extends Array<infer Item> ? Item : TFactoryReturn\n> = (TNoop extends true ? (value: TReturn | (() => TReturn)) => Provider : () => Provider) &\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n (TReturn extends Function\n ? (value: TReturn | (() => TReturn), isFunctionValue: boolean) => Provider\n : (value: TReturn | (() => TReturn)) => Provider);\n\nexport type CreateInjectionTokenReturn<TFactoryReturn, TNoop extends boolean = false> = [\n InjectFn<TFactoryReturn>,\n ProvideFn<TNoop, TFactoryReturn>,\n InjectionToken<TFactoryReturn>,\n () => Provider\n];\n\nfunction createInjectFn<TValue>(token: InjectionToken<TValue>) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n return function (this: Function, { injector, ...injectOptions }: InjectOptions & { injector?: Injector } = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n injector = assertInjector(this, injector);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return runInInjectionContext(injector, () => inject(token, injectOptions as InjectOptions));\n };\n}\n\nfunction createProvideFn<\n TValue,\n TFactory extends (...args: any[]) => any = (...args: any[]) => TValue,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n>(\n token: InjectionToken<TValue>,\n factory: (...args: any[]) => TValue,\n opts: CreateProvideFnOptions<TFactory, TFactoryDeps> = {}\n) {\n const { deps = [], multi = false, extraProviders = [], isFunctionValue: isFunctionValueFromOpts = false } = opts;\n return (value?: TValue | (() => TValue), isFunctionValue = isFunctionValueFromOpts) => {\n let provider: Provider;\n if (typeof value !== 'undefined') {\n // TODO: (chau) maybe this can be made better\n const factory = typeof value === 'function' ? (isFunctionValue ? () => value : value) : () => value;\n\n provider = {\n provide: token,\n useFactory: factory,\n multi\n };\n } else {\n provider = {\n provide: token,\n useFactory: factory,\n deps: deps as FactoryProvider['deps'],\n multi\n };\n }\n\n return [extraProviders, provider];\n };\n}\n\n/**\n * `createInjectionToken` accepts a factory function and returns a tuple of `injectFn`, `provideFn`, and the `InjectionToken`\n * that the factory function is for.\n *\n * @param {Function} factory - Factory Function that returns the value for the `InjectionToken`\n * @param {CreateInjectionTokenOptions} options - object to control how the `InjectionToken` behaves\n * @returns {CreateInjectionTokenReturn}\n *\n * @example\n * ```ts\n * const [injectCounter, provideCounter, COUNTER] = createInjectionToken(() => signal(0));\n *\n * export class Counter {\n * counter = injectCounter(); // WritableSignal<number>\n * }\n * ```\n */\nexport function createInjectionToken<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>,\n TOptions extends CreateInjectionTokenOptions<TFactory, TFactoryDeps> = CreateInjectionTokenOptions<\n TFactory,\n TFactoryDeps\n >,\n TFactoryReturn = TOptions['multi'] extends true ? Array<ReturnType<TFactory>> : ReturnType<TFactory>\n>(factory: TFactory, options?: TOptions): CreateInjectionTokenReturn<TFactoryReturn> {\n const tokenName = factory.name || factory.toString();\n const opts = options ?? ({ isRoot: true } as CreateInjectionTokenOptions<TFactory, TFactoryDeps>);\n\n opts.isRoot ??= true;\n\n // NOTE: multi tokens cannot be a root token. It has to be provided (provideFn needs to be invoked)\n // for the 'multi' flag to work properly\n if (opts.multi) {\n opts.isRoot = false;\n }\n\n if (opts.isRoot) {\n if (opts.token) {\n throw new Error(`\\\ncreateInjectionToken is creating a root InjectionToken but an external token is passed in.\n`);\n }\n\n const token = new InjectionToken<TFactoryReturn>(`Token for ${tokenName}`, {\n factory: () => {\n if (opts.deps && Array.isArray(opts.deps)) {\n return factory(\n ...opts.deps.map((dep) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dep = (Array.isArray(dep) ? dep.at(-1) : dep) as CreateInjectionTokenDep<any>;\n return inject(dep);\n })\n );\n }\n return factory();\n }\n });\n\n const injectFn = createInjectFn(token) as CreateInjectionTokenReturn<TFactoryReturn>[0];\n\n return [\n injectFn,\n createProvideFn(\n token,\n factory,\n opts as CreateProvideFnOptions<TFactory, TFactoryDeps>\n ) as CreateInjectionTokenReturn<TFactoryReturn>[1],\n token,\n () => ({\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => injectFn(),\n multi: true\n })\n\n ];\n }\n\n const token = opts.token || new InjectionToken<TFactoryReturn>(`Token for ${tokenName}`);\n return [\n createInjectFn(token) as CreateInjectionTokenReturn<TFactoryReturn>[0],\n createProvideFn(\n token,\n factory,\n opts as CreateProvideFnOptions<TFactory, TFactoryDeps>\n ) as CreateInjectionTokenReturn<TFactoryReturn>[1],\n token,\n () => []\n ];\n}\n\nexport function createNoopInjectionToken<\n TValue,\n TMulti extends boolean = false,\n TOptions = Pick<CreateInjectionTokenOptions<() => void, []>, 'extraProviders'> &\n (TValue extends (...args: any[]) => any ? { isFunctionValue: true } : { isFunctionValue?: never }) &\n (TMulti extends true ? { multi: true } : { multi?: never })\n>(description: string, options?: TOptions) {\n type TReturn = TMulti extends true ? Array<TValue> : TValue;\n\n const token =\n (options as CreateInjectionTokenOptions<() => void, []>)?.token || new InjectionToken<TReturn>(description);\n return [\n createInjectFn(token) as CreateInjectionTokenReturn<TReturn,\n true>[0],\n createProvideFn(\n token,\n () => null!,\n (options || {}) as CreateProvideFnOptions<() => void, []>\n ) as CreateInjectionTokenReturn<TReturn,\n true>[1],\n token,\n () => []\n ] as CreateInjectionTokenReturn<TReturn, true>;\n}\n","/**\n * Based On:\n * Copyright (c) flebee Authors. Licensed under the MIT License.\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, DestroyRef, Directive, inject, Injector, model } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl, NgModel } from '@angular/forms';\nimport { createInjectionToken } from '../create-inject-context';\n\nconst noop = () => undefined;\n\nexport type RdxControlValueAccessorCompareTo<T = any> = (a?: T, b?: T) => boolean;\n\nexport const [injectCvaCompareTo, provideCvaCompareTo] = createInjectionToken<() => RdxControlValueAccessorCompareTo>(\n () => Object.is\n);\n\n/**\n * Provides a {@link RdxControlValueAccessorCompareTo comparator} based on a property of `T`.\n *\n * @example\n * ```ts\n * interface User {\n * \tid: string;\n * \tname: string;\n * }\n *\n * provideCvaCompareToByProp<User>('id');\n * ```\n */\nexport const provideCvaCompareToByProp = <T>(prop: keyof T) =>\n provideCvaCompareTo((a, b) => Object.is(a?.[prop], b?.[prop]), true);\n\n@Directive({ standalone: true })\nexport class RdxControlValueAccessor<Value> implements ControlValueAccessor {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n /**\n * A comparator, which determines value changes. Should return true, if two values are considered semantic equal.\n *\n * Defaults to {@link Object.is} in order to align with change detection behavior for inputs.\n */\n public readonly compareTo: RdxControlValueAccessorCompareTo<Value> = injectCvaCompareTo();\n /** Whether this is disabled. If a control is present, it reflects it's disabled state. */\n public inputDisabled = model<BooleanInput>(this.ngControl?.disabled ?? false, { alias: 'disabled' });\n public disabled = computed(() => booleanAttribute(this.inputDisabled()));\n /** The value of this. If a control is present, it reflects it's value. */\n public value = model<Value>(this.ngControl?.value ?? undefined);\n\n /**\n * `NgModel` sets up the control in `ngOnChanges`. Idk if bug or on purpose, but `writeValue` and `setDisabledState` are called before the inputs are set.\n * {@link https://github.com/angular/angular/blob/main/packages/forms/src/directives/ng_model.ts#L223}\n *\n * @ignore\n */\n private get registered() {\n return this.ngControl instanceof NgModel\n ? (this.ngControl as unknown as { _registered: boolean })._registered\n : true;\n }\n\n constructor() {\n if (this.ngControl != null) this.ngControl.valueAccessor = this;\n\n toObservable(this.value, { injector: this.injector })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n if (this.compareTo(this.ngControl?.value, value)) return;\n\n this._onChange(value);\n });\n\n // sync disabled state\n toObservable(this.inputDisabled, { injector: this.injector })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((disabled) => {\n if (this.ngControl == null || this.ngControl.control == null || this.ngControl.disabled === disabled)\n return;\n\n this.ngControl.control[disabled ? 'disable' : 'enable']();\n });\n }\n\n private _onChange: (value: Value) => void = noop;\n private _onTouched: () => void = noop;\n\n /**\n * This function should be called when this host is considered `touched`.\n *\n * NOTE: Whenever a `blur` event is triggered on this host, this function is called.\n *\n * @see {@link RdxControlValueAccessor.registerOnTouched}\n * @see {@link RdxControlValueAccessor._ngControl}\n */\n markAsTouched() {\n this._onTouched();\n }\n\n setDisabledState(disabled: boolean) {\n if (!this.registered) return;\n\n this.inputDisabled.set(disabled);\n }\n\n writeValue(value: Value) {\n if (!this.registered || this.compareTo(value, this.value())) return;\n\n this.value.set(value);\n }\n\n registerOnChange(onChange: (value: Value) => void) {\n this._onChange = onChange;\n }\n\n registerOnTouched(onTouched: () => void) {\n this._onTouched = onTouched;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters: Record<string, number> = {};\n\n/** Service that generates unique IDs for DOM nodes. */\n@Injectable({ providedIn: 'root' })\nexport class _IdGenerator {\n private readonly _appId = inject(APP_ID);\n\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix: string): string {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n\n return `${prefix}${counters[prefix]++}`;\n }\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/src/positioning/types.ts","../../../packages/primitives/core/src/positioning/constants.ts","../../../packages/primitives/core/src/positioning/utils.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor(type: Type<never>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: type,\n multi: true\n };\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters: Record<string, number> = {};\n\n/** Service that generates unique IDs for DOM nodes. */\n@Injectable({ providedIn: 'root' })\nexport class _IdGenerator {\n private readonly _appId = inject(APP_ID);\n\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix: string): string {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n\n return `${prefix}${counters[prefix]++}`;\n }\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport enum RdxPositionSide {\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n Left = 'left'\n}\n\nexport enum RdxPositionAlign {\n Start = 'start',\n Center = 'center',\n End = 'end'\n}\n\nexport type RdxPositionSideAndAlign = { side: RdxPositionSide; align: RdxPositionAlign };\nexport type RdxPositionSideAndAlignOffsets = { sideOffset: number; alignOffset: number };\n\nexport type RdxPositions = Readonly<{\n [key in RdxPositionSide]: Readonly<{\n [key in RdxPositionAlign]: Readonly<ConnectionPositionPair>;\n }>;\n}>;\n\nexport type RdxPositioningDefaults = Readonly<{\n offsets: Readonly<{\n side: number;\n align: number;\n }>;\n arrow: Readonly<{\n width: number;\n height: number;\n }>;\n}>;\n\nexport type RdxAllPossibleConnectedPositions = ReadonlyMap<\n `${RdxPositionSide}|${RdxPositionAlign}`,\n ConnectionPositionPair\n>;\nexport type RdxArrowPositionParams = {\n top: string;\n left: string;\n transform: string;\n transformOrigin: string;\n};\n","import { RdxPositionAlign, RdxPositioningDefaults, RdxPositions, RdxPositionSide } from './types';\n\nexport const RDX_POSITIONS: RdxPositions = {\n [RdxPositionSide.Top]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Right]: {\n [RdxPositionAlign.Center]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Bottom]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n },\n [RdxPositionSide.Left]: {\n [RdxPositionAlign.Center]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n }\n} as const;\n\nexport const RDX_POSITIONING_DEFAULTS: RdxPositioningDefaults = {\n offsets: {\n side: 10,\n align: 0\n },\n arrow: {\n width: 8,\n height: 6\n }\n} as const;\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { RDX_POSITIONS } from './constants';\nimport {\n RdxAllPossibleConnectedPositions,\n RdxArrowPositionParams,\n RdxPositionAlign,\n RdxPositionSide,\n RdxPositionSideAndAlign,\n RdxPositionSideAndAlignOffsets\n} from './types';\n\nexport function getContentPosition(\n sideAndAlignWithOffsets: RdxPositionSideAndAlign & RdxPositionSideAndAlignOffsets\n): ConnectedPosition {\n const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;\n const position: ConnectedPosition = {\n ...(RDX_POSITIONS[side]?.[align] ?? RDX_POSITIONS[RdxPositionSide.Top][RdxPositionAlign.Center])\n };\n if (sideOffset || alignOffset) {\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(side)) {\n if (sideOffset) {\n position.offsetY = side === RdxPositionSide.Top ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetX = alignOffset;\n }\n } else {\n if (sideOffset) {\n position.offsetX = side === RdxPositionSide.Left ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetY = alignOffset;\n }\n }\n }\n return position;\n}\n\nlet allPossibleConnectedPositions: RdxAllPossibleConnectedPositions;\nexport function getAllPossibleConnectedPositions() {\n if (!allPossibleConnectedPositions) {\n allPossibleConnectedPositions = new Map();\n }\n if (allPossibleConnectedPositions.size < 1) {\n for (const [side, aligns] of Object.entries(RDX_POSITIONS)) {\n for (const [align, position] of Object.entries(aligns)) {\n (allPossibleConnectedPositions as Map<any, any>).set(`${side}|${align}`, position);\n }\n }\n }\n return allPossibleConnectedPositions;\n}\n\nexport function getSideAndAlignFromAllPossibleConnectedPositions(\n position: ConnectionPositionPair\n): RdxPositionSideAndAlign {\n const allPossibleConnectedPositions = getAllPossibleConnectedPositions();\n let sideAndAlign: RdxPositionSideAndAlign | undefined;\n allPossibleConnectedPositions.forEach((value, key) => {\n if (\n position.originX === value.originX &&\n position.originY === value.originY &&\n position.overlayX === value.overlayX &&\n position.overlayY === value.overlayY\n ) {\n const sideAndAlignArray = key.split('|');\n sideAndAlign = {\n side: sideAndAlignArray[0] as RdxPositionSide,\n align: sideAndAlignArray[1] as RdxPositionAlign\n };\n }\n });\n if (!sideAndAlign) {\n throw Error(\n `[Rdx positioning] cannot infer both side and align from the given position (${JSON.stringify(position)})`\n );\n }\n return sideAndAlign;\n}\n\nexport function getArrowPositionParams(\n sideAndAlign: RdxPositionSideAndAlign,\n arrowWidthAndHeight: { width: number; height: number },\n triggerWidthAndHeight: { width: number; height: number }\n): RdxArrowPositionParams {\n const posParams: RdxArrowPositionParams = {\n top: '',\n left: '',\n transform: '',\n transformOrigin: 'center center 0px'\n };\n\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Top) {\n posParams.top = '100%';\n } else {\n posParams.top = `-${arrowWidthAndHeight.height}px`;\n posParams.transform = `rotate(180deg)`;\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.left = `calc(100% - ${(triggerWidthAndHeight.width + arrowWidthAndHeight.width) / 2}px)`;\n }\n } else if ([RdxPositionSide.Left, RdxPositionSide.Right].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Left) {\n posParams.left = `calc(100% - ${arrowWidthAndHeight.width}px)`;\n posParams.transform = `rotate(-90deg)`;\n posParams.transformOrigin = 'top right 0px';\n } else {\n posParams.left = `0`;\n posParams.transform = `rotate(90deg)`;\n posParams.transformOrigin = 'top left 0px';\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.top = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.top = `calc(100% - ${(triggerWidthAndHeight.height + arrowWidthAndHeight.width) / 2}px)`;\n }\n }\n\n return posParams;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}