@ariakit/react-components 0.1.1 → 0.1.2

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 (500) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/button/button.d.ts +1 -1
  3. package/dist/{button-Cp853csH.d.ts → button-CVWcOgxs.d.ts} +3 -3
  4. package/dist/{button-Cp853csH.d.ts.map → button-CVWcOgxs.d.ts.map} +1 -1
  5. package/dist/checkbox/checkbox-check.d.ts +1 -1
  6. package/dist/checkbox/checkbox-check.d.ts.map +1 -1
  7. package/dist/checkbox/checkbox.d.ts +2 -2
  8. package/dist/checkbox/checkbox.d.ts.map +1 -1
  9. package/dist/collection/collection-item-offscreen.d.ts +1 -1
  10. package/dist/collection/collection-item-offscreen.js +1 -1
  11. package/dist/collection/collection-item-offscreen.js.map +1 -1
  12. package/dist/collection/collection-item.d.ts +1 -1
  13. package/dist/collection/collection-renderer.d.ts +1 -1
  14. package/dist/collection/collection-renderer.js +1 -1
  15. package/dist/collection/collection-renderer.js.map +1 -1
  16. package/dist/collection/collection.d.ts +1 -1
  17. package/dist/collection/collection.d.ts.map +1 -1
  18. package/dist/{collection-item-offscreen-DyXa-sqj.d.ts → collection-item-offscreen-B5E5vNFi.d.ts} +2 -2
  19. package/dist/{collection-item-offscreen-DyXa-sqj.d.ts.map → collection-item-offscreen-B5E5vNFi.d.ts.map} +1 -1
  20. package/dist/{collection-item-C-g2BwVF.d.ts → collection-item-pvEWNoNs.d.ts} +2 -2
  21. package/dist/{collection-item-C-g2BwVF.d.ts.map → collection-item-pvEWNoNs.d.ts.map} +1 -1
  22. package/dist/{collection-renderer-DsPD9ksD.d.ts → collection-renderer-BhzF21Du.d.ts} +29 -15
  23. package/dist/collection-renderer-BhzF21Du.d.ts.map +1 -0
  24. package/dist/combobox/combobox-cancel.d.ts +2 -2
  25. package/dist/combobox/combobox-cancel.d.ts.map +1 -1
  26. package/dist/combobox/combobox-cancel.js +1 -1
  27. package/dist/combobox/combobox-cancel.js.map +1 -1
  28. package/dist/combobox/combobox-disclosure.d.ts +2 -2
  29. package/dist/combobox/combobox-disclosure.d.ts.map +1 -1
  30. package/dist/combobox/combobox-disclosure.js +1 -1
  31. package/dist/combobox/combobox-disclosure.js.map +1 -1
  32. package/dist/combobox/combobox-group-label.d.ts +1 -1
  33. package/dist/combobox/combobox-group-label.d.ts.map +1 -1
  34. package/dist/combobox/combobox-group.d.ts +1 -1
  35. package/dist/combobox/combobox-group.d.ts.map +1 -1
  36. package/dist/combobox/combobox-group.js +1 -1
  37. package/dist/combobox/combobox-group.js.map +1 -1
  38. package/dist/combobox/combobox-item-check.d.ts +1 -1
  39. package/dist/combobox/combobox-item-check.d.ts.map +1 -1
  40. package/dist/combobox/combobox-item-value.d.ts +1 -1
  41. package/dist/combobox/combobox-item-value.d.ts.map +1 -1
  42. package/dist/combobox/combobox-item.d.ts +3 -3
  43. package/dist/combobox/combobox-item.d.ts.map +1 -1
  44. package/dist/combobox/combobox-item.js +1 -1
  45. package/dist/combobox/combobox-item.js.map +1 -1
  46. package/dist/combobox/combobox-label.d.ts +1 -1
  47. package/dist/combobox/combobox-label.d.ts.map +1 -1
  48. package/dist/combobox/combobox-label.js +1 -1
  49. package/dist/combobox/combobox-label.js.map +1 -1
  50. package/dist/combobox/combobox-list.d.ts +1 -1
  51. package/dist/combobox/combobox-list.d.ts.map +1 -1
  52. package/dist/combobox/combobox-list.js +1 -1
  53. package/dist/combobox/combobox-list.js.map +1 -1
  54. package/dist/combobox/combobox-popover.d.ts +1 -1
  55. package/dist/combobox/combobox-popover.js +1 -1
  56. package/dist/combobox/combobox-popover.js.map +1 -1
  57. package/dist/combobox/combobox-row.d.ts +1 -1
  58. package/dist/combobox/combobox-row.d.ts.map +1 -1
  59. package/dist/combobox/combobox-row.js +1 -1
  60. package/dist/combobox/combobox-row.js.map +1 -1
  61. package/dist/combobox/combobox-separator.d.ts +1 -1
  62. package/dist/combobox/combobox-separator.d.ts.map +1 -1
  63. package/dist/combobox/combobox-separator.js +1 -1
  64. package/dist/combobox/combobox-separator.js.map +1 -1
  65. package/dist/combobox/combobox-value.js +1 -1
  66. package/dist/combobox/combobox-value.js.map +1 -1
  67. package/dist/combobox/combobox.d.ts +3 -3
  68. package/dist/combobox/combobox.d.ts.map +1 -1
  69. package/dist/combobox/combobox.js +16 -2
  70. package/dist/combobox/combobox.js.map +1 -1
  71. package/dist/command/command.d.ts +1 -1
  72. package/dist/{command-DckndCUK.d.ts → command-B9C8p3_S.d.ts} +3 -3
  73. package/dist/{command-DckndCUK.d.ts.map → command-B9C8p3_S.d.ts.map} +1 -1
  74. package/dist/composite/composite-container.d.ts +1 -1
  75. package/dist/composite/composite-container.d.ts.map +1 -1
  76. package/dist/composite/composite-container.js +2 -2
  77. package/dist/composite/composite-container.js.map +1 -1
  78. package/dist/composite/composite-group-label.d.ts +2 -2
  79. package/dist/composite/composite-group-label.d.ts.map +1 -1
  80. package/dist/composite/composite-group.d.ts +2 -2
  81. package/dist/composite/composite-group.d.ts.map +1 -1
  82. package/dist/composite/composite-hover.d.ts +1 -1
  83. package/dist/composite/composite-hover.js +9 -13
  84. package/dist/composite/composite-hover.js.map +1 -1
  85. package/dist/composite/composite-input.d.ts +1 -1
  86. package/dist/composite/composite-input.d.ts.map +1 -1
  87. package/dist/composite/composite-input.js +1 -1
  88. package/dist/composite/composite-input.js.map +1 -1
  89. package/dist/composite/composite-item-offscreen.d.ts +2 -2
  90. package/dist/composite/composite-item-offscreen.js +2 -2
  91. package/dist/composite/composite-item-offscreen.js.map +1 -1
  92. package/dist/composite/composite-item.d.ts +1 -1
  93. package/dist/composite/composite-item.js +2 -2
  94. package/dist/composite/composite-item.js.map +1 -1
  95. package/dist/composite/composite-overflow-disclosure.d.ts +2 -2
  96. package/dist/composite/composite-overflow-disclosure.d.ts.map +1 -1
  97. package/dist/composite/composite-overflow.d.ts +2 -2
  98. package/dist/composite/composite-overflow.d.ts.map +1 -1
  99. package/dist/composite/composite-renderer.d.ts +28 -14
  100. package/dist/composite/composite-renderer.d.ts.map +1 -1
  101. package/dist/composite/composite-renderer.js +2 -2
  102. package/dist/composite/composite-renderer.js.map +1 -1
  103. package/dist/composite/composite-row.d.ts +1 -1
  104. package/dist/composite/composite-row.d.ts.map +1 -1
  105. package/dist/composite/composite-row.js +3 -3
  106. package/dist/composite/composite-row.js.map +1 -1
  107. package/dist/composite/composite-separator.d.ts +2 -2
  108. package/dist/composite/composite-separator.d.ts.map +1 -1
  109. package/dist/composite/composite-separator.js +3 -3
  110. package/dist/composite/composite-separator.js.map +1 -1
  111. package/dist/composite/composite-typeahead.d.ts +1 -1
  112. package/dist/composite/composite-typeahead.js +3 -3
  113. package/dist/composite/composite-typeahead.js.map +1 -1
  114. package/dist/composite/composite.d.ts +1 -1
  115. package/dist/composite/composite.js +3 -3
  116. package/dist/composite/composite.js.map +1 -1
  117. package/dist/{composite-DLvyFHMq.d.ts → composite-KBhCGLEy.d.ts} +3 -3
  118. package/dist/{composite-DLvyFHMq.d.ts.map → composite-KBhCGLEy.d.ts.map} +1 -1
  119. package/dist/{composite-hover-C7ul163w.d.ts → composite-hover-BpXq3T8J.d.ts} +2 -2
  120. package/dist/{composite-hover-C7ul163w.d.ts.map → composite-hover-BpXq3T8J.d.ts.map} +1 -1
  121. package/dist/{composite-item-B4WTelVz.d.ts → composite-item-d4UXaZ84.d.ts} +4 -4
  122. package/dist/{composite-item-B4WTelVz.d.ts.map → composite-item-d4UXaZ84.d.ts.map} +1 -1
  123. package/dist/{composite-typeahead-DDhpyKqm.d.ts → composite-typeahead-0euW43GU.d.ts} +2 -2
  124. package/dist/{composite-typeahead-DDhpyKqm.d.ts.map → composite-typeahead-0euW43GU.d.ts.map} +1 -1
  125. package/dist/dialog/dialog-backdrop.d.ts +1 -1
  126. package/dist/dialog/dialog-description.d.ts +1 -1
  127. package/dist/dialog/dialog-disclosure.d.ts +1 -1
  128. package/dist/dialog/dialog-disclosure.js +1 -1
  129. package/dist/dialog/dialog-disclosure.js.map +1 -1
  130. package/dist/dialog/dialog-dismiss.d.ts +1 -1
  131. package/dist/dialog/dialog-heading.d.ts +1 -1
  132. package/dist/dialog/dialog.d.ts +1 -1
  133. package/dist/dialog/dialog.js +18 -6
  134. package/dist/dialog/dialog.js.map +1 -1
  135. package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts +1 -3
  136. package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts.map +1 -1
  137. package/dist/dialog/utils/disable-accessibility-tree-outside.js +1 -15
  138. package/dist/dialog/utils/disable-accessibility-tree-outside.js.map +1 -1
  139. package/dist/dialog/utils/use-hide-on-interact-outside.d.ts +1 -1
  140. package/dist/dialog/utils/use-hide-on-interact-outside.js +2 -2
  141. package/dist/dialog/utils/use-hide-on-interact-outside.js.map +1 -1
  142. package/dist/dialog/utils/use-prevent-body-scroll.js +2 -1
  143. package/dist/dialog/utils/use-prevent-body-scroll.js.map +1 -1
  144. package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts +1 -1
  145. package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts.map +1 -1
  146. package/dist/{dialog-C__C-zX2.d.ts → dialog-D23r2ZWj.d.ts} +4 -4
  147. package/dist/{dialog-C__C-zX2.d.ts.map → dialog-D23r2ZWj.d.ts.map} +1 -1
  148. package/dist/{dialog-description-BCZJ1Kyd.d.ts → dialog-description-CJGxnEvk.d.ts} +2 -2
  149. package/dist/{dialog-description-BCZJ1Kyd.d.ts.map → dialog-description-CJGxnEvk.d.ts.map} +1 -1
  150. package/dist/{dialog-disclosure-DLD10zlb.d.ts → dialog-disclosure-DSESk5pv.d.ts} +3 -3
  151. package/dist/{dialog-disclosure-DLD10zlb.d.ts.map → dialog-disclosure-DSESk5pv.d.ts.map} +1 -1
  152. package/dist/{dialog-dismiss-CnwEbzc6.d.ts → dialog-dismiss-DW3XQYvp.d.ts} +3 -3
  153. package/dist/{dialog-dismiss-CnwEbzc6.d.ts.map → dialog-dismiss-DW3XQYvp.d.ts.map} +1 -1
  154. package/dist/{dialog-heading-DQvnOfZH.d.ts → dialog-heading-DGA5d8VH.d.ts} +3 -3
  155. package/dist/{dialog-heading-DQvnOfZH.d.ts.map → dialog-heading-DGA5d8VH.d.ts.map} +1 -1
  156. package/dist/disclosure/disclosure-content.js +1 -1
  157. package/dist/disclosure/disclosure-content.js.map +1 -1
  158. package/dist/disclosure/disclosure.d.ts +1 -1
  159. package/dist/disclosure/disclosure.js +1 -1
  160. package/dist/disclosure/disclosure.js.map +1 -1
  161. package/dist/{disclosure-CQ37hPVP.d.ts → disclosure-C4F4sCVZ.d.ts} +3 -3
  162. package/dist/{disclosure-CQ37hPVP.d.ts.map → disclosure-C4F4sCVZ.d.ts.map} +1 -1
  163. package/dist/focus-trap/focus-trap-region.d.ts +1 -1
  164. package/dist/focus-trap/focus-trap-region.d.ts.map +1 -1
  165. package/dist/focus-trap/focus-trap.d.ts +1 -1
  166. package/dist/focus-trap/focus-trap.d.ts.map +1 -1
  167. package/dist/focusable/focusable-container.d.ts +1 -1
  168. package/dist/focusable/focusable-container.d.ts.map +1 -1
  169. package/dist/focusable/focusable.d.ts +1 -1
  170. package/dist/focusable/focusable.js +49 -8
  171. package/dist/focusable/focusable.js.map +1 -1
  172. package/dist/{focusable-B00tOxtB.d.ts → focusable-dBZH13-T.d.ts} +2 -2
  173. package/dist/{focusable-B00tOxtB.d.ts.map → focusable-dBZH13-T.d.ts.map} +1 -1
  174. package/dist/form/form-checkbox.d.ts +1 -1
  175. package/dist/form/form-checkbox.d.ts.map +1 -1
  176. package/dist/form/form-checkbox.js +1 -1
  177. package/dist/form/form-checkbox.js.map +1 -1
  178. package/dist/form/form-control.d.ts +2 -2
  179. package/dist/form/form-control.d.ts.map +1 -1
  180. package/dist/form/form-control.js +1 -1
  181. package/dist/form/form-control.js.map +1 -1
  182. package/dist/form/form-description.d.ts +2 -2
  183. package/dist/form/form-description.d.ts.map +1 -1
  184. package/dist/form/form-description.js +1 -1
  185. package/dist/form/form-description.js.map +1 -1
  186. package/dist/form/form-error.d.ts +2 -2
  187. package/dist/form/form-error.d.ts.map +1 -1
  188. package/dist/form/form-error.js +1 -1
  189. package/dist/form/form-error.js.map +1 -1
  190. package/dist/form/form-field.d.ts +1 -1
  191. package/dist/form/form-field.d.ts.map +1 -1
  192. package/dist/form/form-group-label.d.ts +2 -2
  193. package/dist/form/form-group-label.d.ts.map +1 -1
  194. package/dist/form/form-group.d.ts +2 -2
  195. package/dist/form/form-group.d.ts.map +1 -1
  196. package/dist/form/form-input.d.ts +2 -2
  197. package/dist/form/form-input.d.ts.map +1 -1
  198. package/dist/form/form-input.js +1 -1
  199. package/dist/form/form-input.js.map +1 -1
  200. package/dist/form/form-label.d.ts +2 -2
  201. package/dist/form/form-label.d.ts.map +1 -1
  202. package/dist/form/form-label.js +1 -1
  203. package/dist/form/form-label.js.map +1 -1
  204. package/dist/form/form-push.d.ts +3 -3
  205. package/dist/form/form-push.d.ts.map +1 -1
  206. package/dist/form/form-push.js +1 -1
  207. package/dist/form/form-push.js.map +1 -1
  208. package/dist/form/form-radio-group.d.ts +1 -1
  209. package/dist/form/form-radio-group.d.ts.map +1 -1
  210. package/dist/form/form-radio.d.ts +1 -1
  211. package/dist/form/form-radio.d.ts.map +1 -1
  212. package/dist/form/form-radio.js +1 -1
  213. package/dist/form/form-radio.js.map +1 -1
  214. package/dist/form/form-remove.d.ts +16 -12
  215. package/dist/form/form-remove.d.ts.map +1 -1
  216. package/dist/form/form-remove.js +15 -11
  217. package/dist/form/form-remove.js.map +1 -1
  218. package/dist/form/form-reset.d.ts +2 -2
  219. package/dist/form/form-reset.d.ts.map +1 -1
  220. package/dist/form/form-reset.js +1 -1
  221. package/dist/form/form-reset.js.map +1 -1
  222. package/dist/form/form-submit.d.ts +2 -2
  223. package/dist/form/form-submit.d.ts.map +1 -1
  224. package/dist/form/form-submit.js +1 -1
  225. package/dist/form/form-submit.js.map +1 -1
  226. package/dist/form/form.d.ts +1 -1
  227. package/dist/form/form.d.ts.map +1 -1
  228. package/dist/form/form.js +1 -1
  229. package/dist/form/form.js.map +1 -1
  230. package/dist/group/group-label.d.ts +1 -1
  231. package/dist/group/group.d.ts +1 -1
  232. package/dist/{group-label-C16IDs1b.d.ts → group-label-BKYqD4Sj.d.ts} +2 -2
  233. package/dist/{group-label-C16IDs1b.d.ts.map → group-label-BKYqD4Sj.d.ts.map} +1 -1
  234. package/dist/{group-CamegDJA.d.ts → group-nGD9e6Dj.d.ts} +2 -2
  235. package/dist/{group-CamegDJA.d.ts.map → group-nGD9e6Dj.d.ts.map} +1 -1
  236. package/dist/heading/heading.d.ts +1 -1
  237. package/dist/heading/heading.js +2 -2
  238. package/dist/heading/heading.js.map +1 -1
  239. package/dist/{heading-zY9g_9K-.d.ts → heading-D_AmeqL5.d.ts} +2 -2
  240. package/dist/{heading-zY9g_9K-.d.ts.map → heading-D_AmeqL5.d.ts.map} +1 -1
  241. package/dist/hovercard/hovercard-anchor.d.ts +2 -2
  242. package/dist/hovercard/hovercard-anchor.d.ts.map +1 -1
  243. package/dist/hovercard/hovercard-anchor.js +1 -1
  244. package/dist/hovercard/hovercard-anchor.js.map +1 -1
  245. package/dist/hovercard/hovercard-arrow.d.ts +1 -1
  246. package/dist/hovercard/hovercard-arrow.d.ts.map +1 -1
  247. package/dist/hovercard/hovercard-description.d.ts +2 -2
  248. package/dist/hovercard/hovercard-description.d.ts.map +1 -1
  249. package/dist/hovercard/hovercard-disclosure.d.ts +2 -2
  250. package/dist/hovercard/hovercard-disclosure.d.ts.map +1 -1
  251. package/dist/hovercard/hovercard-disclosure.js +4 -4
  252. package/dist/hovercard/hovercard-disclosure.js.map +1 -1
  253. package/dist/hovercard/hovercard-dismiss.d.ts +2 -2
  254. package/dist/hovercard/hovercard-dismiss.d.ts.map +1 -1
  255. package/dist/hovercard/hovercard-heading.d.ts +2 -2
  256. package/dist/hovercard/hovercard-heading.d.ts.map +1 -1
  257. package/dist/hovercard/hovercard.d.ts +1 -1
  258. package/dist/hovercard/hovercard.js +2 -2
  259. package/dist/hovercard/hovercard.js.map +1 -1
  260. package/dist/menu/menu-arrow.d.ts +2 -2
  261. package/dist/menu/menu-arrow.d.ts.map +1 -1
  262. package/dist/menu/menu-bar-provider.js +1 -1
  263. package/dist/menu/menu-bar-provider.js.map +1 -1
  264. package/dist/menu/menu-bar-store.d.ts +3 -3
  265. package/dist/menu/menu-bar-store.js +3 -3
  266. package/dist/menu/menu-bar-store.js.map +1 -1
  267. package/dist/menu/menu-bar.d.ts +1 -1
  268. package/dist/menu/menu-bar.d.ts.map +1 -1
  269. package/dist/menu/menu-bar.js +1 -1
  270. package/dist/menu/menu-bar.js.map +1 -1
  271. package/dist/menu/menu-button-arrow.d.ts +2 -2
  272. package/dist/menu/menu-button-arrow.d.ts.map +1 -1
  273. package/dist/menu/menu-button.d.ts +3 -3
  274. package/dist/menu/menu-button.d.ts.map +1 -1
  275. package/dist/menu/menu-button.js +1 -1
  276. package/dist/menu/menu-button.js.map +1 -1
  277. package/dist/menu/menu-context.d.ts +10 -3
  278. package/dist/menu/menu-context.d.ts.map +1 -1
  279. package/dist/menu/menu-context.js +8 -1
  280. package/dist/menu/menu-context.js.map +1 -1
  281. package/dist/menu/menu-description.d.ts +2 -2
  282. package/dist/menu/menu-description.d.ts.map +1 -1
  283. package/dist/menu/menu-dismiss.d.ts +2 -2
  284. package/dist/menu/menu-dismiss.d.ts.map +1 -1
  285. package/dist/menu/menu-group-label.d.ts +2 -2
  286. package/dist/menu/menu-group-label.d.ts.map +1 -1
  287. package/dist/menu/menu-group.d.ts +2 -2
  288. package/dist/menu/menu-group.d.ts.map +1 -1
  289. package/dist/menu/menu-heading.d.ts +2 -2
  290. package/dist/menu/menu-heading.d.ts.map +1 -1
  291. package/dist/menu/menu-item-check.d.ts +2 -2
  292. package/dist/menu/menu-item-check.d.ts.map +1 -1
  293. package/dist/menu/menu-item-checkbox.d.ts +2 -2
  294. package/dist/menu/menu-item-checkbox.d.ts.map +1 -1
  295. package/dist/menu/menu-item-checkbox.js +1 -1
  296. package/dist/menu/menu-item-checkbox.js.map +1 -1
  297. package/dist/menu/menu-item-radio.d.ts +2 -2
  298. package/dist/menu/menu-item-radio.d.ts.map +1 -1
  299. package/dist/menu/menu-item-radio.js +1 -1
  300. package/dist/menu/menu-item-radio.js.map +1 -1
  301. package/dist/menu/menu-item.d.ts +5 -5
  302. package/dist/menu/menu-item.d.ts.map +1 -1
  303. package/dist/menu/menu-item.js +8 -4
  304. package/dist/menu/menu-item.js.map +1 -1
  305. package/dist/menu/menu-list.d.ts +4 -4
  306. package/dist/menu/menu-list.d.ts.map +1 -1
  307. package/dist/menu/menu-list.js +6 -2
  308. package/dist/menu/menu-list.js.map +1 -1
  309. package/dist/menu/menu-provider.d.ts +1 -1
  310. package/dist/menu/menu-separator.d.ts +2 -2
  311. package/dist/menu/menu-separator.d.ts.map +1 -1
  312. package/dist/menu/menu-store.d.ts +1 -1
  313. package/dist/menu/menu.js +1 -1
  314. package/dist/menu/menu.js.map +1 -1
  315. package/dist/{menu-store-0CKKmNek.d.ts → menu-store-BpTJdcL8.d.ts} +2 -2
  316. package/dist/{menu-store-0CKKmNek.d.ts.map → menu-store-BpTJdcL8.d.ts.map} +1 -1
  317. package/dist/menubar/menubar-context.d.ts +2 -3
  318. package/dist/menubar/menubar-context.d.ts.map +1 -1
  319. package/dist/menubar/menubar-context.js +1 -3
  320. package/dist/menubar/menubar-context.js.map +1 -1
  321. package/dist/menubar/menubar-provider.d.ts +1 -1
  322. package/dist/menubar/menubar-store.d.ts +1 -1
  323. package/dist/menubar/menubar-store.js +2 -2
  324. package/dist/menubar/menubar-store.js.map +1 -1
  325. package/dist/menubar/menubar.d.ts +3 -3
  326. package/dist/menubar/menubar.d.ts.map +1 -1
  327. package/dist/{menubar-store-3h0eNIbS.d.ts → menubar-store-C553OKBw.d.ts} +3 -3
  328. package/dist/{menubar-store-3h0eNIbS.d.ts.map → menubar-store-C553OKBw.d.ts.map} +1 -1
  329. package/dist/popover/popover-anchor.d.ts +1 -1
  330. package/dist/popover/popover-arrow.d.ts +1 -1
  331. package/dist/popover/popover-arrow.d.ts.map +1 -1
  332. package/dist/popover/popover-arrow.js +4 -4
  333. package/dist/popover/popover-arrow.js.map +1 -1
  334. package/dist/popover/popover-description.d.ts +1 -1
  335. package/dist/popover/popover-disclosure-arrow.d.ts +1 -1
  336. package/dist/popover/popover-disclosure-arrow.d.ts.map +1 -1
  337. package/dist/popover/popover-disclosure-arrow.js +1 -1
  338. package/dist/popover/popover-disclosure-arrow.js.map +1 -1
  339. package/dist/popover/popover-disclosure.d.ts +3 -3
  340. package/dist/popover/popover-disclosure.d.ts.map +1 -1
  341. package/dist/popover/popover-disclosure.js +1 -1
  342. package/dist/popover/popover-disclosure.js.map +1 -1
  343. package/dist/popover/popover-dismiss.d.ts +1 -1
  344. package/dist/popover/popover-heading.d.ts +1 -1
  345. package/dist/popover/popover.d.ts +1 -1
  346. package/dist/popover/popover.js +2 -2
  347. package/dist/popover/popover.js.map +1 -1
  348. package/dist/{popover-CCqiRKqg.d.ts → popover-B9PxE5iP.d.ts} +10 -2
  349. package/dist/popover-B9PxE5iP.d.ts.map +1 -0
  350. package/dist/{popover-anchor-PgfeXyzs.d.ts → popover-anchor-W18KUmuM.d.ts} +2 -2
  351. package/dist/{popover-anchor-PgfeXyzs.d.ts.map → popover-anchor-W18KUmuM.d.ts.map} +1 -1
  352. package/dist/{popover-description-DU753dah.d.ts → popover-description-DbW4mVBb.d.ts} +3 -3
  353. package/dist/{popover-description-DU753dah.d.ts.map → popover-description-DbW4mVBb.d.ts.map} +1 -1
  354. package/dist/{popover-dismiss-DPeI6Zse.d.ts → popover-dismiss-CQFvuLzJ.d.ts} +3 -3
  355. package/dist/{popover-dismiss-DPeI6Zse.d.ts.map → popover-dismiss-CQFvuLzJ.d.ts.map} +1 -1
  356. package/dist/{popover-heading-DGsr6D5W.d.ts → popover-heading-DC8rYnwo.d.ts} +3 -3
  357. package/dist/{popover-heading-DGsr6D5W.d.ts.map → popover-heading-DC8rYnwo.d.ts.map} +1 -1
  358. package/dist/portal/portal.d.ts +1 -1
  359. package/dist/{portal-CMBWiayp.d.ts → portal-CKFTfCWH.d.ts} +2 -2
  360. package/dist/{portal-CMBWiayp.d.ts.map → portal-CKFTfCWH.d.ts.map} +1 -1
  361. package/dist/radio/radio-group.d.ts +2 -2
  362. package/dist/radio/radio-group.d.ts.map +1 -1
  363. package/dist/radio/radio-group.js +1 -1
  364. package/dist/radio/radio-group.js.map +1 -1
  365. package/dist/radio/radio.d.ts +2 -2
  366. package/dist/radio/radio.d.ts.map +1 -1
  367. package/dist/select/select-arrow.d.ts +1 -1
  368. package/dist/select/select-arrow.d.ts.map +1 -1
  369. package/dist/select/select-dismiss.d.ts +2 -2
  370. package/dist/select/select-dismiss.d.ts.map +1 -1
  371. package/dist/select/select-group-label.d.ts +1 -1
  372. package/dist/select/select-group-label.d.ts.map +1 -1
  373. package/dist/select/select-group.d.ts +1 -1
  374. package/dist/select/select-group.d.ts.map +1 -1
  375. package/dist/select/select-heading.d.ts +2 -2
  376. package/dist/select/select-heading.d.ts.map +1 -1
  377. package/dist/select/select-item-check.d.ts +1 -1
  378. package/dist/select/select-item-check.d.ts.map +1 -1
  379. package/dist/select/select-item.d.ts +3 -3
  380. package/dist/select/select-item.d.ts.map +1 -1
  381. package/dist/select/select-item.js +1 -1
  382. package/dist/select/select-item.js.map +1 -1
  383. package/dist/select/select-label.d.ts +1 -1
  384. package/dist/select/select-label.d.ts.map +1 -1
  385. package/dist/select/select-label.js +1 -1
  386. package/dist/select/select-label.js.map +1 -1
  387. package/dist/select/select-list.d.ts +3 -3
  388. package/dist/select/select-list.d.ts.map +1 -1
  389. package/dist/select/select-list.js +1 -1
  390. package/dist/select/select-list.js.map +1 -1
  391. package/dist/select/select-popover.d.ts +1 -1
  392. package/dist/select/select-renderer.d.ts +2 -2
  393. package/dist/select/select-renderer.d.ts.map +1 -1
  394. package/dist/select/select-row.d.ts +1 -1
  395. package/dist/select/select-row.d.ts.map +1 -1
  396. package/dist/select/select-row.js +1 -1
  397. package/dist/select/select-row.js.map +1 -1
  398. package/dist/select/select-separator.d.ts +1 -1
  399. package/dist/select/select-separator.d.ts.map +1 -1
  400. package/dist/select/select.d.ts +2 -2
  401. package/dist/select/select.d.ts.map +1 -1
  402. package/dist/select/select.js +1 -1
  403. package/dist/select/select.js.map +1 -1
  404. package/dist/separator/separator.d.ts +1 -1
  405. package/dist/{separator--ozQfMcK.d.ts → separator-BnvSVwBa.d.ts} +2 -2
  406. package/dist/{separator--ozQfMcK.d.ts.map → separator-BnvSVwBa.d.ts.map} +1 -1
  407. package/dist/tab/tab-list.d.ts +2 -2
  408. package/dist/tab/tab-list.d.ts.map +1 -1
  409. package/dist/tab/tab-list.js +1 -1
  410. package/dist/tab/tab-list.js.map +1 -1
  411. package/dist/tab/tab-panel.d.ts +3 -3
  412. package/dist/tab/tab-panel.d.ts.map +1 -1
  413. package/dist/tab/tab-panel.js +2 -3
  414. package/dist/tab/tab-panel.js.map +1 -1
  415. package/dist/tab/tab.d.ts +2 -2
  416. package/dist/tab/tab.d.ts.map +1 -1
  417. package/dist/tab/tab.js +1 -1
  418. package/dist/tab/tab.js.map +1 -1
  419. package/dist/tag/tag-input.d.ts +2 -2
  420. package/dist/tag/tag-input.d.ts.map +1 -1
  421. package/dist/tag/tag-input.js +1 -2
  422. package/dist/tag/tag-input.js.map +1 -1
  423. package/dist/tag/tag-list-label.d.ts +2 -2
  424. package/dist/tag/tag-list-label.d.ts.map +1 -1
  425. package/dist/tag/tag-list-label.js +1 -1
  426. package/dist/tag/tag-list-label.js.map +1 -1
  427. package/dist/tag/tag-list.d.ts +2 -2
  428. package/dist/tag/tag-list.d.ts.map +1 -1
  429. package/dist/tag/tag-list.js +1 -1
  430. package/dist/tag/tag-list.js.map +1 -1
  431. package/dist/tag/tag-remove.d.ts +1 -1
  432. package/dist/tag/tag-remove.d.ts.map +1 -1
  433. package/dist/tag/tag-remove.js +1 -2
  434. package/dist/tag/tag-remove.js.map +1 -1
  435. package/dist/tag/tag-value.js +1 -1
  436. package/dist/tag/tag-value.js.map +1 -1
  437. package/dist/tag/tag-values.js +1 -1
  438. package/dist/tag/tag-values.js.map +1 -1
  439. package/dist/tag/tag.d.ts +2 -2
  440. package/dist/tag/tag.d.ts.map +1 -1
  441. package/dist/tag/tag.js +1 -1
  442. package/dist/tag/tag.js.map +1 -1
  443. package/dist/toolbar/toolbar-container.d.ts +1 -1
  444. package/dist/toolbar/toolbar-container.d.ts.map +1 -1
  445. package/dist/toolbar/toolbar-input.d.ts +1 -1
  446. package/dist/toolbar/toolbar-input.d.ts.map +1 -1
  447. package/dist/toolbar/toolbar-item.d.ts +2 -2
  448. package/dist/toolbar/toolbar-item.d.ts.map +1 -1
  449. package/dist/toolbar/toolbar-separator.d.ts +1 -1
  450. package/dist/toolbar/toolbar-separator.d.ts.map +1 -1
  451. package/dist/toolbar/toolbar.d.ts +2 -2
  452. package/dist/toolbar/toolbar.d.ts.map +1 -1
  453. package/dist/tooltip/tooltip-anchor.d.ts +1 -1
  454. package/dist/tooltip/tooltip-anchor.d.ts.map +1 -1
  455. package/dist/tooltip/tooltip-anchor.js +15 -4
  456. package/dist/tooltip/tooltip-anchor.js.map +1 -1
  457. package/dist/tooltip/tooltip-arrow.d.ts +1 -1
  458. package/dist/tooltip/tooltip-arrow.d.ts.map +1 -1
  459. package/dist/tooltip/tooltip-arrow.js +1 -1
  460. package/dist/tooltip/tooltip-arrow.js.map +1 -1
  461. package/dist/tooltip/tooltip.js +1 -1
  462. package/dist/tooltip/tooltip.js.map +1 -1
  463. package/dist/visually-hidden/visually-hidden.d.ts +1 -1
  464. package/dist/visually-hidden/visually-hidden.d.ts.map +1 -1
  465. package/package.json +8 -8
  466. package/src/collection/collection-item-offscreen.tsx +1 -1
  467. package/src/combobox/combobox.tsx +47 -1
  468. package/src/composite/composite-container.tsx +2 -2
  469. package/src/composite/composite-hover.tsx +8 -14
  470. package/src/composite/composite-item-offscreen.tsx +2 -2
  471. package/src/composite/composite-item.tsx +2 -2
  472. package/src/composite/composite-renderer.tsx +2 -2
  473. package/src/composite/composite-row.tsx +2 -2
  474. package/src/composite/composite-separator.tsx +2 -2
  475. package/src/composite/composite-typeahead.tsx +2 -2
  476. package/src/composite/composite.tsx +3 -3
  477. package/src/dialog/dialog.tsx +33 -10
  478. package/src/dialog/utils/disable-accessibility-tree-outside.ts +0 -25
  479. package/src/dialog/utils/use-hide-on-interact-outside.ts +3 -2
  480. package/src/focusable/focusable.tsx +53 -10
  481. package/src/form/form-remove.tsx +14 -10
  482. package/src/form/form.tsx +3 -1
  483. package/src/heading/heading.tsx +2 -5
  484. package/src/hovercard/hovercard-disclosure.tsx +18 -4
  485. package/src/hovercard/hovercard.tsx +1 -1
  486. package/src/menu/menu-bar-store.ts +2 -2
  487. package/src/menu/menu-context.tsx +8 -0
  488. package/src/menu/menu-item.tsx +18 -1
  489. package/src/menu/menu-list.tsx +15 -0
  490. package/src/menubar/menubar-context.tsx +0 -5
  491. package/src/menubar/menubar-store.ts +2 -2
  492. package/src/popover/popover-arrow.tsx +3 -3
  493. package/src/popover/popover.tsx +8 -0
  494. package/src/tab/tab-panel.tsx +1 -1
  495. package/src/tag/tag-input.tsx +0 -1
  496. package/src/tag/tag-remove.tsx +0 -1
  497. package/src/tooltip/tooltip-anchor.tsx +23 -8
  498. package/dist/collection-renderer-DsPD9ksD.d.ts.map +0 -1
  499. package/dist/popover-CCqiRKqg.d.ts.map +0 -1
  500. package/src/hovercard/utils/__tests__/polygon-test.ts +0 -66
