@mantine/core 9.6.3 → 9.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/ActionBar/ActionBar.cjs +0 -3
- package/cjs/components/ActionBar/ActionBar.cjs.map +1 -1
- package/cjs/components/ActionBar/ActionBar.module.cjs.map +1 -1
- package/cjs/components/AppShell/AppShell.cjs +33 -6
- package/cjs/components/AppShell/AppShell.cjs.map +1 -1
- package/cjs/components/AppShell/AppShell.context.cjs.map +1 -1
- package/cjs/components/AppShell/AppShell.module.cjs +2 -1
- package/cjs/components/AppShell/AppShell.module.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellAside/AppShellAside.cjs +28 -7
- package/cjs/components/AppShell/AppShellAside/AppShellAside.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellFooter/AppShellFooter.cjs +28 -7
- package/cjs/components/AppShell/AppShellFooter/AppShellFooter.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellHeader/AppShellHeader.cjs +28 -7
- package/cjs/components/AppShell/AppShellHeader/AppShellHeader.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs +3 -2
- package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.cjs +27 -16
- package/cjs/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.cjs +24 -16
- package/cjs/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.cjs +24 -16
- package/cjs/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.cjs +30 -19
- package/cjs/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/escape-css-id/escape-css-id.cjs +26 -0
- package/cjs/components/AppShell/AppShellMediaStyles/escape-css-id/escape-css-id.cjs.map +1 -0
- package/cjs/components/AppShell/AppShellMediaStyles/get-resized-value/get-resized-value.cjs +10 -0
- package/cjs/components/AppShell/AppShellMediaStyles/get-resized-value/get-resized-value.cjs.map +1 -0
- package/cjs/components/AppShell/AppShellMediaStyles/get-variables/get-variables.cjs +13 -5
- package/cjs/components/AppShell/AppShellMediaStyles/get-variables/get-variables.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellNavbar/AppShellNavbar.cjs +28 -7
- package/cjs/components/AppShell/AppShellNavbar/AppShellNavbar.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellResizeHandle/AppShellResizeHandle.cjs +270 -0
- package/cjs/components/AppShell/AppShellResizeHandle/AppShellResizeHandle.cjs.map +1 -0
- package/cjs/components/AppShell/use-app-shell-resize/clamp-resize-size.cjs +15 -0
- package/cjs/components/AppShell/use-app-shell-resize/clamp-resize-size.cjs.map +1 -0
- package/cjs/components/AppShell/use-app-shell-resize/resize-section-config.cjs +51 -0
- package/cjs/components/AppShell/use-app-shell-resize/resize-section-config.cjs.map +1 -0
- package/cjs/components/AppShell/use-app-shell-resize/safe-area-inset.cjs +12 -0
- package/cjs/components/AppShell/use-app-shell-resize/safe-area-inset.cjs.map +1 -0
- package/cjs/components/AppShell/use-app-shell-resize/use-app-shell-resize.cjs +127 -0
- package/cjs/components/AppShell/use-app-shell-resize/use-app-shell-resize.cjs.map +1 -0
- package/cjs/components/AppShell/use-resizing/use-resizing.cjs +20 -2
- package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
- package/cjs/components/Checkbox/Checkbox.cjs +10 -2
- package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/cjs/components/Checkbox/Checkbox.module.cjs +1 -0
- package/cjs/components/Checkbox/Checkbox.module.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs +10 -2
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.module.cjs +1 -0
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.module.cjs.map +1 -1
- package/cjs/components/Dialog/Dialog.cjs +0 -1
- package/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/cjs/components/Dialog/Dialog.module.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCard.cjs +34 -5
- package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCard.context.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs +13 -18
- package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs +6 -23
- package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
- package/cjs/components/HoverCard/use-hover-card.cjs +26 -12
- package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
- package/cjs/components/Radio/Radio.cjs +10 -2
- package/cjs/components/Radio/Radio.cjs.map +1 -1
- package/cjs/components/Radio/Radio.module.cjs +1 -0
- package/cjs/components/Radio/Radio.module.cjs.map +1 -1
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs +10 -2
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.module.cjs +1 -0
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.module.cjs.map +1 -1
- package/cjs/components/Toggle/Toggle.cjs +80 -0
- package/cjs/components/Toggle/Toggle.cjs.map +1 -0
- package/cjs/components/Toggle/Toggle.module.cjs +7 -0
- package/cjs/components/Toggle/Toggle.module.cjs.map +1 -0
- package/cjs/components/Toolbar/Toolbar.cjs +107 -0
- package/cjs/components/Toolbar/Toolbar.cjs.map +1 -0
- package/cjs/components/Toolbar/Toolbar.context.cjs +8 -0
- package/cjs/components/Toolbar/Toolbar.context.cjs.map +1 -0
- package/cjs/components/Toolbar/Toolbar.module.cjs +12 -0
- package/cjs/components/Toolbar/Toolbar.module.cjs.map +1 -0
- package/cjs/components/Toolbar/ToolbarDivider/ToolbarDivider.cjs +31 -0
- package/cjs/components/Toolbar/ToolbarDivider/ToolbarDivider.cjs.map +1 -0
- package/cjs/components/Toolbar/ToolbarGroup/ToolbarGroup.cjs +31 -0
- package/cjs/components/Toolbar/ToolbarGroup/ToolbarGroup.cjs.map +1 -0
- package/cjs/components/Toolbar/ToolbarToggle/ToolbarToggle.cjs +47 -0
- package/cjs/components/Toolbar/ToolbarToggle/ToolbarToggle.cjs.map +1 -0
- package/cjs/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.cjs +61 -0
- package/cjs/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.cjs.map +1 -0
- package/cjs/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.context.cjs +8 -0
- package/cjs/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.context.cjs.map +1 -0
- package/cjs/components/Toolbar/ToolbarToggleItem/ToolbarToggleItem.cjs +51 -0
- package/cjs/components/Toolbar/ToolbarToggleItem/ToolbarToggleItem.cjs.map +1 -0
- package/cjs/components/Toolbar/use-toolbar-navigation.cjs +76 -0
- package/cjs/components/Toolbar/use-toolbar-navigation.cjs.map +1 -0
- package/cjs/components/Tooltip/Tooltip.cjs +9 -5
- package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/cjs/components/Tooltip/use-tooltip.cjs +6 -3
- package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
- package/cjs/components/Tour/Tour.cjs +283 -0
- package/cjs/components/Tour/Tour.cjs.map +1 -0
- package/cjs/components/Tour/Tour.context.cjs +25 -0
- package/cjs/components/Tour/Tour.context.cjs.map +1 -0
- package/cjs/components/Tour/Tour.module.cjs +19 -0
- package/cjs/components/Tour/Tour.module.cjs.map +1 -0
- package/cjs/components/Tour/TourBeacon/TourBeacon.cjs +54 -0
- package/cjs/components/Tour/TourBeacon/TourBeacon.cjs.map +1 -0
- package/cjs/components/Tour/TourBeaconPositioned.cjs +46 -0
- package/cjs/components/Tour/TourBeaconPositioned.cjs.map +1 -0
- package/cjs/components/Tour/TourBody/TourBody.cjs +37 -0
- package/cjs/components/Tour/TourBody/TourBody.cjs.map +1 -0
- package/cjs/components/Tour/TourCloseButton/TourCloseButton.cjs +26 -0
- package/cjs/components/Tour/TourCloseButton/TourCloseButton.cjs.map +1 -0
- package/cjs/components/Tour/TourNavigation/TourNavigation.cjs +63 -0
- package/cjs/components/Tour/TourNavigation/TourNavigation.cjs.map +1 -0
- package/cjs/components/Tour/TourOverlay/TourOverlay.cjs +70 -0
- package/cjs/components/Tour/TourOverlay/TourOverlay.cjs.map +1 -0
- package/cjs/components/Tour/TourRoot/TourRoot.cjs +125 -0
- package/cjs/components/Tour/TourRoot/TourRoot.cjs.map +1 -0
- package/cjs/components/Tour/TourStep/TourStep.cjs +10 -0
- package/cjs/components/Tour/TourStep/TourStep.cjs.map +1 -0
- package/cjs/components/Tour/TourTitle/TourTitle.cjs +38 -0
- package/cjs/components/Tour/TourTitle/TourTitle.cjs.map +1 -0
- package/cjs/components/Tour/TourTooltip/TourTooltip.cjs +87 -0
- package/cjs/components/Tour/TourTooltip/TourTooltip.cjs.map +1 -0
- package/cjs/components/Tour/get-overlay-hit-path.cjs +17 -0
- package/cjs/components/Tour/get-overlay-hit-path.cjs.map +1 -0
- package/cjs/components/Tour/is-element-in-view.cjs +30 -0
- package/cjs/components/Tour/is-element-in-view.cjs.map +1 -0
- package/cjs/components/Tour/press-aware-auto-update.cjs +38 -0
- package/cjs/components/Tour/press-aware-auto-update.cjs.map +1 -0
- package/cjs/components/Tour/use-target-rect.cjs +61 -0
- package/cjs/components/Tour/use-target-rect.cjs.map +1 -0
- package/cjs/components/Tour/use-tooltip-auto-focus.cjs +34 -0
- package/cjs/components/Tour/use-tooltip-auto-focus.cjs.map +1 -0
- package/cjs/components/Tour/use-tour-state.cjs +102 -0
- package/cjs/components/Tour/use-tour-state.cjs.map +1 -0
- package/cjs/components/Tour/use-tour.cjs +155 -0
- package/cjs/components/Tour/use-tour.cjs.map +1 -0
- package/cjs/components/TreeSelect/TreeSelect.cjs +29 -16
- package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
- package/cjs/index.cjs +41 -1
- package/esm/components/ActionBar/ActionBar.mjs +0 -3
- package/esm/components/ActionBar/ActionBar.mjs.map +1 -1
- package/esm/components/ActionBar/ActionBar.module.mjs.map +1 -1
- package/esm/components/AppShell/AppShell.context.mjs.map +1 -1
- package/esm/components/AppShell/AppShell.mjs +35 -8
- package/esm/components/AppShell/AppShell.mjs.map +1 -1
- package/esm/components/AppShell/AppShell.module.mjs +2 -1
- package/esm/components/AppShell/AppShell.module.mjs.map +1 -1
- package/esm/components/AppShell/AppShellAside/AppShellAside.mjs +29 -8
- package/esm/components/AppShell/AppShellAside/AppShellAside.mjs.map +1 -1
- package/esm/components/AppShell/AppShellFooter/AppShellFooter.mjs +29 -8
- package/esm/components/AppShell/AppShellFooter/AppShellFooter.mjs.map +1 -1
- package/esm/components/AppShell/AppShellHeader/AppShellHeader.mjs +29 -8
- package/esm/components/AppShell/AppShellHeader/AppShellHeader.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.mjs +3 -2
- package/esm/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.mjs +27 -16
- package/esm/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.mjs +24 -16
- package/esm/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.mjs +24 -16
- package/esm/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.mjs +30 -19
- package/esm/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/escape-css-id/escape-css-id.mjs +26 -0
- package/esm/components/AppShell/AppShellMediaStyles/escape-css-id/escape-css-id.mjs.map +1 -0
- package/esm/components/AppShell/AppShellMediaStyles/get-resized-value/get-resized-value.mjs +10 -0
- package/esm/components/AppShell/AppShellMediaStyles/get-resized-value/get-resized-value.mjs.map +1 -0
- package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.mjs +13 -5
- package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.mjs.map +1 -1
- package/esm/components/AppShell/AppShellNavbar/AppShellNavbar.mjs +29 -8
- package/esm/components/AppShell/AppShellNavbar/AppShellNavbar.mjs.map +1 -1
- package/esm/components/AppShell/AppShellResizeHandle/AppShellResizeHandle.mjs +270 -0
- package/esm/components/AppShell/AppShellResizeHandle/AppShellResizeHandle.mjs.map +1 -0
- package/esm/components/AppShell/use-app-shell-resize/clamp-resize-size.mjs +14 -0
- package/esm/components/AppShell/use-app-shell-resize/clamp-resize-size.mjs.map +1 -0
- package/esm/components/AppShell/use-app-shell-resize/resize-section-config.mjs +49 -0
- package/esm/components/AppShell/use-app-shell-resize/resize-section-config.mjs.map +1 -0
- package/esm/components/AppShell/use-app-shell-resize/safe-area-inset.mjs +12 -0
- package/esm/components/AppShell/use-app-shell-resize/safe-area-inset.mjs.map +1 -0
- package/esm/components/AppShell/use-app-shell-resize/use-app-shell-resize.mjs +127 -0
- package/esm/components/AppShell/use-app-shell-resize/use-app-shell-resize.mjs.map +1 -0
- package/esm/components/AppShell/use-resizing/use-resizing.mjs +21 -3
- package/esm/components/AppShell/use-resizing/use-resizing.mjs.map +1 -1
- package/esm/components/Checkbox/Checkbox.mjs +10 -2
- package/esm/components/Checkbox/Checkbox.mjs.map +1 -1
- package/esm/components/Checkbox/Checkbox.module.mjs +1 -0
- package/esm/components/Checkbox/Checkbox.module.mjs.map +1 -1
- package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.mjs +10 -2
- package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.mjs.map +1 -1
- package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.module.mjs +1 -0
- package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.module.mjs.map +1 -1
- package/esm/components/Dialog/Dialog.mjs +0 -1
- package/esm/components/Dialog/Dialog.mjs.map +1 -1
- package/esm/components/Dialog/Dialog.module.mjs.map +1 -1
- package/esm/components/HoverCard/HoverCard.context.mjs.map +1 -1
- package/esm/components/HoverCard/HoverCard.mjs +34 -5
- package/esm/components/HoverCard/HoverCard.mjs.map +1 -1
- package/esm/components/HoverCard/HoverCardDropdown/HoverCardDropdown.mjs +13 -18
- package/esm/components/HoverCard/HoverCardDropdown/HoverCardDropdown.mjs.map +1 -1
- package/esm/components/HoverCard/HoverCardTarget/HoverCardTarget.mjs +7 -24
- package/esm/components/HoverCard/HoverCardTarget/HoverCardTarget.mjs.map +1 -1
- package/esm/components/HoverCard/use-hover-card.mjs +27 -13
- package/esm/components/HoverCard/use-hover-card.mjs.map +1 -1
- package/esm/components/Radio/Radio.mjs +10 -2
- package/esm/components/Radio/Radio.mjs.map +1 -1
- package/esm/components/Radio/Radio.module.mjs +1 -0
- package/esm/components/Radio/Radio.module.mjs.map +1 -1
- package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs +10 -2
- package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs.map +1 -1
- package/esm/components/Radio/RadioIndicator/RadioIndicator.module.mjs +1 -0
- package/esm/components/Radio/RadioIndicator/RadioIndicator.module.mjs.map +1 -1
- package/esm/components/Toggle/Toggle.mjs +80 -0
- package/esm/components/Toggle/Toggle.mjs.map +1 -0
- package/esm/components/Toggle/Toggle.module.mjs +7 -0
- package/esm/components/Toggle/Toggle.module.mjs.map +1 -0
- package/esm/components/Toolbar/Toolbar.context.mjs +8 -0
- package/esm/components/Toolbar/Toolbar.context.mjs.map +1 -0
- package/esm/components/Toolbar/Toolbar.mjs +107 -0
- package/esm/components/Toolbar/Toolbar.mjs.map +1 -0
- package/esm/components/Toolbar/Toolbar.module.mjs +12 -0
- package/esm/components/Toolbar/Toolbar.module.mjs.map +1 -0
- package/esm/components/Toolbar/ToolbarDivider/ToolbarDivider.mjs +31 -0
- package/esm/components/Toolbar/ToolbarDivider/ToolbarDivider.mjs.map +1 -0
- package/esm/components/Toolbar/ToolbarGroup/ToolbarGroup.mjs +31 -0
- package/esm/components/Toolbar/ToolbarGroup/ToolbarGroup.mjs.map +1 -0
- package/esm/components/Toolbar/ToolbarToggle/ToolbarToggle.mjs +47 -0
- package/esm/components/Toolbar/ToolbarToggle/ToolbarToggle.mjs.map +1 -0
- package/esm/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.context.mjs +8 -0
- package/esm/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.context.mjs.map +1 -0
- package/esm/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.mjs +61 -0
- package/esm/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.mjs.map +1 -0
- package/esm/components/Toolbar/ToolbarToggleItem/ToolbarToggleItem.mjs +51 -0
- package/esm/components/Toolbar/ToolbarToggleItem/ToolbarToggleItem.mjs.map +1 -0
- package/esm/components/Toolbar/use-toolbar-navigation.mjs +76 -0
- package/esm/components/Toolbar/use-toolbar-navigation.mjs.map +1 -0
- package/esm/components/Tooltip/Tooltip.mjs +9 -5
- package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
- package/esm/components/Tooltip/use-tooltip.mjs +7 -4
- package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
- package/esm/components/Tour/Tour.context.mjs +22 -0
- package/esm/components/Tour/Tour.context.mjs.map +1 -0
- package/esm/components/Tour/Tour.mjs +283 -0
- package/esm/components/Tour/Tour.mjs.map +1 -0
- package/esm/components/Tour/Tour.module.mjs +19 -0
- package/esm/components/Tour/Tour.module.mjs.map +1 -0
- package/esm/components/Tour/TourBeacon/TourBeacon.mjs +54 -0
- package/esm/components/Tour/TourBeacon/TourBeacon.mjs.map +1 -0
- package/esm/components/Tour/TourBeaconPositioned.mjs +46 -0
- package/esm/components/Tour/TourBeaconPositioned.mjs.map +1 -0
- package/esm/components/Tour/TourBody/TourBody.mjs +37 -0
- package/esm/components/Tour/TourBody/TourBody.mjs.map +1 -0
- package/esm/components/Tour/TourCloseButton/TourCloseButton.mjs +26 -0
- package/esm/components/Tour/TourCloseButton/TourCloseButton.mjs.map +1 -0
- package/esm/components/Tour/TourNavigation/TourNavigation.mjs +63 -0
- package/esm/components/Tour/TourNavigation/TourNavigation.mjs.map +1 -0
- package/esm/components/Tour/TourOverlay/TourOverlay.mjs +70 -0
- package/esm/components/Tour/TourOverlay/TourOverlay.mjs.map +1 -0
- package/esm/components/Tour/TourRoot/TourRoot.mjs +125 -0
- package/esm/components/Tour/TourRoot/TourRoot.mjs.map +1 -0
- package/esm/components/Tour/TourStep/TourStep.mjs +10 -0
- package/esm/components/Tour/TourStep/TourStep.mjs.map +1 -0
- package/esm/components/Tour/TourTitle/TourTitle.mjs +38 -0
- package/esm/components/Tour/TourTitle/TourTitle.mjs.map +1 -0
- package/esm/components/Tour/TourTooltip/TourTooltip.mjs +87 -0
- package/esm/components/Tour/TourTooltip/TourTooltip.mjs.map +1 -0
- package/esm/components/Tour/get-overlay-hit-path.mjs +17 -0
- package/esm/components/Tour/get-overlay-hit-path.mjs.map +1 -0
- package/esm/components/Tour/is-element-in-view.mjs +30 -0
- package/esm/components/Tour/is-element-in-view.mjs.map +1 -0
- package/esm/components/Tour/press-aware-auto-update.mjs +38 -0
- package/esm/components/Tour/press-aware-auto-update.mjs.map +1 -0
- package/esm/components/Tour/use-target-rect.mjs +59 -0
- package/esm/components/Tour/use-target-rect.mjs.map +1 -0
- package/esm/components/Tour/use-tooltip-auto-focus.mjs +34 -0
- package/esm/components/Tour/use-tooltip-auto-focus.mjs.map +1 -0
- package/esm/components/Tour/use-tour-state.mjs +102 -0
- package/esm/components/Tour/use-tour-state.mjs.map +1 -0
- package/esm/components/Tour/use-tour.mjs +155 -0
- package/esm/components/Tour/use-tour.mjs.map +1 -0
- package/esm/components/TreeSelect/TreeSelect.mjs +30 -17
- package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
- package/esm/index.mjs +21 -2
- package/lib/components/ActionBar/ActionBar.d.ts +1 -1
- package/lib/components/AppShell/AppShell.context.d.ts +4 -0
- package/lib/components/AppShell/AppShell.d.ts +5 -3
- package/lib/components/AppShell/AppShell.types.d.ts +70 -0
- package/lib/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.d.ts +6 -1
- package/lib/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.d.ts +3 -1
- package/lib/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.d.ts +3 -1
- package/lib/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.d.ts +3 -1
- package/lib/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.d.ts +3 -1
- package/lib/components/AppShell/AppShellMediaStyles/escape-css-id/escape-css-id.d.ts +2 -0
- package/lib/components/AppShell/AppShellMediaStyles/get-resized-value/get-resized-value.d.ts +1 -0
- package/lib/components/AppShell/AppShellMediaStyles/get-variables/get-variables.d.ts +6 -1
- package/lib/components/AppShell/AppShellResizeHandle/AppShellResizeHandle.d.ts +10 -0
- package/lib/components/AppShell/index.d.ts +3 -2
- package/lib/components/AppShell/use-app-shell-resize/clamp-resize-size.d.ts +9 -0
- package/lib/components/AppShell/use-app-shell-resize/resize-section-config.d.ts +29 -0
- package/lib/components/AppShell/use-app-shell-resize/safe-area-inset.d.ts +1 -0
- package/lib/components/AppShell/use-app-shell-resize/use-app-shell-resize.d.ts +2 -0
- package/lib/components/AppShell/use-resizing/use-resizing.d.ts +2 -1
- package/lib/components/Checkbox/Checkbox.d.ts +2 -2
- package/lib/components/Checkbox/CheckboxIndicator/CheckboxIndicator.d.ts +2 -2
- package/lib/components/HoverCard/HoverCard.context.d.ts +8 -4
- package/lib/components/HoverCard/HoverCard.d.ts +41 -0
- package/lib/components/HoverCard/index.d.ts +1 -1
- package/lib/components/HoverCard/use-hover-card.d.ts +11 -0
- package/lib/components/Radio/Radio.d.ts +2 -2
- package/lib/components/Radio/RadioIndicator/RadioIndicator.d.ts +2 -2
- package/lib/components/Toggle/Toggle.d.ts +73 -0
- package/lib/components/Toggle/index.d.ts +7 -0
- package/lib/components/Toolbar/Toolbar.context.d.ts +7 -0
- package/lib/components/Toolbar/Toolbar.d.ts +58 -0
- package/lib/components/Toolbar/ToolbarDivider/ToolbarDivider.d.ts +16 -0
- package/lib/components/Toolbar/ToolbarGroup/ToolbarGroup.d.ts +16 -0
- package/lib/components/Toolbar/ToolbarToggle/ToolbarToggle.d.ts +44 -0
- package/lib/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.context.d.ts +7 -0
- package/lib/components/Toolbar/ToolbarToggleGroup/ToolbarToggleGroup.d.ts +42 -0
- package/lib/components/Toolbar/ToolbarToggleItem/ToolbarToggleItem.d.ts +22 -0
- package/lib/components/Toolbar/index.d.ts +32 -0
- package/lib/components/Toolbar/use-toolbar-navigation.d.ts +11 -0
- package/lib/components/Tooltip/Tooltip.d.ts +2 -0
- package/lib/components/Tooltip/use-tooltip.d.ts +2 -0
- package/lib/components/Tour/Tour.context.d.ts +66 -0
- package/lib/components/Tour/Tour.d.ts +144 -0
- package/lib/components/Tour/TourBeacon/TourBeacon.d.ts +23 -0
- package/lib/components/Tour/TourBeaconPositioned.d.ts +13 -0
- package/lib/components/Tour/TourBody/TourBody.d.ts +19 -0
- package/lib/components/Tour/TourCloseButton/TourCloseButton.d.ts +12 -0
- package/lib/components/Tour/TourNavigation/TourNavigation.d.ts +11 -0
- package/lib/components/Tour/TourOverlay/TourOverlay.d.ts +22 -0
- package/lib/components/Tour/TourRoot/TourRoot.d.ts +72 -0
- package/lib/components/Tour/TourStep/TourStep.d.ts +30 -0
- package/lib/components/Tour/TourTitle/TourTitle.d.ts +19 -0
- package/lib/components/Tour/TourTooltip/TourTooltip.d.ts +29 -0
- package/lib/components/Tour/get-overlay-hit-path.d.ts +2 -0
- package/lib/components/Tour/index.d.ts +23 -0
- package/lib/components/Tour/is-element-in-view.d.ts +1 -0
- package/lib/components/Tour/press-aware-auto-update.d.ts +2 -0
- package/lib/components/Tour/use-target-rect.d.ts +13 -0
- package/lib/components/Tour/use-tooltip-auto-focus.d.ts +7 -0
- package/lib/components/Tour/use-tour-state.d.ts +23 -0
- package/lib/components/Tour/use-tour.d.ts +40 -0
- package/lib/components/TreeSelect/TreeSelect.d.ts +14 -0
- package/lib/components/TreeSelect/index.d.ts +2 -2
- package/lib/components/index.d.ts +3 -0
- package/package.json +5 -5
- package/styles/ActionBar.css +1 -0
- package/styles/ActionBar.layer.css +1 -0
- package/styles/AppShell.css +68 -0
- package/styles/AppShell.layer.css +68 -0
- package/styles/Checkbox.css +20 -0
- package/styles/Checkbox.layer.css +20 -0
- package/styles/CheckboxIndicator.css +16 -0
- package/styles/CheckboxIndicator.layer.css +16 -0
- package/styles/Dialog.css +1 -0
- package/styles/Dialog.layer.css +1 -0
- package/styles/Radio.css +10 -0
- package/styles/Radio.layer.css +10 -0
- package/styles/RadioIndicator.css +11 -0
- package/styles/RadioIndicator.layer.css +11 -0
- package/styles/Toggle.css +98 -0
- package/styles/Toggle.layer.css +99 -0
- package/styles/Toolbar.css +220 -0
- package/styles/Toolbar.layer.css +221 -0
- package/styles/Tour.css +127 -0
- package/styles/Tour.layer.css +128 -0
- package/styles.css +575 -0
- package/styles.layer.css +575 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region packages/@mantine/core/src/components/Tour/is-element-in-view.ts
|
|
3
|
+
function isScrollable(element) {
|
|
4
|
+
const { overflow, overflowX, overflowY } = getComputedStyle(element);
|
|
5
|
+
return /(auto|scroll|hidden)/.test(`${overflow} ${overflowX} ${overflowY}`);
|
|
6
|
+
}
|
|
7
|
+
function isElementInView(element) {
|
|
8
|
+
const rect = element.getBoundingClientRect();
|
|
9
|
+
if (rect.width === 0 && rect.height === 0) return false;
|
|
10
|
+
const top = rect.top;
|
|
11
|
+
const left = rect.left;
|
|
12
|
+
const bottom = rect.top + rect.height;
|
|
13
|
+
const right = rect.left + rect.width;
|
|
14
|
+
if (top < 0 || left < 0 || bottom > window.innerHeight || right > window.innerWidth) return false;
|
|
15
|
+
let parent = element.parentElement;
|
|
16
|
+
while (parent && parent !== document.body) {
|
|
17
|
+
if (isScrollable(parent)) {
|
|
18
|
+
const parentRect = parent.getBoundingClientRect();
|
|
19
|
+
const clientTop = parentRect.top + parent.clientTop;
|
|
20
|
+
const clientLeft = parentRect.left + parent.clientLeft;
|
|
21
|
+
if (top < clientTop || left < clientLeft || bottom > clientTop + parent.clientHeight || right > clientLeft + parent.clientWidth) return false;
|
|
22
|
+
}
|
|
23
|
+
parent = parent.parentElement;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { isElementInView };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=is-element-in-view.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-element-in-view.mjs","names":[],"sources":["../../../src/components/Tour/is-element-in-view.ts"],"sourcesContent":["function isScrollable(element: HTMLElement) {\n const { overflow, overflowX, overflowY } = getComputedStyle(element);\n return /(auto|scroll|hidden)/.test(`${overflow} ${overflowX} ${overflowY}`);\n}\n\nexport function isElementInView(element: HTMLElement) {\n const rect = element.getBoundingClientRect();\n\n if (rect.width === 0 && rect.height === 0) {\n return false;\n }\n\n const top = rect.top;\n const left = rect.left;\n const bottom = rect.top + rect.height;\n const right = rect.left + rect.width;\n\n if (top < 0 || left < 0 || bottom > window.innerHeight || right > window.innerWidth) {\n return false;\n }\n\n let parent = element.parentElement;\n\n while (parent && parent !== document.body) {\n if (isScrollable(parent)) {\n const parentRect = parent.getBoundingClientRect();\n const clientTop = parentRect.top + parent.clientTop;\n const clientLeft = parentRect.left + parent.clientLeft;\n\n if (\n top < clientTop ||\n left < clientLeft ||\n bottom > clientTop + parent.clientHeight ||\n right > clientLeft + parent.clientWidth\n ) {\n return false;\n }\n }\n\n parent = parent.parentElement;\n }\n\n return true;\n}\n"],"mappings":";;AAAA,SAAS,aAAa,SAAsB;CAC1C,MAAM,EAAE,UAAU,WAAW,cAAc,iBAAiB,OAAO;CACnE,OAAO,uBAAuB,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW;AAC5E;AAEA,SAAgB,gBAAgB,SAAsB;CACpD,MAAM,OAAO,QAAQ,sBAAsB;CAE3C,IAAI,KAAK,UAAU,KAAK,KAAK,WAAW,GACtC,OAAO;CAGT,MAAM,MAAM,KAAK;CACjB,MAAM,OAAO,KAAK;CAClB,MAAM,SAAS,KAAK,MAAM,KAAK;CAC/B,MAAM,QAAQ,KAAK,OAAO,KAAK;CAE/B,IAAI,MAAM,KAAK,OAAO,KAAK,SAAS,OAAO,eAAe,QAAQ,OAAO,YACvE,OAAO;CAGT,IAAI,SAAS,QAAQ;CAErB,OAAO,UAAU,WAAW,SAAS,MAAM;EACzC,IAAI,aAAa,MAAM,GAAG;GACxB,MAAM,aAAa,OAAO,sBAAsB;GAChD,MAAM,YAAY,WAAW,MAAM,OAAO;GAC1C,MAAM,aAAa,WAAW,OAAO,OAAO;GAE5C,IACE,MAAM,aACN,OAAO,cACP,SAAS,YAAY,OAAO,gBAC5B,QAAQ,aAAa,OAAO,aAE5B,OAAO;EAEX;EAEA,SAAS,OAAO;CAClB;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { autoUpdate } from "@floating-ui/react";
|
|
3
|
+
//#region packages/@mantine/core/src/components/Tour/press-aware-auto-update.ts
|
|
4
|
+
function pressAwareAutoUpdate(reference, floating, update) {
|
|
5
|
+
const target = reference instanceof Element ? reference : null;
|
|
6
|
+
let pressed = false;
|
|
7
|
+
let pending = false;
|
|
8
|
+
let frame = -1;
|
|
9
|
+
const handlePointerDown = () => {
|
|
10
|
+
pressed = true;
|
|
11
|
+
};
|
|
12
|
+
const handlePointerUp = () => {
|
|
13
|
+
if (!pressed) return;
|
|
14
|
+
pressed = false;
|
|
15
|
+
if (pending) {
|
|
16
|
+
pending = false;
|
|
17
|
+
frame = requestAnimationFrame(update);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
target?.addEventListener("pointerdown", handlePointerDown);
|
|
21
|
+
window.addEventListener("pointerup", handlePointerUp, true);
|
|
22
|
+
window.addEventListener("pointercancel", handlePointerUp, true);
|
|
23
|
+
const cleanup = autoUpdate(reference, floating, () => {
|
|
24
|
+
if (pressed) pending = true;
|
|
25
|
+
else update();
|
|
26
|
+
});
|
|
27
|
+
return () => {
|
|
28
|
+
cleanup();
|
|
29
|
+
cancelAnimationFrame(frame);
|
|
30
|
+
target?.removeEventListener("pointerdown", handlePointerDown);
|
|
31
|
+
window.removeEventListener("pointerup", handlePointerUp, true);
|
|
32
|
+
window.removeEventListener("pointercancel", handlePointerUp, true);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { pressAwareAutoUpdate };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=press-aware-auto-update.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"press-aware-auto-update.mjs","names":[],"sources":["../../../src/components/Tour/press-aware-auto-update.ts"],"sourcesContent":["import { autoUpdate, type ReferenceType } from '@floating-ui/react';\n\nexport function pressAwareAutoUpdate(\n reference: ReferenceType,\n floating: HTMLElement,\n update: () => void\n) {\n const target = reference instanceof Element ? reference : null;\n let pressed = false;\n let pending = false;\n let frame = -1;\n\n const handlePointerDown = () => {\n pressed = true;\n };\n\n const handlePointerUp = () => {\n if (!pressed) {\n return;\n }\n\n pressed = false;\n\n if (pending) {\n pending = false;\n frame = requestAnimationFrame(update);\n }\n };\n\n target?.addEventListener('pointerdown', handlePointerDown);\n window.addEventListener('pointerup', handlePointerUp, true);\n window.addEventListener('pointercancel', handlePointerUp, true);\n\n const cleanup = autoUpdate(reference, floating, () => {\n if (pressed) {\n pending = true;\n } else {\n update();\n }\n });\n\n return () => {\n cleanup();\n cancelAnimationFrame(frame);\n target?.removeEventListener('pointerdown', handlePointerDown);\n window.removeEventListener('pointerup', handlePointerUp, true);\n window.removeEventListener('pointercancel', handlePointerUp, true);\n };\n}\n"],"mappings":";;;AAEA,SAAgB,qBACd,WACA,UACA,QACA;CACA,MAAM,SAAS,qBAAqB,UAAU,YAAY;CAC1D,IAAI,UAAU;CACd,IAAI,UAAU;CACd,IAAI,QAAQ;CAEZ,MAAM,0BAA0B;EAC9B,UAAU;CACZ;CAEA,MAAM,wBAAwB;EAC5B,IAAI,CAAC,SACH;EAGF,UAAU;EAEV,IAAI,SAAS;GACX,UAAU;GACV,QAAQ,sBAAsB,MAAM;EACtC;CACF;CAEA,QAAQ,iBAAiB,eAAe,iBAAiB;CACzD,OAAO,iBAAiB,aAAa,iBAAiB,IAAI;CAC1D,OAAO,iBAAiB,iBAAiB,iBAAiB,IAAI;CAE9D,MAAM,UAAU,WAAW,WAAW,gBAAgB;EACpD,IAAI,SACF,UAAU;OAEV,OAAO;CAEX,CAAC;CAED,aAAa;EACX,QAAQ;EACR,qBAAqB,KAAK;EAC1B,QAAQ,oBAAoB,eAAe,iBAAiB;EAC5D,OAAO,oBAAoB,aAAa,iBAAiB,IAAI;EAC7D,OAAO,oBAAoB,iBAAiB,iBAAiB,IAAI;CACnE;AACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { useIsomorphicEffect } from "@mantine/hooks";
|
|
4
|
+
//#region packages/@mantine/core/src/components/Tour/use-target-rect.ts
|
|
5
|
+
function resolveTarget(target) {
|
|
6
|
+
if (!target) return null;
|
|
7
|
+
return typeof target === "string" ? document.querySelector(target) : target.current || null;
|
|
8
|
+
}
|
|
9
|
+
function useTargetElement(target) {
|
|
10
|
+
const [element, setElement] = useState(null);
|
|
11
|
+
useIsomorphicEffect(() => {
|
|
12
|
+
const el = resolveTarget(target);
|
|
13
|
+
setElement(el);
|
|
14
|
+
if (el || typeof target !== "string") return;
|
|
15
|
+
const mutationObserver = new MutationObserver(() => {
|
|
16
|
+
const found = resolveTarget(target);
|
|
17
|
+
if (found) {
|
|
18
|
+
mutationObserver.disconnect();
|
|
19
|
+
setElement(found);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
mutationObserver.observe(document.body, {
|
|
23
|
+
childList: true,
|
|
24
|
+
subtree: true
|
|
25
|
+
});
|
|
26
|
+
return () => {
|
|
27
|
+
mutationObserver.disconnect();
|
|
28
|
+
};
|
|
29
|
+
}, [target]);
|
|
30
|
+
return element;
|
|
31
|
+
}
|
|
32
|
+
function useTargetRect(element) {
|
|
33
|
+
const [rect, setRect] = useState(null);
|
|
34
|
+
const updateRect = useCallback(() => {
|
|
35
|
+
if (!element) return;
|
|
36
|
+
const r = element.getBoundingClientRect();
|
|
37
|
+
setRect((previous) => previous && previous.top === r.top && previous.left === r.left && previous.width === r.width && previous.height === r.height ? previous : {
|
|
38
|
+
top: r.top,
|
|
39
|
+
left: r.left,
|
|
40
|
+
width: r.width,
|
|
41
|
+
height: r.height
|
|
42
|
+
});
|
|
43
|
+
}, [element]);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (!element) {
|
|
46
|
+
setRect(null);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
updateRect();
|
|
50
|
+
}, [element, updateRect]);
|
|
51
|
+
return {
|
|
52
|
+
rect,
|
|
53
|
+
updateRect
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { resolveTarget, useTargetElement, useTargetRect };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=use-target-rect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-target-rect.mjs","names":[],"sources":["../../../src/components/Tour/use-target-rect.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useIsomorphicEffect } from '@mantine/hooks';\n\nexport type TourTarget = string | React.RefObject<HTMLElement | null> | undefined;\n\nexport interface TargetRect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport function resolveTarget(target: TourTarget): HTMLElement | null {\n if (!target) {\n return null;\n }\n\n return typeof target === 'string'\n ? document.querySelector<HTMLElement>(target)\n : target.current || null;\n}\n\nexport function useTargetElement(target: TourTarget) {\n const [element, setElement] = useState<HTMLElement | null>(null);\n\n useIsomorphicEffect(() => {\n const el = resolveTarget(target);\n setElement(el);\n\n if (el || typeof target !== 'string') {\n return undefined;\n }\n\n const mutationObserver = new MutationObserver(() => {\n const found = resolveTarget(target);\n if (found) {\n mutationObserver.disconnect();\n setElement(found);\n }\n });\n\n mutationObserver.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, [target]);\n\n return element;\n}\n\nexport function useTargetRect(element: HTMLElement | null) {\n const [rect, setRect] = useState<TargetRect | null>(null);\n\n const updateRect = useCallback(() => {\n if (!element) {\n return;\n }\n\n const r = element.getBoundingClientRect();\n setRect((previous) =>\n previous &&\n previous.top === r.top &&\n previous.left === r.left &&\n previous.width === r.width &&\n previous.height === r.height\n ? previous\n : { top: r.top, left: r.left, width: r.width, height: r.height }\n );\n }, [element]);\n\n useEffect(() => {\n if (!element) {\n setRect(null);\n return;\n }\n\n updateRect();\n }, [element, updateRect]);\n\n return { rect, updateRect };\n}\n"],"mappings":";;;;AAYA,SAAgB,cAAc,QAAwC;CACpE,IAAI,CAAC,QACH,OAAO;CAGT,OAAO,OAAO,WAAW,WACrB,SAAS,cAA2B,MAAM,IAC1C,OAAO,WAAW;AACxB;AAEA,SAAgB,iBAAiB,QAAoB;CACnD,MAAM,CAAC,SAAS,cAAc,SAA6B,IAAI;CAE/D,0BAA0B;EACxB,MAAM,KAAK,cAAc,MAAM;EAC/B,WAAW,EAAE;EAEb,IAAI,MAAM,OAAO,WAAW,UAC1B;EAGF,MAAM,mBAAmB,IAAI,uBAAuB;GAClD,MAAM,QAAQ,cAAc,MAAM;GAClC,IAAI,OAAO;IACT,iBAAiB,WAAW;IAC5B,WAAW,KAAK;GAClB;EACF,CAAC;EAED,iBAAiB,QAAQ,SAAS,MAAM;GAAE,WAAW;GAAM,SAAS;EAAK,CAAC;EAE1E,aAAa;GACX,iBAAiB,WAAW;EAC9B;CACF,GAAG,CAAC,MAAM,CAAC;CAEX,OAAO;AACT;AAEA,SAAgB,cAAc,SAA6B;CACzD,MAAM,CAAC,MAAM,WAAW,SAA4B,IAAI;CAExD,MAAM,aAAa,kBAAkB;EACnC,IAAI,CAAC,SACH;EAGF,MAAM,IAAI,QAAQ,sBAAsB;EACxC,SAAS,aACP,YACA,SAAS,QAAQ,EAAE,OACnB,SAAS,SAAS,EAAE,QACpB,SAAS,UAAU,EAAE,SACrB,SAAS,WAAW,EAAE,SAClB,WACA;GAAE,KAAK,EAAE;GAAK,MAAM,EAAE;GAAM,OAAO,EAAE;GAAO,QAAQ,EAAE;EAAO,CACnE;CACF,GAAG,CAAC,OAAO,CAAC;CAEZ,gBAAgB;EACd,IAAI,CAAC,SAAS;GACZ,QAAQ,IAAI;GACZ;EACF;EAEA,WAAW;CACb,GAAG,CAAC,SAAS,UAAU,CAAC;CAExB,OAAO;EAAE;EAAM;CAAW;AAC5B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
3
|
+
import { useIsomorphicEffect } from "@mantine/hooks";
|
|
4
|
+
//#region packages/@mantine/core/src/components/Tour/use-tooltip-auto-focus.ts
|
|
5
|
+
function isFocusLost() {
|
|
6
|
+
return document.activeElement === null || document.activeElement === document.body;
|
|
7
|
+
}
|
|
8
|
+
function useTooltipAutoFocus({ autoFocus, opened, step }) {
|
|
9
|
+
const autoFocusRef = useRef(autoFocus);
|
|
10
|
+
const nodeRef = useRef(null);
|
|
11
|
+
useIsomorphicEffect(() => {
|
|
12
|
+
autoFocusRef.current = autoFocus;
|
|
13
|
+
});
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const node = nodeRef.current;
|
|
16
|
+
if (opened && node?.isConnected && isFocusLost()) node.focus({ preventScroll: true });
|
|
17
|
+
}, [step]);
|
|
18
|
+
return useCallback((node) => {
|
|
19
|
+
nodeRef.current = node;
|
|
20
|
+
if (!node) return;
|
|
21
|
+
const timeout = window.setTimeout(() => {
|
|
22
|
+
if (!autoFocusRef.current || !node.isConnected || node.contains(document.activeElement)) return;
|
|
23
|
+
node.focus({ preventScroll: true });
|
|
24
|
+
});
|
|
25
|
+
return () => {
|
|
26
|
+
window.clearTimeout(timeout);
|
|
27
|
+
if (nodeRef.current === node) nodeRef.current = null;
|
|
28
|
+
};
|
|
29
|
+
}, []);
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { useTooltipAutoFocus };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=use-tooltip-auto-focus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tooltip-auto-focus.mjs","names":[],"sources":["../../../src/components/Tour/use-tooltip-auto-focus.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useIsomorphicEffect } from '@mantine/hooks';\n\ninterface UseTooltipAutoFocusInput {\n autoFocus: boolean;\n opened: boolean;\n step: number;\n}\n\nfunction isFocusLost() {\n return document.activeElement === null || document.activeElement === document.body;\n}\n\nexport function useTooltipAutoFocus({ autoFocus, opened, step }: UseTooltipAutoFocusInput) {\n const autoFocusRef = useRef(autoFocus);\n const nodeRef = useRef<HTMLElement | null>(null);\n\n useIsomorphicEffect(() => {\n autoFocusRef.current = autoFocus;\n });\n\n useEffect(() => {\n const node = nodeRef.current;\n if (opened && node?.isConnected && isFocusLost()) {\n node.focus({ preventScroll: true });\n }\n }, [step]);\n\n return useCallback((node: HTMLElement | null) => {\n nodeRef.current = node;\n\n if (!node) {\n return undefined;\n }\n\n const timeout = window.setTimeout(() => {\n if (!autoFocusRef.current || !node.isConnected || node.contains(document.activeElement)) {\n return;\n }\n\n node.focus({ preventScroll: true });\n });\n\n return () => {\n window.clearTimeout(timeout);\n if (nodeRef.current === node) {\n nodeRef.current = null;\n }\n };\n }, []);\n}\n"],"mappings":";;;;AASA,SAAS,cAAc;CACrB,OAAO,SAAS,kBAAkB,QAAQ,SAAS,kBAAkB,SAAS;AAChF;AAEA,SAAgB,oBAAoB,EAAE,WAAW,QAAQ,QAAkC;CACzF,MAAM,eAAe,OAAO,SAAS;CACrC,MAAM,UAAU,OAA2B,IAAI;CAE/C,0BAA0B;EACxB,aAAa,UAAU;CACzB,CAAC;CAED,gBAAgB;EACd,MAAM,OAAO,QAAQ;EACrB,IAAI,UAAU,MAAM,eAAe,YAAY,GAC7C,KAAK,MAAM,EAAE,eAAe,KAAK,CAAC;CAEtC,GAAG,CAAC,IAAI,CAAC;CAET,OAAO,aAAa,SAA6B;EAC/C,QAAQ,UAAU;EAElB,IAAI,CAAC,MACH;EAGF,MAAM,UAAU,OAAO,iBAAiB;GACtC,IAAI,CAAC,aAAa,WAAW,CAAC,KAAK,eAAe,KAAK,SAAS,SAAS,aAAa,GACpF;GAGF,KAAK,MAAM,EAAE,eAAe,KAAK,CAAC;EACpC,CAAC;EAED,aAAa;GACX,OAAO,aAAa,OAAO;GAC3B,IAAI,QAAQ,YAAY,MACtB,QAAQ,UAAU;EAEtB;CACF,GAAG,CAAC,CAAC;AACP"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useDirection } from "../../core/DirectionProvider/DirectionProvider.mjs";
|
|
3
|
+
import { useEffect, useEffectEvent, useRef, useState } from "react";
|
|
4
|
+
import { useFocusReturn, useHotkeys, useUncontrolled, useWindowEvent } from "@mantine/hooks";
|
|
5
|
+
//#region packages/@mantine/core/src/components/Tour/use-tour-state.ts
|
|
6
|
+
function useTourState({ active, onClose, step, defaultStep, onStepChange, onStepOpen, onStepClose, mode, stepsCount, closeOnEscape, withKeyboardNavigation }) {
|
|
7
|
+
const { dir } = useDirection();
|
|
8
|
+
const targetRef = useRef(null);
|
|
9
|
+
const [currentStep, setCurrentStep, controlled] = useUncontrolled({
|
|
10
|
+
value: step,
|
|
11
|
+
defaultValue: defaultStep,
|
|
12
|
+
finalValue: 0,
|
|
13
|
+
onChange: onStepChange
|
|
14
|
+
});
|
|
15
|
+
const [beaconOpenStep, setBeaconOpenStep] = useState(null);
|
|
16
|
+
const resetUncontrolledStep = useEffectEvent(() => {
|
|
17
|
+
const initialStep = defaultStep ?? 0;
|
|
18
|
+
if (!controlled && currentStep !== initialStep) setCurrentStep(initialStep);
|
|
19
|
+
});
|
|
20
|
+
const wasActiveRef = useRef(!!active);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (wasActiveRef.current && !active) resetUncontrolledStep();
|
|
23
|
+
wasActiveRef.current = !!active;
|
|
24
|
+
}, [active]);
|
|
25
|
+
const showTooltip = !!active && (mode === "guided" || beaconOpenStep !== null);
|
|
26
|
+
const displayStepIndex = mode === "beacon" && beaconOpenStep !== null ? beaconOpenStep : currentStep;
|
|
27
|
+
const openStep = showTooltip && displayStepIndex >= 0 ? displayStepIndex : null;
|
|
28
|
+
const reportedStepRef = useRef(null);
|
|
29
|
+
const emitStepClose = useEffectEvent((index) => onStepClose(index));
|
|
30
|
+
const emitStepOpen = useEffectEvent((index) => onStepOpen(index));
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const previousStep = reportedStepRef.current;
|
|
33
|
+
if (previousStep === openStep) return;
|
|
34
|
+
reportedStepRef.current = openStep;
|
|
35
|
+
if (previousStep !== null) emitStepClose(previousStep);
|
|
36
|
+
if (openStep !== null) emitStepOpen(openStep);
|
|
37
|
+
}, [openStep]);
|
|
38
|
+
const close = () => {
|
|
39
|
+
const openedStep = reportedStepRef.current;
|
|
40
|
+
if (openedStep !== null) {
|
|
41
|
+
reportedStepRef.current = null;
|
|
42
|
+
onStepClose(openedStep);
|
|
43
|
+
}
|
|
44
|
+
setBeaconOpenStep(null);
|
|
45
|
+
onClose?.();
|
|
46
|
+
};
|
|
47
|
+
const setStep = (index) => {
|
|
48
|
+
if (mode === "beacon" && beaconOpenStep !== null) setBeaconOpenStep(index);
|
|
49
|
+
setCurrentStep(index);
|
|
50
|
+
};
|
|
51
|
+
const openBeaconStep = (index) => {
|
|
52
|
+
setBeaconOpenStep(index);
|
|
53
|
+
setCurrentStep(index);
|
|
54
|
+
};
|
|
55
|
+
useFocusReturn({
|
|
56
|
+
opened: !!active,
|
|
57
|
+
shouldReturnFocus: true
|
|
58
|
+
});
|
|
59
|
+
const isInsideTarget = (event) => !!targetRef.current && event.target instanceof Node && targetRef.current.contains(event.target);
|
|
60
|
+
const goToNextStep = (event) => {
|
|
61
|
+
if (isInsideTarget(event)) return;
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
if (currentStep < stepsCount - 1) setCurrentStep(currentStep + 1);
|
|
64
|
+
else close();
|
|
65
|
+
};
|
|
66
|
+
const goToPreviousStep = (event) => {
|
|
67
|
+
if (isInsideTarget(event)) return;
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
if (currentStep > 0) setCurrentStep(currentStep - 1);
|
|
70
|
+
};
|
|
71
|
+
const arrowHotkeys = [];
|
|
72
|
+
if (active && mode === "guided" && withKeyboardNavigation) {
|
|
73
|
+
arrowHotkeys.push([
|
|
74
|
+
dir === "rtl" ? "ArrowLeft" : "ArrowRight",
|
|
75
|
+
goToNextStep,
|
|
76
|
+
{ preventDefault: false }
|
|
77
|
+
]);
|
|
78
|
+
arrowHotkeys.push([
|
|
79
|
+
dir === "rtl" ? "ArrowRight" : "ArrowLeft",
|
|
80
|
+
goToPreviousStep,
|
|
81
|
+
{ preventDefault: false }
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
useHotkeys(arrowHotkeys);
|
|
85
|
+
useWindowEvent("keydown", (event) => {
|
|
86
|
+
if (event.key === "Escape" && showTooltip && closeOnEscape && !event.isComposing && event.target?.getAttribute?.("data-mantine-stop-propagation") !== "true") close();
|
|
87
|
+
}, { capture: true });
|
|
88
|
+
return {
|
|
89
|
+
currentStep,
|
|
90
|
+
setStep,
|
|
91
|
+
beaconOpenStep,
|
|
92
|
+
openBeaconStep,
|
|
93
|
+
showTooltip,
|
|
94
|
+
displayStepIndex,
|
|
95
|
+
close,
|
|
96
|
+
targetRef
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { useTourState };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=use-tour-state.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tour-state.mjs","names":[],"sources":["../../../src/components/Tour/use-tour-state.ts"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\nimport {\n useFocusReturn,\n useHotkeys,\n useUncontrolled,\n useWindowEvent,\n type HotkeyItem,\n} from '@mantine/hooks';\nimport { useDirection } from '../../core';\n\nexport interface UseTourStateInput {\n active: boolean | undefined;\n onClose: (() => void) | undefined;\n step: number | undefined;\n defaultStep: number | undefined;\n onStepChange: ((step: number) => void) | undefined;\n onStepOpen: (step: number) => void;\n onStepClose: (step: number) => void;\n mode: 'guided' | 'beacon';\n stepsCount: number;\n closeOnEscape: boolean | undefined;\n withKeyboardNavigation: boolean | undefined;\n}\n\nexport function useTourState({\n active,\n onClose,\n step,\n defaultStep,\n onStepChange,\n onStepOpen,\n onStepClose,\n mode,\n stepsCount,\n closeOnEscape,\n withKeyboardNavigation,\n}: UseTourStateInput) {\n const { dir } = useDirection();\n const targetRef = useRef<HTMLElement | null>(null);\n\n const [currentStep, setCurrentStep, controlled] = useUncontrolled({\n value: step,\n defaultValue: defaultStep,\n finalValue: 0,\n onChange: onStepChange,\n });\n\n const [beaconOpenStep, setBeaconOpenStep] = useState<number | null>(null);\n\n const resetUncontrolledStep = useEffectEvent(() => {\n const initialStep = defaultStep ?? 0;\n if (!controlled && currentStep !== initialStep) {\n setCurrentStep(initialStep);\n }\n });\n\n const wasActiveRef = useRef(!!active);\n\n useEffect(() => {\n if (wasActiveRef.current && !active) {\n resetUncontrolledStep();\n }\n wasActiveRef.current = !!active;\n }, [active]);\n\n const showTooltip = !!active && (mode === 'guided' || beaconOpenStep !== null);\n const displayStepIndex =\n mode === 'beacon' && beaconOpenStep !== null ? beaconOpenStep : currentStep;\n const openStep = showTooltip && displayStepIndex >= 0 ? displayStepIndex : null;\n\n const reportedStepRef = useRef<number | null>(null);\n const emitStepClose = useEffectEvent((index: number) => onStepClose(index));\n const emitStepOpen = useEffectEvent((index: number) => onStepOpen(index));\n\n useEffect(() => {\n const previousStep = reportedStepRef.current;\n\n if (previousStep === openStep) {\n return;\n }\n\n reportedStepRef.current = openStep;\n\n if (previousStep !== null) {\n emitStepClose(previousStep);\n }\n\n if (openStep !== null) {\n emitStepOpen(openStep);\n }\n }, [openStep]);\n\n const close = () => {\n const openedStep = reportedStepRef.current;\n\n if (openedStep !== null) {\n reportedStepRef.current = null;\n onStepClose(openedStep);\n }\n\n setBeaconOpenStep(null);\n onClose?.();\n };\n\n const setStep = (index: number) => {\n if (mode === 'beacon' && beaconOpenStep !== null) {\n setBeaconOpenStep(index);\n }\n setCurrentStep(index);\n };\n\n const openBeaconStep = (index: number) => {\n setBeaconOpenStep(index);\n setCurrentStep(index);\n };\n\n useFocusReturn({ opened: !!active, shouldReturnFocus: true });\n\n const isInsideTarget = (event: KeyboardEvent) =>\n !!targetRef.current && event.target instanceof Node && targetRef.current.contains(event.target);\n\n const goToNextStep = (event: KeyboardEvent) => {\n if (isInsideTarget(event)) {\n return;\n }\n\n event.preventDefault();\n\n if (currentStep < stepsCount - 1) {\n setCurrentStep(currentStep + 1);\n } else {\n close();\n }\n };\n\n const goToPreviousStep = (event: KeyboardEvent) => {\n if (isInsideTarget(event)) {\n return;\n }\n\n event.preventDefault();\n\n if (currentStep > 0) {\n setCurrentStep(currentStep - 1);\n }\n };\n\n const arrowHotkeys: HotkeyItem[] = [];\n\n if (active && mode === 'guided' && withKeyboardNavigation) {\n arrowHotkeys.push([\n dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight',\n goToNextStep,\n { preventDefault: false },\n ]);\n arrowHotkeys.push([\n dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft',\n goToPreviousStep,\n { preventDefault: false },\n ]);\n }\n\n useHotkeys(arrowHotkeys);\n useWindowEvent(\n 'keydown',\n (event) => {\n if (\n event.key === 'Escape' &&\n showTooltip &&\n closeOnEscape &&\n !event.isComposing &&\n (event.target as HTMLElement | null)?.getAttribute?.('data-mantine-stop-propagation') !==\n 'true'\n ) {\n close();\n }\n },\n { capture: true }\n );\n\n return {\n currentStep,\n setStep,\n beaconOpenStep,\n openBeaconStep,\n showTooltip,\n displayStepIndex,\n close,\n targetRef,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useDirection } from "../../core/DirectionProvider/DirectionProvider.mjs";
|
|
3
|
+
import { getFloatingPosition } from "../../utils/Floating/get-floating-position/get-floating-position.mjs";
|
|
4
|
+
import { pressAwareAutoUpdate } from "./press-aware-auto-update.mjs";
|
|
5
|
+
import { resolveTarget, useTargetElement, useTargetRect } from "./use-target-rect.mjs";
|
|
6
|
+
import { useTourState } from "./use-tour-state.mjs";
|
|
7
|
+
import { isElementInView } from "./is-element-in-view.mjs";
|
|
8
|
+
import { Children, useEffect, useEffectEvent, useRef, useState } from "react";
|
|
9
|
+
import { flip, offset, shift, size, useFloating } from "@floating-ui/react";
|
|
10
|
+
import { flushSync } from "react-dom";
|
|
11
|
+
//#region packages/@mantine/core/src/components/Tour/use-tour.ts
|
|
12
|
+
function useTour({ active, onClose, step: stepProp, defaultStep, onStepChange, onStepOpen, onStepClose, mode, withKeyboardNavigation, withScrollIntoView, scrollToHandler, closeOnEscape, maxWidth, stepTransitionDuration, children, stepComponent }) {
|
|
13
|
+
const steps = [];
|
|
14
|
+
Children.forEach(children, (child) => {
|
|
15
|
+
if (child && typeof child === "object" && "type" in child && child.type === stepComponent) steps.push(child.props);
|
|
16
|
+
});
|
|
17
|
+
const { dir } = useDirection();
|
|
18
|
+
const { setStep, beaconOpenStep, openBeaconStep, showTooltip, displayStepIndex, close, targetRef } = useTourState({
|
|
19
|
+
active,
|
|
20
|
+
onClose,
|
|
21
|
+
step: stepProp,
|
|
22
|
+
defaultStep,
|
|
23
|
+
onStepChange,
|
|
24
|
+
onStepOpen: (index) => {
|
|
25
|
+
onStepOpen?.(index);
|
|
26
|
+
steps[index]?.onStepOpen?.();
|
|
27
|
+
},
|
|
28
|
+
onStepClose: (index) => {
|
|
29
|
+
onStepClose?.(index);
|
|
30
|
+
steps[index]?.onStepClose?.();
|
|
31
|
+
},
|
|
32
|
+
mode,
|
|
33
|
+
stepsCount: steps.length,
|
|
34
|
+
closeOnEscape,
|
|
35
|
+
withKeyboardNavigation
|
|
36
|
+
});
|
|
37
|
+
const displayStep = steps[displayStepIndex] || null;
|
|
38
|
+
const activeTarget = showTooltip ? displayStep?.target : void 0;
|
|
39
|
+
const lastActiveTargetRef = useRef(void 0);
|
|
40
|
+
if (showTooltip) lastActiveTargetRef.current = activeTarget;
|
|
41
|
+
const [, setExitedCount] = useState(0);
|
|
42
|
+
const clearExitedTarget = () => {
|
|
43
|
+
lastActiveTargetRef.current = void 0;
|
|
44
|
+
setExitedCount((count) => count + 1);
|
|
45
|
+
};
|
|
46
|
+
const resolvedTarget = showTooltip ? activeTarget : lastActiveTargetRef.current;
|
|
47
|
+
const targetElement = useTargetElement(resolvedTarget);
|
|
48
|
+
const { rect: targetRect, updateRect } = useTargetRect(targetElement);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
targetRef.current = targetElement;
|
|
51
|
+
}, [targetElement]);
|
|
52
|
+
const scrollTargetIntoView = useEffectEvent((element) => {
|
|
53
|
+
if (scrollToHandler) scrollToHandler(element);
|
|
54
|
+
else if (!isElementInView(element)) element.scrollIntoView({
|
|
55
|
+
behavior: "smooth",
|
|
56
|
+
block: "center"
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (active && withScrollIntoView && targetElement) scrollTargetIntoView(targetElement);
|
|
61
|
+
}, [
|
|
62
|
+
active,
|
|
63
|
+
targetElement,
|
|
64
|
+
withScrollIntoView
|
|
65
|
+
]);
|
|
66
|
+
const nextTargetNeedsScroll = useEffectEvent(() => {
|
|
67
|
+
if (!withScrollIntoView || scrollToHandler) return false;
|
|
68
|
+
const element = resolveTarget(displayStep?.target);
|
|
69
|
+
return !!element && !isElementInView(element);
|
|
70
|
+
});
|
|
71
|
+
const stepPosition = getFloatingPosition(dir, displayStep?.position || "bottom");
|
|
72
|
+
const isSidePlacement = stepPosition.startsWith("left") || stepPosition.startsWith("right");
|
|
73
|
+
const [constrainedWidth, setConstrainedWidth] = useState(maxWidth);
|
|
74
|
+
const { refs: floatingRefs, floatingStyles } = useFloating({
|
|
75
|
+
elements: { reference: targetElement },
|
|
76
|
+
placement: stepPosition,
|
|
77
|
+
transform: false,
|
|
78
|
+
whileElementsMounted: (reference, floating, update) => {
|
|
79
|
+
let mounted = false;
|
|
80
|
+
const cleanup = pressAwareAutoUpdate(reference, floating, () => {
|
|
81
|
+
update();
|
|
82
|
+
if (mounted) flushSync(updateRect);
|
|
83
|
+
else updateRect();
|
|
84
|
+
});
|
|
85
|
+
mounted = true;
|
|
86
|
+
return cleanup;
|
|
87
|
+
},
|
|
88
|
+
middleware: [
|
|
89
|
+
offset(12),
|
|
90
|
+
flip(isSidePlacement ? { fallbackAxisSideDirection: "end" } : void 0),
|
|
91
|
+
shift({ padding: 8 }),
|
|
92
|
+
size({
|
|
93
|
+
padding: 8,
|
|
94
|
+
apply({ availableWidth, placement }) {
|
|
95
|
+
const side = placement.split("-")[0];
|
|
96
|
+
setConstrainedWidth(side === "left" || side === "right" ? maxWidth : Math.min(maxWidth, availableWidth));
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
const isCentered = !targetElement;
|
|
102
|
+
const [hasPositioned, setHasPositioned] = useState(false);
|
|
103
|
+
const [stepMoving, setStepMoving] = useState(false);
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (!active) {
|
|
106
|
+
setHasPositioned(false);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const timer = requestAnimationFrame(() => {
|
|
110
|
+
setHasPositioned(true);
|
|
111
|
+
});
|
|
112
|
+
return () => cancelAnimationFrame(timer);
|
|
113
|
+
}, [active]);
|
|
114
|
+
const previousStepRef = useRef({
|
|
115
|
+
index: displayStepIndex,
|
|
116
|
+
shown: showTooltip
|
|
117
|
+
});
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
const previous = previousStepRef.current;
|
|
120
|
+
previousStepRef.current = {
|
|
121
|
+
index: displayStepIndex,
|
|
122
|
+
shown: showTooltip
|
|
123
|
+
};
|
|
124
|
+
if (!showTooltip) {
|
|
125
|
+
setStepMoving(false);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (!hasPositioned || !previous.shown || previous.index === displayStepIndex || nextTargetNeedsScroll()) return;
|
|
129
|
+
setStepMoving(true);
|
|
130
|
+
const timer = window.setTimeout(() => setStepMoving(false), stepTransitionDuration);
|
|
131
|
+
return () => window.clearTimeout(timer);
|
|
132
|
+
}, [displayStepIndex, showTooltip]);
|
|
133
|
+
return {
|
|
134
|
+
steps,
|
|
135
|
+
setStep,
|
|
136
|
+
beaconOpenStep,
|
|
137
|
+
openBeaconStep,
|
|
138
|
+
close,
|
|
139
|
+
displayStep,
|
|
140
|
+
displayStepIndex,
|
|
141
|
+
targetRect,
|
|
142
|
+
targetElement,
|
|
143
|
+
floatingStyles,
|
|
144
|
+
floatingRefs,
|
|
145
|
+
isCentered,
|
|
146
|
+
constrainedWidth,
|
|
147
|
+
stepMoving: hasPositioned && stepMoving,
|
|
148
|
+
showTooltip,
|
|
149
|
+
clearExitedTarget
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
//#endregion
|
|
153
|
+
export { useTour };
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=use-tour.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tour.mjs","names":[],"sources":["../../../src/components/Tour/use-tour.ts"],"sourcesContent":["import { Children, useEffect, useEffectEvent, useRef, useState } from 'react';\nimport { flip, offset, shift, size, useFloating } from '@floating-ui/react';\nimport { flushSync } from 'react-dom';\nimport { useDirection } from '../../core';\nimport { getFloatingPosition } from '../../utils/Floating';\nimport { isElementInView } from './is-element-in-view';\nimport { pressAwareAutoUpdate } from './press-aware-auto-update';\nimport type { TourStepProps } from './TourStep/TourStep';\nimport {\n resolveTarget,\n useTargetElement,\n useTargetRect,\n type TargetRect,\n type TourTarget,\n} from './use-target-rect';\nimport { useTourState } from './use-tour-state';\n\nexport interface UseTourInput {\n active?: boolean;\n onClose?: () => void;\n step?: number;\n defaultStep?: number;\n onStepChange?: (step: number) => void;\n onStepOpen?: (step: number) => void;\n onStepClose?: (step: number) => void;\n mode?: 'guided' | 'beacon';\n withKeyboardNavigation?: boolean;\n withScrollIntoView?: boolean;\n scrollToHandler?: (element: HTMLElement) => void;\n closeOnEscape?: boolean;\n maxWidth?: number;\n stepTransitionDuration?: number;\n children?: React.ReactNode;\n stepComponent: React.ComponentType<any>;\n}\n\nexport interface UseTourReturn {\n steps: TourStepProps[];\n setStep: (step: number) => void;\n beaconOpenStep: number | null;\n openBeaconStep: (step: number) => void;\n close: () => void;\n displayStep: TourStepProps | null;\n displayStepIndex: number;\n targetRect: TargetRect | null;\n targetElement: HTMLElement | null;\n floatingStyles: React.CSSProperties;\n floatingRefs: ReturnType<typeof useFloating>['refs'];\n isCentered: boolean;\n constrainedWidth: number;\n stepMoving: boolean;\n showTooltip: boolean;\n clearExitedTarget: () => void;\n}\n\nexport function useTour({\n active,\n onClose,\n step: stepProp,\n defaultStep,\n onStepChange,\n onStepOpen,\n onStepClose,\n mode,\n withKeyboardNavigation,\n withScrollIntoView,\n scrollToHandler,\n closeOnEscape,\n maxWidth,\n stepTransitionDuration,\n children,\n stepComponent,\n}: UseTourInput): UseTourReturn {\n const steps: TourStepProps[] = [];\n Children.forEach(children, (child) => {\n if (child && typeof child === 'object' && 'type' in child && child.type === stepComponent) {\n steps.push(child.props as TourStepProps);\n }\n });\n\n const { dir } = useDirection();\n\n const {\n setStep,\n beaconOpenStep,\n openBeaconStep,\n showTooltip,\n displayStepIndex,\n close,\n targetRef,\n } = useTourState({\n active,\n onClose,\n step: stepProp,\n defaultStep,\n onStepChange,\n onStepOpen: (index) => {\n onStepOpen?.(index);\n steps[index]?.onStepOpen?.();\n },\n onStepClose: (index) => {\n onStepClose?.(index);\n steps[index]?.onStepClose?.();\n },\n mode: mode!,\n stepsCount: steps.length,\n closeOnEscape,\n withKeyboardNavigation,\n });\n\n const displayStep = steps[displayStepIndex] || null;\n const activeTarget = showTooltip ? displayStep?.target : undefined;\n\n const lastActiveTargetRef = useRef<TourTarget>(undefined);\n if (showTooltip) {\n lastActiveTargetRef.current = activeTarget;\n }\n\n const [, setExitedCount] = useState(0);\n const clearExitedTarget = () => {\n lastActiveTargetRef.current = undefined;\n setExitedCount((count) => count + 1);\n };\n\n const resolvedTarget = showTooltip ? activeTarget : lastActiveTargetRef.current;\n const targetElement = useTargetElement(resolvedTarget);\n const { rect: targetRect, updateRect } = useTargetRect(targetElement);\n\n useEffect(() => {\n targetRef.current = targetElement;\n }, [targetElement]);\n\n const scrollTargetIntoView = useEffectEvent((element: HTMLElement) => {\n if (scrollToHandler) {\n scrollToHandler(element);\n } else if (!isElementInView(element)) {\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n\n useEffect(() => {\n if (active && withScrollIntoView && targetElement) {\n scrollTargetIntoView(targetElement);\n }\n }, [active, targetElement, withScrollIntoView]);\n\n const nextTargetNeedsScroll = useEffectEvent(() => {\n if (!withScrollIntoView || scrollToHandler) {\n return false;\n }\n\n const element = resolveTarget(displayStep?.target);\n return !!element && !isElementInView(element);\n });\n\n const stepPosition = getFloatingPosition(dir, displayStep?.position || 'bottom');\n const isSidePlacement = stepPosition.startsWith('left') || stepPosition.startsWith('right');\n\n const [constrainedWidth, setConstrainedWidth] = useState(maxWidth!);\n\n const { refs: floatingRefs, floatingStyles } = useFloating({\n elements: { reference: targetElement },\n placement: stepPosition,\n transform: false,\n whileElementsMounted: (reference, floating, update) => {\n let mounted = false;\n const cleanup = pressAwareAutoUpdate(reference, floating, () => {\n update();\n if (mounted) {\n flushSync(updateRect);\n } else {\n updateRect();\n }\n });\n mounted = true;\n return cleanup;\n },\n middleware: [\n offset(12),\n flip(isSidePlacement ? { fallbackAxisSideDirection: 'end' } : undefined),\n shift({ padding: 8 }),\n size({\n padding: 8,\n apply({ availableWidth, placement }) {\n const side = placement.split('-')[0];\n setConstrainedWidth(\n side === 'left' || side === 'right' ? maxWidth! : Math.min(maxWidth!, availableWidth)\n );\n },\n }),\n ],\n });\n\n const isCentered = !targetElement;\n const [hasPositioned, setHasPositioned] = useState(false);\n const [stepMoving, setStepMoving] = useState(false);\n\n useEffect(() => {\n if (!active) {\n setHasPositioned(false);\n return;\n }\n\n const timer = requestAnimationFrame(() => {\n setHasPositioned(true);\n });\n\n return () => cancelAnimationFrame(timer);\n }, [active]);\n\n const previousStepRef = useRef({ index: displayStepIndex, shown: showTooltip });\n\n useEffect(() => {\n const previous = previousStepRef.current;\n previousStepRef.current = { index: displayStepIndex, shown: showTooltip };\n\n if (!showTooltip) {\n setStepMoving(false);\n return undefined;\n }\n\n if (\n !hasPositioned ||\n !previous.shown ||\n previous.index === displayStepIndex ||\n nextTargetNeedsScroll()\n ) {\n return undefined;\n }\n\n setStepMoving(true);\n const timer = window.setTimeout(() => setStepMoving(false), stepTransitionDuration);\n return () => window.clearTimeout(timer);\n }, [displayStepIndex, showTooltip]);\n\n return {\n steps,\n setStep,\n beaconOpenStep,\n openBeaconStep,\n close,\n displayStep,\n displayStepIndex,\n targetRect,\n targetElement,\n floatingStyles,\n floatingRefs,\n isCentered,\n constrainedWidth,\n stepMoving: hasPositioned && stepMoving,\n showTooltip,\n clearExitedTarget,\n };\n}\n"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ import { flattenTreeSelectData } from "./flatten-tree-select-data.mjs";
|
|
|
20
20
|
import { checkedToValue, expandToLeafChecked } from "./get-checked-values-by-strategy.mjs";
|
|
21
21
|
import TreeSelect_module_default from "./TreeSelect.module.mjs";
|
|
22
22
|
import { TreeSelectOption } from "./TreeSelectOption.mjs";
|
|
23
|
-
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
23
|
+
import { Fragment, useCallback, useEffect, useMemo, useRef } from "react";
|
|
24
24
|
import { useId as useId$1, useUncontrolled } from "@mantine/hooks";
|
|
25
25
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
26
26
|
//#region packages/@mantine/core/src/components/TreeSelect/TreeSelect.tsx
|
|
@@ -58,7 +58,7 @@ const TreeSelect = genericFactory((_props) => {
|
|
|
58
58
|
"InputWrapper",
|
|
59
59
|
"TreeSelect"
|
|
60
60
|
], defaultProps, _props);
|
|
61
|
-
const { classNames, className, style, styles, unstyled, vars, size, data, mode, value, defaultValue, onChange, checkStrictly, checkedStrategy, defaultExpandedValues, defaultExpandAll, expandedValues, onExpandedChange, expandOnClick, searchable, searchValue, defaultSearchValue, onSearchChange, filter, nothingFoundMessage, allowDeselect, clearable, clearSectionMode, clearButtonProps, maxValues, maxDisplayedValues, maxDisplayedValuesContent, onRemove, onClear, renderNode, withLines, hiddenInputProps, hiddenInputValuesDivider, scrollAreaProps, chevronColor, maxDropdownHeight, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, comboboxProps, clearSearchOnChange, openOnFocus, chevronAriaLabels, variant, onKeyDown, onFocus, onBlur, onClick, readOnly, disabled, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, labelProps, descriptionProps, errorProps, successProps, wrapperProps, description, label, error, success, withErrorStyles, withSuccessStyles, name, form, id, placeholder, required, mod, attributes, ...others } = props;
|
|
61
|
+
const { classNames, className, style, styles, unstyled, vars, size, data, mode, value, defaultValue, onChange, checkStrictly, checkedStrategy, defaultExpandedValues, defaultExpandAll, expandedValues, onExpandedChange, expandOnClick, searchable, searchValue, defaultSearchValue, onSearchChange, filter, nothingFoundMessage, allowDeselect, clearable, clearSectionMode, clearButtonProps, maxValues, maxDisplayedValues, maxDisplayedValuesContent, onRemove, onClear, renderNode, renderPill, withLines, hiddenInputProps, hiddenInputValuesDivider, scrollAreaProps, chevronColor, maxDropdownHeight, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, comboboxProps, clearSearchOnChange, openOnFocus, chevronAriaLabels, variant, onKeyDown, onFocus, onBlur, onClick, readOnly, disabled, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, labelProps, descriptionProps, errorProps, successProps, wrapperProps, description, label, error, success, withErrorStyles, withSuccessStyles, name, form, id, placeholder, required, mod, attributes, ...others } = props;
|
|
62
62
|
const isMulti = mode === "multiple" || mode === "checkbox";
|
|
63
63
|
const isCheckbox = mode === "checkbox";
|
|
64
64
|
const _id = useId$1(id);
|
|
@@ -335,21 +335,34 @@ const TreeSelect = genericFactory((_props) => {
|
|
|
335
335
|
const pillsListStyle = _clearable && isMulti ? { paddingInlineEnd: clearSectionOffset[size] ?? clearSectionOffset.sm } : void 0;
|
|
336
336
|
const visiblePills = maxDisplayedValues != null ? displayValues.slice(0, maxDisplayedValues) : displayValues;
|
|
337
337
|
const overflowCount = maxDisplayedValues != null ? Math.max(0, displayValues.length - maxDisplayedValues) : 0;
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
338
|
+
const removePillValue = (item) => {
|
|
339
|
+
if (isCheckbox) {
|
|
340
|
+
const childLeaves = checkStrictly ? [item] : getChildrenNodesValues(item, data);
|
|
341
|
+
const newInternal = internalChecked.filter((v) => !childLeaves.includes(v));
|
|
342
|
+
setValue(checkedToValue(newInternal, data, checkedStrategy));
|
|
343
|
+
} else setValue(_value.filter((v) => v !== item));
|
|
344
|
+
onRemove?.(item);
|
|
345
|
+
};
|
|
346
|
+
const pills = visiblePills.map((item, index) => {
|
|
347
|
+
if (renderPill) return /* @__PURE__ */ jsx(Fragment, { children: renderPill({
|
|
348
|
+
node: nodeLookup[item] ?? {
|
|
349
|
+
value: item,
|
|
350
|
+
label: item
|
|
351
|
+
},
|
|
352
|
+
value: item,
|
|
353
|
+
onRemove: () => removePillValue(item),
|
|
354
|
+
disabled,
|
|
355
|
+
readOnly
|
|
356
|
+
}) }, `${item}-${index}`);
|
|
357
|
+
return /* @__PURE__ */ jsx(Pill, {
|
|
358
|
+
withRemoveButton: !readOnly,
|
|
359
|
+
onRemove: () => removePillValue(item),
|
|
360
|
+
unstyled,
|
|
361
|
+
disabled,
|
|
362
|
+
...getStyles("pill"),
|
|
363
|
+
children: getNodeLabel(item)
|
|
364
|
+
}, `${item}-${index}`);
|
|
365
|
+
});
|
|
353
366
|
if (overflowCount > 0) {
|
|
354
367
|
const overflowContent = typeof maxDisplayedValuesContent === "function" ? maxDisplayedValuesContent(overflowCount) : maxDisplayedValuesContent || `+${overflowCount} more`;
|
|
355
368
|
pills.push(/* @__PURE__ */ jsx(Pill, {
|