UNPKG

@gfazioli/mantine-onboarding-tour

Version:

A Mantine component enables you to create a onboarding-tour effect using overlays, popovers, and onboarding tours, which enhances element visibility and interactivity.

97 lines (93 loc) 2.79 kB
'use client'; 'use strict'; var React = require('react'); var core = require('@mantine/core'); var OnboardingTourFocusRevealGroup_context = require('./OnboardingTourFocusRevealGroup.context.cjs'); function OnboardingTourFocusRevealGroup(_props) { const groupDefaultProps = { focusedMode: "none", withReveal: false, withOverlay: true, overlayProps: { blur: 2, backgroundOpacity: 0.5, color: "black" }, transitionProps: { transition: "fade", duration: 150 }, popoverProps: { position: "left", withArrow: true, arrowSize: 16, arrowRadius: 4, offset: -4, radius: "md", shadow: "xl" } }; const props = core.useProps("OnboardingTourFocusRevealGroup", groupDefaultProps, _props); props.overlayProps = { ...groupDefaultProps.overlayProps, ..._props.overlayProps }; props.transitionProps = { ...groupDefaultProps.transitionProps, ..._props.transitionProps }; props.popoverProps = { ...groupDefaultProps.popoverProps, ..._props.popoverProps }; const { withReveal, withOverlay, focusedMode, overlayProps, transitionProps, popoverProps, children } = props; const [overlay, setOverlay] = React.useState(false); const listInViewport = React.useRef({}); const areAllNotVisible = () => Object.values(listInViewport.current).every((visible) => !visible); const setMeInViewport = (uuid, visible) => { listInViewport.current[uuid] = visible; }; const setRequestOverlay = (value) => { if (value) { setOverlay(true); } else if (areAllNotVisible()) { setOverlay(false); } }; return /* @__PURE__ */ React.createElement( OnboardingTourFocusRevealGroup_context.OnboardingTourFocusRevealGroupProvider, { value: { setRequestOverlay, setMeInViewport, focusedMode, withReveal, withOverlay, overlayProps, transitionProps, popoverProps } }, withOverlay && /* @__PURE__ */ React.createElement( core.Transition, { transition: transitionProps?.transition, mounted: overlay, duration: transitionProps?.duration, exitDuration: transitionProps?.exitDuration }, (transitionStyles) => /* @__PURE__ */ React.createElement( core.Overlay, { "data-focus-reveal-overlay": true, ...overlayProps, style: { position: "fixed", inset: 0, ...transitionStyles } } ) ), children ); } OnboardingTourFocusRevealGroup.displayName = "OnboardingTourFocusRevealGroup"; exports.OnboardingTourFocusRevealGroup = OnboardingTourFocusRevealGroup; //# sourceMappingURL=OnboardingTourFocusRevealGroup.cjs.map