@@ -1 +1 @@
1
- {"version":3,"file":"select-item.js","names":[],"sources":["../../src/select/select-item.tsx"],"sourcesContent":["import { useStoreState, useStoreStateObject } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useId,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport {\n getPopupItemRole,\n isDownloading,\n isOpeningInNewTab,\n disabledFromProps,\n invariant,\n} from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, MouseEvent } from \"react\";\nimport { useCallback } from \"react\";\nimport type { CompositeHoverOptions } from \"../composite/composite-hover.tsx\";\nimport { useCompositeHover } from \"../composite/composite-hover.tsx\";\nimport type { CompositeItemOptions } from \"../composite/composite-item.tsx\";\nimport { useCompositeItem } from \"../composite/composite-item.tsx\";\nimport {\n SelectItemCheckedContext,\n useSelectScopedContext,\n} from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nfunction isSelected(\n storeValue?: string | readonly string[],\n itemValue?: string,\n) {\n if (itemValue == null) return;\n if (storeValue == null) return false;\n if (Array.isArray(storeValue)) {\n return storeValue.includes(itemValue);\n }\n return storeValue === itemValue;\n}\n\n/**\n * Returns props to create a `SelectItem` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectItem({ store, value: \"Apple\" });\n * <Role {...props} />\n * ```\n */\nexport const useSelectItem = createHook<TagName, SelectItemOptions>(\n function useSelectItem({\n store,\n value,\n getItem: getItemProp,\n hideOnClick,\n setValueOnClick = value != null,\n preventScrollOnKeyDown = true,\n focusOnHover = true,\n ...props\n }) {\n const context = useSelectScopedContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectItem must be wrapped in a SelectList or SelectPopover component.\",\n );\n\n const id = useId(props.id);\n const disabled = disabledFromProps(props);\n\n const { listElement, multiSelectable, selected, autoFocus } =\n useStoreStateObject(store, {\n listElement: \"listElement\",\n multiSelectable(state) {\n return Array.isArray(state.value);\n },\n selected(state) {\n return isSelected(state.value, value);\n },\n autoFocus(state) {\n if (value == null) return false;\n if (state.value == null) return false;\n if (state.activeId !== id && store?.item(state.activeId)) {\n return false;\n }\n if (Array.isArray(state.value)) {\n return state.value[state.value.length - 1] === value;\n }\n return state.value === value;\n },\n });\n\n const virtualFocus = useStoreState(store?.combobox, \"virtualFocus\");\n\n const getItem = useCallback<NonNullable<CompositeItemOptions[\"getItem\"]>>(\n (item) => {\n // When the item is disabled, we don't register its value.\n const nextItem = {\n ...item,\n value: disabled ? undefined : value,\n };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [disabled, value, getItemProp],\n );\n\n hideOnClick = hideOnClick ?? (value != null && !multiSelectable);\n\n const onClickProp = props.onClick;\n const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n const hideOnClickProp = useBooleanEvent(hideOnClick);\n\n const onClick = useEvent((event: MouseEvent<HTMLType>) => {\n onClickProp?.(event);\n if (event.defaultPrevented) return;\n if (isDownloading(event)) return;\n if (isOpeningInNewTab(event)) return;\n if (setValueOnClickProp(event) && value != null) {\n store?.setValue((prevValue) => {\n if (!Array.isArray(prevValue)) return value;\n if (prevValue.includes(value)) {\n return prevValue.filter((v) => v !== value);\n }\n return [...prevValue, value];\n });\n }\n if (hideOnClickProp(event)) {\n store?.hide();\n }\n });\n\n props = useWrapElement(\n props,\n (element) => (\n <SelectItemCheckedContext.Provider value={selected ?? false}>\n {element}\n </SelectItemCheckedContext.Provider>\n ),\n [selected],\n );\n\n const shouldAutoFocus = props.autoFocus ?? autoFocus;\n\n props = {\n role: getPopupItemRole(listElement),\n \"aria-selected\": selected,\n children: value,\n ...props,\n id,\n // When virtualFocus is false (e.g., iOS Safari), we suppress autoFocus to\n // prevent a re-mounted selected item from stealing focus from the\n // combobox input (which dismisses the iOS keyboard). We keep\n // data-autofocus so the dialog's initial focus effect can still find and\n // focus this element. See https://github.com/ariakit/ariakit/issues/5047\n autoFocus: virtualFocus === false ? false : shouldAutoFocus,\n \"data-autofocus\": shouldAutoFocus || undefined,\n onClick,\n };\n\n props = useCompositeItem<TagName>({\n store,\n getItem,\n preventScrollOnKeyDown,\n ...props,\n });\n\n const focusOnHoverProp = useBooleanEvent(focusOnHover);\n\n props = useCompositeHover({\n store,\n ...props,\n // We have to disable focusOnHover when the popup is closed, otherwise\n // the active item will change to null (the container) when the popup is\n // closed by clicking on an item.\n focusOnHover(event) {\n if (!focusOnHoverProp(event)) return false;\n const state = store.getState();\n return state.open;\n },\n });\n\n return props;\n },\n);\n\n/**\n * Renders a select item inside a\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover).\n *\n * The `role` attribute will be automatically set on the item based on the\n * list's own `role` attribute. For example, if the\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) component's\n * `role` attribute is set to `listbox` (which is the default), the item `role`\n * will be set to `option`.\n *\n * By default, the [`value`](https://ariakit.com/reference/select-item#value)\n * prop will be rendered as the children, but this can be overriden if a custom\n * children is provided.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {4-5}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectItem = memo(\n forwardRef(function SelectItem(props: SelectItemProps) {\n const htmlProps = useSelectItem(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface SelectItemOptions<T extends ElementType = TagName>\n extends CompositeItemOptions<T>, CompositeHoverOptions<T> {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the parent\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components'\n * context will be used.\n */\n store?: SelectStore;\n /**\n * The value of the item. This will be rendered as the children by default.\n * - If\n * [`setValueOnClick`](https://ariakit.com/reference/select-item#setvalueonclick)\n * is set to `true`, the\n * [`value`](https://ariakit.com/reference/select-provider#value) state will\n * be set to this value when the user clicks on it.\n * - If\n * [`setValueOnMove`](https://ariakit.com/reference/select-provider#setvalueonmove)\n * is set to `true`, the\n * [`value`](https://ariakit.com/reference/select-provider#value) state will\n * be set to this value when the user moves to it (which is usually the case\n * when moving through the items using the keyboard).\n *\n * Live examples:\n * - [Form with Select](https://ariakit.com/examples/form-select)\n * - [Animated Select](https://ariakit.com/examples/select-animated)\n * - [Select with Combobox](https://ariakit.com/examples/select-combobox)\n * - [Select Grid](https://ariakit.com/examples/select-grid)\n * - [SelectGroup](https://ariakit.com/examples/select-group)\n * - [Select with custom\n * item](https://ariakit.com/examples/select-item-custom)\n * @example\n * ```jsx\n * <SelectItem value=\"Apple\" />\n * ```\n */\n value?: string;\n /**\n * Whether to hide the select when this item is clicked. By default, it's\n * `true` when the [`value`](https://ariakit.com/reference/select-item#value)\n * prop is also provided.\n */\n hideOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;\n /**\n * Whether to set the select value with this item's value, if any, when this\n * item is clicked. By default, it's `true` when the\n * [`value`](https://ariakit.com/reference/select-item#value) prop is also\n * provided.\n *\n * Live examples:\n * - [Select with Next.js App\n * Router](https://ariakit.com/examples/select-next-router)\n */\n setValueOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;\n}\n\nexport type SelectItemProps<T extends ElementType = TagName> = Props<\n T,\n SelectItemOptions<T>\n>;\n"],"mappings":";;;;;;;;;;AAoCA,MAAA,UAAS;SAIH,WAAa,YAAM,WAAA;CACvB,IAAI,aAAA,MAAc;CAClB,IAAI,cAAc,MAAA,OAChB;CAEF,IAAA,MAAO,QAAA,UAAe,GAAA,OAAA,WAAA,SAAA,SAAA;CACxB,OAAA,eAAA;;;;;;;;;;;;MAuBI,gBAAgB,WAAA,SAAuB,cAAA,EAAA,OAAA,OAAA,SAAA,aAAA,aAAA,kBAAA,SAAA,MAAA,yBAAA,MAAA,eAAA,MAAA,GAAA,SAAA;CACvC,MAAA,UAAQ,uBAAS;CAEjB,QAAA,SAGI;CAGJ,UAAM,OAAW,wEAAQ;CACzB,MAAM,KAAA,MAAW,MAAA,EAAA;CAEjB,MAAM,WAAE,kBAAa,KAAiB;OAElC,EAAA,aAAa,iBAAA,UAAA,cAAA,oBAAA,OAAA;EACb,aAAA;kBACe,OAAQ;GACvB,OAAA,MAAA,QAAA,MAAA,KAAA;EACA;WACS,OAAA;GACT,OAAA,WAAA,MAAA,OAAA,KAAA;EACA;YACM,OAAS;GACb,IAAI,SAAM,MAAS,OAAM;GACzB,IAAI,MAAM,SAAA,MAAa,OAAM;GAG7B,IAAI,MAAM,aAAQ,MAAW,OAC3B,KAAO,MAAM,QAAM,GAAM,OAAM;GAEjC,IAAA,MAAO,QAAM,MAAU,KAAA,GAAA,OAAA,MAAA,MAAA,MAAA,MAAA,SAAA,OAAA;GACzB,OAAA,MAAA,UAAA;EACD;CAEH,CAAA;CAEA,MAAM,eAAU,cACb,OAAS,UAAA,cAAA;OAER,UAAM,aAAW,SAAA;QACZ,WAAA;GACH,GAAA;GACF,OAAA,WAAA,KAAA,IAAA;EACA;EAGA,IAAA,aAAO,OAAA,YAAA,QAAA;EACT,OACA;IAAC;EAAU;EAAO;EACpB;CAEA,CAAA;CAEA,cAAM,gBAAoB,SAAA,QAAA,CAAA;CAC1B,MAAM,cAAA,MAAA;CACN,MAAM,sBAAkB,gBAAgB,eAAW;CAEnD,MAAM,kBAAU,gBAA0C,WAAA;OACxD,UAAc,UAAK,UAAA;EACnB,cAAU,KAAA;EACV,IAAI,MAAA,kBAAsB;EAC1B,IAAI,cAAA,KAAkB,GAAA;EACtB,IAAI,kBAAA,KAAoB,GAAK;MAEzB,oBAAmB,KAAS,KAAG,SAAO,MAAA,OAAA,UAAA,cAAA;GACtC,IAAI,CAAA,MAAA,QAAU,SAAc,GAC1B,OAAO;GAET,IAAA,UAAW,SAAW,KAAK,GAAA,OAAA,UAAA,QAAA,MAAA,MAAA,KAAA;GAC5B,OAAA,CAAA,GAAA,WAAA,KAAA;EAEH,CAAA;EAGD,IAAA,gBAAA,KAAA,GAAA,OAAA,KAAA;CAED,CAAA;SAG8C,eAAY,QAAA,YAAA,oBAAA,yBAAA,UAAA;qBACnD;EACgC,UAEpC;CAGH,CAAA,GAAA,CAAA,QAAM,CAAA;CAEN,MAAA,kBAAQ,MAAA,aAAA;SACA;EACN,MAAA,iBAAiB,WAAA;EACjB,iBAAU;EACV,UAAG;EACH,GAAA;EAMA;EACA,WAAA,iBAAkB,QAAA,QAAmB;EACrC,kBAAA,mBAAA,KAAA;EACF;CAEA;SACE,iBAAA;EACA;EACA;EACA;EACD,GAAA;CAED,CAAA;CAEA,MAAA,mBAAQ,gBAAkB,YAAA;SACxB,kBAAA;EACA;EAIA,GAAA;eACO,OAAA;GAEL,IAAA,CAAA,iBAAW,KAAE,GAAA,OAAA;GACf,OAAA,MAAA,SAAA,EAAA;EACD;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BI,aAAO,KAAc,WADH,SAAA,WACqB,OAAA;CACxC,OACH,cAAA,SAAA,cAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"select-item.js","names":[],"sources":["../../src/select/select-item.tsx"],"sourcesContent":["import { useStoreState, useStoreStateObject } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useId,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport {\n getPopupItemRole,\n isDownloading,\n isOpeningInNewTab,\n disabledFromProps,\n invariant,\n} from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, MouseEvent } from \"react\";\nimport { useCallback } from \"react\";\nimport type { CompositeHoverOptions } from \"../composite/composite-hover.tsx\";\nimport { useCompositeHover } from \"../composite/composite-hover.tsx\";\nimport type { CompositeItemOptions } from \"../composite/composite-item.tsx\";\nimport { useCompositeItem } from \"../composite/composite-item.tsx\";\nimport {\n SelectItemCheckedContext,\n useSelectScopedContext,\n} from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nfunction isSelected(\n storeValue?: string | readonly string[],\n itemValue?: string,\n) {\n if (itemValue == null) return;\n if (storeValue == null) return false;\n if (Array.isArray(storeValue)) {\n return storeValue.includes(itemValue);\n }\n return storeValue === itemValue;\n}\n\n/**\n * Returns props to create a `SelectItem` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectItem({ store, value: \"Apple\" });\n * <Role {...props} />\n * ```\n */\nexport const useSelectItem = createHook<TagName, SelectItemOptions>(\n function useSelectItem({\n store,\n value,\n getItem: getItemProp,\n hideOnClick,\n setValueOnClick = value != null,\n preventScrollOnKeyDown = true,\n focusOnHover = true,\n ...props\n }) {\n const context = useSelectScopedContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectItem must be wrapped in a SelectList or SelectPopover component.\",\n );\n\n const id = useId(props.id);\n const disabled = disabledFromProps(props);\n\n const { listElement, multiSelectable, selected, autoFocus } =\n useStoreStateObject(store, {\n listElement: \"listElement\",\n multiSelectable(state) {\n return Array.isArray(state.value);\n },\n selected(state) {\n return isSelected(state.value, value);\n },\n autoFocus(state) {\n if (value == null) return false;\n if (state.value == null) return false;\n if (state.activeId !== id && store?.item(state.activeId)) {\n return false;\n }\n if (Array.isArray(state.value)) {\n return state.value[state.value.length - 1] === value;\n }\n return state.value === value;\n },\n });\n\n const virtualFocus = useStoreState(store?.combobox, \"virtualFocus\");\n\n const getItem = useCallback<NonNullable<CompositeItemOptions[\"getItem\"]>>(\n (item) => {\n // When the item is disabled, we don't register its value.\n const nextItem = {\n ...item,\n value: disabled ? undefined : value,\n };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [disabled, value, getItemProp],\n );\n\n hideOnClick = hideOnClick ?? (value != null && !multiSelectable);\n\n const onClickProp = props.onClick;\n const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n const hideOnClickProp = useBooleanEvent(hideOnClick);\n\n const onClick = useEvent((event: MouseEvent<HTMLType>) => {\n onClickProp?.(event);\n if (event.defaultPrevented) return;\n if (isDownloading(event)) return;\n if (isOpeningInNewTab(event)) return;\n if (setValueOnClickProp(event) && value != null) {\n store?.setValue((prevValue) => {\n if (!Array.isArray(prevValue)) return value;\n if (prevValue.includes(value)) {\n return prevValue.filter((v) => v !== value);\n }\n return [...prevValue, value];\n });\n }\n if (hideOnClickProp(event)) {\n store?.hide();\n }\n });\n\n props = useWrapElement(\n props,\n (element) => (\n <SelectItemCheckedContext.Provider value={selected ?? false}>\n {element}\n </SelectItemCheckedContext.Provider>\n ),\n [selected],\n );\n\n const shouldAutoFocus = props.autoFocus ?? autoFocus;\n\n props = {\n role: getPopupItemRole(listElement),\n \"aria-selected\": selected,\n children: value,\n ...props,\n id,\n // When virtualFocus is false (e.g., iOS Safari), we suppress autoFocus to\n // prevent a re-mounted selected item from stealing focus from the\n // combobox input (which dismisses the iOS keyboard). We keep\n // data-autofocus so the dialog's initial focus effect can still find and\n // focus this element. See https://github.com/ariakit/ariakit/issues/5047\n autoFocus: virtualFocus === false ? false : shouldAutoFocus,\n \"data-autofocus\": shouldAutoFocus || undefined,\n onClick,\n };\n\n props = useCompositeItem<TagName>({\n store,\n getItem,\n preventScrollOnKeyDown,\n ...props,\n });\n\n const focusOnHoverProp = useBooleanEvent(focusOnHover);\n\n props = useCompositeHover({\n store,\n ...props,\n // We have to disable focusOnHover when the popup is closed, otherwise\n // the active item will change to null (the container) when the popup is\n // closed by clicking on an item.\n focusOnHover(event) {\n if (!focusOnHoverProp(event)) return false;\n const state = store.getState();\n return state.open;\n },\n });\n\n return props;\n },\n);\n\n/**\n * Renders a select item inside a\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover).\n *\n * The `role` attribute will be automatically set on the item based on the\n * list's own `role` attribute. For example, if the\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) component's\n * `role` attribute is set to `listbox` (which is the default), the item `role`\n * will be set to `option`.\n *\n * By default, the [`value`](https://ariakit.com/reference/select-item#value)\n * prop will be rendered as the children, but this can be overriden if a custom\n * children is provided.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {4-5}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectItem = memo(\n forwardRef(function SelectItem(props: SelectItemProps) {\n const htmlProps = useSelectItem(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface SelectItemOptions<T extends ElementType = TagName>\n extends CompositeItemOptions<T>, CompositeHoverOptions<T> {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the parent\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components'\n * context will be used.\n */\n store?: SelectStore;\n /**\n * The value of the item. This will be rendered as the children by default.\n * - If\n * [`setValueOnClick`](https://ariakit.com/reference/select-item#setvalueonclick)\n * is set to `true`, the\n * [`value`](https://ariakit.com/reference/select-provider#value) state will\n * be set to this value when the user clicks on it.\n * - If\n * [`setValueOnMove`](https://ariakit.com/reference/select-provider#setvalueonmove)\n * is set to `true`, the\n * [`value`](https://ariakit.com/reference/select-provider#value) state will\n * be set to this value when the user moves to it (which is usually the case\n * when moving through the items using the keyboard).\n *\n * Live examples:\n * - [Form with Select](https://ariakit.com/examples/form-select)\n * - [Animated Select](https://ariakit.com/examples/select-animated)\n * - [Select with Combobox](https://ariakit.com/examples/select-combobox)\n * - [Select Grid](https://ariakit.com/examples/select-grid)\n * - [SelectGroup](https://ariakit.com/examples/select-group)\n * - [Select with custom\n * item](https://ariakit.com/examples/select-item-custom)\n * @example\n * ```jsx\n * <SelectItem value=\"Apple\" />\n * ```\n */\n value?: string;\n /**\n * Whether to hide the select when this item is clicked. By default, it's\n * `true` when the [`value`](https://ariakit.com/reference/select-item#value)\n * prop is also provided.\n */\n hideOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;\n /**\n * Whether to set the select value with this item's value, if any, when this\n * item is clicked. By default, it's `true` when the\n * [`value`](https://ariakit.com/reference/select-item#value) prop is also\n * provided.\n *\n * Live examples:\n * - [Select with Next.js App\n * Router](https://ariakit.com/examples/select-next-router)\n */\n setValueOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;\n}\n\nexport type SelectItemProps<T extends ElementType = TagName> = Props<\n T,\n SelectItemOptions<T>\n>;\n"],"mappings":";;;;;;;;;;AAoCA,MAAA,UAAS;SAIH,WAAa,YAAM,WAAA;CACvB,IAAI,aAAA,MAAc;CAClB,IAAI,cAAc,MAAA,OAChB;CAEF,IAAA,MAAO,QAAA,UAAe,GAAA,OAAA,WAAA,SAAA,SAAA;CACxB,OAAA,eAAA;;;;;;;;;;;;MAuBI,gBAAgB,WAAA,SAAuB,cAAA,EAAA,OAAA,OAAA,SAAA,aAAA,aAAA,kBAAA,SAAA,MAAA,yBAAA,MAAA,eAAA,MAAA,GAAA,SAAA;CACvC,MAAA,UAAQ,uBAAS;CAEjB,QAAA,SAEE;CAIF,UAAM,OAAW,QAAQ,IAAA,aAAA,gBAAA,wEAAA;CACzB,MAAM,KAAA,MAAW,MAAA,EAAA;CAEjB,MAAM,WAAE,kBAAa,KAAiB;OAElC,EAAA,aAAa,iBAAA,UAAA,cAAA,oBAAA,OAAA;EACb,aAAA;kBACe,OAAQ;GACvB,OAAA,MAAA,QAAA,MAAA,KAAA;EACA;WACS,OAAA;GACT,OAAA,WAAA,MAAA,OAAA,KAAA;EACA;YACM,OAAS;GACb,IAAI,SAAM,MAAS,OAAM;GACzB,IAAI,MAAM,SAAA,MAAa,OAAM;GAG7B,IAAI,MAAM,aAAQ,MAAW,OAC3B,KAAO,MAAM,QAAM,GAAM,OAAM;GAEjC,IAAA,MAAO,QAAM,MAAU,KAAA,GAAA,OAAA,MAAA,MAAA,MAAA,MAAA,SAAA,OAAA;GACzB,OAAA,MAAA,UAAA;EACD;CAEH,CAAA;CAEA,MAAM,eAAU,cACb,OAAS,UAAA,cAAA;OAER,UAAM,aAAW,SAAA;QACZ,WAAA;GACH,GAAA;GACF,OAAA,WAAA,KAAA,IAAA;EACA;EAGA,IAAA,aAAO,OAAA,YAAA,QAAA;EACT,OACA;IAAC;EAAU;EAAO;EACpB;CAEA,CAAA;CAEA,cAAM,gBAAoB,SAAA,QAAA,CAAA;CAC1B,MAAM,cAAA,MAAA;CACN,MAAM,sBAAkB,gBAAgB,eAAW;CAEnD,MAAM,kBAAU,gBAA0C,WAAA;OACxD,UAAc,UAAK,UAAA;EACnB,cAAU,KAAA;EACV,IAAI,MAAA,kBAAsB;EAC1B,IAAI,cAAA,KAAkB,GAAA;EACtB,IAAI,kBAAA,KAAoB,GAAK;MAEzB,oBAAmB,KAAS,KAAG,SAAO,MAAA,OAAA,UAAA,cAAA;GACtC,IAAI,CAAA,MAAA,QAAU,SAAc,GAC1B,OAAO;GAET,IAAA,UAAW,SAAW,KAAK,GAAA,OAAA,UAAA,QAAA,MAAA,MAAA,KAAA;GAC5B,OAAA,CAAA,GAAA,WAAA,KAAA;EAEH,CAAA;EAGD,IAAA,gBAAA,KAAA,GAAA,OAAA,KAAA;CAED,CAAA;SAG8C,eAAY,QAAA,YAAA,oBAAA,yBAAA,UAAA;qBACnD;EACgC,UAEpC;CAGH,CAAA,GAAA,CAAA,QAAM,CAAA;CAEN,MAAA,kBAAQ,MAAA,aAAA;SACA;EACN,MAAA,iBAAiB,WAAA;EACjB,iBAAU;EACV,UAAG;EACH,GAAA;EAMA;EACA,WAAA,iBAAkB,QAAA,QAAmB;EACrC,kBAAA,mBAAA,KAAA;EACF;CAEA;SACE,iBAAA;EACA;EACA;EACA;EACD,GAAA;CAED,CAAA;CAEA,MAAA,mBAAQ,gBAAkB,YAAA;SACxB,kBAAA;EACA;EAIA,GAAA;eACO,OAAA;GAEL,IAAA,CAAA,iBAAW,KAAE,GAAA,OAAA;GACf,OAAA,MAAA,SAAA,EAAA;EACD;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BI,aAAO,KAAc,WADH,SAAA,WACqB,OAAA;CACxC,OACH,cAAA,SAAA,cAAA,KAAA,CAAA"}
@@ -38,7 +38,7 @@ declare const useSelectLabel: import("@ariakit/react-utils").Hook<"div", SelectL
38
38
  * </SelectProvider>
