@tent-official/react-walkthrough 1.1.40 → 1.1.42

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/index.js CHANGED
@@ -7,7 +7,8 @@ var jsxRuntime = require('react/jsx-runtime');
7
7
  // src/WalkthroughOverlay.js
8
8
  var listeners = /* @__PURE__ */ new Set();
9
9
  var globalState = {
10
- activeTour: null
10
+ activeTour: null,
11
+ lastRect: null
11
12
  };
12
13
  var notify = () => {
13
14
  listeners.forEach((fn) => fn({ ...globalState }));
@@ -265,7 +266,7 @@ var waitForScrollEnd = (container, timeoutMs = 400) => {
265
266
  const fallbackTimer = setTimeout(done, timeoutMs);
266
267
  });
267
268
  };
268
- var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true) => {
269
+ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true, tourName = null) => {
269
270
  const [displayRect, setDisplayRect] = react.useState(null);
270
271
  const [isAnimating, setIsAnimating] = react.useState(false);
271
272
  const targetRef = react.useRef(null);
@@ -273,8 +274,18 @@ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true
273
274
  const rafRef = react.useRef(null);
274
275
  const scrollingRef = react.useRef(false);
275
276
  const cleanupRef = react.useRef(null);
277
+ const prevTourNameRef = react.useRef(null);
276
278
  react.useEffect(() => {
277
279
  let cancelled = false;
280
+ if (tourName && tourName !== prevTourNameRef.current) {
281
+ const savedRect = globalState.lastRect;
282
+ if (savedRect && prevTourNameRef.current !== null) {
283
+ currentRef.current = { ...savedRect };
284
+ setDisplayRect(null);
285
+ targetRef.current = null;
286
+ }
287
+ prevTourNameRef.current = tourName;
288
+ }
278
289
  if (!step) {
279
290
  if (!isTourActive) {
280
291
  setDisplayRect(null);
@@ -285,6 +296,12 @@ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true
285
296
  scrollingRef.current = false;
286
297
  return;
287
298
  }
299
+ if (!currentRef.current) {
300
+ const savedRect = globalState.lastRect;
301
+ if (savedRect) {
302
+ currentRef.current = { ...savedRect };
303
+ }
304
+ }
288
305
  const containerEl = containerElement ? document.getElementById(resolveElId(containerElement)) : null;
289
306
  const computeRect = (el2) => {
290
307
  var _a;
@@ -398,7 +415,7 @@ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true
398
415
  if (rafRef.current) cancelAnimationFrame(rafRef.current);
399
416
  if (cleanupRef.current) cleanupRef.current();
400
417
  };
401
- }, [step, containerElement, isTourActive]);
418
+ }, [step, containerElement, isTourActive, tourName]);
402
419
  return { rect: displayRect, isAnimating };
403
420
  };
