@tent-official/react-walkthrough 1.1.54 → 1.1.56

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
@@ -536,6 +536,8 @@ var WalkthroughOverlay = ({
536
536
  const nextBtnRef = react.useRef(null);
537
537
  const popoverRef = react.useRef(null);
538
538
  const [popoverPos, setPopoverPos] = react.useState(null);
539
+ const displayStepRef = react.useRef(null);
540
+ const displayPosRef = react.useRef(null);
539
541
  const [validSteps, setValidSteps] = react.useState([]);
540
542
  const waitingForElsRef = react.useRef(false);
541
543
  react.useEffect(() => {
@@ -776,6 +778,25 @@ var WalkthroughOverlay = ({
776
778
  const popoverWidth = clampSize(step.width, window.innerWidth);
777
779
  const popoverHeight = step.height ? clampSize(step.height, window.innerHeight) : void 0;
778
780
  const popoverReady = popoverPos && !isAnimating;
781
+ if (popoverReady) {
782
+ displayStepRef.current = {
783
+ step,
784
+ nextLabel,
785
+ prevLabel,
786
+ skipLabel,
787
+ isShowSkip,
788
+ isShowPrev,
789
+ isShowStep,
790
+ doneLabel,
791
+ isLast,
792
+ currentValidPos,
793
+ displayCurrentStep,
794
+ displayTotalSteps,
795
+ popoverHeight
796
+ };
797
+ displayPosRef.current = currentValidPos;
798
+ }
799
+ const ds = displayStepRef.current;
779
800
  const popoverStyle = popoverReady ? {
780
801
  top: popoverPos.top,
781
802
  left: popoverPos.left,
@@ -784,7 +805,32 @@ var WalkthroughOverlay = ({
784
805
  padding: $popoverPadding,
785
806
  borderRadius: $popoverBorderRadius,
786
807
  fontFamily: "inherit"
787
- } : null;
808
+ } : {
809
+ position: "fixed",
810
+ top: -9999,
811
+ left: -9999,
812
+ opacity: 0,
813
+ pointerEvents: "none",
814
+ width: popoverWidth,
815
+ minWidth: $popoverMinWidth,
816
+ padding: $popoverPadding,
817
+ borderRadius: $popoverBorderRadius,
818
+ fontFamily: "inherit",
819
+ animation: "none"
820
+ };
821
+ const pStep = ds ? ds.step : step;
822
+ const pNextLabel = ds ? ds.nextLabel : nextLabel;
823
+ const pPrevLabel = ds ? ds.prevLabel : prevLabel;
824
+ const pSkipLabel = ds ? ds.skipLabel : skipLabel;
825
+ const pIsShowSkip = ds ? ds.isShowSkip : isShowSkip;
826
+ const pIsShowPrev = ds ? ds.isShowPrev : isShowPrev;
827
+ const pIsShowStep = ds ? ds.isShowStep : isShowStep;
828
+ const pDoneLabel = ds ? ds.doneLabel : doneLabel;
829
+ const pIsLast = ds ? ds.isLast : isLast;
830
+ const pCurrentValidPos = ds ? ds.currentValidPos : currentValidPos;
831
+ const pDisplayCurrentStep = ds ? ds.displayCurrentStep : displayCurrentStep;
832
+ const pDisplayTotalSteps = ds ? ds.displayTotalSteps : displayTotalSteps;
833
+ const pPopoverHeight = ds ? ds.popoverHeight : popoverHeight;
788
834
  const overlay = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
789
835
  /* @__PURE__ */ jsxRuntime.jsx(ClickLayer, {}),
790
836
  /* @__PURE__ */ jsxRuntime.jsx(OverlayWrapper, { children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { children: [
@@ -814,17 +860,17 @@ var WalkthroughOverlay = ({
814
860
  }
815
861
  )
816
862
  ] }) }),
817
- popoverStyle && /* @__PURE__ */ jsxRuntime.jsxs(PopoverContainer, { ref: popoverRef, style: popoverStyle, children: [
863
+ /* @__PURE__ */ jsxRuntime.jsxs(PopoverContainer, { ref: popoverRef, style: popoverStyle, children: [
818
864
  /* @__PURE__ */ jsxRuntime.jsxs(PopoverBody, { children: [
819
865
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "row", justifyContent: "space-between" }, children: [
820
- step.title ? /* @__PURE__ */ jsxRuntime.jsx(PopoverTitle, { children: step.title }) : "",
821
- ((_j = step.isShowStep) != null ? _j : isShowStep) && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { color: "#a1a1aa", fontSize: "12px", fontWeight: "400" }, children: [
822
- displayCurrentStep,
866
+ pStep.title ? /* @__PURE__ */ jsxRuntime.jsx(PopoverTitle, { children: pStep.title }) : "",
867
+ ((_j = pStep.isShowStep) != null ? _j : pIsShowStep) && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { color: "#a1a1aa", fontSize: "12px", fontWeight: "400" }, children: [
868
+ pDisplayCurrentStep,
823
869
  "/",
824
- displayTotalSteps
870
+ pDisplayTotalSteps
825
871
  ] })
826
872
  ] }),
827
- /* @__PURE__ */ jsxRuntime.jsx(DescriptionScrollArea, { $height: popoverHeight, children: Array.isArray(step.description) && step.description.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs(DescriptionBlock, { $direction: d.direction, children: [
873
+ /* @__PURE__ */ jsxRuntime.jsx(DescriptionScrollArea, { $height: pPopoverHeight, children: Array.isArray(pStep.description) && pStep.description.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs(DescriptionBlock, { $direction: d.direction, children: [
828
874
  d.title && /* @__PURE__ */ jsxRuntime.jsxs(DescriptionTitle, { children: [
829
875
  d.title,
830
876
  ": "
@@ -833,23 +879,23 @@ var WalkthroughOverlay = ({
833
879
  ] }, i)) })
834
880
  ] }),
835
881
  /* @__PURE__ */ jsxRuntime.jsxs(PopoverFooter, { children: [
836
- /* @__PURE__ */ jsxRuntime.jsx(StepCounter, { children: isShowSkip && /* @__PURE__ */ jsxRuntime.jsx(
882
+ /* @__PURE__ */ jsxRuntime.jsx(StepCounter, { children: pIsShowSkip && /* @__PURE__ */ jsxRuntime.jsx(
837
883
  "button",
838
884
  {
839
885
  className: "wt-btn",
840
886
  style: { background: skipColor || "transparent", color: skipColor ? "#fff" : "#a1a1aa" },
841
887
  onClick: skip,
842
- children: skipLabel
888
+ children: pSkipLabel
843
889
  }
844
890
  ) }),
845
891
  /* @__PURE__ */ jsxRuntime.jsxs(ButtonGroup, { children: [
846
- ((_k = step.isShowPrev) != null ? _k : isShowPrev) && currentValidPos > 0 && /* @__PURE__ */ jsxRuntime.jsx(
892
+ ((_k = pStep.isShowPrev) != null ? _k : pIsShowPrev) && pCurrentValidPos > 0 && /* @__PURE__ */ jsxRuntime.jsx(
847
893
  "button",
848
894
  {
849
895
  className: "wt-btn",
850
896
  style: { background: prevColor || "#f4f4f5", color: prevColor ? "#fff" : "#3f3f46" },
851
897
  onClick: prev,
852
- children: prevLabel
898
+ children: pPrevLabel
853
899
  }
854
900
  ),
855
901
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -859,7 +905,7 @@ var WalkthroughOverlay = ({
859
905
  className: "wt-btn wt-btn-next",
860
906
  style: { background: nextColor || "#000", color: "#fff", boxShadow: "0 2px 8px rgba(0,0,0,0.3)" },
861
907
  onClick: next,
862
- children: isLast ? doneLabel : nextLabel
908
+ children: pIsLast ? pDoneLabel : pNextLabel
863
909
  }
864
910
  )
865
911
  ] })
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 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 // Clear last highlight position so replayed tours start fresh\n globalState = { ...globalState, lastRect: null };\n notify();\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 animationSpeed = 350,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 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 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 tourAnimationSpeed = activeTour?.animationSpeed ?? 350;\n const { rect, isAnimating } = useAnimatedRect(step, tourAnimationSpeed, 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 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\n // Display-only step counter values (manualTotal / initialStep)\n const displayInitialStep = activeTour.initialStep ?? 0;\n const displayCurrentStep = currentValidPos + 1 + displayInitialStep;\n const displayTotalSteps = activeTour.manualTotal ?? totalSteps;\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 triggerTarget = typeof step.isTriggerEl === \"string\"\n ? document.getElementById(resolveElId(step.isTriggerEl))\n : document.getElementById(resolveElId(step.el));\n if (triggerTarget) triggerTarget.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\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 : null;\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 {popoverStyle && (\n <PopoverContainer ref={popoverRef} style={popoverStyle}>\n <PopoverBody>\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\"}}>{displayCurrentStep}/{displayTotalSteps}</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\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 // Clear last highlight position so replayed tours start fresh\n globalState = { ...globalState, lastRect: null };\n notify();\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 animationSpeed = 350,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 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 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 // Snapshot of the step content shown in the popover.\n // Only updates when the popover is ready (not animating), so the user\n // never sees content swap while the popover is still visible / fading out.\n const displayStepRef = useRef(null);\n const displayPosRef = useRef(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 tourAnimationSpeed = activeTour?.animationSpeed ?? 350;\n const { rect, isAnimating } = useAnimatedRect(step, tourAnimationSpeed, 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 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\n // Display-only step counter values (manualTotal / initialStep)\n const displayInitialStep = activeTour.initialStep ?? 0;\n const displayCurrentStep = currentValidPos + 1 + displayInitialStep;\n const displayTotalSteps = activeTour.manualTotal ?? totalSteps;\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 triggerTarget = typeof step.isTriggerEl === \"string\"\n ? document.getElementById(resolveElId(step.isTriggerEl))\n : document.getElementById(resolveElId(step.el));\n if (triggerTarget) triggerTarget.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\n // Snapshot the popover content so it only updates when the popover is\n // actually visible. This prevents the user from seeing content swap\n // while the highlight is still animating to the next element.\n if (popoverReady) {\n displayStepRef.current = {\n step,\n nextLabel,\n prevLabel,\n skipLabel,\n isShowSkip,\n isShowPrev,\n isShowStep,\n doneLabel,\n isLast,\n currentValidPos,\n displayCurrentStep,\n displayTotalSteps,\n popoverHeight,\n };\n displayPosRef.current = currentValidPos;\n }\n\n const ds = displayStepRef.current;\n\n // When animating: render popover offscreen so it can be measured by the\n // position-calculation effect, but keep it invisible to the user.\n // When ready: show at the computed position with the pop-in animation.\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 // Use snapshot content for the popover; fall back to live step if no snapshot yet (first render).\n const pStep = ds ? ds.step : step;\n const pNextLabel = ds ? ds.nextLabel : nextLabel;\n const pPrevLabel = ds ? ds.prevLabel : prevLabel;\n const pSkipLabel = ds ? ds.skipLabel : skipLabel;\n const pIsShowSkip = ds ? ds.isShowSkip : isShowSkip;\n const pIsShowPrev = ds ? ds.isShowPrev : isShowPrev;\n const pIsShowStep = ds ? ds.isShowStep : isShowStep;\n const pDoneLabel = ds ? ds.doneLabel : doneLabel;\n const pIsLast = ds ? ds.isLast : isLast;\n const pCurrentValidPos = ds ? ds.currentValidPos : currentValidPos;\n const pDisplayCurrentStep = ds ? ds.displayCurrentStep : displayCurrentStep;\n const pDisplayTotalSteps = ds ? ds.displayTotalSteps : displayTotalSteps;\n const pPopoverHeight = ds ? ds.popoverHeight : popoverHeight;\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>\n <div style={{display: \"flex\",flexDirection: \"row\", justifyContent: \"space-between\"}}>\n {pStep.title ? <PopoverTitle>{pStep.title}</PopoverTitle>:''}\n {(pStep.isShowStep ?? pIsShowStep) && (\n <span style={{color: \"#a1a1aa\" ,fontSize: \"12px\", fontWeight: \"400\"}}>{pDisplayCurrentStep}/{pDisplayTotalSteps}</span>\n )}\n </div>\n <DescriptionScrollArea $height={pPopoverHeight}>\n {Array.isArray(pStep.description) &&\n pStep.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 {pIsShowSkip && (\n <button\n className=\"wt-btn\"\n style={{ background: skipColor || \"transparent\", color: skipColor ? \"#fff\" : \"#a1a1aa\" }}\n onClick={skip}\n >\n {pSkipLabel}\n </button>\n )}\n </StepCounter>\n\n <ButtonGroup>\n {(pStep.isShowPrev ?? pIsShowPrev) && pCurrentValidPos > 0 && (\n <button\n className=\"wt-btn\"\n style={{ background: prevColor || \"#f4f4f5\", color: prevColor ? \"#fff\" : \"#3f3f46\" }}\n onClick={prev}\n >\n {pPrevLabel}\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 {pIsLast ? pDoneLabel : pNextLabel}\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
@@ -534,6 +534,8 @@ var WalkthroughOverlay = ({
534
534
  const nextBtnRef = useRef(null);
535
535
  const popoverRef = useRef(null);
536
536
  const [popoverPos, setPopoverPos] = useState(null);
537
+ const displayStepRef = useRef(null);
538
+ const displayPosRef = useRef(null);
537
539
  const [validSteps, setValidSteps] = useState([]);
538
540
  const waitingForElsRef = useRef(false);
539
541
  useEffect(() => {
@@ -774,6 +776,25 @@ var WalkthroughOverlay = ({
774
776
  const popoverWidth = clampSize(step.width, window.innerWidth);
775
777
  const popoverHeight = step.height ? clampSize(step.height, window.innerHeight) : void 0;
776
778
  const popoverReady = popoverPos && !isAnimating;
779
+ if (popoverReady) {
780
+ displayStepRef.current = {
781
+ step,
782
+ nextLabel,
783
+ prevLabel,
784
+ skipLabel,
785
+ isShowSkip,
786
+ isShowPrev,
787
+ isShowStep,
788
+ doneLabel,
789
+ isLast,
790
+ currentValidPos,
791
+ displayCurrentStep,
792
+ displayTotalSteps,
793
+ popoverHeight
794
+ };
795
+ displayPosRef.current = currentValidPos;
796
+ }
797
+ const ds = displayStepRef.current;
777
798
  const popoverStyle = popoverReady ? {
778
799
  top: popoverPos.top,
779
800
  left: popoverPos.left,
@@ -782,7 +803,32 @@ var WalkthroughOverlay = ({
782
803
  padding: $popoverPadding,
783
804
  borderRadius: $popoverBorderRadius,
784
805
  fontFamily: "inherit"
785
- } : null;
806
+ } : {
807
+ position: "fixed",
808
+ top: -9999,
809
+ left: -9999,
810
+ opacity: 0,
811
+ pointerEvents: "none",
812
+ width: popoverWidth,
813
+ minWidth: $popoverMinWidth,
814
+ padding: $popoverPadding,
815
+ borderRadius: $popoverBorderRadius,
816
+ fontFamily: "inherit",
817
+ animation: "none"
818
+ };
819
+ const pStep = ds ? ds.step : step;
820
+ const pNextLabel = ds ? ds.nextLabel : nextLabel;
821
+ const pPrevLabel = ds ? ds.prevLabel : prevLabel;
822
+ const pSkipLabel = ds ? ds.skipLabel : skipLabel;
823
+ const pIsShowSkip = ds ? ds.isShowSkip : isShowSkip;
824
+ const pIsShowPrev = ds ? ds.isShowPrev : isShowPrev;
825
+ const pIsShowStep = ds ? ds.isShowStep : isShowStep;
826
+ const pDoneLabel = ds ? ds.doneLabel : doneLabel;
827
+ const pIsLast = ds ? ds.isLast : isLast;
828
+ const pCurrentValidPos = ds ? ds.currentValidPos : currentValidPos;
829
+ const pDisplayCurrentStep = ds ? ds.displayCurrentStep : displayCurrentStep;
830
+ const pDisplayTotalSteps = ds ? ds.displayTotalSteps : displayTotalSteps;
831
+ const pPopoverHeight = ds ? ds.popoverHeight : popoverHeight;
786
832
  const overlay = /* @__PURE__ */ jsxs(Fragment, { children: [
787
833
  /* @__PURE__ */ jsx(ClickLayer, {}),
788
834
  /* @__PURE__ */ jsx(OverlayWrapper, { children: /* @__PURE__ */ jsxs("svg", { children: [
@@ -812,17 +858,17 @@ var WalkthroughOverlay = ({
812
858
  }
813
859
  )
814
860
  ] }) }),
815
- popoverStyle && /* @__PURE__ */ jsxs(PopoverContainer, { ref: popoverRef, style: popoverStyle, children: [
861
+ /* @__PURE__ */ jsxs(PopoverContainer, { ref: popoverRef, style: popoverStyle, children: [
816
862
  /* @__PURE__ */ jsxs(PopoverBody, { children: [
817
863
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "row", justifyContent: "space-between" }, children: [
818
- step.title ? /* @__PURE__ */ jsx(PopoverTitle, { children: step.title }) : "",
819
- ((_j = step.isShowStep) != null ? _j : isShowStep) && /* @__PURE__ */ jsxs("span", { style: { color: "#a1a1aa", fontSize: "12px", fontWeight: "400" }, children: [
820
- displayCurrentStep,
864
+ pStep.title ? /* @__PURE__ */ jsx(PopoverTitle, { children: pStep.title }) : "",
865
+ ((_j = pStep.isShowStep) != null ? _j : pIsShowStep) && /* @__PURE__ */ jsxs("span", { style: { color: "#a1a1aa", fontSize: "12px", fontWeight: "400" }, children: [
866
+ pDisplayCurrentStep,
821
867
  "/",
822
- displayTotalSteps
868
+ pDisplayTotalSteps
823
869
  ] })
824
870
  ] }),
825
- /* @__PURE__ */ jsx(DescriptionScrollArea, { $height: popoverHeight, children: Array.isArray(step.description) && step.description.map((d, i) => /* @__PURE__ */ jsxs(DescriptionBlock, { $direction: d.direction, children: [
871
+ /* @__PURE__ */ jsx(DescriptionScrollArea, { $height: pPopoverHeight, children: Array.isArray(pStep.description) && pStep.description.map((d, i) => /* @__PURE__ */ jsxs(DescriptionBlock, { $direction: d.direction, children: [
826
872
  d.title && /* @__PURE__ */ jsxs(DescriptionTitle, { children: [
827
873
  d.title,
828
874
  ": "
@@ -831,23 +877,23 @@ var WalkthroughOverlay = ({
831
877
  ] }, i)) })
832
878
  ] }),
833
879
  /* @__PURE__ */ jsxs(PopoverFooter, { children: [
834
- /* @__PURE__ */ jsx(StepCounter, { children: isShowSkip && /* @__PURE__ */ jsx(
880
+ /* @__PURE__ */ jsx(StepCounter, { children: pIsShowSkip && /* @__PURE__ */ jsx(
835
881
  "button",
836
882
  {
837
883
  className: "wt-btn",
838
884
  style: { background: skipColor || "transparent", color: skipColor ? "#fff" : "#a1a1aa" },
839
885
  onClick: skip,
840
- children: skipLabel
886
+ children: pSkipLabel
841
887
  }
842
888
  ) }),
843
889
  /* @__PURE__ */ jsxs(ButtonGroup, { children: [
844
- ((_k = step.isShowPrev) != null ? _k : isShowPrev) && currentValidPos > 0 && /* @__PURE__ */ jsx(
890
+ ((_k = pStep.isShowPrev) != null ? _k : pIsShowPrev) && pCurrentValidPos > 0 && /* @__PURE__ */ jsx(
845
891
  "button",
846
892
  {
847
893
  className: "wt-btn",
848
894
  style: { background: prevColor || "#f4f4f5", color: prevColor ? "#fff" : "#3f3f46" },
849
895
  onClick: prev,
850
- children: prevLabel
896
+ children: pPrevLabel
851
897
  }
852
898
  ),
853
899
  /* @__PURE__ */ jsx(
@@ -857,7 +903,7 @@ var WalkthroughOverlay = ({
857
903
  className: "wt-btn wt-btn-next",
858
904
  style: { background: nextColor || "#000", color: "#fff", boxShadow: "0 2px 8px rgba(0,0,0,0.3)" },
859
905
  onClick: next,
860
- children: isLast ? doneLabel : nextLabel
906
+ children: pIsLast ? pDoneLabel : pNextLabel
861
907
  }
862
908
  )
863
909
  ] })
@@ -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 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 // Clear last highlight position so replayed tours start fresh\n globalState = { ...globalState, lastRect: null };\n notify();\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 animationSpeed = 350,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 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 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 tourAnimationSpeed = activeTour?.animationSpeed ?? 350;\n const { rect, isAnimating } = useAnimatedRect(step, tourAnimationSpeed, 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 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\n // Display-only step counter values (manualTotal / initialStep)\n const displayInitialStep = activeTour.initialStep ?? 0;\n const displayCurrentStep = currentValidPos + 1 + displayInitialStep;\n const displayTotalSteps = activeTour.manualTotal ?? totalSteps;\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 triggerTarget = typeof step.isTriggerEl === \"string\"\n ? document.getElementById(resolveElId(step.isTriggerEl))\n : document.getElementById(resolveElId(step.el));\n if (triggerTarget) triggerTarget.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\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 : null;\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 {popoverStyle && (\n <PopoverContainer ref={popoverRef} style={popoverStyle}>\n <PopoverBody>\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\"}}>{displayCurrentStep}/{displayTotalSteps}</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\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 // Clear last highlight position so replayed tours start fresh\n globalState = { ...globalState, lastRect: null };\n notify();\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 animationSpeed = 350,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 animationSpeed,\n manualTotal,\n initialStep,\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 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 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 // Snapshot of the step content shown in the popover.\n // Only updates when the popover is ready (not animating), so the user\n // never sees content swap while the popover is still visible / fading out.\n const displayStepRef = useRef(null);\n const displayPosRef = useRef(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 tourAnimationSpeed = activeTour?.animationSpeed ?? 350;\n const { rect, isAnimating } = useAnimatedRect(step, tourAnimationSpeed, 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 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\n // Display-only step counter values (manualTotal / initialStep)\n const displayInitialStep = activeTour.initialStep ?? 0;\n const displayCurrentStep = currentValidPos + 1 + displayInitialStep;\n const displayTotalSteps = activeTour.manualTotal ?? totalSteps;\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 triggerTarget = typeof step.isTriggerEl === \"string\"\n ? document.getElementById(resolveElId(step.isTriggerEl))\n : document.getElementById(resolveElId(step.el));\n if (triggerTarget) triggerTarget.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\n // Snapshot the popover content so it only updates when the popover is\n // actually visible. This prevents the user from seeing content swap\n // while the highlight is still animating to the next element.\n if (popoverReady) {\n displayStepRef.current = {\n step,\n nextLabel,\n prevLabel,\n skipLabel,\n isShowSkip,\n isShowPrev,\n isShowStep,\n doneLabel,\n isLast,\n currentValidPos,\n displayCurrentStep,\n displayTotalSteps,\n popoverHeight,\n };\n displayPosRef.current = currentValidPos;\n }\n\n const ds = displayStepRef.current;\n\n // When animating: render popover offscreen so it can be measured by the\n // position-calculation effect, but keep it invisible to the user.\n // When ready: show at the computed position with the pop-in animation.\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 // Use snapshot content for the popover; fall back to live step if no snapshot yet (first render).\n const pStep = ds ? ds.step : step;\n const pNextLabel = ds ? ds.nextLabel : nextLabel;\n const pPrevLabel = ds ? ds.prevLabel : prevLabel;\n const pSkipLabel = ds ? ds.skipLabel : skipLabel;\n const pIsShowSkip = ds ? ds.isShowSkip : isShowSkip;\n const pIsShowPrev = ds ? ds.isShowPrev : isShowPrev;\n const pIsShowStep = ds ? ds.isShowStep : isShowStep;\n const pDoneLabel = ds ? ds.doneLabel : doneLabel;\n const pIsLast = ds ? ds.isLast : isLast;\n const pCurrentValidPos = ds ? ds.currentValidPos : currentValidPos;\n const pDisplayCurrentStep = ds ? ds.displayCurrentStep : displayCurrentStep;\n const pDisplayTotalSteps = ds ? ds.displayTotalSteps : displayTotalSteps;\n const pPopoverHeight = ds ? ds.popoverHeight : popoverHeight;\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>\n <div style={{display: \"flex\",flexDirection: \"row\", justifyContent: \"space-between\"}}>\n {pStep.title ? <PopoverTitle>{pStep.title}</PopoverTitle>:''}\n {(pStep.isShowStep ?? pIsShowStep) && (\n <span style={{color: \"#a1a1aa\" ,fontSize: \"12px\", fontWeight: \"400\"}}>{pDisplayCurrentStep}/{pDisplayTotalSteps}</span>\n )}\n </div>\n <DescriptionScrollArea $height={pPopoverHeight}>\n {Array.isArray(pStep.description) &&\n pStep.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 {pIsShowSkip && (\n <button\n className=\"wt-btn\"\n style={{ background: skipColor || \"transparent\", color: skipColor ? \"#fff\" : \"#a1a1aa\" }}\n onClick={skip}\n >\n {pSkipLabel}\n </button>\n )}\n </StepCounter>\n\n <ButtonGroup>\n {(pStep.isShowPrev ?? pIsShowPrev) && pCurrentValidPos > 0 && (\n <button\n className=\"wt-btn\"\n style={{ background: prevColor || \"#f4f4f5\", color: prevColor ? \"#fff\" : \"#3f3f46\" }}\n onClick={prev}\n >\n {pPrevLabel}\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 {pIsLast ? pDoneLabel : pNextLabel}\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.54",
3
+ "version": "1.1.56",
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",