39
39
  * ```
40
40
  */
41
- declare const SelectLabel: (props: SelectLabelProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
41
+ declare const SelectLabel: (props: SelectLabelProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
42
42
  interface SelectLabelOptions<_T extends ElementType = TagName> extends Options {
43
43
  /**
44
44
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"select-label.d.ts","names":["Options","Props","ElementType","SelectStore","TagName","useSelectLabel","SelectLabelOptions","Hook","SelectLabel","SelectLabelProps","props","ReactElement","JSXElementConstructor","_T","store","T"],"sources":["../../src/select/select-label.d.ts"],"mappings":";;;;;cAGcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAe7B;;;;AAjBqD,cAiBhCC,cAAAA,iCAA+CE,IAAAA,QAAYD,kBAAkB;AAmBlG;;;;;;;;;AAA+I;AAC/I;;;;;;;;AADA,cAAqBE,WAAAA,GAAcE,KAAAA,EAAOD,gBAAgB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACzGN,kBAAAA,YAA8BJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAA/BE;;;;;;AAQxB;EAAnBY,KAAAA,GAAQX,WAAAA;AAAAA;AAAAA,KAEAM,gBAAAA,WAA2BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMc,CAAAA,EAAGT,kBAAAA,CAAmBS,CAAAA"}
1
+ {"version":3,"file":"select-label.d.ts","names":["Options","Props","ElementType","SelectStore","TagName","useSelectLabel","SelectLabelOptions","Hook","SelectLabel","SelectLabelProps","props","ReactElement","JSXElementConstructor","_T","store","T"],"sources":["../../src/select/select-label.d.ts"],"mappings":";;;;;cAGcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAe7B;;;;AAjBqD,cAiBhCC,cAAAA,iCAA+CE,IAAAA,QAAYD,kBAAkB;AAmBlG;;;;;;;;;AAAmJ;AACnJ;;;;;;;;AADA,cAAqBE,WAAAA,GAAcE,KAAAA,EAAOD,gBAAgB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC7GN,kBAAAA,YAA8BJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAA/BE;;;;;;AAQxB;EAAnBY,KAAAA,GAAQX,WAAAA;AAAAA;AAAAA,KAEAM,gBAAAA,WAA2BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMc,CAAAA,EAAGT,kBAAAA,CAAmBS,CAAAA"}
@@ -21,7 +21,7 @@ const TagName = "div";
21
21
  const useSelectLabel = createHook(function useSelectLabel({ store, ...props }) {
22
22
  const context = useSelectProviderContext();
23
23
  store = store || context;
24
- invariant(store, "SelectLabel must receive a `store` prop or be wrapped in a SelectProvider component.");
24
+ invariant(store, process.env.NODE_ENV !== "production" && "SelectLabel must receive a `store` prop or be wrapped in a SelectProvider component.");
25
25
  const id = useId(props.id);
26
26
  const onClickProp = props.onClick;
27
27
  const onClick = useEvent((event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"select-label.js","names":[],"sources":["../../src/select/select-label.tsx"],"sourcesContent":["import {\n useEvent,\n useId,\n useMergeRefs,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Options, Props } from \"@ariakit/react-utils\";\nimport { invariant, removeUndefinedValues } from \"@ariakit/utils\";\nimport type { ElementType, MouseEvent } from \"react\";\nimport { useSelectProviderContext } from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n/**\n * Returns props to create a `SelectLabel` component. Since it's not a native\n * select element, we can't use the native label element. The `SelectLabel`\n * component will move focus and click on the `Select` component when the user\n * clicks on the label.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectLabel({ store });\n * <Role {...props}>Favorite fruit</Role>\n * <Select store={store} />\n * ```\n */\nexport const useSelectLabel = createHook<TagName, SelectLabelOptions>(\n function useSelectLabel({ store, ...props }) {\n const context = useSelectProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectLabel must receive a `store` prop or be wrapped in a SelectProvider component.\",\n );\n\n const id = useId(props.id);\n\n const onClickProp = props.onClick;\n\n const onClick = useEvent((event: MouseEvent<HTMLType>) => {\n onClickProp?.(event);\n if (event.defaultPrevented) return;\n // queueMicrotask will guarantee that the focus and click events will be\n // triggered only after the current event queue is flushed (which includes\n // this click event).\n queueMicrotask(() => {\n const select = store?.getState().selectElement;\n select?.focus();\n });\n });\n\n props = {\n ...props,\n id,\n ref: useMergeRefs(store.setLabelElement, props.ref),\n onClick,\n style: {\n cursor: \"default\",\n ...props.style,\n },\n };\n\n return removeUndefinedValues(props);\n },\n);\n\n/**\n * Renders a label for the [`Select`](https://ariakit.com/reference/select)\n * component. Since it's not a native select element, we can't use the native\n * label element. This component will move focus and click on the\n * [`Select`](https://ariakit.com/reference/select) component when clicked.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {2}\n * <SelectProvider defaultValue=\"Apple\">\n * <SelectLabel>Favorite fruit</SelectLabel>\n * <Select />\n * <SelectPopover>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectLabel = memo(\n forwardRef(function SelectLabel(props: SelectLabelProps) {\n const htmlProps = useSelectLabel(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface SelectLabelOptions<\n _T extends ElementType = TagName,\n> extends Options {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the closest\n * [`SelectProvider`](https://ariakit.com/reference/select-provider)\n * component's context will be used.\n */\n store?: SelectStore;\n}\n\nexport type SelectLabelProps<T extends ElementType = TagName> = Props<\n T,\n SelectLabelOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;MAmCI,iBAAgB,WAAA,SAAyB,eAAA,EAAA,OAAA,GAAA,SAAA;CACzC,MAAA,UAAQ,yBAAS;CAEjB,QAAA,SAGI;CAGJ,UAAM,OAAW,sFAAQ;CAEzB,MAAM,KAAA,MAAA,MAAc,EAAA;CAEpB,MAAM,cAAU,MAAU;OACxB,UAAc,UAAK,UAAA;EACnB,cAAU,KAAA;EAIV,IAAA,MAAA,kBAAqB;uBACc;GAElC,CAAA,OAAA,SAAA,EAAA,gBAAA,MAAA;EACF,CAAA;CAED,CAAA;SACK;EACH,GAAA;EACA;EACA,KAAA,aAAA,MAAA,iBAAA,MAAA,GAAA;EACA;SACE;GACA,QAAG;GACL,GAAA,MAAA;EACF;CAEA;CAEJ,OAAA,sBAAA,KAAA;;;;;;;;;;;;;;;;;;;;MAuBI,cAAO,KAAc,WADH,SAAA,YACqB,OAAA;CACxC,OACH,cAAA,SAAA,eAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"select-label.js","names":[],"sources":["../../src/select/select-label.tsx"],"sourcesContent":["import {\n useEvent,\n useId,\n useMergeRefs,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Options, Props } from \"@ariakit/react-utils\";\nimport { invariant, removeUndefinedValues } from \"@ariakit/utils\";\nimport type { ElementType, MouseEvent } from \"react\";\nimport { useSelectProviderContext } from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n/**\n * Returns props to create a `SelectLabel` component. Since it's not a native\n * select element, we can't use the native label element. The `SelectLabel`\n * component will move focus and click on the `Select` component when the user\n * clicks on the label.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectLabel({ store });\n * <Role {...props}>Favorite fruit</Role>\n * <Select store={store} />\n * ```\n */\nexport const useSelectLabel = createHook<TagName, SelectLabelOptions>(\n function useSelectLabel({ store, ...props }) {\n const context = useSelectProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectLabel must receive a `store` prop or be wrapped in a SelectProvider component.\",\n );\n\n const id = useId(props.id);\n\n const onClickProp = props.onClick;\n\n const onClick = useEvent((event: MouseEvent<HTMLType>) => {\n onClickProp?.(event);\n if (event.defaultPrevented) return;\n // queueMicrotask will guarantee that the focus and click events will be\n // triggered only after the current event queue is flushed (which includes\n // this click event).\n queueMicrotask(() => {\n const select = store?.getState().selectElement;\n select?.focus();\n });\n });\n\n props = {\n ...props,\n id,\n ref: useMergeRefs(store.setLabelElement, props.ref),\n onClick,\n style: {\n cursor: \"default\",\n ...props.style,\n },\n };\n\n return removeUndefinedValues(props);\n },\n);\n\n/**\n * Renders a label for the [`Select`](https://ariakit.com/reference/select)\n * component. Since it's not a native select element, we can't use the native\n * label element. This component will move focus and click on the\n * [`Select`](https://ariakit.com/reference/select) component when clicked.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {2}\n * <SelectProvider defaultValue=\"Apple\">\n * <SelectLabel>Favorite fruit</SelectLabel>\n * <Select />\n * <SelectPopover>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectLabel = memo(\n forwardRef(function SelectLabel(props: SelectLabelProps) {\n const htmlProps = useSelectLabel(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface SelectLabelOptions<\n _T extends ElementType = TagName,\n> extends Options {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the closest\n * [`SelectProvider`](https://ariakit.com/reference/select-provider)\n * component's context will be used.\n */\n store?: SelectStore;\n}\n\nexport type SelectLabelProps<T extends ElementType = TagName> = Props<\n T,\n SelectLabelOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;MAmCI,iBAAgB,WAAA,SAAyB,eAAA,EAAA,OAAA,GAAA,SAAA;CACzC,MAAA,UAAQ,yBAAS;CAEjB,QAAA,SAEE;CAIF,UAAM,OAAW,QAAQ,IAAA,aAAA,gBAAA,sFAAA;CAEzB,MAAM,KAAA,MAAA,MAAc,EAAA;CAEpB,MAAM,cAAU,MAAU;OACxB,UAAc,UAAK,UAAA;EACnB,cAAU,KAAA;EAIV,IAAA,MAAA,kBAAqB;uBACc;GAElC,CAAA,OAAA,SAAA,EAAA,gBAAA,MAAA;EACF,CAAA;CAED,CAAA;SACK;EACH,GAAA;EACA;EACA,KAAA,aAAA,MAAA,iBAAA,MAAA,GAAA;EACA;SACE;GACA,QAAG;GACL,GAAA,MAAA;EACF;CAEA;CAEJ,OAAA,sBAAA,KAAA;;;;;;;;;;;;;;;;;;;;MAuBI,cAAO,KAAc,WADH,SAAA,YACqB,OAAA;CACxC,OACH,cAAA,SAAA,eAAA,KAAA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { n as DisclosureContentOptions } from "../disclosure-content-BbPkZgAc.js";
2
- import { n as CompositeOptions } from "../composite-DLvyFHMq.js";
3
- import { n as CompositeTypeaheadOptions } from "../composite-typeahead-DDhpyKqm.js";
2
+ import { n as CompositeOptions } from "../composite-KBhCGLEy.js";
3
+ import { n as CompositeTypeaheadOptions } from "../composite-typeahead-0euW43GU.js";
4
4
  import { t as SelectStore } from "../select-store-BsLTAyKh.js";
5
5
  import { Props } from "@ariakit/react-utils";
6
6
  import { ElementType, KeyboardEvent } from "react";
@@ -47,7 +47,7 @@ declare const useSelectList: import("@ariakit/react-utils").Hook<"div", SelectLi
47
47
  * </SelectProvider>
48
48
  * ```
49
49
  */
50
- declare const SelectList: (props: SelectListProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
50
+ declare const SelectList: (props: SelectListProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
51
51
  interface SelectListOptions<T extends ElementType = TagName> extends CompositeOptions<T>, CompositeTypeaheadOptions<T>, Pick<DisclosureContentOptions, "alwaysVisible"> {
52
52
  /**
53
53
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"select-list.d.ts","names":["Props","BooleanOrCallback","ElementType","KeyboardEvent","CompositeTypeaheadOptions","CompositeOptions","DisclosureContentOptions","SelectStore","TagName","useSelectList","SelectListOptions","Hook","SelectList","SelectListProps","props","ReactElement","JSXElementConstructor","T","HTMLElement","Pick","store","resetOnEscape","hideOnEnter"],"sources":["../../src/select/select-list.d.ts"],"mappings":";;;;;;;;;cAOcQ,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAc7B;;;AAhBqD,cAgBhCC,aAAAA,iCAA8CE,IAAAA,QAAYD,iBAAiB;AAAA;AAyBhG;;;;;;;;;AAA6I;AAC7I;;;;;;;;;;;;;AA1BgG,cAyB3EE,UAAAA,GAAaE,KAAAA,EAAOD,eAAe,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACvGN,iBAAAA,WAA4BR,WAAAA,GAAcM,OAAAA,UAAiBH,gBAAAA,CAAiBY,CAAAA,GAAIb,yBAAAA,CAA0Ba,CAAAA,GAAIE,IAAAA,CAAKb,wBAAAA;EAAxDD;;;;;;;EAQxEe,KAAAA,GAAQb,WAAAA;EARgEF;;;;;;;EAgBxEgB,aAAAA,GAAgBpB,iBAAAA,CAAkBE,aAAAA,CAAce,WAAAA;EAAhDG;;;;;;;EAQAC,WAAAA,GAAcrB,iBAAAA,CAAkBE,aAAAA,CAAce,WAAAA;AAAAA;AAAAA,KAEtCL,eAAAA,WAA0BX,WAAAA,GAAcM,OAAAA,IAAWR,KAAAA,CAAMiB,CAAAA,EAAGP,iBAAAA,CAAkBO,CAAAA"}
1
+ {"version":3,"file":"select-list.d.ts","names":["Props","BooleanOrCallback","ElementType","KeyboardEvent","CompositeTypeaheadOptions","CompositeOptions","DisclosureContentOptions","SelectStore","TagName","useSelectList","SelectListOptions","Hook","SelectList","SelectListProps","props","ReactElement","JSXElementConstructor","T","HTMLElement","Pick","store","resetOnEscape","hideOnEnter"],"sources":["../../src/select/select-list.d.ts"],"mappings":";;;;;;;;;cAOcQ,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAc7B;;;AAhBqD,cAgBhCC,aAAAA,iCAA8CE,IAAAA,QAAYD,iBAAiB;AAAA;AAyBhG;;;;;;;;;AAAiJ;AACjJ;;;;;;;;;;;;;AA1BgG,cAyB3EE,UAAAA,GAAaE,KAAAA,EAAOD,eAAe,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC3GN,iBAAAA,WAA4BR,WAAAA,GAAcM,OAAAA,UAAiBH,gBAAAA,CAAiBY,CAAAA,GAAIb,yBAAAA,CAA0Ba,CAAAA,GAAIE,IAAAA,CAAKb,wBAAAA;EAAxDD;;;;;;;EAQxEe,KAAAA,GAAQb,WAAAA;EARgEF;;;;;;;EAgBxEgB,aAAAA,GAAgBpB,iBAAAA,CAAkBE,aAAAA,CAAce,WAAAA;EAAhDG;;;;;;;EAQAC,WAAAA,GAAcrB,iBAAAA,CAAkBE,aAAAA,CAAce,WAAAA;AAAAA;AAAAA,KAEtCL,eAAAA,WAA0BX,WAAAA,GAAcM,OAAAA,IAAWR,KAAAA,CAAMiB,CAAAA,EAAGP,iBAAAA,CAAkBO,CAAAA"}
@@ -27,7 +27,7 @@ const SelectListContext = createContext(null);
27
27
  const useSelectList = createHook(function useSelectList({ store, resetOnEscape = true, hideOnEnter = true, focusOnMove = true, composite, alwaysVisible, ...props }) {
28
28
  const context = useSelectContext();
29
29
  store = store || context;
30
- invariant(store, "SelectList must receive a `store` prop or be wrapped in a SelectProvider component.");
30
+ invariant(store, process.env.NODE_ENV !== "production" && "SelectList must receive a `store` prop or be wrapped in a SelectProvider component.");
31
31
  const id = useId(props.id);
32
32
  const value = useStoreState(store, "value");
33
33
  const multiSelectable = Array.isArray(value);
@@ -1 +1 @@
1
- {"version":3,"file":"select-list.js","names":[],"sources":["../../src/select/select-list.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useAttribute,\n useBooleanEvent,\n useEvent,\n useId,\n useMergeRefs,\n useTransactionState,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { isSelfTarget, invariant } from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, KeyboardEvent } from \"react\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CompositeTypeaheadOptions } from \"../composite/composite-typeahead.tsx\";\nimport { useCompositeTypeahead } from \"../composite/composite-typeahead.tsx\";\nimport type { CompositeOptions } from \"../composite/composite.tsx\";\nimport { useComposite } from \"../composite/composite.tsx\";\nimport type { DisclosureContentOptions } from \"../disclosure/disclosure-content.tsx\";\nimport { isHidden } from \"../disclosure/disclosure-content.tsx\";\nimport {\n SelectHeadingContext,\n SelectScopedContextProvider,\n useSelectContext,\n} from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nconst SelectListContext = createContext<\n ((store: SelectStore | null) => void) | null\n>(null);\n\n/**\n * Returns props to create a `SelectList` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectList({ store });\n * <Role {...props}>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </Role>\n * ```\n */\nexport const useSelectList = createHook<TagName, SelectListOptions>(\n function useSelectList({\n store,\n resetOnEscape = true,\n hideOnEnter = true,\n focusOnMove = true,\n composite,\n alwaysVisible,\n ...props\n }) {\n const context = useSelectContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectList must receive a `store` prop or be wrapped in a SelectProvider component.\",\n );\n\n const id = useId(props.id);\n const value = useStoreState(store, \"value\");\n const multiSelectable = Array.isArray(value);\n const [defaultValue, setDefaultValue] = useState(value);\n\n const mounted = useStoreState(store, \"mounted\");\n\n // Stores the intial value so we can reset it later when Escape is pressed\n useEffect(() => {\n if (mounted) return;\n setDefaultValue(value);\n }, [mounted, value]);\n\n resetOnEscape = resetOnEscape && !multiSelectable;\n\n const onKeyDownProp = props.onKeyDown;\n const resetOnEscapeProp = useBooleanEvent(resetOnEscape);\n const hideOnEnterProp = useBooleanEvent(hideOnEnter);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\" && resetOnEscapeProp(event)) {\n store?.setValue(defaultValue);\n }\n if (event.key === \" \" || event.key === \"Enter\") {\n if (isSelfTarget(event) && hideOnEnterProp(event)) {\n event.preventDefault();\n store?.hide();\n }\n }\n });\n\n const headingContext = useContext(SelectHeadingContext);\n const headingState = useState<string>();\n const [headingId, setHeadingId] = headingContext || headingState;\n\n const headingContextValue: typeof headingState = useMemo(\n () => [headingId, setHeadingId],\n [headingId, setHeadingId],\n );\n\n const [childStore, setChildStore] = useState<SelectStore | null>(null);\n const setStore = useContext(SelectListContext);\n\n useEffect(() => {\n if (!setStore) return;\n setStore(store);\n return () => setStore(null);\n }, [setStore, store]);\n\n props = useWrapElement(\n props,\n (element) => (\n <SelectScopedContextProvider value={store}>\n <SelectListContext.Provider value={setChildStore}>\n <SelectHeadingContext.Provider value={headingContextValue}>\n {element}\n </SelectHeadingContext.Provider>\n </SelectListContext.Provider>\n </SelectScopedContextProvider>\n ),\n [store, headingContextValue],\n );\n\n const hasCombobox = !!store.combobox;\n composite = composite ?? (!hasCombobox && childStore !== store);\n\n const [element, setElement] = useTransactionState(\n composite ? store.setListElement : null,\n );\n\n const role = useAttribute(element, \"role\", props.role);\n const isCompositeRole =\n role === \"listbox\" ||\n role === \"menu\" ||\n role === \"tree\" ||\n role === \"grid\";\n const ariaMultiSelectable =\n composite || isCompositeRole ? multiSelectable || undefined : undefined;\n\n const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n const style = hidden ? { ...props.style, display: \"none\" } : props.style;\n\n if (composite) {\n props = {\n role: \"listbox\",\n \"aria-multiselectable\": ariaMultiSelectable,\n ...props,\n };\n }\n\n const labelId = useStoreState(\n store,\n (state) => headingId || state.labelElement?.id,\n );\n\n props = {\n \"aria-labelledby\": props[\"aria-label\"] != null ? undefined : labelId,\n hidden,\n ...props,\n id,\n ref: useMergeRefs(setElement, props.ref),\n style,\n onKeyDown,\n };\n\n props = useComposite({ store, ...props, composite });\n props = useCompositeTypeahead({ store, typeahead: !hasCombobox, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a wrapper for\n * [`SelectItem`](https://ariakit.com/reference/select-item) elements. This\n * component may be rendered within a\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) component if\n * there are other non-item elements inside the popover.\n *\n * The `aria-labelledby` prop is set to the\n * [`Select`](https://ariakit.com/reference/select) element's `id` by default.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {5-8}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectDismiss />\n * <SelectList>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectList>\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectList = forwardRef(function SelectList(\n props: SelectListProps,\n) {\n const htmlProps = useSelectList(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface SelectListOptions<T extends ElementType = TagName>\n extends\n CompositeOptions<T>,\n CompositeTypeaheadOptions<T>,\n Pick<DisclosureContentOptions, \"alwaysVisible\"> {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the closest\n * [`SelectProvider`](https://ariakit.com/reference/select-provider)\n * component's context will be used.\n */\n store?: SelectStore;\n /**\n * Whether the select value should be reset to the value before the list got\n * shown when Escape is pressed. This has effect only when\n * [`setValueOnMove`](https://ariakit.com/reference/select-provider#setvalueonmove)\n * is `true`.\n * @default true\n */\n resetOnEscape?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n /**\n * Whether the [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * should be hidden when the user presses Enter or Space while the list\n * element is focused and no item is active.\n * @default true\n */\n hideOnEnter?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n}\n\nexport type SelectListProps<T extends ElementType = TagName> = Props<\n T,\n SelectListOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;AAmCA,MAAM,UAAA;;;;;;;;;;;;;;;MA2BF,gBAAgB,WAAA,SAAiB,cAAA,EAAA,OAAA,gBAAA,MAAA,cAAA,MAAA,cAAA,MAAA,WAAA,eAAA,GAAA,SAAA;CACjC,MAAA,UAAQ,iBAAS;CAEjB,QAAA,SAGI;CAGJ,UAAM,OAAW,qFAAQ;CACzB,MAAM,KAAA,MAAQ,MAAA,EAAA;CACd,MAAM,QAAA,cAAkB,OAAM,OAAQ;CACtC,MAAM,kBAAe,MAAA,QAAA,KAAmB;CAExC,MAAM,CAAA,cAAU,mBAAqB,SAAS,KAAA;CAG9C,MAAA,UAAgB,cAAA,OAAA,SAAA;iBACD;EACb,IAAA,SAAA;EACF,gBAAa,KAAM;CAEnB,GAAA,CAAA,SAAA,KAAgB,CAAA;CAEhB,gBAAM,iBAAsB,CAAA;CAC5B,MAAM,gBAAA,MAAoB;CAC1B,MAAM,oBAAkB,gBAAgB,aAAW;CAEnD,MAAM,kBAAY,gBAA6C,WAAA;OAC7D,YAAgB,UAAK,UAAA;EACrB,gBAAU,KAAA;EACV,IAAI,MAAM,kBAAQ;EAGlB,IAAI,MAAM,QAAQ,YAAO,kBACvB,KAAA,GAAA,OAAA,SAAA,YAAA;YAAI,QAAa,OAAK,MAAK,QAAA;OACzB,aAAM,KAAe,KAAA,gBAAA,KAAA,GAAA;IACrB,MAAA,eAAY;IACd,OAAA,KAAA;;;CAIJ,CAAA;CACA,MAAM,iBAAe,WAAiB,oBAAA;CACtC,MAAM,eAAY,SAAA;CAElB,MAAM,CAAA,WAAA,gBAA2C,kBACxC;CAIT,MAAM,sBAAa,cAAiB,CAAA,WAAiC,YAAA,GAAA,CAAA,WAAA,YAAA,CAAA;CACrE,MAAM,CAAA,YAAW,iBAAW,SAAiB,IAAA;CAE7C,MAAA,WAAgB,WAAA,iBAAA;iBACC;EACf,IAAA,CAAA,UAAc;EACd,SAAA,KAAa;EACf,aAAc,SAAM,IAAA;CAEpB,GAAA,CAAA,UAAQ,KAAA,CAAA;SAGgC,eAAA,QAAA,YAAA,oBAAA,6BAAA;;YACC,oBAAA,kBAAA,UAAA;;aACK,oBAAA,qBAAA,UAAA;;IAEP,UAAA;GACL,CAAA;EACD,CAAA;CAKjC,CAAA,GAAA,CAAA,OAAM,mBAAsB,CAAA;CAC5B,MAAA,cAAY,CAAA,CAAA,MAAe;CAE3B,YAAO,cAAS,CAAA,eAAc,eAC5B;CAGF,MAAM,CAAA,SAAO,cAAa,oBAAuB,YAAI,MAAA,iBAAA,IAAA;CAMrD,MAAM,OAAA,aAAA,SACJ,QALA,MAAA,IAAS;CAOX,MAAM,sBAAkB,aAAe,SAAQ,aAAa,SAAA,UAAA,SAAA,UAAA,SAAA,SAAA,mBAAA,KAAA,IAAA,KAAA;CAC5D,MAAM,SAAQ,SAAS,SAAA,MAAA,QAAA,aAAA;OAAK,QAAM,SAAA;EAAO,GAAA,MAAS;EAAO,SAAU;CAEnE,IAAI,MAAA;KAEA,WAAM,QAAA;EACN,MAAA;EACA,wBAAG;EACL,GAAA;CAGF;CAKA,MAAA,UAAQ,cAAA,QAAA,UAAA,aAAA,MAAA,cAAA,EAAA;SACN;EACA,mBAAA,MAAA,iBAAA,OAAA,KAAA,IAAA;EACA;EACA,GAAA;EACA;EACA,KAAA,aAAA,YAAA,MAAA,GAAA;EACA;EACF;CAEA;SAAuB,aAAA;EAAO;EAAU,GAAA;EAAW;CACnD,CAAA;SAAgC,sBAAA;EAAO;EAAyB,WAAG,CAAA;EAAO,GAAA;CAE1E,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MA8BE,aAAO,WAAc,SADH,WACoB,OAAC;CACxC,OAAA,cAAA,SAAA,cAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"select-list.js","names":[],"sources":["../../src/select/select-list.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useAttribute,\n useBooleanEvent,\n useEvent,\n useId,\n useMergeRefs,\n useTransactionState,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { isSelfTarget, invariant } from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, KeyboardEvent } from \"react\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport type { CompositeTypeaheadOptions } from \"../composite/composite-typeahead.tsx\";\nimport { useCompositeTypeahead } from \"../composite/composite-typeahead.tsx\";\nimport type { CompositeOptions } from \"../composite/composite.tsx\";\nimport { useComposite } from \"../composite/composite.tsx\";\nimport type { DisclosureContentOptions } from \"../disclosure/disclosure-content.tsx\";\nimport { isHidden } from \"../disclosure/disclosure-content.tsx\";\nimport {\n SelectHeadingContext,\n SelectScopedContextProvider,\n useSelectContext,\n} from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nconst SelectListContext = createContext<\n ((store: SelectStore | null) => void) | null\n>(null);\n\n/**\n * Returns props to create a `SelectList` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectList({ store });\n * <Role {...props}>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </Role>\n * ```\n */\nexport const useSelectList = createHook<TagName, SelectListOptions>(\n function useSelectList({\n store,\n resetOnEscape = true,\n hideOnEnter = true,\n focusOnMove = true,\n composite,\n alwaysVisible,\n ...props\n }) {\n const context = useSelectContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectList must receive a `store` prop or be wrapped in a SelectProvider component.\",\n );\n\n const id = useId(props.id);\n const value = useStoreState(store, \"value\");\n const multiSelectable = Array.isArray(value);\n const [defaultValue, setDefaultValue] = useState(value);\n\n const mounted = useStoreState(store, \"mounted\");\n\n // Stores the intial value so we can reset it later when Escape is pressed\n useEffect(() => {\n if (mounted) return;\n setDefaultValue(value);\n }, [mounted, value]);\n\n resetOnEscape = resetOnEscape && !multiSelectable;\n\n const onKeyDownProp = props.onKeyDown;\n const resetOnEscapeProp = useBooleanEvent(resetOnEscape);\n const hideOnEnterProp = useBooleanEvent(hideOnEnter);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\" && resetOnEscapeProp(event)) {\n store?.setValue(defaultValue);\n }\n if (event.key === \" \" || event.key === \"Enter\") {\n if (isSelfTarget(event) && hideOnEnterProp(event)) {\n event.preventDefault();\n store?.hide();\n }\n }\n });\n\n const headingContext = useContext(SelectHeadingContext);\n const headingState = useState<string>();\n const [headingId, setHeadingId] = headingContext || headingState;\n\n const headingContextValue: typeof headingState = useMemo(\n () => [headingId, setHeadingId],\n [headingId, setHeadingId],\n );\n\n const [childStore, setChildStore] = useState<SelectStore | null>(null);\n const setStore = useContext(SelectListContext);\n\n useEffect(() => {\n if (!setStore) return;\n setStore(store);\n return () => setStore(null);\n }, [setStore, store]);\n\n props = useWrapElement(\n props,\n (element) => (\n <SelectScopedContextProvider value={store}>\n <SelectListContext.Provider value={setChildStore}>\n <SelectHeadingContext.Provider value={headingContextValue}>\n {element}\n </SelectHeadingContext.Provider>\n </SelectListContext.Provider>\n </SelectScopedContextProvider>\n ),\n [store, headingContextValue],\n );\n\n const hasCombobox = !!store.combobox;\n composite = composite ?? (!hasCombobox && childStore !== store);\n\n const [element, setElement] = useTransactionState(\n composite ? store.setListElement : null,\n );\n\n const role = useAttribute(element, \"role\", props.role);\n const isCompositeRole =\n role === \"listbox\" ||\n role === \"menu\" ||\n role === \"tree\" ||\n role === \"grid\";\n const ariaMultiSelectable =\n composite || isCompositeRole ? multiSelectable || undefined : undefined;\n\n const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n const style = hidden ? { ...props.style, display: \"none\" } : props.style;\n\n if (composite) {\n props = {\n role: \"listbox\",\n \"aria-multiselectable\": ariaMultiSelectable,\n ...props,\n };\n }\n\n const labelId = useStoreState(\n store,\n (state) => headingId || state.labelElement?.id,\n );\n\n props = {\n \"aria-labelledby\": props[\"aria-label\"] != null ? undefined : labelId,\n hidden,\n ...props,\n id,\n ref: useMergeRefs(setElement, props.ref),\n style,\n onKeyDown,\n };\n\n props = useComposite({ store, ...props, composite });\n props = useCompositeTypeahead({ store, typeahead: !hasCombobox, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a wrapper for\n * [`SelectItem`](https://ariakit.com/reference/select-item) elements. This\n * component may be rendered within a\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) component if\n * there are other non-item elements inside the popover.\n *\n * The `aria-labelledby` prop is set to the\n * [`Select`](https://ariakit.com/reference/select) element's `id` by default.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {5-8}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectDismiss />\n * <SelectList>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectList>\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectList = forwardRef(function SelectList(\n props: SelectListProps,\n) {\n const htmlProps = useSelectList(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface SelectListOptions<T extends ElementType = TagName>\n extends\n CompositeOptions<T>,\n CompositeTypeaheadOptions<T>,\n Pick<DisclosureContentOptions, \"alwaysVisible\"> {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the closest\n * [`SelectProvider`](https://ariakit.com/reference/select-provider)\n * component's context will be used.\n */\n store?: SelectStore;\n /**\n * Whether the select value should be reset to the value before the list got\n * shown when Escape is pressed. This has effect only when\n * [`setValueOnMove`](https://ariakit.com/reference/select-provider#setvalueonmove)\n * is `true`.\n * @default true\n */\n resetOnEscape?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n /**\n * Whether the [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * should be hidden when the user presses Enter or Space while the list\n * element is focused and no item is active.\n * @default true\n */\n hideOnEnter?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n}\n\nexport type SelectListProps<T extends ElementType = TagName> = Props<\n T,\n SelectListOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;AAmCA,MAAM,UAAA;;;;;;;;;;;;;;;MA2BF,gBAAgB,WAAA,SAAiB,cAAA,EAAA,OAAA,gBAAA,MAAA,cAAA,MAAA,cAAA,MAAA,WAAA,eAAA,GAAA,SAAA;CACjC,MAAA,UAAQ,iBAAS;CAEjB,QAAA,SAEE;CAIF,UAAM,OAAW,QAAQ,IAAA,aAAA,gBAAA,qFAAA;CACzB,MAAM,KAAA,MAAQ,MAAA,EAAA;CACd,MAAM,QAAA,cAAkB,OAAM,OAAQ;CACtC,MAAM,kBAAe,MAAA,QAAA,KAAmB;CAExC,MAAM,CAAA,cAAU,mBAAqB,SAAS,KAAA;CAG9C,MAAA,UAAgB,cAAA,OAAA,SAAA;iBACD;EACb,IAAA,SAAA;EACF,gBAAa,KAAM;CAEnB,GAAA,CAAA,SAAA,KAAgB,CAAA;CAEhB,gBAAM,iBAAsB,CAAA;CAC5B,MAAM,gBAAA,MAAoB;CAC1B,MAAM,oBAAkB,gBAAgB,aAAW;CAEnD,MAAM,kBAAY,gBAA6C,WAAA;OAC7D,YAAgB,UAAK,UAAA;EACrB,gBAAU,KAAA;EACV,IAAI,MAAM,kBAAQ;EAGlB,IAAI,MAAM,QAAQ,YAAO,kBACvB,KAAA,GAAA,OAAA,SAAA,YAAA;YAAI,QAAa,OAAK,MAAK,QAAA;OACzB,aAAM,KAAe,KAAA,gBAAA,KAAA,GAAA;IACrB,MAAA,eAAY;IACd,OAAA,KAAA;;;CAIJ,CAAA;CACA,MAAM,iBAAe,WAAiB,oBAAA;CACtC,MAAM,eAAY,SAAA;CAElB,MAAM,CAAA,WAAA,gBAA2C,kBACxC;CAIT,MAAM,sBAAa,cAAiB,CAAA,WAAiC,YAAA,GAAA,CAAA,WAAA,YAAA,CAAA;CACrE,MAAM,CAAA,YAAW,iBAAW,SAAiB,IAAA;CAE7C,MAAA,WAAgB,WAAA,iBAAA;iBACC;EACf,IAAA,CAAA,UAAc;EACd,SAAA,KAAa;EACf,aAAc,SAAM,IAAA;CAEpB,GAAA,CAAA,UAAQ,KAAA,CAAA;SAGgC,eAAA,QAAA,YAAA,oBAAA,6BAAA;;YACC,oBAAA,kBAAA,UAAA;;aACK,oBAAA,qBAAA,UAAA;;IAEP,UAAA;GACL,CAAA;EACD,CAAA;CAKjC,CAAA,GAAA,CAAA,OAAM,mBAAsB,CAAA;CAC5B,MAAA,cAAY,CAAA,CAAA,MAAe;CAE3B,YAAO,cAAS,CAAA,eAAc,eAC5B;CAGF,MAAM,CAAA,SAAO,cAAa,oBAAuB,YAAI,MAAA,iBAAA,IAAA;CAMrD,MAAM,OAAA,aAAA,SACJ,QALA,MAAA,IAAS;CAOX,MAAM,sBAAkB,aAAe,SAAQ,aAAa,SAAA,UAAA,SAAA,UAAA,SAAA,SAAA,mBAAA,KAAA,IAAA,KAAA;CAC5D,MAAM,SAAQ,SAAS,SAAA,MAAA,QAAA,aAAA;OAAK,QAAM,SAAA;EAAO,GAAA,MAAS;EAAO,SAAU;CAEnE,IAAI,MAAA;KAEA,WAAM,QAAA;EACN,MAAA;EACA,wBAAG;EACL,GAAA;CAGF;CAKA,MAAA,UAAQ,cAAA,QAAA,UAAA,aAAA,MAAA,cAAA,EAAA;SACN;EACA,mBAAA,MAAA,iBAAA,OAAA,KAAA,IAAA;EACA;EACA,GAAA;EACA;EACA,KAAA,aAAA,YAAA,MAAA,GAAA;EACA;EACF;CAEA;SAAuB,aAAA;EAAO;EAAU,GAAA;EAAW;CACnD,CAAA;SAAgC,sBAAA;EAAO;EAAyB,WAAG,CAAA;EAAO,GAAA;CAE1E,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MA8BE,aAAO,WAAc,SADH,WACoB,OAAC;CACxC,OAAA,cAAA,SAAA,cAAA,KAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import { n as PopoverOptions } from "../popover-CCqiRKqg.js";
1
+ import { n as PopoverOptions } from "../popover-B9PxE5iP.js";
2
2
  import { SelectListOptions } from "./select-list.js";
3
3
  import { Props } from "@ariakit/react-utils";
4
4
  import { ElementType } from "react";
@@ -1,4 +1,4 @@
1
- import { c as getCollectionRendererItem, l as getCollectionRendererItemId } from "../collection-renderer-DsPD9ksD.js";
1
+ import { c as getCollectionRendererItem, l as getCollectionRendererItemId } from "../collection-renderer-BhzF21Du.js";
2
2
  import { CompositeRendererBaseItemProps, CompositeRendererItem, CompositeRendererItemObject, CompositeRendererItemProps, CompositeRendererOptions } from "../composite/composite-renderer.js";
3
3
  import { s as SelectStoreValue, t as SelectStore } from "../select-store-BsLTAyKh.js";
4
4
  import { Props } from "@ariakit/react-utils";
@@ -12,7 +12,7 @@ interface ItemObject extends CompositeRendererItemObject {
12
12
  type Item = ItemObject | CompositeRendererItem;
13
13
  type BaseItemProps = CompositeRendererBaseItemProps;
14
14
  type ItemProps<T extends Item, P extends BaseItemProps = BaseItemProps> = CompositeRendererItemProps<T, P>;
15
- declare const SelectRenderer: <T extends Item = any>(props: SelectRendererProps<T>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
15
+ declare const SelectRenderer: <T extends Item = any>(props: SelectRendererProps<T>) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
16
16
  type SelectRendererItemObject = ItemObject;
17
17
  type SelectRendererItem = Item;
18
18
  type SelectRendererBaseItemProps = BaseItemProps;
@@ -1 +1 @@
1
- {"version":3,"file":"select-renderer.d.ts","names":["Props","CompositeRendererBaseItemProps","CompositeRendererItem","CompositeRendererItemObject","CompositeRendererItemProps","CompositeRendererOptions","getCompositeRendererItem","getCompositeRendererItemId","SelectStore","SelectStoreValue","TagName","ItemObject","value","Item","BaseItemProps","ItemProps","T","P","SelectRenderer","SelectRendererProps","props","ReactElement","JSXElementConstructor","getSelectRendererItem","getSelectRendererItemId","SelectRendererItemObject","SelectRendererItem","SelectRendererBaseItemProps","SelectRendererItemProps","SelectRendererOptions","Omit","store"],"sources":["../../src/select/select-renderer.d.ts"],"mappings":";;;;;;cAIcU,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAAA,UACnBC,UAAAA,SAAmBR,2BAA2B;EACpDS,KAAK;AAAA;AAAA,KAEJC,IAAAA,GAAOF,UAAAA,GAAaT,qBAAqB;AAAA,KACzCY,aAAAA,GAAgBb,8BAA8B;AAAA,KAC9Cc,SAAAA,WAAoBF,IAAAA,YAAgBC,aAAAA,GAAgBA,aAAAA,IAAiBV,0BAAAA,CAA2BY,CAAAA,EAAGC,CAAAA;AAAAA,cACnFC,cAAAA,aAA2BL,IAAAA,QAAYO,KAAAA,EAAOD,mBAAAA,CAAoBH,CAAAA,sBAAuBK,YAAAA,+BAA2CC,qBAAAA;AAAAA,KAE7IG,wBAAAA,GAA2Bd,UAAU;AAAA,KACrCe,kBAAAA,GAAqBb,IAAI;AAAA,KACzBc,2BAAAA,GAA8Bb,aAAa;AAAA,KAC3Cc,uBAAAA,WAAkCf,IAAAA,YAAgBC,aAAAA,GAAgBA,aAAAA,IAAiBC,SAAAA,CAAUC,CAAAA,EAAGC,CAAAA;AAAAA,UAC3FY,qBAAAA,WAAgChB,IAAAA,gBAAoBiB,IAAAA,CAAKzB,wBAAAA,CAAyBW,CAAAA;EAZtEb;AACpB;AAAA;;;;AAEqC;AAAA;;;;EAqB1C4B,KAAAA,GAAQvB,WAAAA;EAnBPO;;;;;;EA0BDH,KAAAA,GAAQH,gBAAAA;AAAAA;AAAAA,UAEKU,mBAAAA,WAA8BN,IAAAA,gBAAoBb,KAAAA,CAAMU,OAAAA,EAASmB,qBAAAA,CAAsBb,CAAAA"}
1
+ {"version":3,"file":"select-renderer.d.ts","names":["Props","CompositeRendererBaseItemProps","CompositeRendererItem","CompositeRendererItemObject","CompositeRendererItemProps","CompositeRendererOptions","getCompositeRendererItem","getCompositeRendererItemId","SelectStore","SelectStoreValue","TagName","ItemObject","value","Item","BaseItemProps","ItemProps","T","P","SelectRenderer","SelectRendererProps","props","ReactElement","JSXElementConstructor","getSelectRendererItem","getSelectRendererItemId","SelectRendererItemObject","SelectRendererItem","SelectRendererBaseItemProps","SelectRendererItemProps","SelectRendererOptions","Omit","store"],"sources":["../../src/select/select-renderer.d.ts"],"mappings":";;;;;;cAIcU,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAAA,UACnBC,UAAAA,SAAmBR,2BAA2B;EACpDS,KAAK;AAAA;AAAA,KAEJC,IAAAA,GAAOF,UAAAA,GAAaT,qBAAqB;AAAA,KACzCY,aAAAA,GAAgBb,8BAA8B;AAAA,KAC9Cc,SAAAA,WAAoBF,IAAAA,YAAgBC,aAAAA,GAAgBA,aAAAA,IAAiBV,0BAAAA,CAA2BY,CAAAA,EAAGC,CAAAA;AAAAA,cACnFC,cAAAA,aAA2BL,IAAAA,QAAYO,KAAAA,EAAOD,mBAAAA,CAAoBH,CAAAA,sBAAuBK,YAAAA,mCAA+CC,qBAAAA;AAAAA,KAEjJG,wBAAAA,GAA2Bd,UAAU;AAAA,KACrCe,kBAAAA,GAAqBb,IAAI;AAAA,KACzBc,2BAAAA,GAA8Bb,aAAa;AAAA,KAC3Cc,uBAAAA,WAAkCf,IAAAA,YAAgBC,aAAAA,GAAgBA,aAAAA,IAAiBC,SAAAA,CAAUC,CAAAA,EAAGC,CAAAA;AAAAA,UAC3FY,qBAAAA,WAAgChB,IAAAA,gBAAoBiB,IAAAA,CAAKzB,wBAAAA,CAAyBW,CAAAA;EAZtEb;AACpB;AAAA;;;;AAEqC;AAAA;;;;EAqB1C4B,KAAAA,GAAQvB,WAAAA;EAnBPO;;;;;;EA0BDH,KAAAA,GAAQH,gBAAAA;AAAAA;AAAAA,UAEKU,mBAAAA,WAA8BN,IAAAA,gBAAoBb,KAAAA,CAAMU,OAAAA,EAASmB,qBAAAA,CAAsBb,CAAAA"}
@@ -45,7 +45,7 @@ declare const useSelectRow: import("@ariakit/react-utils").Hook<"div", SelectRow
45
45
  * </SelectProvider>
46
46
  * ```
47
47
  */
48
- declare const SelectRow: (props: SelectRowProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
48
+ declare const SelectRow: (props: SelectRowProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
49
49
  interface SelectRowOptions<T extends ElementType = TagName> extends CompositeRowOptions<T> {
50
50
  /**
51
51
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"select-row.d.ts","names":["Props","ElementType","CompositeRowOptions","SelectStore","TagName","useSelectRow","SelectRowOptions","Hook","SelectRow","SelectRowProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/select/select-row.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAgB7B;;;;AAA8F;AAlBzC,cAkBhCC,YAAAA,iCAA6CE,IAAAA,QAAYD,gBAAgB;;;;;;;;;AAwB6C;AAC3I;;;;;;;;;;;;;;cADqBE,SAAAA,GAAYE,KAAAA,EAAOD,cAAc,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACrGN,gBAAAA,WAA2BL,WAAAA,GAAcG,OAAAA,UAAiBF,mBAAAA,CAAoBW,CAAAA;EASnFV;;AAAW;AAEvB;;;;;EAFIW,KAAAA,GAAQX,WAAAA;AAAAA;AAAAA,KAEAM,cAAAA,WAAyBR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,gBAAAA,CAAiBO,CAAAA"}
1
+ {"version":3,"file":"select-row.d.ts","names":["Props","ElementType","CompositeRowOptions","SelectStore","TagName","useSelectRow","SelectRowOptions","Hook","SelectRow","SelectRowProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/select/select-row.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAgB7B;;;;AAA8F;AAlBzC,cAkBhCC,YAAAA,iCAA6CE,IAAAA,QAAYD,gBAAgB;;;;;;;;;AAwBiD;AAC/I;;;;;;;;;;;;;;cADqBE,SAAAA,GAAYE,KAAAA,EAAOD,cAAc,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACzGN,gBAAAA,WAA2BL,WAAAA,GAAcG,OAAAA,UAAiBF,mBAAAA,CAAoBW,CAAAA;EASnFV;;AAAW;AAEvB;;;;;EAFIW,KAAAA,GAAQX,WAAAA;AAAAA;AAAAA,KAEAM,cAAAA,WAAyBR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,gBAAAA,CAAiBO,CAAAA"}
@@ -24,7 +24,7 @@ const TagName = "div";
24
24
  const useSelectRow = createHook(function useSelectRow({ store, ...props }) {
25
25
  const context = useSelectContext();
26
26
  store = store || context;
27
- invariant(store, "SelectRow must be wrapped in a SelectList or SelectPopover component");
27
+ invariant(store, process.env.NODE_ENV !== "production" && "SelectRow must be wrapped in a SelectList or SelectPopover component");
28
28
  props = {
29
29
  role: getPopupRole(useStoreState(store, "listElement")) === "grid" ? "row" : "presentation",
30
30
  ...props
@@ -1 +1 @@
1
- {"version":3,"file":"select-row.js","names":[],"sources":["../../src/select/select-row.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport { createElement, createHook, forwardRef } from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { getPopupRole, invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { CompositeRowOptions } from \"../composite/composite-row.tsx\";\nimport { useCompositeRow } from \"../composite/composite-row.tsx\";\nimport { useSelectContext } from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `SelectRow` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectRow({ store });\n * <SelectPopover store={store}>\n * <Role {...props}>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </Role>\n * </SelectPopover>\n * ```\n */\nexport const useSelectRow = createHook<TagName, SelectRowOptions>(\n function useSelectRow({ store, ...props }) {\n const context = useSelectContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectRow must be wrapped in a SelectList or SelectPopover component\",\n );\n\n const listElement = useStoreState(store, \"listElement\");\n const popupRole = getPopupRole(listElement);\n const role = popupRole === \"grid\" ? \"row\" : \"presentation\";\n\n props = { role, ...props };\n\n props = useCompositeRow({ store, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a select row that allows two-dimensional arrow key navigation.\n * [`SelectItem`](https://ariakit.com/reference/select-item) elements wrapped\n * within this component will automatically receive a\n * [`rowId`](https://ariakit.com/reference/select-item#rowid) prop.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {4-11}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectRow>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectRow>\n * <SelectRow>\n * <SelectItem value=\"Banana\" />\n * <SelectItem value=\"Grape\" />\n * </SelectRow>\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectRow = forwardRef(function SelectRow(props: SelectRowProps) {\n const htmlProps = useSelectRow(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface SelectRowOptions<\n T extends ElementType = TagName,\n> extends CompositeRowOptions<T> {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the parent\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components'\n * context will be used.\n */\n store?: SelectStore;\n}\n\nexport type SelectRowProps<T extends ElementType = TagName> = Props<\n T,\n SelectRowOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;MA8BI,eAAgB,WAAA,SAAiB,aAAA,EAAA,OAAA,GAAA,SAAA;CACjC,MAAA,UAAQ,iBAAS;CAEjB,QAAA,SAGI;CAOJ,UAAQ,OAAA,sEAAA;SAHU;EAGF,MAAG,aAAA,cAAA,OAAA,aAAA,CAAA,MAAA,SAAA,QAAA;EAAM,GAAA;CAEzB;SAA0B,gBAAA;EAAO;EAAU,GAAA;CAE3C,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;MA2BE,YAAO,WAAc,SADH,UAAa,OACQ;CACxC,OAAA,cAAA,SAAA,aAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"select-row.js","names":[],"sources":["../../src/select/select-row.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport { createElement, createHook, forwardRef } from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { getPopupRole, invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { CompositeRowOptions } from \"../composite/composite-row.tsx\";\nimport { useCompositeRow } from \"../composite/composite-row.tsx\";\nimport { useSelectContext } from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `SelectRow` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelectRow({ store });\n * <SelectPopover store={store}>\n * <Role {...props}>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </Role>\n * </SelectPopover>\n * ```\n */\nexport const useSelectRow = createHook<TagName, SelectRowOptions>(\n function useSelectRow({ store, ...props }) {\n const context = useSelectContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"SelectRow must be wrapped in a SelectList or SelectPopover component\",\n );\n\n const listElement = useStoreState(store, \"listElement\");\n const popupRole = getPopupRole(listElement);\n const role = popupRole === \"grid\" ? \"row\" : \"presentation\";\n\n props = { role, ...props };\n\n props = useCompositeRow({ store, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a select row that allows two-dimensional arrow key navigation.\n * [`SelectItem`](https://ariakit.com/reference/select-item) elements wrapped\n * within this component will automatically receive a\n * [`rowId`](https://ariakit.com/reference/select-item#rowid) prop.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {4-11}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectRow>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectRow>\n * <SelectRow>\n * <SelectItem value=\"Banana\" />\n * <SelectItem value=\"Grape\" />\n * </SelectRow>\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const SelectRow = forwardRef(function SelectRow(props: SelectRowProps) {\n const htmlProps = useSelectRow(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface SelectRowOptions<\n T extends ElementType = TagName,\n> extends CompositeRowOptions<T> {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the parent\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components'\n * context will be used.\n */\n store?: SelectStore;\n}\n\nexport type SelectRowProps<T extends ElementType = TagName> = Props<\n T,\n SelectRowOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;MA8BI,eAAgB,WAAA,SAAiB,aAAA,EAAA,OAAA,GAAA,SAAA;CACjC,MAAA,UAAQ,iBAAS;CAEjB,QAAA,SAEE;CAQF,UAAQ,OAAA,QAAA,IAAA,aAAA,gBAAA,sEAAA;SAHU;EAGF,MAAG,aAAA,cAAA,OAAA,aAAA,CAAA,MAAA,SAAA,QAAA;EAAM,GAAA;CAEzB;SAA0B,gBAAA;EAAO;EAAU,GAAA;CAE3C,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;MA2BE,YAAO,WAAc,SADH,UAAa,OACQ;CACxC,OAAA,cAAA,SAAA,aAAA,KAAA,CAAA"}
@@ -42,7 +42,7 @@ declare const useSelectSeparator: import("@ariakit/react-utils").Hook<"hr", Sele
42
42
  * </SelectProvider>
43
43
  * ```
44
44
  */
45
- declare const SelectSeparator: (props: SelectSeparatorProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
45
+ declare const SelectSeparator: (props: SelectSeparatorProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
46
46
  interface SelectSeparatorOptions<T extends ElementType = TagName> extends CompositeSeparatorOptions<T> {
47
47
  /**
48
48
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"select-separator.d.ts","names":["Props","ElementType","CompositeSeparatorOptions","SelectStore","TagName","useSelectSeparator","SelectSeparatorOptions","Hook","SelectSeparator","SelectSeparatorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/select/select-separator.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAiB7B;;;;AAAyG;AAoBzG;AAvCqD,cAmBhCC,kBAAAA,iCAAmDE,IAAAA,OAAWD,sBAAsB;;;;;;;;AAoB8C;AACvJ;;;;;;;;;;;cADqBE,eAAAA,GAAkBE,KAAAA,EAAOD,oBAAoB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACjHN,sBAAAA,WAAiCL,WAAAA,GAAcG,OAAAA,UAAiBF,yBAAAA,CAA0BW,CAAAA;EAA1BX;;;;;AAS1D;AAEvB;;EAFIY,KAAAA,GAAQX,WAAAA;AAAAA;AAAAA,KAEAM,oBAAAA,WAA+BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,sBAAAA,CAAuBO,CAAAA"}
1
+ {"version":3,"file":"select-separator.d.ts","names":["Props","ElementType","CompositeSeparatorOptions","SelectStore","TagName","useSelectSeparator","SelectSeparatorOptions","Hook","SelectSeparator","SelectSeparatorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/select/select-separator.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAiB7B;;;;AAAyG;AAoBzG;AAvCqD,cAmBhCC,kBAAAA,iCAAmDE,IAAAA,OAAWD,sBAAsB;;;;;;;;AAoBkD;AAC3J;;;;;;;;;;;cADqBE,eAAAA,GAAkBE,KAAAA,EAAOD,oBAAoB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACrHN,sBAAAA,WAAiCL,WAAAA,GAAcG,OAAAA,UAAiBF,yBAAAA,CAA0BW,CAAAA;EAA1BX;;;;;AAS1D;AAEvB;;EAFIY,KAAAA,GAAQX,WAAAA;AAAAA;AAAAA,KAEAM,oBAAAA,WAA+BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,sBAAAA,CAAuBO,CAAAA"}
@@ -1,5 +1,5 @@
1
1
  import { PopoverDisclosureOptions } from "../popover/popover-disclosure.js";
2
- import { n as CompositeTypeaheadOptions } from "../composite-typeahead-DDhpyKqm.js";
2
+ import { n as CompositeTypeaheadOptions } from "../composite-typeahead-0euW43GU.js";
3
3
  import { t as SelectStore } from "../select-store-BsLTAyKh.js";
4
4
  import { Props } from "@ariakit/react-utils";
5
5
  import { ElementType, KeyboardEvent, MouseEvent, SelectHTMLAttributes } from "react";
@@ -41,7 +41,7 @@ declare const useSelect: import("@ariakit/react-utils").Hook<"button", SelectOpt
41
41
  * </SelectProvider>
42
42
  * ```
43
43
  */
44
- declare const Select: (props: SelectProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
44
+ declare const Select: (props: SelectProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
45
45
  interface SelectOptions<T extends ElementType = TagName> extends PopoverDisclosureOptions<T>, CompositeTypeaheadOptions<T>, Pick<SelectHTMLAttributes<HTMLSelectElement>, "name" | "form" | "required"> {
46
46
  /**
47
47
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","names":["Props","BooleanOrCallback","ElementType","KeyboardEvent","MouseEvent","SelectHTMLAttributes","CompositeTypeaheadOptions","PopoverDisclosureOptions","SelectStore","TagName","useSelect","SelectOptions","Hook","Select","SelectProps","props","ReactElement","JSXElementConstructor","T","HTMLSelectElement","HTMLElement","Pick","store","showOnKeyDown","moveOnKeyDown","toggleOnPress"],"sources":["../../src/select/select.d.ts"],"mappings":";;;;;;;;cAMcS,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAFwB,cAahCC,SAAAA,iCAA0CE,IAAAA,WAAeD,aAAa;;;;AAAA;AAuB3F;;;;;;;;;AAAqI;AACrI;;;;;;;;cADqBE,MAAAA,GAASE,KAAAA,EAAOD,WAAW,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC/FN,aAAAA,WAAwBT,WAAAA,GAAcO,OAAAA,UAAiBF,wBAAAA,CAAyBW,CAAAA,GAAIZ,yBAAAA,CAA0BY,CAAAA,GAAIG,IAAAA,CAAKhB,oBAAAA,CAAqBc,iBAAAA;EAoBzGC;;;;;;;EAZhDE,KAAAA,GAAQd,WAAAA;EA+BkEY;;;;;;;;;;;EAnB1EG,aAAAA,GAAgBtB,iBAAAA,CAAkBE,aAAAA,CAAciB,WAAAA;EApB6CF;;;;;;;EA4B7FM,aAAAA,GAAgBvB,iBAAAA,CAAkBE,aAAAA,CAAciB,WAAAA;EARhDG;;;;;;;;;;EAmBAE,aAAAA,GAAgBxB,iBAAAA,CAAkBG,UAAAA,CAAWgB,WAAAA,IAAejB,aAAAA,CAAciB,WAAAA;AAAAA;AAAAA,KAElEN,WAAAA,WAAsBZ,WAAAA,GAAcO,OAAAA,IAAWT,KAAAA,CAAMkB,CAAAA,EAAGP,aAAAA,CAAcO,CAAAA"}
1
+ {"version":3,"file":"select.d.ts","names":["Props","BooleanOrCallback","ElementType","KeyboardEvent","MouseEvent","SelectHTMLAttributes","CompositeTypeaheadOptions","PopoverDisclosureOptions","SelectStore","TagName","useSelect","SelectOptions","Hook","Select","SelectProps","props","ReactElement","JSXElementConstructor","T","HTMLSelectElement","HTMLElement","Pick","store","showOnKeyDown","moveOnKeyDown","toggleOnPress"],"sources":["../../src/select/select.d.ts"],"mappings":";;;;;;;;cAMcS,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFwB;;;;AAChC;AAAA;;;;AACQ;AAFwB,cAahCC,SAAAA,iCAA0CE,IAAAA,WAAeD,aAAa;;;;AAAA;AAuB3F;;;;;;;;;AAAyI;AACzI;;;;;;;;cADqBE,MAAAA,GAASE,KAAAA,EAAOD,WAAW,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACnGN,aAAAA,WAAwBT,WAAAA,GAAcO,OAAAA,UAAiBF,wBAAAA,CAAyBW,CAAAA,GAAIZ,yBAAAA,CAA0BY,CAAAA,GAAIG,IAAAA,CAAKhB,oBAAAA,CAAqBc,iBAAAA;EAoBzGC;;;;;;;EAZhDE,KAAAA,GAAQd,WAAAA;EA+BkEY;;;;;;;;;;;EAnB1EG,aAAAA,GAAgBtB,iBAAAA,CAAkBE,aAAAA,CAAciB,WAAAA;EApB6CF;;;;;;;EA4B7FM,aAAAA,GAAgBvB,iBAAAA,CAAkBE,aAAAA,CAAciB,WAAAA;EARhDG;;;;;;;;;;EAmBAE,aAAAA,GAAgBxB,iBAAAA,CAAkBG,UAAAA,CAAWgB,WAAAA,IAAejB,aAAAA,CAAciB,WAAAA;AAAAA;AAAAA,KAElEN,WAAAA,WAAsBZ,WAAAA,GAAcO,OAAAA,IAAWT,KAAAA,CAAMkB,CAAAA,EAAGP,aAAAA,CAAcO,CAAAA"}
@@ -42,7 +42,7 @@ function nextWithValue(store, next) {
42
42
  const useSelect = createHook(function useSelect({ store, name, form, required, showOnKeyDown = true, moveOnKeyDown = true, toggleOnPress = true, toggleOnClick = toggleOnPress, ...props }) {
43
43
  const context = useSelectProviderContext();
44
44
  store = store || context;
45
- invariant(store, "Select must receive a `store` prop or be wrapped in a SelectProvider component.");
45
+ invariant(store, process.env.NODE_ENV !== "production" && "Select must receive a `store` prop or be wrapped in a SelectProvider component.");
46
46
  const onKeyDownProp = props.onKeyDown;
47
47
  const showOnKeyDownProp = useBooleanEvent(showOnKeyDown);
48
48
  const moveOnKeyDownProp = useBooleanEvent(moveOnKeyDown);
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","names":[],"sources":["../../src/select/select.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useMergeRefs,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport {\n toArray,\n getPopupRole,\n queueBeforeEvent,\n invariant,\n} from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type {\n ElementType,\n KeyboardEvent,\n MouseEvent,\n SelectHTMLAttributes,\n} from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { CompositeTypeaheadOptions } from \"../composite/composite-typeahead.tsx\";\nimport { useCompositeTypeahead } from \"../composite/composite-typeahead.tsx\";\nimport type { PopoverDisclosureOptions } from \"../popover/popover-disclosure.tsx\";\nimport { usePopoverDisclosure } from \"../popover/popover-disclosure.tsx\";\nimport { SelectArrow } from \"./select-arrow.tsx\";\nimport {\n SelectScopedContextProvider,\n useSelectProviderContext,\n} from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"button\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\ntype BasePlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nfunction getSelectedValues(select: HTMLSelectElement) {\n return Array.from(select.selectedOptions).map((option) => option.value);\n}\n\n// When moving through the items when the select list is closed, we don't want\n// to move to items without value, so we filter them out here.\nfunction nextWithValue(store: SelectStore, next: SelectStore[\"next\"]) {\n return () => {\n const nextId = next();\n if (!nextId) return;\n let i = 0;\n let nextItem = store.item(nextId);\n const firstItem = nextItem;\n while (nextItem && nextItem.value == null) {\n const nextId = next(++i);\n if (!nextId) return;\n nextItem = store.item(nextId);\n // Prevents infinite loop when focusLoop is true\n if (nextItem === firstItem) break;\n }\n return nextItem?.id;\n };\n}\n\n/**\n * Returns props to create a `Select` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelect({ store });\n * <Role {...props} />\n * ```\n */\nexport const useSelect = createHook<TagName, SelectOptions>(function useSelect({\n store,\n name,\n form,\n required,\n showOnKeyDown = true,\n moveOnKeyDown = true,\n toggleOnPress = true,\n toggleOnClick = toggleOnPress,\n ...props\n}) {\n const context = useSelectProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Select must receive a `store` prop or be wrapped in a SelectProvider component.\",\n );\n\n const onKeyDownProp = props.onKeyDown;\n const showOnKeyDownProp = useBooleanEvent(showOnKeyDown);\n const moveOnKeyDownProp = useBooleanEvent(moveOnKeyDown);\n const placement = useStoreState(store, \"placement\");\n const dir = placement.split(\"-\")[0] as BasePlacement;\n const value = useStoreState(store, \"value\");\n const multiSelectable = Array.isArray(value);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const { orientation, items, activeId } = store.getState();\n // moveOnKeyDown\n const isVertical = orientation !== \"horizontal\";\n const isHorizontal = orientation !== \"vertical\";\n const isGrid = !!items.find((item) => !item.disabled && item.value != null)\n ?.rowId;\n const moveKeyMap = {\n ArrowUp: (isGrid || isVertical) && nextWithValue(store, store.up),\n ArrowRight: (isGrid || isHorizontal) && nextWithValue(store, store.next),\n ArrowDown: (isGrid || isVertical) && nextWithValue(store, store.down),\n ArrowLeft:\n (isGrid || isHorizontal) && nextWithValue(store, store.previous),\n };\n const getId = moveKeyMap[event.key as keyof typeof moveKeyMap];\n if (getId && moveOnKeyDownProp(event)) {\n event.preventDefault();\n store.move(getId());\n }\n // showOnKeyDown\n const isTopOrBottom = dir === \"top\" || dir === \"bottom\";\n const isLeft = dir === \"left\";\n const isRight = dir === \"right\";\n const canShowKeyMap = {\n ArrowDown: isTopOrBottom,\n ArrowUp: isTopOrBottom,\n ArrowLeft: isLeft,\n ArrowRight: isRight,\n };\n const canShow = canShowKeyMap[event.key as keyof typeof canShowKeyMap];\n if (canShow && showOnKeyDownProp(event)) {\n event.preventDefault();\n store.move(activeId);\n // Schedule the show event to run after the key event has finished\n // bubbling. This is necessary to avoid the page to scroll when the\n // popover is shown.\n queueBeforeEvent(event.currentTarget, \"keyup\", store.show);\n }\n });\n\n props = useWrapElement(\n props,\n (element) => (\n <SelectScopedContextProvider value={store}>\n {element}\n </SelectScopedContextProvider>\n ),\n [store],\n );\n\n const [autofill, setAutofill] = useState(false);\n const nativeSelectChangedRef = useRef(false);\n\n // Resets the autofilled state when the select value changes, but only if\n // the change wasn't triggered by the native select element (which is an\n // autofill).\n useEffect(() => {\n const nativeSelectChanged = nativeSelectChangedRef.current;\n nativeSelectChangedRef.current = false;\n if (nativeSelectChanged) return;\n setAutofill(false);\n }, [value]);\n\n const labelId = useStoreState(store, (state) => state.labelElement?.id);\n const label = props[\"aria-label\"];\n const labelledBy = props[\"aria-labelledby\"] || labelId;\n const items = useStoreState(store, (state) => {\n if (!name) return;\n return state.items;\n });\n const values = useMemo(() => {\n // Filter out items without value and duplicate values.\n return [...new Set(items?.map((i) => i.value!).filter((v) => v != null))];\n }, [items]);\n\n // Renders a native select element with the same value as the select so we\n // support browser autofill. When the native select value changes, the\n // onChange event is triggered and we set the autofill state to true.\n props = useWrapElement(\n props,\n (element) => {\n if (!name) return element;\n return (\n <>\n <select\n style={{\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\",\n }}\n tabIndex={-1}\n aria-hidden\n aria-label={label}\n aria-labelledby={label != null ? undefined : labelledBy}\n name={name}\n form={form}\n required={required}\n disabled={props.disabled}\n value={value}\n multiple={multiSelectable}\n // Even though this element is visually hidden and is not\n // tabbable, it's still focusable. Some autofill extensions like\n // 1password will move focus to the next form element on autofill.\n // In this case, we want to move focus to our custom select\n // element.\n onFocus={() => store?.getState().selectElement?.focus()}\n onChange={(event) => {\n nativeSelectChangedRef.current = true;\n setAutofill(true);\n store?.setValue(\n multiSelectable\n ? getSelectedValues(event.target)\n : event.target.value,\n );\n }}\n >\n {toArray(value).map((value) => {\n if (value == null) return null;\n if (values.includes(value)) return null;\n return (\n <option key={value} value={value}>\n {value}\n </option>\n );\n })}\n {values.map((value) => (\n <option key={value} value={value}>\n {value}\n </option>\n ))}\n </select>\n {element}\n </>\n );\n },\n [\n store,\n label,\n labelledBy,\n name,\n form,\n required,\n value,\n multiSelectable,\n values,\n props.disabled,\n ],\n );\n\n const children = (\n <>\n {value}\n <SelectArrow />\n </>\n );\n\n const contentElement = useStoreState(store, \"contentElement\");\n\n props = {\n role: \"combobox\",\n \"aria-autocomplete\": \"none\",\n \"aria-labelledby\": props[\"aria-label\"] != null ? undefined : labelId,\n \"aria-haspopup\": getPopupRole(contentElement, \"listbox\"),\n \"data-autofill\": autofill || undefined,\n \"data-name\": name,\n children,\n ...props,\n ref: useMergeRefs(store.setSelectElement, props.ref),\n onKeyDown,\n };\n\n props = usePopoverDisclosure({ store, toggleOnClick, ...props });\n props = useCompositeTypeahead<TagName>({ store, ...props });\n\n return props;\n});\n\n/**\n * Renders a custom select element that controls the visibility of either a\n * [`SelectList`](https://ariakit.com/reference/select-list) or a\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) component.\n *\n * By default, the\n * [`value`](https://ariakit.com/reference/select-provider#value) state is\n * rendered as the children, followed by a\n * [`SelectArrow`](https://ariakit.com/reference/select-arrow) component. This\n * can be customized by passing different children to the component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {2}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const Select = forwardRef(function Select(props: SelectProps) {\n const htmlProps = useSelect(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface SelectOptions<T extends ElementType = TagName>\n extends\n PopoverDisclosureOptions<T>,\n CompositeTypeaheadOptions<T>,\n Pick<\n SelectHTMLAttributes<HTMLSelectElement>,\n \"name\" | \"form\" | \"required\"\n > {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the closest\n * [`SelectProvider`](https://ariakit.com/reference/select-provider)\n * component's context will be used.\n */\n store?: SelectStore;\n /**\n * Determines if the\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * will appear when the user uses arrow keys while the select element is\n * in focus.\n *\n * Live examples:\n * - [Select Grid](https://ariakit.com/examples/select-grid)\n * @default true\n */\n showOnKeyDown?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n /**\n * Determines whether pressing arrow keys will move the active item even when\n * the [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * are hidden.\n * @default false\n */\n moveOnKeyDown?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n /**\n * Determines whether pressing Space, Enter, or a click event will\n * [`toggle`](https://ariakit.com/reference/use-select-store#toggle) the\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components.\n * @default true\n * @deprecated Use\n * [`toggleOnClick`](https://ariakit.com/reference/select#toggleonclick)\n * instead.\n */\n toggleOnPress?: BooleanOrCallback<\n MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>\n >;\n}\n\nexport type SelectProps<T extends ElementType = TagName> = Props<\n T,\n SelectOptions<T>\n>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"select.js","names":[],"sources":["../../src/select/select.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useMergeRefs,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport {\n toArray,\n getPopupRole,\n queueBeforeEvent,\n invariant,\n} from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type {\n ElementType,\n KeyboardEvent,\n MouseEvent,\n SelectHTMLAttributes,\n} from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { CompositeTypeaheadOptions } from \"../composite/composite-typeahead.tsx\";\nimport { useCompositeTypeahead } from \"../composite/composite-typeahead.tsx\";\nimport type { PopoverDisclosureOptions } from \"../popover/popover-disclosure.tsx\";\nimport { usePopoverDisclosure } from \"../popover/popover-disclosure.tsx\";\nimport { SelectArrow } from \"./select-arrow.tsx\";\nimport {\n SelectScopedContextProvider,\n useSelectProviderContext,\n} from \"./select-context.tsx\";\nimport type { SelectStore } from \"./select-store.ts\";\n\nconst TagName = \"button\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\ntype BasePlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nfunction getSelectedValues(select: HTMLSelectElement) {\n return Array.from(select.selectedOptions).map((option) => option.value);\n}\n\n// When moving through the items when the select list is closed, we don't want\n// to move to items without value, so we filter them out here.\nfunction nextWithValue(store: SelectStore, next: SelectStore[\"next\"]) {\n return () => {\n const nextId = next();\n if (!nextId) return;\n let i = 0;\n let nextItem = store.item(nextId);\n const firstItem = nextItem;\n while (nextItem && nextItem.value == null) {\n const nextId = next(++i);\n if (!nextId) return;\n nextItem = store.item(nextId);\n // Prevents infinite loop when focusLoop is true\n if (nextItem === firstItem) break;\n }\n return nextItem?.id;\n };\n}\n\n/**\n * Returns props to create a `Select` component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx\n * const store = useSelectStore();\n * const props = useSelect({ store });\n * <Role {...props} />\n * ```\n */\nexport const useSelect = createHook<TagName, SelectOptions>(function useSelect({\n store,\n name,\n form,\n required,\n showOnKeyDown = true,\n moveOnKeyDown = true,\n toggleOnPress = true,\n toggleOnClick = toggleOnPress,\n ...props\n}) {\n const context = useSelectProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Select must receive a `store` prop or be wrapped in a SelectProvider component.\",\n );\n\n const onKeyDownProp = props.onKeyDown;\n const showOnKeyDownProp = useBooleanEvent(showOnKeyDown);\n const moveOnKeyDownProp = useBooleanEvent(moveOnKeyDown);\n const placement = useStoreState(store, \"placement\");\n const dir = placement.split(\"-\")[0] as BasePlacement;\n const value = useStoreState(store, \"value\");\n const multiSelectable = Array.isArray(value);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const { orientation, items, activeId } = store.getState();\n // moveOnKeyDown\n const isVertical = orientation !== \"horizontal\";\n const isHorizontal = orientation !== \"vertical\";\n const isGrid = !!items.find((item) => !item.disabled && item.value != null)\n ?.rowId;\n const moveKeyMap = {\n ArrowUp: (isGrid || isVertical) && nextWithValue(store, store.up),\n ArrowRight: (isGrid || isHorizontal) && nextWithValue(store, store.next),\n ArrowDown: (isGrid || isVertical) && nextWithValue(store, store.down),\n ArrowLeft:\n (isGrid || isHorizontal) && nextWithValue(store, store.previous),\n };\n const getId = moveKeyMap[event.key as keyof typeof moveKeyMap];\n if (getId && moveOnKeyDownProp(event)) {\n event.preventDefault();\n store.move(getId());\n }\n // showOnKeyDown\n const isTopOrBottom = dir === \"top\" || dir === \"bottom\";\n const isLeft = dir === \"left\";\n const isRight = dir === \"right\";\n const canShowKeyMap = {\n ArrowDown: isTopOrBottom,\n ArrowUp: isTopOrBottom,\n ArrowLeft: isLeft,\n ArrowRight: isRight,\n };\n const canShow = canShowKeyMap[event.key as keyof typeof canShowKeyMap];\n if (canShow && showOnKeyDownProp(event)) {\n event.preventDefault();\n store.move(activeId);\n // Schedule the show event to run after the key event has finished\n // bubbling. This is necessary to avoid the page to scroll when the\n // popover is shown.\n queueBeforeEvent(event.currentTarget, \"keyup\", store.show);\n }\n });\n\n props = useWrapElement(\n props,\n (element) => (\n <SelectScopedContextProvider value={store}>\n {element}\n </SelectScopedContextProvider>\n ),\n [store],\n );\n\n const [autofill, setAutofill] = useState(false);\n const nativeSelectChangedRef = useRef(false);\n\n // Resets the autofilled state when the select value changes, but only if\n // the change wasn't triggered by the native select element (which is an\n // autofill).\n useEffect(() => {\n const nativeSelectChanged = nativeSelectChangedRef.current;\n nativeSelectChangedRef.current = false;\n if (nativeSelectChanged) return;\n setAutofill(false);\n }, [value]);\n\n const labelId = useStoreState(store, (state) => state.labelElement?.id);\n const label = props[\"aria-label\"];\n const labelledBy = props[\"aria-labelledby\"] || labelId;\n const items = useStoreState(store, (state) => {\n if (!name) return;\n return state.items;\n });\n const values = useMemo(() => {\n // Filter out items without value and duplicate values.\n return [...new Set(items?.map((i) => i.value!).filter((v) => v != null))];\n }, [items]);\n\n // Renders a native select element with the same value as the select so we\n // support browser autofill. When the native select value changes, the\n // onChange event is triggered and we set the autofill state to true.\n props = useWrapElement(\n props,\n (element) => {\n if (!name) return element;\n return (\n <>\n <select\n style={{\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\",\n }}\n tabIndex={-1}\n aria-hidden\n aria-label={label}\n aria-labelledby={label != null ? undefined : labelledBy}\n name={name}\n form={form}\n required={required}\n disabled={props.disabled}\n value={value}\n multiple={multiSelectable}\n // Even though this element is visually hidden and is not\n // tabbable, it's still focusable. Some autofill extensions like\n // 1password will move focus to the next form element on autofill.\n // In this case, we want to move focus to our custom select\n // element.\n onFocus={() => store?.getState().selectElement?.focus()}\n onChange={(event) => {\n nativeSelectChangedRef.current = true;\n setAutofill(true);\n store?.setValue(\n multiSelectable\n ? getSelectedValues(event.target)\n : event.target.value,\n );\n }}\n >\n {toArray(value).map((value) => {\n if (value == null) return null;\n if (values.includes(value)) return null;\n return (\n <option key={value} value={value}>\n {value}\n </option>\n );\n })}\n {values.map((value) => (\n <option key={value} value={value}>\n {value}\n </option>\n ))}\n </select>\n {element}\n </>\n );\n },\n [\n store,\n label,\n labelledBy,\n name,\n form,\n required,\n value,\n multiSelectable,\n values,\n props.disabled,\n ],\n );\n\n const children = (\n <>\n {value}\n <SelectArrow />\n </>\n );\n\n const contentElement = useStoreState(store, \"contentElement\");\n\n props = {\n role: \"combobox\",\n \"aria-autocomplete\": \"none\",\n \"aria-labelledby\": props[\"aria-label\"] != null ? undefined : labelId,\n \"aria-haspopup\": getPopupRole(contentElement, \"listbox\"),\n \"data-autofill\": autofill || undefined,\n \"data-name\": name,\n children,\n ...props,\n ref: useMergeRefs(store.setSelectElement, props.ref),\n onKeyDown,\n };\n\n props = usePopoverDisclosure({ store, toggleOnClick, ...props });\n props = useCompositeTypeahead<TagName>({ store, ...props });\n\n return props;\n});\n\n/**\n * Renders a custom select element that controls the visibility of either a\n * [`SelectList`](https://ariakit.com/reference/select-list) or a\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) component.\n *\n * By default, the\n * [`value`](https://ariakit.com/reference/select-provider#value) state is\n * rendered as the children, followed by a\n * [`SelectArrow`](https://ariakit.com/reference/select-arrow) component. This\n * can be customized by passing different children to the component.\n * @see https://ariakit.com/components/select\n * @example\n * ```jsx {2}\n * <SelectProvider>\n * <Select />\n * <SelectPopover>\n * <SelectItem value=\"Apple\" />\n * <SelectItem value=\"Orange\" />\n * </SelectPopover>\n * </SelectProvider>\n * ```\n */\nexport const Select = forwardRef(function Select(props: SelectProps) {\n const htmlProps = useSelect(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface SelectOptions<T extends ElementType = TagName>\n extends\n PopoverDisclosureOptions<T>,\n CompositeTypeaheadOptions<T>,\n Pick<\n SelectHTMLAttributes<HTMLSelectElement>,\n \"name\" | \"form\" | \"required\"\n > {\n /**\n * Object returned by the\n * [`useSelectStore`](https://ariakit.com/reference/use-select-store) hook. If\n * not provided, the closest\n * [`SelectProvider`](https://ariakit.com/reference/select-provider)\n * component's context will be used.\n */\n store?: SelectStore;\n /**\n * Determines if the\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * will appear when the user uses arrow keys while the select element is\n * in focus.\n *\n * Live examples:\n * - [Select Grid](https://ariakit.com/examples/select-grid)\n * @default true\n */\n showOnKeyDown?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n /**\n * Determines whether pressing arrow keys will move the active item even when\n * the [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * are hidden.\n * @default false\n */\n moveOnKeyDown?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;\n /**\n * Determines whether pressing Space, Enter, or a click event will\n * [`toggle`](https://ariakit.com/reference/use-select-store#toggle) the\n * [`SelectList`](https://ariakit.com/reference/select-list) or\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components.\n * @default true\n * @deprecated Use\n * [`toggleOnClick`](https://ariakit.com/reference/select#toggleonclick)\n * instead.\n */\n toggleOnPress?: BooleanOrCallback<\n MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>\n >;\n}\n\nexport type SelectProps<T extends ElementType = TagName> = Props<\n T,\n SelectOptions<T>\n>;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { i as useSeparator, n as SeparatorOptions, r as SeparatorProps, t as Separator } from "../separator--ozQfMcK.js";
1
+ import { i as useSeparator, n as SeparatorOptions, r as SeparatorProps, t as Separator } from "../separator-BnvSVwBa.js";
2
2
  export { Separator, SeparatorOptions, SeparatorProps, useSeparator };
@@ -22,7 +22,7 @@ declare const useSeparator: import("@ariakit/react-utils").Hook<"hr", SeparatorO
22
22
  * <Separator orientation="horizontal" />
23
23
  * ```
24
24
  */
25
- declare const Separator: (props: SeparatorProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
25
+ declare const Separator: (props: SeparatorProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
26
26
  interface SeparatorOptions<_T extends ElementType = TagName> extends Options {
27
27
  /**
28
28
  * The orientation of the separator.
@@ -33,4 +33,4 @@ interface SeparatorOptions<_T extends ElementType = TagName> extends Options {
33
33
  type SeparatorProps<T extends ElementType = TagName> = Props<T, SeparatorOptions<T>>;
34
34
  //#endregion
35
35
  export { useSeparator as i, SeparatorOptions as n, SeparatorProps as r, Separator as t };
36
- //# sourceMappingURL=separator--ozQfMcK.d.ts.map
36
+ //# sourceMappingURL=separator-BnvSVwBa.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator--ozQfMcK.d.ts","names":["Options","Props","ElementType","TagName","useSeparator","SeparatorOptions","Hook","Separator","SeparatorProps","props","ReactElement","JSXElementConstructor","_T","orientation","T"],"sources":["../src/separator/separator.d.ts"],"mappings":";;;;cAEcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFY;;;;AACpB;AAAA;;;;AADoB,cAYpBC,YAAAA,iCAA6CE,IAAAA,OAAWD,gBAAgB;AAA7F;;;;AAA6F;AAS7F;;;AATA,cASqBE,SAAAA,GAAYE,KAAAA,EAAOD,cAAc,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACrGN,gBAAAA,YAA4BH,WAAAA,GAAcC,OAAAA,UAAiBH,OAAAA;EAD3CS;;;;EAM7BI,WAAAA;AAAAA;AAAAA,KAEQL,cAAAA,WAAyBN,WAAAA,GAAcC,OAAAA,IAAWF,KAAAA,CAAMa,CAAAA,EAAGT,gBAAAA,CAAiBS,CAAAA"}
1
+ {"version":3,"file":"separator-BnvSVwBa.d.ts","names":["Options","Props","ElementType","TagName","useSeparator","SeparatorOptions","Hook","Separator","SeparatorProps","props","ReactElement","JSXElementConstructor","_T","orientation","T"],"sources":["../src/separator/separator.d.ts"],"mappings":";;;;cAEcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFY;;;;AACpB;AAAA;;;;AADoB,cAYpBC,YAAAA,iCAA6CE,IAAAA,OAAWD,gBAAgB;AAA7F;;;;AAA6F;AAS7F;;;AATA,cASqBE,SAAAA,GAAYE,KAAAA,EAAOD,cAAc,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACzGN,gBAAAA,YAA4BH,WAAAA,GAAcC,OAAAA,UAAiBH,OAAAA;EAD3CS;;;;EAM7BI,WAAAA;AAAAA;AAAAA,KAEQL,cAAAA,WAAyBN,WAAAA,GAAcC,OAAAA,IAAWF,KAAAA,CAAMa,CAAAA,EAAGT,gBAAAA,CAAiBS,CAAAA"}
@@ -1,4 +1,4 @@
1
- import { n as CompositeOptions } from "../composite-DLvyFHMq.js";
1
+ import { n as CompositeOptions } from "../composite-KBhCGLEy.js";
2
2
  import { TabStore } from "./tab-store.js";
3
3
  import { Props } from "@ariakit/react-utils";
4
4
  import { ElementType } from "react";
@@ -38,7 +38,7 @@ declare const useTabList: import("@ariakit/react-utils").Hook<"div", TabListOpti
38
38
  * </TabProvider>
39
39
  * ```
40
40
  */
41
- declare const TabList: (props: TabListProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
41
+ declare const TabList: (props: TabListProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
42
42
  interface TabListOptions<T extends ElementType = TagName> extends CompositeOptions<T> {
43
43
  /**
44
44
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"tab-list.d.ts","names":["Props","ElementType","CompositeOptions","TabStore","TagName","useTabList","TabListOptions","Hook","TabList","TabListProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tab/tab-list.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFkB;;;;AAC1B;AAAA;;;;AACQ;AAgB7B;;;;AAA0F;AAlB3C,cAkB1BC,UAAAA,iCAA2CE,IAAAA,QAAYD,cAAc;;;;;;;;;AAiB6C;AACvI;;;;;;;cADqBE,OAAAA,GAAUE,KAAAA,EAAOD,YAAY,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACjGN,cAAAA,WAAyBL,WAAAA,GAAcG,OAAAA,UAAiBF,gBAAAA,CAAiBW,CAAAA;EAAD;;;;;;;EAQrFC,KAAAA,GAAQX,QAAAA;AAAAA;AAAAA,KAEAM,YAAAA,WAAuBR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,cAAAA,CAAeO,CAAAA"}
1
+ {"version":3,"file":"tab-list.d.ts","names":["Props","ElementType","CompositeOptions","TabStore","TagName","useTabList","TabListOptions","Hook","TabList","TabListProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tab/tab-list.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFkB;;;;AAC1B;AAAA;;;;AACQ;AAgB7B;;;;AAA0F;AAlB3C,cAkB1BC,UAAAA,iCAA2CE,IAAAA,QAAYD,cAAc;;;;;;;;;AAiBiD;AAC3I;;;;;;;cADqBE,OAAAA,GAAUE,KAAAA,EAAOD,YAAY,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACrGN,cAAAA,WAAyBL,WAAAA,GAAcG,OAAAA,UAAiBF,gBAAAA,CAAiBW,CAAAA;EAAD;;;;;;;EAQrFC,KAAAA,GAAQX,QAAAA;AAAAA;AAAAA,KAEAM,YAAAA,WAAuBR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,cAAAA,CAAeO,CAAAA"}
@@ -25,7 +25,7 @@ const TagName = "div";
25
25
  const useTabList = createHook(function useTabList({ store, ...props }) {
26
26
  const context = useTabProviderContext();
27
27
  store = store || context;
28
- invariant(store, "TabList must receive a `store` prop or be wrapped in a TabProvider component.");
28
+ invariant(store, process.env.NODE_ENV !== "production" && "TabList must receive a `store` prop or be wrapped in a TabProvider component.");
29
29
  const orientation = useStoreState(store, (state) => state.orientation === "both" ? void 0 : state.orientation);
30
30
  props = useWrapElement(props, (element) => /* @__PURE__ */ jsx(TabScopedContextProvider, {
31
31
  value: store,
@@ -1 +1 @@
1
- {"version":3,"file":"tab-list.js","names":[],"sources":["../../src/tab/tab-list.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { CompositeOptions } from \"../composite/composite.tsx\";\nimport { useComposite } from \"../composite/composite.tsx\";\nimport {\n TabScopedContextProvider,\n useTabProviderContext,\n} from \"./tab-context.tsx\";\nimport type { TabStore } from \"./tab-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `TabList` component.\n * @see https://ariakit.com/components/tab\n * @example\n * ```jsx\n * const store = useTabStore();\n * const props = useTabList({ store });\n * <Role {...props}>\n * <Tab>Tab 1</Tab>\n * <Tab>Tab 2</Tab>\n * </Role>\n * <TabPanel store={store}>Panel 1</TabPanel>\n * <TabPanel store={store}>Panel 2</TabPanel>\n * ```\n */\nexport const useTabList = createHook<TagName, TabListOptions>(\n function useTabList({ store, ...props }) {\n const context = useTabProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TabList must receive a `store` prop or be wrapped in a TabProvider component.\",\n );\n\n const orientation = useStoreState(store, (state) =>\n state.orientation === \"both\" ? undefined : state.orientation,\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <TabScopedContextProvider value={store}>\n {element}\n </TabScopedContextProvider>\n ),\n [store],\n );\n\n // If the tab list is rendered as part of another composite widget such as\n // combobox, it should not be focusable.\n if (store.composite) {\n props = {\n focusable: false,\n ...props,\n };\n }\n\n props = {\n role: \"tablist\",\n \"aria-orientation\": orientation,\n ...props,\n };\n\n props = useComposite({ store, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a composite tab list wrapper for\n * [`Tab`](https://ariakit.com/reference/tab) elements.\n * @see https://ariakit.com/components/tab\n * @example\n * ```jsx {2-5}\n * <TabProvider>\n * <TabList>\n * <Tab>Tab 1</Tab>\n * <Tab>Tab 2</Tab>\n * </TabList>\n * <TabPanel>Panel 1</TabPanel>\n * <TabPanel>Panel 2</TabPanel>\n * </TabProvider>\n * ```\n */\nexport const TabList = forwardRef(function TabList(props: TabListProps) {\n const htmlProps = useTabList(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TabListOptions<\n T extends ElementType = TagName,\n> extends CompositeOptions<T> {\n /**\n * Object returned by the\n * [`useTabStore`](https://ariakit.com/reference/use-tab-store) hook. If not\n * provided, the closest\n * [`TabProvider`](https://ariakit.com/reference/tab-provider) component's\n * context will be used.\n */\n store?: TabStore;\n}\n\nexport type TabListProps<T extends ElementType = TagName> = Props<\n T,\n TabListOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAsCI,aAAgB,WAAA,SAAsB,WAAA,EAAA,OAAA,GAAA,SAAA;CACtC,MAAA,UAAQ,sBAAS;CAEjB,QAAA,SAGI;CAGJ,UAAM,OAAA,+EACuC;CAG7C,MAAA,cAAQ,cAEL,QAAA,UACC,MAAA,gBAAC,SAAA,KAAA,IAAD,MAAA,WAAA;SAAiC,eAAA,QAAA,YAAA,oBAAA,0BAAA;;EAEP,UAG9B;CAIA,CAAA,GAAI,CAAA,KAAM,CAAA;KAEN,MAAA,WAAW,QAAA;EACX,WAAG;EACL,GAAA;CAGF;SACQ;EACN,MAAA;EACA,oBAAG;EACL,GAAA;CAEA;SAAuB,aAAA;EAAO;EAAU,GAAA;CAExC,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;MAoBE,UAAO,WAAc,SADH,QAAW,OACU;CACxC,OAAA,cAAA,SAAA,WAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"tab-list.js","names":[],"sources":["../../src/tab/tab-list.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { CompositeOptions } from \"../composite/composite.tsx\";\nimport { useComposite } from \"../composite/composite.tsx\";\nimport {\n TabScopedContextProvider,\n useTabProviderContext,\n} from \"./tab-context.tsx\";\nimport type { TabStore } from \"./tab-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `TabList` component.\n * @see https://ariakit.com/components/tab\n * @example\n * ```jsx\n * const store = useTabStore();\n * const props = useTabList({ store });\n * <Role {...props}>\n * <Tab>Tab 1</Tab>\n * <Tab>Tab 2</Tab>\n * </Role>\n * <TabPanel store={store}>Panel 1</TabPanel>\n * <TabPanel store={store}>Panel 2</TabPanel>\n * ```\n */\nexport const useTabList = createHook<TagName, TabListOptions>(\n function useTabList({ store, ...props }) {\n const context = useTabProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TabList must receive a `store` prop or be wrapped in a TabProvider component.\",\n );\n\n const orientation = useStoreState(store, (state) =>\n state.orientation === \"both\" ? undefined : state.orientation,\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <TabScopedContextProvider value={store}>\n {element}\n </TabScopedContextProvider>\n ),\n [store],\n );\n\n // If the tab list is rendered as part of another composite widget such as\n // combobox, it should not be focusable.\n if (store.composite) {\n props = {\n focusable: false,\n ...props,\n };\n }\n\n props = {\n role: \"tablist\",\n \"aria-orientation\": orientation,\n ...props,\n };\n\n props = useComposite({ store, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a composite tab list wrapper for\n * [`Tab`](https://ariakit.com/reference/tab) elements.\n * @see https://ariakit.com/components/tab\n * @example\n * ```jsx {2-5}\n * <TabProvider>\n * <TabList>\n * <Tab>Tab 1</Tab>\n * <Tab>Tab 2</Tab>\n * </TabList>\n * <TabPanel>Panel 1</TabPanel>\n * <TabPanel>Panel 2</TabPanel>\n * </TabProvider>\n * ```\n */\nexport const TabList = forwardRef(function TabList(props: TabListProps) {\n const htmlProps = useTabList(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TabListOptions<\n T extends ElementType = TagName,\n> extends CompositeOptions<T> {\n /**\n * Object returned by the\n * [`useTabStore`](https://ariakit.com/reference/use-tab-store) hook. If not\n * provided, the closest\n * [`TabProvider`](https://ariakit.com/reference/tab-provider) component's\n * context will be used.\n */\n store?: TabStore;\n}\n\nexport type TabListProps<T extends ElementType = TagName> = Props<\n T,\n TabListOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAsCI,aAAgB,WAAA,SAAsB,WAAA,EAAA,OAAA,GAAA,SAAA;CACtC,MAAA,UAAQ,sBAAS;CAEjB,QAAA,SAEE;CAIF,UAAM,OAAA,QAAc,IAAA,aAAsB,gBAClC,+EACR;CAEA,MAAA,cAAQ,cAEL,QAAA,UACC,MAAA,gBAAC,SAAA,KAAA,IAAD,MAAA,WAAA;SAAiC,eAAA,QAAA,YAAA,oBAAA,0BAAA;;EAEP,UAG9B;CAIA,CAAA,GAAI,CAAA,KAAM,CAAA;KAEN,MAAA,WAAW,QAAA;EACX,WAAG;EACL,GAAA;CAGF;SACQ;EACN,MAAA;EACA,oBAAG;EACL,GAAA;CAEA;SAAuB,aAAA;EAAO;EAAU,GAAA;CAExC,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;MAoBE,UAAO,WAAc,SADH,QAAW,OACU;CACxC,OAAA,cAAA,SAAA,WAAA,KAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { n as FocusableOptions } from "../focusable-B00tOxtB.js";
2
- import { n as CollectionItemOptions } from "../collection-item-C-g2BwVF.js";
1
+ import { n as FocusableOptions } from "../focusable-dBZH13-T.js";
2
+ import { n as CollectionItemOptions } from "../collection-item-pvEWNoNs.js";
3
3
  import { n as DisclosureContentOptions } from "../disclosure-content-BbPkZgAc.js";
4
4
  import { TabStore } from "./tab-store.js";
5
5
  import { Props } from "@ariakit/react-utils";
@@ -45,7 +45,7 @@ declare const useTabPanel: import("@ariakit/react-utils").Hook<"div", TabPanelOp
45
45
  * </TabProvider>
46
46
  * ```
47
47
  */
48
- declare const TabPanel: (props: TabPanelProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
48
+ declare const TabPanel: (props: TabPanelProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
49
49
  interface TabPanelOptions<T extends ElementType = TagName> extends FocusableOptions<T>, CollectionItemOptions<T>, Omit<DisclosureContentOptions<T>, "store"> {
50
50
  /**
51
51
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"tab-panel.d.ts","names":["Props","ElementType","RefObject","CollectionItemOptions","DisclosureContentOptions","FocusableOptions","TabStore","TagName","useTabPanel","TabPanelOptions","Hook","TabPanel","TabPanelProps","props","ReactElement","JSXElementConstructor","T","HTMLElement","Omit","store","tabId","scrollRestoration","scrollElement","panel"],"sources":["../../src/tab/tab-panel.d.ts"],"mappings":";;;;;;;;cAMcO,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFkB;;;;AAC1B;AAAA;;;;AACQ;AAc7B;;;AAhB+C,cAgB1BC,WAAAA,iCAA4CE,IAAAA,QAAYD,eAAe;AAAA;AAwB5F;;;;;;;;;AAAyI;AACzI;;;;;;;;;;;;AAzB4F,cAwBvEE,QAAAA,GAAWE,KAAAA,EAAOD,aAAa,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACnGN,eAAAA,WAA0BR,WAAAA,GAAcM,OAAAA,UAAiBF,gBAAAA,CAAiBW,CAAAA,GAAIb,qBAAAA,CAAsBa,CAAAA,GAAIE,IAAAA,CAAKd,wBAAAA,CAAyBY,CAAAA;EAoE5DC;;;;;;;EA5DvFE,KAAAA,GAAQb,QAAAA;EAR6CC;;;;;;;;;;;;;;;;;;;;AAoE6C;EAtClGa,KAAAA;EAwCqB;;;;;;;;;;;;;;;;;;AAA8D;;EAnBnFC,iBAAAA;;;;;;;;;;;;;;;;;EAiBAC,aAAAA,GAAgBL,WAAAA,GAAcf,SAAAA,CAAUe,WAAAA,aAAwBM,KAAAA,EAAON,WAAAA,KAAgBA,WAAAA;AAAAA;AAAAA,KAE/EL,aAAAA,WAAwBX,WAAAA,GAAcM,OAAAA,IAAWP,KAAAA,CAAMgB,CAAAA,EAAGP,eAAAA,CAAgBO,CAAAA"}
1
+ {"version":3,"file":"tab-panel.d.ts","names":["Props","ElementType","RefObject","CollectionItemOptions","DisclosureContentOptions","FocusableOptions","TabStore","TagName","useTabPanel","TabPanelOptions","Hook","TabPanel","TabPanelProps","props","ReactElement","JSXElementConstructor","T","HTMLElement","Omit","store","tabId","scrollRestoration","scrollElement","panel"],"sources":["../../src/tab/tab-panel.d.ts"],"mappings":";;;;;;;;cAMcO,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFkB;;;;AAC1B;AAAA;;;;AACQ;AAc7B;;;AAhB+C,cAgB1BC,WAAAA,iCAA4CE,IAAAA,QAAYD,eAAe;AAAA;AAwB5F;;;;;;;;;AAA6I;AAC7I;;;;;;;;;;;;AAzB4F,cAwBvEE,QAAAA,GAAWE,KAAAA,EAAOD,aAAa,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACvGN,eAAAA,WAA0BR,WAAAA,GAAcM,OAAAA,UAAiBF,gBAAAA,CAAiBW,CAAAA,GAAIb,qBAAAA,CAAsBa,CAAAA,GAAIE,IAAAA,CAAKd,wBAAAA,CAAyBY,CAAAA;EAoE5DC;;;;;;;EA5DvFE,KAAAA,GAAQb,QAAAA;EAR6CC;;;;;;;;;;;;;;;;;;;;AAoE6C;EAtClGa,KAAAA;EAwCqB;;;;;;;;;;;;;;;;;;AAA8D;;EAnBnFC,iBAAAA;;;;;;;;;;;;;;;;;EAiBAC,aAAAA,GAAgBL,WAAAA,GAAcf,SAAAA,CAAUe,WAAAA,aAAwBM,KAAAA,EAAON,WAAAA,KAAgBA,WAAAA;AAAAA;AAAAA,KAE/EL,aAAAA,WAAwBX,WAAAA,GAAcM,OAAAA,IAAWP,KAAAA,CAAMgB,CAAAA,EAAGP,eAAAA,CAAgBO,CAAAA"}
@@ -27,7 +27,7 @@ const TagName = "div";
27
27
  const useTabPanel = createHook(function useTabPanel({ store, unmountOnHide, tabId: tabIdProp, getItem: getItemProp, scrollRestoration, scrollElement, ...props }) {
28
28
  const context = useTabProviderContext();
29
29
  store = store || context;
30
- invariant(store, "TabPanel must receive a `store` prop or be wrapped in a TabProvider component.");
30
+ invariant(store, process.env.NODE_ENV !== "production" && "TabPanel must receive a `store` prop or be wrapped in a TabProvider component.");
31
31
  const ref = useRef(null);
32
32
  const id = useId(props.id);
33
33
  const tabId = useStoreState(store.panels, () => tabIdProp || store?.panels.item(id)?.tabId);
@@ -68,8 +68,7 @@ const useTabPanel = createHook(function useTabPanel({ store, unmountOnHide, tabI
68
68
  scrollRestoration,
69
69
  mounted,
70
70
  tabId,
71
- getScrollElement,
72
- store
71
+ getScrollElement
73
72
  ]);
74
73
  const [hasTabbableChildren, setHasTabbableChildren] = useState(false);
75
74
  useSafeLayoutEffect(() => {