404
421
  var clampSize = (value, max) => {
@@ -568,14 +585,14 @@ var WalkthroughOverlay = ({
568
585
  return () => clearTimeout(timer);
569
586
  }, [currentTourName, activeTour]);
570
587
  const step = isDelaying ? null : rawStep;
571
- const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour == null ? void 0 : activeTour.containerElement, !!activeTour);
588
+ const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour == null ? void 0 : activeTour.containerElement, !!activeTour, activeTour == null ? void 0 : activeTour.name);
572
589
  const completeTour = react.useCallback(() => {
573
590
  if (!activeTour) return;
574
591
  const { storageSuffix: sk, name: n, onWalkthroughComplete: cb } = activeTour;
575
- setGlobalState({ activeTour: null });
592
+ setGlobalState({ activeTour: null, lastRect: rect ? { ...rect } : null });
576
593
  markDone(sk, n);
577
594
  if (cb) cb(n);
578
- }, [activeTour]);
595
+ }, [activeTour, rect]);
579
596
  react.useEffect(() => {
580
597
  if (!activeTour) return;
581
598
  if (currentValidPos !== -1) return;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/index.js","../src/styles/index.js","../src/WalkthroughOverlay.js"],"names":["useState","useEffect","forwardRef","jsx","useRef","useCallback","el","_a","createPortal","jsxs","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { useState, useEffect } from \"react\";\n\nconst listeners = new Set();\nlet globalState = {\n activeTour: null,\n};\n\nconst notify = () => {\n listeners.forEach((fn) => fn({ ...globalState }));\n};\n\nconst setGlobalState = (updater) => {\n globalState =\n typeof updater === \"function\"\n ? updater(globalState)\n : { ...globalState, ...updater };\n notify();\n};\n\nconst useGlobalState = () => {\n const [state, setState] = useState(globalState);\n useEffect(() => {\n const handler = (s) => setState(s);\n listeners.add(handler);\n return () => listeners.delete(handler);\n }, []);\n return state;\n};\n\nconst getStorageKey = (storageSuffix) => {\n return storageSuffix ? `walkthrough-done:${storageSuffix}` : \"walkthrough-done\";\n};\n\nconst getStorageData = (storageSuffix) => {\n try {\n return JSON.parse(localStorage.getItem(getStorageKey(storageSuffix)) || \"{}\");\n } catch {\n return {};\n }\n};\n\nconst markDone = (storageSuffix, name) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n data[name] = true;\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst isDone = (storageSuffix, name) => {\n const data = getStorageData(storageSuffix);\n return data[name] === true;\n};\n\nconst isAnyDepDone = (storageSuffix, deps) => {\n if (!deps || deps.length === 0) return true;\n return deps.some((d) => isDone(storageSuffix, d));\n};\n\nconst resetWalkthrough = ({ storageSuffix = \"\", walkthroughList = [] } = {}) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n walkthroughList.forEach((n) => {\n delete data[n];\n });\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst easeOutCubic = (t) => {\n return 1 - Math.pow(1 - t, 3);\n};\n\nconst lerp = (a, b, t) => {\n return a + (b - a) * t;\n};\n\nexport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n};\n","import React, { forwardRef } from \"react\";\n\nconst STYLE_ID = \"wt-keyframes\";\n\nexport const injectKeyframes = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n @keyframes wt-pop-in {\n from { opacity: 0; transform: translateY(10px) scale(0.96); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes wt-fade-slide-in {\n from { opacity: 0; transform: translateX(12px); }\n to { opacity: 1; transform: translateX(0); }\n }\n .wt-overlay-wrap svg { display: block; width: 100%; height: 100%; }\n .wt-btn { border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.15s ease; outline: none; font-family: inherit; }\n .wt-btn:hover { opacity: 0.85; }\n .wt-btn-next:hover { box-shadow: 0 4px 12px rgba(79,70,229,0.4); transform: translateY(-1px); }\n .wt-btn-next:active { transform: translateY(0); }\n `;\n document.head.appendChild(style);\n};\n\nexport const OverlayWrapper = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} className=\"wt-overlay-wrap\" style={{\n position: \"fixed\", inset: 0, zIndex: 10001,\n pointerEvents: \"none\", width: \"100vw\", height: \"100vh\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const ClickLayer = forwardRef(({ style, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", inset: 0, zIndex: 10000, cursor: \"default\", ...style,\n }} {...props} />\n));\n\nexport const PopoverContainer = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", zIndex: 99999, background: \"#fff\",\n boxShadow: \"0 12px 40px rgba(0,0,0,0.18), 0 2px 10px rgba(0,0,0,0.06)\",\n animation: \"wt-pop-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1)\",\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverBody = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n animation: \"wt-fade-slide-in 0.3s ease-out\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverTitle = forwardRef(({ style, children, ...props }, ref) => (\n <h3 ref={ref} style={{\n fontSize: 15, fontWeight: 700, color: \"#1a1a2e\",\n margin: \"0 0 10px\", lineHeight: 1.3, whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</h3>\n));\n\nexport const DescriptionScrollArea = forwardRef(({ $height, style, children, ...props }, ref) => {\n const extra = $height && $height !== \"auto\" ? {\n maxHeight: typeof $height === \"number\" ? $height : $height,\n overflowY: \"auto\",\n } : {};\n return <div ref={ref} style={{ ...extra, ...style }} {...props}>{children}</div>;\n});\n\nexport const DescriptionBlock = forwardRef(({ $direction = \"row\", style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", flexDirection: $direction,\n fontSize: 13, color: \"#666\", lineHeight: 1.6, margin: \"0 0 4px\",\n ...($direction === \"column\" ? { gap: 2 } : { alignItems: \"baseline\", gap: 4 }),\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const DescriptionTitle = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontWeight: 600, color: \"#333\", whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</span>\n));\n\nexport const PopoverFooter = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n marginTop: 16, gap: 8, ...style,\n }} {...props}>{children}</div>\n));\n\nexport const StepCounter = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontSize: 13, fontWeight: 600, color: \"#a1a1aa\", ...style,\n }} {...props}>{children}</span>\n));\n\n\nexport const ButtonGroup = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{ display: \"flex\", gap: 6, ...style }} {...props}>{children}</div>\n));\n\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n} from \"./utils\";\n\nimport {\n injectKeyframes,\n OverlayWrapper,\n ClickLayer,\n PopoverContainer,\n PopoverBody,\n PopoverTitle,\n DescriptionScrollArea,\n DescriptionBlock,\n DescriptionTitle,\n PopoverFooter,\n StepCounter,\n ButtonGroup,\n} from \"./styles\";\n\nexport { resetWalkthrough };\n\nconst resolveElId = (id) => (typeof id === \"string\" && id.startsWith(\"#\") ? id.slice(1) : id);\n\n// Singleton guard: only one WalkthroughOverlay instance should render at a time.\n// Each instance gets a unique ID on mount. The first instance to mount \"wins\" and\n// all subsequent instances return null until the first one unmounts.\nlet _overlayInstanceCounter = 0;\nlet _activeOverlayId = null;\n\nexport const useWalkthrough = ({\n name,\n storageSuffix = \"\",\n dependsOn = [],\n steps,\n delay = 0,\n onWalkthroughComplete,\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel = \"Next\",\n prevLabel = \"Back\",\n skipLabel = \"Skip\",\n doneLabel = \"Done\",\n containerElement,\n}) => {\n const started = useRef(false);\n const onCompleteRef = useRef(onWalkthroughComplete);\n\n useEffect(() => {\n onCompleteRef.current = onWalkthroughComplete;\n }, [onWalkthroughComplete]);\n\n const start = useCallback(() => {\n if (isDone(storageSuffix, name) || started.current) return;\n started.current = true;\n setGlobalState({\n activeTour: {\n name,\n steps,\n delay,\n currentStep: 0,\n storageSuffix,\n onWalkthroughComplete: onCompleteRef.current,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n },\n });\n }, [\n name,\n steps,\n delay,\n storageSuffix,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n ]);\n\n useEffect(() => {\n const check = () => {\n if (isDone(storageSuffix, name)) return;\n started.current = false;\n if (isAnyDepDone(storageSuffix, dependsOn) && !globalState.activeTour) {\n start();\n }\n };\n\n check();\n\n window.addEventListener(\"walkthrough-done\", check);\n return () => window.removeEventListener(\"walkthrough-done\", check);\n }, [name, storageSuffix, dependsOn, start]);\n\n return { start };\n};\n\nconst calcTransitionMs = (from, to, baseMs) => {\n const dx = (to.left + to.width / 2) - (from.left + from.width / 2);\n const dy = (to.top + to.height / 2) - (from.top + from.height / 2);\n const dist = Math.sqrt(dx * dx + dy * dy);\n const diagonal = Math.sqrt(window.innerWidth ** 2 + window.innerHeight ** 2);\n const ratio = Math.min(dist / diagonal, 1);\n const minMs = baseMs * 0.5;\n return Math.round(minMs + ratio * baseMs);\n};\n\nconst waitForScrollEnd = (container, timeoutMs = 400) => {\n return new Promise((resolve) => {\n let resolved = false;\n let scrollEndTimer = null;\n\n const done = () => {\n if (resolved) return;\n resolved = true;\n container.removeEventListener(\"scroll\", onScroll);\n clearTimeout(fallbackTimer);\n clearTimeout(scrollEndTimer);\n resolve();\n };\n\n const onScroll = () => {\n clearTimeout(scrollEndTimer);\n scrollEndTimer = setTimeout(done, 120);\n };\n\n container.addEventListener(\"scroll\", onScroll);\n\n // Fallback: if no scroll event fires (element already visible), resolve quickly\n const fallbackTimer = setTimeout(done, timeoutMs);\n });\n};\n\nconst useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true) => {\n const [displayRect, setDisplayRect] = useState(null);\n const [isAnimating, setIsAnimating] = useState(false);\n const targetRef = useRef(null);\n const currentRef = useRef(null);\n const rafRef = useRef(null);\n const scrollingRef = useRef(false);\n const cleanupRef = useRef(null);\n\n useEffect(() => {\n let cancelled = false;\n\n if (!step) {\n // If tour ended (not just step transition), clear everything\n if (!isTourActive) {\n setDisplayRect(null);\n targetRef.current = null;\n currentRef.current = null;\n }\n // Otherwise keep last rect visible so overlay doesn't disappear between step transitions\n setIsAnimating(false);\n scrollingRef.current = false;\n return;\n }\n\n const containerEl = containerElement\n ? document.getElementById(resolveElId(containerElement))\n : null;\n\n const computeRect = (el) => {\n const r = el.getBoundingClientRect();\n const padding = step.padding ?? 8;\n // Use viewport-relative coords (no window.scrollY/scrollX) because\n // the overlay is position:fixed. This works correctly for elements\n // inside fixed-position containers (drawers, modals) and also for\n // normal page elements.\n return {\n top: r.top - padding,\n left: r.left - padding,\n width: r.width + padding * 2,\n height: r.height + padding * 2,\n };\n };\n\n const startAnimation = (newTarget) => {\n if (cancelled) return;\n\n targetRef.current = newTarget;\n\n if (!currentRef.current) {\n currentRef.current = newTarget;\n setDisplayRect(newTarget);\n setIsAnimating(false);\n return;\n }\n\n const from = { ...currentRef.current };\n const to = newTarget;\n const duration = calcTransitionMs(from, to, baseMs);\n const startTime = performance.now();\n\n setIsAnimating(true);\n\n const tick = (now) => {\n if (cancelled) return;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = easeOutCubic(progress);\n\n const interpolated = {\n top: lerp(from.top, to.top, eased),\n left: lerp(from.left, to.left, eased),\n width: lerp(from.width, to.width, eased),\n height: lerp(from.height, to.height, eased),\n };\n\n currentRef.current = interpolated;\n setDisplayRect(interpolated);\n\n if (progress < 1) {\n rafRef.current = requestAnimationFrame(tick);\n } else {\n currentRef.current = to;\n setDisplayRect(to);\n setIsAnimating(false);\n }\n };\n\n rafRef.current = requestAnimationFrame(tick);\n };\n\n // Shrink highlight to a tiny point at its center when element is not found.\n // This gives visual feedback that the tour is \"working\" rather than stuck.\n const shrinkHighlight = () => {\n if (!currentRef.current) return;\n const cur = currentRef.current;\n const centerX = cur.left + cur.width / 2;\n const centerY = cur.top + cur.height / 2;\n const shrunkRect = { top: centerY, left: centerX, width: 0, height: 0 };\n startAnimation(shrunkRect);\n };\n\n // Kick off the full flow for a found element: scroll → wait → compute → animate\n const runForElement = (el) => {\n if (cancelled) return;\n\n const compute = () => computeRect(el);\n\n // onLayout only runs AFTER scroll has settled — prevents flicker during scroll\n const onLayout = () => {\n if (scrollingRef.current) return;\n const updated = compute();\n targetRef.current = updated;\n currentRef.current = updated;\n setDisplayRect(updated);\n };\n\n // Mark as animating immediately so popover stays hidden during scroll+animate\n setIsAnimating(true);\n\n // Always use scrollIntoView — browser will scroll all scrollable ancestors\n el.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" });\n\n if (containerEl) {\n scrollingRef.current = true;\n waitForScrollEnd(containerEl, baseMs + 150).then(() => {\n scrollingRef.current = false;\n if (cancelled) return;\n startAnimation(compute());\n });\n } else {\n requestAnimationFrame(() => {\n if (cancelled) return;\n startAnimation(compute());\n });\n }\n\n window.addEventListener(\"resize\", onLayout);\n window.addEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.addEventListener(\"scroll\", onLayout);\n\n // Store cleanup for these listeners\n cleanupRef.current = () => {\n window.removeEventListener(\"resize\", onLayout);\n window.removeEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.removeEventListener(\"scroll\", onLayout);\n };\n };\n\n const el = document.getElementById(resolveElId(step.el));\n\n if (el) {\n // Element found immediately — proceed normally\n runForElement(el);\n } else {\n // Element not found — shrink highlight and wait for it to appear\n setIsAnimating(true);\n shrinkHighlight();\n\n const observer = new MutationObserver(() => {\n const found = document.getElementById(resolveElId(step.el));\n if (found) {\n observer.disconnect();\n if (!cancelled) runForElement(found);\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n cleanupRef.current = () => observer.disconnect();\n }\n\n return () => {\n cancelled = true;\n scrollingRef.current = false;\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n if (cleanupRef.current) cleanupRef.current();\n };\n }, [step, containerElement, isTourActive]);\n\n return { rect: displayRect, isAnimating };\n};\n\nconst clampSize = (value, max) => {\n if (value === \"auto\" || value === undefined) return \"auto\";\n const num = typeof value === \"string\" ? parseInt(value, 10) : value;\n const clamped = Math.min(num, max - 12);\n return clamped;\n};\n\nconst EDGE_MARGIN = 8;\n\nconst computePopoverPosition = (rect, popoverW, popoverH, gap, preferred) => {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const clampLeft = (left) =>\n Math.max(EDGE_MARGIN, Math.min(left, vw - popoverW - EDGE_MARGIN));\n const clampTop = (top) =>\n Math.max(EDGE_MARGIN, Math.min(top, vh - popoverH - EDGE_MARGIN));\n\n const positions = {\n bottom: {\n top: rect.top + rect.height + gap,\n left: clampLeft(rect.left),\n },\n top: {\n top: rect.top - popoverH - gap,\n left: clampLeft(rect.left),\n },\n right: {\n top: clampTop(rect.top),\n left: rect.left + rect.width + gap,\n },\n left: {\n top: clampTop(rect.top),\n left: rect.left - popoverW - gap,\n },\n };\n\n const fitsInViewport = (pos) =>\n pos.top >= EDGE_MARGIN &&\n pos.left >= EDGE_MARGIN &&\n pos.top + popoverH <= vh - EDGE_MARGIN &&\n pos.left + popoverW <= vw - EDGE_MARGIN;\n\n if (preferred && positions[preferred] && fitsInViewport(positions[preferred])) {\n return positions[preferred];\n }\n\n const order = [\"bottom\", \"top\", \"right\", \"left\"];\n for (const dir of order) {\n if (fitsInViewport(positions[dir])) {\n return positions[dir];\n }\n }\n\n const spaceBottom = vh - (rect.top + rect.height + gap);\n const spaceTop = rect.top - gap;\n const spaceRight = vw - (rect.left + rect.width + gap);\n const spaceLeft = rect.left - gap;\n\n const best = [\n { dir: \"bottom\", space: spaceBottom },\n { dir: \"top\", space: spaceTop },\n { dir: \"right\", space: spaceRight },\n { dir: \"left\", space: spaceLeft },\n ].sort((a, b) => b.space - a.space)[0].dir;\n\n const fallback = positions[best];\n return {\n top: Math.max(EDGE_MARGIN, Math.min(fallback.top, vh - popoverH - EDGE_MARGIN)),\n left: Math.max(EDGE_MARGIN, Math.min(fallback.left, vw - popoverW - EDGE_MARGIN)),\n };\n};\n\n// Lazily create & prepend a dedicated container as the FIRST child of <body>.\n// Being first in DOM order means it sits before any Radix / 3rd-party portals,\n// and we stop pointer events from propagating so Radix never sees them.\nconst WT_CONTAINER_ID = \"wt-portal-root\";\nconst getPortalContainer = () => {\n if (typeof document === \"undefined\") return null;\n let container = document.getElementById(WT_CONTAINER_ID);\n if (!container) {\n container = document.createElement(\"div\");\n container.id = WT_CONTAINER_ID;\n container.style.cssText = \"position:absolute;top:0;left:0;z-index:2147483647;pointer-events:none;\";\n // Prepend so it's BEFORE any Radix portals in DOM\n document.body.prepend(container);\n }\n return container;\n};\n\n// Stop pointer / mouse / touch / focus events from bubbling out of the walkthrough\n// so that Radix's capture-phase \"outside click\" detection never fires.\nconst stopOutsideEvents = (e) => e.stopPropagation();\nconst portalEventHandlers = {\n onPointerDown: stopOutsideEvents,\n onPointerUp: stopOutsideEvents,\n onMouseDown: stopOutsideEvents,\n onMouseUp: stopOutsideEvents,\n onTouchStart: stopOutsideEvents,\n onFocusCapture: stopOutsideEvents,\n};\n\nexport const WalkthroughOverlay = ({\n $popoverPadding = 12,\n $popoverBorderRadius = 8,\n $popoverGap = 12,\n $popoverMinWidth = 275,\n $animationSpeed = 350,\n nextColor,\n prevColor,\n skipColor,\n} = {}) => {\n injectKeyframes();\n const { activeTour } = useGlobalState();\n\n // Singleton guard: register this instance on mount, unregister on unmount.\n // The actual guard check is done AFTER all hooks (React rules of hooks).\n const instanceIdRef = useRef(null);\n if (instanceIdRef.current === null) {\n instanceIdRef.current = ++_overlayInstanceCounter;\n }\n\n useEffect(() => {\n const myId = instanceIdRef.current;\n if (_activeOverlayId === null) {\n _activeOverlayId = myId;\n }\n return () => {\n if (_activeOverlayId === myId) {\n _activeOverlayId = null;\n }\n };\n }, []);\n\n const nextBtnRef = useRef(null);\n const popoverRef = useRef(null);\n const [popoverPos, setPopoverPos] = useState(null);\n\n const [validSteps, setValidSteps] = useState([]);\n const waitingForElsRef = useRef(false);\n\n useEffect(() => {\n if (!activeTour) {\n setValidSteps([]);\n waitingForElsRef.current = false;\n return;\n }\n\n waitingForElsRef.current = true;\n\n const compute = () =>\n activeTour.steps\n .map((s, i) => ({ ...s, _originalIdx: i }))\n .filter((s) => document.getElementById(resolveElId(s.el)));\n\n const found = compute();\n\n if (found.length > 0) {\n setValidSteps(found);\n return;\n }\n\n setValidSteps([]);\n\n const observer = new MutationObserver(() => {\n const updated = compute();\n if (updated.length > 0) {\n waitingForElsRef.current = false;\n setValidSteps(updated);\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n waitingForElsRef.current = false;\n };\n }, [activeTour]);\n\n const currentOriginalIdx = activeTour?.currentStep ?? 0;\n const currentValidPos = validSteps.findIndex(\n (s) => s._originalIdx === currentOriginalIdx,\n );\n\n const rawStep = currentValidPos !== -1 ? validSteps[currentValidPos] : null;\n\n // --- Delay logic (tour-level, once per tour) ---\n // Track which tour we already handled delay for, so switching tours always re-evaluates.\n const delayDoneForRef = useRef(null); // name of tour whose delay is done\n const [isDelaying, setIsDelaying] = useState(false);\n\n const currentTourName = activeTour?.name ?? null;\n\n useEffect(() => {\n if (!activeTour) {\n // Tour ended — reset\n delayDoneForRef.current = null;\n setIsDelaying(false);\n return;\n }\n\n // If we already handled delay for THIS tour — nothing to do\n if (delayDoneForRef.current === activeTour.name) return;\n\n const ms = activeTour.delay ?? 0;\n\n if (ms <= 0) {\n delayDoneForRef.current = activeTour.name;\n return;\n }\n\n // Start delaying: show overlay, block UI\n setIsDelaying(true);\n const timer = setTimeout(() => {\n delayDoneForRef.current = activeTour.name;\n setIsDelaying(false);\n }, ms);\n\n return () => clearTimeout(timer);\n }, [currentTourName, activeTour]);\n // --- end delay logic ---\n\n const step = isDelaying ? null : rawStep;\n const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour?.containerElement, !!activeTour);\n\n const completeTour = useCallback(() => {\n if (!activeTour) return;\n const { storageSuffix: sk, name: n, onWalkthroughComplete: cb } = activeTour;\n setGlobalState({ activeTour: null });\n markDone(sk, n);\n if (cb) cb(n);\n }, [activeTour]);\n\n useEffect(() => {\n if (!activeTour) return;\n if (currentValidPos !== -1) return;\n if (waitingForElsRef.current) return;\n\n if (validSteps.length === 0) {\n completeTour();\n return;\n }\n\n const nextValid = validSteps.find(\n (s) => s._originalIdx > currentOriginalIdx,\n );\n\n if (nextValid) {\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextValid._originalIdx },\n }));\n } else {\n completeTour();\n }\n }, [\n activeTour,\n currentValidPos,\n currentOriginalIdx,\n validSteps,\n completeTour,\n ]);\n\n useEffect(() => {\n if (!popoverRef.current || !rect || !step || isAnimating) {\n setPopoverPos(null);\n return;\n }\n\n const targetEl = document.getElementById(resolveElId(step.el));\n if (!targetEl) {\n setPopoverPos(null);\n return;\n }\n\n const targetRect = targetEl.getBoundingClientRect();\n const inViewport =\n targetRect.bottom > 0 &&\n targetRect.top < window.innerHeight &&\n targetRect.right > 0 &&\n targetRect.left < window.innerWidth;\n\n if (!inViewport) {\n setPopoverPos(null);\n return;\n }\n\n const measured = popoverRef.current.getBoundingClientRect();\n const pos = computePopoverPosition(\n rect,\n measured.width,\n measured.height,\n $popoverGap,\n step.position,\n );\n setPopoverPos(pos);\n }, [rect, step, $popoverGap, isAnimating]);\n\n useEffect(() => {\n if (nextBtnRef.current) {\n nextBtnRef.current.focus();\n }\n }, [activeTour?.currentStep, popoverPos]);\n\n const [contentKey, setContentKey] = useState(0);\n const prevStepRef = useRef(null);\n\n useEffect(() => {\n const idx = activeTour?.currentStep ?? null;\n if (idx !== prevStepRef.current) {\n setContentKey((k) => k + 1);\n prevStepRef.current = idx;\n }\n }, [activeTour?.currentStep]);\n\n if (!activeTour) return null;\n\n // Singleton guard: if another instance already claimed the active slot, this one does nothing.\n // This check is placed after all hooks to comply with React rules of hooks.\n if (_activeOverlayId !== null && _activeOverlayId !== instanceIdRef.current) {\n return null;\n }\n\n // During delay: show overlay only (no highlight, no popover)\n if (isDelaying) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n // If no step and no rect at all, hide everything\n if (!step && !rect) return null;\n\n // If step is loading but we have a previous rect, keep overlay visible with last highlight\n // This prevents the overlay from disappearing during step transitions\n if (!step || !rect) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n {rect ? (\n <>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={10}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </>\n ) : (\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n )}\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n const totalSteps = validSteps.length;\n const isLast = currentValidPos === totalSteps - 1;\n const borderRadius = step.borderRadius ?? 10;\n\n const {\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel: tourNextLabel = \"Next\",\n prevLabel: tourPrevLabel = \"Back\",\n skipLabel: tourSkipLabel = \"Skip\",\n doneLabel = \"Done\",\n } = activeTour;\n\n const nextLabel = step.nextLabel ?? tourNextLabel;\n const prevLabel = step.prevLabel ?? tourPrevLabel;\n const skipLabel = step.skipLabel ?? tourSkipLabel;\n\n const next = () => {\n if (step.isTriggerEl) {\n const el = document.getElementById(resolveElId(step.el));\n if (el) el.click();\n }\n\n if (isLast) {\n completeTour();\n } else {\n const nextStep = validSteps[currentValidPos + 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextStep._originalIdx },\n }));\n }\n };\n\n const prev = () => {\n if (currentValidPos > 0) {\n const prevStep = validSteps[currentValidPos - 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: prevStep._originalIdx },\n }));\n }\n };\n\n const skip = () => {\n completeTour();\n };\n\n const popoverWidth = clampSize(step.width, window.innerWidth);\n const popoverHeight = step.height\n ? clampSize(step.height, window.innerHeight)\n : undefined;\n\n const popoverReady = popoverPos && !isAnimating;\n const popoverStyle = popoverReady\n ? {\n top: popoverPos.top,\n left: popoverPos.left,\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n }\n : {\n position: \"fixed\",\n top: -9999,\n left: -9999,\n opacity: 0,\n pointerEvents: \"none\",\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n animation: \"none\",\n };\n\n const overlay = (\n <>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={borderRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </svg>\n </OverlayWrapper>\n\n <PopoverContainer ref={popoverRef} style={popoverStyle}>\n <PopoverBody key={contentKey}>\n <div style={{display: \"flex\",flexDirection: \"row\", justifyContent: \"space-between\"}}>\n {step.title ? <PopoverTitle>{step.title}</PopoverTitle>:''}\n {(step.isShowStep ?? isShowStep) && (\n <span style={{color: \"#a1a1aa\" ,fontSize: \"12px\", fontWeight: \"400\"}}>{currentValidPos + 1}/{totalSteps}</span>\n )}\n </div>\n <DescriptionScrollArea $height={popoverHeight}>\n {Array.isArray(step.description) &&\n step.description.map((d, i) => (\n <DescriptionBlock key={i} $direction={d.direction}>\n {d.title && <DescriptionTitle>{d.title}: </DescriptionTitle>}\n <span style={{ whiteSpace: \"pre-line\" }}>{d.description}</span>\n </DescriptionBlock>\n ))}\n </DescriptionScrollArea>\n </PopoverBody>\n\n <PopoverFooter>\n <StepCounter>\n {isShowSkip && (\n <button\n className=\"wt-btn\"\n style={{ background: skipColor || \"transparent\", color: skipColor ? \"#fff\" : \"#a1a1aa\" }}\n onClick={skip}\n >\n {skipLabel}\n </button>\n )}\n </StepCounter>\n\n <ButtonGroup>\n {(step.isShowPrev ?? isShowPrev) && currentValidPos > 0 && (\n <button\n className=\"wt-btn\"\n style={{ background: prevColor || \"#f4f4f5\", color: prevColor ? \"#fff\" : \"#3f3f46\" }}\n onClick={prev}\n >\n {prevLabel}\n </button>\n )}\n <button\n ref={nextBtnRef}\n className=\"wt-btn wt-btn-next\"\n style={{ background: nextColor || \"#000\", color: \"#fff\", boxShadow: \"0 2px 8px rgba(0,0,0,0.3)\" }}\n onClick={next}\n >\n {isLast ? doneLabel : nextLabel}\n </button>\n </ButtonGroup>\n </PopoverFooter>\n </PopoverContainer>\n </>\n );\n\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n {overlay}\n </div>,\n getPortalContainer(),\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/index.js","../src/styles/index.js","../src/WalkthroughOverlay.js"],"names":["useState","useEffect","forwardRef","jsx","useRef","useCallback","el","_a","createPortal","jsxs","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { useState, useEffect } from \"react\";\n\nconst listeners = new Set();\nlet globalState = {\n activeTour: null,\n lastRect: null,\n};\n\nconst notify = () => {\n listeners.forEach((fn) => fn({ ...globalState }));\n};\n\nconst setGlobalState = (updater) => {\n globalState =\n typeof updater === \"function\"\n ? updater(globalState)\n : { ...globalState, ...updater };\n notify();\n};\n\nconst useGlobalState = () => {\n const [state, setState] = useState(globalState);\n useEffect(() => {\n const handler = (s) => setState(s);\n listeners.add(handler);\n return () => listeners.delete(handler);\n }, []);\n return state;\n};\n\nconst getStorageKey = (storageSuffix) => {\n return storageSuffix ? `walkthrough-done:${storageSuffix}` : \"walkthrough-done\";\n};\n\nconst getStorageData = (storageSuffix) => {\n try {\n return JSON.parse(localStorage.getItem(getStorageKey(storageSuffix)) || \"{}\");\n } catch {\n return {};\n }\n};\n\nconst markDone = (storageSuffix, name) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n data[name] = true;\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst isDone = (storageSuffix, name) => {\n const data = getStorageData(storageSuffix);\n return data[name] === true;\n};\n\nconst isAnyDepDone = (storageSuffix, deps) => {\n if (!deps || deps.length === 0) return true;\n return deps.some((d) => isDone(storageSuffix, d));\n};\n\nconst resetWalkthrough = ({ storageSuffix = \"\", walkthroughList = [] } = {}) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n walkthroughList.forEach((n) => {\n delete data[n];\n });\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst easeOutCubic = (t) => {\n return 1 - Math.pow(1 - t, 3);\n};\n\nconst lerp = (a, b, t) => {\n return a + (b - a) * t;\n};\n\nexport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n};\n","import React, { forwardRef } from \"react\";\n\nconst STYLE_ID = \"wt-keyframes\";\n\nexport const injectKeyframes = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n @keyframes wt-pop-in {\n from { opacity: 0; transform: translateY(10px) scale(0.96); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes wt-fade-slide-in {\n from { opacity: 0; transform: translateX(12px); }\n to { opacity: 1; transform: translateX(0); }\n }\n .wt-overlay-wrap svg { display: block; width: 100%; height: 100%; }\n .wt-btn { border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.15s ease; outline: none; font-family: inherit; }\n .wt-btn:hover { opacity: 0.85; }\n .wt-btn-next:hover { box-shadow: 0 4px 12px rgba(79,70,229,0.4); transform: translateY(-1px); }\n .wt-btn-next:active { transform: translateY(0); }\n `;\n document.head.appendChild(style);\n};\n\nexport const OverlayWrapper = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} className=\"wt-overlay-wrap\" style={{\n position: \"fixed\", inset: 0, zIndex: 10001,\n pointerEvents: \"none\", width: \"100vw\", height: \"100vh\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const ClickLayer = forwardRef(({ style, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", inset: 0, zIndex: 10000, cursor: \"default\", ...style,\n }} {...props} />\n));\n\nexport const PopoverContainer = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", zIndex: 99999, background: \"#fff\",\n boxShadow: \"0 12px 40px rgba(0,0,0,0.18), 0 2px 10px rgba(0,0,0,0.06)\",\n animation: \"wt-pop-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1)\",\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverBody = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n animation: \"wt-fade-slide-in 0.3s ease-out\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverTitle = forwardRef(({ style, children, ...props }, ref) => (\n <h3 ref={ref} style={{\n fontSize: 15, fontWeight: 700, color: \"#1a1a2e\",\n margin: \"0 0 10px\", lineHeight: 1.3, whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</h3>\n));\n\nexport const DescriptionScrollArea = forwardRef(({ $height, style, children, ...props }, ref) => {\n const extra = $height && $height !== \"auto\" ? {\n maxHeight: typeof $height === \"number\" ? $height : $height,\n overflowY: \"auto\",\n } : {};\n return <div ref={ref} style={{ ...extra, ...style }} {...props}>{children}</div>;\n});\n\nexport const DescriptionBlock = forwardRef(({ $direction = \"row\", style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", flexDirection: $direction,\n fontSize: 13, color: \"#666\", lineHeight: 1.6, margin: \"0 0 4px\",\n ...($direction === \"column\" ? { gap: 2 } : { alignItems: \"baseline\", gap: 4 }),\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const DescriptionTitle = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontWeight: 600, color: \"#333\", whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</span>\n));\n\nexport const PopoverFooter = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n marginTop: 16, gap: 8, ...style,\n }} {...props}>{children}</div>\n));\n\nexport const StepCounter = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontSize: 13, fontWeight: 600, color: \"#a1a1aa\", ...style,\n }} {...props}>{children}</span>\n));\n\n\nexport const ButtonGroup = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{ display: \"flex\", gap: 6, ...style }} {...props}>{children}</div>\n));\n\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n} from \"./utils\";\n\nimport {\n injectKeyframes,\n OverlayWrapper,\n ClickLayer,\n PopoverContainer,\n PopoverBody,\n PopoverTitle,\n DescriptionScrollArea,\n DescriptionBlock,\n DescriptionTitle,\n PopoverFooter,\n StepCounter,\n ButtonGroup,\n} from \"./styles\";\n\nexport { resetWalkthrough };\n\nconst resolveElId = (id) => (typeof id === \"string\" && id.startsWith(\"#\") ? id.slice(1) : id);\n\n// Singleton guard: only one WalkthroughOverlay instance should render at a time.\n// Each instance gets a unique ID on mount. The first instance to mount \"wins\" and\n// all subsequent instances return null until the first one unmounts.\nlet _overlayInstanceCounter = 0;\nlet _activeOverlayId = null;\n\nexport const useWalkthrough = ({\n name,\n storageSuffix = \"\",\n dependsOn = [],\n steps,\n delay = 0,\n onWalkthroughComplete,\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel = \"Next\",\n prevLabel = \"Back\",\n skipLabel = \"Skip\",\n doneLabel = \"Done\",\n containerElement,\n}) => {\n const started = useRef(false);\n const onCompleteRef = useRef(onWalkthroughComplete);\n\n useEffect(() => {\n onCompleteRef.current = onWalkthroughComplete;\n }, [onWalkthroughComplete]);\n\n const start = useCallback(() => {\n if (isDone(storageSuffix, name) || started.current) return;\n started.current = true;\n setGlobalState({\n activeTour: {\n name,\n steps,\n delay,\n currentStep: 0,\n storageSuffix,\n onWalkthroughComplete: onCompleteRef.current,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n },\n });\n }, [\n name,\n steps,\n delay,\n storageSuffix,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n ]);\n\n useEffect(() => {\n const check = () => {\n if (isDone(storageSuffix, name)) return;\n started.current = false;\n if (isAnyDepDone(storageSuffix, dependsOn) && !globalState.activeTour) {\n start();\n }\n };\n\n check();\n\n window.addEventListener(\"walkthrough-done\", check);\n return () => window.removeEventListener(\"walkthrough-done\", check);\n }, [name, storageSuffix, dependsOn, start]);\n\n return { start };\n};\n\nconst calcTransitionMs = (from, to, baseMs) => {\n const dx = (to.left + to.width / 2) - (from.left + from.width / 2);\n const dy = (to.top + to.height / 2) - (from.top + from.height / 2);\n const dist = Math.sqrt(dx * dx + dy * dy);\n const diagonal = Math.sqrt(window.innerWidth ** 2 + window.innerHeight ** 2);\n const ratio = Math.min(dist / diagonal, 1);\n const minMs = baseMs * 0.5;\n return Math.round(minMs + ratio * baseMs);\n};\n\nconst waitForScrollEnd = (container, timeoutMs = 400) => {\n return new Promise((resolve) => {\n let resolved = false;\n let scrollEndTimer = null;\n\n const done = () => {\n if (resolved) return;\n resolved = true;\n container.removeEventListener(\"scroll\", onScroll);\n clearTimeout(fallbackTimer);\n clearTimeout(scrollEndTimer);\n resolve();\n };\n\n const onScroll = () => {\n clearTimeout(scrollEndTimer);\n scrollEndTimer = setTimeout(done, 120);\n };\n\n container.addEventListener(\"scroll\", onScroll);\n\n // Fallback: if no scroll event fires (element already visible), resolve quickly\n const fallbackTimer = setTimeout(done, timeoutMs);\n });\n};\n\nconst useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true, tourName = null) => {\n const [displayRect, setDisplayRect] = useState(null);\n const [isAnimating, setIsAnimating] = useState(false);\n const targetRef = useRef(null);\n const currentRef = useRef(null);\n const rafRef = useRef(null);\n const scrollingRef = useRef(false);\n const cleanupRef = useRef(null);\n const prevTourNameRef = useRef(null);\n\n useEffect(() => {\n let cancelled = false;\n\n // Detect tour change: when tourName changes, seed currentRef from lastRect\n // so the highlight animates FROM the previous tour's last position.\n // This handles the case where dependsOn tours chain synchronously\n // (activeTour never becomes null between tours in the same render batch).\n if (tourName && tourName !== prevTourNameRef.current) {\n const savedRect = globalState.lastRect;\n if (savedRect && prevTourNameRef.current !== null) {\n // Only seed from lastRect when transitioning between tours (not on first mount)\n currentRef.current = { ...savedRect };\n // Clear display so highlight doesn't linger at old position during delay\n setDisplayRect(null);\n targetRef.current = null;\n }\n prevTourNameRef.current = tourName;\n }\n\n if (!step) {\n if (!isTourActive) {\n setDisplayRect(null);\n targetRef.current = null;\n currentRef.current = null;\n }\n // Otherwise keep last rect visible so overlay doesn't disappear between step transitions\n setIsAnimating(false);\n scrollingRef.current = false;\n return;\n }\n\n // If we have no starting position yet (first tour ever), try to pick up lastRect.\n if (!currentRef.current) {\n const savedRect = globalState.lastRect;\n if (savedRect) {\n currentRef.current = { ...savedRect };\n }\n }\n\n const containerEl = containerElement\n ? document.getElementById(resolveElId(containerElement))\n : null;\n\n const computeRect = (el) => {\n const r = el.getBoundingClientRect();\n const padding = step.padding ?? 8;\n // Use viewport-relative coords (no window.scrollY/scrollX) because\n // the overlay is position:fixed. This works correctly for elements\n // inside fixed-position containers (drawers, modals) and also for\n // normal page elements.\n return {\n top: r.top - padding,\n left: r.left - padding,\n width: r.width + padding * 2,\n height: r.height + padding * 2,\n };\n };\n\n const startAnimation = (newTarget) => {\n if (cancelled) return;\n\n targetRef.current = newTarget;\n\n if (!currentRef.current) {\n currentRef.current = newTarget;\n setDisplayRect(newTarget);\n setIsAnimating(false);\n return;\n }\n\n const from = { ...currentRef.current };\n const to = newTarget;\n const duration = calcTransitionMs(from, to, baseMs);\n const startTime = performance.now();\n\n setIsAnimating(true);\n\n const tick = (now) => {\n if (cancelled) return;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = easeOutCubic(progress);\n\n const interpolated = {\n top: lerp(from.top, to.top, eased),\n left: lerp(from.left, to.left, eased),\n width: lerp(from.width, to.width, eased),\n height: lerp(from.height, to.height, eased),\n };\n\n currentRef.current = interpolated;\n setDisplayRect(interpolated);\n\n if (progress < 1) {\n rafRef.current = requestAnimationFrame(tick);\n } else {\n currentRef.current = to;\n setDisplayRect(to);\n setIsAnimating(false);\n }\n };\n\n rafRef.current = requestAnimationFrame(tick);\n };\n\n // Shrink highlight to a tiny point at its center when element is not found.\n // This gives visual feedback that the tour is \"working\" rather than stuck.\n const shrinkHighlight = () => {\n if (!currentRef.current) return;\n const cur = currentRef.current;\n const centerX = cur.left + cur.width / 2;\n const centerY = cur.top + cur.height / 2;\n const shrunkRect = { top: centerY, left: centerX, width: 0, height: 0 };\n startAnimation(shrunkRect);\n };\n\n // Kick off the full flow for a found element: scroll → wait → compute → animate\n const runForElement = (el) => {\n if (cancelled) return;\n\n const compute = () => computeRect(el);\n\n // onLayout only runs AFTER scroll has settled — prevents flicker during scroll\n const onLayout = () => {\n if (scrollingRef.current) return;\n const updated = compute();\n targetRef.current = updated;\n currentRef.current = updated;\n setDisplayRect(updated);\n };\n\n // Mark as animating immediately so popover stays hidden during scroll+animate\n setIsAnimating(true);\n\n // Always use scrollIntoView — browser will scroll all scrollable ancestors\n el.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" });\n\n if (containerEl) {\n scrollingRef.current = true;\n waitForScrollEnd(containerEl, baseMs + 150).then(() => {\n scrollingRef.current = false;\n if (cancelled) return;\n startAnimation(compute());\n });\n } else {\n requestAnimationFrame(() => {\n if (cancelled) return;\n startAnimation(compute());\n });\n }\n\n window.addEventListener(\"resize\", onLayout);\n window.addEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.addEventListener(\"scroll\", onLayout);\n\n // Store cleanup for these listeners\n cleanupRef.current = () => {\n window.removeEventListener(\"resize\", onLayout);\n window.removeEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.removeEventListener(\"scroll\", onLayout);\n };\n };\n\n const el = document.getElementById(resolveElId(step.el));\n\n if (el) {\n // Element found immediately — proceed normally\n runForElement(el);\n } else {\n // Element not found — shrink highlight and wait for it to appear\n setIsAnimating(true);\n shrinkHighlight();\n\n const observer = new MutationObserver(() => {\n const found = document.getElementById(resolveElId(step.el));\n if (found) {\n observer.disconnect();\n if (!cancelled) runForElement(found);\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n cleanupRef.current = () => observer.disconnect();\n }\n\n return () => {\n cancelled = true;\n scrollingRef.current = false;\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n if (cleanupRef.current) cleanupRef.current();\n };\n }, [step, containerElement, isTourActive, tourName]);\n\n return { rect: displayRect, isAnimating };\n};\n\nconst clampSize = (value, max) => {\n if (value === \"auto\" || value === undefined) return \"auto\";\n const num = typeof value === \"string\" ? parseInt(value, 10) : value;\n const clamped = Math.min(num, max - 12);\n return clamped;\n};\n\nconst EDGE_MARGIN = 8;\n\nconst computePopoverPosition = (rect, popoverW, popoverH, gap, preferred) => {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const clampLeft = (left) =>\n Math.max(EDGE_MARGIN, Math.min(left, vw - popoverW - EDGE_MARGIN));\n const clampTop = (top) =>\n Math.max(EDGE_MARGIN, Math.min(top, vh - popoverH - EDGE_MARGIN));\n\n const positions = {\n bottom: {\n top: rect.top + rect.height + gap,\n left: clampLeft(rect.left),\n },\n top: {\n top: rect.top - popoverH - gap,\n left: clampLeft(rect.left),\n },\n right: {\n top: clampTop(rect.top),\n left: rect.left + rect.width + gap,\n },\n left: {\n top: clampTop(rect.top),\n left: rect.left - popoverW - gap,\n },\n };\n\n const fitsInViewport = (pos) =>\n pos.top >= EDGE_MARGIN &&\n pos.left >= EDGE_MARGIN &&\n pos.top + popoverH <= vh - EDGE_MARGIN &&\n pos.left + popoverW <= vw - EDGE_MARGIN;\n\n if (preferred && positions[preferred] && fitsInViewport(positions[preferred])) {\n return positions[preferred];\n }\n\n const order = [\"bottom\", \"top\", \"right\", \"left\"];\n for (const dir of order) {\n if (fitsInViewport(positions[dir])) {\n return positions[dir];\n }\n }\n\n const spaceBottom = vh - (rect.top + rect.height + gap);\n const spaceTop = rect.top - gap;\n const spaceRight = vw - (rect.left + rect.width + gap);\n const spaceLeft = rect.left - gap;\n\n const best = [\n { dir: \"bottom\", space: spaceBottom },\n { dir: \"top\", space: spaceTop },\n { dir: \"right\", space: spaceRight },\n { dir: \"left\", space: spaceLeft },\n ].sort((a, b) => b.space - a.space)[0].dir;\n\n const fallback = positions[best];\n return {\n top: Math.max(EDGE_MARGIN, Math.min(fallback.top, vh - popoverH - EDGE_MARGIN)),\n left: Math.max(EDGE_MARGIN, Math.min(fallback.left, vw - popoverW - EDGE_MARGIN)),\n };\n};\n\n// Lazily create & prepend a dedicated container as the FIRST child of <body>.\n// Being first in DOM order means it sits before any Radix / 3rd-party portals,\n// and we stop pointer events from propagating so Radix never sees them.\nconst WT_CONTAINER_ID = \"wt-portal-root\";\nconst getPortalContainer = () => {\n if (typeof document === \"undefined\") return null;\n let container = document.getElementById(WT_CONTAINER_ID);\n if (!container) {\n container = document.createElement(\"div\");\n container.id = WT_CONTAINER_ID;\n container.style.cssText = \"position:absolute;top:0;left:0;z-index:2147483647;pointer-events:none;\";\n // Prepend so it's BEFORE any Radix portals in DOM\n document.body.prepend(container);\n }\n return container;\n};\n\n// Stop pointer / mouse / touch / focus events from bubbling out of the walkthrough\n// so that Radix's capture-phase \"outside click\" detection never fires.\nconst stopOutsideEvents = (e) => e.stopPropagation();\nconst portalEventHandlers = {\n onPointerDown: stopOutsideEvents,\n onPointerUp: stopOutsideEvents,\n onMouseDown: stopOutsideEvents,\n onMouseUp: stopOutsideEvents,\n onTouchStart: stopOutsideEvents,\n onFocusCapture: stopOutsideEvents,\n};\n\nexport const WalkthroughOverlay = ({\n $popoverPadding = 12,\n $popoverBorderRadius = 8,\n $popoverGap = 12,\n $popoverMinWidth = 275,\n $animationSpeed = 350,\n nextColor,\n prevColor,\n skipColor,\n} = {}) => {\n injectKeyframes();\n const { activeTour } = useGlobalState();\n\n // Singleton guard: register this instance on mount, unregister on unmount.\n // The actual guard check is done AFTER all hooks (React rules of hooks).\n const instanceIdRef = useRef(null);\n if (instanceIdRef.current === null) {\n instanceIdRef.current = ++_overlayInstanceCounter;\n }\n\n useEffect(() => {\n const myId = instanceIdRef.current;\n if (_activeOverlayId === null) {\n _activeOverlayId = myId;\n }\n return () => {\n if (_activeOverlayId === myId) {\n _activeOverlayId = null;\n }\n };\n }, []);\n\n const nextBtnRef = useRef(null);\n const popoverRef = useRef(null);\n const [popoverPos, setPopoverPos] = useState(null);\n\n const [validSteps, setValidSteps] = useState([]);\n const waitingForElsRef = useRef(false);\n\n useEffect(() => {\n if (!activeTour) {\n setValidSteps([]);\n waitingForElsRef.current = false;\n return;\n }\n\n waitingForElsRef.current = true;\n\n const compute = () =>\n activeTour.steps\n .map((s, i) => ({ ...s, _originalIdx: i }))\n .filter((s) => document.getElementById(resolveElId(s.el)));\n\n const found = compute();\n\n if (found.length > 0) {\n setValidSteps(found);\n return;\n }\n\n setValidSteps([]);\n\n const observer = new MutationObserver(() => {\n const updated = compute();\n if (updated.length > 0) {\n waitingForElsRef.current = false;\n setValidSteps(updated);\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n waitingForElsRef.current = false;\n };\n }, [activeTour]);\n\n const currentOriginalIdx = activeTour?.currentStep ?? 0;\n const currentValidPos = validSteps.findIndex(\n (s) => s._originalIdx === currentOriginalIdx,\n );\n\n const rawStep = currentValidPos !== -1 ? validSteps[currentValidPos] : null;\n\n // --- Delay logic (tour-level, once per tour) ---\n // Track which tour we already handled delay for, so switching tours always re-evaluates.\n const delayDoneForRef = useRef(null); // name of tour whose delay is done\n const [isDelaying, setIsDelaying] = useState(false);\n\n const currentTourName = activeTour?.name ?? null;\n\n useEffect(() => {\n if (!activeTour) {\n // Tour ended — reset\n delayDoneForRef.current = null;\n setIsDelaying(false);\n return;\n }\n\n // If we already handled delay for THIS tour — nothing to do\n if (delayDoneForRef.current === activeTour.name) return;\n\n const ms = activeTour.delay ?? 0;\n\n if (ms <= 0) {\n delayDoneForRef.current = activeTour.name;\n return;\n }\n\n // Start delaying: show overlay, block UI\n setIsDelaying(true);\n const timer = setTimeout(() => {\n delayDoneForRef.current = activeTour.name;\n setIsDelaying(false);\n }, ms);\n\n return () => clearTimeout(timer);\n }, [currentTourName, activeTour]);\n // --- end delay logic ---\n\n const step = isDelaying ? null : rawStep;\n const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour?.containerElement, !!activeTour, activeTour?.name);\n\n const completeTour = useCallback(() => {\n if (!activeTour) return;\n const { storageSuffix: sk, name: n, onWalkthroughComplete: cb } = activeTour;\n // Save last highlight position so the next tour can animate FROM this point\n setGlobalState({ activeTour: null, lastRect: rect ? { ...rect } : null });\n markDone(sk, n);\n if (cb) cb(n);\n }, [activeTour, rect]);\n\n useEffect(() => {\n if (!activeTour) return;\n if (currentValidPos !== -1) return;\n if (waitingForElsRef.current) return;\n\n if (validSteps.length === 0) {\n completeTour();\n return;\n }\n\n const nextValid = validSteps.find(\n (s) => s._originalIdx > currentOriginalIdx,\n );\n\n if (nextValid) {\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextValid._originalIdx },\n }));\n } else {\n completeTour();\n }\n }, [\n activeTour,\n currentValidPos,\n currentOriginalIdx,\n validSteps,\n completeTour,\n ]);\n\n useEffect(() => {\n if (!popoverRef.current || !rect || !step || isAnimating) {\n setPopoverPos(null);\n return;\n }\n\n const targetEl = document.getElementById(resolveElId(step.el));\n if (!targetEl) {\n setPopoverPos(null);\n return;\n }\n\n const targetRect = targetEl.getBoundingClientRect();\n const inViewport =\n targetRect.bottom > 0 &&\n targetRect.top < window.innerHeight &&\n targetRect.right > 0 &&\n targetRect.left < window.innerWidth;\n\n if (!inViewport) {\n setPopoverPos(null);\n return;\n }\n\n const measured = popoverRef.current.getBoundingClientRect();\n const pos = computePopoverPosition(\n rect,\n measured.width,\n measured.height,\n $popoverGap,\n step.position,\n );\n setPopoverPos(pos);\n }, [rect, step, $popoverGap, isAnimating]);\n\n useEffect(() => {\n if (nextBtnRef.current) {\n nextBtnRef.current.focus();\n }\n }, [activeTour?.currentStep, popoverPos]);\n\n const [contentKey, setContentKey] = useState(0);\n const prevStepRef = useRef(null);\n\n useEffect(() => {\n const idx = activeTour?.currentStep ?? null;\n if (idx !== prevStepRef.current) {\n setContentKey((k) => k + 1);\n prevStepRef.current = idx;\n }\n }, [activeTour?.currentStep]);\n\n if (!activeTour) return null;\n\n // Singleton guard: if another instance already claimed the active slot, this one does nothing.\n // This check is placed after all hooks to comply with React rules of hooks.\n if (_activeOverlayId !== null && _activeOverlayId !== instanceIdRef.current) {\n return null;\n }\n\n // During delay: show overlay only (no highlight, no popover)\n if (isDelaying) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n // If no step and no rect at all, hide everything\n if (!step && !rect) return null;\n\n // If step is loading but we have a previous rect, keep overlay visible with last highlight\n // This prevents the overlay from disappearing during step transitions\n if (!step || !rect) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n {rect ? (\n <>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={10}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </>\n ) : (\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n )}\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n const totalSteps = validSteps.length;\n const isLast = currentValidPos === totalSteps - 1;\n const borderRadius = step.borderRadius ?? 10;\n\n const {\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel: tourNextLabel = \"Next\",\n prevLabel: tourPrevLabel = \"Back\",\n skipLabel: tourSkipLabel = \"Skip\",\n doneLabel = \"Done\",\n } = activeTour;\n\n const nextLabel = step.nextLabel ?? tourNextLabel;\n const prevLabel = step.prevLabel ?? tourPrevLabel;\n const skipLabel = step.skipLabel ?? tourSkipLabel;\n\n const next = () => {\n if (step.isTriggerEl) {\n const el = document.getElementById(resolveElId(step.el));\n if (el) el.click();\n }\n\n if (isLast) {\n completeTour();\n } else {\n const nextStep = validSteps[currentValidPos + 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextStep._originalIdx },\n }));\n }\n };\n\n const prev = () => {\n if (currentValidPos > 0) {\n const prevStep = validSteps[currentValidPos - 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: prevStep._originalIdx },\n }));\n }\n };\n\n const skip = () => {\n completeTour();\n };\n\n const popoverWidth = clampSize(step.width, window.innerWidth);\n const popoverHeight = step.height\n ? clampSize(step.height, window.innerHeight)\n : undefined;\n\n const popoverReady = popoverPos && !isAnimating;\n const popoverStyle = popoverReady\n ? {\n top: popoverPos.top,\n left: popoverPos.left,\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n }\n : {\n position: \"fixed\",\n top: -9999,\n left: -9999,\n opacity: 0,\n pointerEvents: \"none\",\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n animation: \"none\",\n };\n\n const overlay = (\n <>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={borderRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </svg>\n </OverlayWrapper>\n\n <PopoverContainer ref={popoverRef} style={popoverStyle}>\n <PopoverBody key={contentKey}>\n <div style={{display: \"flex\",flexDirection: \"row\", justifyContent: \"space-between\"}}>\n {step.title ? <PopoverTitle>{step.title}</PopoverTitle>:''}\n {(step.isShowStep ?? isShowStep) && (\n <span style={{color: \"#a1a1aa\" ,fontSize: \"12px\", fontWeight: \"400\"}}>{currentValidPos + 1}/{totalSteps}</span>\n )}\n </div>\n <DescriptionScrollArea $height={popoverHeight}>\n {Array.isArray(step.description) &&\n step.description.map((d, i) => (\n <DescriptionBlock key={i} $direction={d.direction}>\n {d.title && <DescriptionTitle>{d.title}: </DescriptionTitle>}\n <span style={{ whiteSpace: \"pre-line\" }}>{d.description}</span>\n </DescriptionBlock>\n ))}\n </DescriptionScrollArea>\n </PopoverBody>\n\n <PopoverFooter>\n <StepCounter>\n {isShowSkip && (\n <button\n className=\"wt-btn\"\n style={{ background: skipColor || \"transparent\", color: skipColor ? \"#fff\" : \"#a1a1aa\" }}\n onClick={skip}\n >\n {skipLabel}\n </button>\n )}\n </StepCounter>\n\n <ButtonGroup>\n {(step.isShowPrev ?? isShowPrev) && currentValidPos > 0 && (\n <button\n className=\"wt-btn\"\n style={{ background: prevColor || \"#f4f4f5\", color: prevColor ? \"#fff\" : \"#3f3f46\" }}\n onClick={prev}\n >\n {prevLabel}\n </button>\n )}\n <button\n ref={nextBtnRef}\n className=\"wt-btn wt-btn-next\"\n style={{ background: nextColor || \"#000\", color: \"#fff\", boxShadow: \"0 2px 8px rgba(0,0,0,0.3)\" }}\n onClick={next}\n >\n {isLast ? doneLabel : nextLabel}\n </button>\n </ButtonGroup>\n </PopoverFooter>\n </PopoverContainer>\n </>\n );\n\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n {overlay}\n </div>,\n getPortalContainer(),\n );\n};\n"]}
