@muraldevkit/ui-toolkit 4.68.0-dev-NFbt.1 → 4.68.0-dev-5W5E.1
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/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -250
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js +17 -11
- package/dist/cjs/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +27 -25
- package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js +11 -5
- package/dist/cjs/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +12 -4
- package/dist/cjs/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +13 -6
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js +7 -3
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbSeparator/MrlBreadcrumbSeparator.js.map +1 -1
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +24 -28
- package/dist/cjs/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +20 -20
- package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js +21 -21
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +20 -22
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +14 -10
- package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/cjs/components/button/MrlProcessingButton/actions.js +11 -16
- package/dist/cjs/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/cjs/components/button/helpers.js +4 -6
- package/dist/cjs/components/button/helpers.js.map +1 -1
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +8 -9
- package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js +14 -7
- package/dist/cjs/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js +18 -6
- package/dist/cjs/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/cjs/components/empty/default/MrlEmpty.js +8 -4
- package/dist/cjs/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js +8 -4
- package/dist/cjs/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js +30 -38
- package/dist/cjs/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +7 -3
- package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js +8 -7
- package/dist/cjs/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +9 -3
- package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +6 -5
- package/dist/cjs/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +13 -4
- package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +11 -7
- package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js +21 -14
- package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js +8 -4
- package/dist/cjs/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/cjs/components/form/hooks/useActiveColor.js +2 -2
- package/dist/cjs/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/cjs/components/form/hooks/useIsEditable.js +3 -3
- package/dist/cjs/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js +12 -5
- package/dist/cjs/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +19 -5
- package/dist/cjs/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +42 -31
- package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +21 -12
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +19 -11
- package/dist/cjs/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js +8 -7
- package/dist/cjs/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/cjs/components/form/legacy-select/index.js +4 -3
- package/dist/cjs/components/form/legacy-select/index.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +7 -3
- package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +11 -5
- package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js +3 -2
- package/dist/cjs/components/form/radio/MrlRadioGroup/MrlRadioGroup.js.map +1 -1
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +10 -8
- package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +9 -5
- package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectClearIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectContainer.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectDropdownIndicator.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js +9 -3
- package/dist/cjs/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectMultiValueRemove.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectOption.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectOption.js.map +1 -1
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js +3 -2
- package/dist/cjs/components/form/select/components/MrlSelectValueContainer.js.map +1 -1
- package/dist/cjs/components/form/select/styles/default.js +18 -18
- package/dist/cjs/components/form/select/styles/default.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inline.js +2 -2
- package/dist/cjs/components/form/select/styles/inline.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/cjs/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/cjs/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/cjs/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -7
- package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +13 -9
- package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +31 -19
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +28 -23
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +14 -17
- package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -16
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +14 -17
- package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +16 -9
- package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/cjs/components/form/utils.js +2 -4
- package/dist/cjs/components/form/utils.js.map +1 -1
- package/dist/cjs/components/grid/MrlCol/MrlCol.js +37 -46
- package/dist/cjs/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js +7 -3
- package/dist/cjs/components/grid/MrlGrid/MrlGrid.js.map +1 -1
- package/dist/cjs/components/grid/MrlRow/MrlRow.js +7 -3
- package/dist/cjs/components/grid/MrlRow/MrlRow.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystroke/MrlKeystroke.js.map +1 -1
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js +7 -3
- package/dist/cjs/components/keystroke/MrlKeystrokes/MrlKeystrokes.js.map +1 -1
- package/dist/cjs/components/layout/MrlMain/MrlMain.js +9 -3
- package/dist/cjs/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/MrlPage.js +9 -3
- package/dist/cjs/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/cjs/components/layout/MrlPage/index.js +3 -2
- package/dist/cjs/components/layout/MrlPage/index.js.map +1 -1
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +27 -15
- package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js +10 -3
- package/dist/cjs/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/cjs/components/layout/context/LayoutContext.js +7 -6
- package/dist/cjs/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +18 -14
- package/dist/cjs/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +13 -9
- package/dist/cjs/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/cjs/components/layout/utils.js +2 -2
- package/dist/cjs/components/layout/utils.js.map +1 -1
- package/dist/cjs/components/link/MrlLink/MrlLink.js +13 -4
- package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +16 -14
- package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js +13 -12
- package/dist/cjs/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js +16 -6
- package/dist/cjs/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js +16 -4
- package/dist/cjs/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +61 -63
- package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/cjs/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js +4 -3
- package/dist/cjs/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +24 -19
- package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -6
- package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/cjs/components/menu/context/MrlMenuContext.js +3 -2
- package/dist/cjs/components/menu/context/MrlMenuContext.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js +19 -15
- package/dist/cjs/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/cjs/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/cjs/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js +1 -1
- package/dist/cjs/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/cjs/components/modal/MrlModal/MrlModal.js +29 -25
- package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js +12 -8
- package/dist/cjs/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js +4 -3
- package/dist/cjs/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js +13 -6
- package/dist/cjs/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js +12 -6
- package/dist/cjs/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js +7 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavGroup/MrlSidebarNavGroup.js.map +1 -1
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +11 -3
- package/dist/cjs/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +26 -19
- package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js +17 -7
- package/dist/cjs/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/cjs/components/notification/MrlToast/MrlToast.js +18 -9
- package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js +7 -3
- package/dist/cjs/components/pagination/MrlPagination/MrlPagination.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +7 -3
- package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js +8 -4
- package/dist/cjs/components/pagination/MrlPaginationText/MrlPaginationText.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +25 -17
- package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js +3 -2
- package/dist/cjs/components/panel/MrlPanelContext/MrlPanelContext.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js +9 -5
- package/dist/cjs/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +8 -4
- package/dist/cjs/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +77 -73
- package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/MrlPopoverScrollContainer.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js +3 -2
- package/dist/cjs/components/popover/MrlPopover/context/MrlPopoverContext.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +22 -23
- package/dist/cjs/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/cjs/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/cjs/components/portal/MrlPortal.js +5 -4
- package/dist/cjs/components/portal/MrlPortal.js.map +1 -1
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +237 -263
- package/dist/cjs/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js +11 -5
- package/dist/cjs/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +12 -6
- package/dist/cjs/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js +17 -17
- package/dist/cjs/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +20 -15
- package/dist/cjs/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +78 -96
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js +5 -4
- package/dist/cjs/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/cjs/components/table/MrlTable/MrlTable.js +7 -3
- package/dist/cjs/components/table/MrlTable/MrlTable.js.map +1 -1
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js +7 -3
- package/dist/cjs/components/table/MrlTableBody/MrlTableBody.js.map +1 -1
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js +12 -3
- package/dist/cjs/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js +13 -3
- package/dist/cjs/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js +7 -3
- package/dist/cjs/components/table/MrlTableEmptyState/MrlTableEmptyState.js.map +1 -1
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js +7 -3
- package/dist/cjs/components/table/MrlTableHeader/MrlTableHeader.js.map +1 -1
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -7
- package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -10
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js +16 -9
- package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js +12 -5
- package/dist/cjs/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js +15 -13
- package/dist/cjs/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +16 -9
- package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js +16 -10
- package/dist/cjs/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/cjs/components/text/MrlText/MrlText.js +14 -5
- package/dist/cjs/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js +14 -4
- package/dist/cjs/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js +17 -8
- package/dist/cjs/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +7 -3
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +37 -36
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +13 -4
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js +21 -19
- package/dist/cjs/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/cjs/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/cjs/components/tooltip/utils.js +3 -3
- package/dist/cjs/components/tooltip/utils.js.map +1 -1
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js +7 -6
- package/dist/cjs/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/cjs/hooks/useBreakpoint/index.js +5 -5
- package/dist/cjs/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/cjs/hooks/useClickOutside/index.js +4 -4
- package/dist/cjs/hooks/useClickOutside/index.js.map +1 -1
- package/dist/cjs/hooks/useCoordinate/index.js +19 -28
- package/dist/cjs/hooks/useCoordinate/index.js.map +1 -1
- package/dist/cjs/hooks/useElementDimensions/index.js +21 -33
- package/dist/cjs/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js +7 -8
- package/dist/cjs/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/cjs/hooks/useScrollbarInfo/index.js +11 -10
- package/dist/cjs/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/index.js +20 -22
- package/dist/cjs/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/cjs/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/cjs/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/cjs/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/cjs/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/cjs/utils/frameDebounce/index.js +27 -28
- package/dist/cjs/utils/frameDebounce/index.js.map +1 -1
- package/dist/cjs/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/cjs/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/cjs/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/cjs/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/cjs/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/cjs/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js +1 -1
- package/dist/cjs/utils/isElementScrollable/index.js.map +1 -1
- package/dist/cjs/utils/isImagePath/index.js +4 -3
- package/dist/cjs/utils/isImagePath/index.js.map +1 -1
- package/dist/cjs/utils/isImageUri/index.js +1 -1
- package/dist/cjs/utils/isImageUri/index.js.map +1 -1
- package/dist/cjs/utils/isObject/isObject.js +1 -1
- package/dist/cjs/utils/isObject/isObject.js.map +1 -1
- package/dist/cjs/utils/isTouch/index.js +1 -1
- package/dist/cjs/utils/isTouch/index.js.map +1 -1
- package/dist/cjs/utils/layers/index.js +1 -1
- package/dist/cjs/utils/layers/index.js.map +1 -1
- package/dist/cjs/utils/noop/index.js +1 -1
- package/dist/cjs/utils/noop/index.js.map +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js +1 -1
- package/dist/cjs/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/cjs/utils/setAttributes/setAttributes.js +11 -5
- package/dist/cjs/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/cjs/utils/trapFocus/index.js +9 -11
- package/dist/cjs/utils/trapFocus/index.js.map +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -234
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js +12 -10
- package/dist/esm/components/avatar/MrlAvatar/MrlAvatar.js.map +1 -1
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +22 -24
- package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js +6 -4
- package/dist/esm/components/badge/MrlBadge/MrlBadge.js.map +1 -1
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js +7 -3
- package/dist/esm/components/badge/MrlBadgeNotification/MrlBadgeNotification.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +7 -4
- package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js +18 -26
- package/dist/esm/components/breadcrumb/MrlBreadcrumbs/MrlBreadcrumbs.js.map +1 -1
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +14 -18
- package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js +16 -20
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +14 -20
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +7 -7
- package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
- package/dist/esm/components/button/MrlProcessingButton/actions.js +12 -17
- package/dist/esm/components/button/MrlProcessingButton/actions.js.map +1 -1
- package/dist/esm/components/button/helpers.js +4 -6
- package/dist/esm/components/button/helpers.js.map +1 -1
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js +5 -7
- package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
- package/dist/esm/components/container/MrlContainer/MrlContainer.js +7 -4
- package/dist/esm/components/container/MrlContainer/MrlContainer.js.map +1 -1
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js +13 -5
- package/dist/esm/components/divider/MrlDivider/MrlDivider.js.map +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js +1 -1
- package/dist/esm/components/empty/default/MrlEmpty.js.map +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js +1 -1
- package/dist/esm/components/empty/large/MrlEmptyLarge.js.map +1 -1
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js +28 -37
- package/dist/esm/components/error-boundary/MrlErrorBoundary.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js +5 -5
- package/dist/esm/components/filter/MrlFilterContext/MrlFilterContext.js.map +1 -1
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +4 -2
- package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js +3 -3
- package/dist/esm/components/focus-trap/MrlFocusTrap/MrlFocusTrap.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +8 -3
- package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +2 -2
- package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
- package/dist/esm/components/form/date-picker/MrlDatePicker.js +15 -12
- package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js +2 -2
- package/dist/esm/components/form/fieldset/MrlFieldset/MrlFieldset.js.map +1 -1
- package/dist/esm/components/form/hooks/useActiveColor.js +2 -2
- package/dist/esm/components/form/hooks/useActiveColor.js.map +1 -1
- package/dist/esm/components/form/hooks/useIsEditable.js +3 -3
- package/dist/esm/components/form/hooks/useIsEditable.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js +6 -3
- package/dist/esm/components/form/label/MrlLabel/MrlLabel.js.map +1 -1
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js +14 -4
- package/dist/esm/components/form/label/MrlLabelWithDescription/MrlLabelWithDescription.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +37 -30
- package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +16 -11
- package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js +14 -10
- package/dist/esm/components/form/legacy-select/MrlLegacySelectMenu/MrlLegacySelectMenu.js.map +1 -1
- package/dist/esm/components/form/legacy-select/context/SelectContext.js +5 -5
- package/dist/esm/components/form/legacy-select/context/SelectContext.js.map +1 -1
- package/dist/esm/components/form/legacy-select/index.js +1 -1
- package/dist/esm/components/form/legacy-select/index.js.map +1 -1
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +4 -2
- package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +3 -5
- package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +2 -2
- package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +2 -2
- package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js +4 -2
- package/dist/esm/components/form/select/components/MrlSelectMultiValue.js.map +1 -1
- package/dist/esm/components/form/select/styles/default.js +18 -18
- package/dist/esm/components/form/select/styles/default.js.map +1 -1
- package/dist/esm/components/form/select/styles/inline.js +2 -2
- package/dist/esm/components/form/select/styles/inline.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineNoLabel.js +3 -3
- package/dist/esm/components/form/select/styles/inlineNoLabel.js.map +1 -1
- package/dist/esm/components/form/select/styles/inlineStacked.js +2 -2
- package/dist/esm/components/form/select/styles/inlineStacked.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +9 -6
- package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +3 -3
- package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +25 -17
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +21 -20
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js +8 -15
- package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInputRightIcon.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +15 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js +8 -15
- package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextareaRightButton.js.map +1 -1
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +9 -6
- package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
- package/dist/esm/components/form/utils.js +2 -4
- package/dist/esm/components/form/utils.js.map +1 -1
- package/dist/esm/components/grid/MrlCol/MrlCol.js +31 -44
- package/dist/esm/components/grid/MrlCol/MrlCol.js.map +1 -1
- package/dist/esm/components/layout/MrlMain/MrlMain.js +4 -2
- package/dist/esm/components/layout/MrlMain/MrlMain.js.map +1 -1
- package/dist/esm/components/layout/MrlPage/MrlPage.js +4 -2
- package/dist/esm/components/layout/MrlPage/MrlPage.js.map +1 -1
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +19 -11
- package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js +5 -2
- package/dist/esm/components/layout/MrlTopbar/MrlTopbar.js.map +1 -1
- package/dist/esm/components/layout/context/LayoutContext.js +4 -4
- package/dist/esm/components/layout/context/LayoutContext.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js +1 -1
- package/dist/esm/components/layout/error-page/MrlBrandColors/MrlBrandColors.js.map +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js +1 -1
- package/dist/esm/components/layout/error-page/MrlErrorPage/MrlErrorPage.js.map +1 -1
- package/dist/esm/components/layout/utils.js +2 -2
- package/dist/esm/components/layout/utils.js.map +1 -1
- package/dist/esm/components/link/MrlLink/MrlLink.js +8 -3
- package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +9 -11
- package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js +5 -9
- package/dist/esm/components/live-region/MrlLiveRegion/MrlLiveRegion.js.map +1 -1
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js +9 -3
- package/dist/esm/components/loader/MrlProgressBar/MrlProgressBar.js.map +1 -1
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js +11 -3
- package/dist/esm/components/loader/MrlSpinner/MrlSpinner.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js +56 -62
- package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
- package/dist/esm/components/menu/MrlMenu/utilities.js +4 -6
- package/dist/esm/components/menu/MrlMenu/utilities.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js +1 -1
- package/dist/esm/components/menu/MrlMenuGroup/MrlMenuGroup.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -17
- package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +2 -2
- package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js +14 -14
- package/dist/esm/components/menu/hooks/useBrowserEdgeScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useMenuScroll.js +8 -8
- package/dist/esm/components/menu/hooks/useMenuScroll.js.map +1 -1
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js +3 -3
- package/dist/esm/components/menu/hooks/useSubMenuElementPosition.js.map +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js +1 -1
- package/dist/esm/components/menu/utilities/flip-position.js.map +1 -1
- package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -22
- package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js +5 -5
- package/dist/esm/components/modal/MrlModalContent/MrlModalContent.js.map +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js +1 -1
- package/dist/esm/components/modal/MrlModalContext/MrlModalContext.js.map +1 -1
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js +7 -4
- package/dist/esm/components/modal/MrlModalFooter/MrlModalFooter.js.map +1 -1
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js +7 -5
- package/dist/esm/components/modal/MrlModalHeader/MrlModalHeader.js.map +1 -1
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js +6 -2
- package/dist/esm/components/navigation-sidebar/MrlSidebarNavItem/MrlSidebarNavItem.js.map +1 -1
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +18 -15
- package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js +11 -5
- package/dist/esm/components/notification/MrlInlineMessage/MrlInlineMessage.js.map +1 -1
- package/dist/esm/components/notification/MrlToast/MrlToast.js +14 -9
- package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js +14 -10
- package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js +2 -2
- package/dist/esm/components/panel/MrlPanelFooter/MrlPanelFooter.js.map +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js +1 -1
- package/dist/esm/components/panel/MrlPanelStickyHeader/MrlPanelStickyHeader.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js +71 -71
- package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js +19 -21
- package/dist/esm/components/popover/MrlPopover/hooks/use-mrl-popover-event-handlers.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-data-point.js.map +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js +1 -1
- package/dist/esm/components/popover/MrlPopover/utilities/get-offset.js.map +1 -1
- package/dist/esm/components/portal/MrlPortal.js +2 -2
- package/dist/esm/components/portal/MrlPortal.js.map +1 -1
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js +235 -262
- package/dist/esm/components/rovingTabindex/MrlRovingTabindex/MrlRovingTabindex.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js +6 -4
- package/dist/esm/components/skeleton/MrlSkeleton/MrlSkeleton.js.map +1 -1
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js +7 -5
- package/dist/esm/components/skeleton/MrlSkeletonText/MrlSkeletonText.js.map +1 -1
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js +7 -11
- package/dist/esm/components/svg/MrlSvg/MrlSvg.js.map +1 -1
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js +8 -8
- package/dist/esm/components/svg/MrlSvgAnimate/MrlSvgAnimate.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +71 -94
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js +2 -2
- package/dist/esm/components/table/MrlSmartTable/components/DefaultCellContent.js.map +1 -1
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js +7 -2
- package/dist/esm/components/table/MrlTableCell/MrlTableCell.js.map +1 -1
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js +8 -2
- package/dist/esm/components/table/MrlTableColumn/MrlTableColumn.js.map +1 -1
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +7 -5
- package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -10
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/MrlTab/MrlTab.js +11 -8
- package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js +7 -4
- package/dist/esm/components/tabs/MrlTabContent/MrlTabContent.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js +8 -10
- package/dist/esm/components/tabs/MrlTabGroup/MrlTabGroup.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +11 -8
- package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js +11 -9
- package/dist/esm/components/tabs/MrlTabs/MrlTabs.js.map +1 -1
- package/dist/esm/components/text/MrlText/MrlText.js +8 -3
- package/dist/esm/components/text/MrlText/MrlText.js.map +1 -1
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js +9 -3
- package/dist/esm/components/text/MrlTextHeading/MrlTextHeading.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js +12 -7
- package/dist/esm/components/toolbar/MrlToolbar/MrlToolbar.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js +1 -1
- package/dist/esm/components/toolbar/MrlToolbarItem/MrlToolbarItem.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +31 -34
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +8 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/index.js +15 -17
- package/dist/esm/components/tooltip/useTooltipPosition/index.js.map +1 -1
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js +4 -4
- package/dist/esm/components/tooltip/useTooltipPosition/utilities.js.map +1 -1
- package/dist/esm/components/tooltip/utils.js +3 -3
- package/dist/esm/components/tooltip/utils.js.map +1 -1
- package/dist/esm/hooks/useAutoClose/useAutoClose.js +4 -4
- package/dist/esm/hooks/useAutoClose/useAutoClose.js.map +1 -1
- package/dist/esm/hooks/useBreakpoint/index.js +5 -5
- package/dist/esm/hooks/useBreakpoint/index.js.map +1 -1
- package/dist/esm/hooks/useClickOutside/index.js +4 -4
- package/dist/esm/hooks/useClickOutside/index.js.map +1 -1
- package/dist/esm/hooks/useCoordinate/index.js +20 -29
- package/dist/esm/hooks/useCoordinate/index.js.map +1 -1
- package/dist/esm/hooks/useElementDimensions/index.js +19 -32
- package/dist/esm/hooks/useElementDimensions/index.js.map +1 -1
- package/dist/esm/hooks/useHasFocusableDescendant/index.js +4 -6
- package/dist/esm/hooks/useHasFocusableDescendant/index.js.map +1 -1
- package/dist/esm/hooks/useScrollbarInfo/index.js +8 -8
- package/dist/esm/hooks/useScrollbarInfo/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/index.js +14 -20
- package/dist/esm/hooks/useTriggerPosition/index.js.map +1 -1
- package/dist/esm/hooks/useTriggerPosition/utilities.js +15 -23
- package/dist/esm/hooks/useTriggerPosition/utilities.js.map +1 -1
- package/dist/esm/utils/checkInvalidAttributes/index.js +2 -4
- package/dist/esm/utils/checkInvalidAttributes/index.js.map +1 -1
- package/dist/esm/utils/frameDebounce/index.js +28 -29
- package/dist/esm/utils/frameDebounce/index.js.map +1 -1
- package/dist/esm/utils/getCamelCase/getCamelCase.js +2 -2
- package/dist/esm/utils/getCamelCase/getCamelCase.js.map +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js +1 -1
- package/dist/esm/utils/getScrollableContainer/getScrollableContainer.js.map +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js +1 -1
- package/dist/esm/utils/hasHorizontalScroll/hasHorizontalScroll.js.map +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js +1 -1
- package/dist/esm/utils/hasScrollContent/hasScrollContent.js.map +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js +1 -1
- package/dist/esm/utils/isElementAriaDisabled/isElementAriaDisabled.js.map +1 -1
- package/dist/esm/utils/isElementScrollable/index.js +1 -1
- package/dist/esm/utils/isElementScrollable/index.js.map +1 -1
- package/dist/esm/utils/isImagePath/index.js +1 -1
- package/dist/esm/utils/isImagePath/index.js.map +1 -1
- package/dist/esm/utils/isImageUri/index.js +1 -1
- package/dist/esm/utils/isImageUri/index.js.map +1 -1
- package/dist/esm/utils/isObject/isObject.js +1 -1
- package/dist/esm/utils/isObject/isObject.js.map +1 -1
- package/dist/esm/utils/isTouch/index.js +1 -1
- package/dist/esm/utils/isTouch/index.js.map +1 -1
- package/dist/esm/utils/layers/index.js +1 -1
- package/dist/esm/utils/layers/index.js.map +1 -1
- package/dist/esm/utils/noop/index.js +1 -1
- package/dist/esm/utils/noop/index.js.map +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js +1 -1
- package/dist/esm/utils/preventDefault/preventDefault.js.map +1 -1
- package/dist/esm/utils/setAttributes/setAttributes.js +7 -5
- package/dist/esm/utils/setAttributes/setAttributes.js.map +1 -1
- package/dist/esm/utils/trapFocus/index.js +9 -11
- package/dist/esm/utils/trapFocus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/tooltip/useTooltipPosition/index.tsx"],"sourcesContent":["import { useMemo, useState, RefObject, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { TooltipPlacement, Position } from './constants';\nimport { calculatePosition, positionChanged } from './utilities';\nimport debounce from 'lodash.debounce';\n\n/**\n * A custom hook to calculate and manage the position of a tooltip element relative to its trigger element.\n *\n * @param {RefObject<HTMLElement>} triggerRef - Reference to the DOM element that triggers the menu.\n * @param {RefObject<HTMLElement>} elementRef - Reference to the DOM element that is the menu.\n * @param {TooltipPlacement} placement - The alignment configuration of the menu.\n * @param {boolean} isElementVisible - Tells the hook if the element is visible. If false, the hook will not calculate the position.\n * @param {number} tooltipOffset - The offset of the menu from the trigger element.\n * @param {boolean} disable - Whether to disable the hook.\n * @returns {Position} The calculated position of the menu element.\n */\nexport const useTooltipPosition = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\telementRef: RefObject<HTMLElement>,\n\tplacement: TooltipPlacement,\n\tisElementVisible = true,\n\ttooltipOffset = 10,\n\tdisable = false\n): Position => {\n\tconst offset = tooltipOffset;\n\tconst [tooltipPosition, setTooltipPosition] = useState<Position>({ left: 0, top: 0 });\n\n\tconst alignment = useMemo(\n\t\t() => ({\n\t\t\talign: placement.align,\n\t\t\tposition: placement.position\n\t\t}),\n\t\t[placement.align, placement.position]\n\t);\n\n\tconst updatePosition = useCallback(() => {\n\t\tif (elementRef.current && isElementVisible) {\n\t\t\tconst triggerRect = triggerRef?.current?.getBoundingClientRect();\n\t\t\tconst elementRect = elementRef.current.getBoundingClientRect();\n\t\t\tconst newPosition = calculatePosition(alignment, offset, elementRect, triggerRect);\n\n\t\t\t// only update if we have a new position\n\t\t\tsetTooltipPosition((prevPosition) => {\n\t\t\t\tif (prevPosition.left !== newPosition.left || prevPosition.top !== newPosition.top) {\n\t\t\t\t\treturn newPosition;\n\t\t\t\t}\n\t\t\t\treturn prevPosition;\n\t\t\t});\n\t\t}\n\t}, [alignment, elementRef, isElementVisible, offset, triggerRef]);\n\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst debouncedUpdatePosition = useCallback(\n\t\tdebounce(() => {\n\t\t\tupdatePosition();\n\t\t}, 5),\n\t\t[updatePosition]\n\t);\n\n\tuseEffect(() => {\n\t\tif (!disable) {\n\t\t\tconst currentElement = elementRef.current;\n\n\t\t\t// We need to debounce the resize observer to prevent \"resize loops\"\n\t\t\t// there are instances where the resize observer will trigger a resize event\n\t\t\t// before the browser has painted which throws a loop of resize events\n\t\t\t// and causes errors on the window\n\t\t\t//\n\t\t\t// The observers are purposefully using a different debounce than the event listeners\n\t\t\t// as the observers need to be debounced to prevent loops, but updating the position\n\t\t\t// needs to happen more immediately\n\t\t\tconst resizeObserver = new ResizeObserver(debounce(updatePosition));\n\t\t\tconst mutationObserver = new MutationObserver(debounce(updatePosition));\n\n\t\t\tif (currentElement) {\n\t\t\t\tresizeObserver.observe(currentElement);\n\t\t\t\tmutationObserver.observe(currentElement, {\n\t\t\t\t\tattributeFilter: ['style', 'class'],\n\t\t\t\t\tattributes: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (isElementVisible) {\n\t\t\t\tupdatePosition();\n\t\t\t\twindow.addEventListener('resize', debouncedUpdatePosition);\n\t\t\t\twindow.addEventListener('scroll', debouncedUpdatePosition);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tif (currentElement) {\n\t\t\t\t\tresizeObserver.unobserve(currentElement);\n\t\t\t\t\tmutationObserver.disconnect();\n\t\t\t\t}\n\t\t\t\twindow.removeEventListener('resize', debouncedUpdatePosition);\n\t\t\t\twindow.removeEventListener('scroll', debouncedUpdatePosition);\n\t\t\t};\n\t\t}\n\t}, [\n\t\tdisable,\n\t\ttriggerRef,\n\t\telementRef,\n\t\talignment,\n\t\toffset,\n\t\tisElementVisible,\n\t\tupdatePosition,\n\t\tdebouncedUpdatePosition\n\t]);\n\n\tuseLayoutEffect(() => {\n\t\tif (isElementVisible && !disable && elementRef.current && triggerRef?.current) {\n\t\t\t// Recalculate position when the tooltip is first shown\n\t\t\tupdatePosition();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isElementVisible, updatePosition, disable, elementRef.current, triggerRef?.current]);\n\n\t/**\n\t * This effect is used to track the position of the trigger element\n\t * when the tooltip is visible. It will update the position of the tooltip\n\t */\n\tuseEffect(() => {\n\t\tif (!disable && isElementVisible && triggerRef?.current && elementRef.current) {\n\t\t\tlet animationFrameId: number;\n\t\t\tlet prevRect: DOMRect | undefined;\n\n\t\t\tconst trackPosition = () => {\n\t\t\t\tconst currentRect = triggerRef.current?.getBoundingClientRect();\n\t\t\t\tif (currentRect && (!prevRect || positionChanged(prevRect, currentRect))) {\n\t\t\t\t\tupdatePosition();\n\t\t\t\t\tprevRect = currentRect;\n\t\t\t\t}\n\t\t\t\tanimationFrameId = requestAnimationFrame(trackPosition);\n\t\t\t};\n\n\t\t\tanimationFrameId = requestAnimationFrame(trackPosition);\n\n\t\t\treturn () => {\n\t\t\t\tcancelAnimationFrame(animationFrameId);\n\t\t\t};\n\t\t}\n\t}, [disable, isElementVisible, triggerRef, elementRef, updatePosition]);\n\n\treturn tooltipPosition;\n};\n"],"names":["useTooltipPosition","triggerRef","elementRef","placement","isElementVisible","arguments","length","undefined","tooltipOffset","disable","offset","_useState","useState","left","top","_useState2","_slicedToArray","tooltipPosition","setTooltipPosition","alignment","useMemo","align","position","updatePosition","useCallback","current","_triggerRef$current","triggerRect","getBoundingClientRect","elementRect","newPosition","calculatePosition","prevPosition","debouncedUpdatePosition","debounce","useEffect","currentElement","resizeObserver","ResizeObserver","mutationObserver","MutationObserver","observe","attributeFilter","attributes","window","addEventListener","unobserve","disconnect","removeEventListener","useLayoutEffect","animationFrameId","prevRect","trackPosition","_triggerRef$current2","currentRect","positionChanged","requestAnimationFrame","cancelAnimationFrame"],"mappings":";;;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkBA,CAC9BC,UAA8C,EAC9CC,UAAkC,EAClCC,SAA2B,EAIb;AAAA,EAAA,IAHdC,gBAAgB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI;AAAA,EAAA,IACvBG,aAAa,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAAA,EAAA,IAClBI,OAAO,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;EAEf,IAAMK,MAAM,GAAGF,aAAa;EAC5B,IAAAG,SAAA,GAA8CC,cAAQ,CAAW;AAAEC,MAAAA,IAAI,EAAE,CAAC;AAAEC,MAAAA,GAAG,EAAE;AAAE,KAAC,CAAC;IAAAC,UAAA,GAAAC,uCAAA,CAAAL,SAAA,EAAA,CAAA,CAAA;AAA9EM,IAAAA,eAAe,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,kBAAkB,GAAAH,UAAA,CAAA,CAAA,CAAA;EAE1C,IAAMI,SAAS,GAAGC,aAAO,CACxB,YAAA;IAAA,OAAO;MACNC,KAAK,EAAElB,SAAS,CAACkB,KAAK;MACtBC,QAAQ,EAAEnB,SAAS,CAACmB;KACpB;EAAA,CAAC,EACF,CAACnB,SAAS,CAACkB,KAAK,EAAElB,SAAS,CAACmB,QAAQ,CACrC,CAAC;AAED,EAAA,IAAMC,cAAc,GAAGC,iBAAW,CAAC,YAAM;AACxC,IAAA,IAAItB,UAAU,CAACuB,OAAO,IAAIrB,gBAAgB,EAAE;AAAA,MAAA,IAAAsB,mBAAA;AAC3C,MAAA,IAAMC,WAAW,GAAG1B,UAAU,aAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAyB,mBAAA,GAAVzB,UAAU,CAAEwB,OAAO,cAAAC,mBAAA,KAAA,MAAA,GAAA,MAAA,GAAnBA,mBAAA,CAAqBE,qBAAqB,EAAE;MAChE,IAAMC,WAAW,GAAG3B,UAAU,CAACuB,OAAO,CAACG,qBAAqB,EAAE;MAC9D,IAAME,WAAW,GAAGC,2BAAiB,CAACZ,SAAS,EAAET,MAAM,EAAEmB,WAAW,EAAEF,WAAW,CAAC;;AAElF;MACAT,kBAAkB,CAAC,UAACc,YAAY,EAAK;AACpC,QAAA,IAAIA,YAAY,CAACnB,IAAI,KAAKiB,WAAW,CAACjB,IAAI,IAAImB,YAAY,CAAClB,GAAG,KAAKgB,WAAW,CAAChB,GAAG,EAAE;AACnF,UAAA,OAAOgB,WAAW;AACnB,QAAA;AACA,QAAA,OAAOE,YAAY;AACpB,MAAA,CAAC,CAAC;AACH,IAAA;AACD,EAAA,CAAC,EAAE,CAACb,SAAS,EAAEjB,UAAU,EAAEE,gBAAgB,EAAEM,MAAM,EAAET,UAAU,CAAC,CAAC;;AAEjE;AACA,EAAA,IAAMgC,uBAAuB,GAAGT,iBAAW,CAC1CU,QAAQ,CAAC,YAAM;AACdX,IAAAA,cAAc,EAAE;AACjB,EAAA,CAAC,EAAE,CAAC,CAAC,EACL,CAACA,cAAc,CAChB,CAAC;AAEDY,EAAAA,eAAS,CAAC,YAAM;IACf,IAAI,CAAC1B,OAAO,EAAE;AACb,MAAA,IAAM2B,cAAc,GAAGlC,UAAU,CAACuB,OAAO;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACA,IAAMY,cAAc,GAAG,IAAIC,cAAc,CAACJ,QAAQ,CAACX,cAAc,CAAC,CAAC;MACnE,IAAMgB,gBAAgB,GAAG,IAAIC,gBAAgB,CAACN,QAAQ,CAACX,cAAc,CAAC,CAAC;AAEvE,MAAA,IAAIa,cAAc,EAAE;AACnBC,QAAAA,cAAc,CAACI,OAAO,CAACL,cAAc,CAAC;AACtCG,QAAAA,gBAAgB,CAACE,OAAO,CAACL,cAAc,EAAE;AACxCM,UAAAA,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACnCC,UAAAA,UAAU,EAAE;AACb,SAAC,CAAC;AACH,MAAA;AAEA,MAAA,IAAIvC,gBAAgB,EAAE;AACrBmB,QAAAA,cAAc,EAAE;AAChBqB,QAAAA,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC;AAC1DW,QAAAA,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEZ,uBAAuB,CAAC;AAC3D,MAAA;AAEA,MAAA,OAAO,YAAM;AACZ,QAAA,IAAIG,cAAc,EAAE;AACnBC,UAAAA,cAAc,CAACS,SAAS,CAACV,cAAc,CAAC;UACxCG,gBAAgB,CAACQ,UAAU,EAAE;AAC9B,QAAA;AACAH,QAAAA,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEf,uBAAuB,CAAC;AAC7DW,QAAAA,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEf,uBAAuB,CAAC;MAC9D,CAAC;AACF,IAAA;AACD,EAAA,CAAC,EAAE,CACFxB,OAAO,EACPR,UAAU,EACVC,UAAU,EACViB,SAAS,EACTT,MAAM,EACNN,gBAAgB,EAChBmB,cAAc,EACdU,uBAAuB,CACvB,CAAC;AAEFgB,EAAAA,qBAAe,CAAC,YAAM;AACrB,IAAA,IAAI7C,gBAAgB,IAAI,CAACK,OAAO,IAAIP,UAAU,CAACuB,OAAO,IAAIxB,UAAU,aAAVA,UAAU,KAAA,MAAA,IAAVA,UAAU,CAAEwB,OAAO,EAAE;AAC9E;AACAF,MAAAA,cAAc,EAAE;AACjB,IAAA;AACA;EACD,CAAC,EAAE,CAACnB,gBAAgB,EAAEmB,cAAc,EAAEd,OAAO,EAAEP,UAAU,CAACuB,OAAO,EAAExB,UAAU,aAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAEwB,OAAO,CAAC,CAAC;;AAExF;AACD;AACA;AACA;AACCU,EAAAA,eAAS,CAAC,YAAM;AACf,IAAA,IAAI,CAAC1B,OAAO,IAAIL,gBAAgB,IAAIH,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,IAAVA,UAAU,CAAEwB,OAAO,IAAIvB,UAAU,CAACuB,OAAO,EAAE;AAC9E,MAAA,IAAIyB,gBAAwB;AAC5B,MAAA,IAAIC,QAA6B;AAEjC,MAAA,IAAMC,cAAa,GAAG,SAAhBA,aAAaA,GAAS;AAAA,QAAA,IAAAC,oBAAA;AAC3B,QAAA,IAAMC,WAAW,GAAA,CAAAD,oBAAA,GAAGpD,UAAU,CAACwB,OAAO,MAAA,IAAA,IAAA4B,oBAAA,KAAA,MAAA,GAAA,MAAA,GAAlBA,oBAAA,CAAoBzB,qBAAqB,EAAE;AAC/D,QAAA,IAAI0B,WAAW,KAAK,CAACH,QAAQ,IAAII,yBAAe,CAACJ,QAAQ,EAAEG,WAAW,CAAC,CAAC,EAAE;AACzE/B,UAAAA,cAAc,EAAE;AAChB4B,UAAAA,QAAQ,GAAGG,WAAW;AACvB,QAAA;AACAJ,QAAAA,gBAAgB,GAAGM,qBAAqB,CAACJ,cAAa,CAAC;MACxD,CAAC;AAEDF,MAAAA,gBAAgB,GAAGM,qBAAqB,CAACJ,cAAa,CAAC;AAEvD,MAAA,OAAO,YAAM;QACZK,oBAAoB,CAACP,gBAAgB,CAAC;MACvC,CAAC;AACF,IAAA;AACD,EAAA,CAAC,EAAE,CAACzC,OAAO,EAAEL,gBAAgB,EAAEH,UAAU,EAAEC,UAAU,EAAEqB,cAAc,CAAC,CAAC;AAEvE,EAAA,OAAON,eAAe;AACvB;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/tooltip/useTooltipPosition/index.tsx"],"sourcesContent":["import { useMemo, useState, RefObject, useEffect, useCallback, useLayoutEffect } from 'react';\nimport { TooltipPlacement, Position } from './constants';\nimport { calculatePosition, positionChanged } from './utilities';\nimport debounce from 'lodash.debounce';\n\n/**\n * A custom hook to calculate and manage the position of a tooltip element relative to its trigger element.\n *\n * @param {RefObject<HTMLElement>} triggerRef - Reference to the DOM element that triggers the menu.\n * @param {RefObject<HTMLElement>} elementRef - Reference to the DOM element that is the menu.\n * @param {TooltipPlacement} placement - The alignment configuration of the menu.\n * @param {boolean} isElementVisible - Tells the hook if the element is visible. If false, the hook will not calculate the position.\n * @param {number} tooltipOffset - The offset of the menu from the trigger element.\n * @param {boolean} disable - Whether to disable the hook.\n * @returns {Position} The calculated position of the menu element.\n */\nexport const useTooltipPosition = (\n\ttriggerRef: RefObject<HTMLElement> | undefined,\n\telementRef: RefObject<HTMLElement>,\n\tplacement: TooltipPlacement,\n\tisElementVisible = true,\n\ttooltipOffset = 10,\n\tdisable = false\n): Position => {\n\tconst offset = tooltipOffset;\n\tconst [tooltipPosition, setTooltipPosition] = useState<Position>({ left: 0, top: 0 });\n\n\tconst alignment = useMemo(\n\t\t() => ({\n\t\t\talign: placement.align,\n\t\t\tposition: placement.position\n\t\t}),\n\t\t[placement.align, placement.position]\n\t);\n\n\tconst updatePosition = useCallback(() => {\n\t\tif (elementRef.current && isElementVisible) {\n\t\t\tconst triggerRect = triggerRef?.current?.getBoundingClientRect();\n\t\t\tconst elementRect = elementRef.current.getBoundingClientRect();\n\t\t\tconst newPosition = calculatePosition(alignment, offset, elementRect, triggerRect);\n\n\t\t\t// only update if we have a new position\n\t\t\tsetTooltipPosition((prevPosition) => {\n\t\t\t\tif (prevPosition.left !== newPosition.left || prevPosition.top !== newPosition.top) {\n\t\t\t\t\treturn newPosition;\n\t\t\t\t}\n\t\t\t\treturn prevPosition;\n\t\t\t});\n\t\t}\n\t}, [alignment, elementRef, isElementVisible, offset, triggerRef]);\n\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst debouncedUpdatePosition = useCallback(\n\t\tdebounce(() => {\n\t\t\tupdatePosition();\n\t\t}, 5),\n\t\t[updatePosition]\n\t);\n\n\tuseEffect(() => {\n\t\tif (!disable) {\n\t\t\tconst currentElement = elementRef.current;\n\n\t\t\t// We need to debounce the resize observer to prevent \"resize loops\"\n\t\t\t// there are instances where the resize observer will trigger a resize event\n\t\t\t// before the browser has painted which throws a loop of resize events\n\t\t\t// and causes errors on the window\n\t\t\t//\n\t\t\t// The observers are purposefully using a different debounce than the event listeners\n\t\t\t// as the observers need to be debounced to prevent loops, but updating the position\n\t\t\t// needs to happen more immediately\n\t\t\tconst resizeObserver = new ResizeObserver(debounce(updatePosition));\n\t\t\tconst mutationObserver = new MutationObserver(debounce(updatePosition));\n\n\t\t\tif (currentElement) {\n\t\t\t\tresizeObserver.observe(currentElement);\n\t\t\t\tmutationObserver.observe(currentElement, {\n\t\t\t\t\tattributeFilter: ['style', 'class'],\n\t\t\t\t\tattributes: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (isElementVisible) {\n\t\t\t\tupdatePosition();\n\t\t\t\twindow.addEventListener('resize', debouncedUpdatePosition);\n\t\t\t\twindow.addEventListener('scroll', debouncedUpdatePosition);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tif (currentElement) {\n\t\t\t\t\tresizeObserver.unobserve(currentElement);\n\t\t\t\t\tmutationObserver.disconnect();\n\t\t\t\t}\n\t\t\t\twindow.removeEventListener('resize', debouncedUpdatePosition);\n\t\t\t\twindow.removeEventListener('scroll', debouncedUpdatePosition);\n\t\t\t};\n\t\t}\n\t}, [\n\t\tdisable,\n\t\ttriggerRef,\n\t\telementRef,\n\t\talignment,\n\t\toffset,\n\t\tisElementVisible,\n\t\tupdatePosition,\n\t\tdebouncedUpdatePosition\n\t]);\n\n\tuseLayoutEffect(() => {\n\t\tif (isElementVisible && !disable && elementRef.current && triggerRef?.current) {\n\t\t\t// Recalculate position when the tooltip is first shown\n\t\t\tupdatePosition();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isElementVisible, updatePosition, disable, elementRef.current, triggerRef?.current]);\n\n\t/**\n\t * This effect is used to track the position of the trigger element\n\t * when the tooltip is visible. It will update the position of the tooltip\n\t */\n\tuseEffect(() => {\n\t\tif (!disable && isElementVisible && triggerRef?.current && elementRef.current) {\n\t\t\tlet animationFrameId: number;\n\t\t\tlet prevRect: DOMRect | undefined;\n\n\t\t\tconst trackPosition = () => {\n\t\t\t\tconst currentRect = triggerRef.current?.getBoundingClientRect();\n\t\t\t\tif (currentRect && (!prevRect || positionChanged(prevRect, currentRect))) {\n\t\t\t\t\tupdatePosition();\n\t\t\t\t\tprevRect = currentRect;\n\t\t\t\t}\n\t\t\t\tanimationFrameId = requestAnimationFrame(trackPosition);\n\t\t\t};\n\n\t\t\tanimationFrameId = requestAnimationFrame(trackPosition);\n\n\t\t\treturn () => {\n\t\t\t\tcancelAnimationFrame(animationFrameId);\n\t\t\t};\n\t\t}\n\t}, [disable, isElementVisible, triggerRef, elementRef, updatePosition]);\n\n\treturn tooltipPosition;\n};\n"],"names":["useTooltipPosition","triggerRef","elementRef","placement","isElementVisible","arguments","length","undefined","tooltipOffset","disable","offset","_useState","useState","left","top","_useState2","_slicedToArray","tooltipPosition","setTooltipPosition","alignment","useMemo","align","position","updatePosition","useCallback","current","_triggerRef$current","triggerRect","getBoundingClientRect","elementRect","newPosition","calculatePosition","prevPosition","debouncedUpdatePosition","debounce","useEffect","currentElement","resizeObserver","ResizeObserver","mutationObserver","MutationObserver","observe","attributeFilter","attributes","window","addEventListener","unobserve","disconnect","removeEventListener","useLayoutEffect","animationFrameId","prevRect","trackPosition","_triggerRef$current2","currentRect","positionChanged","requestAnimationFrame","cancelAnimationFrame"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @param triggerRect - Bounding rect of the trigger element.
|
|
10
10
|
* @returns {Position} An object with `left` and `top` coordinates for the element (keys sorted alphabetically).
|
|
11
11
|
*/
|
|
12
|
-
var calculatePosition =
|
|
12
|
+
var calculatePosition = (alignment, offset, elementRect, triggerRect) => {
|
|
13
13
|
if (!triggerRect) {
|
|
14
14
|
// fallback to (0,0) if no trigger is available
|
|
15
15
|
return {
|
|
@@ -60,8 +60,8 @@ var calculatePosition = function calculatePosition(alignment, offset, elementRec
|
|
|
60
60
|
break;
|
|
61
61
|
}
|
|
62
62
|
return {
|
|
63
|
-
left
|
|
64
|
-
top
|
|
63
|
+
left,
|
|
64
|
+
top
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
67
|
|
|
@@ -72,7 +72,7 @@ var calculatePosition = function calculatePosition(alignment, offset, elementRec
|
|
|
72
72
|
* @param next - The current bounding rectangle of the element.
|
|
73
73
|
* @returns {boolean} True if the position has changed by more than 0.5 pixels, false otherwise.
|
|
74
74
|
*/
|
|
75
|
-
var positionChanged =
|
|
75
|
+
var positionChanged = (prev, next) => {
|
|
76
76
|
return Math.abs(prev.top - next.top) > 0.5 || Math.abs(prev.left - next.left) > 0.5;
|
|
77
77
|
};
|
|
78
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sources":["../../../../../src/components/tooltip/useTooltipPosition/utilities.ts"],"sourcesContent":["import { TooltipPlacement, Position } from './constants';\n\n/**\n * Calculates the position of an element (e.g., a tooltip or menu) based on alignment and offset.\n *\n * @param alignment - Object containing position ('top', 'bottom', 'left', 'right') and anchor ('start', 'center', 'end').\n * @param offset - Number of pixels to offset the positioned element.\n * @param elementRect - Bounding rect of the element being positioned.\n * @param triggerRect - Bounding rect of the trigger element.\n * @returns {Position} An object with `left` and `top` coordinates for the element (keys sorted alphabetically).\n */\nexport const calculatePosition = (\n\talignment: TooltipPlacement,\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect?: DOMRect\n): Position => {\n\tif (!triggerRect) {\n\t\t// fallback to (0,0) if no trigger is available\n\t\treturn { left: 0, top: 0 };\n\t}\n\n\tconst { position } = alignment;\n\n\t// For left/right positioned tooltips or menus, always center align vertically\n\t// regardless of the provided `align` value\n\tconst anchor = position === 'left' || position === 'right' ? 'center' : alignment.align;\n\n\tlet top = 0;\n\tlet left = 0;\n\n\t// Primary positioning based on side\n\tswitch (position) {\n\t\tcase 'top':\n\t\t\ttop = triggerRect.top - elementRect.height - offset;\n\t\t\tbreak;\n\t\tcase 'bottom':\n\t\t\ttop = triggerRect.bottom + offset;\n\t\t\tbreak;\n\t\tcase 'left':\n\t\t\tleft = triggerRect.left - elementRect.width - offset;\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\tleft = triggerRect.right + offset;\n\t\t\tbreak;\n\t}\n\n\t// Secondary alignment\n\tswitch (position) {\n\t\tcase 'top':\n\t\tcase 'bottom':\n\t\t\tif (anchor === 'start') {\n\t\t\t\tleft = triggerRect.left;\n\t\t\t} else if (anchor === 'center') {\n\t\t\t\tleft = triggerRect.left + (triggerRect.width - elementRect.width) / 2;\n\t\t\t} else if (anchor === 'end') {\n\t\t\t\tleft = triggerRect.right - elementRect.width;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'left':\n\t\tcase 'right':\n\t\t\t// forced to center alignment vertically\n\t\t\ttop = triggerRect.top + (triggerRect.height - elementRect.height) / 2;\n\t\t\tbreak;\n\t}\n\n\treturn { left, top };\n};\n\n/**\n * Determines if the position of an element has changed significantly.\n *\n * @param prev - The previous bounding rectangle of the element.\n * @param next - The current bounding rectangle of the element.\n * @returns {boolean} True if the position has changed by more than 0.5 pixels, false otherwise.\n */\nexport const positionChanged = (prev: DOMRect, next: DOMRect): boolean => {\n\treturn Math.abs(prev.top - next.top) > 0.5 || Math.abs(prev.left - next.left) > 0.5;\n};\n"],"names":["calculatePosition","alignment","offset","elementRect","triggerRect","left","top","position","anchor","align","height","bottom","width","right","positionChanged","prev","next","Math","abs"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,iBAAiB,
|
|
1
|
+
{"version":3,"file":"utilities.js","sources":["../../../../../src/components/tooltip/useTooltipPosition/utilities.ts"],"sourcesContent":["import { TooltipPlacement, Position } from './constants';\n\n/**\n * Calculates the position of an element (e.g., a tooltip or menu) based on alignment and offset.\n *\n * @param alignment - Object containing position ('top', 'bottom', 'left', 'right') and anchor ('start', 'center', 'end').\n * @param offset - Number of pixels to offset the positioned element.\n * @param elementRect - Bounding rect of the element being positioned.\n * @param triggerRect - Bounding rect of the trigger element.\n * @returns {Position} An object with `left` and `top` coordinates for the element (keys sorted alphabetically).\n */\nexport const calculatePosition = (\n\talignment: TooltipPlacement,\n\toffset: number,\n\telementRect: DOMRect,\n\ttriggerRect?: DOMRect\n): Position => {\n\tif (!triggerRect) {\n\t\t// fallback to (0,0) if no trigger is available\n\t\treturn { left: 0, top: 0 };\n\t}\n\n\tconst { position } = alignment;\n\n\t// For left/right positioned tooltips or menus, always center align vertically\n\t// regardless of the provided `align` value\n\tconst anchor = position === 'left' || position === 'right' ? 'center' : alignment.align;\n\n\tlet top = 0;\n\tlet left = 0;\n\n\t// Primary positioning based on side\n\tswitch (position) {\n\t\tcase 'top':\n\t\t\ttop = triggerRect.top - elementRect.height - offset;\n\t\t\tbreak;\n\t\tcase 'bottom':\n\t\t\ttop = triggerRect.bottom + offset;\n\t\t\tbreak;\n\t\tcase 'left':\n\t\t\tleft = triggerRect.left - elementRect.width - offset;\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\tleft = triggerRect.right + offset;\n\t\t\tbreak;\n\t}\n\n\t// Secondary alignment\n\tswitch (position) {\n\t\tcase 'top':\n\t\tcase 'bottom':\n\t\t\tif (anchor === 'start') {\n\t\t\t\tleft = triggerRect.left;\n\t\t\t} else if (anchor === 'center') {\n\t\t\t\tleft = triggerRect.left + (triggerRect.width - elementRect.width) / 2;\n\t\t\t} else if (anchor === 'end') {\n\t\t\t\tleft = triggerRect.right - elementRect.width;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'left':\n\t\tcase 'right':\n\t\t\t// forced to center alignment vertically\n\t\t\ttop = triggerRect.top + (triggerRect.height - elementRect.height) / 2;\n\t\t\tbreak;\n\t}\n\n\treturn { left, top };\n};\n\n/**\n * Determines if the position of an element has changed significantly.\n *\n * @param prev - The previous bounding rectangle of the element.\n * @param next - The current bounding rectangle of the element.\n * @returns {boolean} True if the position has changed by more than 0.5 pixels, false otherwise.\n */\nexport const positionChanged = (prev: DOMRect, next: DOMRect): boolean => {\n\treturn Math.abs(prev.top - next.top) > 0.5 || Math.abs(prev.left - next.left) > 0.5;\n};\n"],"names":["calculatePosition","alignment","offset","elementRect","triggerRect","left","top","position","anchor","align","height","bottom","width","right","positionChanged","prev","next","Math","abs"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,iBAAiB,GAAGA,CAChCC,SAA2B,EAC3BC,MAAc,EACdC,WAAoB,EACpBC,WAAqB,KACP;EACd,IAAI,CAACA,WAAW,EAAE;AACjB;IACA,OAAO;AAAEC,MAAAA,IAAI,EAAE,CAAC;AAAEC,MAAAA,GAAG,EAAE;KAAG;AAC3B,EAAA;AAEA,EAAA,IAAQC,QAAQ,GAAKN,SAAS,CAAtBM,QAAQ;;AAEhB;AACA;AACA,EAAA,IAAMC,MAAM,GAAGD,QAAQ,KAAK,MAAM,IAAIA,QAAQ,KAAK,OAAO,GAAG,QAAQ,GAAGN,SAAS,CAACQ,KAAK;EAEvF,IAAIH,GAAG,GAAG,CAAC;EACX,IAAID,IAAI,GAAG,CAAC;;AAEZ;AACA,EAAA,QAAQE,QAAQ;AACf,IAAA,KAAK,KAAK;MACTD,GAAG,GAAGF,WAAW,CAACE,GAAG,GAAGH,WAAW,CAACO,MAAM,GAAGR,MAAM;AACnD,MAAA;AACD,IAAA,KAAK,QAAQ;AACZI,MAAAA,GAAG,GAAGF,WAAW,CAACO,MAAM,GAAGT,MAAM;AACjC,MAAA;AACD,IAAA,KAAK,MAAM;MACVG,IAAI,GAAGD,WAAW,CAACC,IAAI,GAAGF,WAAW,CAACS,KAAK,GAAGV,MAAM;AACpD,MAAA;AACD,IAAA,KAAK,OAAO;AACXG,MAAAA,IAAI,GAAGD,WAAW,CAACS,KAAK,GAAGX,MAAM;AACjC,MAAA;AACF;;AAEA;AACA,EAAA,QAAQK,QAAQ;AACf,IAAA,KAAK,KAAK;AACV,IAAA,KAAK,QAAQ;MACZ,IAAIC,MAAM,KAAK,OAAO,EAAE;QACvBH,IAAI,GAAGD,WAAW,CAACC,IAAI;AACxB,MAAA,CAAC,MAAM,IAAIG,MAAM,KAAK,QAAQ,EAAE;AAC/BH,QAAAA,IAAI,GAAGD,WAAW,CAACC,IAAI,GAAG,CAACD,WAAW,CAACQ,KAAK,GAAGT,WAAW,CAACS,KAAK,IAAI,CAAC;AACtE,MAAA,CAAC,MAAM,IAAIJ,MAAM,KAAK,KAAK,EAAE;AAC5BH,QAAAA,IAAI,GAAGD,WAAW,CAACS,KAAK,GAAGV,WAAW,CAACS,KAAK;AAC7C,MAAA;AACA,MAAA;AAED,IAAA,KAAK,MAAM;AACX,IAAA,KAAK,OAAO;AACX;AACAN,MAAAA,GAAG,GAAGF,WAAW,CAACE,GAAG,GAAG,CAACF,WAAW,CAACM,MAAM,GAAGP,WAAW,CAACO,MAAM,IAAI,CAAC;AACrE,MAAA;AACF;EAEA,OAAO;IAAEL,IAAI;AAAEC,IAAAA;GAAK;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;IACaQ,eAAe,GAAGA,CAACC,IAAa,EAAEC,IAAa,KAAc;AACzE,EAAA,OAAOC,IAAI,CAACC,GAAG,CAACH,IAAI,CAACT,GAAG,GAAGU,IAAI,CAACV,GAAG,CAAC,GAAG,GAAG,IAAIW,IAAI,CAACC,GAAG,CAACH,IAAI,CAACV,IAAI,GAAGW,IAAI,CAACX,IAAI,CAAC,GAAG,GAAG;AACpF;;;;;"}
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
* @returns {T} A function that, when invoked, calls both the original event handler (if it exists) and the new event handler.
|
|
10
10
|
*/
|
|
11
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
-
var curryHandlers =
|
|
12
|
+
var curryHandlers = (ogFunc, newFunc) => {
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
14
|
return function () {
|
|
15
|
-
if (ogFunc) ogFunc
|
|
16
|
-
newFunc
|
|
15
|
+
if (ogFunc) ogFunc(...arguments);
|
|
16
|
+
newFunc(...arguments);
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/components/tooltip/utils.ts"],"sourcesContent":["/**\n * Currying function to combine handlers from the parent and child components\n *\n * @template T - The type of the event handlers.\n * @param {T | undefined} ogFunc - The original event handler. This parameter can be undefined.\n * @param {T} newFunc - The new event handler.\n * @returns {T} A function that, when invoked, calls both the original event handler (if it exists) and the new event handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const curryHandlers = <T extends (...args: any[]) => void>(\n\togFunc: T | undefined,\n\tnewFunc: T\n): T => {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\treturn ((...args: any[]) => {\n\t\tif (ogFunc) ogFunc(...args);\n\t\tnewFunc(...args);\n\t}) as T;\n};\n"],"names":["curryHandlers","ogFunc","newFunc","
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/components/tooltip/utils.ts"],"sourcesContent":["/**\n * Currying function to combine handlers from the parent and child components\n *\n * @template T - The type of the event handlers.\n * @param {T | undefined} ogFunc - The original event handler. This parameter can be undefined.\n * @param {T} newFunc - The new event handler.\n * @returns {T} A function that, when invoked, calls both the original event handler (if it exists) and the new event handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const curryHandlers = <T extends (...args: any[]) => void>(\n\togFunc: T | undefined,\n\tnewFunc: T\n): T => {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\treturn ((...args: any[]) => {\n\t\tif (ogFunc) ogFunc(...args);\n\t\tnewFunc(...args);\n\t}) as T;\n};\n"],"names":["curryHandlers","ogFunc","newFunc","arguments"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaA,aAAa,GAAGA,CAC5BC,MAAqB,EACrBC,OAAU,KACH;AACP;AACA,EAAA,OAAQ,YAAoB;AAC3B,IAAA,IAAID,MAAM,EAAEA,MAAM,CAAC,GAAAE,SAAO,CAAC;IAC3BD,OAAO,CAAC,GAAAC,SAAO,CAAC;EACjB,CAAC;AACF;;;;"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function _interopNamespace(e) {
|
|
7
|
+
if (e && e.__esModule) return e;
|
|
7
8
|
var n = Object.create(null);
|
|
8
9
|
if (e) {
|
|
9
10
|
Object.keys(e).forEach(function (k) {
|
|
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
|
|
|
20
21
|
return Object.freeze(n);
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
var React__namespace = /*#__PURE__*/
|
|
24
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Hook that exposes a piece of state that allows components to close themselves after a delay
|
|
@@ -39,7 +40,7 @@ var useAutoClose = function useAutoClose() {
|
|
|
39
40
|
closed = _React$useState2[0],
|
|
40
41
|
setClosed = _React$useState2[1];
|
|
41
42
|
var currentTimeout = React__namespace.useRef(null);
|
|
42
|
-
React__namespace.useEffect(
|
|
43
|
+
React__namespace.useEffect(() => {
|
|
43
44
|
// Reset current timeout when component mounts or when notification changes
|
|
44
45
|
if (currentTimeout.current) {
|
|
45
46
|
resetTimeout();
|
|
@@ -50,21 +51,21 @@ var useAutoClose = function useAutoClose() {
|
|
|
50
51
|
// toast will not close automatically.
|
|
51
52
|
if (shouldAutoClose) {
|
|
52
53
|
setClosed(false);
|
|
53
|
-
currentTimeout.current = setTimeout(
|
|
54
|
+
currentTimeout.current = setTimeout(() => {
|
|
54
55
|
setClosed(true);
|
|
55
56
|
|
|
56
57
|
// Handle onClose after the timeout is elapsed
|
|
57
58
|
if (onClose) onClose();
|
|
58
59
|
}, closeAfterMs);
|
|
59
60
|
}
|
|
60
|
-
return
|
|
61
|
+
return () => {
|
|
61
62
|
// Clear timeout when component unmounts
|
|
62
63
|
resetTimeout();
|
|
63
64
|
};
|
|
64
65
|
}, [shouldAutoClose, closeAfterMs, onClose]);
|
|
65
66
|
|
|
66
67
|
/** Resets the current timeout and `closed` to its initial value */
|
|
67
|
-
var resetTimeout =
|
|
68
|
+
var resetTimeout = () => {
|
|
68
69
|
if (currentTimeout.current !== null) {
|
|
69
70
|
clearTimeout(currentTimeout.current);
|
|
70
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoClose.js","sources":["../../../../src/hooks/useAutoClose/useAutoClose.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type useAutoClose = (\n\tshouldAutoClose?: boolean,\n\tcloseAfterMs?: number,\n\tonClose?: () => unknown\n) => [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n\n/**\n * Hook that exposes a piece of state that allows components to close themselves after a delay\n *\n * @param shouldAutoClose - When false prevents automated close (e.g. can be used to prevent auto-dismissal of interactive elements, an accessibility anti-pattern)\n * @param closeAfterMs - Delay in milliseconds before the component closes\n * @param onClose - Callback to be called when component closes\n * @returns [closed, setClosed] - a boolean tracking closed state, and a setter for that same state\n */\nexport const useAutoClose: useAutoClose = function (\n\tshouldAutoClose = true,\n\tcloseAfterMs = 3000,\n\tonClose\n) {\n\tconst [closed, setClosed] = React.useState<boolean>(false);\n\tconst currentTimeout = React.useRef<NodeJS.Timeout | null>(null);\n\n\tReact.useEffect(() => {\n\t\t// Reset current timeout when component mounts or when notification changes\n\t\tif (currentTimeout.current) {\n\t\t\tresetTimeout();\n\t\t}\n\n\t\t// Allowing autoClose when there are interactive elements in the toast is an anti-pattern\n\t\t// and should be avoided. If autoClose is set to true and interactive elements exist, the\n\t\t// toast will not close automatically.\n\t\tif (shouldAutoClose) {\n\t\t\tsetClosed(false);\n\n\t\t\tcurrentTimeout.current = setTimeout(() => {\n\t\t\t\tsetClosed(true);\n\n\t\t\t\t// Handle onClose after the timeout is elapsed\n\t\t\t\tif (onClose) onClose();\n\t\t\t}, closeAfterMs);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Clear timeout when component unmounts\n\t\t\tresetTimeout();\n\t\t};\n\t}, [shouldAutoClose, closeAfterMs, onClose]);\n\n\t/** Resets the current timeout and `closed` to its initial value */\n\tconst resetTimeout = (): void => {\n\t\tif (currentTimeout.current !== null) {\n\t\t\tclearTimeout(currentTimeout.current);\n\t\t}\n\t\tsetClosed(false);\n\t};\n\n\treturn [closed, setClosed];\n};\n"],"names":["useAutoClose","shouldAutoClose","arguments","length","undefined","closeAfterMs","onClose","_React$useState","React","useState","_React$useState2","_slicedToArray","closed","setClosed","currentTimeout","useRef","useEffect","current","resetTimeout","setTimeout","clearTimeout"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAutoClose.js","sources":["../../../../src/hooks/useAutoClose/useAutoClose.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type useAutoClose = (\n\tshouldAutoClose?: boolean,\n\tcloseAfterMs?: number,\n\tonClose?: () => unknown\n) => [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n\n/**\n * Hook that exposes a piece of state that allows components to close themselves after a delay\n *\n * @param shouldAutoClose - When false prevents automated close (e.g. can be used to prevent auto-dismissal of interactive elements, an accessibility anti-pattern)\n * @param closeAfterMs - Delay in milliseconds before the component closes\n * @param onClose - Callback to be called when component closes\n * @returns [closed, setClosed] - a boolean tracking closed state, and a setter for that same state\n */\nexport const useAutoClose: useAutoClose = function (\n\tshouldAutoClose = true,\n\tcloseAfterMs = 3000,\n\tonClose\n) {\n\tconst [closed, setClosed] = React.useState<boolean>(false);\n\tconst currentTimeout = React.useRef<NodeJS.Timeout | null>(null);\n\n\tReact.useEffect(() => {\n\t\t// Reset current timeout when component mounts or when notification changes\n\t\tif (currentTimeout.current) {\n\t\t\tresetTimeout();\n\t\t}\n\n\t\t// Allowing autoClose when there are interactive elements in the toast is an anti-pattern\n\t\t// and should be avoided. If autoClose is set to true and interactive elements exist, the\n\t\t// toast will not close automatically.\n\t\tif (shouldAutoClose) {\n\t\t\tsetClosed(false);\n\n\t\t\tcurrentTimeout.current = setTimeout(() => {\n\t\t\t\tsetClosed(true);\n\n\t\t\t\t// Handle onClose after the timeout is elapsed\n\t\t\t\tif (onClose) onClose();\n\t\t\t}, closeAfterMs);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Clear timeout when component unmounts\n\t\t\tresetTimeout();\n\t\t};\n\t}, [shouldAutoClose, closeAfterMs, onClose]);\n\n\t/** Resets the current timeout and `closed` to its initial value */\n\tconst resetTimeout = (): void => {\n\t\tif (currentTimeout.current !== null) {\n\t\t\tclearTimeout(currentTimeout.current);\n\t\t}\n\t\tsetClosed(false);\n\t};\n\n\treturn [closed, setClosed];\n};\n"],"names":["useAutoClose","shouldAutoClose","arguments","length","undefined","closeAfterMs","onClose","_React$useState","React","useState","_React$useState2","_slicedToArray","closed","setClosed","currentTimeout","useRef","useEffect","current","resetTimeout","setTimeout","clearTimeout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaA,YAA0B,GAAG,SAA7BA,YAA0BA,GAIrC;AAAA,EAAA,IAHDC,eAAe,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI;AAAA,EAAA,IACtBG,YAAY,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI;EAAA,IACnBI,OAAO,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;AAEP,EAAA,IAAAG,eAAA,GAA4BC,gBAAK,CAACC,QAAQ,CAAU,KAAK,CAAC;IAAAC,gBAAA,GAAAC,uCAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAAnDK,IAAAA,MAAM,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,SAAS,GAAAH,gBAAA,CAAA,CAAA,CAAA;AACxB,EAAA,IAAMI,cAAc,GAAGN,gBAAK,CAACO,MAAM,CAAwB,IAAI,CAAC;EAEhEP,gBAAK,CAACQ,SAAS,CAAC,MAAM;AACrB;IACA,IAAIF,cAAc,CAACG,OAAO,EAAE;AAC3BC,MAAAA,YAAY,EAAE;AACf,IAAA;;AAEA;AACA;AACA;AACA,IAAA,IAAIjB,eAAe,EAAE;MACpBY,SAAS,CAAC,KAAK,CAAC;AAEhBC,MAAAA,cAAc,CAACG,OAAO,GAAGE,UAAU,CAAC,MAAM;QACzCN,SAAS,CAAC,IAAI,CAAC;;AAEf;AACA,QAAA,IAAIP,OAAO,EAAEA,OAAO,EAAE;MACvB,CAAC,EAAED,YAAY,CAAC;AACjB,IAAA;AAEA,IAAA,OAAO,MAAM;AACZ;AACAa,MAAAA,YAAY,EAAE;IACf,CAAC;EACF,CAAC,EAAE,CAACjB,eAAe,EAAEI,YAAY,EAAEC,OAAO,CAAC,CAAC;;AAE5C;EACA,IAAMY,YAAY,GAAGA,MAAY;AAChC,IAAA,IAAIJ,cAAc,CAACG,OAAO,KAAK,IAAI,EAAE;AACpCG,MAAAA,YAAY,CAACN,cAAc,CAACG,OAAO,CAAC;AACrC,IAAA;IACAJ,SAAS,CAAC,KAAK,CAAC;EACjB,CAAC;AAED,EAAA,OAAO,CAACD,MAAM,EAAEC,SAAS,CAAC;AAC3B;;;;"}
|
|
@@ -34,7 +34,7 @@ function getBreakpoint(width) {
|
|
|
34
34
|
*
|
|
35
35
|
* @returns {keyof Breakpoints} - the current breakpoint
|
|
36
36
|
*/
|
|
37
|
-
var useBreakpoint =
|
|
37
|
+
var useBreakpoint = () => {
|
|
38
38
|
var initialBreakpoint = getBreakpoint(window.innerWidth);
|
|
39
39
|
var _useState = React.useState(initialBreakpoint),
|
|
40
40
|
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
|
@@ -48,11 +48,11 @@ var useBreakpoint = function useBreakpoint() {
|
|
|
48
48
|
instance: new index.FrameDebounce()
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
React.useLayoutEffect(
|
|
51
|
+
React.useLayoutEffect(() => {
|
|
52
52
|
// setup event listeners
|
|
53
|
-
var handleResize =
|
|
53
|
+
var handleResize = () => {
|
|
54
54
|
var _resizeObserverRef$cu;
|
|
55
|
-
resizeObserverRef === null || resizeObserverRef === void 0 ? void 0 : (_resizeObserverRef$cu = resizeObserverRef.current) === null || _resizeObserverRef$cu === void 0 ? void 0 : _resizeObserverRef$cu.instance.debounce(
|
|
55
|
+
resizeObserverRef === null || resizeObserverRef === void 0 ? void 0 : (_resizeObserverRef$cu = resizeObserverRef.current) === null || _resizeObserverRef$cu === void 0 ? void 0 : _resizeObserverRef$cu.instance.debounce(() => {
|
|
56
56
|
var breakpoint = getBreakpoint(window.innerWidth);
|
|
57
57
|
setCurrentBreakpoint(breakpoint);
|
|
58
58
|
});
|
|
@@ -60,7 +60,7 @@ var useBreakpoint = function useBreakpoint() {
|
|
|
60
60
|
window.addEventListener('resize', handleResize);
|
|
61
61
|
|
|
62
62
|
// clean it up
|
|
63
|
-
return
|
|
63
|
+
return () => {
|
|
64
64
|
var _resizeObserverRef$cu2;
|
|
65
65
|
window.removeEventListener('resize', handleResize);
|
|
66
66
|
resizeObserverRef === null || resizeObserverRef === void 0 ? void 0 : (_resizeObserverRef$cu2 = resizeObserverRef.current) === null || _resizeObserverRef$cu2 === void 0 ? void 0 : _resizeObserverRef$cu2.instance.cancel();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useBreakpoint/index.ts"],"sourcesContent":["/* eslint-disable sort-keys */\nimport { useState, useRef, useLayoutEffect } from 'react';\nimport { FrameDebounce, FrameDebounceType } from '../../utils/frameDebounce';\n\ntype Breakpoints = {\n\txs: number;\n\tsm: number;\n\tmd: number;\n\tlg: number;\n\txl: number;\n\txxl: number;\n};\n\nconst gridBreakpoints: Breakpoints = {\n\txs: 0,\n\tsm: 600,\n\tmd: 834,\n\tlg: 1024,\n\txl: 1280,\n\txxl: 1440\n};\n\n/**\n * Gets a breakpoint based on the width\n *\n * @param width - The width to determine the breakpoint\n * @returns {keyof Breakpoints} - the current breakpoint\n */\nfunction getBreakpoint(width: number): keyof Breakpoints {\n\tlet currentBreakpoint: keyof Breakpoints = 'xs';\n\n\tfor (const breakpoint in gridBreakpoints) {\n\t\tif (width >= gridBreakpoints[breakpoint as keyof Breakpoints]) {\n\t\t\tcurrentBreakpoint = breakpoint as keyof Breakpoints;\n\t\t}\n\t}\n\n\treturn currentBreakpoint;\n}\n\n/**\n * React Hook to return the current breakpoint\n *\n * @returns {keyof Breakpoints} - the current breakpoint\n */\nexport const useBreakpoint = (): keyof Breakpoints => {\n\tconst initialBreakpoint = getBreakpoint(window.innerWidth);\n\tconst [currentBreakpoint, setCurrentBreakpoint] = useState<keyof Breakpoints>(initialBreakpoint);\n\n\t//create a single ref for us to store a FrameDebounce.\n\tconst resizeObserverRef = useRef<{\n\t\tinstance: FrameDebounceType;\n\t}>();\n\n\tif (!resizeObserverRef.current) {\n\t\tresizeObserverRef.current = {\n\t\t\tinstance: new FrameDebounce()\n\t\t};\n\t}\n\n\tuseLayoutEffect(() => {\n\t\t// setup event listeners\n\t\tconst handleResize = () => {\n\t\t\tresizeObserverRef?.current?.instance.debounce(() => {\n\t\t\t\tconst breakpoint = getBreakpoint(window.innerWidth);\n\t\t\t\tsetCurrentBreakpoint(breakpoint);\n\t\t\t});\n\t\t};\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\t// clean it up\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t\tresizeObserverRef?.current?.instance.cancel();\n\t\t};\n\t}, []);\n\n\treturn currentBreakpoint;\n};\n\nexport default useBreakpoint;\n"],"names":["gridBreakpoints","xs","sm","md","lg","xl","xxl","getBreakpoint","width","currentBreakpoint","breakpoint","useBreakpoint","initialBreakpoint","window","innerWidth","_useState","useState","_useState2","_slicedToArray","setCurrentBreakpoint","resizeObserverRef","useRef","current","instance","FrameDebounce","useLayoutEffect","handleResize","_resizeObserverRef$cu","debounce","addEventListener","_resizeObserverRef$cu2","removeEventListener","cancel"],"mappings":";;;;;;AAaA,IAAMA,eAA4B,GAAG;AACpCC,EAAAA,EAAE,EAAE,CAAC;AACLC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,GAAG,EAAE;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAACC,KAAa,EAAqB;EACxD,IAAIC,iBAAoC,GAAG,IAAI;AAE/C,EAAA,KAAK,IAAMC,UAAU,IAAIV,eAAe,EAAE;AACzC,IAAA,IAAIQ,KAAK,IAAIR,eAAe,CAACU,UAAU,CAAsB,EAAE;AAC9DD,MAAAA,iBAAiB,GAAGC,UAA+B;AACpD,IAAA;AACD,EAAA;AAEA,EAAA,OAAOD,iBAAiB;AACzB;;AAEA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useBreakpoint/index.ts"],"sourcesContent":["/* eslint-disable sort-keys */\nimport { useState, useRef, useLayoutEffect } from 'react';\nimport { FrameDebounce, FrameDebounceType } from '../../utils/frameDebounce';\n\ntype Breakpoints = {\n\txs: number;\n\tsm: number;\n\tmd: number;\n\tlg: number;\n\txl: number;\n\txxl: number;\n};\n\nconst gridBreakpoints: Breakpoints = {\n\txs: 0,\n\tsm: 600,\n\tmd: 834,\n\tlg: 1024,\n\txl: 1280,\n\txxl: 1440\n};\n\n/**\n * Gets a breakpoint based on the width\n *\n * @param width - The width to determine the breakpoint\n * @returns {keyof Breakpoints} - the current breakpoint\n */\nfunction getBreakpoint(width: number): keyof Breakpoints {\n\tlet currentBreakpoint: keyof Breakpoints = 'xs';\n\n\tfor (const breakpoint in gridBreakpoints) {\n\t\tif (width >= gridBreakpoints[breakpoint as keyof Breakpoints]) {\n\t\t\tcurrentBreakpoint = breakpoint as keyof Breakpoints;\n\t\t}\n\t}\n\n\treturn currentBreakpoint;\n}\n\n/**\n * React Hook to return the current breakpoint\n *\n * @returns {keyof Breakpoints} - the current breakpoint\n */\nexport const useBreakpoint = (): keyof Breakpoints => {\n\tconst initialBreakpoint = getBreakpoint(window.innerWidth);\n\tconst [currentBreakpoint, setCurrentBreakpoint] = useState<keyof Breakpoints>(initialBreakpoint);\n\n\t//create a single ref for us to store a FrameDebounce.\n\tconst resizeObserverRef = useRef<{\n\t\tinstance: FrameDebounceType;\n\t}>();\n\n\tif (!resizeObserverRef.current) {\n\t\tresizeObserverRef.current = {\n\t\t\tinstance: new FrameDebounce()\n\t\t};\n\t}\n\n\tuseLayoutEffect(() => {\n\t\t// setup event listeners\n\t\tconst handleResize = () => {\n\t\t\tresizeObserverRef?.current?.instance.debounce(() => {\n\t\t\t\tconst breakpoint = getBreakpoint(window.innerWidth);\n\t\t\t\tsetCurrentBreakpoint(breakpoint);\n\t\t\t});\n\t\t};\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\t// clean it up\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t\tresizeObserverRef?.current?.instance.cancel();\n\t\t};\n\t}, []);\n\n\treturn currentBreakpoint;\n};\n\nexport default useBreakpoint;\n"],"names":["gridBreakpoints","xs","sm","md","lg","xl","xxl","getBreakpoint","width","currentBreakpoint","breakpoint","useBreakpoint","initialBreakpoint","window","innerWidth","_useState","useState","_useState2","_slicedToArray","setCurrentBreakpoint","resizeObserverRef","useRef","current","instance","FrameDebounce","useLayoutEffect","handleResize","_resizeObserverRef$cu","debounce","addEventListener","_resizeObserverRef$cu2","removeEventListener","cancel"],"mappings":";;;;;;AAaA,IAAMA,eAA4B,GAAG;AACpCC,EAAAA,EAAE,EAAE,CAAC;AACLC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,GAAG,EAAE;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAACC,KAAa,EAAqB;EACxD,IAAIC,iBAAoC,GAAG,IAAI;AAE/C,EAAA,KAAK,IAAMC,UAAU,IAAIV,eAAe,EAAE;AACzC,IAAA,IAAIQ,KAAK,IAAIR,eAAe,CAACU,UAAU,CAAsB,EAAE;AAC9DD,MAAAA,iBAAiB,GAAGC,UAA+B;AACpD,IAAA;AACD,EAAA;AAEA,EAAA,OAAOD,iBAAiB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAME,aAAa,GAAGA,MAAyB;AACrD,EAAA,IAAMC,iBAAiB,GAAGL,aAAa,CAACM,MAAM,CAACC,UAAU,CAAC;AAC1D,EAAA,IAAAC,SAAA,GAAkDC,cAAQ,CAAoBJ,iBAAiB,CAAC;IAAAK,UAAA,GAAAC,uCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAzFN,IAAAA,iBAAiB,GAAAQ,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,oBAAoB,GAAAF,UAAA,CAAA,CAAA,CAAA;;AAE9C;AACA,EAAA,IAAMG,iBAAiB,GAAGC,YAAM,EAE5B;AAEJ,EAAA,IAAI,CAACD,iBAAiB,CAACE,OAAO,EAAE;IAC/BF,iBAAiB,CAACE,OAAO,GAAG;MAC3BC,QAAQ,EAAE,IAAIC,mBAAa;KAC3B;AACF,EAAA;AAEAC,EAAAA,qBAAe,CAAC,MAAM;AACrB;IACA,IAAMC,YAAY,GAAGA,MAAM;AAAA,MAAA,IAAAC,qBAAA;AAC1BP,MAAAA,iBAAiB,aAAjBA,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAO,qBAAA,GAAjBP,iBAAiB,CAAEE,OAAO,MAAA,IAAA,IAAAK,qBAAA,uBAA1BA,qBAAA,CAA4BJ,QAAQ,CAACK,QAAQ,CAAC,MAAM;AACnD,QAAA,IAAMlB,UAAU,GAAGH,aAAa,CAACM,MAAM,CAACC,UAAU,CAAC;QACnDK,oBAAoB,CAACT,UAAU,CAAC;AACjC,MAAA,CAAC,CAAC;IACH,CAAC;AAEDG,IAAAA,MAAM,CAACgB,gBAAgB,CAAC,QAAQ,EAAEH,YAAY,CAAC;;AAE/C;AACA,IAAA,OAAO,MAAM;AAAA,MAAA,IAAAI,sBAAA;AACZjB,MAAAA,MAAM,CAACkB,mBAAmB,CAAC,QAAQ,EAAEL,YAAY,CAAC;AAClDN,MAAAA,iBAAiB,aAAjBA,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAU,sBAAA,GAAjBV,iBAAiB,CAAEE,OAAO,MAAA,IAAA,IAAAQ,sBAAA,uBAA1BA,sBAAA,CAA4BP,QAAQ,CAACS,MAAM,EAAE;IAC9C,CAAC;EACF,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOvB,iBAAiB;AACzB;;;;"}
|
|
@@ -17,8 +17,8 @@ var useClickOutside = function useClickOutside(menuRef, triggerRef) {
|
|
|
17
17
|
var onOutsideClick = arguments.length > 3 ? arguments[3] : undefined;
|
|
18
18
|
var disabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
19
19
|
var excludeSelectors = arguments.length > 5 ? arguments[5] : undefined;
|
|
20
|
-
React.useEffect(
|
|
21
|
-
var handleClickOutside =
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
var handleClickOutside = event => {
|
|
22
22
|
var _excludeSelectors$som;
|
|
23
23
|
var menuElement = menuRef === null || menuRef === void 0 ? void 0 : menuRef.current;
|
|
24
24
|
var triggerElement = triggerRef === null || triggerRef === void 0 ? void 0 : triggerRef.current;
|
|
@@ -30,7 +30,7 @@ var useClickOutside = function useClickOutside(menuRef, triggerRef) {
|
|
|
30
30
|
* Check if the event target is within any of the excluded selectors from
|
|
31
31
|
* the whitelist. If it is, do not call the onOutsideClick function.
|
|
32
32
|
*/
|
|
33
|
-
var isExcluded = (_excludeSelectors$som = excludeSelectors === null || excludeSelectors === void 0 ? void 0 : excludeSelectors.some(
|
|
33
|
+
var isExcluded = (_excludeSelectors$som = excludeSelectors === null || excludeSelectors === void 0 ? void 0 : excludeSelectors.some(selector => {
|
|
34
34
|
var _event$target;
|
|
35
35
|
return (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.closest(selector);
|
|
36
36
|
})) !== null && _excludeSelectors$som !== void 0 ? _excludeSelectors$som : false;
|
|
@@ -39,7 +39,7 @@ var useClickOutside = function useClickOutside(menuRef, triggerRef) {
|
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
document.body.addEventListener(eventType, handleClickOutside);
|
|
42
|
-
return
|
|
42
|
+
return () => {
|
|
43
43
|
document.body.removeEventListener(eventType, handleClickOutside);
|
|
44
44
|
};
|
|
45
45
|
}, [menuRef, triggerRef, onOutsideClick, disabled, eventType, excludeSelectors]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useClickOutside/index.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Hook to detect clicks outside of a given DOM element, with an optional exclusion for selectors.\n *\n * @param menuRef - Reference to the DOM element to detect outside clicks for.\n * @param triggerRef - Reference to the DOM element that caused this menu to be shown.\n * @param eventType - Event type to listen for.\n * @param onOutsideClick - Function to call when a click is detected outside the menuRef element.\n * @param disabled - If the hook should be disabled.\n * @param excludeSelectors - Optional array of CSS selectors to exclude from the outside click detection.\n */\nexport const useClickOutside = (\n\tmenuRef: React.RefObject<HTMLElement>,\n\ttriggerRef: React.RefObject<HTMLElement> | undefined,\n\teventType: 'mousedown' | 'mouseup' | 'click' = 'mousedown',\n\tonOutsideClick: () => void,\n\tdisabled = false,\n\texcludeSelectors?: string[]\n): void => {\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tconst menuElement = menuRef?.current;\n\t\t\tconst triggerElement = triggerRef?.current;\n\t\t\tconst target = event.target as Node;\n\n\t\t\tconst isClickMenu = menuElement && menuElement.contains(target);\n\t\t\tconst isClickTrigger = triggerElement && triggerElement.contains(target);\n\n\t\t\t/**\n\t\t\t * Check if the event target is within any of the excluded selectors from\n\t\t\t * the whitelist. If it is, do not call the onOutsideClick function.\n\t\t\t */\n\t\t\tconst isExcluded =\n\t\t\t\texcludeSelectors?.some((selector) => (event.target as HTMLElement)?.closest(selector)) ??\n\t\t\t\tfalse;\n\n\t\t\tif (!disabled && !isClickMenu && !isClickTrigger && !isExcluded) {\n\t\t\t\tonOutsideClick();\n\t\t\t}\n\t\t};\n\n\t\tdocument.body.addEventListener(eventType, handleClickOutside);\n\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener(eventType, handleClickOutside);\n\t\t};\n\t}, [\nmenuRef,\ntriggerRef,\nonOutsideClick,\ndisabled,\neventType,\nexcludeSelectors\n]);\n};\n"],"names":["useClickOutside","menuRef","triggerRef","eventType","arguments","length","undefined","onOutsideClick","disabled","excludeSelectors","useEffect","handleClickOutside","event","_excludeSelectors$som","menuElement","current","triggerElement","target","isClickMenu","contains","isClickTrigger","isExcluded","some","selector","_event$target","closest","document","body","addEventListener","removeEventListener"],"mappings":";;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAC3BC,OAAqC,EACrCC,UAAoD,EAK1C;AAAA,EAAA,IAJVC,SAA4C,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,WAAW;EAAA,IAC1DG,cAA0B,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;AAAA,EAAA,IAC1BE,QAAQ,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;EAAA,IAChBK,gBAA2B,GAAAL,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;AAE3BI,EAAAA,eAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useClickOutside/index.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Hook to detect clicks outside of a given DOM element, with an optional exclusion for selectors.\n *\n * @param menuRef - Reference to the DOM element to detect outside clicks for.\n * @param triggerRef - Reference to the DOM element that caused this menu to be shown.\n * @param eventType - Event type to listen for.\n * @param onOutsideClick - Function to call when a click is detected outside the menuRef element.\n * @param disabled - If the hook should be disabled.\n * @param excludeSelectors - Optional array of CSS selectors to exclude from the outside click detection.\n */\nexport const useClickOutside = (\n\tmenuRef: React.RefObject<HTMLElement>,\n\ttriggerRef: React.RefObject<HTMLElement> | undefined,\n\teventType: 'mousedown' | 'mouseup' | 'click' = 'mousedown',\n\tonOutsideClick: () => void,\n\tdisabled = false,\n\texcludeSelectors?: string[]\n): void => {\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tconst menuElement = menuRef?.current;\n\t\t\tconst triggerElement = triggerRef?.current;\n\t\t\tconst target = event.target as Node;\n\n\t\t\tconst isClickMenu = menuElement && menuElement.contains(target);\n\t\t\tconst isClickTrigger = triggerElement && triggerElement.contains(target);\n\n\t\t\t/**\n\t\t\t * Check if the event target is within any of the excluded selectors from\n\t\t\t * the whitelist. If it is, do not call the onOutsideClick function.\n\t\t\t */\n\t\t\tconst isExcluded =\n\t\t\t\texcludeSelectors?.some((selector) => (event.target as HTMLElement)?.closest(selector)) ??\n\t\t\t\tfalse;\n\n\t\t\tif (!disabled && !isClickMenu && !isClickTrigger && !isExcluded) {\n\t\t\t\tonOutsideClick();\n\t\t\t}\n\t\t};\n\n\t\tdocument.body.addEventListener(eventType, handleClickOutside);\n\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener(eventType, handleClickOutside);\n\t\t};\n\t}, [\nmenuRef,\ntriggerRef,\nonOutsideClick,\ndisabled,\neventType,\nexcludeSelectors\n]);\n};\n"],"names":["useClickOutside","menuRef","triggerRef","eventType","arguments","length","undefined","onOutsideClick","disabled","excludeSelectors","useEffect","handleClickOutside","event","_excludeSelectors$som","menuElement","current","triggerElement","target","isClickMenu","contains","isClickTrigger","isExcluded","some","selector","_event$target","closest","document","body","addEventListener","removeEventListener"],"mappings":";;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAC3BC,OAAqC,EACrCC,UAAoD,EAK1C;AAAA,EAAA,IAJVC,SAA4C,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,WAAW;EAAA,IAC1DG,cAA0B,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;AAAA,EAAA,IAC1BE,QAAQ,GAAAJ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;EAAA,IAChBK,gBAA2B,GAAAL,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;AAE3BI,EAAAA,eAAS,CAAC,MAAM;IACf,IAAMC,kBAAkB,GAAIC,KAAiB,IAAK;AAAA,MAAA,IAAAC,qBAAA;MACjD,IAAMC,WAAW,GAAGb,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEc,OAAO;MACpC,IAAMC,cAAc,GAAGd,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAEa,OAAO;AAC1C,MAAA,IAAME,MAAM,GAAGL,KAAK,CAACK,MAAc;MAEnC,IAAMC,WAAW,GAAGJ,WAAW,IAAIA,WAAW,CAACK,QAAQ,CAACF,MAAM,CAAC;MAC/D,IAAMG,cAAc,GAAGJ,cAAc,IAAIA,cAAc,CAACG,QAAQ,CAACF,MAAM,CAAC;;AAExE;AACH;AACA;AACA;AACG,MAAA,IAAMI,UAAU,GAAA,CAAAR,qBAAA,GACfJ,gBAAgB,KAAA,IAAA,IAAhBA,gBAAgB,KAAA,MAAA,GAAA,MAAA,GAAhBA,gBAAgB,CAAEa,IAAI,CAAEC,QAAQ,IAAA;AAAA,QAAA,IAAAC,aAAA;AAAA,QAAA,OAAA,CAAAA,aAAA,GAAMZ,KAAK,CAACK,MAAM,MAAA,IAAA,IAAAO,aAAA,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAA,CAA+BC,OAAO,CAACF,QAAQ,CAAC;AAAA,MAAA,CAAA,CAAC,MAAA,IAAA,IAAAV,qBAAA,KAAA,MAAA,GAAAA,qBAAA,GACtF,KAAK;MAEN,IAAI,CAACL,QAAQ,IAAI,CAACU,WAAW,IAAI,CAACE,cAAc,IAAI,CAACC,UAAU,EAAE;AAChEd,QAAAA,cAAc,EAAE;AACjB,MAAA;IACD,CAAC;IAEDmB,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAACzB,SAAS,EAAEQ,kBAAkB,CAAC;AAE7D,IAAA,OAAO,MAAM;MACZe,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC1B,SAAS,EAAEQ,kBAAkB,CAAC;IACjE,CAAC;AACF,EAAA,CAAC,EAAE,CACJV,OAAO,EACPC,UAAU,EACVK,cAAc,EACdC,QAAQ,EACRL,SAAS,EACTM,gBAAgB,CACf,CAAC;AACF;;;;"}
|
|
@@ -37,41 +37,32 @@ var useCoordinate = function useCoordinate(element) {
|
|
|
37
37
|
|
|
38
38
|
//getBoundingClientRect() causes a reflow plus other perf issues.
|
|
39
39
|
// its actually cheaper for the browser to fire intersection observers as we need.
|
|
40
|
-
var observer = React.useMemo(
|
|
41
|
-
return new IntersectionObserver(
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
left: bounds.left + window.scrollX,
|
|
51
|
-
top: bounds.top + window.scrollY
|
|
52
|
-
});
|
|
53
|
-
setCoordinate(offsetBounds);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Disconnect the observer to stop from running in the background
|
|
57
|
-
} catch (err) {
|
|
58
|
-
_iterator.e(err);
|
|
59
|
-
} finally {
|
|
60
|
-
_iterator.f();
|
|
40
|
+
var observer = React.useMemo(() => {
|
|
41
|
+
return new IntersectionObserver(entries => {
|
|
42
|
+
for (var entry of entries) {
|
|
43
|
+
// The `entry.boundingClientRect` is where all the dimensions are stored
|
|
44
|
+
var bounds = entry.boundingClientRect.toJSON();
|
|
45
|
+
var offsetBounds = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, bounds), {}, {
|
|
46
|
+
left: bounds.left + window.scrollX,
|
|
47
|
+
top: bounds.top + window.scrollY
|
|
48
|
+
});
|
|
49
|
+
setCoordinate(offsetBounds);
|
|
61
50
|
}
|
|
51
|
+
|
|
52
|
+
// Disconnect the observer to stop from running in the background
|
|
62
53
|
observer.disconnect();
|
|
63
54
|
});
|
|
64
55
|
}, []);
|
|
65
|
-
var observeElementAndUpdateCoordinates = React.useCallback(
|
|
56
|
+
var observeElementAndUpdateCoordinates = React.useCallback(() => {
|
|
66
57
|
var _intersectionObserver;
|
|
67
58
|
if (!element) {
|
|
68
59
|
return;
|
|
69
60
|
}
|
|
70
|
-
intersectionObserverRef === null || intersectionObserverRef === void 0 ? void 0 : (_intersectionObserver = intersectionObserverRef.current) === null || _intersectionObserver === void 0 ? void 0 : _intersectionObserver.instance.debounce(
|
|
61
|
+
intersectionObserverRef === null || intersectionObserverRef === void 0 ? void 0 : (_intersectionObserver = intersectionObserverRef.current) === null || _intersectionObserver === void 0 ? void 0 : _intersectionObserver.instance.debounce(() => {
|
|
71
62
|
observer.observe(element);
|
|
72
63
|
});
|
|
73
64
|
}, [element, observer]);
|
|
74
|
-
React.useLayoutEffect(
|
|
65
|
+
React.useLayoutEffect(() => {
|
|
75
66
|
if (!element) {
|
|
76
67
|
return;
|
|
77
68
|
}
|
|
@@ -109,7 +100,7 @@ var useCoordinate = function useCoordinate(element) {
|
|
|
109
100
|
}
|
|
110
101
|
window.addEventListener('resize', observeElementAndUpdateCoordinates);
|
|
111
102
|
if (scrollContainer) scrollContainer.addEventListener('scroll', observeElementAndUpdateCoordinates);
|
|
112
|
-
return
|
|
103
|
+
return () => {
|
|
113
104
|
var _intersectionObserver2;
|
|
114
105
|
intersectionObserverRef === null || intersectionObserverRef === void 0 ? void 0 : (_intersectionObserver2 = intersectionObserverRef.current) === null || _intersectionObserver2 === void 0 ? void 0 : _intersectionObserver2.instance.cancel();
|
|
115
106
|
window.removeEventListener('resize', observeElementAndUpdateCoordinates);
|
|
@@ -118,15 +109,15 @@ var useCoordinate = function useCoordinate(element) {
|
|
|
118
109
|
}, [element, observer, scrollContainer, disabledScrollTracking, openState, observeElementAndUpdateCoordinates]);
|
|
119
110
|
|
|
120
111
|
// This effect is responsible for observing the scroll container for changes in size.
|
|
121
|
-
React.useLayoutEffect(
|
|
112
|
+
React.useLayoutEffect(() => {
|
|
122
113
|
if (!scrollContainer) {
|
|
123
114
|
return;
|
|
124
115
|
}
|
|
125
|
-
var resizeObserver = new ResizeObserver(
|
|
116
|
+
var resizeObserver = new ResizeObserver(() => {
|
|
126
117
|
observeElementAndUpdateCoordinates();
|
|
127
118
|
});
|
|
128
119
|
resizeObserver.observe(scrollContainer);
|
|
129
|
-
return
|
|
120
|
+
return () => {
|
|
130
121
|
resizeObserver.disconnect();
|
|
131
122
|
};
|
|
132
123
|
}, [element, observeElementAndUpdateCoordinates, scrollContainer]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useCoordinate/index.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState, useMemo, useCallback } from 'react';\nimport { FrameDebounce, FrameDebounceType } from '../../utils/frameDebounce';\n\n/**\n * get coordinates of an element relative to window and listen for changes.\n *\n * @param element element of type T\n * @param disabledScrollTracking boolean to disable scroll tracking.\n * @param openState boolean to track if the element's open state changed.\n * @returns coordinate object of element.\n */\nexport const useCoordinate = function useCoordinate<T extends HTMLElement | null>(\n\telement: T,\n\tdisabledScrollTracking = false,\n\topenState: boolean\n): {\n\tbottom: number;\n\theight: number;\n\tleft: number;\n\tright: number;\n\ttop: number;\n\twidth: number;\n\tx: number;\n\ty: number;\n} {\n\tconst [coordinate, setCoordinate] = useState({\n\t\tbottom: 0,\n\t\theight: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\twidth: 0,\n\t\tx: 0,\n\t\ty: 0\n\t});\n\t//create a single ref for us to store a FrameDebounce.\n\tconst intersectionObserverRef = useRef<{\n\t\tinstance: FrameDebounceType;\n\t}>();\n\n\tconst [scrollContainer, setScrollContainer] = useState<HTMLElement | null>(null);\n\n\t//getBoundingClientRect() causes a reflow plus other perf issues.\n\t// its actually cheaper for the browser to fire intersection observers as we need.\n\tconst observer = useMemo(() => {\n\t\treturn new IntersectionObserver((entries) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\t// The `entry.boundingClientRect` is where all the dimensions are stored\n\t\t\t\tconst bounds = entry.boundingClientRect.toJSON();\n\n\t\t\t\tconst offsetBounds = {\n\t\t\t\t\t...bounds,\n\t\t\t\t\tleft: bounds.left + window.scrollX,\n\t\t\t\t\ttop: bounds.top + window.scrollY\n\t\t\t\t};\n\n\t\t\t\tsetCoordinate(offsetBounds);\n\t\t\t}\n\n\t\t\t// Disconnect the observer to stop from running in the background\n\t\t\tobserver.disconnect();\n\t\t});\n\t}, []);\n\n\tconst observeElementAndUpdateCoordinates = useCallback(() => {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\t\tintersectionObserverRef?.current?.instance.debounce(() => {\n\t\t\tobserver.observe(element);\n\t\t});\n\t}, [element, observer]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * This block of code detects if the element is within a scrolling container so we can provide more exact calculations\n\t\t * in the event that the element's position needs to be recalculated relative to the container's new scroll position.\n\t\t *\n\t\t * If we detect that the element is within a scrolling container, we store a reference to the scrollable element. That way\n\t\t * we can assign event listeners to the scroll element so that we can recalculate the elements position based on the\n\t\t * scroll value.\n\t\t */\n\t\tif (!disabledScrollTracking) {\n\t\t\tlet elementParent = element.parentElement;\n\n\t\t\twhile (elementParent && scrollContainer === null) {\n\t\t\t\tconst style = window.getComputedStyle(elementParent);\n\t\t\t\tconst overflowY = style.getPropertyValue('overflow-y');\n\n\t\t\t\tif (overflowY === 'auto' || overflowY === 'scroll') {\n\t\t\t\t\tsetScrollContainer(elementParent);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (elementParent.tagName === 'BODY') {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telementParent = elementParent.parentElement;\n\t\t\t}\n\t\t}\n\n\t\t// observe real quick to setup initial state.\n\t\tobserver.observe(element);\n\n\t\tif (!intersectionObserverRef.current) {\n\t\t\tintersectionObserverRef.current = {\n\t\t\t\tinstance: new FrameDebounce()\n\t\t\t};\n\t\t}\n\n\t\twindow.addEventListener('resize', observeElementAndUpdateCoordinates);\n\t\tif (scrollContainer)\n\t\t\tscrollContainer.addEventListener('scroll', observeElementAndUpdateCoordinates);\n\n\t\treturn () => {\n\t\t\tintersectionObserverRef?.current?.instance.cancel();\n\n\t\t\twindow.removeEventListener('resize', observeElementAndUpdateCoordinates);\n\t\t\tif (scrollContainer)\n\t\t\t\tscrollContainer.removeEventListener('scroll', observeElementAndUpdateCoordinates);\n\t\t};\n\t}, [\n\t\telement,\n\t\tobserver,\n\t\tscrollContainer,\n\t\tdisabledScrollTracking,\n\t\topenState,\n\t\tobserveElementAndUpdateCoordinates\n\t]);\n\n\t// This effect is responsible for observing the scroll container for changes in size.\n\tuseLayoutEffect(() => {\n\t\tif (!scrollContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tobserveElementAndUpdateCoordinates();\n\t\t});\n\n\t\tresizeObserver.observe(scrollContainer);\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t};\n\t}, [element, observeElementAndUpdateCoordinates, scrollContainer]);\n\n\treturn coordinate;\n};\n"],"names":["useCoordinate","element","disabledScrollTracking","arguments","length","undefined","openState","_useState","useState","bottom","height","left","right","top","width","x","y","_useState2","_slicedToArray","coordinate","setCoordinate","intersectionObserverRef","useRef","_useState3","_useState4","scrollContainer","setScrollContainer","observer","useMemo","IntersectionObserver","entries","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useCoordinate/index.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState, useMemo, useCallback } from 'react';\nimport { FrameDebounce, FrameDebounceType } from '../../utils/frameDebounce';\n\n/**\n * get coordinates of an element relative to window and listen for changes.\n *\n * @param element element of type T\n * @param disabledScrollTracking boolean to disable scroll tracking.\n * @param openState boolean to track if the element's open state changed.\n * @returns coordinate object of element.\n */\nexport const useCoordinate = function useCoordinate<T extends HTMLElement | null>(\n\telement: T,\n\tdisabledScrollTracking = false,\n\topenState: boolean\n): {\n\tbottom: number;\n\theight: number;\n\tleft: number;\n\tright: number;\n\ttop: number;\n\twidth: number;\n\tx: number;\n\ty: number;\n} {\n\tconst [coordinate, setCoordinate] = useState({\n\t\tbottom: 0,\n\t\theight: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\twidth: 0,\n\t\tx: 0,\n\t\ty: 0\n\t});\n\t//create a single ref for us to store a FrameDebounce.\n\tconst intersectionObserverRef = useRef<{\n\t\tinstance: FrameDebounceType;\n\t}>();\n\n\tconst [scrollContainer, setScrollContainer] = useState<HTMLElement | null>(null);\n\n\t//getBoundingClientRect() causes a reflow plus other perf issues.\n\t// its actually cheaper for the browser to fire intersection observers as we need.\n\tconst observer = useMemo(() => {\n\t\treturn new IntersectionObserver((entries) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\t// The `entry.boundingClientRect` is where all the dimensions are stored\n\t\t\t\tconst bounds = entry.boundingClientRect.toJSON();\n\n\t\t\t\tconst offsetBounds = {\n\t\t\t\t\t...bounds,\n\t\t\t\t\tleft: bounds.left + window.scrollX,\n\t\t\t\t\ttop: bounds.top + window.scrollY\n\t\t\t\t};\n\n\t\t\t\tsetCoordinate(offsetBounds);\n\t\t\t}\n\n\t\t\t// Disconnect the observer to stop from running in the background\n\t\t\tobserver.disconnect();\n\t\t});\n\t}, []);\n\n\tconst observeElementAndUpdateCoordinates = useCallback(() => {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\t\tintersectionObserverRef?.current?.instance.debounce(() => {\n\t\t\tobserver.observe(element);\n\t\t});\n\t}, [element, observer]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * This block of code detects if the element is within a scrolling container so we can provide more exact calculations\n\t\t * in the event that the element's position needs to be recalculated relative to the container's new scroll position.\n\t\t *\n\t\t * If we detect that the element is within a scrolling container, we store a reference to the scrollable element. That way\n\t\t * we can assign event listeners to the scroll element so that we can recalculate the elements position based on the\n\t\t * scroll value.\n\t\t */\n\t\tif (!disabledScrollTracking) {\n\t\t\tlet elementParent = element.parentElement;\n\n\t\t\twhile (elementParent && scrollContainer === null) {\n\t\t\t\tconst style = window.getComputedStyle(elementParent);\n\t\t\t\tconst overflowY = style.getPropertyValue('overflow-y');\n\n\t\t\t\tif (overflowY === 'auto' || overflowY === 'scroll') {\n\t\t\t\t\tsetScrollContainer(elementParent);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (elementParent.tagName === 'BODY') {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telementParent = elementParent.parentElement;\n\t\t\t}\n\t\t}\n\n\t\t// observe real quick to setup initial state.\n\t\tobserver.observe(element);\n\n\t\tif (!intersectionObserverRef.current) {\n\t\t\tintersectionObserverRef.current = {\n\t\t\t\tinstance: new FrameDebounce()\n\t\t\t};\n\t\t}\n\n\t\twindow.addEventListener('resize', observeElementAndUpdateCoordinates);\n\t\tif (scrollContainer)\n\t\t\tscrollContainer.addEventListener('scroll', observeElementAndUpdateCoordinates);\n\n\t\treturn () => {\n\t\t\tintersectionObserverRef?.current?.instance.cancel();\n\n\t\t\twindow.removeEventListener('resize', observeElementAndUpdateCoordinates);\n\t\t\tif (scrollContainer)\n\t\t\t\tscrollContainer.removeEventListener('scroll', observeElementAndUpdateCoordinates);\n\t\t};\n\t}, [\n\t\telement,\n\t\tobserver,\n\t\tscrollContainer,\n\t\tdisabledScrollTracking,\n\t\topenState,\n\t\tobserveElementAndUpdateCoordinates\n\t]);\n\n\t// This effect is responsible for observing the scroll container for changes in size.\n\tuseLayoutEffect(() => {\n\t\tif (!scrollContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tobserveElementAndUpdateCoordinates();\n\t\t});\n\n\t\tresizeObserver.observe(scrollContainer);\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t};\n\t}, [element, observeElementAndUpdateCoordinates, scrollContainer]);\n\n\treturn coordinate;\n};\n"],"names":["useCoordinate","element","disabledScrollTracking","arguments","length","undefined","openState","_useState","useState","bottom","height","left","right","top","width","x","y","_useState2","_slicedToArray","coordinate","setCoordinate","intersectionObserverRef","useRef","_useState3","_useState4","scrollContainer","setScrollContainer","observer","useMemo","IntersectionObserver","entries","entry","bounds","boundingClientRect","toJSON","offsetBounds","_objectSpread","window","scrollX","scrollY","disconnect","observeElementAndUpdateCoordinates","useCallback","_intersectionObserver","current","instance","debounce","observe","useLayoutEffect","elementParent","parentElement","style","getComputedStyle","overflowY","getPropertyValue","tagName","FrameDebounce","addEventListener","_intersectionObserver2","cancel","removeEventListener","resizeObserver","ResizeObserver"],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function _interopNamespace(e) {
|
|
7
|
+
if (e && e.__esModule) return e;
|
|
7
8
|
var n = Object.create(null);
|
|
8
9
|
if (e) {
|
|
9
10
|
Object.keys(e).forEach(function (k) {
|
|
@@ -20,7 +21,7 @@ function _interopNamespaceDefault(e) {
|
|
|
20
21
|
return Object.freeze(n);
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
var React__namespace = /*#__PURE__*/
|
|
24
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Represents the dimensions of an element's border box.
|
|
@@ -34,47 +35,34 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
|
34
35
|
* @returns {ElementDimensions} - The dimensions of the element.
|
|
35
36
|
*/
|
|
36
37
|
function useElementDimensions(ref) {
|
|
37
|
-
var _React$useState = React__namespace.useState(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
};
|
|
42
|
-
}),
|
|
38
|
+
var _React$useState = React__namespace.useState(() => ({
|
|
39
|
+
height: null,
|
|
40
|
+
width: null
|
|
41
|
+
})),
|
|
43
42
|
_React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
|
|
44
43
|
dimensions = _React$useState2[0],
|
|
45
44
|
setDimensions = _React$useState2[1];
|
|
46
|
-
React__namespace.useEffect(
|
|
45
|
+
React__namespace.useEffect(() => {
|
|
47
46
|
if (!ref.current) return;
|
|
48
47
|
var expectedWidths = new WeakMap();
|
|
49
48
|
var expectedHeights = new WeakMap();
|
|
50
|
-
var observer = new ResizeObserver(
|
|
51
|
-
requestAnimationFrame(
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
setDimensions({
|
|
63
|
-
height: entry.borderBoxSize[0].blockSize,
|
|
64
|
-
width: entry.borderBoxSize[0].inlineSize
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
} catch (err) {
|
|
68
|
-
_iterator.e(err);
|
|
69
|
-
} finally {
|
|
70
|
-
_iterator.f();
|
|
49
|
+
var observer = new ResizeObserver(entries => {
|
|
50
|
+
requestAnimationFrame(() => {
|
|
51
|
+
for (var entry of entries) {
|
|
52
|
+
var expectedWidth = expectedWidths.get(entry.target);
|
|
53
|
+
var expectedHeight = expectedHeights.get(entry.target);
|
|
54
|
+
if (entry.borderBoxSize[0].inlineSize === expectedWidth && entry.borderBoxSize[0].blockSize === expectedHeight) continue;
|
|
55
|
+
expectedWidths.set(entry.target, entry.borderBoxSize[0].inlineSize);
|
|
56
|
+
expectedHeights.set(entry.target, entry.borderBoxSize[0].blockSize);
|
|
57
|
+
setDimensions({
|
|
58
|
+
height: entry.borderBoxSize[0].blockSize,
|
|
59
|
+
width: entry.borderBoxSize[0].inlineSize
|
|
60
|
+
});
|
|
71
61
|
}
|
|
72
62
|
});
|
|
73
63
|
});
|
|
74
64
|
observer.observe(ref.current);
|
|
75
|
-
return
|
|
76
|
-
return observer.disconnect();
|
|
77
|
-
};
|
|
65
|
+
return () => observer.disconnect();
|
|
78
66
|
// ref won't trigger a re-render, so it's safe to exclude it from the dependencies array
|
|
79
67
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
80
68
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useElementDimensions/index.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Represents the dimensions of an element's border box.\n */\nexport type ElementDimensions = {\n\theight: number | null;\n\twidth: number | null;\n};\n\n/**\n * Calculates the dimensions of an element using the ResizeObserver API.\n *\n * @template T - The type of the element or HTMLElement.\n * @param ref - The ref object that references the element.\n * @returns {ElementDimensions} - The dimensions of the element.\n */\nexport function useElementDimensions<T>(\n\tref: React.RefObject<T extends HTMLElement ? T : HTMLElement>\n): ElementDimensions {\n\tconst [dimensions, setDimensions] = React.useState<ElementDimensions>(() => ({\n\t\theight: null,\n\t\twidth: null\n\t}));\n\n\tReact.useEffect(() => {\n\t\tif(!ref.current) return;\n\n\t\tconst expectedWidths = new WeakMap();\n\t\tconst expectedHeights = new WeakMap();\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tconst expectedWidth = expectedWidths.get(entry.target);\n\t\t\t\t\tconst expectedHeight = expectedHeights.get(entry.target);\n\t\t\t\t\tif(entry.borderBoxSize[0].inlineSize === expectedWidth &&\n\t\t\t\t\t\tentry.borderBoxSize[0].blockSize === expectedHeight) continue;\n\t\t\t\t\t\n\t\t\t\t\texpectedWidths.set(entry.target, entry.borderBoxSize[0].inlineSize);\n\t\t\t\t\texpectedHeights.set(entry.target, entry.borderBoxSize[0].blockSize);\n\t\t\t\t\tsetDimensions({\n\t\t\t\t\t\theight: entry.borderBoxSize[0].blockSize, \n\t\t\t\t\t\twidth: entry.borderBoxSize[0].inlineSize\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tobserver.observe(ref.current);\n\n\t\treturn () => observer.disconnect();\n\t// ref won't trigger a re-render, so it's safe to exclude it from the dependencies array\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n \n\treturn dimensions;\n}\n"],"names":["useElementDimensions","ref","_React$useState","React","useState","height","width","_React$useState2","_slicedToArray","dimensions","setDimensions","useEffect","current","expectedWidths","WeakMap","expectedHeights","observer","ResizeObserver","entries","requestAnimationFrame","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/hooks/useElementDimensions/index.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Represents the dimensions of an element's border box.\n */\nexport type ElementDimensions = {\n\theight: number | null;\n\twidth: number | null;\n};\n\n/**\n * Calculates the dimensions of an element using the ResizeObserver API.\n *\n * @template T - The type of the element or HTMLElement.\n * @param ref - The ref object that references the element.\n * @returns {ElementDimensions} - The dimensions of the element.\n */\nexport function useElementDimensions<T>(\n\tref: React.RefObject<T extends HTMLElement ? T : HTMLElement>\n): ElementDimensions {\n\tconst [dimensions, setDimensions] = React.useState<ElementDimensions>(() => ({\n\t\theight: null,\n\t\twidth: null\n\t}));\n\n\tReact.useEffect(() => {\n\t\tif(!ref.current) return;\n\n\t\tconst expectedWidths = new WeakMap();\n\t\tconst expectedHeights = new WeakMap();\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tconst expectedWidth = expectedWidths.get(entry.target);\n\t\t\t\t\tconst expectedHeight = expectedHeights.get(entry.target);\n\t\t\t\t\tif(entry.borderBoxSize[0].inlineSize === expectedWidth &&\n\t\t\t\t\t\tentry.borderBoxSize[0].blockSize === expectedHeight) continue;\n\t\t\t\t\t\n\t\t\t\t\texpectedWidths.set(entry.target, entry.borderBoxSize[0].inlineSize);\n\t\t\t\t\texpectedHeights.set(entry.target, entry.borderBoxSize[0].blockSize);\n\t\t\t\t\tsetDimensions({\n\t\t\t\t\t\theight: entry.borderBoxSize[0].blockSize, \n\t\t\t\t\t\twidth: entry.borderBoxSize[0].inlineSize\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tobserver.observe(ref.current);\n\n\t\treturn () => observer.disconnect();\n\t// ref won't trigger a re-render, so it's safe to exclude it from the dependencies array\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n \n\treturn dimensions;\n}\n"],"names":["useElementDimensions","ref","_React$useState","React","useState","height","width","_React$useState2","_slicedToArray","dimensions","setDimensions","useEffect","current","expectedWidths","WeakMap","expectedHeights","observer","ResizeObserver","entries","requestAnimationFrame","entry","expectedWidth","get","target","expectedHeight","borderBoxSize","inlineSize","blockSize","set","observe","disconnect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CACnCC,GAA6D,EACzC;AACpB,EAAA,IAAAC,eAAA,GAAoCC,gBAAK,CAACC,QAAQ,CAAoB,OAAO;AAC5EC,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,KAAK,EAAE;AACR,KAAC,CAAC,CAAC;IAAAC,gBAAA,GAAAC,uCAAA,CAAAN,eAAA,EAAA,CAAA,CAAA;AAHIO,IAAAA,UAAU,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,gBAAA,CAAA,CAAA,CAAA;EAKhCJ,gBAAK,CAACQ,SAAS,CAAC,MAAM;AACrB,IAAA,IAAG,CAACV,GAAG,CAACW,OAAO,EAAE;AAEjB,IAAA,IAAMC,cAAc,GAAG,IAAIC,OAAO,EAAE;AACpC,IAAA,IAAMC,eAAe,GAAG,IAAID,OAAO,EAAE;AAErC,IAAA,IAAME,QAAQ,GAAG,IAAIC,cAAc,CAAEC,OAAO,IAAK;AAChDC,MAAAA,qBAAqB,CAAC,MAAM;AAC3B,QAAA,KAAK,IAAMC,KAAK,IAAIF,OAAO,EAAE;UAC5B,IAAMG,aAAa,GAAGR,cAAc,CAACS,GAAG,CAACF,KAAK,CAACG,MAAM,CAAC;UACtD,IAAMC,cAAc,GAAGT,eAAe,CAACO,GAAG,CAACF,KAAK,CAACG,MAAM,CAAC;UACxD,IAAGH,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACC,UAAU,KAAKL,aAAa,IACrDD,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACE,SAAS,KAAKH,cAAc,EAAE;AAEtDX,UAAAA,cAAc,CAACe,GAAG,CAACR,KAAK,CAACG,MAAM,EAAEH,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACC,UAAU,CAAC;AACnEX,UAAAA,eAAe,CAACa,GAAG,CAACR,KAAK,CAACG,MAAM,EAAEH,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACE,SAAS,CAAC;AACnEjB,UAAAA,aAAa,CAAC;YACbL,MAAM,EAAEe,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACE,SAAS;AACxCrB,YAAAA,KAAK,EAAEc,KAAK,CAACK,aAAa,CAAC,CAAC,CAAC,CAACC;AAC/B,WAAC,CAAC;AACH,QAAA;AACD,MAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AAEFV,IAAAA,QAAQ,CAACa,OAAO,CAAC5B,GAAG,CAACW,OAAO,CAAC;AAE7B,IAAA,OAAO,MAAMI,QAAQ,CAACc,UAAU,EAAE;AACnC;AACA;EACA,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOrB,UAAU;AAClB;;;;"}
|