@ariakit/react-components 0.1.0 → 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 +56 -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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # @ariakit/react-components
2
2
 
3
+ ## 0.1.2
4
+
5
+ ### Fixed `Combobox` dropping characters when the popover resizes while typing
6
+
7
+ The [`Combobox`](https://ariakit.com/reference/combobox) component with [`autoSelect`](https://ariakit.com/reference/combobox#autoselect) enabled no longer loses typed characters when the popover is resized as the user types.
8
+
9
+ This could happen with a virtualized list on mobile devices, where the keyboard's autocomplete bar repeatedly changes the available viewport height. Each resize re-rendered the list and re-applied the auto-selection, briefly moving focus away from the input and dropping keystrokes.
10
+
11
+ ### Composite items keep their enclosing store
12
+
13
+ Fixed [`CompositeItem`](https://ariakit.com/reference/composite-item) to register on the enclosing [`Composite`](https://ariakit.com/reference/composite) store when rendered as the same element as a component that sets its own composite context, such as a [`MenuButton`](https://ariakit.com/reference/menu-button) inside a [`MenuProvider`](https://ariakit.com/reference/menu-provider). This keeps the item reachable with the arrow keys in one- and two-dimensional composite widgets.
14
+
15
+ The [`CompositeItem`](https://ariakit.com/reference/composite-item) can now omit the explicit `store` prop and still register on the enclosing composite:
16
+
17
+ ```tsx {5-7}
18
+ const composite = Ariakit.useCompositeStore();
19
+
20
+ <Ariakit.Composite store={composite}>
21
+ <Ariakit.MenuProvider>
22
+ <Ariakit.CompositeItem render={<Ariakit.MenuButton />}>
23
+ Menu
24
+ </Ariakit.CompositeItem>
25
+ <Ariakit.Menu>
26
+ <Ariakit.MenuItem>Edit</Ariakit.MenuItem>
27
+ </Ariakit.Menu>
28
+ </Ariakit.MenuProvider>
29
+ </Ariakit.Composite>;
30
+ ```
31
+
32
+ ### Components no longer throw on events with a non-element target
33
+
34
+ Several components attach global event listeners that read `event.target`/`event.relatedTarget` and call methods like `contains()` and `hasAttribute()` on them. When third-party code dispatched an event whose target was a non-element `EventTarget` (such as `window` or an `XMLHttpRequest`), those calls threw a `TypeError`.
35
+
36
+ This affected [`Dialog`](https://ariakit.com/reference/dialog) (its interact-outside and Escape-to-close listeners), [`HovercardDisclosure`](https://ariakit.com/reference/hovercard-disclosure) (its focusout listener), and the shared `isFocusEventOutside` and `isPortalEvent` helpers used by [`Focusable`](https://ariakit.com/reference/focusable), [`Combobox`](https://ariakit.com/reference/combobox), [`Composite`](https://ariakit.com/reference/composite), and [`Portal`](https://ariakit.com/reference/portal).
37
+
38
+ ### Updated `PopoverArrow` to use computed colors directly
39
+
40
+ [`PopoverArrow`](https://ariakit.com/reference/popover-arrow) and its siblings ([`MenuArrow`](https://ariakit.com/reference/menu-arrow), [`TooltipArrow`](https://ariakit.com/reference/tooltip-arrow), [`HovercardArrow`](https://ariakit.com/reference/hovercard-arrow)) now set `fill` and `stroke` directly from the popover content's computed `background-color` and `border-color`, removing the previous `var(--ak-layer, …)` and `var(--ak-edge, …)` wrappers. Style the arrow with CSS if you need custom theming.
41
+
42
+ ### Other updates
43
+
44
+ - Fixed [`Button`](https://ariakit.com/reference/button) to preserve React form pending state when submitted with the keyboard.
45
+ - Fixed the offscreen [`CollectionItem`](https://ariakit.com/reference/collection-item) invariant message for missing `offscreenRoot` props.
46
+ - Fixed [`Dialog`](https://ariakit.com/reference/dialog) to preserve closing animations when using [`unmountOnHide`](https://ariakit.com/reference/dialog#unmountonhide) with the controlled [`open`](https://ariakit.com/reference/dialog#open) and [`onClose`](https://ariakit.com/reference/dialog#onclose) props and no explicit store.
47
+ - Documented that [`removeValue`](https://ariakit.com/reference/use-form-store#removevalue) preserves array length by replacing removed items with `null`.
48
+ - Fixed runtime `process.env.NODE_ENV` checks in published package output, including test-only behavior and development warnings.
49
+ - Fixed rendering many [`Menu`](https://ariakit.com/reference/menu) components on the same page potentially causing a "Maximum update depth exceeded" error. [`MenuItem`](https://ariakit.com/reference/menu-item) elements now register only while the menu is visible, instead of registering on mount even while it's hidden.
50
+ - Fixed [`Tab`](https://ariakit.com/reference/tab) to move focus to the selected tab after a controlled [`selectedId`](https://ariakit.com/reference/tab-provider#selectedid) update while a tab has DOM focus.
51
+ - Fixed [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider) to avoid a re-entrant loop when multiple tooltips are forced open at the same time.
52
+ - Updated dependencies: `@ariakit/store@0.1.2`, `@ariakit/utils@0.1.2`, `@ariakit/components@0.1.2`, `@ariakit/react-store@0.1.2`, `@ariakit/react-utils@0.1.2`
53
+
54
+ ## 0.1.1
55
+
56
+ - Release artifacts now include npm trusted publishing provenance.
57
+ - Updated dependencies: `@ariakit/utils@0.1.1`, `@ariakit/store@0.1.1`, `@ariakit/components@0.1.1`, `@ariakit/react-utils@0.1.1`, `@ariakit/react-store@0.1.1`
58
+
3
59
  ## 0.1.0
4
60
 
5
61
  ### Added component packages
@@ -1,2 +1,2 @@
1
- import { i as useButton, n as ButtonOptions, r as ButtonProps, t as Button } from "../button-Cp853csH.js";
1
+ import { i as useButton, n as ButtonOptions, r as ButtonProps, t as Button } from "../button-CVWcOgxs.js";
2
2
  export { Button, ButtonOptions, ButtonProps, useButton };
@@ -1,4 +1,4 @@
1
- import { n as CommandOptions } from "./command-DckndCUK.js";
1
+ import { n as CommandOptions } from "./command-B9C8p3_S.js";
2
2
  import { Props } from "@ariakit/react-utils";
3
3
  import { ElementType } from "react";
4
4
 
@@ -26,9 +26,9 @@ declare const useButton: import("@ariakit/react-utils").Hook<"button", ButtonOpt
26
26
  * <Button>Button</Button>
27
27
  * ```
28
28
  */
29
- declare const Button: (props: ButtonProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
29
+ declare const Button: (props: ButtonProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
30
30
  interface ButtonOptions<T extends ElementType = TagName> extends CommandOptions<T> {}
31
31
  type ButtonProps<T extends ElementType = TagName> = Props<T, ButtonOptions<T>>;
32
32
  //#endregion
33
33
  export { useButton as i, ButtonOptions as n, ButtonProps as r, Button as t };
34
- //# sourceMappingURL=button-Cp853csH.d.ts.map
34
+ //# sourceMappingURL=button-CVWcOgxs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-Cp853csH.d.ts","names":["Props","ElementType","CommandOptions","TagName","useButton","ButtonOptions","Hook","Button","ButtonProps","props","ReactElement","JSXElementConstructor","T"],"sources":["../src/button/button.d.ts"],"mappings":";;;;;cAGcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAFgC,cAaxCC,SAAAA,iCAA0CE,IAAAA,WAAeD,aAAa;;;;AAAA;AAW3F;;;;;;cAAqBE,MAAAA,GAASE,KAAAA,EAAOD,WAAW,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC/FN,aAAAA,WAAwBJ,WAAAA,GAAcE,OAAAA,UAAiBD,cAAAA,CAAeU,CAAAA;AAAAA,KAE3EJ,WAAAA,WAAsBP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMY,CAAAA,EAAGP,aAAAA,CAAcO,CAAAA"}
1
+ {"version":3,"file":"button-CVWcOgxs.d.ts","names":["Props","ElementType","CommandOptions","TagName","useButton","ButtonOptions","Hook","Button","ButtonProps","props","ReactElement","JSXElementConstructor","T"],"sources":["../src/button/button.d.ts"],"mappings":";;;;;cAGcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAFgC,cAaxCC,SAAAA,iCAA0CE,IAAAA,WAAeD,aAAa;;;;AAAA;AAW3F;;;;;;cAAqBE,MAAAA,GAASE,KAAAA,EAAOD,WAAW,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACnGN,aAAAA,WAAwBJ,WAAAA,GAAcE,OAAAA,UAAiBD,cAAAA,CAAeU,CAAAA;AAAAA,KAE3EJ,WAAAA,WAAsBP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMY,CAAAA,EAAGP,aAAAA,CAAcO,CAAAA"}
@@ -31,7 +31,7 @@ declare const useCheckboxCheck: import("@ariakit/react-utils").Hook<"span", Chec
31
31
  * <CheckboxCheck checked />
32
32
  * ```
33
33
  */
34
- declare const CheckboxCheck: (props: CheckboxCheckProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
34
+ declare const CheckboxCheck: (props: CheckboxCheckProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
35
35
  interface CheckboxCheckOptions<_T extends ElementType = TagName> extends Options {
36
36
  /**
37
37
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-check.d.ts","names":["Options","Props","ElementType","CheckboxStore","TagName","useCheckboxCheck","CheckboxCheckOptions","Hook","CheckboxCheck","CheckboxCheckProps","props","ReactElement","JSXElementConstructor","_T","store","checked","T"],"sources":["../../src/checkbox/checkbox-check.d.ts"],"mappings":";;;;;cAGcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF4B;;;;AACpC;AAAA;;;;AACQ;AAF4B,cAapCC,gBAAAA,iCAAiDE,IAAAA,SAAaD,oBAAoB;;;;AAAA;AAgBvG;;;;;;;;;AAAmJ;AACnJ;cADqBE,aAAAA,GAAgBE,KAAAA,EAAOD,kBAAkB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC7GN,oBAAAA,YAAgCJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAA/BE;;;;;EAM7CY,KAAAA,GAAQX,aAAAA;EAN0BU;;;;;;;;AAgB3B;EAAPE,OAAAA;AAAAA;AAAAA,KAEQN,kBAAAA,WAA6BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMe,CAAAA,EAAGV,oBAAAA,CAAqBU,CAAAA"}
1
+ {"version":3,"file":"checkbox-check.d.ts","names":["Options","Props","ElementType","CheckboxStore","TagName","useCheckboxCheck","CheckboxCheckOptions","Hook","CheckboxCheck","CheckboxCheckProps","props","ReactElement","JSXElementConstructor","_T","store","checked","T"],"sources":["../../src/checkbox/checkbox-check.d.ts"],"mappings":";;;;;cAGcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF4B;;;;AACpC;AAAA;;;;AACQ;AAF4B,cAapCC,gBAAAA,iCAAiDE,IAAAA,SAAaD,oBAAoB;;;;AAAA;AAgBvG;;;;;;;;;AAAuJ;AACvJ;cADqBE,aAAAA,GAAgBE,KAAAA,EAAOD,kBAAkB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACjHN,oBAAAA,YAAgCJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAA/BE;;;;;EAM7CY,KAAAA,GAAQX,aAAAA;EAN0BU;;;;;;;;AAgB3B;EAAPE,OAAAA;AAAAA;AAAAA,KAEQN,kBAAAA,WAA6BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMe,CAAAA,EAAGV,oBAAAA,CAAqBU,CAAAA"}
@@ -1,4 +1,4 @@
1
- import { n as CommandOptions } from "../command-DckndCUK.js";
1
+ import { n as CommandOptions } from "../command-B9C8p3_S.js";
2
2
  import { t as CheckboxStore } from "../checkbox-store-CYZPR4N4.js";
3
3
  import { Props } from "@ariakit/react-utils";
4
4
  import { ComponentPropsWithoutRef, ElementType } from "react";
@@ -28,7 +28,7 @@ declare const useCheckbox: import("@ariakit/react-utils").Hook<"input", Checkbox
28
28
  * <Checkbox render={<div />}>Accessible checkbox</Checkbox>
29
29
  * ```
30
30
  */
31
- declare const Checkbox: (props: CheckboxProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
31
+ declare const Checkbox: (props: CheckboxProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
32
32
  interface CheckboxOptions<T extends ElementType = TagName> extends CommandOptions<T> {
33
33
  /**
34
34
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.d.ts","names":["Props","ComponentPropsWithoutRef","ElementType","CommandOptions","CheckboxStore","TagName","useCheckbox","CheckboxOptions","Hook","Checkbox","CheckboxProps","props","ReactElement","JSXElementConstructor","T","store","name","value","defaultChecked","checked","onChange"],"sources":["../../src/checkbox/checkbox.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF4B;;;;AACpC;AAAA;;;;AACQ;AAY7B;AAdyD,cAcpCC,WAAAA,iCAA4CE,IAAAA,UAAcD,eAAe;;;AAAA;AAW9F;;;;;;;cAAqBE,QAAAA,GAAWE,KAAAA,EAAOD,aAAa,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACnGN,eAAAA,WAA0BL,WAAAA,GAAcG,OAAAA,UAAiBF,cAAAA,CAAeW,CAAAA;EADgD;AACzI;;;;;;;;;;EAYIC,KAAAA,GAAQX,aAAAA;EAZ8DD;;;;;;EAmBtEa,IAAAA;EAnBqFF;;;;;;;;;;;;;AAsD1C;AAE/C;;;EAnBIG,KAAAA,GAAQhB,wBAAAA,CAAyBI,OAAAA;EAmBaA;;;;;EAb9Ca,cAAAA;EAa8D;;;;;;EAN9DC,OAAAA;EAMkFL;;AAAC;EAFnFM,QAAAA,GAAWnB,wBAAAA,CAAyBI,OAAAA;AAAAA;AAAAA,KAE5BK,aAAAA,WAAwBR,WAAAA,GAAcG,OAAAA,IAAWL,KAAAA,CAAMc,CAAAA,EAAGP,eAAAA,CAAgBO,CAAAA"}
1
+ {"version":3,"file":"checkbox.d.ts","names":["Props","ComponentPropsWithoutRef","ElementType","CommandOptions","CheckboxStore","TagName","useCheckbox","CheckboxOptions","Hook","Checkbox","CheckboxProps","props","ReactElement","JSXElementConstructor","T","store","name","value","defaultChecked","checked","onChange"],"sources":["../../src/checkbox/checkbox.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF4B;;;;AACpC;AAAA;;;;AACQ;AAY7B;AAdyD,cAcpCC,WAAAA,iCAA4CE,IAAAA,UAAcD,eAAe;;;AAAA;AAW9F;;;;;;;cAAqBE,QAAAA,GAAWE,KAAAA,EAAOD,aAAa,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACvGN,eAAAA,WAA0BL,WAAAA,GAAcG,OAAAA,UAAiBF,cAAAA,CAAeW,CAAAA;EADoD;AAC7I;;;;;;;;;;EAYIC,KAAAA,GAAQX,aAAAA;EAZ8DD;;;;;;EAmBtEa,IAAAA;EAnBqFF;;;;;;;;;;;;;AAsD1C;AAE/C;;;EAnBIG,KAAAA,GAAQhB,wBAAAA,CAAyBI,OAAAA;EAmBaA;;;;;EAb9Ca,cAAAA;EAa8D;;;;;;EAN9DC,OAAAA;EAMkFL;;AAAC;EAFnFM,QAAAA,GAAWnB,wBAAAA,CAAyBI,OAAAA;AAAAA;AAAAA,KAE5BK,aAAAA,WAAwBR,WAAAA,GAAcG,OAAAA,IAAWL,KAAAA,CAAMc,CAAAA,EAAGP,eAAAA,CAAgBO,CAAAA"}
@@ -1,2 +1,2 @@
1
- import { i as useCollectionItemOffscreen, n as CollectionItemOptions, r as CollectionItemProps, t as CollectionItem } from "../collection-item-offscreen-DyXa-sqj.js";
1
+ import { i as useCollectionItemOffscreen, n as CollectionItemOptions, r as CollectionItemProps, t as CollectionItem } from "../collection-item-offscreen-B5E5vNFi.js";
2
2
  export { CollectionItem, CollectionItemOptions, CollectionItemProps, useCollectionItemOffscreen };
@@ -32,7 +32,7 @@ function useCollectionItemOffscreen({ offscreenMode = "active", offscreenRoot, .
32
32
  observerRef.current?.disconnect();
33
33
  return;
34
34
  }
35
- invariant(offscreenRoot !== void 0, "The offscreenRoot prop must provided.");
35
+ invariant(offscreenRoot !== void 0, process.env.NODE_ENV !== "production" && "The offscreenRoot prop must be provided.");
36
36
  const getOffscreenRoot = () => {
37
37
  if (!offscreenRoot) return null;
38
38
  if (typeof offscreenRoot === "function") return offscreenRoot(element);
@@ -1 +1 @@
1
- {"version":3,"file":"collection-item-offscreen.js","names":["Base.CollectionItem"],"sources":["../../src/collection/collection-item-offscreen.tsx"],"sourcesContent":["import {\n useForceUpdate,\n useId,\n useMergeRefs,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType, RefCallback, RefObject } from \"react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Role } from \"../role/role.tsx\";\nimport * as Base from \"./collection-item.tsx\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nfunction requestIdleCallback(callback: () => void) {\n if (typeof window.requestIdleCallback === \"function\") {\n return window.requestIdleCallback(callback);\n }\n callback();\n return 0;\n}\n\nfunction cancelIdleCallback(id: number) {\n if (typeof window.cancelIdleCallback === \"function\") {\n window.cancelIdleCallback(id);\n }\n}\n\nexport function useCollectionItemOffscreen<\n T extends ElementType,\n // oxlint-disable-next-line no-unnecessary-type-parameters\n P extends CollectionItemProps<T>,\n>({ offscreenMode = \"active\", offscreenRoot, ...props }: P) {\n const id = useId(props.id);\n const [updated, forceUpdate] = useForceUpdate();\n const forcedUpdatesCountRef = useRef(0);\n\n const [_active, setActive] = useState(offscreenMode === \"active\");\n const active = _active || offscreenMode === \"active\";\n\n const observerRef = useRef<IntersectionObserver | null>(null);\n const idleCallbackIdRef = useRef(0);\n\n const ref = useCallback<RefCallback<HTMLType>>(\n (element) => {\n if (!element || offscreenMode === \"active\") {\n cancelIdleCallback(idleCallbackIdRef.current);\n observerRef.current?.disconnect();\n return;\n }\n\n invariant(\n offscreenRoot !== undefined,\n process.env.NODE_ENV !== \"production\" &&\n \"The offscreenRoot prop must provided.\",\n );\n\n const getOffscreenRoot = () => {\n if (!offscreenRoot) return null;\n if (typeof offscreenRoot === \"function\") {\n return offscreenRoot(element);\n }\n if (\"current\" in offscreenRoot) {\n return offscreenRoot.current;\n }\n return offscreenRoot;\n };\n\n const root = getOffscreenRoot();\n\n if (!root) {\n forcedUpdatesCountRef.current++;\n if (forcedUpdatesCountRef.current > 3) {\n throw new Error(\n \"The offscreenRoot is not available. Please make sure the root element is mounted.\",\n );\n }\n forceUpdate();\n return;\n }\n\n if (!observerRef.current || observerRef.current.root !== root) {\n observerRef.current = new IntersectionObserver(\n ([entry]) => {\n cancelIdleCallback(idleCallbackIdRef.current);\n const isIntersecting = !!entry?.isIntersecting;\n idleCallbackIdRef.current = requestIdleCallback(() => {\n if (!isIntersecting && offscreenMode === \"lazy\") return;\n setActive(isIntersecting);\n });\n },\n { root, rootMargin: \"40%\" },\n );\n }\n\n observerRef.current.observe(element);\n },\n // This callback intentionally depends on `updated` so `forceUpdate()`\n // causes React to re-run the ref callback when the offscreen root becomes\n // available.\n // oxlint-disable-next-line exhaustive-deps\n [updated, offscreenMode, offscreenRoot],\n );\n\n return {\n id,\n active,\n ref,\n \"data-offscreen\": !active || undefined,\n };\n}\n\nexport const CollectionItem = forwardRef(function CollectionItem({\n offscreenMode,\n offscreenRoot,\n ...props\n}: CollectionItemProps) {\n const { active, ref, ...rest } = useCollectionItemOffscreen({\n offscreenMode,\n offscreenRoot,\n ...props,\n });\n const allProps = { ...rest, ...props, ref: useMergeRefs(ref, props.ref) };\n if (active) {\n return <Base.CollectionItem {...allProps} />;\n }\n // Remove CompositeItem props\n const {\n store,\n shouldRegisterItem,\n getItem,\n // @ts-expect-error This prop may come from a collection renderer.\n element,\n ...htmlProps\n } = allProps;\n const Component = Role[TagName];\n return <Component {...htmlProps} />;\n});\n\nexport interface CollectionItemOptions<\n T extends ElementType = TagName,\n> extends Base.CollectionItemOptions<T> {\n offscreenMode?: \"active\" | \"passive\" | \"lazy\";\n offscreenRoot?:\n | HTMLElement\n | RefObject<HTMLElement | null>\n | ((element: HTMLElement) => HTMLElement | null)\n | null;\n}\n\nexport type CollectionItemProps<T extends ElementType = TagName> = Props<\n T,\n CollectionItemOptions<T>\n>;\n"],"mappings":";;;;;;;;AAiBA,MAAA,UAAS;SACH,oBAAc,UAAA;CAGlB,IAAA,OAAS,OAAA,wBAAA,YAAA,OAAA,OAAA,oBAAA,QAAA;CACT,SAAO;CACT,OAAA;AAEA;SACM,mBAAc,IAAA;CAGpB,IAAA,OAAA,OAAA,uBAAA,YAAA,OAAA,mBAAA,EAAA;AAEA;SAKQ,2BAAmB,EAAA,gBAAA,UAAA,eAAA,GAAA,SAAA;CACzB,MAAM,KAAC,MAAS,MAAA,EAAA;CAChB,MAAM,CAAA,SAAA,eAAwB,eAAQ;CAEtC,MAAM,wBAAuB,OAAA,CAAS;CACtC,MAAM,CAAA,SAAS,aAAW,SAAA,kBAAkB,QAAA;CAE5C,MAAM,SAAA,WAAc,kBAAwC;CAC5D,MAAM,cAAA,OAAoB,IAAA;CA+D1B,MAAA,oBAAO,OAAA,CAAA;QACL;EACA;EACA;OA9DM,aAAY,YAAA;OACd,CAAA,WAAA,kBAAmB,UAAkB;IACrC,mBAAY,kBAAoB,OAAA;IAChC,YAAA,SAAA,WAAA;IACF;GAEA;GAMA,UAAM,kBAAA,KAAyB,GAAA,uCAAA;SACxB,yBAAsB;IAC3B,IAAI,CAAA,eAAO,OAAA;IAGX,IAAI,OAAA,kBAAa,YACR,OAAA,cAAc,OAAA;IAEvB,IAAA,aAAO,eAAA,OAAA,cAAA;IACT,OAAA;GAEA;GAEA,MAAK,OAAM,iBAAA;OACT,CAAA,MAAA;IACA,sBAAI;IAKJ,IAAA,sBAAY,UAAA,GAAA,MAAA,IAAA,MAAA,mFAAA;IACZ,YAAA;IACF;GAEA;OAGM,CAAA,YAAA,WAAmB,YAAkB,QAAO,SAAA,MAAA,YAAA,UAAA,IAAA,sBAAA,CAAA,WAAA;IAC5C,mBAAM,kBAA0B,OAAA;IAChC,MAAA,iBAAkB,CAAA,CAAA,OAAU;sBACrB,UAAkB,0BAA0B;KACjD,IAAA,CAAA,kBAAU,kBAAc,QAAA;KACzB,UAAA,cAAA;IACH,CAAA;MACE;IAAM;IACV,YAAA;GAGF,CAAA;GACF,YAKA,QAAA,QAAA,OAAA;KAAC;GAAS;GAAe;GAMvB;EACF,CAAA;EACF,kBAAA,CAAA,UAAA,KAAA;CACF;AAEA;MAKE,iBAAqB,WAAY,SAAA,eAAA,EAAA,eAA2B,eAAA,GAAA,SAAA;OAC1D,EAAA,QAAA,KAAA,GAAA,SAAA,2BAAA;EACA;EACA;EACD,GAAA;CACD,CAAA;OAAsB,WAAA;EAAM,GAAG;EAAO,GAAA;EAAkC,KAAA,aAAA,KAAA,MAAA,GAAA;CACxE;CAIA,IAAA,QACE,OAEA,oBAAA,kBAGG,EAAA,GAAA,SACD,CAAA;CACJ,MAAM,EAAA,OAAA,oBAAiB,SAAA,SAAA,GAAA,cAAA;CACvB,MAAA,YAAO,KAAA;CACR,OAAA,oBAAA,WAAA,EAAA,GAAA,UAAA,CAAA"}
1
+ {"version":3,"file":"collection-item-offscreen.js","names":["Base.CollectionItem"],"sources":["../../src/collection/collection-item-offscreen.tsx"],"sourcesContent":["import {\n useForceUpdate,\n useId,\n useMergeRefs,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType, RefCallback, RefObject } from \"react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Role } from \"../role/role.tsx\";\nimport * as Base from \"./collection-item.tsx\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nfunction requestIdleCallback(callback: () => void) {\n if (typeof window.requestIdleCallback === \"function\") {\n return window.requestIdleCallback(callback);\n }\n callback();\n return 0;\n}\n\nfunction cancelIdleCallback(id: number) {\n if (typeof window.cancelIdleCallback === \"function\") {\n window.cancelIdleCallback(id);\n }\n}\n\nexport function useCollectionItemOffscreen<\n T extends ElementType,\n // oxlint-disable-next-line no-unnecessary-type-parameters\n P extends CollectionItemProps<T>,\n>({ offscreenMode = \"active\", offscreenRoot, ...props }: P) {\n const id = useId(props.id);\n const [updated, forceUpdate] = useForceUpdate();\n const forcedUpdatesCountRef = useRef(0);\n\n const [_active, setActive] = useState(offscreenMode === \"active\");\n const active = _active || offscreenMode === \"active\";\n\n const observerRef = useRef<IntersectionObserver | null>(null);\n const idleCallbackIdRef = useRef(0);\n\n const ref = useCallback<RefCallback<HTMLType>>(\n (element) => {\n if (!element || offscreenMode === \"active\") {\n cancelIdleCallback(idleCallbackIdRef.current);\n observerRef.current?.disconnect();\n return;\n }\n\n invariant(\n offscreenRoot !== undefined,\n process.env.NODE_ENV !== \"production\" &&\n \"The offscreenRoot prop must be provided.\",\n );\n\n const getOffscreenRoot = () => {\n if (!offscreenRoot) return null;\n if (typeof offscreenRoot === \"function\") {\n return offscreenRoot(element);\n }\n if (\"current\" in offscreenRoot) {\n return offscreenRoot.current;\n }\n return offscreenRoot;\n };\n\n const root = getOffscreenRoot();\n\n if (!root) {\n forcedUpdatesCountRef.current++;\n if (forcedUpdatesCountRef.current > 3) {\n throw new Error(\n \"The offscreenRoot is not available. Please make sure the root element is mounted.\",\n );\n }\n forceUpdate();\n return;\n }\n\n if (!observerRef.current || observerRef.current.root !== root) {\n observerRef.current = new IntersectionObserver(\n ([entry]) => {\n cancelIdleCallback(idleCallbackIdRef.current);\n const isIntersecting = !!entry?.isIntersecting;\n idleCallbackIdRef.current = requestIdleCallback(() => {\n if (!isIntersecting && offscreenMode === \"lazy\") return;\n setActive(isIntersecting);\n });\n },\n { root, rootMargin: \"40%\" },\n );\n }\n\n observerRef.current.observe(element);\n },\n // This callback intentionally depends on `updated` so `forceUpdate()`\n // causes React to re-run the ref callback when the offscreen root becomes\n // available.\n // oxlint-disable-next-line exhaustive-deps\n [updated, offscreenMode, offscreenRoot],\n );\n\n return {\n id,\n active,\n ref,\n \"data-offscreen\": !active || undefined,\n };\n}\n\nexport const CollectionItem = forwardRef(function CollectionItem({\n offscreenMode,\n offscreenRoot,\n ...props\n}: CollectionItemProps) {\n const { active, ref, ...rest } = useCollectionItemOffscreen({\n offscreenMode,\n offscreenRoot,\n ...props,\n });\n const allProps = { ...rest, ...props, ref: useMergeRefs(ref, props.ref) };\n if (active) {\n return <Base.CollectionItem {...allProps} />;\n }\n // Remove CompositeItem props\n const {\n store,\n shouldRegisterItem,\n getItem,\n // @ts-expect-error This prop may come from a collection renderer.\n element,\n ...htmlProps\n } = allProps;\n const Component = Role[TagName];\n return <Component {...htmlProps} />;\n});\n\nexport interface CollectionItemOptions<\n T extends ElementType = TagName,\n> extends Base.CollectionItemOptions<T> {\n offscreenMode?: \"active\" | \"passive\" | \"lazy\";\n offscreenRoot?:\n | HTMLElement\n | RefObject<HTMLElement | null>\n | ((element: HTMLElement) => HTMLElement | null)\n | null;\n}\n\nexport type CollectionItemProps<T extends ElementType = TagName> = Props<\n T,\n CollectionItemOptions<T>\n>;\n"],"mappings":";;;;;;;;AAiBA,MAAA,UAAS;SACH,oBAAc,UAAA;CAGlB,IAAA,OAAS,OAAA,wBAAA,YAAA,OAAA,OAAA,oBAAA,QAAA;CACT,SAAO;CACT,OAAA;AAEA;SACM,mBAAc,IAAA;CAGpB,IAAA,OAAA,OAAA,uBAAA,YAAA,OAAA,mBAAA,EAAA;AAEA;SAKQ,2BAAmB,EAAA,gBAAA,UAAA,eAAA,GAAA,SAAA;CACzB,MAAM,KAAC,MAAS,MAAA,EAAA;CAChB,MAAM,CAAA,SAAA,eAAwB,eAAQ;CAEtC,MAAM,wBAAuB,OAAA,CAAS;CACtC,MAAM,CAAA,SAAS,aAAW,SAAA,kBAAkB,QAAA;CAE5C,MAAM,SAAA,WAAc,kBAAwC;CAC5D,MAAM,cAAA,OAAoB,IAAA;CA+D1B,MAAA,oBAAO,OAAA,CAAA;QACL;EACA;EACA;OA9DM,aAAY,YAAA;OACd,CAAA,WAAA,kBAAmB,UAAkB;IACrC,mBAAY,kBAAoB,OAAA;IAChC,YAAA,SAAA,WAAA;IACF;GAEA;GAMA,UAAM,kBAAA,KAAyB,GAAA,QAAA,IAAA,aAAA,gBAAA,0CAAA;SACxB,yBAAsB;IAC3B,IAAI,CAAA,eAAO,OAAA;IAGX,IAAI,OAAA,kBAAa,YACR,OAAA,cAAc,OAAA;IAEvB,IAAA,aAAO,eAAA,OAAA,cAAA;IACT,OAAA;GAEA;GAEA,MAAK,OAAM,iBAAA;OACT,CAAA,MAAA;IACA,sBAAI;IAKJ,IAAA,sBAAY,UAAA,GAAA,MAAA,IAAA,MAAA,mFAAA;IACZ,YAAA;IACF;GAEA;OAGM,CAAA,YAAA,WAAmB,YAAkB,QAAO,SAAA,MAAA,YAAA,UAAA,IAAA,sBAAA,CAAA,WAAA;IAC5C,mBAAM,kBAA0B,OAAA;IAChC,MAAA,iBAAkB,CAAA,CAAA,OAAU;sBACrB,UAAkB,0BAA0B;KACjD,IAAA,CAAA,kBAAU,kBAAc,QAAA;KACzB,UAAA,cAAA;IACH,CAAA;MACE;IAAM;IACV,YAAA;GAGF,CAAA;GACF,YAKA,QAAA,QAAA,OAAA;KAAC;GAAS;GAAe;GAMvB;EACF,CAAA;EACF,kBAAA,CAAA,UAAA,KAAA;CACF;AAEA;MAKE,iBAAqB,WAAY,SAAA,eAAA,EAAA,eAA2B,eAAA,GAAA,SAAA;OAC1D,EAAA,QAAA,KAAA,GAAA,SAAA,2BAAA;EACA;EACA;EACD,GAAA;CACD,CAAA;OAAsB,WAAA;EAAM,GAAG;EAAO,GAAA;EAAkC,KAAA,aAAA,KAAA,MAAA,GAAA;CACxE;CAIA,IAAA,QACE,OAEA,oBAAA,kBAGG,EAAA,GAAA,SACD,CAAA;CACJ,MAAM,EAAA,OAAA,oBAAiB,SAAA,SAAA,GAAA,cAAA;CACvB,MAAA,YAAO,KAAA;CACR,OAAA,oBAAA,WAAA,EAAA,GAAA,UAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import { i as useCollectionItem, n as CollectionItemOptions, r as CollectionItemProps, t as CollectionItem } from "../collection-item-C-g2BwVF.js";
1
+ import { i as useCollectionItem, n as CollectionItemOptions, r as CollectionItemProps, t as CollectionItem } from "../collection-item-pvEWNoNs.js";
2
2
  export { CollectionItem, CollectionItemOptions, CollectionItemProps, useCollectionItem };
@@ -1,2 +1,2 @@
1
- import { a as CollectionRendererItemProps, c as getCollectionRendererItem, i as CollectionRendererItemObject, l as getCollectionRendererItemId, n as CollectionRendererBaseItemProps, o as CollectionRendererOptions, r as CollectionRendererItem, s as CollectionRendererProps, t as CollectionRenderer, u as useCollectionRenderer } from "../collection-renderer-DsPD9ksD.js";
1
+ import { a as CollectionRendererItemProps, c as getCollectionRendererItem, i as CollectionRendererItemObject, l as getCollectionRendererItemId, n as CollectionRendererBaseItemProps, o as CollectionRendererOptions, r as CollectionRendererItem, s as CollectionRendererProps, t as CollectionRenderer, u as useCollectionRenderer } from "../collection-renderer-BhzF21Du.js";
2
2
  export { CollectionRenderer, CollectionRendererBaseItemProps, CollectionRendererItem, CollectionRendererItemObject, CollectionRendererItemProps, CollectionRendererOptions, CollectionRendererProps, getCollectionRendererItem, getCollectionRendererItemId, useCollectionRenderer };
@@ -204,7 +204,7 @@ function useCollectionRenderer({ store, items: itemsProp, initialItems = 0, gap
204
204
  const context = useCollectionContext();
205
205
  store = store || context;
206
206
  const items = useStoreState(store, (state) => itemsProp ?? state?.items);
207
- invariant(items != null, "CollectionRenderer must be either wrapped in a Collection component or be given an `items` prop.");
207
+ invariant(items != null, process.env.NODE_ENV !== "production" && "CollectionRenderer must be either wrapped in a Collection component or be given an `items` prop.");
208
208
  let parent = useContext(CollectionRendererContext);
209
209
  if (store && parent?.store !== store) parent = null;
210
210
  const parentData = parent?.childrenData;
@@ -1 +1 @@
1
- {"version":3,"file":"collection-renderer.js","names":[],"sources":["../../src/collection/collection-renderer.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useForceUpdate,\n useId,\n useMergeRefs,\n useWrapElement,\n createElement,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Options, Props } from \"@ariakit/react-utils\";\nimport {\n getScrollingElement,\n getWindow,\n invariant,\n shallowEqual,\n} from \"@ariakit/utils\";\nimport type { AnyObject, BooleanOrCallback, EmptyObject } from \"@ariakit/utils\";\nimport type {\n CSSProperties,\n ElementType,\n ReactNode,\n RefCallback,\n RefObject,\n} from \"react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useCollectionContext } from \"./collection-context.tsx\";\nimport type {\n CollectionStore,\n CollectionStoreItem,\n} from \"./collection-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\ntype NestedRendererItemProps = Pick<\n CollectionRendererOptions,\n | \"gap\"\n | \"orientation\"\n | \"itemSize\"\n | \"estimatedItemSize\"\n | \"padding\"\n | \"paddingStart\"\n | \"paddingEnd\"\n>;\n\ninterface ItemObject extends AnyObject, NestedRendererItemProps {\n /**\n * The item unique identifier. If not specified, an ID will be assigned based\n * on the item's index. If it's a nested item and the item is not included in\n * the `items` property of its parent, it must be composed by all the\n * ancestors' IDs and the item's ID, separated by slashes (e.g.,\n * `grand/parent/item`).\n */\n id?: string;\n /**\n * The item style object. If the `width` or `height` properties are\n * specificed, they will be used to calculate the item size.\n */\n style?: CSSProperties;\n /**\n * A list of nested items. Passing this property will help measure the item\n * size.\n */\n items?: Item[];\n /**\n * The rendered item element. This property is assigned to the `items` state\n * on the collection store and can be used to calculate the item size.\n */\n element?: HTMLElement | null;\n}\n\ntype Item =\n | ItemObject\n | Omit<string, string>\n | Omit<number, string>\n | Omit<boolean, string>\n | null\n | undefined;\n\ntype Items<T extends Item> = number | readonly T[];\n\ninterface BaseItemProps {\n id: string;\n ref: RefCallback<HTMLElement>;\n style: CSSProperties;\n index: number;\n}\n\ntype ItemProps<\n T extends Item,\n P extends BaseItemProps = BaseItemProps,\n> = unknown extends T ? P : P & (T extends AnyObject ? T : { value: T });\n\ntype RawItemProps<T extends Item> = unknown extends T\n ? EmptyObject\n : T extends AnyObject\n ? T\n : { value: T };\n\ntype Data = Map<\n string,\n { index: number; rendered: boolean; start: number; end: number }\n>;\n\ninterface CollectionRendererContextValue {\n store: CollectionRendererOptions[\"store\"];\n orientation: CollectionRendererOptions[\"orientation\"];\n overscan: CollectionRendererOptions[\"overscan\"];\n childrenData: Map<string, Data>;\n}\n\nconst CollectionRendererContext =\n createContext<CollectionRendererContextValue | null>(null);\n\nfunction createTask() {\n let raf = 0;\n const run = (cb: () => void) => {\n if (raf) return;\n raf = requestAnimationFrame(() => {\n raf = 0;\n cb();\n });\n };\n const cancel = () => {\n cancelAnimationFrame(raf);\n raf = 0;\n };\n return { run, cancel };\n}\n\nfunction findNearestIndex<T extends Item = any>(\n items: Items<T>,\n target: number,\n getValue: (index: number) => number,\n) {\n let left = 0;\n let right = getItemsLength(items) - 1;\n while (left <= right) {\n const index = ((left + right) / 2) | 0;\n const value = getValue(index);\n if (value === target) return index;\n else if (value < target) left = index + 1;\n else right = index - 1;\n }\n if (left > 0) return left - 1;\n return 0;\n}\n\nfunction getItemsLength<T extends Item>(items: Items<T>) {\n return typeof items === \"number\" ? items : items.length;\n}\n\nfunction getItemObject(item: Item): ItemObject {\n if (!item || typeof item !== \"object\") {\n return { value: item };\n }\n return item;\n}\n\nfunction getItemId(item: Item, index: number, baseId?: string) {\n invariant(baseId, \"CollectionRenderer must be given an `id` prop.\");\n const defaultId = `${baseId}/${index}`;\n return getItemObject(item).id ?? defaultId;\n}\n\nfunction getItem<T extends Item = any>(\n items: Items<T>,\n index: number,\n): RawItemProps<T> | null {\n if (typeof items === \"number\") {\n if (index >= items) return null;\n return {} as RawItemProps<T>;\n }\n const item = items[index];\n if (!item) return null;\n if (typeof item === \"object\") return item as RawItemProps<T>;\n return { value: item } as unknown as RawItemProps<T>;\n}\n\nfunction getItemSize(\n item: Item,\n horizontal: boolean,\n fallbackElement?: HTMLElement | null | false,\n): number {\n const itemObject = getItemObject(item);\n horizontal = itemObject.orientation === \"horizontal\" || horizontal;\n const prop = horizontal ? \"width\" : \"height\";\n const style = itemObject.style;\n if (style) {\n const size = style[prop];\n if (typeof size === \"number\") return size;\n }\n const items = itemObject.items;\n if (items?.length) {\n const hasSameOrientation =\n !itemObject.orientation ||\n (horizontal && itemObject.orientation === \"horizontal\") ||\n (!horizontal && itemObject.orientation === \"vertical\");\n const paddingStart = itemObject.paddingStart ?? itemObject.padding ?? 0;\n const paddingEnd = itemObject.paddingEnd ?? itemObject.padding ?? 0;\n const padding = hasSameOrientation ? paddingStart + paddingEnd : 0;\n const initialSize = (itemObject.gap ?? 0) * (items.length - 1) + padding;\n if (hasSameOrientation && itemObject.itemSize) {\n return initialSize + itemObject.itemSize * items.length;\n }\n // oxlint-disable-next-line no-unnecessary-type-arguments\n const totalSize = items.reduce<number>(\n (sum, item) => sum + getItemSize(item, horizontal),\n initialSize,\n );\n if (totalSize !== initialSize) return totalSize;\n }\n const element =\n fallbackElement !== false ? itemObject.element || fallbackElement : null;\n if (element?.isConnected) {\n return element.getBoundingClientRect()[prop];\n }\n return 0;\n}\n\nfunction getAverageSize<T extends Item>(props: {\n baseId: string;\n data: Data;\n items: Items<T>;\n elements: Map<string, HTMLElement>;\n estimatedItemSize: number;\n horizontal: boolean;\n}) {\n const length = getItemsLength(props.items);\n let currentIndex = 0;\n let averageSize = props.estimatedItemSize;\n\n const setAverageSize = (size: number) => {\n const prevIndex = currentIndex;\n currentIndex = currentIndex + 1;\n averageSize = (averageSize * prevIndex + size) / currentIndex;\n };\n\n for (let index = 0; index < length; index += 1) {\n const item = getItem(props.items, index);\n const itemId = getItemId(item, index, props.baseId);\n const itemData = props.data.get(itemId);\n const fallbackElement = props.elements.get(itemId);\n const size = getItemSize(item, props.horizontal, fallbackElement);\n if (size) {\n setAverageSize(size);\n } else if (itemData?.rendered) {\n setAverageSize(itemData.end - itemData.start);\n }\n }\n\n return averageSize;\n}\n\nfunction getScrollOffset(scroller: Element | Window, horizontal: boolean) {\n if (\"scrollX\" in scroller) {\n return horizontal ? scroller.scrollX : scroller.scrollY;\n }\n return horizontal ? scroller.scrollLeft : scroller.scrollTop;\n}\n\nfunction getViewport(scroller: Element) {\n const { defaultView, documentElement } = scroller.ownerDocument;\n if (scroller === documentElement) return defaultView;\n return scroller;\n}\n\nfunction useScroller(rendererRef: RefObject<HTMLElement | null> | null) {\n const [scroller, setScroller] = useState<Element | null>(null);\n useEffect(() => {\n const renderer = rendererRef?.current;\n if (!renderer) return;\n const scroller = getScrollingElement(renderer);\n if (!scroller) return;\n setScroller(scroller);\n }, [rendererRef]);\n return scroller;\n}\n\nfunction getRendererOffset(\n renderer: HTMLElement,\n scroller: Element,\n horizontal: boolean,\n): number {\n const win = getWindow(renderer);\n const htmlElement = win?.document.documentElement;\n const rendererRect = renderer.getBoundingClientRect();\n const rendererOffset = horizontal ? rendererRect.left : rendererRect.top;\n if (scroller === htmlElement) {\n const scrollOffset = getScrollOffset(win, horizontal);\n return scrollOffset + rendererOffset;\n }\n const scrollerRect = scroller.getBoundingClientRect();\n const scrollerOffset = horizontal ? scrollerRect.left : scrollerRect.top;\n const scrollOffset = getScrollOffset(scroller, horizontal);\n return rendererOffset - scrollerOffset + scrollOffset;\n}\n\nfunction getOffsets(\n renderer: HTMLElement,\n scroller: Element,\n horizontal: boolean,\n) {\n const scrollOffset = getScrollOffset(scroller, horizontal);\n const rendererOffset = getRendererOffset(renderer, scroller, horizontal);\n const scrollSize = horizontal ? scroller.clientWidth : scroller.clientHeight;\n const start = scrollOffset - rendererOffset;\n const end = start + scrollSize;\n return { start, end };\n}\n\nfunction getItemsEnd<T extends Item>(props: {\n baseId?: string;\n items: Items<T>;\n data: Data;\n gap: number;\n horizontal: boolean;\n itemSize?: number;\n estimatedItemSize: number;\n paddingStart: number;\n paddingEnd: number;\n}) {\n const length = getItemsLength(props.items);\n const totalPadding = props.paddingStart + props.paddingEnd;\n if (!length) return totalPadding;\n const lastIndex = length - 1;\n const totalGap = lastIndex * props.gap;\n if (props.itemSize != null) {\n return length * props.itemSize + totalGap + totalPadding;\n }\n const defaultEnd = length * props.estimatedItemSize + totalGap + totalPadding;\n if (!props.baseId) return defaultEnd;\n const lastItem = getItem(props.items, lastIndex);\n const lastItemId = getItemId(lastItem, lastIndex, props.baseId);\n const lastItemData = props.data.get(lastItemId);\n if (lastItemData?.end) return lastItemData.end + props.paddingEnd;\n if (!Array.isArray(props.items)) return defaultEnd;\n // oxlint-disable-next-line no-unnecessary-type-arguments\n const end = props.items.reduce<number>(\n (sum, item) => sum + getItemSize(item, props.horizontal, false),\n 0,\n );\n if (!end) return defaultEnd;\n return end + totalGap + totalPadding;\n}\n\nfunction getData<T extends Item>(props: {\n baseId: string;\n items: Items<T>;\n data: Data;\n gap: number;\n horizontal: boolean;\n elements: Map<string, HTMLElement>;\n paddingStart: number;\n itemSize?: number;\n estimatedItemSize: number;\n}) {\n const length = getItemsLength(props.items);\n let nextData: Data | undefined;\n let start = props.paddingStart;\n const avgSize = getAverageSize(props);\n\n for (let index = 0; index < length; index += 1) {\n const item = getItem(props.items, index);\n const itemId = getItemId(item, index, props.baseId);\n const itemData = props.data.get(itemId);\n const prevRendered = itemData?.rendered ?? false;\n\n const setSize = (size: number, rendered = prevRendered) => {\n start = start ? start + props.gap : start;\n const end = start + size;\n const nextItemData = { index, rendered, start, end };\n if (!shallowEqual(itemData, nextItemData)) {\n if (!nextData) {\n nextData = new Map(props.data);\n }\n nextData.set(itemId, { index, rendered, start, end });\n }\n start = end;\n };\n\n const size = getItemSize(\n item,\n props.horizontal,\n props.elements.get(itemId),\n );\n\n if (size) {\n setSize(size, true);\n } else if (itemData?.rendered) {\n setSize(itemData.end - itemData.start, true);\n } else {\n setSize(avgSize);\n }\n }\n\n return nextData;\n}\n\nexport function useCollectionRenderer<T extends Item = any>({\n store,\n items: itemsProp,\n initialItems = 0,\n gap = 0,\n itemSize,\n estimatedItemSize = 40,\n overscan: overscanProp,\n orientation: orientationProp,\n padding = 0,\n paddingStart = padding,\n paddingEnd = padding,\n persistentIndices,\n renderOnScroll = true,\n renderOnResize = !!renderOnScroll,\n children: renderItem,\n ...props\n}: CollectionRendererProps<T>) {\n const context = useCollectionContext();\n store = store || (context as typeof store);\n\n const items = useStoreState(\n store,\n (state) => itemsProp ?? (state?.items as T[]),\n );\n\n invariant(\n items != null,\n process.env.NODE_ENV !== \"production\" &&\n \"CollectionRenderer must be either wrapped in a Collection component or be given an `items` prop.\",\n );\n\n let parent = useContext(CollectionRendererContext);\n\n if (store && parent?.store !== store) {\n parent = null;\n }\n\n const parentData = parent?.childrenData;\n const orientation = orientationProp ?? parent?.orientation ?? \"vertical\";\n const overscan = overscanProp ?? parent?.overscan ?? 1;\n\n const ref = useRef<HTMLType>(null);\n const baseId = useId(props.id);\n const horizontal = orientation === \"horizontal\";\n const elements = useMemo(() => new Map<string, HTMLElement>(), []);\n const [elementsUpdated, updateElements] = useForceUpdate();\n\n const [defaultVisibleIndices, setVisibleIndices] = useState<number[]>(() => {\n if (!initialItems) return [];\n const length = getItemsLength(items);\n const initialLength = Math.min(length, Math.abs(initialItems));\n return Array.from({ length: initialLength }, (_, index) => {\n if (initialItems < 0) return length - index - 1;\n return index;\n });\n });\n\n const visibleIndices = useMemo(() => {\n if (!persistentIndices) return defaultVisibleIndices;\n const nextIndices = defaultVisibleIndices.slice();\n for (const index of persistentIndices) {\n if (index < 0) continue;\n if (nextIndices.includes(index)) continue;\n nextIndices.push(index);\n }\n nextIndices.sort((a, b) => a - b);\n if (shallowEqual(defaultVisibleIndices, nextIndices)) {\n return defaultVisibleIndices;\n }\n return nextIndices;\n }, [defaultVisibleIndices, persistentIndices]);\n\n const [data, setData] = useState<Data>(() => {\n if (!baseId) return new Map();\n const data = parentData?.get(baseId) || new Map();\n if (itemSize != null) return data;\n if (!items) return data;\n const nextData = getData({\n baseId,\n items,\n data,\n gap,\n elements,\n horizontal,\n paddingStart,\n itemSize,\n estimatedItemSize,\n });\n return nextData || data;\n });\n\n const totalSize = useMemo(() => {\n return getItemsEnd({\n baseId,\n items,\n data,\n gap,\n horizontal,\n itemSize,\n estimatedItemSize,\n paddingStart,\n paddingEnd,\n });\n }, [\n baseId,\n items,\n data,\n gap,\n horizontal,\n itemSize,\n estimatedItemSize,\n paddingStart,\n paddingEnd,\n ]);\n\n // Back up the data to the parent so that it can be used later when this\n // renderer is re-mounted.\n useEffect(() => {\n if (!baseId) return;\n parentData?.set(baseId, data);\n }, [baseId, parentData, data]);\n\n useEffect(() => {\n if (itemSize != null) return;\n if (!baseId) return;\n if (!items) return;\n const nextData = getData({\n baseId,\n items,\n data,\n gap,\n elements,\n horizontal,\n paddingStart,\n itemSize,\n estimatedItemSize,\n });\n if (nextData) {\n setData(nextData);\n }\n }, [\n elementsUpdated,\n itemSize,\n baseId,\n items,\n data,\n gap,\n elements,\n horizontal,\n paddingStart,\n estimatedItemSize,\n ]);\n\n const scroller = useScroller(items ? ref : null);\n const offsetsRef = useRef({ start: 0, end: 0 });\n\n const processVisibleIndices = useCallback(() => {\n const offsets = offsetsRef.current;\n\n if (!items) return;\n if (!baseId) return;\n if (!offsets.end) return;\n if (!data.size && !itemSize) return;\n\n const length = getItemsLength(items);\n\n const getItemOffset = (index: number, prop: \"start\" | \"end\" = \"start\") => {\n if (itemSize) {\n const start = itemSize * index + gap * index + paddingStart;\n if (prop === \"start\") return start;\n return start + itemSize;\n }\n const item = getItem(items, index);\n const itemId = getItemId(item, index, baseId);\n const itemData = data.get(itemId);\n return itemData?.[prop] ?? 0;\n };\n\n const initialStart = findNearestIndex(items, offsets.start, getItemOffset);\n\n let initialEnd = initialStart;\n while (initialEnd < length && getItemOffset(initialEnd) < offsets.end) {\n initialEnd += 1;\n }\n\n const finalOverscan = initialEnd - initialStart ? overscan : 0;\n const start = Math.max(initialStart - finalOverscan, 0);\n const end = Math.min(initialEnd + finalOverscan, length);\n\n const indices = Array.from(\n { length: end - start },\n (_, index) => index + start,\n );\n\n setVisibleIndices((prevIndices) => {\n if (shallowEqual(prevIndices, indices)) return prevIndices;\n return indices;\n });\n // oxlint-disable-next-line exhaustive-deps\n }, [\n elementsUpdated,\n items,\n baseId,\n data,\n itemSize,\n gap,\n paddingStart,\n overscan,\n ]);\n\n useEffect(processVisibleIndices, [processVisibleIndices]);\n\n const processVisibleIndicesEvent = useEvent(processVisibleIndices);\n\n // Update the offsets when the items change.\n useEffect(() => {\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n }, [scroller, horizontal, processVisibleIndicesEvent]);\n\n const mayRenderOnScroll = !!renderOnScroll;\n const renderOnScrollProp = useBooleanEvent(renderOnScroll);\n\n // Render on scroll\n useEffect(() => {\n if (!mayRenderOnScroll) return;\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n const viewport = getViewport(scroller);\n if (!viewport) return;\n const task = createTask();\n const onScroll = (event: Event) => {\n task.run(() => {\n if (!renderOnScrollProp(event)) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n });\n };\n viewport.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => {\n task.cancel();\n viewport.removeEventListener(\"scroll\", onScroll);\n };\n }, [\n mayRenderOnScroll,\n scroller,\n renderOnScrollProp,\n horizontal,\n processVisibleIndicesEvent,\n ]);\n\n const mayRenderOnResize = !!renderOnResize;\n const renderOnResizeProp = useBooleanEvent(renderOnResize);\n\n // Render on resize\n useEffect(() => {\n if (!mayRenderOnResize) return;\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n const viewport = getViewport(scroller);\n if (!viewport) return;\n const task = createTask();\n\n if (viewport === scroller) {\n if (typeof ResizeObserver !== \"function\") return;\n let firstRun = true;\n const observer = new ResizeObserver(() => {\n if (firstRun) {\n firstRun = false;\n return;\n }\n task.run(() => {\n if (!renderOnResizeProp(scroller)) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n });\n });\n observer.observe(scroller);\n return () => {\n task.cancel();\n observer.disconnect();\n };\n }\n\n const onResize = () => {\n task.run(() => {\n if (!renderOnResizeProp(scroller)) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n });\n };\n\n viewport.addEventListener(\"resize\", onResize, { passive: true });\n return () => {\n task.cancel();\n viewport.removeEventListener(\"resize\", onResize);\n };\n }, [\n mayRenderOnResize,\n scroller,\n renderOnResizeProp,\n horizontal,\n processVisibleIndicesEvent,\n ]);\n\n // Render on intersection\n useEffect(() => {\n if (typeof IntersectionObserver !== \"function\") return;\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n const viewport = getViewport(scroller);\n if (!viewport) return;\n const observer = new IntersectionObserver(\n () => {\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n },\n { root: scroller === viewport ? scroller : null },\n );\n observer.observe(renderer);\n return () => {\n observer.disconnect();\n };\n }, [scroller, horizontal, processVisibleIndicesEvent]);\n\n const elementObserver = useMemo(() => {\n if (typeof ResizeObserver !== \"function\") return;\n return new ResizeObserver(() => {\n flushSync(updateElements);\n });\n }, [updateElements]);\n\n const itemRef = useCallback<RefCallback<HTMLElement>>(\n (element) => {\n if (!element) return;\n if (itemSize) return;\n updateElements();\n elements.set(element.id, element);\n elementObserver?.observe(element);\n },\n [itemSize, elements, updateElements, elementObserver],\n );\n\n const getItemProps = useCallback(\n <Item extends T = T>(item: RawItemProps<Item>, index: number) => {\n const itemId = getItemId(item, index, baseId);\n const offset = itemSize\n ? paddingStart + itemSize * index + gap * index\n : (data.get(itemId)?.start ?? 0);\n const baseItemProps: BaseItemProps = {\n id: itemId,\n ref: itemRef,\n index,\n style: {\n position: \"absolute\",\n left: horizontal ? offset : 0,\n top: horizontal ? 0 : offset,\n },\n };\n if (itemSize) {\n baseItemProps.style[horizontal ? \"width\" : \"height\"] = itemSize;\n }\n if (item == null) return baseItemProps as ItemProps<T>;\n const itemProps = getItemObject(item);\n return {\n ...itemProps,\n ...baseItemProps,\n style: {\n ...itemProps.style,\n ...baseItemProps.style,\n },\n } as ItemProps<T>;\n },\n [baseId, data, itemSize, paddingStart, gap, horizontal, itemRef],\n );\n\n const itemsProps = useMemo(() => {\n return visibleIndices\n .map((index) => {\n if (index < 0) return;\n const item = getItem(items, index);\n if (!item) return;\n return getItemProps(item, index);\n })\n .filter((value): value is NonNullable<typeof value> => value != null);\n }, [items, visibleIndices, getItemProps]);\n\n const children = itemsProps?.map((itemProps) => {\n return renderItem?.(itemProps);\n });\n\n const styleProp = props.style;\n const sizeProperty = horizontal ? \"width\" : \"height\";\n\n const style = useMemo(\n () => ({\n flex: \"none\",\n position: \"relative\" as const,\n [sizeProperty]: totalSize,\n ...styleProp,\n }),\n [styleProp, sizeProperty, totalSize],\n );\n\n const childrenData = useMemo(() => new Map<string, Data>(), []);\n const providerValue: CollectionRendererContextValue = useMemo(\n () => ({ store, orientation, overscan, childrenData }),\n [store, orientation, overscan, childrenData],\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <CollectionRendererContext.Provider value={providerValue}>\n {element}\n </CollectionRendererContext.Provider>\n ),\n [providerValue],\n );\n\n props = {\n id: baseId,\n ...props,\n style,\n ref: useMergeRefs(ref, props.ref),\n };\n\n return { ...props, children };\n}\n\nexport const CollectionRenderer = forwardRef(function CollectionRenderer<\n T extends Item = any,\n>(props: CollectionRendererProps<T>) {\n const htmlProps = useCollectionRenderer(props);\n return createElement(TagName, htmlProps);\n});\n\nexport const getCollectionRendererItem = getItem;\nexport const getCollectionRendererItemId = getItemId;\n\nexport type CollectionRendererItemObject = ItemObject;\nexport type CollectionRendererItem = Item;\nexport type CollectionRendererBaseItemProps = BaseItemProps;\nexport type CollectionRendererItemProps<\n T extends Item,\n P extends BaseItemProps = BaseItemProps,\n> = ItemProps<T, P>;\n\nexport interface CollectionRendererOptions<\n T extends Item = any,\n> extends Options {\n /**\n * Object returned by the\n * [`useCollectionStore`](https://ariakit.com/reference/use-collection-store)\n * hook. If not provided, the closest\n * [Collection](https://ariakit.com/components/collection) component's\n * context will be used.\n *\n * The store\n * [`items`](https://ariakit.com/reference/use-collection-store#items) state\n * will be used to render the items if the\n * [`items`](https://ariakit.com/reference/collection-items#items) prop is not\n * provided.\n */\n store?: CollectionStore<\n T extends CollectionStoreItem ? T : CollectionStoreItem\n >;\n /**\n * All items to be rendered. This prop can be either a memoized array of items\n * or a number representing the total number of items to be rendered.\n *\n * When passing an array, each item can be either a primitive value or an\n * object. If it's a primitive value, an object with the `value` property will\n * be automatically created for each item and passed as an argument to the\n * function that renders the item. If it's an object, the entire object will\n * be passed.\n *\n * The item object can have any shape, but some **optional** properties have\n * particular functions:\n * - `id`: The same as the HTML attribute. If not provided, one will be\n * generated automatically.\n * - `style`: The same as the HTML attribute. This will be merged with the\n * styles generated by the component for each item. If the `width` or\n * `height` properties are explicitly provided here, they will be used to\n * calculate the item's size. This is useful when rendering items with known\n * variable sizes.\n * - `items`: An array of items to be rendered as children of this item. This\n * is useful when rendering nested items. This property is recommended when\n * rendering nested items because it will help the parent renderer calculate\n * the size and position of the nested items.\n *\n * Also, When rendering nested renderers, you can optionally include props\n * like `gap`, `orientation`, `itemSize`, `estimatedItemSize`, `padding`,\n * `paddingStart`, and `paddingEnd`. These props will help the parent renderer\n * calculate the size and position of the nested renderers.\n */\n items?: Items<T>;\n /**\n * Whether the items should be rendered when the closest scrollable ancestor\n * is scrolled.\n * @default true\n */\n renderOnScroll?: BooleanOrCallback<Event>;\n /**\n * Whether the items should be rendered when the closest scrollable ancestor\n * is resized.\n * @default true\n */\n renderOnResize?: BooleanOrCallback<Element>;\n /**\n * The number of items to render initially. Can be set to a negative number to\n * render items from the end of the list.\n * @default 0\n */\n initialItems?: number;\n /**\n * Whether the items should be rendered vertically or horizontally.\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\";\n /**\n * The fixed size of each item in pixels. If not provided, the size will be\n * automatically calculated.\n */\n itemSize?: number;\n /**\n * The estimated size of each item in pixels. This is used to calculate the\n * initial size of the items before they are rendered.\n * @default 40\n */\n estimatedItemSize?: number;\n /**\n * The gap between each item in pixels.\n * @default 0\n */\n gap?: number;\n /**\n * The number of items to render before and after the visible items.\n * @default 1\n */\n overscan?: number;\n /**\n * The item indices that should always be rendered.\n */\n persistentIndices?: number[];\n /**\n * The padding between the items and the container in pixels. This value will\n * be used for both the `paddingStart` and `paddingEnd` props, if they are not\n * explicitly provided.\n * @default 0\n */\n padding?: number;\n /**\n * The padding between the items and the container's start edge in pixels.\n * This value will override the `padding` prop if it is explicitly provided.\n * @default 0\n */\n paddingStart?: number;\n /**\n * The padding between the items and the container's end edge in pixels. This\n * value will override the `padding` prop if it is explicitly provided.\n * @default 0\n */\n paddingEnd?: number;\n /**\n * The `children` should be a function that receives item props and returns a\n * React element. The item props should be spread onto the element that\n * renders the item.\n */\n children?: (item: ItemProps<T>) => ReactNode;\n}\n\nexport interface CollectionRendererProps<T extends Item = any> extends Props<\n TagName,\n CollectionRendererOptions<T>\n> {}\n"],"mappings":"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"}
1
+ {"version":3,"file":"collection-renderer.js","names":[],"sources":["../../src/collection/collection-renderer.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useForceUpdate,\n useId,\n useMergeRefs,\n useWrapElement,\n createElement,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Options, Props } from \"@ariakit/react-utils\";\nimport {\n getScrollingElement,\n getWindow,\n invariant,\n shallowEqual,\n} from \"@ariakit/utils\";\nimport type { AnyObject, BooleanOrCallback, EmptyObject } from \"@ariakit/utils\";\nimport type {\n CSSProperties,\n ElementType,\n ReactNode,\n RefCallback,\n RefObject,\n} from \"react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useCollectionContext } from \"./collection-context.tsx\";\nimport type {\n CollectionStore,\n CollectionStoreItem,\n} from \"./collection-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\ntype NestedRendererItemProps = Pick<\n CollectionRendererOptions,\n | \"gap\"\n | \"orientation\"\n | \"itemSize\"\n | \"estimatedItemSize\"\n | \"padding\"\n | \"paddingStart\"\n | \"paddingEnd\"\n>;\n\ninterface ItemObject extends AnyObject, NestedRendererItemProps {\n /**\n * The item unique identifier. If not specified, an ID will be assigned based\n * on the item's index. If it's a nested item and the item is not included in\n * the `items` property of its parent, it must be composed by all the\n * ancestors' IDs and the item's ID, separated by slashes (e.g.,\n * `grand/parent/item`).\n */\n id?: string;\n /**\n * The item style object. If the `width` or `height` properties are\n * specificed, they will be used to calculate the item size.\n */\n style?: CSSProperties;\n /**\n * A list of nested items. Passing this property will help measure the item\n * size.\n */\n items?: Item[];\n /**\n * The rendered item element. This property is assigned to the `items` state\n * on the collection store and can be used to calculate the item size.\n */\n element?: HTMLElement | null;\n}\n\ntype Item =\n | ItemObject\n | Omit<string, string>\n | Omit<number, string>\n | Omit<boolean, string>\n | null\n | undefined;\n\ntype Items<T extends Item> = number | readonly T[];\n\ninterface BaseItemProps {\n id: string;\n ref: RefCallback<HTMLElement>;\n style: CSSProperties;\n index: number;\n}\n\ntype ItemProps<\n T extends Item,\n P extends BaseItemProps = BaseItemProps,\n> = unknown extends T ? P : P & (T extends AnyObject ? T : { value: T });\n\ntype RawItemProps<T extends Item> = unknown extends T\n ? EmptyObject\n : T extends AnyObject\n ? T\n : { value: T };\n\ntype Data = Map<\n string,\n { index: number; rendered: boolean; start: number; end: number }\n>;\n\ninterface CollectionRendererContextValue {\n store: CollectionRendererOptions[\"store\"];\n orientation: CollectionRendererOptions[\"orientation\"];\n overscan: CollectionRendererOptions[\"overscan\"];\n childrenData: Map<string, Data>;\n}\n\nconst CollectionRendererContext =\n createContext<CollectionRendererContextValue | null>(null);\n\nfunction createTask() {\n let raf = 0;\n const run = (cb: () => void) => {\n if (raf) return;\n raf = requestAnimationFrame(() => {\n raf = 0;\n cb();\n });\n };\n const cancel = () => {\n cancelAnimationFrame(raf);\n raf = 0;\n };\n return { run, cancel };\n}\n\nfunction findNearestIndex<T extends Item = any>(\n items: Items<T>,\n target: number,\n getValue: (index: number) => number,\n) {\n let left = 0;\n let right = getItemsLength(items) - 1;\n while (left <= right) {\n const index = ((left + right) / 2) | 0;\n const value = getValue(index);\n if (value === target) return index;\n else if (value < target) left = index + 1;\n else right = index - 1;\n }\n if (left > 0) return left - 1;\n return 0;\n}\n\nfunction getItemsLength<T extends Item>(items: Items<T>) {\n return typeof items === \"number\" ? items : items.length;\n}\n\nfunction getItemObject(item: Item): ItemObject {\n if (!item || typeof item !== \"object\") {\n return { value: item };\n }\n return item;\n}\n\nfunction getItemId(item: Item, index: number, baseId?: string) {\n invariant(baseId, \"CollectionRenderer must be given an `id` prop.\");\n const defaultId = `${baseId}/${index}`;\n return getItemObject(item).id ?? defaultId;\n}\n\nfunction getItem<T extends Item = any>(\n items: Items<T>,\n index: number,\n): RawItemProps<T> | null {\n if (typeof items === \"number\") {\n if (index >= items) return null;\n return {} as RawItemProps<T>;\n }\n const item = items[index];\n if (!item) return null;\n if (typeof item === \"object\") return item as RawItemProps<T>;\n return { value: item } as unknown as RawItemProps<T>;\n}\n\nfunction getItemSize(\n item: Item,\n horizontal: boolean,\n fallbackElement?: HTMLElement | null | false,\n): number {\n const itemObject = getItemObject(item);\n horizontal = itemObject.orientation === \"horizontal\" || horizontal;\n const prop = horizontal ? \"width\" : \"height\";\n const style = itemObject.style;\n if (style) {\n const size = style[prop];\n if (typeof size === \"number\") return size;\n }\n const items = itemObject.items;\n if (items?.length) {\n const hasSameOrientation =\n !itemObject.orientation ||\n (horizontal && itemObject.orientation === \"horizontal\") ||\n (!horizontal && itemObject.orientation === \"vertical\");\n const paddingStart = itemObject.paddingStart ?? itemObject.padding ?? 0;\n const paddingEnd = itemObject.paddingEnd ?? itemObject.padding ?? 0;\n const padding = hasSameOrientation ? paddingStart + paddingEnd : 0;\n const initialSize = (itemObject.gap ?? 0) * (items.length - 1) + padding;\n if (hasSameOrientation && itemObject.itemSize) {\n return initialSize + itemObject.itemSize * items.length;\n }\n // oxlint-disable-next-line no-unnecessary-type-arguments\n const totalSize = items.reduce<number>(\n (sum, item) => sum + getItemSize(item, horizontal),\n initialSize,\n );\n if (totalSize !== initialSize) return totalSize;\n }\n const element =\n fallbackElement !== false ? itemObject.element || fallbackElement : null;\n if (element?.isConnected) {\n return element.getBoundingClientRect()[prop];\n }\n return 0;\n}\n\nfunction getAverageSize<T extends Item>(props: {\n baseId: string;\n data: Data;\n items: Items<T>;\n elements: Map<string, HTMLElement>;\n estimatedItemSize: number;\n horizontal: boolean;\n}) {\n const length = getItemsLength(props.items);\n let currentIndex = 0;\n let averageSize = props.estimatedItemSize;\n\n const setAverageSize = (size: number) => {\n const prevIndex = currentIndex;\n currentIndex = currentIndex + 1;\n averageSize = (averageSize * prevIndex + size) / currentIndex;\n };\n\n for (let index = 0; index < length; index += 1) {\n const item = getItem(props.items, index);\n const itemId = getItemId(item, index, props.baseId);\n const itemData = props.data.get(itemId);\n const fallbackElement = props.elements.get(itemId);\n const size = getItemSize(item, props.horizontal, fallbackElement);\n if (size) {\n setAverageSize(size);\n } else if (itemData?.rendered) {\n setAverageSize(itemData.end - itemData.start);\n }\n }\n\n return averageSize;\n}\n\nfunction getScrollOffset(scroller: Element | Window, horizontal: boolean) {\n if (\"scrollX\" in scroller) {\n return horizontal ? scroller.scrollX : scroller.scrollY;\n }\n return horizontal ? scroller.scrollLeft : scroller.scrollTop;\n}\n\nfunction getViewport(scroller: Element) {\n const { defaultView, documentElement } = scroller.ownerDocument;\n if (scroller === documentElement) return defaultView;\n return scroller;\n}\n\nfunction useScroller(rendererRef: RefObject<HTMLElement | null> | null) {\n const [scroller, setScroller] = useState<Element | null>(null);\n useEffect(() => {\n const renderer = rendererRef?.current;\n if (!renderer) return;\n const scroller = getScrollingElement(renderer);\n if (!scroller) return;\n setScroller(scroller);\n }, [rendererRef]);\n return scroller;\n}\n\nfunction getRendererOffset(\n renderer: HTMLElement,\n scroller: Element,\n horizontal: boolean,\n): number {\n const win = getWindow(renderer);\n const htmlElement = win?.document.documentElement;\n const rendererRect = renderer.getBoundingClientRect();\n const rendererOffset = horizontal ? rendererRect.left : rendererRect.top;\n if (scroller === htmlElement) {\n const scrollOffset = getScrollOffset(win, horizontal);\n return scrollOffset + rendererOffset;\n }\n const scrollerRect = scroller.getBoundingClientRect();\n const scrollerOffset = horizontal ? scrollerRect.left : scrollerRect.top;\n const scrollOffset = getScrollOffset(scroller, horizontal);\n return rendererOffset - scrollerOffset + scrollOffset;\n}\n\nfunction getOffsets(\n renderer: HTMLElement,\n scroller: Element,\n horizontal: boolean,\n) {\n const scrollOffset = getScrollOffset(scroller, horizontal);\n const rendererOffset = getRendererOffset(renderer, scroller, horizontal);\n const scrollSize = horizontal ? scroller.clientWidth : scroller.clientHeight;\n const start = scrollOffset - rendererOffset;\n const end = start + scrollSize;\n return { start, end };\n}\n\nfunction getItemsEnd<T extends Item>(props: {\n baseId?: string;\n items: Items<T>;\n data: Data;\n gap: number;\n horizontal: boolean;\n itemSize?: number;\n estimatedItemSize: number;\n paddingStart: number;\n paddingEnd: number;\n}) {\n const length = getItemsLength(props.items);\n const totalPadding = props.paddingStart + props.paddingEnd;\n if (!length) return totalPadding;\n const lastIndex = length - 1;\n const totalGap = lastIndex * props.gap;\n if (props.itemSize != null) {\n return length * props.itemSize + totalGap + totalPadding;\n }\n const defaultEnd = length * props.estimatedItemSize + totalGap + totalPadding;\n if (!props.baseId) return defaultEnd;\n const lastItem = getItem(props.items, lastIndex);\n const lastItemId = getItemId(lastItem, lastIndex, props.baseId);\n const lastItemData = props.data.get(lastItemId);\n if (lastItemData?.end) return lastItemData.end + props.paddingEnd;\n if (!Array.isArray(props.items)) return defaultEnd;\n // oxlint-disable-next-line no-unnecessary-type-arguments\n const end = props.items.reduce<number>(\n (sum, item) => sum + getItemSize(item, props.horizontal, false),\n 0,\n );\n if (!end) return defaultEnd;\n return end + totalGap + totalPadding;\n}\n\nfunction getData<T extends Item>(props: {\n baseId: string;\n items: Items<T>;\n data: Data;\n gap: number;\n horizontal: boolean;\n elements: Map<string, HTMLElement>;\n paddingStart: number;\n itemSize?: number;\n estimatedItemSize: number;\n}) {\n const length = getItemsLength(props.items);\n let nextData: Data | undefined;\n let start = props.paddingStart;\n const avgSize = getAverageSize(props);\n\n for (let index = 0; index < length; index += 1) {\n const item = getItem(props.items, index);\n const itemId = getItemId(item, index, props.baseId);\n const itemData = props.data.get(itemId);\n const prevRendered = itemData?.rendered ?? false;\n\n const setSize = (size: number, rendered = prevRendered) => {\n start = start ? start + props.gap : start;\n const end = start + size;\n const nextItemData = { index, rendered, start, end };\n if (!shallowEqual(itemData, nextItemData)) {\n if (!nextData) {\n nextData = new Map(props.data);\n }\n nextData.set(itemId, { index, rendered, start, end });\n }\n start = end;\n };\n\n const size = getItemSize(\n item,\n props.horizontal,\n props.elements.get(itemId),\n );\n\n if (size) {\n setSize(size, true);\n } else if (itemData?.rendered) {\n setSize(itemData.end - itemData.start, true);\n } else {\n setSize(avgSize);\n }\n }\n\n return nextData;\n}\n\nexport function useCollectionRenderer<T extends Item = any>({\n store,\n items: itemsProp,\n initialItems = 0,\n gap = 0,\n itemSize,\n estimatedItemSize = 40,\n overscan: overscanProp,\n orientation: orientationProp,\n padding = 0,\n paddingStart = padding,\n paddingEnd = padding,\n persistentIndices,\n renderOnScroll = true,\n renderOnResize = !!renderOnScroll,\n children: renderItem,\n ...props\n}: CollectionRendererProps<T>) {\n const context = useCollectionContext();\n store = store || (context as typeof store);\n\n const items = useStoreState(\n store,\n (state) => itemsProp ?? (state?.items as T[]),\n );\n\n invariant(\n items != null,\n process.env.NODE_ENV !== \"production\" &&\n \"CollectionRenderer must be either wrapped in a Collection component or be given an `items` prop.\",\n );\n\n let parent = useContext(CollectionRendererContext);\n\n if (store && parent?.store !== store) {\n parent = null;\n }\n\n const parentData = parent?.childrenData;\n const orientation = orientationProp ?? parent?.orientation ?? \"vertical\";\n const overscan = overscanProp ?? parent?.overscan ?? 1;\n\n const ref = useRef<HTMLType>(null);\n const baseId = useId(props.id);\n const horizontal = orientation === \"horizontal\";\n const elements = useMemo(() => new Map<string, HTMLElement>(), []);\n const [elementsUpdated, updateElements] = useForceUpdate();\n\n const [defaultVisibleIndices, setVisibleIndices] = useState<number[]>(() => {\n if (!initialItems) return [];\n const length = getItemsLength(items);\n const initialLength = Math.min(length, Math.abs(initialItems));\n return Array.from({ length: initialLength }, (_, index) => {\n if (initialItems < 0) return length - index - 1;\n return index;\n });\n });\n\n const visibleIndices = useMemo(() => {\n if (!persistentIndices) return defaultVisibleIndices;\n const nextIndices = defaultVisibleIndices.slice();\n for (const index of persistentIndices) {\n if (index < 0) continue;\n if (nextIndices.includes(index)) continue;\n nextIndices.push(index);\n }\n nextIndices.sort((a, b) => a - b);\n if (shallowEqual(defaultVisibleIndices, nextIndices)) {\n return defaultVisibleIndices;\n }\n return nextIndices;\n }, [defaultVisibleIndices, persistentIndices]);\n\n const [data, setData] = useState<Data>(() => {\n if (!baseId) return new Map();\n const data = parentData?.get(baseId) || new Map();\n if (itemSize != null) return data;\n if (!items) return data;\n const nextData = getData({\n baseId,\n items,\n data,\n gap,\n elements,\n horizontal,\n paddingStart,\n itemSize,\n estimatedItemSize,\n });\n return nextData || data;\n });\n\n const totalSize = useMemo(() => {\n return getItemsEnd({\n baseId,\n items,\n data,\n gap,\n horizontal,\n itemSize,\n estimatedItemSize,\n paddingStart,\n paddingEnd,\n });\n }, [\n baseId,\n items,\n data,\n gap,\n horizontal,\n itemSize,\n estimatedItemSize,\n paddingStart,\n paddingEnd,\n ]);\n\n // Back up the data to the parent so that it can be used later when this\n // renderer is re-mounted.\n useEffect(() => {\n if (!baseId) return;\n parentData?.set(baseId, data);\n }, [baseId, parentData, data]);\n\n useEffect(() => {\n if (itemSize != null) return;\n if (!baseId) return;\n if (!items) return;\n const nextData = getData({\n baseId,\n items,\n data,\n gap,\n elements,\n horizontal,\n paddingStart,\n itemSize,\n estimatedItemSize,\n });\n if (nextData) {\n setData(nextData);\n }\n }, [\n elementsUpdated,\n itemSize,\n baseId,\n items,\n data,\n gap,\n elements,\n horizontal,\n paddingStart,\n estimatedItemSize,\n ]);\n\n const scroller = useScroller(items ? ref : null);\n const offsetsRef = useRef({ start: 0, end: 0 });\n\n const processVisibleIndices = useCallback(() => {\n const offsets = offsetsRef.current;\n\n if (!items) return;\n if (!baseId) return;\n if (!offsets.end) return;\n if (!data.size && !itemSize) return;\n\n const length = getItemsLength(items);\n\n const getItemOffset = (index: number, prop: \"start\" | \"end\" = \"start\") => {\n if (itemSize) {\n const start = itemSize * index + gap * index + paddingStart;\n if (prop === \"start\") return start;\n return start + itemSize;\n }\n const item = getItem(items, index);\n const itemId = getItemId(item, index, baseId);\n const itemData = data.get(itemId);\n return itemData?.[prop] ?? 0;\n };\n\n const initialStart = findNearestIndex(items, offsets.start, getItemOffset);\n\n let initialEnd = initialStart;\n while (initialEnd < length && getItemOffset(initialEnd) < offsets.end) {\n initialEnd += 1;\n }\n\n const finalOverscan = initialEnd - initialStart ? overscan : 0;\n const start = Math.max(initialStart - finalOverscan, 0);\n const end = Math.min(initialEnd + finalOverscan, length);\n\n const indices = Array.from(\n { length: end - start },\n (_, index) => index + start,\n );\n\n setVisibleIndices((prevIndices) => {\n if (shallowEqual(prevIndices, indices)) return prevIndices;\n return indices;\n });\n // oxlint-disable-next-line exhaustive-deps\n }, [\n elementsUpdated,\n items,\n baseId,\n data,\n itemSize,\n gap,\n paddingStart,\n overscan,\n ]);\n\n useEffect(processVisibleIndices, [processVisibleIndices]);\n\n const processVisibleIndicesEvent = useEvent(processVisibleIndices);\n\n // Update the offsets when the items change.\n useEffect(() => {\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n }, [scroller, horizontal, processVisibleIndicesEvent]);\n\n const mayRenderOnScroll = !!renderOnScroll;\n const renderOnScrollProp = useBooleanEvent(renderOnScroll);\n\n // Render on scroll\n useEffect(() => {\n if (!mayRenderOnScroll) return;\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n const viewport = getViewport(scroller);\n if (!viewport) return;\n const task = createTask();\n const onScroll = (event: Event) => {\n task.run(() => {\n if (!renderOnScrollProp(event)) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n });\n };\n viewport.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => {\n task.cancel();\n viewport.removeEventListener(\"scroll\", onScroll);\n };\n }, [\n mayRenderOnScroll,\n scroller,\n renderOnScrollProp,\n horizontal,\n processVisibleIndicesEvent,\n ]);\n\n const mayRenderOnResize = !!renderOnResize;\n const renderOnResizeProp = useBooleanEvent(renderOnResize);\n\n // Render on resize\n useEffect(() => {\n if (!mayRenderOnResize) return;\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n const viewport = getViewport(scroller);\n if (!viewport) return;\n const task = createTask();\n\n if (viewport === scroller) {\n if (typeof ResizeObserver !== \"function\") return;\n let firstRun = true;\n const observer = new ResizeObserver(() => {\n if (firstRun) {\n firstRun = false;\n return;\n }\n task.run(() => {\n if (!renderOnResizeProp(scroller)) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n });\n });\n observer.observe(scroller);\n return () => {\n task.cancel();\n observer.disconnect();\n };\n }\n\n const onResize = () => {\n task.run(() => {\n if (!renderOnResizeProp(scroller)) return;\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n });\n };\n\n viewport.addEventListener(\"resize\", onResize, { passive: true });\n return () => {\n task.cancel();\n viewport.removeEventListener(\"resize\", onResize);\n };\n }, [\n mayRenderOnResize,\n scroller,\n renderOnResizeProp,\n horizontal,\n processVisibleIndicesEvent,\n ]);\n\n // Render on intersection\n useEffect(() => {\n if (typeof IntersectionObserver !== \"function\") return;\n const renderer = ref.current;\n if (!renderer) return;\n if (!scroller) return;\n const viewport = getViewport(scroller);\n if (!viewport) return;\n const observer = new IntersectionObserver(\n () => {\n offsetsRef.current = getOffsets(renderer, scroller, horizontal);\n processVisibleIndicesEvent();\n },\n { root: scroller === viewport ? scroller : null },\n );\n observer.observe(renderer);\n return () => {\n observer.disconnect();\n };\n }, [scroller, horizontal, processVisibleIndicesEvent]);\n\n const elementObserver = useMemo(() => {\n if (typeof ResizeObserver !== \"function\") return;\n return new ResizeObserver(() => {\n flushSync(updateElements);\n });\n }, [updateElements]);\n\n const itemRef = useCallback<RefCallback<HTMLElement>>(\n (element) => {\n if (!element) return;\n if (itemSize) return;\n updateElements();\n elements.set(element.id, element);\n elementObserver?.observe(element);\n },\n [itemSize, elements, updateElements, elementObserver],\n );\n\n const getItemProps = useCallback(\n <Item extends T = T>(item: RawItemProps<Item>, index: number) => {\n const itemId = getItemId(item, index, baseId);\n const offset = itemSize\n ? paddingStart + itemSize * index + gap * index\n : (data.get(itemId)?.start ?? 0);\n const baseItemProps: BaseItemProps = {\n id: itemId,\n ref: itemRef,\n index,\n style: {\n position: \"absolute\",\n left: horizontal ? offset : 0,\n top: horizontal ? 0 : offset,\n },\n };\n if (itemSize) {\n baseItemProps.style[horizontal ? \"width\" : \"height\"] = itemSize;\n }\n if (item == null) return baseItemProps as ItemProps<T>;\n const itemProps = getItemObject(item);\n return {\n ...itemProps,\n ...baseItemProps,\n style: {\n ...itemProps.style,\n ...baseItemProps.style,\n },\n } as ItemProps<T>;\n },\n [baseId, data, itemSize, paddingStart, gap, horizontal, itemRef],\n );\n\n const itemsProps = useMemo(() => {\n return visibleIndices\n .map((index) => {\n if (index < 0) return;\n const item = getItem(items, index);\n if (!item) return;\n return getItemProps(item, index);\n })\n .filter((value): value is NonNullable<typeof value> => value != null);\n }, [items, visibleIndices, getItemProps]);\n\n const children = itemsProps?.map((itemProps) => {\n return renderItem?.(itemProps);\n });\n\n const styleProp = props.style;\n const sizeProperty = horizontal ? \"width\" : \"height\";\n\n const style = useMemo(\n () => ({\n flex: \"none\",\n position: \"relative\" as const,\n [sizeProperty]: totalSize,\n ...styleProp,\n }),\n [styleProp, sizeProperty, totalSize],\n );\n\n const childrenData = useMemo(() => new Map<string, Data>(), []);\n const providerValue: CollectionRendererContextValue = useMemo(\n () => ({ store, orientation, overscan, childrenData }),\n [store, orientation, overscan, childrenData],\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <CollectionRendererContext.Provider value={providerValue}>\n {element}\n </CollectionRendererContext.Provider>\n ),\n [providerValue],\n );\n\n props = {\n id: baseId,\n ...props,\n style,\n ref: useMergeRefs(ref, props.ref),\n };\n\n return { ...props, children };\n}\n\nexport const CollectionRenderer = forwardRef(function CollectionRenderer<\n T extends Item = any,\n>(props: CollectionRendererProps<T>) {\n const htmlProps = useCollectionRenderer(props);\n return createElement(TagName, htmlProps);\n});\n\nexport const getCollectionRendererItem = getItem;\nexport const getCollectionRendererItemId = getItemId;\n\nexport type CollectionRendererItemObject = ItemObject;\nexport type CollectionRendererItem = Item;\nexport type CollectionRendererBaseItemProps = BaseItemProps;\nexport type CollectionRendererItemProps<\n T extends Item,\n P extends BaseItemProps = BaseItemProps,\n> = ItemProps<T, P>;\n\nexport interface CollectionRendererOptions<\n T extends Item = any,\n> extends Options {\n /**\n * Object returned by the\n * [`useCollectionStore`](https://ariakit.com/reference/use-collection-store)\n * hook. If not provided, the closest\n * [Collection](https://ariakit.com/components/collection) component's\n * context will be used.\n *\n * The store\n * [`items`](https://ariakit.com/reference/use-collection-store#items) state\n * will be used to render the items if the\n * [`items`](https://ariakit.com/reference/collection-items#items) prop is not\n * provided.\n */\n store?: CollectionStore<\n T extends CollectionStoreItem ? T : CollectionStoreItem\n >;\n /**\n * All items to be rendered. This prop can be either a memoized array of items\n * or a number representing the total number of items to be rendered.\n *\n * When passing an array, each item can be either a primitive value or an\n * object. If it's a primitive value, an object with the `value` property will\n * be automatically created for each item and passed as an argument to the\n * function that renders the item. If it's an object, the entire object will\n * be passed.\n *\n * The item object can have any shape, but some **optional** properties have\n * particular functions:\n * - `id`: The same as the HTML attribute. If not provided, one will be\n * generated automatically.\n * - `style`: The same as the HTML attribute. This will be merged with the\n * styles generated by the component for each item. If the `width` or\n * `height` properties are explicitly provided here, they will be used to\n * calculate the item's size. This is useful when rendering items with known\n * variable sizes.\n * - `items`: An array of items to be rendered as children of this item. This\n * is useful when rendering nested items. This property is recommended when\n * rendering nested items because it will help the parent renderer calculate\n * the size and position of the nested items.\n *\n * Also, When rendering nested renderers, you can optionally include props\n * like `gap`, `orientation`, `itemSize`, `estimatedItemSize`, `padding`,\n * `paddingStart`, and `paddingEnd`. These props will help the parent renderer\n * calculate the size and position of the nested renderers.\n */\n items?: Items<T>;\n /**\n * Whether the items should be rendered when the closest scrollable ancestor\n * is scrolled.\n * @default true\n */\n renderOnScroll?: BooleanOrCallback<Event>;\n /**\n * Whether the items should be rendered when the closest scrollable ancestor\n * is resized.\n * @default true\n */\n renderOnResize?: BooleanOrCallback<Element>;\n /**\n * The number of items to render initially. Can be set to a negative number to\n * render items from the end of the list.\n * @default 0\n */\n initialItems?: number;\n /**\n * Whether the items should be rendered vertically or horizontally.\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\";\n /**\n * The fixed size of each item in pixels. If not provided, the size will be\n * automatically calculated.\n */\n itemSize?: number;\n /**\n * The estimated size of each item in pixels. This is used to calculate the\n * initial size of the items before they are rendered.\n * @default 40\n */\n estimatedItemSize?: number;\n /**\n * The gap between each item in pixels.\n * @default 0\n */\n gap?: number;\n /**\n * The number of items to render before and after the visible items.\n * @default 1\n */\n overscan?: number;\n /**\n * The item indices that should always be rendered.\n */\n persistentIndices?: number[];\n /**\n * The padding between the items and the container in pixels. This value will\n * be used for both the `paddingStart` and `paddingEnd` props, if they are not\n * explicitly provided.\n * @default 0\n */\n padding?: number;\n /**\n * The padding between the items and the container's start edge in pixels.\n * This value will override the `padding` prop if it is explicitly provided.\n * @default 0\n */\n paddingStart?: number;\n /**\n * The padding between the items and the container's end edge in pixels. This\n * value will override the `padding` prop if it is explicitly provided.\n * @default 0\n */\n paddingEnd?: number;\n /**\n * The `children` should be a function that receives item props and returns a\n * React element. The item props should be spread onto the element that\n * renders the item.\n */\n children?: (item: ItemProps<T>) => ReactNode;\n}\n\nexport interface CollectionRendererProps<T extends Item = any> extends Props<\n TagName,\n CollectionRendererOptions<T>\n> {}\n"],"mappings":"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"}
@@ -38,7 +38,7 @@ declare const useCollection: import("@ariakit/react-utils").Hook<"div", Collecti
38
38
  * </Collection>
39
39
  * ```
40
40
  */
41
- declare const Collection: (props: CollectionProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
41
+ declare const Collection: (props: CollectionProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
42
42
  interface CollectionOptions<_T extends ElementType = TagName> extends Options {
43
43
  /**
44
44
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","names":["Options","Props","ElementType","CollectionStore","TagName","useCollection","CollectionOptions","Hook","Collection","CollectionProps","props","ReactElement","JSXElementConstructor","_T","store","T"],"sources":["../../src/collection/collection.d.ts"],"mappings":";;;;;cAGcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAiB7B;;;;AAAgG;AAiBhG;AApC6D,cAmBxCC,aAAAA,iCAA8CE,IAAAA,QAAYD,iBAAiB;;;;;;;;AAiB6C;AAC7I;;;;;;;;cADqBE,UAAAA,GAAaE,KAAAA,EAAOD,eAAe,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACvGN,iBAAAA,YAA6BJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAA/BE;;;;;;AAQnB;EAAvBY,KAAAA,GAAQX,eAAAA;AAAAA;AAAAA,KAEAM,eAAAA,WAA0BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMc,CAAAA,EAAGT,iBAAAA,CAAkBS,CAAAA"}
1
+ {"version":3,"file":"collection.d.ts","names":["Options","Props","ElementType","CollectionStore","TagName","useCollection","CollectionOptions","Hook","Collection","CollectionProps","props","ReactElement","JSXElementConstructor","_T","store","T"],"sources":["../../src/collection/collection.d.ts"],"mappings":";;;;;cAGcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAiB7B;;;;AAAgG;AAiBhG;AApC6D,cAmBxCC,aAAAA,iCAA8CE,IAAAA,QAAYD,iBAAiB;;;;;;;;AAiBiD;AACjJ;;;;;;;;cADqBE,UAAAA,GAAaE,KAAAA,EAAOD,eAAe,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC3GN,iBAAAA,YAA6BJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAA/BE;;;;;;AAQnB;EAAvBY,KAAAA,GAAQX,eAAAA;AAAAA;AAAAA,KAEAM,eAAAA,WAA0BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMc,CAAAA,EAAGT,iBAAAA,CAAkBS,CAAAA"}
@@ -1,4 +1,4 @@
1
- import { n as CollectionItemOptions$1 } from "./collection-item-C-g2BwVF.js";
1
+ import { n as CollectionItemOptions$1 } from "./collection-item-pvEWNoNs.js";
2
2
  import { Props } from "@ariakit/react-utils";
3
3
  import { ElementType, RefCallback, RefObject } from "react";
4
4
 
@@ -27,4 +27,4 @@ interface CollectionItemOptions<T extends ElementType = TagName> extends Collect
27
27
  type CollectionItemProps<T extends ElementType = TagName> = Props<T, CollectionItemOptions<T>>;
28
28
  //#endregion
29
29
  export { useCollectionItemOffscreen as i, CollectionItemOptions as n, CollectionItemProps as r, CollectionItem as t };
30
- //# sourceMappingURL=collection-item-offscreen-DyXa-sqj.d.ts.map
30
+ //# sourceMappingURL=collection-item-offscreen-B5E5vNFi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-item-offscreen-DyXa-sqj.d.ts","names":["Props","ElementType","RefCallback","RefObject","Base","TagName","useCollectionItemOffscreen","T","P","CollectionItemProps","offscreenMode","offscreenRoot","HTMLDivElement","props","id","active","ref","CollectionItem","JSX","Element","CollectionItemOptions","HTMLElement","element"],"sources":["../src/collection/collection-item-offscreen.d.ts"],"mappings":";;;;;cAGcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAAA,iBACLC,0BAAAA,WAAqCL,WAAAA,YAAuBQ,mBAAAA,CAAoBF,CAAAA,EAAAA,CAAAA;EAAMG,aAAAA;EAAeC,aAAAA;EAAAA,GAAkBE;AAAAA,GAASL,CAAAA;EACpJM,EAAAA;EACAC,MAAAA;EACAC,GAAAA,EAAKd,WAAAA,CAAYU,cAAAA;EACjB,gBAAA;AAAA;AAAA,cAEiBK,cAAAA;EAAmBP,aAAAA;EAAeC,aAAAA;EAAAA,GAAkBE;AAAAA,GAASJ,mBAAAA,iCAAoDS,GAAAA,CAAIC,OAAAA;AAAAA,UACzHC,qBAAAA,WAAgCnB,WAAAA,GAAcI,OAAAA,UAAiBD,uBAAAA,CAA2BG,CAAAA;EACvGG,aAAAA;EACAC,aAAAA,GAAgBU,WAAAA,GAAclB,SAAAA,CAAUkB,WAAAA,aAAwBC,OAAAA,EAASD,WAAAA,KAAgBA,WAAAA;AAAAA;AAAAA,KAEjFZ,mBAAAA,WAA8BR,WAAAA,GAAcI,OAAAA,IAAWL,KAAAA,CAAMO,CAAAA,EAAGa,qBAAAA,CAAsBb,CAAAA"}
1
+ {"version":3,"file":"collection-item-offscreen-B5E5vNFi.d.ts","names":["Props","ElementType","RefCallback","RefObject","Base","TagName","useCollectionItemOffscreen","T","P","CollectionItemProps","offscreenMode","offscreenRoot","HTMLDivElement","props","id","active","ref","CollectionItem","JSX","Element","CollectionItemOptions","HTMLElement","element"],"sources":["../src/collection/collection-item-offscreen.d.ts"],"mappings":";;;;;cAGcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAAA,iBACLC,0BAAAA,WAAqCL,WAAAA,YAAuBQ,mBAAAA,CAAoBF,CAAAA,EAAAA,CAAAA;EAAMG,aAAAA;EAAeC,aAAAA;EAAAA,GAAkBE;AAAAA,GAASL,CAAAA;EACpJM,EAAAA;EACAC,MAAAA;EACAC,GAAAA,EAAKd,WAAAA,CAAYU,cAAAA;EACjB,gBAAA;AAAA;AAAA,cAEiBK,cAAAA;EAAmBP,aAAAA;EAAeC,aAAAA;EAAAA,GAAkBE;AAAAA,GAASJ,mBAAAA,iCAAoDS,GAAAA,CAAIC,OAAAA;AAAAA,UACzHC,qBAAAA,WAAgCnB,WAAAA,GAAcI,OAAAA,UAAiBD,uBAAAA,CAA2BG,CAAAA;EACvGG,aAAAA;EACAC,aAAAA,GAAgBU,WAAAA,GAAclB,SAAAA,CAAUkB,WAAAA,aAAwBC,OAAAA,EAASD,WAAAA,KAAgBA,WAAAA;AAAAA;AAAAA,KAEjFZ,mBAAAA,WAA8BR,WAAAA,GAAcI,OAAAA,IAAWL,KAAAA,CAAMO,CAAAA,EAAGa,qBAAAA,CAAsBb,CAAAA"}
@@ -35,7 +35,7 @@ declare const useCollectionItem: import("@ariakit/react-utils").Hook<"div", Coll
35
35
  * <CollectionItem store={store}>Item 3</CollectionItem>
36
36
  * ```
37
37
  */
38
- declare const CollectionItem: (props: CollectionItemProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
38
+ declare const CollectionItem: (props: CollectionItemProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
39
39
  interface CollectionItemOptions<_T extends ElementType = TagName> extends Options {
40
40
  /**
41
41
  * Object returned by the
@@ -81,4 +81,4 @@ interface CollectionItemOptions<_T extends ElementType = TagName> extends Option
81
81
  type CollectionItemProps<T extends ElementType = TagName> = Props<T, CollectionItemOptions<T>>;
82
82
  //#endregion
83
83
  export { useCollectionItem as i, CollectionItemOptions as n, CollectionItemProps as r, CollectionItem as t };
84
- //# sourceMappingURL=collection-item-C-g2BwVF.d.ts.map
84
+ //# sourceMappingURL=collection-item-pvEWNoNs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-item-C-g2BwVF.d.ts","names":["CollectionStoreItem","Options","Props","ElementType","CollectionStore","TagName","useCollectionItem","CollectionItemOptions","Hook","CollectionItem","CollectionItemProps","props","ReactElement","JSXElementConstructor","_T","store","id","shouldRegisterItem","getItem","T"],"sources":["../src/collection/collection-item.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAc7B;;;AAhB6D,cAgBxCC,iBAAAA,iCAAkDE,IAAAA,QAAYD,qBAAqB;AAAA;AAgBxG;;;;;;;;;AAAqJ;AACrJ;;;;AAjBwG,cAgBnFE,cAAAA,GAAiBE,KAAAA,EAAOD,mBAAmB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC/GN,qBAAAA,YAAiCJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAwC3DD;;;;;;;;;;;EA5BlBe,KAAAA,GAAQX,eAAAA;EAkBRa;;;;;;AAU6D;AAEjE;;;;;EAjBID,EAAAA;EAiB8FG;;;;EAZ9FF,kBAAAA;EAY4BE;;;;;;;;AAAmE;EAF/FD,OAAAA,IAAWP,KAAAA,EAAOX,mBAAAA,KAAwBA,mBAAAA;AAAAA;AAAAA,KAElCU,mBAAAA,WAA8BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMiB,CAAAA,EAAGZ,qBAAAA,CAAsBY,CAAAA"}
1
+ {"version":3,"file":"collection-item-pvEWNoNs.d.ts","names":["CollectionStoreItem","Options","Props","ElementType","CollectionStore","TagName","useCollectionItem","CollectionItemOptions","Hook","CollectionItem","CollectionItemProps","props","ReactElement","JSXElementConstructor","_T","store","id","shouldRegisterItem","getItem","T"],"sources":["../src/collection/collection-item.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAc7B;;;AAhB6D,cAgBxCC,iBAAAA,iCAAkDE,IAAAA,QAAYD,qBAAqB;AAAA;AAgBxG;;;;;;;;;AAAyJ;AACzJ;;;;AAjBwG,cAgBnFE,cAAAA,GAAiBE,KAAAA,EAAOD,mBAAmB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACnHN,qBAAAA,YAAiCJ,WAAAA,GAAcE,OAAAA,UAAiBJ,OAAAA;EAwC3DD;;;;;;;;;;;EA5BlBe,KAAAA,GAAQX,eAAAA;EAkBRa;;;;;;AAU6D;AAEjE;;;;;EAjBID,EAAAA;EAiB8FG;;;;EAZ9FF,kBAAAA;EAY4BE;;;;;;;;AAAmE;EAF/FD,OAAAA,IAAWP,KAAAA,EAAOX,mBAAAA,KAAwBA,mBAAAA;AAAAA;AAAAA,KAElCU,mBAAAA,WAA8BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMiB,CAAAA,EAAGZ,qBAAAA,CAAsBY,CAAAA"}
@@ -1,6 +1,6 @@
1
1
  import { r as CollectionStoreItem, t as CollectionStore } from "./collection-store-CbwzYsWf.js";
2
2
  import { Options, Props } from "@ariakit/react-utils";
3
- import { CSSProperties, ReactNode, RefCallback, RefObject } from "react";
3
+ import { CSSProperties, ReactNode, RefCallback } from "react";
4
4
  import { AnyObject, BooleanOrCallback, EmptyObject } from "@ariakit/utils";
5
5
 
6
6
  //#region src/collection/collection-renderer.d.ts
@@ -74,7 +74,7 @@ declare function useCollectionRenderer<T extends Item = any>({
74
74
  title?: string | undefined | undefined;
75
75
  role?: import("react").AriaRole | undefined;
76
76
  color?: string | undefined | undefined;
77
- ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | RefObject<HTMLDivElement> | null | undefined;
77
+ ref?: import("react").Ref<HTMLDivElement> | undefined;
78
78
  key?: import("react").Key | null | undefined;
79
79
  defaultChecked?: boolean | undefined | undefined;
80
80
  defaultValue?: string | number | readonly string[] | undefined;
@@ -118,6 +118,10 @@ declare function useCollectionRenderer<T extends Item = any>({
118
118
  results?: number | undefined | undefined;
119
119
  security?: string | undefined | undefined;
120
120
  unselectable?: "on" | "off" | undefined | undefined;
121
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
122
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
123
+ popoverTarget?: string | undefined | undefined;
124
+ inert?: boolean | undefined | undefined;
121
125
  inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
122
126
  is?: string | undefined | undefined;
123
127
  exportparts?: string | undefined | undefined;
@@ -194,18 +198,18 @@ declare function useCollectionRenderer<T extends Item = any>({
194
198
  onFocusCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
195
199
  onBlur?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
196
200
  onBlurCapture?: import("react").FocusEventHandler<HTMLDivElement> | undefined;
197
- onChange?: import("react").FormEventHandler<HTMLDivElement> | undefined;
198
- onChangeCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
201
+ onChange?: import("react").ChangeEventHandler<HTMLDivElement, Element> | undefined;
202
+ onChangeCapture?: import("react").ChangeEventHandler<HTMLDivElement, Element> | undefined;
199
203
  onBeforeInput?: import("react").InputEventHandler<HTMLDivElement> | undefined;
200
- onBeforeInputCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
201
- onInput?: import("react").FormEventHandler<HTMLDivElement> | undefined;
202
- onInputCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
203
- onReset?: import("react").FormEventHandler<HTMLDivElement> | undefined;
204
- onResetCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
205
- onSubmit?: import("react").FormEventHandler<HTMLDivElement> | undefined;
206
- onSubmitCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
207
- onInvalid?: import("react").FormEventHandler<HTMLDivElement> | undefined;
208
- onInvalidCapture?: import("react").FormEventHandler<HTMLDivElement> | undefined;
204
+ onBeforeInputCapture?: import("react").InputEventHandler<HTMLDivElement> | undefined;
205
+ onInput?: import("react").InputEventHandler<HTMLDivElement> | undefined;
206
+ onInputCapture?: import("react").InputEventHandler<HTMLDivElement> | undefined;
207
+ onReset?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
208
+ onResetCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
209
+ onSubmit?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
210
+ onSubmitCapture?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
211
+ onInvalid?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
212
+ onInvalidCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
209
213
  onLoad?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
210
214
  onLoadCapture?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
211
215
  onError?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
@@ -326,6 +330,8 @@ declare function useCollectionRenderer<T extends Item = any>({
326
330
  onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLDivElement> | undefined;
327
331
  onScroll?: import("react").UIEventHandler<HTMLDivElement> | undefined;
328
332
  onScrollCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
333
+ onScrollEnd?: import("react").UIEventHandler<HTMLDivElement> | undefined;
334
+ onScrollEndCapture?: import("react").UIEventHandler<HTMLDivElement> | undefined;
329
335
  onWheel?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
330
336
  onWheelCapture?: import("react").WheelEventHandler<HTMLDivElement> | undefined;
331
337
  onAnimationStart?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
@@ -334,10 +340,18 @@ declare function useCollectionRenderer<T extends Item = any>({
334
340
  onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
335
341
  onAnimationIteration?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
336
342
  onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLDivElement> | undefined;
343
+ onToggle?: import("react").ToggleEventHandler<HTMLDivElement> | undefined;
344
+ onBeforeToggle?: import("react").ToggleEventHandler<HTMLDivElement> | undefined;
345
+ onTransitionCancel?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
346
+ onTransitionCancelCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
337
347
  onTransitionEnd?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
338
348
  onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
349
+ onTransitionRun?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
350
+ onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
351
+ onTransitionStart?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
352
+ onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
339
353
  };
340
- declare const CollectionRenderer: <T extends Item = any>(props: CollectionRendererProps<T>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
354
+ declare const CollectionRenderer: <T extends Item = any>(props: CollectionRendererProps<T>) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
341
355
  declare const getCollectionRendererItem: typeof getItem;
342
356
  declare const getCollectionRendererItemId: typeof getItemId;
343
357
  type CollectionRendererItemObject = ItemObject;
@@ -466,4 +480,4 @@ interface CollectionRendererOptions<T extends Item = any> extends Options {
466
480
  interface CollectionRendererProps<T extends Item = any> extends Props<TagName, CollectionRendererOptions<T>> {}
467
481
  //#endregion
468
482
  export { CollectionRendererItemProps as a, getCollectionRendererItem as c, CollectionRendererItemObject as i, getCollectionRendererItemId as l, CollectionRendererBaseItemProps as n, CollectionRendererOptions as o, CollectionRendererItem as r, CollectionRendererProps as s, CollectionRenderer as t, useCollectionRenderer as u };
469
- //# sourceMappingURL=collection-renderer-DsPD9ksD.d.ts.map
483
+ //# sourceMappingURL=collection-renderer-BhzF21Du.d.ts.map