package/dist/index.mjs CHANGED
@@ -5,7 +5,8 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  // src/WalkthroughOverlay.js
6
6
  var listeners = /* @__PURE__ */ new Set();
7
7
  var globalState = {
8
- activeTour: null
8
+ activeTour: null,
9
+ lastRect: null
9
10
  };
10
11
  var notify = () => {
11
12
  listeners.forEach((fn) => fn({ ...globalState }));
@@ -263,7 +264,7 @@ var waitForScrollEnd = (container, timeoutMs = 400) => {
263
264
  const fallbackTimer = setTimeout(done, timeoutMs);
264
265
  });
265
266
  };
266
- var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true) => {
267
+ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true, tourName = null) => {
267
268
  const [displayRect, setDisplayRect] = useState(null);
268
269
  const [isAnimating, setIsAnimating] = useState(false);
269
270
  const targetRef = useRef(null);
@@ -271,8 +272,18 @@ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true
271
272
  const rafRef = useRef(null);
272
273
  const scrollingRef = useRef(false);
273
274
  const cleanupRef = useRef(null);
275
+ const prevTourNameRef = useRef(null);
274
276
  useEffect(() => {
275
277
  let cancelled = false;
278
+ if (tourName && tourName !== prevTourNameRef.current) {
279
+ const savedRect = globalState.lastRect;
280
+ if (savedRect && prevTourNameRef.current !== null) {
281
+ currentRef.current = { ...savedRect };
282
+ setDisplayRect(null);
283
+ targetRef.current = null;
284
+ }
285
+ prevTourNameRef.current = tourName;
286
+ }
276
287
  if (!step) {
277
288
  if (!isTourActive) {
278
289
  setDisplayRect(null);
@@ -283,6 +294,12 @@ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true
283
294
  scrollingRef.current = false;
284
295
  return;
285
296
  }
297
+ if (!currentRef.current) {
298
+ const savedRect = globalState.lastRect;
299
+ if (savedRect) {
300
+ currentRef.current = { ...savedRect };
301
+ }
302
+ }
286
303
  const containerEl = containerElement ? document.getElementById(resolveElId(containerElement)) : null;
287
304
  const computeRect = (el2) => {
288
305
  var _a;
@@ -396,7 +413,7 @@ var useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true
396
413
  if (rafRef.current) cancelAnimationFrame(rafRef.current);
397
414
  if (cleanupRef.current) cleanupRef.current();
398
415
  };
399
- }, [step, containerElement, isTourActive]);
416
+ }, [step, containerElement, isTourActive, tourName]);
400
417
  return { rect: displayRect, isAnimating };
