@ifhover/leaf-ui 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/autocomplete/autocomplete.cjs +7 -3
- package/dist/cjs/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/autocomplete/autocomplete.d.cts +2 -0
- package/dist/cjs/autocomplete/autocomplete.d.cts.map +1 -1
- package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs +7 -3
- package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/browser/modules/button/button.cjs.map +1 -1
- package/dist/cjs/browser/modules/cascader/cascader.cjs +9 -2
- package/dist/cjs/browser/modules/cascader/cascader.cjs.map +1 -1
- package/dist/cjs/browser/modules/colors.cjs +73 -7
- package/dist/cjs/browser/modules/colors.cjs.map +1 -1
- package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs +10 -3
- package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs.map +1 -1
- package/dist/cjs/browser/modules/config-provider/component-defaults.cjs.map +1 -1
- package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs +18 -2
- package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs.map +1 -1
- package/dist/cjs/browser/modules/drawer/drawer.cjs +7 -1
- package/dist/cjs/browser/modules/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/browser/modules/dropdown/dropdown.cjs +25 -4
- package/dist/cjs/browser/modules/dropdown/dropdown.cjs.map +1 -1
- package/dist/cjs/browser/modules/form/form.cjs +38 -21
- package/dist/cjs/browser/modules/form/form.cjs.map +1 -1
- package/dist/cjs/browser/modules/image/viewer.cjs +8 -2
- package/dist/cjs/browser/modules/image/viewer.cjs.map +1 -1
- package/dist/cjs/browser/modules/index.cjs +3 -4
- package/dist/cjs/browser/modules/layout/layout.cjs +4 -1
- package/dist/cjs/browser/modules/layout/layout.cjs.map +1 -1
- package/dist/cjs/browser/modules/mentions/mentions.cjs +4 -2
- package/dist/cjs/browser/modules/mentions/mentions.cjs.map +1 -1
- package/dist/cjs/browser/modules/menu/index.cjs +5 -2
- package/dist/cjs/browser/modules/menu/menu.cjs +60 -18
- package/dist/cjs/browser/modules/menu/menu.cjs.map +1 -1
- package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs +69 -19
- package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs.map +1 -1
- package/dist/cjs/browser/modules/select/select.cjs +3 -3
- package/dist/cjs/browser/modules/select/select.cjs.map +1 -1
- package/dist/cjs/browser/modules/shared/floating.cjs +49 -20
- package/dist/cjs/browser/modules/shared/floating.cjs.map +1 -1
- package/dist/cjs/browser/modules/shared/scoped-portal.cjs +2 -23
- package/dist/cjs/browser/modules/shared/scoped-portal.cjs.map +1 -1
- package/dist/cjs/browser/modules/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
- package/dist/cjs/browser/modules/shared/theme-variables.cjs.map +1 -0
- package/dist/cjs/browser/modules/splitter/splitter.cjs +4 -1
- package/dist/cjs/browser/modules/splitter/splitter.cjs.map +1 -1
- package/dist/cjs/browser/modules/tabs/tabs.cjs +14 -8
- package/dist/cjs/browser/modules/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/browser/modules/tailwind-tokens.cjs +1 -1
- package/dist/cjs/browser/modules/tailwind-tokens.cjs.map +1 -1
- package/dist/cjs/browser/modules/textarea/textarea.cjs +49 -21
- package/dist/cjs/browser/modules/textarea/textarea.cjs.map +1 -1
- package/dist/cjs/browser/modules/theme.cjs +53 -29
- package/dist/cjs/browser/modules/theme.cjs.map +1 -1
- package/dist/cjs/browser/modules/timeline/timeline.cjs +1 -1
- package/dist/cjs/browser/modules/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/browser/modules/timepicker/time-panel.cjs +8 -2
- package/dist/cjs/browser/modules/timepicker/time-panel.cjs.map +1 -1
- package/dist/cjs/browser/modules/transfer/transfer.cjs +5 -5
- package/dist/cjs/browser/modules/transfer/transfer.cjs.map +1 -1
- package/dist/cjs/browser/modules/tree/tree.cjs +13 -6
- package/dist/cjs/browser/modules/tree/tree.cjs.map +1 -1
- package/dist/cjs/browser/modules/treeselect/treeselect.cjs +5 -4
- package/dist/cjs/browser/modules/treeselect/treeselect.cjs.map +1 -1
- package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs +9 -3
- package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs.map +1 -1
- package/dist/cjs/button/button.cjs.map +1 -1
- package/dist/cjs/button/button.d.cts +7 -2
- package/dist/cjs/button/button.d.cts.map +1 -1
- package/dist/cjs/cascader/cascader.cjs +9 -2
- package/dist/cjs/cascader/cascader.cjs.map +1 -1
- package/dist/cjs/cascader/cascader.d.cts +2 -0
- package/dist/cjs/cascader/cascader.d.cts.map +1 -1
- package/dist/cjs/colors.cjs +73 -7
- package/dist/cjs/colors.cjs.map +1 -1
- package/dist/cjs/colors.d.cts +3 -1
- package/dist/cjs/colors.d.cts.map +1 -1
- package/dist/cjs/commandpalette/commandpalette.cjs +10 -3
- package/dist/cjs/commandpalette/commandpalette.cjs.map +1 -1
- package/dist/cjs/commandpalette/commandpalette.d.cts.map +1 -1
- package/dist/cjs/config-provider/component-defaults.cjs.map +1 -1
- package/dist/cjs/config-provider/component-defaults.d.cts +3 -4
- package/dist/cjs/config-provider/component-defaults.d.cts.map +1 -1
- package/dist/cjs/config-provider/index.d.cts +1 -1
- package/dist/cjs/config-provider/index.d.cts.map +1 -1
- package/dist/cjs/config-provider/use-color-variables.cjs +18 -2
- package/dist/cjs/config-provider/use-color-variables.cjs.map +1 -1
- package/dist/cjs/config-provider/use-color-variables.d.cts.map +1 -1
- package/dist/cjs/drawer/drawer.cjs +7 -1
- package/dist/cjs/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/drawer/drawer.d.cts.map +1 -1
- package/dist/cjs/dropdown/dropdown.cjs +25 -4
- package/dist/cjs/dropdown/dropdown.cjs.map +1 -1
- package/dist/cjs/dropdown/dropdown.d.cts +9 -1
- package/dist/cjs/dropdown/dropdown.d.cts.map +1 -1
- package/dist/cjs/form/form.cjs +38 -21
- package/dist/cjs/form/form.cjs.map +1 -1
- package/dist/cjs/form/form.d.cts +3 -1
- package/dist/cjs/form/form.d.cts.map +1 -1
- package/dist/cjs/image/viewer.cjs +8 -2
- package/dist/cjs/image/viewer.cjs.map +1 -1
- package/dist/cjs/image/viewer.d.cts.map +1 -1
- package/dist/cjs/index.cjs +3 -4
- package/dist/cjs/index.d.cts +3 -5
- package/dist/cjs/index.d.cts.map +1 -1
- package/dist/cjs/layout/layout.cjs +4 -1
- package/dist/cjs/layout/layout.cjs.map +1 -1
- package/dist/cjs/layout/layout.d.cts.map +1 -1
- package/dist/cjs/mentions/mentions.cjs +4 -2
- package/dist/cjs/mentions/mentions.cjs.map +1 -1
- package/dist/cjs/mentions/mentions.d.cts +2 -0
- package/dist/cjs/mentions/mentions.d.cts.map +1 -1
- package/dist/cjs/menu/index.cjs +5 -2
- package/dist/cjs/menu/index.d.cts +2 -2
- package/dist/cjs/menu/index.d.cts.map +1 -1
- package/dist/cjs/menu/menu.cjs +60 -18
- package/dist/cjs/menu/menu.cjs.map +1 -1
- package/dist/cjs/menu/menu.d.cts +4 -0
- package/dist/cjs/menu/menu.d.cts.map +1 -1
- package/dist/cjs/scrollbar/scrollbar.cjs +69 -19
- package/dist/cjs/scrollbar/scrollbar.cjs.map +1 -1
- package/dist/cjs/scrollbar/scrollbar.d.cts +12 -2
- package/dist/cjs/scrollbar/scrollbar.d.cts.map +1 -1
- package/dist/cjs/select/select.cjs +3 -3
- package/dist/cjs/select/select.cjs.map +1 -1
- package/dist/cjs/shared/floating.cjs +49 -20
- package/dist/cjs/shared/floating.cjs.map +1 -1
- package/dist/cjs/shared/floating.d.cts +3 -1
- package/dist/cjs/shared/floating.d.cts.map +1 -1
- package/dist/cjs/shared/scoped-portal.cjs +2 -23
- package/dist/cjs/shared/scoped-portal.cjs.map +1 -1
- package/dist/cjs/shared/scoped-portal.d.cts.map +1 -1
- package/dist/cjs/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
- package/dist/cjs/shared/theme-variables.cjs.map +1 -0
- package/dist/cjs/shared/theme-variables.d.cts +4 -0
- package/dist/cjs/shared/theme-variables.d.cts.map +1 -0
- package/dist/cjs/splitter/splitter.cjs +4 -1
- package/dist/cjs/splitter/splitter.cjs.map +1 -1
- package/dist/cjs/splitter/splitter.d.cts.map +1 -1
- package/dist/cjs/styles/alert.css +1 -1
- package/dist/cjs/styles/anchor.css +1 -1
- package/dist/cjs/styles/appbar.css +1 -1
- package/dist/cjs/styles/autocomplete.css +1 -1
- package/dist/cjs/styles/avatar.css +1 -1
- package/dist/cjs/styles/backtop.css +1 -1
- package/dist/cjs/styles/badge.css +1 -1
- package/dist/cjs/styles/breadcrumb.css +1 -1
- package/dist/cjs/styles/button.css +1 -1
- package/dist/cjs/styles/calendar.css +1 -1
- package/dist/cjs/styles/card.css +1 -1
- package/dist/cjs/styles/carousel.css +1 -1
- package/dist/cjs/styles/cascader.css +1 -1
- package/dist/cjs/styles/checkbox.css +1 -1
- package/dist/cjs/styles/collapse.css +1 -1
- package/dist/cjs/styles/colorpicker.css +1 -1
- package/dist/cjs/styles/commandpalette.css +1 -1
- package/dist/cjs/styles/components/alert.css +1 -1
- package/dist/cjs/styles/components/anchor.css +1 -1
- package/dist/cjs/styles/components/appbar.css +1 -1
- package/dist/cjs/styles/components/autocomplete.css +1 -1
- package/dist/cjs/styles/components/avatar.css +1 -1
- package/dist/cjs/styles/components/breadcrumb.css +1 -1
- package/dist/cjs/styles/components/button.css +1 -1
- package/dist/cjs/styles/components/calendar.css +1 -1
- package/dist/cjs/styles/components/card.css +1 -1
- package/dist/cjs/styles/components/carousel.css +1 -1
- package/dist/cjs/styles/components/cascader.css +1 -1
- package/dist/cjs/styles/components/checkbox.css +1 -1
- package/dist/cjs/styles/components/collapse.css +1 -1
- package/dist/cjs/styles/components/colorpicker.css +1 -1
- package/dist/cjs/styles/components/commandpalette.css +1 -1
- package/dist/cjs/styles/components/datepicker.css +1 -1
- package/dist/cjs/styles/components/descriptions.css +1 -1
- package/dist/cjs/styles/components/drawer.css +1 -1
- package/dist/cjs/styles/components/dropdown.css +1 -1
- package/dist/cjs/styles/components/errorboundary.css +1 -1
- package/dist/cjs/styles/components/filelist.css +1 -1
- package/dist/cjs/styles/components/form.css +1 -1
- package/dist/cjs/styles/components/image.css +1 -1
- package/dist/cjs/styles/components/input.css +1 -1
- package/dist/cjs/styles/components/inputnumber.css +1 -1
- package/dist/cjs/styles/components/inputotp.css +1 -1
- package/dist/cjs/styles/components/layout.css +1 -1
- package/dist/cjs/styles/components/loading.css +1 -1
- package/dist/cjs/styles/components/loadingbar.css +1 -1
- package/dist/cjs/styles/components/mentions.css +1 -1
- package/dist/cjs/styles/components/menu.css +1 -1
- package/dist/cjs/styles/components/message.css +1 -1
- package/dist/cjs/styles/components/modal.css +1 -1
- package/dist/cjs/styles/components/notification.css +1 -1
- package/dist/cjs/styles/components/pagination.css +1 -1
- package/dist/cjs/styles/components/popover.css +1 -1
- package/dist/cjs/styles/components/progress.css +1 -1
- package/dist/cjs/styles/components/radio.css +1 -1
- package/dist/cjs/styles/components/rate.css +1 -1
- package/dist/cjs/styles/components/scrollarea.css +1 -1
- package/dist/cjs/styles/components/scrollbar.css +1 -1
- package/dist/cjs/styles/components/select.css +1 -1
- package/dist/cjs/styles/components/shared-calendar.css +1 -1
- package/dist/cjs/styles/components/slider.css +1 -1
- package/dist/cjs/styles/components/splitter.css +1 -1
- package/dist/cjs/styles/components/steps.css +1 -1
- package/dist/cjs/styles/components/switch.css +1 -1
- package/dist/cjs/styles/components/table.css +1 -1
- package/dist/cjs/styles/components/tabletanstack.css +1 -1
- package/dist/cjs/styles/components/tabs.css +1 -1
- package/dist/cjs/styles/components/tag.css +1 -1
- package/dist/cjs/styles/components/textarea.css +1 -1
- package/dist/cjs/styles/components/timepicker.css +1 -1
- package/dist/cjs/styles/components/tooltip.css +1 -1
- package/dist/cjs/styles/components/tour.css +1 -1
- package/dist/cjs/styles/components/transfer.css +1 -1
- package/dist/cjs/styles/components/tree.css +1 -1
- package/dist/cjs/styles/components/treeselect.css +1 -1
- package/dist/cjs/styles/components/typography.css +1 -1
- package/dist/cjs/styles/components/upload.css +1 -1
- package/dist/cjs/styles/components/virtuallist.css +1 -1
- package/dist/cjs/styles/config-provider.css +1 -1
- package/dist/cjs/styles/confirm.css +1 -1
- package/dist/cjs/styles/datepicker.css +1 -1
- package/dist/cjs/styles/daterangepicker.css +1 -1
- package/dist/cjs/styles/datetimepicker.css +1 -1
- package/dist/cjs/styles/descriptions.css +1 -1
- package/dist/cjs/styles/divider.css +1 -1
- package/dist/cjs/styles/drawer.css +1 -1
- package/dist/cjs/styles/dropdown.css +1 -1
- package/dist/cjs/styles/empty.css +1 -1
- package/dist/cjs/styles/errorboundary.css +1 -1
- package/dist/cjs/styles/filelist.css +1 -1
- package/dist/cjs/styles/flex.css +1 -1
- package/dist/cjs/styles/floatbutton.css +1 -1
- package/dist/cjs/styles/form.css +1 -1
- package/dist/cjs/styles/foundation.css +1 -1
- package/dist/cjs/styles/grid.css +1 -1
- package/dist/cjs/styles/image.css +1 -1
- package/dist/cjs/styles/index.css +1380 -716
- package/dist/cjs/styles/index.css.map +1 -1
- package/dist/cjs/styles/infinitescroll.css +1 -1
- package/dist/cjs/styles/input.css +1 -1
- package/dist/cjs/styles/inputmask.css +1 -1
- package/dist/cjs/styles/inputnumber.css +1 -1
- package/dist/cjs/styles/inputotp.css +1 -1
- package/dist/cjs/styles/layout.css +1 -1
- package/dist/cjs/styles/loading.css +1 -1
- package/dist/cjs/styles/loadingbar.css +1 -1
- package/dist/cjs/styles/masonry.css +1 -1
- package/dist/cjs/styles/mentions.css +1 -1
- package/dist/cjs/styles/menu.css +1 -1
- package/dist/cjs/styles/message.css +1 -1
- package/dist/cjs/styles/modal.css +1 -1
- package/dist/cjs/styles/notification.css +1 -1
- package/dist/cjs/styles/pagination.css +1 -1
- package/dist/cjs/styles/popconfirm.css +1 -1
- package/dist/cjs/styles/popover.css +1 -1
- package/dist/cjs/styles/progress.css +1 -1
- package/dist/cjs/styles/qrcode.css +1 -1
- package/dist/cjs/styles/radio.css +1 -1
- package/dist/cjs/styles/rate.css +1 -1
- package/dist/cjs/styles/result.css +1 -1
- package/dist/cjs/styles/scrollarea.css +1 -1
- package/dist/cjs/styles/scrollbar.css +1 -1
- package/dist/cjs/styles/select.css +1 -1
- package/dist/cjs/styles/skeleton.css +1 -1
- package/dist/cjs/styles/slider.css +1 -1
- package/dist/cjs/styles/space.css +1 -1
- package/dist/cjs/styles/splitter.css +1 -1
- package/dist/cjs/styles/statistic.css +1 -1
- package/dist/cjs/styles/steps.css +1 -1
- package/dist/cjs/styles/switch.css +1 -1
- package/dist/cjs/styles/table.css +1 -1
- package/dist/cjs/styles/tabletanstack.css +1 -1
- package/dist/cjs/styles/tabs.css +1 -1
- package/dist/cjs/styles/tag.css +1 -1
- package/dist/cjs/styles/textarea.css +1 -1
- package/dist/cjs/styles/timeline.css +1 -1
- package/dist/cjs/styles/timepicker.css +1 -1
- package/dist/cjs/styles/timerangepicker.css +1 -1
- package/dist/cjs/styles/tooltip.css +1 -1
- package/dist/cjs/styles/tour.css +1 -1
- package/dist/cjs/styles/transfer.css +1 -1
- package/dist/cjs/styles/tree.css +1 -1
- package/dist/cjs/styles/treeselect.css +1 -1
- package/dist/cjs/styles/typography.css +1 -1
- package/dist/cjs/styles/upload.css +1 -1
- package/dist/cjs/styles/virtuallist.css +1 -1
- package/dist/cjs/tabs/tabs.cjs +14 -8
- package/dist/cjs/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/tabs/tabs.d.cts +4 -2
- package/dist/cjs/tabs/tabs.d.cts.map +1 -1
- package/dist/cjs/tailwind-tokens.cjs +1 -1
- package/dist/cjs/tailwind-tokens.cjs.map +1 -1
- package/dist/cjs/tailwind-tokens.d.cts.map +1 -1
- package/dist/cjs/textarea/textarea.cjs +49 -21
- package/dist/cjs/textarea/textarea.cjs.map +1 -1
- package/dist/cjs/textarea/textarea.d.cts.map +1 -1
- package/dist/cjs/theme.cjs +53 -29
- package/dist/cjs/theme.cjs.map +1 -1
- package/dist/cjs/theme.d.cts +15 -0
- package/dist/cjs/theme.d.cts.map +1 -1
- package/dist/cjs/timeline/timeline.cjs +1 -1
- package/dist/cjs/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/timeline/timeline.d.cts.map +1 -1
- package/dist/cjs/timepicker/time-panel.cjs +8 -2
- package/dist/cjs/timepicker/time-panel.cjs.map +1 -1
- package/dist/cjs/timepicker/time-panel.d.cts.map +1 -1
- package/dist/cjs/transfer/transfer.cjs +5 -5
- package/dist/cjs/transfer/transfer.cjs.map +1 -1
- package/dist/cjs/transfer/transfer.d.cts.map +1 -1
- package/dist/cjs/tree/tree.cjs +13 -6
- package/dist/cjs/tree/tree.cjs.map +1 -1
- package/dist/cjs/tree/tree.d.cts.map +1 -1
- package/dist/cjs/treeselect/treeselect.cjs +5 -4
- package/dist/cjs/treeselect/treeselect.cjs.map +1 -1
- package/dist/cjs/treeselect/treeselect.d.cts.map +1 -1
- package/dist/cjs/virtuallist/virtuallist.cjs +9 -3
- package/dist/cjs/virtuallist/virtuallist.cjs.map +1 -1
- package/dist/cjs/virtuallist/virtuallist.d.cts.map +1 -1
- package/dist/esm/autocomplete/autocomplete.d.ts +2 -0
- package/dist/esm/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/esm/autocomplete/autocomplete.js +7 -3
- package/dist/esm/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/browser/modules/autocomplete/autocomplete.js +7 -3
- package/dist/esm/browser/modules/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/browser/modules/button/button.js.map +1 -1
- package/dist/esm/browser/modules/cascader/cascader.js +9 -2
- package/dist/esm/browser/modules/cascader/cascader.js.map +1 -1
- package/dist/esm/browser/modules/colors.js +69 -6
- package/dist/esm/browser/modules/colors.js.map +1 -1
- package/dist/esm/browser/modules/commandpalette/commandpalette.js +10 -3
- package/dist/esm/browser/modules/commandpalette/commandpalette.js.map +1 -1
- package/dist/esm/browser/modules/config-provider/component-defaults.js.map +1 -1
- package/dist/esm/browser/modules/config-provider/use-color-variables.js +18 -2
- package/dist/esm/browser/modules/config-provider/use-color-variables.js.map +1 -1
- package/dist/esm/browser/modules/drawer/drawer.js +7 -1
- package/dist/esm/browser/modules/drawer/drawer.js.map +1 -1
- package/dist/esm/browser/modules/dropdown/dropdown.js +25 -4
- package/dist/esm/browser/modules/dropdown/dropdown.js.map +1 -1
- package/dist/esm/browser/modules/form/form.js +38 -21
- package/dist/esm/browser/modules/form/form.js.map +1 -1
- package/dist/esm/browser/modules/image/viewer.js +8 -2
- package/dist/esm/browser/modules/image/viewer.js.map +1 -1
- package/dist/esm/browser/modules/index.js +1 -2
- package/dist/esm/browser/modules/layout/layout.js +4 -1
- package/dist/esm/browser/modules/layout/layout.js.map +1 -1
- package/dist/esm/browser/modules/mentions/mentions.js +4 -2
- package/dist/esm/browser/modules/mentions/mentions.js.map +1 -1
- package/dist/esm/browser/modules/menu/index.js +1 -1
- package/dist/esm/browser/modules/menu/menu.js +57 -18
- package/dist/esm/browser/modules/menu/menu.js.map +1 -1
- package/dist/esm/browser/modules/scrollbar/scrollbar.js +69 -19
- package/dist/esm/browser/modules/scrollbar/scrollbar.js.map +1 -1
- package/dist/esm/browser/modules/select/select.js +3 -3
- package/dist/esm/browser/modules/select/select.js.map +1 -1
- package/dist/esm/browser/modules/shared/floating.js +49 -20
- package/dist/esm/browser/modules/shared/floating.js.map +1 -1
- package/dist/esm/browser/modules/shared/scoped-portal.js +2 -23
- package/dist/esm/browser/modules/shared/scoped-portal.js.map +1 -1
- package/dist/esm/browser/modules/shared/theme-variables.js +27 -0
- package/dist/esm/browser/modules/shared/theme-variables.js.map +1 -0
- package/dist/esm/browser/modules/splitter/splitter.js +4 -1
- package/dist/esm/browser/modules/splitter/splitter.js.map +1 -1
- package/dist/esm/browser/modules/tabs/tabs.js +14 -8
- package/dist/esm/browser/modules/tabs/tabs.js.map +1 -1
- package/dist/esm/browser/modules/tailwind-tokens.js +1 -1
- package/dist/esm/browser/modules/tailwind-tokens.js.map +1 -1
- package/dist/esm/browser/modules/textarea/textarea.js +50 -22
- package/dist/esm/browser/modules/textarea/textarea.js.map +1 -1
- package/dist/esm/browser/modules/theme.js +53 -29
- package/dist/esm/browser/modules/theme.js.map +1 -1
- package/dist/esm/browser/modules/timeline/timeline.js +1 -1
- package/dist/esm/browser/modules/timeline/timeline.js.map +1 -1
- package/dist/esm/browser/modules/timepicker/time-panel.js +8 -2
- package/dist/esm/browser/modules/timepicker/time-panel.js.map +1 -1
- package/dist/esm/browser/modules/transfer/transfer.js +5 -5
- package/dist/esm/browser/modules/transfer/transfer.js.map +1 -1
- package/dist/esm/browser/modules/tree/tree.js +13 -6
- package/dist/esm/browser/modules/tree/tree.js.map +1 -1
- package/dist/esm/browser/modules/treeselect/treeselect.js +5 -4
- package/dist/esm/browser/modules/treeselect/treeselect.js.map +1 -1
- package/dist/esm/browser/modules/virtuallist/virtuallist.js +9 -3
- package/dist/esm/browser/modules/virtuallist/virtuallist.js.map +1 -1
- package/dist/esm/button/button.d.ts +7 -2
- package/dist/esm/button/button.d.ts.map +1 -1
- package/dist/esm/button/button.js.map +1 -1
- package/dist/esm/cascader/cascader.d.ts +2 -0
- package/dist/esm/cascader/cascader.d.ts.map +1 -1
- package/dist/esm/cascader/cascader.js +9 -2
- package/dist/esm/cascader/cascader.js.map +1 -1
- package/dist/esm/colors.d.ts +3 -1
- package/dist/esm/colors.d.ts.map +1 -1
- package/dist/esm/colors.js +69 -6
- package/dist/esm/colors.js.map +1 -1
- package/dist/esm/commandpalette/commandpalette.d.ts.map +1 -1
- package/dist/esm/commandpalette/commandpalette.js +10 -3
- package/dist/esm/commandpalette/commandpalette.js.map +1 -1
- package/dist/esm/config-provider/component-defaults.d.ts +3 -4
- package/dist/esm/config-provider/component-defaults.d.ts.map +1 -1
- package/dist/esm/config-provider/component-defaults.js.map +1 -1
- package/dist/esm/config-provider/index.d.ts +1 -1
- package/dist/esm/config-provider/index.d.ts.map +1 -1
- package/dist/esm/config-provider/use-color-variables.d.ts.map +1 -1
- package/dist/esm/config-provider/use-color-variables.js +18 -2
- package/dist/esm/config-provider/use-color-variables.js.map +1 -1
- package/dist/esm/drawer/drawer.d.ts.map +1 -1
- package/dist/esm/drawer/drawer.js +7 -1
- package/dist/esm/drawer/drawer.js.map +1 -1
- package/dist/esm/dropdown/dropdown.d.ts +9 -1
- package/dist/esm/dropdown/dropdown.d.ts.map +1 -1
- package/dist/esm/dropdown/dropdown.js +25 -4
- package/dist/esm/dropdown/dropdown.js.map +1 -1
- package/dist/esm/form/form.d.ts +3 -1
- package/dist/esm/form/form.d.ts.map +1 -1
- package/dist/esm/form/form.js +38 -21
- package/dist/esm/form/form.js.map +1 -1
- package/dist/esm/image/viewer.d.ts.map +1 -1
- package/dist/esm/image/viewer.js +8 -2
- package/dist/esm/image/viewer.js.map +1 -1
- package/dist/esm/index.d.ts +3 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/layout/layout.d.ts.map +1 -1
- package/dist/esm/layout/layout.js +4 -1
- package/dist/esm/layout/layout.js.map +1 -1
- package/dist/esm/mentions/mentions.d.ts +2 -0
- package/dist/esm/mentions/mentions.d.ts.map +1 -1
- package/dist/esm/mentions/mentions.js +4 -2
- package/dist/esm/mentions/mentions.js.map +1 -1
- package/dist/esm/menu/index.d.ts +2 -2
- package/dist/esm/menu/index.d.ts.map +1 -1
- package/dist/esm/menu/index.js +1 -1
- package/dist/esm/menu/menu.d.ts +4 -0
- package/dist/esm/menu/menu.d.ts.map +1 -1
- package/dist/esm/menu/menu.js +57 -18
- package/dist/esm/menu/menu.js.map +1 -1
- package/dist/esm/scrollbar/scrollbar.d.ts +12 -2
- package/dist/esm/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/esm/scrollbar/scrollbar.js +69 -19
- package/dist/esm/scrollbar/scrollbar.js.map +1 -1
- package/dist/esm/select/select.js +3 -3
- package/dist/esm/select/select.js.map +1 -1
- package/dist/esm/shared/floating.d.ts +3 -1
- package/dist/esm/shared/floating.d.ts.map +1 -1
- package/dist/esm/shared/floating.js +49 -20
- package/dist/esm/shared/floating.js.map +1 -1
- package/dist/esm/shared/scoped-portal.d.ts.map +1 -1
- package/dist/esm/shared/scoped-portal.js +2 -23
- package/dist/esm/shared/scoped-portal.js.map +1 -1
- package/dist/esm/shared/theme-variables.d.ts +4 -0
- package/dist/esm/shared/theme-variables.d.ts.map +1 -0
- package/dist/esm/shared/theme-variables.js +27 -0
- package/dist/esm/shared/theme-variables.js.map +1 -0
- package/dist/esm/splitter/splitter.d.ts.map +1 -1
- package/dist/esm/splitter/splitter.js +4 -1
- package/dist/esm/splitter/splitter.js.map +1 -1
- package/dist/esm/styles/alert.css +1 -1
- package/dist/esm/styles/anchor.css +1 -1
- package/dist/esm/styles/appbar.css +1 -1
- package/dist/esm/styles/autocomplete.css +1 -1
- package/dist/esm/styles/avatar.css +1 -1
- package/dist/esm/styles/backtop.css +1 -1
- package/dist/esm/styles/badge.css +1 -1
- package/dist/esm/styles/breadcrumb.css +1 -1
- package/dist/esm/styles/button.css +1 -1
- package/dist/esm/styles/calendar.css +1 -1
- package/dist/esm/styles/card.css +1 -1
- package/dist/esm/styles/carousel.css +1 -1
- package/dist/esm/styles/cascader.css +1 -1
- package/dist/esm/styles/checkbox.css +1 -1
- package/dist/esm/styles/collapse.css +1 -1
- package/dist/esm/styles/colorpicker.css +1 -1
- package/dist/esm/styles/commandpalette.css +1 -1
- package/dist/esm/styles/components/alert.css +1 -1
- package/dist/esm/styles/components/anchor.css +1 -1
- package/dist/esm/styles/components/appbar.css +1 -1
- package/dist/esm/styles/components/autocomplete.css +1 -1
- package/dist/esm/styles/components/avatar.css +1 -1
- package/dist/esm/styles/components/breadcrumb.css +1 -1
- package/dist/esm/styles/components/button.css +1 -1
- package/dist/esm/styles/components/calendar.css +1 -1
- package/dist/esm/styles/components/card.css +1 -1
- package/dist/esm/styles/components/carousel.css +1 -1
- package/dist/esm/styles/components/cascader.css +1 -1
- package/dist/esm/styles/components/checkbox.css +1 -1
- package/dist/esm/styles/components/collapse.css +1 -1
- package/dist/esm/styles/components/colorpicker.css +1 -1
- package/dist/esm/styles/components/commandpalette.css +1 -1
- package/dist/esm/styles/components/datepicker.css +1 -1
- package/dist/esm/styles/components/descriptions.css +1 -1
- package/dist/esm/styles/components/drawer.css +1 -1
- package/dist/esm/styles/components/dropdown.css +1 -1
- package/dist/esm/styles/components/errorboundary.css +1 -1
- package/dist/esm/styles/components/filelist.css +1 -1
- package/dist/esm/styles/components/form.css +1 -1
- package/dist/esm/styles/components/image.css +1 -1
- package/dist/esm/styles/components/input.css +1 -1
- package/dist/esm/styles/components/inputnumber.css +1 -1
- package/dist/esm/styles/components/inputotp.css +1 -1
- package/dist/esm/styles/components/layout.css +1 -1
- package/dist/esm/styles/components/loading.css +1 -1
- package/dist/esm/styles/components/loadingbar.css +1 -1
- package/dist/esm/styles/components/mentions.css +1 -1
- package/dist/esm/styles/components/menu.css +1 -1
- package/dist/esm/styles/components/message.css +1 -1
- package/dist/esm/styles/components/modal.css +1 -1
- package/dist/esm/styles/components/notification.css +1 -1
- package/dist/esm/styles/components/pagination.css +1 -1
- package/dist/esm/styles/components/popover.css +1 -1
- package/dist/esm/styles/components/progress.css +1 -1
- package/dist/esm/styles/components/radio.css +1 -1
- package/dist/esm/styles/components/rate.css +1 -1
- package/dist/esm/styles/components/scrollarea.css +1 -1
- package/dist/esm/styles/components/scrollbar.css +1 -1
- package/dist/esm/styles/components/select.css +1 -1
- package/dist/esm/styles/components/shared-calendar.css +1 -1
- package/dist/esm/styles/components/slider.css +1 -1
- package/dist/esm/styles/components/splitter.css +1 -1
- package/dist/esm/styles/components/steps.css +1 -1
- package/dist/esm/styles/components/switch.css +1 -1
- package/dist/esm/styles/components/table.css +1 -1
- package/dist/esm/styles/components/tabletanstack.css +1 -1
- package/dist/esm/styles/components/tabs.css +1 -1
- package/dist/esm/styles/components/tag.css +1 -1
- package/dist/esm/styles/components/textarea.css +1 -1
- package/dist/esm/styles/components/timepicker.css +1 -1
- package/dist/esm/styles/components/tooltip.css +1 -1
- package/dist/esm/styles/components/tour.css +1 -1
- package/dist/esm/styles/components/transfer.css +1 -1
- package/dist/esm/styles/components/tree.css +1 -1
- package/dist/esm/styles/components/treeselect.css +1 -1
- package/dist/esm/styles/components/typography.css +1 -1
- package/dist/esm/styles/components/upload.css +1 -1
- package/dist/esm/styles/components/virtuallist.css +1 -1
- package/dist/esm/styles/config-provider.css +1 -1
- package/dist/esm/styles/confirm.css +1 -1
- package/dist/esm/styles/datepicker.css +1 -1
- package/dist/esm/styles/daterangepicker.css +1 -1
- package/dist/esm/styles/datetimepicker.css +1 -1
- package/dist/esm/styles/descriptions.css +1 -1
- package/dist/esm/styles/divider.css +1 -1
- package/dist/esm/styles/drawer.css +1 -1
- package/dist/esm/styles/dropdown.css +1 -1
- package/dist/esm/styles/empty.css +1 -1
- package/dist/esm/styles/errorboundary.css +1 -1
- package/dist/esm/styles/filelist.css +1 -1
- package/dist/esm/styles/flex.css +1 -1
- package/dist/esm/styles/floatbutton.css +1 -1
- package/dist/esm/styles/form.css +1 -1
- package/dist/esm/styles/foundation.css +1 -1
- package/dist/esm/styles/grid.css +1 -1
- package/dist/esm/styles/image.css +1 -1
- package/dist/esm/styles/index.css +1380 -716
- package/dist/esm/styles/index.css.map +1 -1
- package/dist/esm/styles/infinitescroll.css +1 -1
- package/dist/esm/styles/input.css +1 -1
- package/dist/esm/styles/inputmask.css +1 -1
- package/dist/esm/styles/inputnumber.css +1 -1
- package/dist/esm/styles/inputotp.css +1 -1
- package/dist/esm/styles/layout.css +1 -1
- package/dist/esm/styles/loading.css +1 -1
- package/dist/esm/styles/loadingbar.css +1 -1
- package/dist/esm/styles/masonry.css +1 -1
- package/dist/esm/styles/mentions.css +1 -1
- package/dist/esm/styles/menu.css +1 -1
- package/dist/esm/styles/message.css +1 -1
- package/dist/esm/styles/modal.css +1 -1
- package/dist/esm/styles/notification.css +1 -1
- package/dist/esm/styles/pagination.css +1 -1
- package/dist/esm/styles/popconfirm.css +1 -1
- package/dist/esm/styles/popover.css +1 -1
- package/dist/esm/styles/progress.css +1 -1
- package/dist/esm/styles/qrcode.css +1 -1
- package/dist/esm/styles/radio.css +1 -1
- package/dist/esm/styles/rate.css +1 -1
- package/dist/esm/styles/result.css +1 -1
- package/dist/esm/styles/scrollarea.css +1 -1
- package/dist/esm/styles/scrollbar.css +1 -1
- package/dist/esm/styles/select.css +1 -1
- package/dist/esm/styles/skeleton.css +1 -1
- package/dist/esm/styles/slider.css +1 -1
- package/dist/esm/styles/space.css +1 -1
- package/dist/esm/styles/splitter.css +1 -1
- package/dist/esm/styles/statistic.css +1 -1
- package/dist/esm/styles/steps.css +1 -1
- package/dist/esm/styles/switch.css +1 -1
- package/dist/esm/styles/table.css +1 -1
- package/dist/esm/styles/tabletanstack.css +1 -1
- package/dist/esm/styles/tabs.css +1 -1
- package/dist/esm/styles/tag.css +1 -1
- package/dist/esm/styles/textarea.css +1 -1
- package/dist/esm/styles/timeline.css +1 -1
- package/dist/esm/styles/timepicker.css +1 -1
- package/dist/esm/styles/timerangepicker.css +1 -1
- package/dist/esm/styles/tooltip.css +1 -1
- package/dist/esm/styles/tour.css +1 -1
- package/dist/esm/styles/transfer.css +1 -1
- package/dist/esm/styles/tree.css +1 -1
- package/dist/esm/styles/treeselect.css +1 -1
- package/dist/esm/styles/typography.css +1 -1
- package/dist/esm/styles/upload.css +1 -1
- package/dist/esm/styles/virtuallist.css +1 -1
- package/dist/esm/tabs/tabs.d.ts +4 -2
- package/dist/esm/tabs/tabs.d.ts.map +1 -1
- package/dist/esm/tabs/tabs.js +14 -8
- package/dist/esm/tabs/tabs.js.map +1 -1
- package/dist/esm/tailwind-tokens.d.ts.map +1 -1
- package/dist/esm/tailwind-tokens.js +1 -1
- package/dist/esm/tailwind-tokens.js.map +1 -1
- package/dist/esm/textarea/textarea.d.ts.map +1 -1
- package/dist/esm/textarea/textarea.js +50 -22
- package/dist/esm/textarea/textarea.js.map +1 -1
- package/dist/esm/theme.d.ts +15 -0
- package/dist/esm/theme.d.ts.map +1 -1
- package/dist/esm/theme.js +53 -29
- package/dist/esm/theme.js.map +1 -1
- package/dist/esm/timeline/timeline.d.ts.map +1 -1
- package/dist/esm/timeline/timeline.js +1 -1
- package/dist/esm/timeline/timeline.js.map +1 -1
- package/dist/esm/timepicker/time-panel.d.ts.map +1 -1
- package/dist/esm/timepicker/time-panel.js +8 -2
- package/dist/esm/timepicker/time-panel.js.map +1 -1
- package/dist/esm/transfer/transfer.d.ts.map +1 -1
- package/dist/esm/transfer/transfer.js +5 -5
- package/dist/esm/transfer/transfer.js.map +1 -1
- package/dist/esm/tree/tree.d.ts.map +1 -1
- package/dist/esm/tree/tree.js +13 -6
- package/dist/esm/tree/tree.js.map +1 -1
- package/dist/esm/treeselect/treeselect.d.ts.map +1 -1
- package/dist/esm/treeselect/treeselect.js +5 -4
- package/dist/esm/treeselect/treeselect.js.map +1 -1
- package/dist/esm/virtuallist/virtuallist.d.ts.map +1 -1
- package/dist/esm/virtuallist/virtuallist.js +9 -3
- package/dist/esm/virtuallist/virtuallist.js.map +1 -1
- package/dist/tailwind.css +1 -1
- package/package.json +1 -22
- package/dist/cjs/browser/modules/segmented/index.cjs.map +0 -1
- package/dist/cjs/browser/modules/segmented/segmented.cjs +0 -127
- package/dist/cjs/browser/modules/segmented/segmented.cjs.map +0 -1
- package/dist/cjs/browser/segmented.cjs +0 -2
- package/dist/cjs/segmented/index.cjs.map +0 -1
- package/dist/cjs/segmented/index.d.cts +0 -3
- package/dist/cjs/segmented/index.d.cts.map +0 -1
- package/dist/cjs/segmented/segmented.cjs +0 -125
- package/dist/cjs/segmented/segmented.cjs.map +0 -1
- package/dist/cjs/segmented/segmented.d.cts +0 -21
- package/dist/cjs/segmented/segmented.d.cts.map +0 -1
- package/dist/cjs/styles/components/segmented.css +0 -1
- package/dist/cjs/styles/segmented.css +0 -1
- package/dist/esm/browser/modules/segmented/index.js +0 -2
- package/dist/esm/browser/modules/segmented/segmented.js +0 -89
- package/dist/esm/browser/modules/segmented/segmented.js.map +0 -1
- package/dist/esm/browser/segmented.js +0 -2
- package/dist/esm/segmented/index.d.ts +0 -3
- package/dist/esm/segmented/index.d.ts.map +0 -1
- package/dist/esm/segmented/index.js +0 -2
- package/dist/esm/segmented/segmented.d.ts +0 -21
- package/dist/esm/segmented/segmented.d.ts.map +0 -1
- package/dist/esm/segmented/segmented.js +0 -87
- package/dist/esm/segmented/segmented.js.map +0 -1
- package/dist/esm/styles/components/segmented.css +0 -1
- package/dist/esm/styles/segmented.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared/floating.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/shared/floating.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n autoUpdate,\n flip,\n offset,\n type Placement,\n shift,\n size,\n useFloating,\n} from '@floating-ui/react-dom';\nimport {\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { tabbable } from 'tabbable';\nimport { useLeafConfig } from '../config-provider/context';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedEventTarget, composedParent, deepActiveElement } from './dom';\nimport { assignRef } from './field';\nimport { inertProps } from './inert';\nimport { OverlayOwner } from './overlay-owner';\nimport { usePresence } from './presence';\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\nconst PopupParent = createContext<string | undefined>(undefined);\nconst popupNodes = new Map<string, HTMLElement>();\nconst dismissStack: RefObject<HTMLElement | null>[] = [];\nfunction insidePopup(target: Node, panel: HTMLElement | null) {\n if (!panel) return false;\n if (panel.contains(target)) return true;\n let popup = target instanceof Element ? target.closest<HTMLElement>('[data-leaf-popup]') : null;\n const visited = new Set<string>();\n while (popup?.dataset.leafPopupParent) {\n const parent = popup.dataset.leafPopupParent;\n if (visited.has(parent)) break;\n visited.add(parent);\n popup = popupNodes.get(parent) ?? null;\n if (popup === panel) return true;\n }\n return false;\n}\n\n/** Close disabled fields immediately and report each open-state change once. */\nexport function usePopupState(\n disabled?: boolean,\n onOpenChange?: (open: boolean) => void,\n controlledOpen?: boolean,\n defaultOpen = false,\n) {\n const [internalOpen, setRequestedOpen] = useState(defaultOpen);\n const requestedOpen = controlledOpen ?? internalOpen;\n const requestedRef = useRef(requestedOpen);\n requestedRef.current = requestedOpen;\n const open = requestedOpen && !disabled;\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === requestedRef.current || (next && disabled)) return;\n requestedRef.current = next;\n if (controlledOpen === undefined) setRequestedOpen(next);\n onOpenChange?.(next);\n },\n [disabled, onOpenChange, controlledOpen],\n );\n useEffect(() => {\n if (disabled && requestedOpen) setOpen(false);\n }, [disabled, requestedOpen, setOpen]);\n return [open, setOpen] as const;\n}\n\nexport interface PopupOptions {\n popupPlacement?: Placement;\n popupClassName?: string;\n popupStyle?: CSSProperties;\n popupRender?: (content: React.ReactNode) => React.ReactNode;\n getPopupContainer?: () => Element | DocumentFragment;\n}\ninterface FloatingPanelProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n triggerRef: RefObject<HTMLElement | null>;\n panelRef: RefObject<HTMLDivElement | null>;\n matchWidth?: boolean;\n width?: CSSProperties['width'];\n minWidth?: CSSProperties['minWidth'] | 'trigger';\n maxWidth?: CSSProperties['maxWidth'];\n maxHeight?: CSSProperties['maxHeight'];\n placement?: Placement;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n render?: (content: React.ReactNode) => React.ReactNode;\n position?: { x: number; y: number };\n}\n\n/** Position a lazily mounted portal, preserving the trigger's scoped theme. */\nexport function FloatingPanel({\n open,\n triggerRef,\n panelRef,\n matchWidth,\n width,\n minWidth,\n maxWidth,\n maxHeight,\n placement = 'bottom-start',\n container,\n render,\n position,\n style,\n children,\n ...props\n}: FloatingPanelProps) {\n const popupId = useId();\n const parentPopup = useContext(PopupParent);\n const config = useLeafConfig();\n const owner = useContext(OverlayOwner);\n const present = usePresence(open, panelRef);\n const [theme, setTheme] = useState<LeafThemeStyle>({});\n const [inheritedMotion, setInheritedMotion] = useState<string>();\n const openRef = useRef(open);\n openRef.current = open;\n const previousPosition = useRef<CSSProperties>({});\n const closingContent = useRef(children);\n const referenceElement = triggerRef.current;\n if (open) closingContent.current = children;\n const {\n refs,\n floatingStyles,\n isPositioned,\n update,\n placement: resolvedPlacement,\n } = useFloating({\n open,\n placement,\n strategy: 'fixed',\n // Keep viewport positioning outside the popup's local scale/translate motion.\n transform: false,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, () => {\n if (openRef.current) update();\n }),\n middleware: [\n offset(6),\n flip({ padding: 12 }),\n shift({ padding: 12 }),\n size({\n padding: 12,\n apply({ availableHeight, availableWidth, rects, elements }) {\n if (!openRef.current) return;\n const length = (value: string | number) =>\n typeof value === 'number' ? `${value}px` : value;\n const widthMaximum = maxWidth ?? style?.maxWidth;\n const heightMaximum = maxHeight ?? style?.maxHeight;\n const viewportWidth = `${Math.max(0, availableWidth)}px`;\n const viewportHeight = `${Math.max(0, availableHeight)}px`;\n const widthLimit =\n widthMaximum === undefined\n ? viewportWidth\n : `min(${length(widthMaximum)}, ${viewportWidth})`;\n Object.assign(elements.floating.style, {\n maxHeight:\n heightMaximum === undefined\n ? viewportHeight\n : `min(${length(heightMaximum)}, ${viewportHeight})`,\n maxWidth: widthLimit,\n width: matchWidth\n ? `${Math.min(rects.reference.width, availableWidth)}px`\n : length(width ?? style?.width ?? ''),\n minWidth:\n minWidth === 'trigger'\n ? `min(${rects.reference.width}px, ${widthLimit})`\n : length(minWidth ?? style?.minWidth ?? ''),\n });\n },\n }),\n ],\n });\n if (open) previousPosition.current = floatingStyles;\n const setPanelRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) popupNodes.set(popupId, node);\n else popupNodes.delete(popupId);\n assignRef(panelRef, node);\n refs.setFloating(node);\n },\n [panelRef, refs.setFloating, popupId],\n );\n\n useBrowserLayoutEffect(() => {\n const trigger = referenceElement ?? triggerRef.current;\n if (!trigger || !present) return;\n refs.setReference(\n position\n ? {\n getBoundingClientRect: () => ({\n x: position.x,\n y: position.y,\n top: position.y,\n bottom: position.y,\n left: position.x,\n right: position.x,\n width: 0,\n height: 0,\n }),\n }\n : trigger,\n );\n const syncTheme = () => {\n const computed = getComputedStyle(trigger);\n let motionAncestor: HTMLElement | null = trigger;\n while (motionAncestor && !motionAncestor.hasAttribute('data-leaf-motion'))\n motionAncestor = composedParent(motionAncestor);\n setInheritedMotion(motionAncestor?.getAttribute('data-leaf-motion') ?? undefined);\n const variables: LeafThemeStyle = {\n colorScheme: computed.colorScheme,\n direction: computed.direction as CSSProperties['direction'],\n };\n for (let i = 0; i < computed.length; i += 1) {\n const key = computed.item(i);\n if (key.startsWith('--leaf-'))\n variables[key as `--leaf-${string}`] = computed.getPropertyValue(key);\n }\n setTheme(variables);\n };\n syncTheme();\n const observer = new MutationObserver(syncTheme);\n let ancestor: HTMLElement | null = trigger;\n while (ancestor) {\n observer.observe(ancestor, {\n attributes: true,\n attributeFilter: ['class', 'style', 'data-leaf-theme', 'data-leaf-motion', 'dir'],\n });\n ancestor = composedParent(ancestor);\n }\n return () => observer.disconnect();\n }, [triggerRef, referenceElement, refs.setReference, present, position]);\n\n useBrowserLayoutEffect(() => {\n // A quick reopen can reuse the exit-presence node without remounting autoUpdate.\n if (open && present) void update();\n }, [open, present, update]);\n\n if (!present || typeof document === 'undefined') return null;\n return createPortal(\n <PopupParent.Provider value={popupId}>\n <div\n {...props}\n ref={setPanelRef}\n data-leaf-owner={owner}\n data-leaf-popup={popupId}\n data-leaf-popup-parent={parentPopup}\n data-leaf-motion={config.theme.motion === false ? 'off' : inheritedMotion}\n data-side={resolvedPlacement.split('-')[0]}\n data-align={resolvedPlacement.split('-')[1] ?? 'center'}\n dir={props.dir ?? theme.direction ?? config.direction}\n lang={props.lang ?? config.locale}\n data-state={open ? 'open' : 'closing'}\n data-positioned={isPositioned || !open}\n aria-hidden={!open || undefined}\n {...inertProps(!open)}\n style={{ ...theme, ...style, ...(open ? floatingStyles : previousPosition.current) }}\n >\n {render\n ? render(open ? children : closingContent.current)\n : open\n ? children\n : closingContent.current}\n </div>\n </PopupParent.Provider>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n );\n}\n\n/** Close a custom floating panel when focus leaves it or Escape is pressed. */\nexport function useFloatingDismiss(\n open: boolean,\n onClose: (reason?: 'escape' | 'outside' | 'focus' | 'tab') => void,\n triggerRef: RefObject<HTMLElement | null>,\n panelRef: RefObject<HTMLElement | null>,\n boundaryRef: RefObject<HTMLElement | null> = triggerRef,\n) {\n const closeRef = useRef(onClose);\n closeRef.current = onClose;\n useEffect(() => {\n if (!open) {\n return;\n }\n dismissStack.push(panelRef);\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.composedPath()[0] ?? event.target;\n if (!(target instanceof Node)) {\n return;\n }\n const label = target instanceof Element ? target.closest('label') : null;\n const labelledControl = label?.control;\n if (\n boundaryRef.current?.contains(target) ||\n insidePopup(target, panelRef.current) ||\n (labelledControl && boundaryRef.current?.contains(labelledControl))\n ) {\n return;\n }\n closeRef.current('outside');\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented || dismissStack.at(-1) !== panelRef) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeRef.current('escape');\n triggerRef.current?.focus();\n } else if (event.key === 'Tab') {\n const panel = panelRef.current;\n const trigger = triggerRef.current;\n const active = deepActiveElement();\n if (!panel || !trigger || !panel.contains(active)) return;\n const items = tabbable(panel, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n });\n const index = active instanceof HTMLElement ? items.indexOf(active) : -1;\n const leaving = event.shiftKey ? index <= 0 : index === items.length - 1;\n if (!leaving) return;\n event.preventDefault();\n closeRef.current('tab');\n if (event.shiftKey) trigger.focus();\n else {\n const pageItems = tabbable(document.body, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n }).filter((item) => !panel.contains(item));\n const triggerIndex = pageItems.indexOf(trigger);\n (pageItems[triggerIndex + 1] ?? trigger).focus();\n }\n }\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = composedEventTarget(event);\n if (\n target instanceof Node &&\n !boundaryRef.current?.contains(target) &&\n !insidePopup(target, panelRef.current)\n )\n closeRef.current('focus');\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown, true);\n document.addEventListener('focusin', handleFocus);\n return () => {\n const index = dismissStack.indexOf(panelRef);\n if (index >= 0) dismissStack.splice(index, 1);\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown, true);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [open, panelRef, triggerRef, boundaryRef]);\n}\n\n/** Keep keyboard-highlighted options visible without animated scrolling. */\nexport function useActiveOption(\n open: boolean,\n optionId: string | undefined,\n panelRef?: RefObject<HTMLElement | null>,\n) {\n useEffect(() => {\n if (!open || !optionId) return;\n const root = panelRef?.current?.getRootNode();\n const scope = root instanceof ShadowRoot ? root : document;\n scope.getElementById(optionId)?.scrollIntoView?.({ block: 'nearest' });\n }, [open, optionId, panelRef]);\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","PopupParent","createContext","undefined","popupNodes","Map","dismissStack","insidePopup","target","panel","popup","Element","visited","Set","parent","usePopupState","disabled","onOpenChange","controlledOpen","defaultOpen","internalOpen","setRequestedOpen","useState","requestedOpen","requestedRef","useRef","open","setOpen","useCallback","next","FloatingPanel","triggerRef","panelRef","matchWidth","width","minWidth","maxWidth","maxHeight","placement","container","render","position","style","children","props","popupId","useId","parentPopup","useContext","config","useLeafConfig","owner","OverlayOwner","present","usePresence","theme","setTheme","inheritedMotion","setInheritedMotion","openRef","previousPosition","closingContent","referenceElement","refs","floatingStyles","isPositioned","update","resolvedPlacement","useFloating","reference","floating","autoUpdate","offset","flip","shift","size","availableHeight","availableWidth","rects","elements","length","value","widthMaximum","heightMaximum","viewportWidth","Math","viewportHeight","widthLimit","setPanelRef","node","assignRef","trigger","syncTheme","computed","getComputedStyle","motionAncestor","composedParent","variables","i","observer","MutationObserver","ancestor","document","createPortal","inertProps","useFloatingDismiss","onClose","boundaryRef","closeRef","handlePointerDown","event","Node","label","labelledControl","handleKeyDown","active","deepActiveElement","items","tabbable","element","index","HTMLElement","leaving","pageItems","item","triggerIndex","handleFocus","composedEventTarget","useActiveOption","optionId","root","scope","ShadowRoot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared/floating.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/shared/floating.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n autoUpdate,\n flip,\n offset,\n type Placement,\n shift,\n size,\n useFloating,\n} from '@floating-ui/react-dom';\nimport {\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { tabbable } from 'tabbable';\nimport { useLeafConfig } from '../config-provider/context';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedEventTarget, composedParent, deepActiveElement } from './dom';\nimport { assignRef } from './field';\nimport { inertProps } from './inert';\nimport { OverlayOwner } from './overlay-owner';\nimport { usePresence } from './presence';\nimport { readThemeVariables } from './theme-variables';\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\nconst PopupParent = createContext<string | undefined>(undefined);\nconst popupNodes = new Map<string, HTMLElement>();\nconst dismissStack: RefObject<HTMLElement | null>[] = [];\nfunction insidePopup(target: Node, panel: HTMLElement | null) {\n if (!panel) return false;\n const boundary = panel.closest<HTMLElement>('[data-leaf-popup]') ?? panel;\n if (boundary.contains(target)) return true;\n let popup = target instanceof Element ? target.closest<HTMLElement>('[data-leaf-popup]') : null;\n const visited = new Set<string>();\n while (popup?.dataset.leafPopupParent) {\n const parent = popup.dataset.leafPopupParent;\n if (visited.has(parent)) break;\n visited.add(parent);\n popup = popupNodes.get(parent) ?? null;\n if (popup === boundary) return true;\n }\n return false;\n}\n\n/** Close disabled fields immediately and report each open-state change once. */\nexport function usePopupState(\n disabled?: boolean,\n onOpenChange?: (open: boolean) => void,\n controlledOpen?: boolean,\n defaultOpen = false,\n) {\n const [internalOpen, setRequestedOpen] = useState(defaultOpen);\n const requestedOpen = controlledOpen ?? internalOpen;\n const requestedRef = useRef(requestedOpen);\n requestedRef.current = requestedOpen;\n const open = requestedOpen && !disabled;\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === requestedRef.current || (next && disabled)) return;\n requestedRef.current = next;\n if (controlledOpen === undefined) setRequestedOpen(next);\n onOpenChange?.(next);\n },\n [disabled, onOpenChange, controlledOpen],\n );\n useEffect(() => {\n if (disabled && requestedOpen) setOpen(false);\n }, [disabled, requestedOpen, setOpen]);\n return [open, setOpen] as const;\n}\n\nexport interface PopupOptions {\n popupPlacement?: Placement;\n popupClassName?: string;\n popupStyle?: CSSProperties;\n popupRender?: (content: React.ReactNode) => React.ReactNode;\n getPopupContainer?: () => Element | DocumentFragment;\n}\ninterface FloatingPanelProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n triggerRef: RefObject<HTMLElement | null>;\n panelRef: RefObject<HTMLDivElement | null>;\n matchWidth?: boolean;\n width?: CSSProperties['width'];\n minWidth?: CSSProperties['minWidth'] | 'trigger';\n maxWidth?: CSSProperties['maxWidth'];\n maxHeight?: CSSProperties['maxHeight'];\n placement?: Placement;\n sideFallback?: boolean;\n resetSurfaceGeometry?: boolean;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n render?: (content: React.ReactNode) => React.ReactNode;\n position?: { x: number; y: number };\n}\n\n/** Position a lazily mounted portal, preserving the trigger's scoped theme. */\nexport function FloatingPanel({\n open,\n triggerRef,\n panelRef,\n matchWidth,\n width,\n minWidth,\n maxWidth,\n maxHeight,\n placement = 'bottom-start',\n sideFallback = false,\n resetSurfaceGeometry = false,\n container,\n render,\n position,\n style,\n children,\n ...props\n}: FloatingPanelProps) {\n const popupId = useId();\n const parentPopup = useContext(PopupParent);\n const config = useLeafConfig();\n const owner = useContext(OverlayOwner);\n const floatingRef = useRef<HTMLDivElement>(null);\n const present = usePresence(open, floatingRef);\n const [theme, setTheme] = useState<LeafThemeStyle>({});\n const [inheritedMotion, setInheritedMotion] = useState<string>();\n const openRef = useRef(open);\n openRef.current = open;\n const previousPosition = useRef<CSSProperties>({});\n const closingContent = useRef(children);\n const referenceElement = triggerRef.current;\n if (open) closingContent.current = children;\n const {\n refs,\n floatingStyles,\n isPositioned,\n update,\n placement: resolvedPlacement,\n } = useFloating({\n open,\n placement,\n strategy: 'fixed',\n // Keep viewport positioning outside the popup's local scale/translate motion.\n transform: false,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, () => {\n if (openRef.current) update();\n }),\n middleware: [\n offset(6),\n flip({ padding: 12, fallbackAxisSideDirection: sideFallback ? 'end' : 'none' }),\n shift({ padding: 12 }),\n size(\n {\n padding: 12,\n apply({ availableHeight, availableWidth, rects, elements }) {\n if (!openRef.current) return;\n const length = (value: string | number) =>\n typeof value === 'number' ? `${value}px` : value;\n const widthMaximum = maxWidth ?? style?.maxWidth;\n const heightMaximum = maxHeight ?? style?.maxHeight;\n const viewportWidth = `${Math.max(0, availableWidth)}px`;\n const viewportHeight = `${Math.max(0, availableHeight)}px`;\n const widthLimit =\n widthMaximum === undefined\n ? viewportWidth\n : `min(${length(widthMaximum)}, ${viewportWidth})`;\n Object.assign(elements.floating.style, {\n maxHeight:\n heightMaximum === undefined\n ? viewportHeight\n : `min(${length(heightMaximum)}, ${viewportHeight})`,\n maxWidth: widthLimit,\n width: matchWidth\n ? `${Math.min(rects.reference.width, availableWidth)}px`\n : length(width ?? style?.width ?? ''),\n minWidth:\n minWidth === 'trigger'\n ? `min(${rects.reference.width}px, ${widthLimit})`\n : length(minWidth ?? style?.minWidth ?? ''),\n });\n },\n },\n [\n matchWidth,\n width,\n minWidth,\n maxWidth,\n maxHeight,\n style?.width,\n style?.minWidth,\n style?.maxWidth,\n style?.maxHeight,\n ],\n ),\n ],\n });\n if (open) previousPosition.current = floatingStyles;\n const setPanelRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) popupNodes.set(popupId, node);\n else popupNodes.delete(popupId);\n assignRef(floatingRef, node);\n refs.setFloating(node);\n },\n [refs.setFloating, popupId],\n );\n const setViewportRef = useCallback(\n (node: HTMLDivElement | null) => assignRef(panelRef, node),\n [panelRef],\n );\n\n useBrowserLayoutEffect(() => {\n const trigger = referenceElement ?? triggerRef.current;\n if (!trigger || !present) return;\n refs.setReference(\n position\n ? {\n getBoundingClientRect: () => ({\n x: position.x,\n y: position.y,\n top: position.y,\n bottom: position.y,\n left: position.x,\n right: position.x,\n width: 0,\n height: 0,\n }),\n }\n : trigger,\n );\n const syncTheme = () => {\n let motionAncestor: HTMLElement | null = trigger;\n while (motionAncestor && !motionAncestor.hasAttribute('data-leaf-motion'))\n motionAncestor = composedParent(motionAncestor);\n setInheritedMotion(motionAncestor?.getAttribute('data-leaf-motion') ?? undefined);\n const variables = readThemeVariables(trigger);\n if (resetSurfaceGeometry) {\n // Navigation triggers define their own inset surface. The popup solves\n // its geometry independently while keeping scoped theme paint/shadows.\n for (const key of Object.keys(variables)) {\n if (\n /^--leaf-surface-(?:radius$|border$|padding(?:-|$)|inner-)/.test(key) ||\n key === '--leaf-floating-option-radius'\n ) {\n delete variables[key as `--leaf-${string}`];\n }\n }\n }\n setTheme(variables);\n };\n syncTheme();\n const observer = new MutationObserver(syncTheme);\n let ancestor: HTMLElement | null = trigger;\n while (ancestor) {\n observer.observe(ancestor, {\n attributes: true,\n attributeFilter: ['class', 'style', 'data-leaf-theme', 'data-leaf-motion', 'dir'],\n });\n ancestor = composedParent(ancestor);\n }\n return () => observer.disconnect();\n }, [triggerRef, referenceElement, refs.setReference, present, position, resetSurfaceGeometry]);\n\n useBrowserLayoutEffect(() => {\n // A quick reopen can reuse the exit-presence node without remounting autoUpdate.\n if (open && present) void update();\n }, [open, present, update]);\n\n if (!present || typeof document === 'undefined') return null;\n const viewportProps: HTMLAttributes<HTMLDivElement> = {};\n const rootProps = { ...props };\n for (const key of Object.keys(rootProps)) {\n if (key === 'id' || key === 'role' || key === 'tabIndex' || key.startsWith('aria-')) {\n Object.assign(viewportProps, { [key]: rootProps[key as keyof typeof rootProps] });\n delete rootProps[key as keyof typeof rootProps];\n }\n }\n return createPortal(\n <PopupParent.Provider value={popupId}>\n <ScrollbarControl\n {...rootProps}\n ref={setViewportRef}\n rootRef={setPanelRef}\n viewportProps={viewportProps}\n viewportClassName=\"leaf-floating__viewport\"\n role={props.role ?? 'presentation'}\n tabIndex={props.tabIndex ?? -1}\n scrollbarTabIndex={-1}\n data-leaf-owner={owner}\n data-leaf-popup={popupId}\n data-leaf-popup-parent={parentPopup}\n data-leaf-motion={config.theme.motion === false ? 'off' : inheritedMotion}\n data-side={resolvedPlacement.split('-')[0]}\n data-align={resolvedPlacement.split('-')[1] ?? 'center'}\n dir={props.dir ?? theme.direction ?? config.direction}\n lang={props.lang ?? config.locale}\n data-state={open ? 'open' : 'closing'}\n data-positioned={isPositioned || !open}\n aria-hidden={!open || undefined}\n {...inertProps(!open)}\n style={{ ...theme, ...style, ...(open ? floatingStyles : previousPosition.current) }}\n >\n {render\n ? render(open ? children : closingContent.current)\n : open\n ? children\n : closingContent.current}\n </ScrollbarControl>\n </PopupParent.Provider>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n );\n}\n\n/** Close a custom floating panel when focus leaves it or Escape is pressed. */\nexport function useFloatingDismiss(\n open: boolean,\n onClose: (reason?: 'escape' | 'outside' | 'focus' | 'tab') => void,\n triggerRef: RefObject<HTMLElement | null>,\n panelRef: RefObject<HTMLElement | null>,\n boundaryRef: RefObject<HTMLElement | null> = triggerRef,\n) {\n const closeRef = useRef(onClose);\n closeRef.current = onClose;\n useEffect(() => {\n if (!open) {\n return;\n }\n dismissStack.push(panelRef);\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.composedPath()[0] ?? event.target;\n if (!(target instanceof Node)) {\n return;\n }\n const label = target instanceof Element ? target.closest('label') : null;\n const labelledControl = label?.control;\n if (\n boundaryRef.current?.contains(target) ||\n insidePopup(target, panelRef.current) ||\n (labelledControl && boundaryRef.current?.contains(labelledControl))\n ) {\n return;\n }\n closeRef.current('outside');\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented || dismissStack.at(-1) !== panelRef) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeRef.current('escape');\n triggerRef.current?.focus();\n } else if (event.key === 'Tab') {\n const panel = panelRef.current;\n const trigger = triggerRef.current;\n const active = deepActiveElement();\n if (!panel || !trigger || !panel.contains(active)) return;\n const items = tabbable(panel, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n });\n const index = active instanceof HTMLElement ? items.indexOf(active) : -1;\n const leaving = event.shiftKey ? index <= 0 : index === items.length - 1;\n if (!leaving) return;\n event.preventDefault();\n closeRef.current('tab');\n if (event.shiftKey) trigger.focus();\n else {\n const pageItems = tabbable(document.body, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n }).filter((item) => !panel.contains(item));\n const triggerIndex = pageItems.indexOf(trigger);\n (pageItems[triggerIndex + 1] ?? trigger).focus();\n }\n }\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = composedEventTarget(event);\n if (\n target instanceof Node &&\n !boundaryRef.current?.contains(target) &&\n !insidePopup(target, panelRef.current)\n )\n closeRef.current('focus');\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown, true);\n document.addEventListener('focusin', handleFocus);\n return () => {\n const index = dismissStack.indexOf(panelRef);\n if (index >= 0) dismissStack.splice(index, 1);\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown, true);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [open, panelRef, triggerRef, boundaryRef]);\n}\n\n/** Keep keyboard-highlighted options visible without animated scrolling. */\nexport function useActiveOption(\n open: boolean,\n optionId: string | undefined,\n panelRef?: RefObject<HTMLElement | null>,\n) {\n useEffect(() => {\n if (!open || !optionId) return;\n const root = panelRef?.current?.getRootNode();\n const scope = root instanceof ShadowRoot ? root : document;\n scope.getElementById(optionId)?.scrollIntoView?.({ block: 'nearest' });\n }, [open, optionId, panelRef]);\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","PopupParent","createContext","undefined","popupNodes","Map","dismissStack","insidePopup","target","panel","boundary","popup","Element","visited","Set","parent","usePopupState","disabled","onOpenChange","controlledOpen","defaultOpen","internalOpen","setRequestedOpen","useState","requestedOpen","requestedRef","useRef","open","setOpen","useCallback","next","FloatingPanel","triggerRef","panelRef","matchWidth","width","minWidth","maxWidth","maxHeight","placement","sideFallback","resetSurfaceGeometry","container","render","position","style","children","props","popupId","useId","parentPopup","useContext","config","useLeafConfig","owner","OverlayOwner","floatingRef","present","usePresence","theme","setTheme","inheritedMotion","setInheritedMotion","openRef","previousPosition","closingContent","referenceElement","refs","floatingStyles","isPositioned","update","resolvedPlacement","useFloating","reference","floating","autoUpdate","offset","flip","shift","size","availableHeight","availableWidth","rects","elements","length","value","widthMaximum","heightMaximum","viewportWidth","Math","viewportHeight","widthLimit","setPanelRef","node","assignRef","setViewportRef","trigger","syncTheme","motionAncestor","composedParent","variables","readThemeVariables","observer","MutationObserver","ancestor","document","viewportProps","rootProps","createPortal","ScrollbarControl","inertProps","useFloatingDismiss","onClose","boundaryRef","closeRef","handlePointerDown","event","Node","label","labelledControl","handleKeyDown","active","deepActiveElement","items","tabbable","element","index","HTMLElement","leaving","pageItems","item","triggerIndex","handleFocus","composedEventTarget","useActiveOption","optionId","root","scope","ShadowRoot"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;;;;;;;;;;;AC4BA,MAAMI,yBAAyB,AAAkB,MAAlB,OAAOC,SAAyBC,+BAAAA,SAASA,GAAGC,+BAAAA,eAAeA;AAC1F,MAAMC,cAAcC,AAAA,WAAdD,GAAcC,IAAAA,+BAAAA,aAAAA,AAAAA,EAAkCC;AACtD,MAAMC,aAAa,IAAIC;AACvB,MAAMC,eAAgD,EAAE;AACxD,SAASC,YAAYC,MAAY,EAAEC,KAAyB;IAC1D,IAAI,CAACA,OAAO,OAAO;IACnB,MAAMC,WAAWD,MAAM,OAAO,CAAc,wBAAwBA;IACpE,IAAIC,SAAS,QAAQ,CAACF,SAAS,OAAO;IACtC,IAAIG,QAAQH,kBAAkBI,UAAUJ,OAAO,OAAO,CAAc,uBAAuB;IAC3F,MAAMK,UAAU,IAAIC;IACpB,MAAOH,OAAO,QAAQ,gBAAiB;QACrC,MAAMI,SAASJ,MAAM,OAAO,CAAC,eAAe;QAC5C,IAAIE,QAAQ,GAAG,CAACE,SAAS;QACzBF,QAAQ,GAAG,CAACE;QACZJ,QAAQP,WAAW,GAAG,CAACW,WAAW;QAClC,IAAIJ,UAAUD,UAAU,OAAO;IACjC;IACA,OAAO;AACT;AAGO,SAASM,cACdC,QAAkB,EAClBC,YAAsC,EACtCC,cAAwB,EACxBC,cAAc,KAAK;IAEnB,MAAM,CAACC,cAAcC,iBAAiB,GAAGC,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA,EAASH;IAClD,MAAMI,gBAAgBL,kBAAkBE;IACxC,MAAMI,eAAeC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAOF;IAC5BC,aAAa,OAAO,GAAGD;IACvB,MAAMG,OAAOH,iBAAiB,CAACP;IAC/B,MAAMW,UAAUC,AAAAA,IAAAA,+BAAAA,WAAAA,AAAAA,EACd,CAACC;QACC,IAAIA,SAASL,aAAa,OAAO,IAAKK,QAAQb,UAAW;QACzDQ,aAAa,OAAO,GAAGK;QACvB,IAAIX,AAAmBhB,WAAnBgB,gBAA8BG,iBAAiBQ;QACnDZ,eAAeY;IACjB,GACA;QAACb;QAAUC;QAAcC;KAAe;IAE1CpB,IAAAA,+BAAAA,SAAAA,AAAAA,EAAU;QACR,IAAIkB,YAAYO,eAAeI,QAAQ;IACzC,GAAG;QAACX;QAAUO;QAAeI;KAAQ;IACrC,OAAO;QAACD;QAAMC;KAAQ;AACxB;AA2BO,SAASG,cAAc,EAC5BJ,IAAI,EACJK,UAAU,EACVC,QAAQ,EACRC,UAAU,EACVC,KAAK,EACLC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,YAAY,cAAc,EAC1BC,eAAe,KAAK,EACpBC,uBAAuB,KAAK,EAC5BC,SAAS,EACTC,MAAM,EACNC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACR,GAAGC,OACgB;IACnB,MAAMC,UAAUC,AAAAA,IAAAA,+BAAAA,KAAAA,AAAAA;IAChB,MAAMC,cAAcC,AAAAA,IAAAA,+BAAAA,UAAAA,AAAAA,EAAWlD;IAC/B,MAAMmD,SAASC,AAAAA,IAAAA,4BAAAA,aAAAA,AAAAA;IACf,MAAMC,QAAQH,AAAAA,IAAAA,+BAAAA,UAAAA,AAAAA,EAAWI,2CAAAA,YAAYA;IACrC,MAAMC,cAAc9B,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAuB;IAC3C,MAAM+B,UAAUC,AAAAA,IAAAA,sCAAAA,WAAAA,AAAAA,EAAY/B,MAAM6B;IAClC,MAAM,CAACG,OAAOC,SAAS,GAAGrC,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA,EAAyB,CAAC;IACpD,MAAM,CAACsC,iBAAiBC,mBAAmB,GAAGvC,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA;IAC9C,MAAMwC,UAAUrC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAOC;IACvBoC,QAAQ,OAAO,GAAGpC;IAClB,MAAMqC,mBAAmBtC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAsB,CAAC;IAChD,MAAMuC,iBAAiBvC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAOoB;IAC9B,MAAMoB,mBAAmBlC,WAAW,OAAO;IAC3C,IAAIL,MAAMsC,eAAe,OAAO,GAAGnB;IACnC,MAAM,EACJqB,IAAI,EACJC,cAAc,EACdC,YAAY,EACZC,MAAM,EACN,WAAWC,iBAAiB,EAC7B,GAAGC,AAAAA,IAAAA,0BAAAA,WAAAA,AAAAA,EAAY;QACd7C;QACAY;QACA,UAAU;QAEV,WAAW;QACX,sBAAsB,CAACkC,WAAWC,UAAUJ,SAC1CK,AAAAA,IAAAA,0BAAAA,UAAAA,AAAAA,EAAWF,WAAWC,UAAU;gBAC9B,IAAIX,QAAQ,OAAO,EAAEO;YACvB;QACF,YAAY;YACVM,IAAAA,0BAAAA,MAAAA,AAAAA,EAAO;YACPC,IAAAA,0BAAAA,IAAAA,AAAAA,EAAK;gBAAE,SAAS;gBAAI,2BAA2BrC,eAAe,QAAQ;YAAO;YAC7EsC,IAAAA,0BAAAA,KAAAA,AAAAA,EAAM;gBAAE,SAAS;YAAG;YACpBC,IAAAA,0BAAAA,IAAAA,AAAAA,EACE;gBACE,SAAS;gBACT,OAAM,EAAEC,eAAe,EAAEC,cAAc,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACxD,IAAI,CAACpB,QAAQ,OAAO,EAAE;oBACtB,MAAMqB,SAAS,CAACC,QACd,AAAiB,YAAjB,OAAOA,QAAqB,GAAGA,MAAM,EAAE,CAAC,GAAGA;oBAC7C,MAAMC,eAAejD,YAAYQ,OAAO;oBACxC,MAAM0C,gBAAgBjD,aAAaO,OAAO;oBAC1C,MAAM2C,gBAAgB,GAAGC,KAAK,GAAG,CAAC,GAAGR,gBAAgB,EAAE,CAAC;oBACxD,MAAMS,iBAAiB,GAAGD,KAAK,GAAG,CAAC,GAAGT,iBAAiB,EAAE,CAAC;oBAC1D,MAAMW,aACJL,AAAiBnF,WAAjBmF,eACIE,gBACA,CAAC,IAAI,EAAEJ,OAAOE,cAAc,EAAE,EAAEE,cAAc,CAAC,CAAC;oBACtD/F,OAAO,MAAM,CAAC0F,SAAS,QAAQ,CAAC,KAAK,EAAE;wBACrC,WACEI,AAAkBpF,WAAlBoF,gBACIG,iBACA,CAAC,IAAI,EAAEN,OAAOG,eAAe,EAAE,EAAEG,eAAe,CAAC,CAAC;wBACxD,UAAUC;wBACV,OAAOzD,aACH,GAAGuD,KAAK,GAAG,CAACP,MAAM,SAAS,CAAC,KAAK,EAAED,gBAAgB,EAAE,CAAC,GACtDG,OAAOjD,SAASU,OAAO,SAAS;wBACpC,UACET,AAAa,cAAbA,WACI,CAAC,IAAI,EAAE8C,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,EAAES,WAAW,CAAC,CAAC,GAChDP,OAAOhD,YAAYS,OAAO,YAAY;oBAC9C;gBACF;YACF,GACA;gBACEX;gBACAC;gBACAC;gBACAC;gBACAC;gBACAO,OAAO;gBACPA,OAAO;gBACPA,OAAO;gBACPA,OAAO;aACR;SAEJ;IACH;IACA,IAAIlB,MAAMqC,iBAAiB,OAAO,GAAGI;IACrC,MAAMwB,cAAc/D,AAAAA,IAAAA,+BAAAA,WAAAA,AAAAA,EAClB,CAACgE;QACC,IAAIA,MAAMzF,WAAW,GAAG,CAAC4C,SAAS6C;aAC7BzF,WAAW,MAAM,CAAC4C;QACvB8C,IAAAA,mCAAAA,SAAAA,AAAAA,EAAUtC,aAAaqC;QACvB1B,KAAK,WAAW,CAAC0B;IACnB,GACA;QAAC1B,KAAK,WAAW;QAAEnB;KAAQ;IAE7B,MAAM+C,iBAAiBlE,AAAAA,IAAAA,+BAAAA,WAAAA,AAAAA,EACrB,CAACgE,OAAgCC,AAAAA,IAAAA,mCAAAA,SAAAA,AAAAA,EAAU7D,UAAU4D,OACrD;QAAC5D;KAAS;IAGZpC,uBAAuB;QACrB,MAAMmG,UAAU9B,oBAAoBlC,WAAW,OAAO;QACtD,IAAI,CAACgE,WAAW,CAACvC,SAAS;QAC1BU,KAAK,YAAY,CACfvB,WACI;YACE,uBAAuB,IAAO;oBAC5B,GAAGA,SAAS,CAAC;oBACb,GAAGA,SAAS,CAAC;oBACb,KAAKA,SAAS,CAAC;oBACf,QAAQA,SAAS,CAAC;oBAClB,MAAMA,SAAS,CAAC;oBAChB,OAAOA,SAAS,CAAC;oBACjB,OAAO;oBACP,QAAQ;gBACV;QACF,IACAoD;QAEN,MAAMC,YAAY;YAChB,IAAIC,iBAAqCF;YACzC,MAAOE,kBAAkB,CAACA,eAAe,YAAY,CAAC,oBACpDA,iBAAiBC,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeD;YAClCpC,mBAAmBoC,gBAAgB,aAAa,uBAAuB/F;YACvE,MAAMiG,YAAYC,AAAAA,IAAAA,6CAAAA,kBAAAA,AAAAA,EAAmBL;YACrC,IAAIvD,sBAGF;gBAAA,KAAK,MAAMjD,OAAOC,OAAO,IAAI,CAAC2G,WAC5B,IACE,4DAA4D,IAAI,CAAC5G,QACjEA,AAAQ,oCAARA,KAEA,OAAO4G,SAAS,CAAC5G,IAA0B;YAE/C;YAEFoE,SAASwC;QACX;QACAH;QACA,MAAMK,WAAW,IAAIC,iBAAiBN;QACtC,IAAIO,WAA+BR;QACnC,MAAOQ,SAAU;YACfF,SAAS,OAAO,CAACE,UAAU;gBACzB,YAAY;gBACZ,iBAAiB;oBAAC;oBAAS;oBAAS;oBAAmB;oBAAoB;iBAAM;YACnF;YACAA,WAAWL,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeK;QAC5B;QACA,OAAO,IAAMF,SAAS,UAAU;IAClC,GAAG;QAACtE;QAAYkC;QAAkBC,KAAK,YAAY;QAAEV;QAASb;QAAUH;KAAqB;IAE7F5C,uBAAuB;QAErB,IAAI8B,QAAQ8B,SAAca;IAC5B,GAAG;QAAC3C;QAAM8B;QAASa;KAAO;IAE1B,IAAI,CAACb,WAAW,AAAoB,MAApB,OAAOgD,UAA0B,OAAO;IACxD,MAAMC,gBAAgD,CAAC;IACvD,MAAMC,YAAY;QAAE,GAAG5D,KAAK;IAAC;IAC7B,KAAK,MAAMvD,OAAOC,OAAO,IAAI,CAACkH,WAC5B,IAAInH,AAAQ,SAARA,OAAgBA,AAAQ,WAARA,OAAkBA,AAAQ,eAARA,OAAsBA,IAAI,UAAU,CAAC,UAAU;QACnFC,OAAO,MAAM,CAACiH,eAAe;YAAE,CAAClH,IAAI,EAAEmH,SAAS,CAACnH,IAA8B;QAAC;QAC/E,OAAOmH,SAAS,CAACnH,IAA8B;IACjD;IAEF,OAAOoH,AAAA,WAAP,GAAOA,IAAAA,mCAAAA,YAAAA,AAAAA,EACL,AADkB,WAADA,GACjB,qCAAC3G,YAAY,QAAQ;QAAC,OAAO+C;kBAC3B,mDAAC6D,8BAAAA,gBAAgBA,EAAAA;YACd,GAAGF,SAAS;YACb,KAAKZ;YACL,SAASH;YACT,eAAec;YACf,mBAAkB;YAClB,MAAM3D,MAAM,IAAI,IAAI;YACpB,UAAUA,MAAM,QAAQ,IAAI;YAC5B,mBAAmB;YACnB,mBAAiBO;YACjB,mBAAiBN;YACjB,0BAAwBE;YACxB,oBAAkBE,AAAwB,UAAxBA,OAAO,KAAK,CAAC,MAAM,GAAa,QAAQS;YAC1D,aAAWU,kBAAkB,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1C,cAAYA,kBAAkB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;YAC/C,KAAKxB,MAAM,GAAG,IAAIY,MAAM,SAAS,IAAIP,OAAO,SAAS;YACrD,MAAML,MAAM,IAAI,IAAIK,OAAO,MAAM;YACjC,cAAYzB,OAAO,SAAS;YAC5B,mBAAiB0C,gBAAgB,CAAC1C;YAClC,eAAa,CAACA,QAAQxB;YACrB,GAAG2G,AAAAA,IAAAA,mCAAAA,UAAAA,AAAAA,EAAW,CAACnF,KAAK;YACrB,OAAO;gBAAE,GAAGgC,KAAK;gBAAE,GAAGd,KAAK;gBAAE,GAAIlB,OAAOyC,iBAAiBJ,iBAAiB,OAAO;YAAE;sBAElFrB,SACGA,OAAOhB,OAAOmB,WAAWmB,eAAe,OAAO,IAC/CtC,OACEmB,WACAmB,eAAe,OAAO;;QAG/B,CAAqB,cAArB,OAAOvB,YAA2BA,cAAcA,SAAQ,KACvDU,OAAO,iBAAiB,QACxBqD,SAAS,IAAI;AAEnB;AAGO,SAASM,mBACdpF,IAAa,EACbqF,OAAkE,EAClEhF,UAAyC,EACzCC,QAAuC,EACvCgF,cAA6CjF,UAAU;IAEvD,MAAMkF,WAAWxF,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAOsF;IACxBE,SAAS,OAAO,GAAGF;IACnBjH,IAAAA,+BAAAA,SAAAA,AAAAA,EAAU;QACR,IAAI,CAAC4B,MACH;QAEFrB,aAAa,IAAI,CAAC2B;QAElB,MAAMkF,oBAAoB,CAACC;YACzB,MAAM5G,SAAS4G,MAAM,YAAY,EAAE,CAAC,EAAE,IAAIA,MAAM,MAAM;YACtD,IAAI,CAAE5G,CAAAA,kBAAkB6G,IAAG,GACzB;YAEF,MAAMC,QAAQ9G,kBAAkBI,UAAUJ,OAAO,OAAO,CAAC,WAAW;YACpE,MAAM+G,kBAAkBD,OAAO;YAC/B,IACEL,YAAY,OAAO,EAAE,SAASzG,WAC9BD,YAAYC,QAAQyB,SAAS,OAAO,KACnCsF,mBAAmBN,YAAY,OAAO,EAAE,SAASM,kBAElD;YAEFL,SAAS,OAAO,CAAC;QACnB;QAEA,MAAMM,gBAAgB,CAACJ;YACrB,IAAIA,MAAM,gBAAgB,IAAI9G,aAAa,EAAE,CAAC,QAAQ2B,UAAU;YAChE,IAAImF,AAAc,aAAdA,MAAM,GAAG,EAAe;gBAC1BA,MAAM,cAAc;gBACpBA,MAAM,eAAe;gBACrBF,SAAS,OAAO,CAAC;gBACjBlF,WAAW,OAAO,EAAE;YACtB,OAAO,IAAIoF,AAAc,UAAdA,MAAM,GAAG,EAAY;gBAC9B,MAAM3G,QAAQwB,SAAS,OAAO;gBAC9B,MAAM+D,UAAUhE,WAAW,OAAO;gBAClC,MAAMyF,SAASC,AAAAA,IAAAA,iCAAAA,iBAAAA,AAAAA;gBACf,IAAI,CAACjH,SAAS,CAACuF,WAAW,CAACvF,MAAM,QAAQ,CAACgH,SAAS;gBACnD,MAAME,QAAQC,AAAAA,IAAAA,kCAAAA,QAAAA,AAAAA,EAASnH,OAAO;oBAC5B,eAAe,CAACoH,UAAYA,QAAQ,UAAU,IAAI1H;gBACpD;gBACA,MAAM2H,QAAQL,kBAAkBM,cAAcJ,MAAM,OAAO,CAACF,UAAU;gBACtE,MAAMO,UAAUZ,MAAM,QAAQ,GAAGU,SAAS,IAAIA,UAAUH,MAAM,MAAM,GAAG;gBACvE,IAAI,CAACK,SAAS;gBACdZ,MAAM,cAAc;gBACpBF,SAAS,OAAO,CAAC;gBACjB,IAAIE,MAAM,QAAQ,EAAEpB,QAAQ,KAAK;qBAC5B;oBACH,MAAMiC,YAAYL,AAAAA,IAAAA,kCAAAA,QAAAA,AAAAA,EAASnB,SAAS,IAAI,EAAE;wBACxC,eAAe,CAACoB,UAAYA,QAAQ,UAAU,IAAI1H;oBACpD,GAAG,MAAM,CAAC,CAAC+H,OAAS,CAACzH,MAAM,QAAQ,CAACyH;oBACpC,MAAMC,eAAeF,UAAU,OAAO,CAACjC;oBACtCiC,CAAAA,SAAS,CAACE,eAAe,EAAE,IAAInC,OAAM,EAAG,KAAK;gBAChD;YACF;QACF;QAEA,MAAMoC,cAAc,CAAChB;YACnB,MAAM5G,SAAS6H,AAAAA,IAAAA,iCAAAA,mBAAAA,AAAAA,EAAoBjB;YACnC,IACE5G,kBAAkB6G,QAClB,CAACJ,YAAY,OAAO,EAAE,SAASzG,WAC/B,CAACD,YAAYC,QAAQyB,SAAS,OAAO,GAErCiF,SAAS,OAAO,CAAC;QACrB;QAEAT,SAAS,gBAAgB,CAAC,eAAeU;QACzCV,SAAS,gBAAgB,CAAC,WAAWe,eAAe;QACpDf,SAAS,gBAAgB,CAAC,WAAW2B;QACrC,OAAO;YACL,MAAMN,QAAQxH,aAAa,OAAO,CAAC2B;YACnC,IAAI6F,SAAS,GAAGxH,aAAa,MAAM,CAACwH,OAAO;YAC3CrB,SAAS,mBAAmB,CAAC,eAAeU;YAC5CV,SAAS,mBAAmB,CAAC,WAAWe,eAAe;YACvDf,SAAS,mBAAmB,CAAC,WAAW2B;QAC1C;IACF,GAAG;QAACzG;QAAMM;QAAUD;QAAYiF;KAAY;AAC9C;AAGO,SAASqB,gBACd3G,IAAa,EACb4G,QAA4B,EAC5BtG,QAAwC;IAExClC,IAAAA,+BAAAA,SAAAA,AAAAA,EAAU;QACR,IAAI,CAAC4B,QAAQ,CAAC4G,UAAU;QACxB,MAAMC,OAAOvG,UAAU,SAAS;QAChC,MAAMwG,QAAQD,gBAAgBE,aAAaF,OAAO/B;QAClDgC,MAAM,cAAc,CAACF,WAAW,iBAAiB;YAAE,OAAO;QAAU;IACtE,GAAG;QAAC5G;QAAM4G;QAAUtG;KAAS;AAC/B"}
|
|
@@ -19,6 +19,8 @@ interface FloatingPanelProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
19
19
|
maxWidth?: CSSProperties['maxWidth'];
|
|
20
20
|
maxHeight?: CSSProperties['maxHeight'];
|
|
21
21
|
placement?: Placement;
|
|
22
|
+
sideFallback?: boolean;
|
|
23
|
+
resetSurfaceGeometry?: boolean;
|
|
22
24
|
container?: Element | DocumentFragment | (() => Element | DocumentFragment);
|
|
23
25
|
render?: (content: React.ReactNode) => React.ReactNode;
|
|
24
26
|
position?: {
|
|
@@ -27,7 +29,7 @@ interface FloatingPanelProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
27
29
|
};
|
|
28
30
|
}
|
|
29
31
|
/** Position a lazily mounted portal, preserving the trigger's scoped theme. */
|
|
30
|
-
export declare function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth, maxWidth, maxHeight, placement, container, render, position, style, children, ...props }: FloatingPanelProps): import("react").ReactPortal | null;
|
|
32
|
+
export declare function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth, maxWidth, maxHeight, placement, sideFallback, resetSurfaceGeometry, container, render, position, style, children, ...props }: FloatingPanelProps): import("react").ReactPortal | null;
|
|
31
33
|
/** Close a custom floating panel when focus leaves it or Escape is pressed. */
|
|
32
34
|
export declare function useFloatingDismiss(open: boolean, onClose: (reason?: 'escape' | 'outside' | 'focus' | 'tab') => void, triggerRef: RefObject<HTMLElement | null>, panelRef: RefObject<HTMLElement | null>, boundaryRef?: RefObject<HTMLElement | null>): void;
|
|
33
35
|
/** Keep keyboard-highlighted options visible without animated scrolling. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floating.d.cts","sourceRoot":"","sources":["../../../src/shared/floating.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,SAAS,EAQf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"floating.d.cts","sourceRoot":"","sources":["../../../src/shared/floating.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,SAAS,EAQf,MAAM,OAAO,CAAC;AAiCf,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,QAAQ,CAAC,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,EACtC,cAAc,CAAC,EAAE,OAAO,EACxB,WAAW,UAAQ,6BAQV,OAAO,WAYjB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,OAAO,GAAG,gBAAgB,CAAC;CACtD;AACD,UAAU,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC1C,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,GAAG,gBAAgB,GAAG,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC;IAC5E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAA0B,EAC1B,YAAoB,EACpB,oBAA4B,EAC5B,SAAS,EACT,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,sCAqMpB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,KAAK,IAAI,EAClE,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACzC,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACvC,WAAW,GAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAc,QA+ExD;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QAQzC"}
|
|
@@ -36,6 +36,7 @@ const external_react_namespaceObject = require("react");
|
|
|
36
36
|
const external_react_dom_namespaceObject = require("react-dom");
|
|
37
37
|
const context_cjs_namespaceObject = require("../config-provider/context.cjs");
|
|
38
38
|
const external_dom_cjs_namespaceObject = require("./dom.cjs");
|
|
39
|
+
const external_theme_variables_cjs_namespaceObject = require("./theme-variables.cjs");
|
|
39
40
|
function ScopedPortal({ children, container }) {
|
|
40
41
|
const config = (0, context_cjs_namespaceObject.useLeafConfig)();
|
|
41
42
|
const anchor = (0, external_react_namespaceObject.useRef)(null);
|
|
@@ -44,29 +45,7 @@ function ScopedPortal({ children, container }) {
|
|
|
44
45
|
const node = anchor.current;
|
|
45
46
|
if (!node) return;
|
|
46
47
|
const sync = ()=>{
|
|
47
|
-
|
|
48
|
-
const next = {
|
|
49
|
-
colorScheme: computed.colorScheme,
|
|
50
|
-
direction: computed.direction
|
|
51
|
-
};
|
|
52
|
-
const keys = new Set();
|
|
53
|
-
for(let i = 0; i < computed.length; i++){
|
|
54
|
-
const key = computed.item(i);
|
|
55
|
-
if (key.startsWith('--leaf-')) keys.add(key);
|
|
56
|
-
}
|
|
57
|
-
let owner = (0, external_dom_cjs_namespaceObject.composedParent)(node);
|
|
58
|
-
while(owner){
|
|
59
|
-
for(let i = 0; i < owner.style.length; i++){
|
|
60
|
-
const key = owner.style.item(i);
|
|
61
|
-
if (key.startsWith('--leaf-')) keys.add(key);
|
|
62
|
-
}
|
|
63
|
-
owner = (0, external_dom_cjs_namespaceObject.composedParent)(owner);
|
|
64
|
-
}
|
|
65
|
-
for (const key of keys){
|
|
66
|
-
const value = computed.getPropertyValue(key);
|
|
67
|
-
if (value.trim()) next[key] = value;
|
|
68
|
-
}
|
|
69
|
-
setStyle(next);
|
|
48
|
+
setStyle((0, external_theme_variables_cjs_namespaceObject.readThemeVariables)((0, external_dom_cjs_namespaceObject.composedParent)(node) ?? node));
|
|
70
49
|
};
|
|
71
50
|
sync();
|
|
72
51
|
const observer = new MutationObserver(sync);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared/scoped-portal.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/shared/scoped-portal.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type ReactNode, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLeafConfig } from '../config-provider/context';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedParent } from './dom';\n\n/** Transfer inherited variables into a portal without moving the React context. */\nexport function ScopedPortal({\n children,\n container,\n}: {\n children: ReactNode;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n}) {\n const config = useLeafConfig();\n const anchor = useRef<HTMLSpanElement>(null);\n const [style, setStyle] = useState<LeafThemeStyle>();\n useEffect(() => {\n const node = anchor.current;\n if (!node) return;\n const sync = () => {\n // Read the owning element; hidden markers can omit inherited custom\n // properties from computed-style enumeration in Firefox.\n
|
|
1
|
+
{"version":3,"file":"shared/scoped-portal.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/shared/scoped-portal.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type ReactNode, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLeafConfig } from '../config-provider/context';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedParent } from './dom';\nimport { readThemeVariables } from './theme-variables';\n\n/** Transfer inherited variables into a portal without moving the React context. */\nexport function ScopedPortal({\n children,\n container,\n}: {\n children: ReactNode;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n}) {\n const config = useLeafConfig();\n const anchor = useRef<HTMLSpanElement>(null);\n const [style, setStyle] = useState<LeafThemeStyle>();\n useEffect(() => {\n const node = anchor.current;\n if (!node) return;\n const sync = () => {\n // Read the owning element; hidden markers can omit inherited custom\n // properties from computed-style enumeration in Firefox.\n setStyle(readThemeVariables(composedParent(node) ?? node));\n };\n sync();\n const observer = new MutationObserver(sync);\n let parent: HTMLElement | null = node;\n while (parent) {\n observer.observe(parent, {\n attributes: true,\n attributeFilter: [\n 'style',\n 'class',\n 'data-leaf-theme',\n 'data-leaf-density',\n 'data-leaf-motion',\n 'dir',\n ],\n });\n parent = composedParent(parent);\n }\n return () => observer.disconnect();\n }, []);\n return (\n <>\n <span ref={anchor} hidden />\n {style &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n className=\"leaf-portal-scope\"\n lang={config.locale}\n dir={config.direction}\n data-leaf-density={config.density}\n data-leaf-motion={\n config.theme.motion === undefined ? undefined : config.theme.motion ? 'on' : 'off'\n }\n style={style}\n >\n {children}\n </div>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n )}\n </>\n );\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","ScopedPortal","children","container","config","useLeafConfig","anchor","useRef","style","setStyle","useState","useEffect","node","sync","readThemeVariables","composedParent","observer","MutationObserver","parent","document","createPortal","undefined"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;ACEO,SAASI,aAAa,EAC3BC,QAAQ,EACRC,SAAS,EAIV;IACC,MAAMC,SAASC,AAAAA,IAAAA,4BAAAA,aAAAA,AAAAA;IACf,MAAMC,SAASC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAwB;IACvC,MAAM,CAACC,OAAOC,SAAS,GAAGC,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA;IAC1BC,IAAAA,+BAAAA,SAAAA,AAAAA,EAAU;QACR,MAAMC,OAAON,OAAO,OAAO;QAC3B,IAAI,CAACM,MAAM;QACX,MAAMC,OAAO;YAGXJ,SAASK,AAAAA,IAAAA,6CAAAA,kBAAAA,AAAAA,EAAmBC,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeH,SAASA;QACtD;QACAC;QACA,MAAMG,WAAW,IAAIC,iBAAiBJ;QACtC,IAAIK,SAA6BN;QACjC,MAAOM,OAAQ;YACbF,SAAS,OAAO,CAACE,QAAQ;gBACvB,YAAY;gBACZ,iBAAiB;oBACf;oBACA;oBACA;oBACA;oBACA;oBACA;iBACD;YACH;YACAA,SAASH,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeG;QAC1B;QACA,OAAO,IAAMF,SAAS,UAAU;IAClC,GAAG,EAAE;IACL,OACE,AADK,WAAP,GACE;;0BACE,qCAAC;gBAAK,KAAKV;gBAAQ,QAAM;;YACxBE,SACC,AAAoB,MAApB,OAAOW,YACPC,AADoB,cACpBA,IAAAA,mCAAAA,YAAAA,AAAAA,EACE,AADW,WAADA,GACV,qCAAC;gBACC,WAAU;gBACV,MAAMhB,OAAO,MAAM;gBACnB,KAAKA,OAAO,SAAS;gBACrB,qBAAmBA,OAAO,OAAO;gBACjC,oBACEA,AAAwBiB,WAAxBjB,OAAO,KAAK,CAAC,MAAM,GAAiBiB,SAAYjB,OAAO,KAAK,CAAC,MAAM,GAAG,OAAO;gBAE/E,OAAOI;0BAENN;gBAEF,CAAqB,cAArB,OAAOC,YAA2BA,cAAcA,SAAQ,KACvDC,OAAO,iBAAiB,QACxBe,SAAS,IAAI;;;AAIzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-portal.d.cts","sourceRoot":"","sources":["../../../src/shared/scoped-portal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"scoped-portal.d.cts","sourceRoot":"","sources":["../../../src/shared/scoped-portal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAOpE,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,GAAG,gBAAgB,GAAG,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC;CAC7E,+BAuDA"}
|
|
@@ -29,15 +29,37 @@ var __webpack_require__ = {};
|
|
|
29
29
|
var __webpack_exports__ = {};
|
|
30
30
|
__webpack_require__.r(__webpack_exports__);
|
|
31
31
|
__webpack_require__.d(__webpack_exports__, {
|
|
32
|
-
|
|
32
|
+
readThemeVariables: ()=>readThemeVariables
|
|
33
33
|
});
|
|
34
|
-
const
|
|
35
|
-
|
|
34
|
+
const external_dom_cjs_namespaceObject = require("./dom.cjs");
|
|
35
|
+
function readThemeVariables(source) {
|
|
36
|
+
const computed = getComputedStyle(source);
|
|
37
|
+
const variables = {
|
|
38
|
+
colorScheme: computed.colorScheme,
|
|
39
|
+
direction: computed.direction
|
|
40
|
+
};
|
|
41
|
+
const keys = new Set();
|
|
42
|
+
for(let index = 0; index < computed.length; index++){
|
|
43
|
+
const key = computed.item(index);
|
|
44
|
+
if (key.startsWith('--leaf-')) keys.add(key);
|
|
45
|
+
}
|
|
46
|
+
let owner = source;
|
|
47
|
+
while(owner){
|
|
48
|
+
for(let index = 0; index < owner.style.length; index++){
|
|
49
|
+
const key = owner.style.item(index);
|
|
50
|
+
if (key.startsWith('--leaf-')) keys.add(key);
|
|
51
|
+
}
|
|
52
|
+
owner = (0, external_dom_cjs_namespaceObject.composedParent)(owner);
|
|
53
|
+
}
|
|
54
|
+
for (const key of keys)variables[key] = computed.getPropertyValue(key) || 'initial';
|
|
55
|
+
return variables;
|
|
56
|
+
}
|
|
57
|
+
exports.readThemeVariables = __webpack_exports__.readThemeVariables;
|
|
36
58
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
37
|
-
"
|
|
59
|
+
"readThemeVariables"
|
|
38
60
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
39
61
|
Object.defineProperty(exports, '__esModule', {
|
|
40
62
|
value: true
|
|
41
63
|
});
|
|
42
64
|
|
|
43
|
-
//# sourceMappingURL=
|
|
65
|
+
//# sourceMappingURL=theme-variables.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared/theme-variables.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/shared/theme-variables.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { LeafThemeStyle } from '../theme';\nimport { composedParent } from './dom';\n\n/** Snapshot effective theme values, including explicit resets, across a portal boundary. */\nexport function readThemeVariables(source: HTMLElement): LeafThemeStyle {\n const computed = getComputedStyle(source);\n const variables: LeafThemeStyle = {\n colorScheme: computed.colorScheme,\n direction: computed.direction as LeafThemeStyle['direction'],\n };\n const keys = new Set<string>();\n for (let index = 0; index < computed.length; index++) {\n const key = computed.item(index);\n if (key.startsWith('--leaf-')) keys.add(key);\n }\n // Engines can omit inherited or guaranteed-invalid custom properties from\n // enumeration. Provider resets are inline, so include the composed ancestry.\n let owner: HTMLElement | null = source;\n while (owner) {\n for (let index = 0; index < owner.style.length; index++) {\n const key = owner.style.item(index);\n if (key.startsWith('--leaf-')) keys.add(key);\n }\n owner = composedParent(owner);\n }\n for (const key of keys) {\n // Empty computed values include the guaranteed-invalid value produced by\n // `initial`. Writing '' would remove the inline declaration in React and\n // inherit the destination container's theme instead of retaining the reset.\n variables[key as `--leaf-${string}`] = computed.getPropertyValue(key) || 'initial';\n }\n return variables;\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","readThemeVariables","source","computed","getComputedStyle","variables","keys","Set","index","owner","composedParent"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;ACFO,SAASI,mBAAmBC,MAAmB;IACpD,MAAMC,WAAWC,iBAAiBF;IAClC,MAAMG,YAA4B;QAChC,aAAaF,SAAS,WAAW;QACjC,WAAWA,SAAS,SAAS;IAC/B;IACA,MAAMG,OAAO,IAAIC;IACjB,IAAK,IAAIC,QAAQ,GAAGA,QAAQL,SAAS,MAAM,EAAEK,QAAS;QACpD,MAAMZ,MAAMO,SAAS,IAAI,CAACK;QAC1B,IAAIZ,IAAI,UAAU,CAAC,YAAYU,KAAK,GAAG,CAACV;IAC1C;IAGA,IAAIa,QAA4BP;IAChC,MAAOO,MAAO;QACZ,IAAK,IAAID,QAAQ,GAAGA,QAAQC,MAAM,KAAK,CAAC,MAAM,EAAED,QAAS;YACvD,MAAMZ,MAAMa,MAAM,KAAK,CAAC,IAAI,CAACD;YAC7B,IAAIZ,IAAI,UAAU,CAAC,YAAYU,KAAK,GAAG,CAACV;QAC1C;QACAa,QAAQC,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeD;IACzB;IACA,KAAK,MAAMb,OAAOU,KAIhBD,SAAS,CAACT,IAA0B,GAAGO,SAAS,gBAAgB,CAACP,QAAQ;IAE3E,OAAOS;AACT"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { LeafThemeStyle } from '../theme.cjs';
|
|
2
|
+
/** Snapshot effective theme values, including explicit resets, across a portal boundary. */
|
|
3
|
+
export declare function readThemeVariables(source: HTMLElement): LeafThemeStyle;
|
|
4
|
+
//# sourceMappingURL=theme-variables.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-variables.d.cts","sourceRoot":"","sources":["../../../src/shared/theme-variables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CA4BtE"}
|
|
@@ -36,6 +36,7 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
|
36
36
|
const external_react_namespaceObject = require("react");
|
|
37
37
|
const component_defaults_cjs_namespaceObject = require("../config-provider/component-defaults.cjs");
|
|
38
38
|
const context_cjs_namespaceObject = require("../config-provider/context.cjs");
|
|
39
|
+
const scrollbar_cjs_namespaceObject = require("../scrollbar/scrollbar.cjs");
|
|
39
40
|
const classes_cjs_namespaceObject = require("../shared/classes.cjs");
|
|
40
41
|
const inert_cjs_namespaceObject = require("../shared/inert.cjs");
|
|
41
42
|
const use_controllable_cjs_namespaceObject = require("../shared/use-controllable.cjs");
|
|
@@ -101,8 +102,10 @@ function Splitter(rawProps) {
|
|
|
101
102
|
display: 'contents'
|
|
102
103
|
},
|
|
103
104
|
children: [
|
|
104
|
-
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
105
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(scrollbar_cjs_namespaceObject.ScrollbarControl, {
|
|
105
106
|
className: "leaf-splitter__panel",
|
|
107
|
+
role: "presentation",
|
|
108
|
+
tabIndex: -1,
|
|
106
109
|
"data-collapsed": 0 === normalized[index] || void 0,
|
|
107
110
|
...(0, inert_cjs_namespaceObject.inertProps)(0 === normalized[index]),
|
|
108
111
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitter/splitter.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/splitter/splitter.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type HTMLAttributes, type ReactNode, useEffect, useRef } from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { classes } from '../shared/classes';\nimport { inertProps } from '../shared/inert';\nimport { useControllable } from '../shared/use-controllable';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nexport interface SplitterPanel {\n key: string;\n children: ReactNode;\n min?: number;\n max?: number;\n collapsible?: boolean;\n resizable?: boolean;\n}\nexport interface SplitterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onResize'> {\n panels: readonly SplitterPanel[];\n sizes?: readonly number[];\n defaultSizes?: readonly number[];\n onResize?: (sizes: number[]) => void;\n onResizeEnd?: (sizes: number[]) => void;\n direction?: 'horizontal' | 'vertical';\n}\nexport function Splitter(rawProps: SplitterProps) {\n const {\n panels,\n sizes,\n defaultSizes,\n onResize,\n onResizeEnd,\n direction = 'horizontal',\n className,\n style,\n ...props\n } = useComponentProps('Splitter', rawProps);\n const t = useText();\n const format = useFormattedText();\n const config = useLeafConfig();\n const root = useRef<HTMLDivElement>(null);\n const [current, setCurrent] = useControllable<readonly number[]>(\n sizes,\n defaultSizes ?? panels.map(() => 100 / Math.max(1, panels.length)),\n (next) => onResize?.([...next]),\n );\n const sum = current.reduce(\n (total, value) => total + (Number.isFinite(value) ? Math.max(0, value) : 0),\n 0,\n );\n const normalized =\n panels.length === current.length && sum > 0\n ? current.map((value) => (Math.max(0, value) * 100) / sum)\n : panels.map(() => 100 / Math.max(1, panels.length));\n const latest = useRef<readonly number[]>(normalized);\n latest.current = normalized;\n const stopDragging = useRef<(() => void) | undefined>(undefined);\n useEffect(() => () => stopDragging.current?.(), []);\n const collapsed = useRef(new Map<number, number>());\n const horizontal = direction === 'horizontal';\n const pair = (index: number, amount: number, source: readonly number[] = latest.current) => {\n const next = [...source];\n const total = (source[index] ?? 0) + (source[index + 1] ?? 0);\n const first = panels[index],\n second = panels[index + 1];\n if (!first || !second) return;\n const low = Math.max(first.min ?? 5, total - (second.max ?? 100));\n const high = Math.min(first.max ?? 100, total - (second.min ?? 5));\n if (low > high) return;\n next[index] = Math.min(high, Math.max(low, (source[index] ?? 0) + amount));\n next[index + 1] = total - (next[index] ?? 0);\n latest.current = next;\n setCurrent(next);\n };\n const toggle = (index: number) => {\n const next = [...latest.current],\n size = next[index] ?? 0;\n if (size) {\n collapsed.current.set(index, size);\n next[index + 1] = (next[index + 1] ?? 0) + size;\n next[index] = 0;\n } else {\n const restore = Math.min(\n collapsed.current.get(index) ?? 25,\n Math.max(0, (next[index + 1] ?? 0) - (panels[index + 1]?.min ?? 5)),\n );\n next[index] = restore;\n next[index + 1] = (next[index + 1] ?? 0) - restore;\n }\n latest.current = next;\n setCurrent(next);\n onResizeEnd?.(next);\n };\n return (\n <div\n {...props}\n ref={root}\n className={classes('leaf-splitter', `leaf-splitter--${direction}`, className)}\n style={style}\n >\n {panels.map((panel, index) => (\n <div key={panel.key} className=\"leaf-splitter__unit\" style={{ display: 'contents' }}>\n <div\n className=\"leaf-splitter__panel\"\n data-collapsed={normalized[index] === 0 || undefined}\n {...inertProps(normalized[index] === 0)}\n style={{ flexBasis: `${normalized[index] ?? 0}%`, flexGrow: 0, flexShrink: 1 }}\n >\n {panel.children}\n </div>\n {index < panels.length - 1 && (\n // biome-ignore lint/a11y/useSemanticElements: An adjustable, focusable splitter follows the ARIA window-splitter pattern; a static hr cannot contain its collapse button.\n <div\n role=\"separator\"\n tabIndex={panel.resizable === false ? -1 : 0}\n aria-label={format('splitter.resizePanel', { index: index + 1 })}\n aria-orientation={horizontal ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(current[index] ?? 0)}\n aria-valuemin={panel.min ?? 0}\n aria-valuemax={panel.max ?? 100}\n className=\"leaf-splitter__handle\"\n onPointerDown={(event) => {\n if (panel.resizable === false || !root.current) return;\n stopDragging.current?.();\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n const start = horizontal ? event.clientX : event.clientY;\n const source = [...latest.current];\n const rect = root.current.getBoundingClientRect();\n const length = horizontal ? rect.width : rect.height;\n const move = (event: PointerEvent) =>\n pair(\n index,\n (((horizontal ? event.clientX : event.clientY) - start) / Math.max(1, length)) *\n 100 *\n (horizontal && config.direction === 'rtl' ? -1 : 1),\n source,\n );\n const cleanup = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', end);\n window.removeEventListener('pointercancel', end);\n };\n const end = () => {\n cleanup();\n onResizeEnd?.([...latest.current]);\n };\n stopDragging.current = cleanup;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', end, { once: true });\n window.addEventListener('pointercancel', end, { once: true });\n }}\n onDoubleClick={() => {\n if (panel.collapsible) toggle(index);\n }}\n onKeyDown={(event) => {\n const plus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight'\n : 'ArrowDown';\n const minus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft'\n : 'ArrowUp';\n if (event.key === plus || event.key === minus) {\n event.preventDefault();\n pair(index, (event.key === plus ? 1 : -1) * (event.shiftKey ? 10 : 2));\n onResizeEnd?.([...latest.current]);\n }\n if (event.key === 'Enter' && panel.collapsible) {\n event.preventDefault();\n toggle(index);\n }\n }}\n >\n {panel.collapsible && (\n <button\n type=\"button\"\n aria-label={t('splitter.togglePanel')}\n onPointerDown={(event) => event.stopPropagation()}\n onClick={() => toggle(index)}\n >\n {current[index] === 0 ? '+' : '−'}\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n}\nexport const ResizablePanels = Splitter;\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","Splitter","rawProps","panels","sizes","defaultSizes","onResize","onResizeEnd","direction","className","style","props","useComponentProps","t","useText","format","useFormattedText","config","useLeafConfig","root","useRef","current","setCurrent","useControllable","Math","next","sum","total","value","Number","normalized","latest","stopDragging","undefined","useEffect","collapsed","Map","horizontal","pair","index","amount","source","first","second","low","high","toggle","size","restore","classes","panel","inertProps","event","start","rect","length","move","cleanup","window","end","plus","minus","ResizablePanels"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"splitter/splitter.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../src/splitter/splitter.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type HTMLAttributes, type ReactNode, useEffect, useRef } from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { inertProps } from '../shared/inert';\nimport { useControllable } from '../shared/use-controllable';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nexport interface SplitterPanel {\n key: string;\n children: ReactNode;\n min?: number;\n max?: number;\n collapsible?: boolean;\n resizable?: boolean;\n}\nexport interface SplitterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onResize'> {\n panels: readonly SplitterPanel[];\n sizes?: readonly number[];\n defaultSizes?: readonly number[];\n onResize?: (sizes: number[]) => void;\n onResizeEnd?: (sizes: number[]) => void;\n direction?: 'horizontal' | 'vertical';\n}\nexport function Splitter(rawProps: SplitterProps) {\n const {\n panels,\n sizes,\n defaultSizes,\n onResize,\n onResizeEnd,\n direction = 'horizontal',\n className,\n style,\n ...props\n } = useComponentProps('Splitter', rawProps);\n const t = useText();\n const format = useFormattedText();\n const config = useLeafConfig();\n const root = useRef<HTMLDivElement>(null);\n const [current, setCurrent] = useControllable<readonly number[]>(\n sizes,\n defaultSizes ?? panels.map(() => 100 / Math.max(1, panels.length)),\n (next) => onResize?.([...next]),\n );\n const sum = current.reduce(\n (total, value) => total + (Number.isFinite(value) ? Math.max(0, value) : 0),\n 0,\n );\n const normalized =\n panels.length === current.length && sum > 0\n ? current.map((value) => (Math.max(0, value) * 100) / sum)\n : panels.map(() => 100 / Math.max(1, panels.length));\n const latest = useRef<readonly number[]>(normalized);\n latest.current = normalized;\n const stopDragging = useRef<(() => void) | undefined>(undefined);\n useEffect(() => () => stopDragging.current?.(), []);\n const collapsed = useRef(new Map<number, number>());\n const horizontal = direction === 'horizontal';\n const pair = (index: number, amount: number, source: readonly number[] = latest.current) => {\n const next = [...source];\n const total = (source[index] ?? 0) + (source[index + 1] ?? 0);\n const first = panels[index],\n second = panels[index + 1];\n if (!first || !second) return;\n const low = Math.max(first.min ?? 5, total - (second.max ?? 100));\n const high = Math.min(first.max ?? 100, total - (second.min ?? 5));\n if (low > high) return;\n next[index] = Math.min(high, Math.max(low, (source[index] ?? 0) + amount));\n next[index + 1] = total - (next[index] ?? 0);\n latest.current = next;\n setCurrent(next);\n };\n const toggle = (index: number) => {\n const next = [...latest.current],\n size = next[index] ?? 0;\n if (size) {\n collapsed.current.set(index, size);\n next[index + 1] = (next[index + 1] ?? 0) + size;\n next[index] = 0;\n } else {\n const restore = Math.min(\n collapsed.current.get(index) ?? 25,\n Math.max(0, (next[index + 1] ?? 0) - (panels[index + 1]?.min ?? 5)),\n );\n next[index] = restore;\n next[index + 1] = (next[index + 1] ?? 0) - restore;\n }\n latest.current = next;\n setCurrent(next);\n onResizeEnd?.(next);\n };\n return (\n <div\n {...props}\n ref={root}\n className={classes('leaf-splitter', `leaf-splitter--${direction}`, className)}\n style={style}\n >\n {panels.map((panel, index) => (\n <div key={panel.key} className=\"leaf-splitter__unit\" style={{ display: 'contents' }}>\n <ScrollbarControl\n className=\"leaf-splitter__panel\"\n role=\"presentation\"\n tabIndex={-1}\n data-collapsed={normalized[index] === 0 || undefined}\n {...inertProps(normalized[index] === 0)}\n style={{ flexBasis: `${normalized[index] ?? 0}%`, flexGrow: 0, flexShrink: 1 }}\n >\n {panel.children}\n </ScrollbarControl>\n {index < panels.length - 1 && (\n // biome-ignore lint/a11y/useSemanticElements: An adjustable, focusable splitter follows the ARIA window-splitter pattern; a static hr cannot contain its collapse button.\n <div\n role=\"separator\"\n tabIndex={panel.resizable === false ? -1 : 0}\n aria-label={format('splitter.resizePanel', { index: index + 1 })}\n aria-orientation={horizontal ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(current[index] ?? 0)}\n aria-valuemin={panel.min ?? 0}\n aria-valuemax={panel.max ?? 100}\n className=\"leaf-splitter__handle\"\n onPointerDown={(event) => {\n if (panel.resizable === false || !root.current) return;\n stopDragging.current?.();\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n const start = horizontal ? event.clientX : event.clientY;\n const source = [...latest.current];\n const rect = root.current.getBoundingClientRect();\n const length = horizontal ? rect.width : rect.height;\n const move = (event: PointerEvent) =>\n pair(\n index,\n (((horizontal ? event.clientX : event.clientY) - start) / Math.max(1, length)) *\n 100 *\n (horizontal && config.direction === 'rtl' ? -1 : 1),\n source,\n );\n const cleanup = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', end);\n window.removeEventListener('pointercancel', end);\n };\n const end = () => {\n cleanup();\n onResizeEnd?.([...latest.current]);\n };\n stopDragging.current = cleanup;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', end, { once: true });\n window.addEventListener('pointercancel', end, { once: true });\n }}\n onDoubleClick={() => {\n if (panel.collapsible) toggle(index);\n }}\n onKeyDown={(event) => {\n const plus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight'\n : 'ArrowDown';\n const minus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft'\n : 'ArrowUp';\n if (event.key === plus || event.key === minus) {\n event.preventDefault();\n pair(index, (event.key === plus ? 1 : -1) * (event.shiftKey ? 10 : 2));\n onResizeEnd?.([...latest.current]);\n }\n if (event.key === 'Enter' && panel.collapsible) {\n event.preventDefault();\n toggle(index);\n }\n }}\n >\n {panel.collapsible && (\n <button\n type=\"button\"\n aria-label={t('splitter.togglePanel')}\n onPointerDown={(event) => event.stopPropagation()}\n onClick={() => toggle(index)}\n >\n {current[index] === 0 ? '+' : '−'}\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n}\nexport const ResizablePanels = Splitter;\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","Splitter","rawProps","panels","sizes","defaultSizes","onResize","onResizeEnd","direction","className","style","props","useComponentProps","t","useText","format","useFormattedText","config","useLeafConfig","root","useRef","current","setCurrent","useControllable","Math","next","sum","total","value","Number","normalized","latest","stopDragging","undefined","useEffect","collapsed","Map","horizontal","pair","index","amount","source","first","second","low","high","toggle","size","restore","classes","panel","ScrollbarControl","inertProps","event","start","rect","length","move","cleanup","window","end","plus","minus","ResizablePanels"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitter.d.cts","sourceRoot":"","sources":["../../../src/splitter/splitter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"splitter.d.cts","sourceRoot":"","sources":["../../../src/splitter/splitter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAS/E,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrF,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACvC;AACD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,+BA0K/C;AACD,eAAO,MAAM,eAAe,iBAAW,CAAC"}
|