@ariakit/react-components 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/dist/button/button.d.ts +1 -1
- package/dist/{button-Cp853csH.d.ts → button-CVWcOgxs.d.ts} +3 -3
- package/dist/{button-Cp853csH.d.ts.map → button-CVWcOgxs.d.ts.map} +1 -1
- package/dist/checkbox/checkbox-check.d.ts +1 -1
- package/dist/checkbox/checkbox-check.d.ts.map +1 -1
- package/dist/checkbox/checkbox.d.ts +2 -2
- package/dist/checkbox/checkbox.d.ts.map +1 -1
- package/dist/collection/collection-item-offscreen.d.ts +1 -1
- package/dist/collection/collection-item-offscreen.js +1 -1
- package/dist/collection/collection-item-offscreen.js.map +1 -1
- package/dist/collection/collection-item.d.ts +1 -1
- package/dist/collection/collection-renderer.d.ts +1 -1
- package/dist/collection/collection-renderer.js +1 -1
- package/dist/collection/collection-renderer.js.map +1 -1
- package/dist/collection/collection.d.ts +1 -1
- package/dist/collection/collection.d.ts.map +1 -1
- package/dist/{collection-item-offscreen-DyXa-sqj.d.ts → collection-item-offscreen-B5E5vNFi.d.ts} +2 -2
- package/dist/{collection-item-offscreen-DyXa-sqj.d.ts.map → collection-item-offscreen-B5E5vNFi.d.ts.map} +1 -1
- package/dist/{collection-item-C-g2BwVF.d.ts → collection-item-pvEWNoNs.d.ts} +2 -2
- package/dist/{collection-item-C-g2BwVF.d.ts.map → collection-item-pvEWNoNs.d.ts.map} +1 -1
- package/dist/{collection-renderer-DsPD9ksD.d.ts → collection-renderer-BhzF21Du.d.ts} +29 -15
- package/dist/collection-renderer-BhzF21Du.d.ts.map +1 -0
- package/dist/combobox/combobox-cancel.d.ts +2 -2
- package/dist/combobox/combobox-cancel.d.ts.map +1 -1
- package/dist/combobox/combobox-cancel.js +1 -1
- package/dist/combobox/combobox-cancel.js.map +1 -1
- package/dist/combobox/combobox-disclosure.d.ts +2 -2
- package/dist/combobox/combobox-disclosure.d.ts.map +1 -1
- package/dist/combobox/combobox-disclosure.js +1 -1
- package/dist/combobox/combobox-disclosure.js.map +1 -1
- package/dist/combobox/combobox-group-label.d.ts +1 -1
- package/dist/combobox/combobox-group-label.d.ts.map +1 -1
- package/dist/combobox/combobox-group.d.ts +1 -1
- package/dist/combobox/combobox-group.d.ts.map +1 -1
- package/dist/combobox/combobox-group.js +1 -1
- package/dist/combobox/combobox-group.js.map +1 -1
- package/dist/combobox/combobox-item-check.d.ts +1 -1
- package/dist/combobox/combobox-item-check.d.ts.map +1 -1
- package/dist/combobox/combobox-item-value.d.ts +1 -1
- package/dist/combobox/combobox-item-value.d.ts.map +1 -1
- package/dist/combobox/combobox-item.d.ts +3 -3
- package/dist/combobox/combobox-item.d.ts.map +1 -1
- package/dist/combobox/combobox-item.js +1 -1
- package/dist/combobox/combobox-item.js.map +1 -1
- package/dist/combobox/combobox-label.d.ts +1 -1
- package/dist/combobox/combobox-label.d.ts.map +1 -1
- package/dist/combobox/combobox-label.js +1 -1
- package/dist/combobox/combobox-label.js.map +1 -1
- package/dist/combobox/combobox-list.d.ts +1 -1
- package/dist/combobox/combobox-list.d.ts.map +1 -1
- package/dist/combobox/combobox-list.js +1 -1
- package/dist/combobox/combobox-list.js.map +1 -1
- package/dist/combobox/combobox-popover.d.ts +1 -1
- package/dist/combobox/combobox-popover.js +1 -1
- package/dist/combobox/combobox-popover.js.map +1 -1
- package/dist/combobox/combobox-row.d.ts +1 -1
- package/dist/combobox/combobox-row.d.ts.map +1 -1
- package/dist/combobox/combobox-row.js +1 -1
- package/dist/combobox/combobox-row.js.map +1 -1
- package/dist/combobox/combobox-separator.d.ts +1 -1
- package/dist/combobox/combobox-separator.d.ts.map +1 -1
- package/dist/combobox/combobox-separator.js +1 -1
- package/dist/combobox/combobox-separator.js.map +1 -1
- package/dist/combobox/combobox-value.js +1 -1
- package/dist/combobox/combobox-value.js.map +1 -1
- package/dist/combobox/combobox.d.ts +3 -3
- package/dist/combobox/combobox.d.ts.map +1 -1
- package/dist/combobox/combobox.js +16 -2
- package/dist/combobox/combobox.js.map +1 -1
- package/dist/command/command.d.ts +1 -1
- package/dist/{command-DckndCUK.d.ts → command-B9C8p3_S.d.ts} +3 -3
- package/dist/{command-DckndCUK.d.ts.map → command-B9C8p3_S.d.ts.map} +1 -1
- package/dist/composite/composite-container.d.ts +1 -1
- package/dist/composite/composite-container.d.ts.map +1 -1
- package/dist/composite/composite-container.js +2 -2
- package/dist/composite/composite-container.js.map +1 -1
- package/dist/composite/composite-group-label.d.ts +2 -2
- package/dist/composite/composite-group-label.d.ts.map +1 -1
- package/dist/composite/composite-group.d.ts +2 -2
- package/dist/composite/composite-group.d.ts.map +1 -1
- package/dist/composite/composite-hover.d.ts +1 -1
- package/dist/composite/composite-hover.js +9 -13
- package/dist/composite/composite-hover.js.map +1 -1
- package/dist/composite/composite-input.d.ts +1 -1
- package/dist/composite/composite-input.d.ts.map +1 -1
- package/dist/composite/composite-input.js +1 -1
- package/dist/composite/composite-input.js.map +1 -1
- package/dist/composite/composite-item-offscreen.d.ts +2 -2
- package/dist/composite/composite-item-offscreen.js +2 -2
- package/dist/composite/composite-item-offscreen.js.map +1 -1
- package/dist/composite/composite-item.d.ts +1 -1
- package/dist/composite/composite-item.js +2 -2
- package/dist/composite/composite-item.js.map +1 -1
- package/dist/composite/composite-overflow-disclosure.d.ts +2 -2
- package/dist/composite/composite-overflow-disclosure.d.ts.map +1 -1
- package/dist/composite/composite-overflow.d.ts +2 -2
- package/dist/composite/composite-overflow.d.ts.map +1 -1
- package/dist/composite/composite-renderer.d.ts +28 -14
- package/dist/composite/composite-renderer.d.ts.map +1 -1
- package/dist/composite/composite-renderer.js +2 -2
- package/dist/composite/composite-renderer.js.map +1 -1
- package/dist/composite/composite-row.d.ts +1 -1
- package/dist/composite/composite-row.d.ts.map +1 -1
- package/dist/composite/composite-row.js +3 -3
- package/dist/composite/composite-row.js.map +1 -1
- package/dist/composite/composite-separator.d.ts +2 -2
- package/dist/composite/composite-separator.d.ts.map +1 -1
- package/dist/composite/composite-separator.js +3 -3
- package/dist/composite/composite-separator.js.map +1 -1
- package/dist/composite/composite-typeahead.d.ts +1 -1
- package/dist/composite/composite-typeahead.js +3 -3
- package/dist/composite/composite-typeahead.js.map +1 -1
- package/dist/composite/composite.d.ts +1 -1
- package/dist/composite/composite.js +3 -3
- package/dist/composite/composite.js.map +1 -1
- package/dist/{composite-DLvyFHMq.d.ts → composite-KBhCGLEy.d.ts} +3 -3
- package/dist/{composite-DLvyFHMq.d.ts.map → composite-KBhCGLEy.d.ts.map} +1 -1
- package/dist/{composite-hover-C7ul163w.d.ts → composite-hover-BpXq3T8J.d.ts} +2 -2
- package/dist/{composite-hover-C7ul163w.d.ts.map → composite-hover-BpXq3T8J.d.ts.map} +1 -1
- package/dist/{composite-item-B4WTelVz.d.ts → composite-item-d4UXaZ84.d.ts} +4 -4
- package/dist/{composite-item-B4WTelVz.d.ts.map → composite-item-d4UXaZ84.d.ts.map} +1 -1
- package/dist/{composite-typeahead-DDhpyKqm.d.ts → composite-typeahead-0euW43GU.d.ts} +2 -2
- package/dist/{composite-typeahead-DDhpyKqm.d.ts.map → composite-typeahead-0euW43GU.d.ts.map} +1 -1
- package/dist/dialog/dialog-backdrop.d.ts +1 -1
- package/dist/dialog/dialog-description.d.ts +1 -1
- package/dist/dialog/dialog-disclosure.d.ts +1 -1
- package/dist/dialog/dialog-disclosure.js +1 -1
- package/dist/dialog/dialog-disclosure.js.map +1 -1
- package/dist/dialog/dialog-dismiss.d.ts +1 -1
- package/dist/dialog/dialog-heading.d.ts +1 -1
- package/dist/dialog/dialog.d.ts +1 -1
- package/dist/dialog/dialog.js +18 -6
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts +1 -3
- package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts.map +1 -1
- package/dist/dialog/utils/disable-accessibility-tree-outside.js +1 -15
- package/dist/dialog/utils/disable-accessibility-tree-outside.js.map +1 -1
- package/dist/dialog/utils/use-hide-on-interact-outside.d.ts +1 -1
- package/dist/dialog/utils/use-hide-on-interact-outside.js +2 -2
- package/dist/dialog/utils/use-hide-on-interact-outside.js.map +1 -1
- package/dist/dialog/utils/use-prevent-body-scroll.js +2 -1
- package/dist/dialog/utils/use-prevent-body-scroll.js.map +1 -1
- package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts +1 -1
- package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts.map +1 -1
- package/dist/{dialog-C__C-zX2.d.ts → dialog-D23r2ZWj.d.ts} +4 -4
- package/dist/{dialog-C__C-zX2.d.ts.map → dialog-D23r2ZWj.d.ts.map} +1 -1
- package/dist/{dialog-description-BCZJ1Kyd.d.ts → dialog-description-CJGxnEvk.d.ts} +2 -2
- package/dist/{dialog-description-BCZJ1Kyd.d.ts.map → dialog-description-CJGxnEvk.d.ts.map} +1 -1
- package/dist/{dialog-disclosure-DLD10zlb.d.ts → dialog-disclosure-DSESk5pv.d.ts} +3 -3
- package/dist/{dialog-disclosure-DLD10zlb.d.ts.map → dialog-disclosure-DSESk5pv.d.ts.map} +1 -1
- package/dist/{dialog-dismiss-CnwEbzc6.d.ts → dialog-dismiss-DW3XQYvp.d.ts} +3 -3
- package/dist/{dialog-dismiss-CnwEbzc6.d.ts.map → dialog-dismiss-DW3XQYvp.d.ts.map} +1 -1
- package/dist/{dialog-heading-DQvnOfZH.d.ts → dialog-heading-DGA5d8VH.d.ts} +3 -3
- package/dist/{dialog-heading-DQvnOfZH.d.ts.map → dialog-heading-DGA5d8VH.d.ts.map} +1 -1
- package/dist/disclosure/disclosure-content.js +1 -1
- package/dist/disclosure/disclosure-content.js.map +1 -1
- package/dist/disclosure/disclosure.d.ts +1 -1
- package/dist/disclosure/disclosure.js +1 -1
- package/dist/disclosure/disclosure.js.map +1 -1
- package/dist/{disclosure-CQ37hPVP.d.ts → disclosure-C4F4sCVZ.d.ts} +3 -3
- package/dist/{disclosure-CQ37hPVP.d.ts.map → disclosure-C4F4sCVZ.d.ts.map} +1 -1
- package/dist/focus-trap/focus-trap-region.d.ts +1 -1
- package/dist/focus-trap/focus-trap-region.d.ts.map +1 -1
- package/dist/focus-trap/focus-trap.d.ts +1 -1
- package/dist/focus-trap/focus-trap.d.ts.map +1 -1
- package/dist/focusable/focusable-container.d.ts +1 -1
- package/dist/focusable/focusable-container.d.ts.map +1 -1
- package/dist/focusable/focusable.d.ts +1 -1
- package/dist/focusable/focusable.js +49 -8
- package/dist/focusable/focusable.js.map +1 -1
- package/dist/{focusable-B00tOxtB.d.ts → focusable-dBZH13-T.d.ts} +2 -2
- package/dist/{focusable-B00tOxtB.d.ts.map → focusable-dBZH13-T.d.ts.map} +1 -1
- package/dist/form/form-checkbox.d.ts +1 -1
- package/dist/form/form-checkbox.d.ts.map +1 -1
- package/dist/form/form-checkbox.js +1 -1
- package/dist/form/form-checkbox.js.map +1 -1
- package/dist/form/form-control.d.ts +2 -2
- package/dist/form/form-control.d.ts.map +1 -1
- package/dist/form/form-control.js +1 -1
- package/dist/form/form-control.js.map +1 -1
- package/dist/form/form-description.d.ts +2 -2
- package/dist/form/form-description.d.ts.map +1 -1
- package/dist/form/form-description.js +1 -1
- package/dist/form/form-description.js.map +1 -1
- package/dist/form/form-error.d.ts +2 -2
- package/dist/form/form-error.d.ts.map +1 -1
- package/dist/form/form-error.js +1 -1
- package/dist/form/form-error.js.map +1 -1
- package/dist/form/form-field.d.ts +1 -1
- package/dist/form/form-field.d.ts.map +1 -1
- package/dist/form/form-group-label.d.ts +2 -2
- package/dist/form/form-group-label.d.ts.map +1 -1
- package/dist/form/form-group.d.ts +2 -2
- package/dist/form/form-group.d.ts.map +1 -1
- package/dist/form/form-input.d.ts +2 -2
- package/dist/form/form-input.d.ts.map +1 -1
- package/dist/form/form-input.js +1 -1
- package/dist/form/form-input.js.map +1 -1
- package/dist/form/form-label.d.ts +2 -2
- package/dist/form/form-label.d.ts.map +1 -1
- package/dist/form/form-label.js +1 -1
- package/dist/form/form-label.js.map +1 -1
- package/dist/form/form-push.d.ts +3 -3
- package/dist/form/form-push.d.ts.map +1 -1
- package/dist/form/form-push.js +1 -1
- package/dist/form/form-push.js.map +1 -1
- package/dist/form/form-radio-group.d.ts +1 -1
- package/dist/form/form-radio-group.d.ts.map +1 -1
- package/dist/form/form-radio.d.ts +1 -1
- package/dist/form/form-radio.d.ts.map +1 -1
- package/dist/form/form-radio.js +1 -1
- package/dist/form/form-radio.js.map +1 -1
- package/dist/form/form-remove.d.ts +16 -12
- package/dist/form/form-remove.d.ts.map +1 -1
- package/dist/form/form-remove.js +15 -11
- package/dist/form/form-remove.js.map +1 -1
- package/dist/form/form-reset.d.ts +2 -2
- package/dist/form/form-reset.d.ts.map +1 -1
- package/dist/form/form-reset.js +1 -1
- package/dist/form/form-reset.js.map +1 -1
- package/dist/form/form-submit.d.ts +2 -2
- package/dist/form/form-submit.d.ts.map +1 -1
- package/dist/form/form-submit.js +1 -1
- package/dist/form/form-submit.js.map +1 -1
- package/dist/form/form.d.ts +1 -1
- package/dist/form/form.d.ts.map +1 -1
- package/dist/form/form.js +1 -1
- package/dist/form/form.js.map +1 -1
- package/dist/group/group-label.d.ts +1 -1
- package/dist/group/group.d.ts +1 -1
- package/dist/{group-label-C16IDs1b.d.ts → group-label-BKYqD4Sj.d.ts} +2 -2
- package/dist/{group-label-C16IDs1b.d.ts.map → group-label-BKYqD4Sj.d.ts.map} +1 -1
- package/dist/{group-CamegDJA.d.ts → group-nGD9e6Dj.d.ts} +2 -2
- package/dist/{group-CamegDJA.d.ts.map → group-nGD9e6Dj.d.ts.map} +1 -1
- package/dist/heading/heading.d.ts +1 -1
- package/dist/heading/heading.js +2 -2
- package/dist/heading/heading.js.map +1 -1
- package/dist/{heading-zY9g_9K-.d.ts → heading-D_AmeqL5.d.ts} +2 -2
- package/dist/{heading-zY9g_9K-.d.ts.map → heading-D_AmeqL5.d.ts.map} +1 -1
- package/dist/hovercard/hovercard-anchor.d.ts +2 -2
- package/dist/hovercard/hovercard-anchor.d.ts.map +1 -1
- package/dist/hovercard/hovercard-anchor.js +1 -1
- package/dist/hovercard/hovercard-anchor.js.map +1 -1
- package/dist/hovercard/hovercard-arrow.d.ts +1 -1
- package/dist/hovercard/hovercard-arrow.d.ts.map +1 -1
- package/dist/hovercard/hovercard-description.d.ts +2 -2
- package/dist/hovercard/hovercard-description.d.ts.map +1 -1
- package/dist/hovercard/hovercard-disclosure.d.ts +2 -2
- package/dist/hovercard/hovercard-disclosure.d.ts.map +1 -1
- package/dist/hovercard/hovercard-disclosure.js +4 -4
- package/dist/hovercard/hovercard-disclosure.js.map +1 -1
- package/dist/hovercard/hovercard-dismiss.d.ts +2 -2
- package/dist/hovercard/hovercard-dismiss.d.ts.map +1 -1
- package/dist/hovercard/hovercard-heading.d.ts +2 -2
- package/dist/hovercard/hovercard-heading.d.ts.map +1 -1
- package/dist/hovercard/hovercard.d.ts +1 -1
- package/dist/hovercard/hovercard.js +2 -2
- package/dist/hovercard/hovercard.js.map +1 -1
- package/dist/menu/menu-arrow.d.ts +2 -2
- package/dist/menu/menu-arrow.d.ts.map +1 -1
- package/dist/menu/menu-bar-provider.js +1 -1
- package/dist/menu/menu-bar-provider.js.map +1 -1
- package/dist/menu/menu-bar-store.d.ts +3 -3
- package/dist/menu/menu-bar-store.js +3 -3
- package/dist/menu/menu-bar-store.js.map +1 -1
- package/dist/menu/menu-bar.d.ts +1 -1
- package/dist/menu/menu-bar.d.ts.map +1 -1
- package/dist/menu/menu-bar.js +1 -1
- package/dist/menu/menu-bar.js.map +1 -1
- package/dist/menu/menu-button-arrow.d.ts +2 -2
- package/dist/menu/menu-button-arrow.d.ts.map +1 -1
- package/dist/menu/menu-button.d.ts +3 -3
- package/dist/menu/menu-button.d.ts.map +1 -1
- package/dist/menu/menu-button.js +1 -1
- package/dist/menu/menu-button.js.map +1 -1
- package/dist/menu/menu-context.d.ts +10 -3
- package/dist/menu/menu-context.d.ts.map +1 -1
- package/dist/menu/menu-context.js +8 -1
- package/dist/menu/menu-context.js.map +1 -1
- package/dist/menu/menu-description.d.ts +2 -2
- package/dist/menu/menu-description.d.ts.map +1 -1
- package/dist/menu/menu-dismiss.d.ts +2 -2
- package/dist/menu/menu-dismiss.d.ts.map +1 -1
- package/dist/menu/menu-group-label.d.ts +2 -2
- package/dist/menu/menu-group-label.d.ts.map +1 -1
- package/dist/menu/menu-group.d.ts +2 -2
- package/dist/menu/menu-group.d.ts.map +1 -1
- package/dist/menu/menu-heading.d.ts +2 -2
- package/dist/menu/menu-heading.d.ts.map +1 -1
- package/dist/menu/menu-item-check.d.ts +2 -2
- package/dist/menu/menu-item-check.d.ts.map +1 -1
- package/dist/menu/menu-item-checkbox.d.ts +2 -2
- package/dist/menu/menu-item-checkbox.d.ts.map +1 -1
- package/dist/menu/menu-item-checkbox.js +1 -1
- package/dist/menu/menu-item-checkbox.js.map +1 -1
- package/dist/menu/menu-item-radio.d.ts +2 -2
- package/dist/menu/menu-item-radio.d.ts.map +1 -1
- package/dist/menu/menu-item-radio.js +1 -1
- package/dist/menu/menu-item-radio.js.map +1 -1
- package/dist/menu/menu-item.d.ts +5 -5
- package/dist/menu/menu-item.d.ts.map +1 -1
- package/dist/menu/menu-item.js +8 -4
- package/dist/menu/menu-item.js.map +1 -1
- package/dist/menu/menu-list.d.ts +4 -4
- package/dist/menu/menu-list.d.ts.map +1 -1
- package/dist/menu/menu-list.js +6 -2
- package/dist/menu/menu-list.js.map +1 -1
- package/dist/menu/menu-provider.d.ts +1 -1
- package/dist/menu/menu-separator.d.ts +2 -2
- package/dist/menu/menu-separator.d.ts.map +1 -1
- package/dist/menu/menu-store.d.ts +1 -1
- package/dist/menu/menu.js +1 -1
- package/dist/menu/menu.js.map +1 -1
- package/dist/{menu-store-0CKKmNek.d.ts → menu-store-BpTJdcL8.d.ts} +2 -2
- package/dist/{menu-store-0CKKmNek.d.ts.map → menu-store-BpTJdcL8.d.ts.map} +1 -1
- package/dist/menubar/menubar-context.d.ts +2 -3
- package/dist/menubar/menubar-context.d.ts.map +1 -1
- package/dist/menubar/menubar-context.js +1 -3
- package/dist/menubar/menubar-context.js.map +1 -1
- package/dist/menubar/menubar-provider.d.ts +1 -1
- package/dist/menubar/menubar-store.d.ts +1 -1
- package/dist/menubar/menubar-store.js +2 -2
- package/dist/menubar/menubar-store.js.map +1 -1
- package/dist/menubar/menubar.d.ts +3 -3
- package/dist/menubar/menubar.d.ts.map +1 -1
- package/dist/{menubar-store-3h0eNIbS.d.ts → menubar-store-C553OKBw.d.ts} +3 -3
- package/dist/{menubar-store-3h0eNIbS.d.ts.map → menubar-store-C553OKBw.d.ts.map} +1 -1
- package/dist/popover/popover-anchor.d.ts +1 -1
- package/dist/popover/popover-arrow.d.ts +1 -1
- package/dist/popover/popover-arrow.d.ts.map +1 -1
- package/dist/popover/popover-arrow.js +4 -4
- package/dist/popover/popover-arrow.js.map +1 -1
- package/dist/popover/popover-description.d.ts +1 -1
- package/dist/popover/popover-disclosure-arrow.d.ts +1 -1
- package/dist/popover/popover-disclosure-arrow.d.ts.map +1 -1
- package/dist/popover/popover-disclosure-arrow.js +1 -1
- package/dist/popover/popover-disclosure-arrow.js.map +1 -1
- package/dist/popover/popover-disclosure.d.ts +3 -3
- package/dist/popover/popover-disclosure.d.ts.map +1 -1
- package/dist/popover/popover-disclosure.js +1 -1
- package/dist/popover/popover-disclosure.js.map +1 -1
- package/dist/popover/popover-dismiss.d.ts +1 -1
- package/dist/popover/popover-heading.d.ts +1 -1
- package/dist/popover/popover.d.ts +1 -1
- package/dist/popover/popover.js +2 -2
- package/dist/popover/popover.js.map +1 -1
- package/dist/{popover-CCqiRKqg.d.ts → popover-B9PxE5iP.d.ts} +10 -2
- package/dist/popover-B9PxE5iP.d.ts.map +1 -0
- package/dist/{popover-anchor-PgfeXyzs.d.ts → popover-anchor-W18KUmuM.d.ts} +2 -2
- package/dist/{popover-anchor-PgfeXyzs.d.ts.map → popover-anchor-W18KUmuM.d.ts.map} +1 -1
- package/dist/{popover-description-DU753dah.d.ts → popover-description-DbW4mVBb.d.ts} +3 -3
- package/dist/{popover-description-DU753dah.d.ts.map → popover-description-DbW4mVBb.d.ts.map} +1 -1
- package/dist/{popover-dismiss-DPeI6Zse.d.ts → popover-dismiss-CQFvuLzJ.d.ts} +3 -3
- package/dist/{popover-dismiss-DPeI6Zse.d.ts.map → popover-dismiss-CQFvuLzJ.d.ts.map} +1 -1
- package/dist/{popover-heading-DGsr6D5W.d.ts → popover-heading-DC8rYnwo.d.ts} +3 -3
- package/dist/{popover-heading-DGsr6D5W.d.ts.map → popover-heading-DC8rYnwo.d.ts.map} +1 -1
- package/dist/portal/portal.d.ts +1 -1
- package/dist/{portal-CMBWiayp.d.ts → portal-CKFTfCWH.d.ts} +2 -2
- package/dist/{portal-CMBWiayp.d.ts.map → portal-CKFTfCWH.d.ts.map} +1 -1
- package/dist/radio/radio-group.d.ts +2 -2
- package/dist/radio/radio-group.d.ts.map +1 -1
- package/dist/radio/radio-group.js +1 -1
- package/dist/radio/radio-group.js.map +1 -1
- package/dist/radio/radio.d.ts +2 -2
- package/dist/radio/radio.d.ts.map +1 -1
- package/dist/select/select-arrow.d.ts +1 -1
- package/dist/select/select-arrow.d.ts.map +1 -1
- package/dist/select/select-dismiss.d.ts +2 -2
- package/dist/select/select-dismiss.d.ts.map +1 -1
- package/dist/select/select-group-label.d.ts +1 -1
- package/dist/select/select-group-label.d.ts.map +1 -1
- package/dist/select/select-group.d.ts +1 -1
- package/dist/select/select-group.d.ts.map +1 -1
- package/dist/select/select-heading.d.ts +2 -2
- package/dist/select/select-heading.d.ts.map +1 -1
- package/dist/select/select-item-check.d.ts +1 -1
- package/dist/select/select-item-check.d.ts.map +1 -1
- package/dist/select/select-item.d.ts +3 -3
- package/dist/select/select-item.d.ts.map +1 -1
- package/dist/select/select-item.js +1 -1
- package/dist/select/select-item.js.map +1 -1
- package/dist/select/select-label.d.ts +1 -1
- package/dist/select/select-label.d.ts.map +1 -1
- package/dist/select/select-label.js +1 -1
- package/dist/select/select-label.js.map +1 -1
- package/dist/select/select-list.d.ts +3 -3
- package/dist/select/select-list.d.ts.map +1 -1
- package/dist/select/select-list.js +1 -1
- package/dist/select/select-list.js.map +1 -1
- package/dist/select/select-popover.d.ts +1 -1
- package/dist/select/select-renderer.d.ts +2 -2
- package/dist/select/select-renderer.d.ts.map +1 -1
- package/dist/select/select-row.d.ts +1 -1
- package/dist/select/select-row.d.ts.map +1 -1
- package/dist/select/select-row.js +1 -1
- package/dist/select/select-row.js.map +1 -1
- package/dist/select/select-separator.d.ts +1 -1
- package/dist/select/select-separator.d.ts.map +1 -1
- package/dist/select/select.d.ts +2 -2
- package/dist/select/select.d.ts.map +1 -1
- package/dist/select/select.js +1 -1
- package/dist/select/select.js.map +1 -1
- package/dist/separator/separator.d.ts +1 -1
- package/dist/{separator--ozQfMcK.d.ts → separator-BnvSVwBa.d.ts} +2 -2
- package/dist/{separator--ozQfMcK.d.ts.map → separator-BnvSVwBa.d.ts.map} +1 -1
- package/dist/tab/tab-list.d.ts +2 -2
- package/dist/tab/tab-list.d.ts.map +1 -1
- package/dist/tab/tab-list.js +1 -1
- package/dist/tab/tab-list.js.map +1 -1
- package/dist/tab/tab-panel.d.ts +3 -3
- package/dist/tab/tab-panel.d.ts.map +1 -1
- package/dist/tab/tab-panel.js +2 -3
- package/dist/tab/tab-panel.js.map +1 -1
- package/dist/tab/tab.d.ts +2 -2
- package/dist/tab/tab.d.ts.map +1 -1
- package/dist/tab/tab.js +1 -1
- package/dist/tab/tab.js.map +1 -1
- package/dist/tag/tag-input.d.ts +2 -2
- package/dist/tag/tag-input.d.ts.map +1 -1
- package/dist/tag/tag-input.js +1 -2
- package/dist/tag/tag-input.js.map +1 -1
- package/dist/tag/tag-list-label.d.ts +2 -2
- package/dist/tag/tag-list-label.d.ts.map +1 -1
- package/dist/tag/tag-list-label.js +1 -1
- package/dist/tag/tag-list-label.js.map +1 -1
- package/dist/tag/tag-list.d.ts +2 -2
- package/dist/tag/tag-list.d.ts.map +1 -1
- package/dist/tag/tag-list.js +1 -1
- package/dist/tag/tag-list.js.map +1 -1
- package/dist/tag/tag-remove.d.ts +1 -1
- package/dist/tag/tag-remove.d.ts.map +1 -1
- package/dist/tag/tag-remove.js +1 -2
- package/dist/tag/tag-remove.js.map +1 -1
- package/dist/tag/tag-value.js +1 -1
- package/dist/tag/tag-value.js.map +1 -1
- package/dist/tag/tag-values.js +1 -1
- package/dist/tag/tag-values.js.map +1 -1
- package/dist/tag/tag.d.ts +2 -2
- package/dist/tag/tag.d.ts.map +1 -1
- package/dist/tag/tag.js +1 -1
- package/dist/tag/tag.js.map +1 -1
- package/dist/toolbar/toolbar-container.d.ts +1 -1
- package/dist/toolbar/toolbar-container.d.ts.map +1 -1
- package/dist/toolbar/toolbar-input.d.ts +1 -1
- package/dist/toolbar/toolbar-input.d.ts.map +1 -1
- package/dist/toolbar/toolbar-item.d.ts +2 -2
- package/dist/toolbar/toolbar-item.d.ts.map +1 -1
- package/dist/toolbar/toolbar-separator.d.ts +1 -1
- package/dist/toolbar/toolbar-separator.d.ts.map +1 -1
- package/dist/toolbar/toolbar.d.ts +2 -2
- package/dist/toolbar/toolbar.d.ts.map +1 -1
- package/dist/tooltip/tooltip-anchor.d.ts +1 -1
- package/dist/tooltip/tooltip-anchor.d.ts.map +1 -1
- package/dist/tooltip/tooltip-anchor.js +15 -4
- package/dist/tooltip/tooltip-anchor.js.map +1 -1
- package/dist/tooltip/tooltip-arrow.d.ts +1 -1
- package/dist/tooltip/tooltip-arrow.d.ts.map +1 -1
- package/dist/tooltip/tooltip-arrow.js +1 -1
- package/dist/tooltip/tooltip-arrow.js.map +1 -1
- package/dist/tooltip/tooltip.js +1 -1
- package/dist/tooltip/tooltip.js.map +1 -1
- package/dist/visually-hidden/visually-hidden.d.ts +1 -1
- package/dist/visually-hidden/visually-hidden.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/collection/collection-item-offscreen.tsx +1 -1
- package/src/combobox/combobox.tsx +47 -1
- package/src/composite/composite-container.tsx +2 -2
- package/src/composite/composite-hover.tsx +8 -14
- package/src/composite/composite-item-offscreen.tsx +2 -2
- package/src/composite/composite-item.tsx +2 -2
- package/src/composite/composite-renderer.tsx +2 -2
- package/src/composite/composite-row.tsx +2 -2
- package/src/composite/composite-separator.tsx +2 -2
- package/src/composite/composite-typeahead.tsx +2 -2
- package/src/composite/composite.tsx +3 -3
- package/src/dialog/dialog.tsx +33 -10
- package/src/dialog/utils/disable-accessibility-tree-outside.ts +0 -25
- package/src/dialog/utils/use-hide-on-interact-outside.ts +3 -2
- package/src/focusable/focusable.tsx +53 -10
- package/src/form/form-remove.tsx +14 -10
- package/src/form/form.tsx +3 -1
- package/src/heading/heading.tsx +2 -5
- package/src/hovercard/hovercard-disclosure.tsx +18 -4
- package/src/hovercard/hovercard.tsx +1 -1
- package/src/menu/menu-bar-store.ts +2 -2
- package/src/menu/menu-context.tsx +8 -0
- package/src/menu/menu-item.tsx +18 -1
- package/src/menu/menu-list.tsx +15 -0
- package/src/menubar/menubar-context.tsx +0 -5
- package/src/menubar/menubar-store.ts +2 -2
- package/src/popover/popover-arrow.tsx +3 -3
- package/src/popover/popover.tsx +8 -0
- package/src/tab/tab-panel.tsx +1 -1
- package/src/tag/tag-input.tsx +0 -1
- package/src/tag/tag-remove.tsx +0 -1
- package/src/tooltip/tooltip-anchor.tsx +23 -8
- package/dist/collection-renderer-DsPD9ksD.d.ts.map +0 -1
- package/dist/popover-CCqiRKqg.d.ts.map +0 -1
- package/src/hovercard/utils/__tests__/polygon-test.ts +0 -66
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
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
|
+
|
|
3
54
|
## 0.1.1
|
|
4
55
|
|
|
5
56
|
- Release artifacts now include npm trusted publishing provenance.
|
package/dist/button/button.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as useButton, n as ButtonOptions, r as ButtonProps, t as Button } from "../button-
|
|
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-
|
|
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<
|
|
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-
|
|
34
|
+
//# sourceMappingURL=button-CVWcOgxs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-
|
|
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<
|
|
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;;;;;;;;;
|
|
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-
|
|
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<
|
|
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
|
|
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-
|
|
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,
|
|
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-
|
|
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-
|
|
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<
|
|
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;;;;;;;;
|
|
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"}
|
package/dist/{collection-item-offscreen-DyXa-sqj.d.ts → collection-item-offscreen-B5E5vNFi.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as CollectionItemOptions$1 } from "./collection-item-
|
|
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-
|
|
30
|
+
//# sourceMappingURL=collection-item-offscreen-B5E5vNFi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-item-offscreen-
|
|
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<
|
|
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-
|
|
84
|
+
//# sourceMappingURL=collection-item-pvEWNoNs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-item-
|
|
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
|
|
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?:
|
|
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").
|
|
198
|
-
onChangeCapture?: import("react").
|
|
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").
|
|
201
|
-
onInput?: import("react").
|
|
202
|
-
onInputCapture?: import("react").
|
|
203
|
-
onReset?: import("react").
|
|
204
|
-
onResetCapture?: import("react").
|
|
205
|
-
onSubmit?: import("react").
|
|
206
|
-
onSubmitCapture?: import("react").
|
|
207
|
-
onInvalid?: import("react").
|
|
208
|
-
onInvalidCapture?: import("react").
|
|
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<
|
|
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-
|
|
483
|
+
//# sourceMappingURL=collection-renderer-BhzF21Du.d.ts.map
|