401
418
  };
402
419
  var clampSize = (value, max) => {
@@ -566,14 +583,14 @@ var WalkthroughOverlay = ({
566
583
  return () => clearTimeout(timer);
567
584
  }, [currentTourName, activeTour]);
568
585
  const step = isDelaying ? null : rawStep;
569
- const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour == null ? void 0 : activeTour.containerElement, !!activeTour);
586
+ const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour == null ? void 0 : activeTour.containerElement, !!activeTour, activeTour == null ? void 0 : activeTour.name);
570
587
  const completeTour = useCallback(() => {
571
588
  if (!activeTour) return;
572
589
  const { storageSuffix: sk, name: n, onWalkthroughComplete: cb } = activeTour;
573
- setGlobalState({ activeTour: null });
590
+ setGlobalState({ activeTour: null, lastRect: rect ? { ...rect } : null });
574
591
  markDone(sk, n);
575
592
  if (cb) cb(n);
576
- }, [activeTour]);
593
+ }, [activeTour, rect]);
577
594
  useEffect(() => {
578
595
  if (!activeTour) return;
579
596
  if (currentValidPos !== -1) return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/index.js","../src/styles/index.js","../src/WalkthroughOverlay.js"],"names":["useEffect","useState","el","_a","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useState, useEffect } from \"react\";\n\nconst listeners = new Set();\nlet globalState = {\n activeTour: null,\n};\n\nconst notify = () => {\n listeners.forEach((fn) => fn({ ...globalState }));\n};\n\nconst setGlobalState = (updater) => {\n globalState =\n typeof updater === \"function\"\n ? updater(globalState)\n : { ...globalState, ...updater };\n notify();\n};\n\nconst useGlobalState = () => {\n const [state, setState] = useState(globalState);\n useEffect(() => {\n const handler = (s) => setState(s);\n listeners.add(handler);\n return () => listeners.delete(handler);\n }, []);\n return state;\n};\n\nconst getStorageKey = (storageSuffix) => {\n return storageSuffix ? `walkthrough-done:${storageSuffix}` : \"walkthrough-done\";\n};\n\nconst getStorageData = (storageSuffix) => {\n try {\n return JSON.parse(localStorage.getItem(getStorageKey(storageSuffix)) || \"{}\");\n } catch {\n return {};\n }\n};\n\nconst markDone = (storageSuffix, name) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n data[name] = true;\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst isDone = (storageSuffix, name) => {\n const data = getStorageData(storageSuffix);\n return data[name] === true;\n};\n\nconst isAnyDepDone = (storageSuffix, deps) => {\n if (!deps || deps.length === 0) return true;\n return deps.some((d) => isDone(storageSuffix, d));\n};\n\nconst resetWalkthrough = ({ storageSuffix = \"\", walkthroughList = [] } = {}) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n walkthroughList.forEach((n) => {\n delete data[n];\n });\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst easeOutCubic = (t) => {\n return 1 - Math.pow(1 - t, 3);\n};\n\nconst lerp = (a, b, t) => {\n return a + (b - a) * t;\n};\n\nexport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n};\n","import React, { forwardRef } from \"react\";\n\nconst STYLE_ID = \"wt-keyframes\";\n\nexport const injectKeyframes = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n @keyframes wt-pop-in {\n from { opacity: 0; transform: translateY(10px) scale(0.96); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes wt-fade-slide-in {\n from { opacity: 0; transform: translateX(12px); }\n to { opacity: 1; transform: translateX(0); }\n }\n .wt-overlay-wrap svg { display: block; width: 100%; height: 100%; }\n .wt-btn { border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.15s ease; outline: none; font-family: inherit; }\n .wt-btn:hover { opacity: 0.85; }\n .wt-btn-next:hover { box-shadow: 0 4px 12px rgba(79,70,229,0.4); transform: translateY(-1px); }\n .wt-btn-next:active { transform: translateY(0); }\n `;\n document.head.appendChild(style);\n};\n\nexport const OverlayWrapper = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} className=\"wt-overlay-wrap\" style={{\n position: \"fixed\", inset: 0, zIndex: 10001,\n pointerEvents: \"none\", width: \"100vw\", height: \"100vh\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const ClickLayer = forwardRef(({ style, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", inset: 0, zIndex: 10000, cursor: \"default\", ...style,\n }} {...props} />\n));\n\nexport const PopoverContainer = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", zIndex: 99999, background: \"#fff\",\n boxShadow: \"0 12px 40px rgba(0,0,0,0.18), 0 2px 10px rgba(0,0,0,0.06)\",\n animation: \"wt-pop-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1)\",\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverBody = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n animation: \"wt-fade-slide-in 0.3s ease-out\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverTitle = forwardRef(({ style, children, ...props }, ref) => (\n <h3 ref={ref} style={{\n fontSize: 15, fontWeight: 700, color: \"#1a1a2e\",\n margin: \"0 0 10px\", lineHeight: 1.3, whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</h3>\n));\n\nexport const DescriptionScrollArea = forwardRef(({ $height, style, children, ...props }, ref) => {\n const extra = $height && $height !== \"auto\" ? {\n maxHeight: typeof $height === \"number\" ? $height : $height,\n overflowY: \"auto\",\n } : {};\n return <div ref={ref} style={{ ...extra, ...style }} {...props}>{children}</div>;\n});\n\nexport const DescriptionBlock = forwardRef(({ $direction = \"row\", style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", flexDirection: $direction,\n fontSize: 13, color: \"#666\", lineHeight: 1.6, margin: \"0 0 4px\",\n ...($direction === \"column\" ? { gap: 2 } : { alignItems: \"baseline\", gap: 4 }),\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const DescriptionTitle = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontWeight: 600, color: \"#333\", whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</span>\n));\n\nexport const PopoverFooter = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n marginTop: 16, gap: 8, ...style,\n }} {...props}>{children}</div>\n));\n\nexport const StepCounter = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontSize: 13, fontWeight: 600, color: \"#a1a1aa\", ...style,\n }} {...props}>{children}</span>\n));\n\n\nexport const ButtonGroup = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{ display: \"flex\", gap: 6, ...style }} {...props}>{children}</div>\n));\n\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n} from \"./utils\";\n\nimport {\n injectKeyframes,\n OverlayWrapper,\n ClickLayer,\n PopoverContainer,\n PopoverBody,\n PopoverTitle,\n DescriptionScrollArea,\n DescriptionBlock,\n DescriptionTitle,\n PopoverFooter,\n StepCounter,\n ButtonGroup,\n} from \"./styles\";\n\nexport { resetWalkthrough };\n\nconst resolveElId = (id) => (typeof id === \"string\" && id.startsWith(\"#\") ? id.slice(1) : id);\n\n// Singleton guard: only one WalkthroughOverlay instance should render at a time.\n// Each instance gets a unique ID on mount. The first instance to mount \"wins\" and\n// all subsequent instances return null until the first one unmounts.\nlet _overlayInstanceCounter = 0;\nlet _activeOverlayId = null;\n\nexport const useWalkthrough = ({\n name,\n storageSuffix = \"\",\n dependsOn = [],\n steps,\n delay = 0,\n onWalkthroughComplete,\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel = \"Next\",\n prevLabel = \"Back\",\n skipLabel = \"Skip\",\n doneLabel = \"Done\",\n containerElement,\n}) => {\n const started = useRef(false);\n const onCompleteRef = useRef(onWalkthroughComplete);\n\n useEffect(() => {\n onCompleteRef.current = onWalkthroughComplete;\n }, [onWalkthroughComplete]);\n\n const start = useCallback(() => {\n if (isDone(storageSuffix, name) || started.current) return;\n started.current = true;\n setGlobalState({\n activeTour: {\n name,\n steps,\n delay,\n currentStep: 0,\n storageSuffix,\n onWalkthroughComplete: onCompleteRef.current,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n },\n });\n }, [\n name,\n steps,\n delay,\n storageSuffix,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n ]);\n\n useEffect(() => {\n const check = () => {\n if (isDone(storageSuffix, name)) return;\n started.current = false;\n if (isAnyDepDone(storageSuffix, dependsOn) && !globalState.activeTour) {\n start();\n }\n };\n\n check();\n\n window.addEventListener(\"walkthrough-done\", check);\n return () => window.removeEventListener(\"walkthrough-done\", check);\n }, [name, storageSuffix, dependsOn, start]);\n\n return { start };\n};\n\nconst calcTransitionMs = (from, to, baseMs) => {\n const dx = (to.left + to.width / 2) - (from.left + from.width / 2);\n const dy = (to.top + to.height / 2) - (from.top + from.height / 2);\n const dist = Math.sqrt(dx * dx + dy * dy);\n const diagonal = Math.sqrt(window.innerWidth ** 2 + window.innerHeight ** 2);\n const ratio = Math.min(dist / diagonal, 1);\n const minMs = baseMs * 0.5;\n return Math.round(minMs + ratio * baseMs);\n};\n\nconst waitForScrollEnd = (container, timeoutMs = 400) => {\n return new Promise((resolve) => {\n let resolved = false;\n let scrollEndTimer = null;\n\n const done = () => {\n if (resolved) return;\n resolved = true;\n container.removeEventListener(\"scroll\", onScroll);\n clearTimeout(fallbackTimer);\n clearTimeout(scrollEndTimer);\n resolve();\n };\n\n const onScroll = () => {\n clearTimeout(scrollEndTimer);\n scrollEndTimer = setTimeout(done, 120);\n };\n\n container.addEventListener(\"scroll\", onScroll);\n\n // Fallback: if no scroll event fires (element already visible), resolve quickly\n const fallbackTimer = setTimeout(done, timeoutMs);\n });\n};\n\nconst useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true) => {\n const [displayRect, setDisplayRect] = useState(null);\n const [isAnimating, setIsAnimating] = useState(false);\n const targetRef = useRef(null);\n const currentRef = useRef(null);\n const rafRef = useRef(null);\n const scrollingRef = useRef(false);\n const cleanupRef = useRef(null);\n\n useEffect(() => {\n let cancelled = false;\n\n if (!step) {\n // If tour ended (not just step transition), clear everything\n if (!isTourActive) {\n setDisplayRect(null);\n targetRef.current = null;\n currentRef.current = null;\n }\n // Otherwise keep last rect visible so overlay doesn't disappear between step transitions\n setIsAnimating(false);\n scrollingRef.current = false;\n return;\n }\n\n const containerEl = containerElement\n ? document.getElementById(resolveElId(containerElement))\n : null;\n\n const computeRect = (el) => {\n const r = el.getBoundingClientRect();\n const padding = step.padding ?? 8;\n // Use viewport-relative coords (no window.scrollY/scrollX) because\n // the overlay is position:fixed. This works correctly for elements\n // inside fixed-position containers (drawers, modals) and also for\n // normal page elements.\n return {\n top: r.top - padding,\n left: r.left - padding,\n width: r.width + padding * 2,\n height: r.height + padding * 2,\n };\n };\n\n const startAnimation = (newTarget) => {\n if (cancelled) return;\n\n targetRef.current = newTarget;\n\n if (!currentRef.current) {\n currentRef.current = newTarget;\n setDisplayRect(newTarget);\n setIsAnimating(false);\n return;\n }\n\n const from = { ...currentRef.current };\n const to = newTarget;\n const duration = calcTransitionMs(from, to, baseMs);\n const startTime = performance.now();\n\n setIsAnimating(true);\n\n const tick = (now) => {\n if (cancelled) return;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = easeOutCubic(progress);\n\n const interpolated = {\n top: lerp(from.top, to.top, eased),\n left: lerp(from.left, to.left, eased),\n width: lerp(from.width, to.width, eased),\n height: lerp(from.height, to.height, eased),\n };\n\n currentRef.current = interpolated;\n setDisplayRect(interpolated);\n\n if (progress < 1) {\n rafRef.current = requestAnimationFrame(tick);\n } else {\n currentRef.current = to;\n setDisplayRect(to);\n setIsAnimating(false);\n }\n };\n\n rafRef.current = requestAnimationFrame(tick);\n };\n\n // Shrink highlight to a tiny point at its center when element is not found.\n // This gives visual feedback that the tour is \"working\" rather than stuck.\n const shrinkHighlight = () => {\n if (!currentRef.current) return;\n const cur = currentRef.current;\n const centerX = cur.left + cur.width / 2;\n const centerY = cur.top + cur.height / 2;\n const shrunkRect = { top: centerY, left: centerX, width: 0, height: 0 };\n startAnimation(shrunkRect);\n };\n\n // Kick off the full flow for a found element: scroll → wait → compute → animate\n const runForElement = (el) => {\n if (cancelled) return;\n\n const compute = () => computeRect(el);\n\n // onLayout only runs AFTER scroll has settled — prevents flicker during scroll\n const onLayout = () => {\n if (scrollingRef.current) return;\n const updated = compute();\n targetRef.current = updated;\n currentRef.current = updated;\n setDisplayRect(updated);\n };\n\n // Mark as animating immediately so popover stays hidden during scroll+animate\n setIsAnimating(true);\n\n // Always use scrollIntoView — browser will scroll all scrollable ancestors\n el.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" });\n\n if (containerEl) {\n scrollingRef.current = true;\n waitForScrollEnd(containerEl, baseMs + 150).then(() => {\n scrollingRef.current = false;\n if (cancelled) return;\n startAnimation(compute());\n });\n } else {\n requestAnimationFrame(() => {\n if (cancelled) return;\n startAnimation(compute());\n });\n }\n\n window.addEventListener(\"resize\", onLayout);\n window.addEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.addEventListener(\"scroll\", onLayout);\n\n // Store cleanup for these listeners\n cleanupRef.current = () => {\n window.removeEventListener(\"resize\", onLayout);\n window.removeEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.removeEventListener(\"scroll\", onLayout);\n };\n };\n\n const el = document.getElementById(resolveElId(step.el));\n\n if (el) {\n // Element found immediately — proceed normally\n runForElement(el);\n } else {\n // Element not found — shrink highlight and wait for it to appear\n setIsAnimating(true);\n shrinkHighlight();\n\n const observer = new MutationObserver(() => {\n const found = document.getElementById(resolveElId(step.el));\n if (found) {\n observer.disconnect();\n if (!cancelled) runForElement(found);\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n cleanupRef.current = () => observer.disconnect();\n }\n\n return () => {\n cancelled = true;\n scrollingRef.current = false;\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n if (cleanupRef.current) cleanupRef.current();\n };\n }, [step, containerElement, isTourActive]);\n\n return { rect: displayRect, isAnimating };\n};\n\nconst clampSize = (value, max) => {\n if (value === \"auto\" || value === undefined) return \"auto\";\n const num = typeof value === \"string\" ? parseInt(value, 10) : value;\n const clamped = Math.min(num, max - 12);\n return clamped;\n};\n\nconst EDGE_MARGIN = 8;\n\nconst computePopoverPosition = (rect, popoverW, popoverH, gap, preferred) => {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const clampLeft = (left) =>\n Math.max(EDGE_MARGIN, Math.min(left, vw - popoverW - EDGE_MARGIN));\n const clampTop = (top) =>\n Math.max(EDGE_MARGIN, Math.min(top, vh - popoverH - EDGE_MARGIN));\n\n const positions = {\n bottom: {\n top: rect.top + rect.height + gap,\n left: clampLeft(rect.left),\n },\n top: {\n top: rect.top - popoverH - gap,\n left: clampLeft(rect.left),\n },\n right: {\n top: clampTop(rect.top),\n left: rect.left + rect.width + gap,\n },\n left: {\n top: clampTop(rect.top),\n left: rect.left - popoverW - gap,\n },\n };\n\n const fitsInViewport = (pos) =>\n pos.top >= EDGE_MARGIN &&\n pos.left >= EDGE_MARGIN &&\n pos.top + popoverH <= vh - EDGE_MARGIN &&\n pos.left + popoverW <= vw - EDGE_MARGIN;\n\n if (preferred && positions[preferred] && fitsInViewport(positions[preferred])) {\n return positions[preferred];\n }\n\n const order = [\"bottom\", \"top\", \"right\", \"left\"];\n for (const dir of order) {\n if (fitsInViewport(positions[dir])) {\n return positions[dir];\n }\n }\n\n const spaceBottom = vh - (rect.top + rect.height + gap);\n const spaceTop = rect.top - gap;\n const spaceRight = vw - (rect.left + rect.width + gap);\n const spaceLeft = rect.left - gap;\n\n const best = [\n { dir: \"bottom\", space: spaceBottom },\n { dir: \"top\", space: spaceTop },\n { dir: \"right\", space: spaceRight },\n { dir: \"left\", space: spaceLeft },\n ].sort((a, b) => b.space - a.space)[0].dir;\n\n const fallback = positions[best];\n return {\n top: Math.max(EDGE_MARGIN, Math.min(fallback.top, vh - popoverH - EDGE_MARGIN)),\n left: Math.max(EDGE_MARGIN, Math.min(fallback.left, vw - popoverW - EDGE_MARGIN)),\n };\n};\n\n// Lazily create & prepend a dedicated container as the FIRST child of <body>.\n// Being first in DOM order means it sits before any Radix / 3rd-party portals,\n// and we stop pointer events from propagating so Radix never sees them.\nconst WT_CONTAINER_ID = \"wt-portal-root\";\nconst getPortalContainer = () => {\n if (typeof document === \"undefined\") return null;\n let container = document.getElementById(WT_CONTAINER_ID);\n if (!container) {\n container = document.createElement(\"div\");\n container.id = WT_CONTAINER_ID;\n container.style.cssText = \"position:absolute;top:0;left:0;z-index:2147483647;pointer-events:none;\";\n // Prepend so it's BEFORE any Radix portals in DOM\n document.body.prepend(container);\n }\n return container;\n};\n\n// Stop pointer / mouse / touch / focus events from bubbling out of the walkthrough\n// so that Radix's capture-phase \"outside click\" detection never fires.\nconst stopOutsideEvents = (e) => e.stopPropagation();\nconst portalEventHandlers = {\n onPointerDown: stopOutsideEvents,\n onPointerUp: stopOutsideEvents,\n onMouseDown: stopOutsideEvents,\n onMouseUp: stopOutsideEvents,\n onTouchStart: stopOutsideEvents,\n onFocusCapture: stopOutsideEvents,\n};\n\nexport const WalkthroughOverlay = ({\n $popoverPadding = 12,\n $popoverBorderRadius = 8,\n $popoverGap = 12,\n $popoverMinWidth = 275,\n $animationSpeed = 350,\n nextColor,\n prevColor,\n skipColor,\n} = {}) => {\n injectKeyframes();\n const { activeTour } = useGlobalState();\n\n // Singleton guard: register this instance on mount, unregister on unmount.\n // The actual guard check is done AFTER all hooks (React rules of hooks).\n const instanceIdRef = useRef(null);\n if (instanceIdRef.current === null) {\n instanceIdRef.current = ++_overlayInstanceCounter;\n }\n\n useEffect(() => {\n const myId = instanceIdRef.current;\n if (_activeOverlayId === null) {\n _activeOverlayId = myId;\n }\n return () => {\n if (_activeOverlayId === myId) {\n _activeOverlayId = null;\n }\n };\n }, []);\n\n const nextBtnRef = useRef(null);\n const popoverRef = useRef(null);\n const [popoverPos, setPopoverPos] = useState(null);\n\n const [validSteps, setValidSteps] = useState([]);\n const waitingForElsRef = useRef(false);\n\n useEffect(() => {\n if (!activeTour) {\n setValidSteps([]);\n waitingForElsRef.current = false;\n return;\n }\n\n waitingForElsRef.current = true;\n\n const compute = () =>\n activeTour.steps\n .map((s, i) => ({ ...s, _originalIdx: i }))\n .filter((s) => document.getElementById(resolveElId(s.el)));\n\n const found = compute();\n\n if (found.length > 0) {\n setValidSteps(found);\n return;\n }\n\n setValidSteps([]);\n\n const observer = new MutationObserver(() => {\n const updated = compute();\n if (updated.length > 0) {\n waitingForElsRef.current = false;\n setValidSteps(updated);\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n waitingForElsRef.current = false;\n };\n }, [activeTour]);\n\n const currentOriginalIdx = activeTour?.currentStep ?? 0;\n const currentValidPos = validSteps.findIndex(\n (s) => s._originalIdx === currentOriginalIdx,\n );\n\n const rawStep = currentValidPos !== -1 ? validSteps[currentValidPos] : null;\n\n // --- Delay logic (tour-level, once per tour) ---\n // Track which tour we already handled delay for, so switching tours always re-evaluates.\n const delayDoneForRef = useRef(null); // name of tour whose delay is done\n const [isDelaying, setIsDelaying] = useState(false);\n\n const currentTourName = activeTour?.name ?? null;\n\n useEffect(() => {\n if (!activeTour) {\n // Tour ended — reset\n delayDoneForRef.current = null;\n setIsDelaying(false);\n return;\n }\n\n // If we already handled delay for THIS tour — nothing to do\n if (delayDoneForRef.current === activeTour.name) return;\n\n const ms = activeTour.delay ?? 0;\n\n if (ms <= 0) {\n delayDoneForRef.current = activeTour.name;\n return;\n }\n\n // Start delaying: show overlay, block UI\n setIsDelaying(true);\n const timer = setTimeout(() => {\n delayDoneForRef.current = activeTour.name;\n setIsDelaying(false);\n }, ms);\n\n return () => clearTimeout(timer);\n }, [currentTourName, activeTour]);\n // --- end delay logic ---\n\n const step = isDelaying ? null : rawStep;\n const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour?.containerElement, !!activeTour);\n\n const completeTour = useCallback(() => {\n if (!activeTour) return;\n const { storageSuffix: sk, name: n, onWalkthroughComplete: cb } = activeTour;\n setGlobalState({ activeTour: null });\n markDone(sk, n);\n if (cb) cb(n);\n }, [activeTour]);\n\n useEffect(() => {\n if (!activeTour) return;\n if (currentValidPos !== -1) return;\n if (waitingForElsRef.current) return;\n\n if (validSteps.length === 0) {\n completeTour();\n return;\n }\n\n const nextValid = validSteps.find(\n (s) => s._originalIdx > currentOriginalIdx,\n );\n\n if (nextValid) {\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextValid._originalIdx },\n }));\n } else {\n completeTour();\n }\n }, [\n activeTour,\n currentValidPos,\n currentOriginalIdx,\n validSteps,\n completeTour,\n ]);\n\n useEffect(() => {\n if (!popoverRef.current || !rect || !step || isAnimating) {\n setPopoverPos(null);\n return;\n }\n\n const targetEl = document.getElementById(resolveElId(step.el));\n if (!targetEl) {\n setPopoverPos(null);\n return;\n }\n\n const targetRect = targetEl.getBoundingClientRect();\n const inViewport =\n targetRect.bottom > 0 &&\n targetRect.top < window.innerHeight &&\n targetRect.right > 0 &&\n targetRect.left < window.innerWidth;\n\n if (!inViewport) {\n setPopoverPos(null);\n return;\n }\n\n const measured = popoverRef.current.getBoundingClientRect();\n const pos = computePopoverPosition(\n rect,\n measured.width,\n measured.height,\n $popoverGap,\n step.position,\n );\n setPopoverPos(pos);\n }, [rect, step, $popoverGap, isAnimating]);\n\n useEffect(() => {\n if (nextBtnRef.current) {\n nextBtnRef.current.focus();\n }\n }, [activeTour?.currentStep, popoverPos]);\n\n const [contentKey, setContentKey] = useState(0);\n const prevStepRef = useRef(null);\n\n useEffect(() => {\n const idx = activeTour?.currentStep ?? null;\n if (idx !== prevStepRef.current) {\n setContentKey((k) => k + 1);\n prevStepRef.current = idx;\n }\n }, [activeTour?.currentStep]);\n\n if (!activeTour) return null;\n\n // Singleton guard: if another instance already claimed the active slot, this one does nothing.\n // This check is placed after all hooks to comply with React rules of hooks.\n if (_activeOverlayId !== null && _activeOverlayId !== instanceIdRef.current) {\n return null;\n }\n\n // During delay: show overlay only (no highlight, no popover)\n if (isDelaying) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n // If no step and no rect at all, hide everything\n if (!step && !rect) return null;\n\n // If step is loading but we have a previous rect, keep overlay visible with last highlight\n // This prevents the overlay from disappearing during step transitions\n if (!step || !rect) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n {rect ? (\n <>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={10}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </>\n ) : (\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n )}\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n const totalSteps = validSteps.length;\n const isLast = currentValidPos === totalSteps - 1;\n const borderRadius = step.borderRadius ?? 10;\n\n const {\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel: tourNextLabel = \"Next\",\n prevLabel: tourPrevLabel = \"Back\",\n skipLabel: tourSkipLabel = \"Skip\",\n doneLabel = \"Done\",\n } = activeTour;\n\n const nextLabel = step.nextLabel ?? tourNextLabel;\n const prevLabel = step.prevLabel ?? tourPrevLabel;\n const skipLabel = step.skipLabel ?? tourSkipLabel;\n\n const next = () => {\n if (step.isTriggerEl) {\n const el = document.getElementById(resolveElId(step.el));\n if (el) el.click();\n }\n\n if (isLast) {\n completeTour();\n } else {\n const nextStep = validSteps[currentValidPos + 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextStep._originalIdx },\n }));\n }\n };\n\n const prev = () => {\n if (currentValidPos > 0) {\n const prevStep = validSteps[currentValidPos - 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: prevStep._originalIdx },\n }));\n }\n };\n\n const skip = () => {\n completeTour();\n };\n\n const popoverWidth = clampSize(step.width, window.innerWidth);\n const popoverHeight = step.height\n ? clampSize(step.height, window.innerHeight)\n : undefined;\n\n const popoverReady = popoverPos && !isAnimating;\n const popoverStyle = popoverReady\n ? {\n top: popoverPos.top,\n left: popoverPos.left,\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n }\n : {\n position: \"fixed\",\n top: -9999,\n left: -9999,\n opacity: 0,\n pointerEvents: \"none\",\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n animation: \"none\",\n };\n\n const overlay = (\n <>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={borderRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </svg>\n </OverlayWrapper>\n\n <PopoverContainer ref={popoverRef} style={popoverStyle}>\n <PopoverBody key={contentKey}>\n <div style={{display: \"flex\",flexDirection: \"row\", justifyContent: \"space-between\"}}>\n {step.title ? <PopoverTitle>{step.title}</PopoverTitle>:''}\n {(step.isShowStep ?? isShowStep) && (\n <span style={{color: \"#a1a1aa\" ,fontSize: \"12px\", fontWeight: \"400\"}}>{currentValidPos + 1}/{totalSteps}</span>\n )}\n </div>\n <DescriptionScrollArea $height={popoverHeight}>\n {Array.isArray(step.description) &&\n step.description.map((d, i) => (\n <DescriptionBlock key={i} $direction={d.direction}>\n {d.title && <DescriptionTitle>{d.title}: </DescriptionTitle>}\n <span style={{ whiteSpace: \"pre-line\" }}>{d.description}</span>\n </DescriptionBlock>\n ))}\n </DescriptionScrollArea>\n </PopoverBody>\n\n <PopoverFooter>\n <StepCounter>\n {isShowSkip && (\n <button\n className=\"wt-btn\"\n style={{ background: skipColor || \"transparent\", color: skipColor ? \"#fff\" : \"#a1a1aa\" }}\n onClick={skip}\n >\n {skipLabel}\n </button>\n )}\n </StepCounter>\n\n <ButtonGroup>\n {(step.isShowPrev ?? isShowPrev) && currentValidPos > 0 && (\n <button\n className=\"wt-btn\"\n style={{ background: prevColor || \"#f4f4f5\", color: prevColor ? \"#fff\" : \"#3f3f46\" }}\n onClick={prev}\n >\n {prevLabel}\n </button>\n )}\n <button\n ref={nextBtnRef}\n className=\"wt-btn wt-btn-next\"\n style={{ background: nextColor || \"#000\", color: \"#fff\", boxShadow: \"0 2px 8px rgba(0,0,0,0.3)\" }}\n onClick={next}\n >\n {isLast ? doneLabel : nextLabel}\n </button>\n </ButtonGroup>\n </PopoverFooter>\n </PopoverContainer>\n </>\n );\n\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n {overlay}\n </div>,\n getPortalContainer(),\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/index.js","../src/styles/index.js","../src/WalkthroughOverlay.js"],"names":["useEffect","useState","el","_a","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useState, useEffect } from \"react\";\n\nconst listeners = new Set();\nlet globalState = {\n activeTour: null,\n lastRect: null,\n};\n\nconst notify = () => {\n listeners.forEach((fn) => fn({ ...globalState }));\n};\n\nconst setGlobalState = (updater) => {\n globalState =\n typeof updater === \"function\"\n ? updater(globalState)\n : { ...globalState, ...updater };\n notify();\n};\n\nconst useGlobalState = () => {\n const [state, setState] = useState(globalState);\n useEffect(() => {\n const handler = (s) => setState(s);\n listeners.add(handler);\n return () => listeners.delete(handler);\n }, []);\n return state;\n};\n\nconst getStorageKey = (storageSuffix) => {\n return storageSuffix ? `walkthrough-done:${storageSuffix}` : \"walkthrough-done\";\n};\n\nconst getStorageData = (storageSuffix) => {\n try {\n return JSON.parse(localStorage.getItem(getStorageKey(storageSuffix)) || \"{}\");\n } catch {\n return {};\n }\n};\n\nconst markDone = (storageSuffix, name) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n data[name] = true;\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst isDone = (storageSuffix, name) => {\n const data = getStorageData(storageSuffix);\n return data[name] === true;\n};\n\nconst isAnyDepDone = (storageSuffix, deps) => {\n if (!deps || deps.length === 0) return true;\n return deps.some((d) => isDone(storageSuffix, d));\n};\n\nconst resetWalkthrough = ({ storageSuffix = \"\", walkthroughList = [] } = {}) => {\n const key = getStorageKey(storageSuffix);\n const data = getStorageData(storageSuffix);\n walkthroughList.forEach((n) => {\n delete data[n];\n });\n localStorage.setItem(key, JSON.stringify(data));\n window.dispatchEvent(new Event(\"walkthrough-done\"));\n};\n\nconst easeOutCubic = (t) => {\n return 1 - Math.pow(1 - t, 3);\n};\n\nconst lerp = (a, b, t) => {\n return a + (b - a) * t;\n};\n\nexport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n};\n","import React, { forwardRef } from \"react\";\n\nconst STYLE_ID = \"wt-keyframes\";\n\nexport const injectKeyframes = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n @keyframes wt-pop-in {\n from { opacity: 0; transform: translateY(10px) scale(0.96); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n @keyframes wt-fade-slide-in {\n from { opacity: 0; transform: translateX(12px); }\n to { opacity: 1; transform: translateX(0); }\n }\n .wt-overlay-wrap svg { display: block; width: 100%; height: 100%; }\n .wt-btn { border: none; border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.15s ease; outline: none; font-family: inherit; }\n .wt-btn:hover { opacity: 0.85; }\n .wt-btn-next:hover { box-shadow: 0 4px 12px rgba(79,70,229,0.4); transform: translateY(-1px); }\n .wt-btn-next:active { transform: translateY(0); }\n `;\n document.head.appendChild(style);\n};\n\nexport const OverlayWrapper = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} className=\"wt-overlay-wrap\" style={{\n position: \"fixed\", inset: 0, zIndex: 10001,\n pointerEvents: \"none\", width: \"100vw\", height: \"100vh\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const ClickLayer = forwardRef(({ style, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", inset: 0, zIndex: 10000, cursor: \"default\", ...style,\n }} {...props} />\n));\n\nexport const PopoverContainer = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n position: \"fixed\", zIndex: 99999, background: \"#fff\",\n boxShadow: \"0 12px 40px rgba(0,0,0,0.18), 0 2px 10px rgba(0,0,0,0.06)\",\n animation: \"wt-pop-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1)\",\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverBody = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n animation: \"wt-fade-slide-in 0.3s ease-out\", ...style,\n }} {...props}>{children}</div>\n));\n\nexport const PopoverTitle = forwardRef(({ style, children, ...props }, ref) => (\n <h3 ref={ref} style={{\n fontSize: 15, fontWeight: 700, color: \"#1a1a2e\",\n margin: \"0 0 10px\", lineHeight: 1.3, whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</h3>\n));\n\nexport const DescriptionScrollArea = forwardRef(({ $height, style, children, ...props }, ref) => {\n const extra = $height && $height !== \"auto\" ? {\n maxHeight: typeof $height === \"number\" ? $height : $height,\n overflowY: \"auto\",\n } : {};\n return <div ref={ref} style={{ ...extra, ...style }} {...props}>{children}</div>;\n});\n\nexport const DescriptionBlock = forwardRef(({ $direction = \"row\", style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", flexDirection: $direction,\n fontSize: 13, color: \"#666\", lineHeight: 1.6, margin: \"0 0 4px\",\n ...($direction === \"column\" ? { gap: 2 } : { alignItems: \"baseline\", gap: 4 }),\n ...style,\n }} {...props}>{children}</div>\n));\n\nexport const DescriptionTitle = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontWeight: 600, color: \"#333\", whiteSpace: \"pre-line\", ...style,\n }} {...props}>{children}</span>\n));\n\nexport const PopoverFooter = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{\n display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n marginTop: 16, gap: 8, ...style,\n }} {...props}>{children}</div>\n));\n\nexport const StepCounter = forwardRef(({ style, children, ...props }, ref) => (\n <span ref={ref} style={{\n fontSize: 13, fontWeight: 600, color: \"#a1a1aa\", ...style,\n }} {...props}>{children}</span>\n));\n\n\nexport const ButtonGroup = forwardRef(({ style, children, ...props }, ref) => (\n <div ref={ref} style={{ display: \"flex\", gap: 6, ...style }} {...props}>{children}</div>\n));\n\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n globalState,\n setGlobalState,\n useGlobalState,\n markDone,\n isDone,\n isAnyDepDone,\n resetWalkthrough,\n easeOutCubic,\n lerp,\n} from \"./utils\";\n\nimport {\n injectKeyframes,\n OverlayWrapper,\n ClickLayer,\n PopoverContainer,\n PopoverBody,\n PopoverTitle,\n DescriptionScrollArea,\n DescriptionBlock,\n DescriptionTitle,\n PopoverFooter,\n StepCounter,\n ButtonGroup,\n} from \"./styles\";\n\nexport { resetWalkthrough };\n\nconst resolveElId = (id) => (typeof id === \"string\" && id.startsWith(\"#\") ? id.slice(1) : id);\n\n// Singleton guard: only one WalkthroughOverlay instance should render at a time.\n// Each instance gets a unique ID on mount. The first instance to mount \"wins\" and\n// all subsequent instances return null until the first one unmounts.\nlet _overlayInstanceCounter = 0;\nlet _activeOverlayId = null;\n\nexport const useWalkthrough = ({\n name,\n storageSuffix = \"\",\n dependsOn = [],\n steps,\n delay = 0,\n onWalkthroughComplete,\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel = \"Next\",\n prevLabel = \"Back\",\n skipLabel = \"Skip\",\n doneLabel = \"Done\",\n containerElement,\n}) => {\n const started = useRef(false);\n const onCompleteRef = useRef(onWalkthroughComplete);\n\n useEffect(() => {\n onCompleteRef.current = onWalkthroughComplete;\n }, [onWalkthroughComplete]);\n\n const start = useCallback(() => {\n if (isDone(storageSuffix, name) || started.current) return;\n started.current = true;\n setGlobalState({\n activeTour: {\n name,\n steps,\n delay,\n currentStep: 0,\n storageSuffix,\n onWalkthroughComplete: onCompleteRef.current,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n },\n });\n }, [\n name,\n steps,\n delay,\n storageSuffix,\n isShowSkip,\n isShowPrev,\n isShowStep,\n nextLabel,\n prevLabel,\n skipLabel,\n doneLabel,\n containerElement,\n ]);\n\n useEffect(() => {\n const check = () => {\n if (isDone(storageSuffix, name)) return;\n started.current = false;\n if (isAnyDepDone(storageSuffix, dependsOn) && !globalState.activeTour) {\n start();\n }\n };\n\n check();\n\n window.addEventListener(\"walkthrough-done\", check);\n return () => window.removeEventListener(\"walkthrough-done\", check);\n }, [name, storageSuffix, dependsOn, start]);\n\n return { start };\n};\n\nconst calcTransitionMs = (from, to, baseMs) => {\n const dx = (to.left + to.width / 2) - (from.left + from.width / 2);\n const dy = (to.top + to.height / 2) - (from.top + from.height / 2);\n const dist = Math.sqrt(dx * dx + dy * dy);\n const diagonal = Math.sqrt(window.innerWidth ** 2 + window.innerHeight ** 2);\n const ratio = Math.min(dist / diagonal, 1);\n const minMs = baseMs * 0.5;\n return Math.round(minMs + ratio * baseMs);\n};\n\nconst waitForScrollEnd = (container, timeoutMs = 400) => {\n return new Promise((resolve) => {\n let resolved = false;\n let scrollEndTimer = null;\n\n const done = () => {\n if (resolved) return;\n resolved = true;\n container.removeEventListener(\"scroll\", onScroll);\n clearTimeout(fallbackTimer);\n clearTimeout(scrollEndTimer);\n resolve();\n };\n\n const onScroll = () => {\n clearTimeout(scrollEndTimer);\n scrollEndTimer = setTimeout(done, 120);\n };\n\n container.addEventListener(\"scroll\", onScroll);\n\n // Fallback: if no scroll event fires (element already visible), resolve quickly\n const fallbackTimer = setTimeout(done, timeoutMs);\n });\n};\n\nconst useAnimatedRect = (step, baseMs = 350, containerElement, isTourActive = true, tourName = null) => {\n const [displayRect, setDisplayRect] = useState(null);\n const [isAnimating, setIsAnimating] = useState(false);\n const targetRef = useRef(null);\n const currentRef = useRef(null);\n const rafRef = useRef(null);\n const scrollingRef = useRef(false);\n const cleanupRef = useRef(null);\n const prevTourNameRef = useRef(null);\n\n useEffect(() => {\n let cancelled = false;\n\n // Detect tour change: when tourName changes, seed currentRef from lastRect\n // so the highlight animates FROM the previous tour's last position.\n // This handles the case where dependsOn tours chain synchronously\n // (activeTour never becomes null between tours in the same render batch).\n if (tourName && tourName !== prevTourNameRef.current) {\n const savedRect = globalState.lastRect;\n if (savedRect && prevTourNameRef.current !== null) {\n // Only seed from lastRect when transitioning between tours (not on first mount)\n currentRef.current = { ...savedRect };\n // Clear display so highlight doesn't linger at old position during delay\n setDisplayRect(null);\n targetRef.current = null;\n }\n prevTourNameRef.current = tourName;\n }\n\n if (!step) {\n if (!isTourActive) {\n setDisplayRect(null);\n targetRef.current = null;\n currentRef.current = null;\n }\n // Otherwise keep last rect visible so overlay doesn't disappear between step transitions\n setIsAnimating(false);\n scrollingRef.current = false;\n return;\n }\n\n // If we have no starting position yet (first tour ever), try to pick up lastRect.\n if (!currentRef.current) {\n const savedRect = globalState.lastRect;\n if (savedRect) {\n currentRef.current = { ...savedRect };\n }\n }\n\n const containerEl = containerElement\n ? document.getElementById(resolveElId(containerElement))\n : null;\n\n const computeRect = (el) => {\n const r = el.getBoundingClientRect();\n const padding = step.padding ?? 8;\n // Use viewport-relative coords (no window.scrollY/scrollX) because\n // the overlay is position:fixed. This works correctly for elements\n // inside fixed-position containers (drawers, modals) and also for\n // normal page elements.\n return {\n top: r.top - padding,\n left: r.left - padding,\n width: r.width + padding * 2,\n height: r.height + padding * 2,\n };\n };\n\n const startAnimation = (newTarget) => {\n if (cancelled) return;\n\n targetRef.current = newTarget;\n\n if (!currentRef.current) {\n currentRef.current = newTarget;\n setDisplayRect(newTarget);\n setIsAnimating(false);\n return;\n }\n\n const from = { ...currentRef.current };\n const to = newTarget;\n const duration = calcTransitionMs(from, to, baseMs);\n const startTime = performance.now();\n\n setIsAnimating(true);\n\n const tick = (now) => {\n if (cancelled) return;\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = easeOutCubic(progress);\n\n const interpolated = {\n top: lerp(from.top, to.top, eased),\n left: lerp(from.left, to.left, eased),\n width: lerp(from.width, to.width, eased),\n height: lerp(from.height, to.height, eased),\n };\n\n currentRef.current = interpolated;\n setDisplayRect(interpolated);\n\n if (progress < 1) {\n rafRef.current = requestAnimationFrame(tick);\n } else {\n currentRef.current = to;\n setDisplayRect(to);\n setIsAnimating(false);\n }\n };\n\n rafRef.current = requestAnimationFrame(tick);\n };\n\n // Shrink highlight to a tiny point at its center when element is not found.\n // This gives visual feedback that the tour is \"working\" rather than stuck.\n const shrinkHighlight = () => {\n if (!currentRef.current) return;\n const cur = currentRef.current;\n const centerX = cur.left + cur.width / 2;\n const centerY = cur.top + cur.height / 2;\n const shrunkRect = { top: centerY, left: centerX, width: 0, height: 0 };\n startAnimation(shrunkRect);\n };\n\n // Kick off the full flow for a found element: scroll → wait → compute → animate\n const runForElement = (el) => {\n if (cancelled) return;\n\n const compute = () => computeRect(el);\n\n // onLayout only runs AFTER scroll has settled — prevents flicker during scroll\n const onLayout = () => {\n if (scrollingRef.current) return;\n const updated = compute();\n targetRef.current = updated;\n currentRef.current = updated;\n setDisplayRect(updated);\n };\n\n // Mark as animating immediately so popover stays hidden during scroll+animate\n setIsAnimating(true);\n\n // Always use scrollIntoView — browser will scroll all scrollable ancestors\n el.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"nearest\" });\n\n if (containerEl) {\n scrollingRef.current = true;\n waitForScrollEnd(containerEl, baseMs + 150).then(() => {\n scrollingRef.current = false;\n if (cancelled) return;\n startAnimation(compute());\n });\n } else {\n requestAnimationFrame(() => {\n if (cancelled) return;\n startAnimation(compute());\n });\n }\n\n window.addEventListener(\"resize\", onLayout);\n window.addEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.addEventListener(\"scroll\", onLayout);\n\n // Store cleanup for these listeners\n cleanupRef.current = () => {\n window.removeEventListener(\"resize\", onLayout);\n window.removeEventListener(\"scroll\", onLayout, true);\n if (containerEl) containerEl.removeEventListener(\"scroll\", onLayout);\n };\n };\n\n const el = document.getElementById(resolveElId(step.el));\n\n if (el) {\n // Element found immediately — proceed normally\n runForElement(el);\n } else {\n // Element not found — shrink highlight and wait for it to appear\n setIsAnimating(true);\n shrinkHighlight();\n\n const observer = new MutationObserver(() => {\n const found = document.getElementById(resolveElId(step.el));\n if (found) {\n observer.disconnect();\n if (!cancelled) runForElement(found);\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n cleanupRef.current = () => observer.disconnect();\n }\n\n return () => {\n cancelled = true;\n scrollingRef.current = false;\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n if (cleanupRef.current) cleanupRef.current();\n };\n }, [step, containerElement, isTourActive, tourName]);\n\n return { rect: displayRect, isAnimating };\n};\n\nconst clampSize = (value, max) => {\n if (value === \"auto\" || value === undefined) return \"auto\";\n const num = typeof value === \"string\" ? parseInt(value, 10) : value;\n const clamped = Math.min(num, max - 12);\n return clamped;\n};\n\nconst EDGE_MARGIN = 8;\n\nconst computePopoverPosition = (rect, popoverW, popoverH, gap, preferred) => {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const clampLeft = (left) =>\n Math.max(EDGE_MARGIN, Math.min(left, vw - popoverW - EDGE_MARGIN));\n const clampTop = (top) =>\n Math.max(EDGE_MARGIN, Math.min(top, vh - popoverH - EDGE_MARGIN));\n\n const positions = {\n bottom: {\n top: rect.top + rect.height + gap,\n left: clampLeft(rect.left),\n },\n top: {\n top: rect.top - popoverH - gap,\n left: clampLeft(rect.left),\n },\n right: {\n top: clampTop(rect.top),\n left: rect.left + rect.width + gap,\n },\n left: {\n top: clampTop(rect.top),\n left: rect.left - popoverW - gap,\n },\n };\n\n const fitsInViewport = (pos) =>\n pos.top >= EDGE_MARGIN &&\n pos.left >= EDGE_MARGIN &&\n pos.top + popoverH <= vh - EDGE_MARGIN &&\n pos.left + popoverW <= vw - EDGE_MARGIN;\n\n if (preferred && positions[preferred] && fitsInViewport(positions[preferred])) {\n return positions[preferred];\n }\n\n const order = [\"bottom\", \"top\", \"right\", \"left\"];\n for (const dir of order) {\n if (fitsInViewport(positions[dir])) {\n return positions[dir];\n }\n }\n\n const spaceBottom = vh - (rect.top + rect.height + gap);\n const spaceTop = rect.top - gap;\n const spaceRight = vw - (rect.left + rect.width + gap);\n const spaceLeft = rect.left - gap;\n\n const best = [\n { dir: \"bottom\", space: spaceBottom },\n { dir: \"top\", space: spaceTop },\n { dir: \"right\", space: spaceRight },\n { dir: \"left\", space: spaceLeft },\n ].sort((a, b) => b.space - a.space)[0].dir;\n\n const fallback = positions[best];\n return {\n top: Math.max(EDGE_MARGIN, Math.min(fallback.top, vh - popoverH - EDGE_MARGIN)),\n left: Math.max(EDGE_MARGIN, Math.min(fallback.left, vw - popoverW - EDGE_MARGIN)),\n };\n};\n\n// Lazily create & prepend a dedicated container as the FIRST child of <body>.\n// Being first in DOM order means it sits before any Radix / 3rd-party portals,\n// and we stop pointer events from propagating so Radix never sees them.\nconst WT_CONTAINER_ID = \"wt-portal-root\";\nconst getPortalContainer = () => {\n if (typeof document === \"undefined\") return null;\n let container = document.getElementById(WT_CONTAINER_ID);\n if (!container) {\n container = document.createElement(\"div\");\n container.id = WT_CONTAINER_ID;\n container.style.cssText = \"position:absolute;top:0;left:0;z-index:2147483647;pointer-events:none;\";\n // Prepend so it's BEFORE any Radix portals in DOM\n document.body.prepend(container);\n }\n return container;\n};\n\n// Stop pointer / mouse / touch / focus events from bubbling out of the walkthrough\n// so that Radix's capture-phase \"outside click\" detection never fires.\nconst stopOutsideEvents = (e) => e.stopPropagation();\nconst portalEventHandlers = {\n onPointerDown: stopOutsideEvents,\n onPointerUp: stopOutsideEvents,\n onMouseDown: stopOutsideEvents,\n onMouseUp: stopOutsideEvents,\n onTouchStart: stopOutsideEvents,\n onFocusCapture: stopOutsideEvents,\n};\n\nexport const WalkthroughOverlay = ({\n $popoverPadding = 12,\n $popoverBorderRadius = 8,\n $popoverGap = 12,\n $popoverMinWidth = 275,\n $animationSpeed = 350,\n nextColor,\n prevColor,\n skipColor,\n} = {}) => {\n injectKeyframes();\n const { activeTour } = useGlobalState();\n\n // Singleton guard: register this instance on mount, unregister on unmount.\n // The actual guard check is done AFTER all hooks (React rules of hooks).\n const instanceIdRef = useRef(null);\n if (instanceIdRef.current === null) {\n instanceIdRef.current = ++_overlayInstanceCounter;\n }\n\n useEffect(() => {\n const myId = instanceIdRef.current;\n if (_activeOverlayId === null) {\n _activeOverlayId = myId;\n }\n return () => {\n if (_activeOverlayId === myId) {\n _activeOverlayId = null;\n }\n };\n }, []);\n\n const nextBtnRef = useRef(null);\n const popoverRef = useRef(null);\n const [popoverPos, setPopoverPos] = useState(null);\n\n const [validSteps, setValidSteps] = useState([]);\n const waitingForElsRef = useRef(false);\n\n useEffect(() => {\n if (!activeTour) {\n setValidSteps([]);\n waitingForElsRef.current = false;\n return;\n }\n\n waitingForElsRef.current = true;\n\n const compute = () =>\n activeTour.steps\n .map((s, i) => ({ ...s, _originalIdx: i }))\n .filter((s) => document.getElementById(resolveElId(s.el)));\n\n const found = compute();\n\n if (found.length > 0) {\n setValidSteps(found);\n return;\n }\n\n setValidSteps([]);\n\n const observer = new MutationObserver(() => {\n const updated = compute();\n if (updated.length > 0) {\n waitingForElsRef.current = false;\n setValidSteps(updated);\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n waitingForElsRef.current = false;\n };\n }, [activeTour]);\n\n const currentOriginalIdx = activeTour?.currentStep ?? 0;\n const currentValidPos = validSteps.findIndex(\n (s) => s._originalIdx === currentOriginalIdx,\n );\n\n const rawStep = currentValidPos !== -1 ? validSteps[currentValidPos] : null;\n\n // --- Delay logic (tour-level, once per tour) ---\n // Track which tour we already handled delay for, so switching tours always re-evaluates.\n const delayDoneForRef = useRef(null); // name of tour whose delay is done\n const [isDelaying, setIsDelaying] = useState(false);\n\n const currentTourName = activeTour?.name ?? null;\n\n useEffect(() => {\n if (!activeTour) {\n // Tour ended — reset\n delayDoneForRef.current = null;\n setIsDelaying(false);\n return;\n }\n\n // If we already handled delay for THIS tour — nothing to do\n if (delayDoneForRef.current === activeTour.name) return;\n\n const ms = activeTour.delay ?? 0;\n\n if (ms <= 0) {\n delayDoneForRef.current = activeTour.name;\n return;\n }\n\n // Start delaying: show overlay, block UI\n setIsDelaying(true);\n const timer = setTimeout(() => {\n delayDoneForRef.current = activeTour.name;\n setIsDelaying(false);\n }, ms);\n\n return () => clearTimeout(timer);\n }, [currentTourName, activeTour]);\n // --- end delay logic ---\n\n const step = isDelaying ? null : rawStep;\n const { rect, isAnimating } = useAnimatedRect(step, $animationSpeed, activeTour?.containerElement, !!activeTour, activeTour?.name);\n\n const completeTour = useCallback(() => {\n if (!activeTour) return;\n const { storageSuffix: sk, name: n, onWalkthroughComplete: cb } = activeTour;\n // Save last highlight position so the next tour can animate FROM this point\n setGlobalState({ activeTour: null, lastRect: rect ? { ...rect } : null });\n markDone(sk, n);\n if (cb) cb(n);\n }, [activeTour, rect]);\n\n useEffect(() => {\n if (!activeTour) return;\n if (currentValidPos !== -1) return;\n if (waitingForElsRef.current) return;\n\n if (validSteps.length === 0) {\n completeTour();\n return;\n }\n\n const nextValid = validSteps.find(\n (s) => s._originalIdx > currentOriginalIdx,\n );\n\n if (nextValid) {\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextValid._originalIdx },\n }));\n } else {\n completeTour();\n }\n }, [\n activeTour,\n currentValidPos,\n currentOriginalIdx,\n validSteps,\n completeTour,\n ]);\n\n useEffect(() => {\n if (!popoverRef.current || !rect || !step || isAnimating) {\n setPopoverPos(null);\n return;\n }\n\n const targetEl = document.getElementById(resolveElId(step.el));\n if (!targetEl) {\n setPopoverPos(null);\n return;\n }\n\n const targetRect = targetEl.getBoundingClientRect();\n const inViewport =\n targetRect.bottom > 0 &&\n targetRect.top < window.innerHeight &&\n targetRect.right > 0 &&\n targetRect.left < window.innerWidth;\n\n if (!inViewport) {\n setPopoverPos(null);\n return;\n }\n\n const measured = popoverRef.current.getBoundingClientRect();\n const pos = computePopoverPosition(\n rect,\n measured.width,\n measured.height,\n $popoverGap,\n step.position,\n );\n setPopoverPos(pos);\n }, [rect, step, $popoverGap, isAnimating]);\n\n useEffect(() => {\n if (nextBtnRef.current) {\n nextBtnRef.current.focus();\n }\n }, [activeTour?.currentStep, popoverPos]);\n\n const [contentKey, setContentKey] = useState(0);\n const prevStepRef = useRef(null);\n\n useEffect(() => {\n const idx = activeTour?.currentStep ?? null;\n if (idx !== prevStepRef.current) {\n setContentKey((k) => k + 1);\n prevStepRef.current = idx;\n }\n }, [activeTour?.currentStep]);\n\n if (!activeTour) return null;\n\n // Singleton guard: if another instance already claimed the active slot, this one does nothing.\n // This check is placed after all hooks to comply with React rules of hooks.\n if (_activeOverlayId !== null && _activeOverlayId !== instanceIdRef.current) {\n return null;\n }\n\n // During delay: show overlay only (no highlight, no popover)\n if (isDelaying) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n // If no step and no rect at all, hide everything\n if (!step && !rect) return null;\n\n // If step is loading but we have a previous rect, keep overlay visible with last highlight\n // This prevents the overlay from disappearing during step transitions\n if (!step || !rect) {\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n {rect ? (\n <>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={10}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </>\n ) : (\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n />\n )}\n </svg>\n </OverlayWrapper>\n </div>,\n getPortalContainer(),\n );\n }\n\n const totalSteps = validSteps.length;\n const isLast = currentValidPos === totalSteps - 1;\n const borderRadius = step.borderRadius ?? 10;\n\n const {\n isShowSkip = true,\n isShowPrev = true,\n isShowStep = true,\n nextLabel: tourNextLabel = \"Next\",\n prevLabel: tourPrevLabel = \"Back\",\n skipLabel: tourSkipLabel = \"Skip\",\n doneLabel = \"Done\",\n } = activeTour;\n\n const nextLabel = step.nextLabel ?? tourNextLabel;\n const prevLabel = step.prevLabel ?? tourPrevLabel;\n const skipLabel = step.skipLabel ?? tourSkipLabel;\n\n const next = () => {\n if (step.isTriggerEl) {\n const el = document.getElementById(resolveElId(step.el));\n if (el) el.click();\n }\n\n if (isLast) {\n completeTour();\n } else {\n const nextStep = validSteps[currentValidPos + 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: nextStep._originalIdx },\n }));\n }\n };\n\n const prev = () => {\n if (currentValidPos > 0) {\n const prevStep = validSteps[currentValidPos - 1];\n setGlobalState((s) => ({\n ...s,\n activeTour: { ...s.activeTour, currentStep: prevStep._originalIdx },\n }));\n }\n };\n\n const skip = () => {\n completeTour();\n };\n\n const popoverWidth = clampSize(step.width, window.innerWidth);\n const popoverHeight = step.height\n ? clampSize(step.height, window.innerHeight)\n : undefined;\n\n const popoverReady = popoverPos && !isAnimating;\n const popoverStyle = popoverReady\n ? {\n top: popoverPos.top,\n left: popoverPos.left,\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n }\n : {\n position: \"fixed\",\n top: -9999,\n left: -9999,\n opacity: 0,\n pointerEvents: \"none\",\n width: popoverWidth,\n minWidth: $popoverMinWidth,\n padding: $popoverPadding,\n borderRadius: $popoverBorderRadius,\n fontFamily: \"inherit\",\n animation: \"none\",\n };\n\n const overlay = (\n <>\n <ClickLayer />\n <OverlayWrapper>\n <svg>\n <defs>\n <mask id=\"wt-mask\">\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n <rect\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n rx={borderRadius}\n fill=\"black\"\n />\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0,0,0,0.52)\"\n mask=\"url(#wt-mask)\"\n />\n </svg>\n </OverlayWrapper>\n\n <PopoverContainer ref={popoverRef} style={popoverStyle}>\n <PopoverBody key={contentKey}>\n <div style={{display: \"flex\",flexDirection: \"row\", justifyContent: \"space-between\"}}>\n {step.title ? <PopoverTitle>{step.title}</PopoverTitle>:''}\n {(step.isShowStep ?? isShowStep) && (\n <span style={{color: \"#a1a1aa\" ,fontSize: \"12px\", fontWeight: \"400\"}}>{currentValidPos + 1}/{totalSteps}</span>\n )}\n </div>\n <DescriptionScrollArea $height={popoverHeight}>\n {Array.isArray(step.description) &&\n step.description.map((d, i) => (\n <DescriptionBlock key={i} $direction={d.direction}>\n {d.title && <DescriptionTitle>{d.title}: </DescriptionTitle>}\n <span style={{ whiteSpace: \"pre-line\" }}>{d.description}</span>\n </DescriptionBlock>\n ))}\n </DescriptionScrollArea>\n </PopoverBody>\n\n <PopoverFooter>\n <StepCounter>\n {isShowSkip && (\n <button\n className=\"wt-btn\"\n style={{ background: skipColor || \"transparent\", color: skipColor ? \"#fff\" : \"#a1a1aa\" }}\n onClick={skip}\n >\n {skipLabel}\n </button>\n )}\n </StepCounter>\n\n <ButtonGroup>\n {(step.isShowPrev ?? isShowPrev) && currentValidPos > 0 && (\n <button\n className=\"wt-btn\"\n style={{ background: prevColor || \"#f4f4f5\", color: prevColor ? \"#fff\" : \"#3f3f46\" }}\n onClick={prev}\n >\n {prevLabel}\n </button>\n )}\n <button\n ref={nextBtnRef}\n className=\"wt-btn wt-btn-next\"\n style={{ background: nextColor || \"#000\", color: \"#fff\", boxShadow: \"0 2px 8px rgba(0,0,0,0.3)\" }}\n onClick={next}\n >\n {isLast ? doneLabel : nextLabel}\n </button>\n </ButtonGroup>\n </PopoverFooter>\n </PopoverContainer>\n </>\n );\n\n return createPortal(\n <div {...portalEventHandlers} style={{ pointerEvents: \"auto\" }}>\n {overlay}\n </div>,\n getPortalContainer(),\n );\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tent-official/react-walkthrough",
3
- "version": "1.1.40",
3
+ "version": "1.1.42",
4
4
  "description": "Lightweight React walkthrough/tour component with auto-positioning, dependency chains, and smooth animations",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",