{"version":3,"file":"index.umd.cjs","sources":["../src/components/TourCursor.jsx","../src/components/TourGuide.jsx"],"sourcesContent":["import  { useEffect, useState } from 'react';\r\n\r\n\r\nconst TourCursor = ({ \r\n  x, \r\n  CursorMessageGap,\r\n  y, \r\n  isOffScreen,\r\n  Theme,\r\n  name = \"Guide\", \r\n  color = \"#ff6b6b\", \r\n  message, \r\n  isVisible = true, \r\n  onClick, \r\n  showNext = false,\r\n  cursorImage = null,\r\n  messageBoxStyle = {},\r\n  cursorStyle = {},\r\n  nextButtonText,\r\n  nextButtonContinueText,\r\n  nextButtonClassName,\r\n  nextButtonStyle = {},\r\n  messageClass,\r\n CustomCursorClass=\"\",\r\n}) => {\r\n  const [messagePosition, setMessagePosition] = useState({ left: false, top: false });\r\n  const [isHidden, setIsHidden] = useState(false);\r\n  \r\n  useEffect(() => {\r\n    // Message bubble dimensions\r\n    const messageWidth = 192; // w-48 = 12rem = 192px\r\n    const messageHeight = 100; // Approximate height including padding and content\r\n    const cursorOffset = 24; // Distance from cursor to message\r\n    \r\n    // Calculate available space in each direction\r\n    const spaceRight = window.innerWidth - x - cursorOffset;\r\n    const spaceLeft = x - cursorOffset;\r\n    const spaceBottom = window.innerHeight - y - cursorOffset;\r\n    const spaceTop = y - cursorOffset;\r\n    \r\n    //  change position if message would go off-screen\r\n    const shouldBeOnLeft = spaceRight < messageWidth && spaceLeft > messageWidth;\r\n    const shouldBeOnTop = spaceBottom < messageHeight && spaceTop > messageHeight;\r\n    \r\n    setMessagePosition({\r\n      left: shouldBeOnLeft,\r\n      top: shouldBeOnTop\r\n    });\r\n  }, [x, y]);\r\n\r\n  if (!isVisible) return null;\r\n  \r\n  const messageClasses = [\r\n    `${messageClass} ${Theme == \"Light\" ? \"bg-[#ffffff2d] text-gray-900\" : \"bg-[#0a0b1b] text-white\"}  z-[999999999999999999999999999999] absolute px-2 md:!px-3 py-2 rounded-lg text-[10px] md:!text-xs font-medium  2xl:!text-sm  backdrop-blur-md shadow-lg border-[0.2px] w-24 md:!w-48`,\r\n    messagePosition.left ? \"right-14\" : \"left-8\",\r\n    messagePosition.top && !messagePosition.left ? \"bottom-2 left-6\" : \"top-6\",\r\n    \"transition-all duration-500 ease-in-out\"\r\n  ].join(\" \");\r\n\r\n  const handleHide = (e) => {\r\n    e.stopPropagation();\r\n    setIsHidden(true);\r\n  };\r\n\r\n  const handleContinue = (e) => {\r\n    e.stopPropagation();\r\n    setIsHidden(false);\r\n  };\r\n  \r\n  return (\r\n    <div \r\n      className=\"fixed react-web-guide pointer-events-none z-[999999999999999999999999999999]\"\r\n      style={{ \r\n        left: isHidden ? `${window.innerWidth - 60}px` : `${x}px`,\r\n        top: isHidden ? `50%` : `${y}px`,\r\n        transition: 'all 0.5s ease-out',\r\n        ...cursorStyle\r\n      }}\r\n    >\r\n      {/* Main cursor */}\r\n      <div className=\"relative z-[999999999999999999999999999999999]\">\r\n        {cursorImage ? (\r\n          <img \r\n            src={cursorImage} \r\n            alt=\"Custom cursor\" \r\n            className={` ${CustomCursorClass} w-6 h-6 drop-shadow-lg ${messagePosition.top ? '-translate-y-5' : ''}  z-[99999999999999999]`}\r\n            style={{\r\n              filter: 'drop-shadow(0 2px 4px rgba(0,0,0,0.2))'\r\n            }}\r\n          />\r\n        ) : (\r\n          <svg \r\n            width=\"24\" \r\n            height=\"24\" \r\n            viewBox=\"0 0 24 24\" \r\n            fill=\"none\" \r\n            className={`drop-shadow-lg ${messagePosition.top ? '-translate-y-5' : ''} z-[99999999999999999]`}\r\n            style={{\r\n              filter: 'drop-shadow(0 2px 4px rgba(0,0,0,0.2))'\r\n            }}\r\n          >\r\n            <path\r\n              d=\"M5.65376 12.3673H5.46026L5.31717 12.4976L0.500002 16.8829L0.500002 1.19841L11.7841 12.3673H5.65376Z\"\r\n              fill={color}\r\n              stroke=\"white\"\r\n              strokeWidth=\"2\"\r\n            />\r\n          </svg>\r\n        )}\r\n        \r\n        {/* Name tag */}\r\n        <div \r\n          className={`absolute ${!messagePosition.top ? 'top-6 -left-4' : 'bottom-1 -left-4'}  px-2 py-[1px] rounded-full text-[10px] max-w-[65px]  truncate text-white font-medium whitespace-nowrap shadow-md`}\r\n          style={{ backgroundColor: color }}\r\n        >\r\n          {name}\r\n        </div>\r\n        \r\n        {/* Message bubble */}\r\n        {message && (\r\n          <>\r\n            <div \r\n              className={messageClasses}\r\n              style={{\r\n                ...messageBoxStyle,\r\n                opacity: isHidden ? 0 : 1,\r\n                transform: isHidden ? 'translateX(100px)' : 'translateX(0)',\r\n                marginLeft: messagePosition.left ? '0' : `${CursorMessageGap}px`,\r\n              }}\r\n            >\r\n              <button \r\n                onClick={handleHide}\r\n                title='Pause the tour'\r\n                className={` ${Theme === \"Light\" ? \"bg-[#ffffff6c]\" : \"bg-[#6b6b6b6c] \"} pointer-events-auto absolute -top-6 -right-6 border  backdrop-blur-md rounded-full p-[6px] shadow-md hover:shadow-lg transition-all duration-200 hover:scale-110`}\r\n              >\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"red\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-heart-crack\" aria-hidden=\"true\"><path d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\"></path><path d=\"m12 13-1-1 2-2-3-3 2-2\"></path></svg>\r\n              </button>\r\n              <div className=\"mb-2\">{message}</div>\r\n              {showNext && !isHidden && (\r\n                <button \r\n                  title={isOffScreen ? nextButtonContinueText :  nextButtonText}\r\n                  onClick={onClick}\r\n                  className={`${nextButtonClassName} ${Theme === \"Light\" ? \"text-white bg-black/90\" : \"bg-white/90 text-black\"} !pointer-events-auto !z-[99999999999999999999] backdrop-blur-sm rounded-md border px-3 py-[1px] rounded-full text-[10px] flex items-center justify-center font-medium hover:shadow-lg transition-all duration-200 transform hover:scale-105 active:scale-95`}\r\n                  style={nextButtonStyle}\r\n                >\r\n                  {isOffScreen ? nextButtonContinueText :  nextButtonText}\r\n                </button>\r\n              )}\r\n            </div>\r\n            {/* Heart button - positioned independently */}\r\n            {isHidden && (\r\n              <div \r\n                className=\"absolute\"\r\n                style={{\r\n                  left: messagePosition.left ? 'auto' : 'calc(100% - 0.4rem)',\r\n                  right: messagePosition.left ? 'calc(100% - 3rem)' : 'auto',\r\n                  top: '50%',\r\n                  transform: 'translateY(-50%)'\r\n                }}\r\n              >\r\n                <button \r\n                  onClick={handleContinue}\r\n                  title='Continue the tour'\r\n                  className={` ${Theme === \"Light\" ? \"bg-[#ffffff6c]\" : \"bg-[#6b6b6b6c] \"} pointer-events-auto backdrop-blur-md border rounded-full p-[6px] shadow-md hover:shadow-lg transition-all duration-200 hover:scale-110`}\r\n                >\r\n                 <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"red\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-heart\" aria-hidden=\"true\"><path d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\"></path></svg>\r\n                </button>\r\n              </div>\r\n            )}\r\n          </>\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default TourCursor; ","import React, { useState, useEffect, useRef } from 'react';\r\nimport TourCursor from './TourCursor';\r\n\r\nconst TourTooltip = ({ isVisible, onClose, theme }) => {\r\n  if (!isVisible) return null;\r\n\r\n  return (\r\n    <div \r\n      className=\"react-web-guide absolute w-36 bottom-full mb-2 left-1/2 transform -translate-x-1/2 animate-bounce-subtle z-[99999999999999999]\"\r\n    >\r\n      <div \r\n        className={`relative ${theme === \"Dark\" ? \"bg-black/90 text-white\" : \"bg-white/90 text-black\"} px-3  py-2 rounded-lg shadow-lg backdrop-blur-sm tooltip-enter tooltip-enter-active`}\r\n      >\r\n        <button\r\n          onClick={onClose}\r\n          className={`absolute -top-2 -right-2 ${theme === \"Dark\" ? \"bg-black/90 text-white\" : \"bg-white/90 text-black\"} backdrop-blur-sm rounded-full p-1 shadow-md hover:shadow-lg transition-all duration-200 hover:scale-110`}\r\n        >\r\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n            <path d=\"M18 6 6 18\"></path>\r\n            <path d=\"m6 6 12 12\"></path>\r\n          </svg>\r\n        </button>\r\n        <div className=\"text-sm font-medium text-center flex items-center gap-2\">\r\n          <span>Start your web tour here!</span>\r\n        </div>\r\n        <div className={`absolute bottom-0 right-2 transform  translate-y-1/2 rotate-45 w-2 h-2 ${theme === \"Dark\" ? \"bg-black/90\" : \"bg-white/90\"}`}></div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\n// Enhanced function to find the scrollable container\r\nconst findScrollableContainer = (element) => {\r\n  if (!element || element === document.body) return window;\r\n  \r\n  const { overflow, overflowY, overflowX, height } = window.getComputedStyle(element);\r\n  const hasScrollableContent = element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\r\n  const isScrollable = ['auto', 'scroll'].some(value => \r\n    [overflow, overflowY, overflowX].includes(value)\r\n  );\r\n  \r\n  // Check for h-screen class or 100vh height\r\n  const hasFixedHeight = element.classList.contains('h-screen') || \r\n                         height === '100vh' || \r\n                         height === '100%' ||\r\n                         element.style.height === '100vh' ||\r\n                         element.style.height === '100%';\r\n  \r\n  if ((isScrollable || hasFixedHeight) && hasScrollableContent) {\r\n    return element;\r\n  }\r\n  \r\n  return findScrollableContainer(element.parentElement);\r\n};\r\n\r\n// Enhanced viewport check for both window and container scrolling\r\nconst isElementInViewport = (element, container = window) => {\r\n  if (!element) return false;\r\n  \r\n  const rect = element.getBoundingClientRect();\r\n  \r\n  if (container === window) {\r\n    return (\r\n      rect.top >= -100 &&\r\n      rect.bottom <= window.innerHeight + 100 &&\r\n      rect.left >= -100 &&\r\n      rect.right <= window.innerWidth + 100\r\n    );\r\n  } else {\r\n    const containerRect = container.getBoundingClientRect();\r\n    return (\r\n      rect.top >= containerRect.top - 100 &&\r\n      rect.bottom <= containerRect.bottom + 100 &&\r\n      rect.left >= containerRect.left - 100 &&\r\n      rect.right <= containerRect.right + 100\r\n    );\r\n  }\r\n};\r\n\r\nconst TourGuide = ({ \r\n  steps = [], \r\n  Theme = \"Light\",\r\n  onComplete,\r\n  startButtonText = \"Start Tour\",\r\n  skipButtonText = \"Skip Tour\",\r\n  minimizedStartText = \"Start\",\r\n  minimizedSkipText = \"Skip\",\r\n  showProgress = true,\r\n  Minimized = true,\r\n  showTooltip = true,\r\n  buttonPosition = {\r\n    bottom: '1.5rem',\r\n    right: '1.5rem',\r\n    left: 'auto',\r\n    top: 'auto'\r\n  },\r\n  expandedButtonClassName = ` ${Theme === \"Dark\" ? \"text-white bg-black/90\" : \"bg-white/90 text-black\"}  border   px-4 py-2 rounded-full shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-105`,\r\n  minimizedButtonClassName = ` ${Theme === \"Dark\" ? \"text-white bg-black/90\" : \"bg-white/90 text-black\"}  border  px-2 py-2 rounded-full shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-105`,\r\n  buttonStyle = {},\r\n  CloseButtonText= <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"lucide lucide-x\" aria-hidden=\"true\"><path d=\"M18 6 6 18\"></path><path d=\"m6 6 12 12\"></path></svg>,\r\n  ExpandButtonText= <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"lucide lucide-maximize2 lucide-maximize-2\" aria-hidden=\"true\"><path d=\"M15 3h6v6\"></path><path d=\"m21 3-7 7\"></path><path d=\"m3 21 7-7\"></path><path d=\"M9 21H3v-6\"></path></svg>,\r\n  minimizedButtonStyle = {\r\n    width: '3rem',\r\n    height: '3rem',\r\n    fontSize: '0.875rem'\r\n  },\r\n  closeButtonClassName = `${Theme === \"Dark\" ? \"text-white bg-black/90\" : \"bg-white/90 text-black\"} -translate-y-4 -translate-x-1  rounded-full  p-1 shadow-md hover:shadow-lg transition-all duration-200 hover:scale-110`,\r\n  expandButtonClassName = `${Theme === \"Dark\" ? \"text-white bg-black/90\" : \"bg-white/90 text-black\"} -translate-y-4 -translate-x-1  rounded-full  p-1 shadow-md hover:shadow-lg transition-all duration-200 hover:scale-110`,\r\n  closeButtonStyle = {},\r\n  expandButtonStyle = {},\r\n  cursorImage = null,\r\n  messageBoxStyle = {},\r\n  cursorStyle = {},\r\n  nextButtonText = \"Next\",\r\n  nextButtonContinueText= \"Continue\",\r\n  nextButtonClassName,\r\n  nextButtonStyle = {},\r\n  messageClass,\r\n  // New prop to specify scrollable container selector or element\r\n  scrollContainer = null,\r\n  CustomCursorClass,\r\n}) => {\r\n  const [currentStep, setCurrentStep] = useState(0);\r\n  const [isActive, setIsActive] = useState(false);\r\n  const [isMinimized, setIsMinimized] = useState(Minimized);\r\n  const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });\r\n  const [isOffScreen, setIsOffScreen] = useState(false);\r\n  const [showCursor, setShowCursor] = useState(true);\r\n  const [showStartTooltip, setShowStartTooltip] = useState(showTooltip);\r\n  const [scrollableContainer, setScrollableContainer] = useState(null);\r\n  const containerRef = useRef(null);\r\n\r\n  // Find the appropriate scrollable container\r\n  useEffect(() => {\r\n    if (!isActive || !steps[currentStep]?.ref.current) return;\r\n\r\n    let container;\r\n    \r\n    if (scrollContainer) {\r\n      // Use provided container (can be selector string or element)\r\n      if (typeof scrollContainer === 'string') {\r\n        container = document.querySelector(scrollContainer);\r\n      } else {\r\n        container = scrollContainer;\r\n      }\r\n    } else {\r\n      // Auto-detect scrollable container with enhanced detection\r\n      container = findScrollableContainer(steps[currentStep].ref.current);\r\n      \r\n      // Additional check for common scrollable containers\r\n      if (container === window) {\r\n        // Look for common scrollable container patterns\r\n        const commonSelectors = [\r\n          '.scrollDiv', // Your specific class\r\n          '[class*=\"h-screen\"]',\r\n          '[class*=\"overflow\"]',\r\n          '.scroll-smooth',\r\n          'main',\r\n          '#app',\r\n          '#root'\r\n        ];\r\n        \r\n        for (const selector of commonSelectors) {\r\n          const foundContainer = document.querySelector(selector);\r\n          if (foundContainer && foundContainer.scrollHeight > foundContainer.clientHeight) {\r\n            container = foundContainer;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    \r\n    setScrollableContainer(container);\r\n    containerRef.current = container;\r\n  }, [isActive, currentStep, scrollContainer]);\r\n\r\n  const updateCursorPosition = () => {\r\n    if (!isActive || currentStep >= steps.length) return;\r\n    \r\n    const step = steps[currentStep];\r\n    if (step.ref.current) {\r\n      const rect = step.ref.current.getBoundingClientRect();\r\n      const x = rect.left + (step.offsetX || rect.width / 2);\r\n      const y = rect.top + (step.offsetY || rect.height / 2);\r\n      \r\n      setCursorPosition({ x, y });\r\n      \r\n      // Check if element is visible within its container\r\n      const container = containerRef.current || window;\r\n      const isVisible = isElementInViewport(step.ref.current, container);\r\n      setIsOffScreen(!isVisible);\r\n    }\r\n  };\r\n\r\n  const scrollToElement = (element, container) => {\r\n    if (!element) return;\r\n\r\n    if (container === window) {\r\n      // Window scrolling - avoid horizontal scrolling\r\n      element.scrollIntoView({ \r\n        behavior: 'smooth', \r\n        block: 'center',\r\n        inline: 'nearest'\r\n      });\r\n    } else if (container && container.scrollTo) {\r\n      // Container scrolling - only scroll vertically\r\n      const containerRect = container.getBoundingClientRect();\r\n      const elementRect = element.getBoundingClientRect();\r\n      \r\n      const scrollTop = container.scrollTop + elementRect.top - containerRect.top - container.clientHeight / 2 + elementRect.height / 2;\r\n      \r\n      container.scrollTo({\r\n        top: scrollTop,\r\n        behavior: 'smooth'\r\n      });\r\n    } else {\r\n      // Fallback to scrollIntoView - avoid horizontal scrolling\r\n      element.scrollIntoView({ \r\n        behavior: 'smooth', \r\n        block: 'center',\r\n        inline: 'nearest'\r\n      });\r\n    }\r\n  };\r\n\r\n  const handleNextClick = () => {\r\n    if (currentStep < steps.length - 1) {\r\n      const nextElement = steps[currentStep + 1]?.ref.current;\r\n      const container = containerRef.current || window;\r\n      \r\n      if (nextElement && !isElementInViewport(nextElement, container)) {\r\n        setShowCursor(false); // Hide cursor while scrolling\r\n        scrollToElement(nextElement, container);\r\n        \r\n        setTimeout(() => {\r\n          setIsOffScreen(false);\r\n          setShowCursor(true); // Show cursor again after scrolling\r\n          nextStep();\r\n        }, 800);\r\n      } else {\r\n        nextStep();\r\n      }\r\n    } else {\r\n      nextStep();\r\n    }\r\n  };\r\n\r\n  useEffect(() => {\r\n    if (!isActive) return;\r\n    \r\n    updateCursorPosition();\r\n    \r\n    const container = containerRef.current;\r\n    const handleScroll = () => updateCursorPosition();\r\n    const handleResize = () => updateCursorPosition();\r\n    \r\n    // Add keyboard event handler\r\n    const handleKeyDown = (e) => {\r\n      if (e.key === 'ArrowRight') {\r\n        handleNextClick();\r\n      }\r\n    };\r\n    \r\n    // Add scroll listeners to both window and container\r\n    window.addEventListener('scroll', handleScroll, { passive: true });\r\n    window.addEventListener('resize', handleResize);\r\n    window.addEventListener('keydown', handleKeyDown);\r\n    \r\n    if (container && container !== window) {\r\n      container.addEventListener('scroll', handleScroll, { passive: true });\r\n    }\r\n    \r\n    return () => {\r\n      window.removeEventListener('scroll', handleScroll);\r\n      window.removeEventListener('resize', handleResize);\r\n      window.removeEventListener('keydown', handleKeyDown);\r\n      \r\n      if (container && container !== window) {\r\n        container.removeEventListener('scroll', handleScroll);\r\n      }\r\n    };\r\n  }, [isActive, currentStep, scrollableContainer]);\r\n\r\n  const nextStep = () => {\r\n    if (currentStep < steps.length - 1) {\r\n      setCurrentStep(currentStep + 1);\r\n    } else {\r\n      setIsActive(false);\r\n      onComplete?.();\r\n    }\r\n  };\r\n\r\n  const startTour = () => {\r\n    setIsActive(true);\r\n    setCurrentStep(0);\r\n    setShowCursor(true);\r\n    setTimeout(updateCursorPosition, 500);\r\n  };\r\n\r\n  const handleButtonClick = () => {\r\n    if (isActive) {\r\n      setIsActive(false);\r\n      onComplete?.();\r\n    } else {\r\n      startTour();\r\n      setShowStartTooltip(false);\r\n    }\r\n  };\r\n\r\n  const handleMinimize = (e) => {\r\n    e.stopPropagation();\r\n    setIsMinimized(true);\r\n  };\r\n\r\n  const handleExpand = (e) => {\r\n    e.stopPropagation();\r\n    setIsMinimized(false);\r\n  };\r\n\r\n  return (\r\n    <div className='react-web-guide'>\r\n      <div \r\n        className=\"fixed z-[999999999999999999999999999999999]\"\r\n        style={buttonPosition}\r\n      >\r\n        {isMinimized ? (\r\n          <div className=\"relative\">\r\n            <TourTooltip \r\n              isVisible={showStartTooltip && !isActive} \r\n              onClose={() => setShowStartTooltip(false)}\r\n              theme={Theme}\r\n            />\r\n            <button\r\n              onClick={handleButtonClick}\r\n              className={`${minimizedButtonClassName} transition-all duration-500`}\r\n              style={{\r\n                ...minimizedButtonStyle,\r\n                ...buttonStyle\r\n              }}\r\n            >\r\n              {isActive ? minimizedSkipText : minimizedStartText}\r\n            </button>\r\n            <button\r\n              onClick={handleExpand}\r\n              className={`${expandButtonClassName} transition-all p-1  duration-500`}\r\n              style={expandButtonStyle}\r\n            >\r\n             {ExpandButtonText}\r\n            </button>\r\n          </div>\r\n        ) : (\r\n          <div className=\"relative z-[99999999999999999]\">\r\n            <TourTooltip \r\n              isVisible={showStartTooltip && !isActive} \r\n              onClose={() => setShowStartTooltip(false)}\r\n              theme={Theme}\r\n            />\r\n            <button\r\n              onClick={handleButtonClick}\r\n              className={`${expandedButtonClassName} transition-all duration-500`}\r\n              style={buttonStyle}\r\n            >\r\n              {isActive ? skipButtonText : startButtonText}\r\n            </button>\r\n            <button\r\n              onClick={handleMinimize}\r\n              className={`${closeButtonClassName} transition-all p-1  duration-500`}\r\n              style={closeButtonStyle}\r\n            >\r\n              {CloseButtonText}\r\n            </button>\r\n          </div>\r\n        )}\r\n      </div>\r\n\r\n      {isActive && (\r\n        <>\r\n          <TourCursor\r\n            x={isOffScreen ? window.innerWidth / 2 : cursorPosition.x}\r\n            y={isOffScreen ? window.innerHeight / 2 : cursorPosition.y}\r\n            Theme={Theme}\r\n            name={steps[currentStep]?.name || \"Guide\"}\r\n            color={steps[currentStep]?.color || \"#ff6b6b\"}\r\n            message={isOffScreen ? \"Hey the tour is incomplete!\" : steps[currentStep]?.message}\r\n            isVisible={showCursor}\r\n            onClick={handleNextClick}\r\n            showNext={true}\r\n            isOffScreen={isOffScreen}\r\n            cursorImage={cursorImage}\r\n            messageBoxStyle={messageBoxStyle}\r\n            cursorStyle={cursorStyle}\r\n            nextButtonText={nextButtonText}\r\n            nextButtonContinueText={nextButtonContinueText}\r\n            nextButtonClassName={nextButtonClassName}\r\n            nextButtonStyle={nextButtonStyle}\r\n            messageClass={messageClass}\r\n            CursorMessageGap={steps[currentStep]?.CursorMessageGap || 0}\r\n           CustomCursorClass={CustomCursorClass}\r\n          />\r\n          \r\n          {showProgress && (\r\n            <div className={`fixed top-4 right-4 z-[999999999] ${Theme =='Dark' ? 'bg-[#202020]' : 'bg-white/90' } backdrop-blur-sm border rounded-full px-4 py-2 shadow-lg`}>\r\n              <div className={`text-sm font-medium ${Theme =='Dark' ? 'text-white' : 'text-gray-700' } `}>\r\n                <span className=\"hidden sm:!block text-center\">Step {currentStep + 1} of {steps.length}</span>\r\n                <span className=\"sm:hidden\">{currentStep + 1}/{steps.length}</span>\r\n              </div>\r\n              <div className=\"w-full h-1 bg-gray-200 rounded-full mt-1\">\r\n                <div \r\n                  className=\"h-full bg-gradient-to-r from-purple-500 to-blue-500 rounded-full transition-all duration-500\"\r\n                  style={{ width: `${((currentStep + 1) / steps.length) * 100}%` }}\r\n                />\r\n              </div>\r\n            </div>\r\n          )}\r\n        </>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default TourGuide;"],"names":["TourCursor","x","CursorMessageGap","y","isOffScreen","Theme","name","color","message","isVisible","onClick","showNext","cursorImage","messageBoxStyle","cursorStyle","nextButtonText","nextButtonContinueText","nextButtonClassName","nextButtonStyle","messageClass","CustomCursorClass","messagePosition","setMessagePosition","useState","isHidden","setIsHidden","useEffect","spaceRight","spaceLeft","spaceBottom","spaceTop","shouldBeOnLeft","shouldBeOnTop","messageClasses","handleHide","e","handleContinue","jsx","jsxs","Fragment","TourTooltip","onClose","theme","findScrollableContainer","element","overflow","overflowY","overflowX","height","hasScrollableContent","isScrollable","value","hasFixedHeight","isElementInViewport","container","rect","containerRect","TourGuide","steps","onComplete","startButtonText","skipButtonText","minimizedStartText","minimizedSkipText","showProgress","Minimized","showTooltip","buttonPosition","expandedButtonClassName","minimizedButtonClassName","buttonStyle","CloseButtonText","ExpandButtonText","minimizedButtonStyle","closeButtonClassName","expandButtonClassName","closeButtonStyle","expandButtonStyle","scrollContainer","currentStep","setCurrentStep","isActive","setIsActive","isMinimized","setIsMinimized","cursorPosition","setCursorPosition","setIsOffScreen","showCursor","setShowCursor","showStartTooltip","setShowStartTooltip","scrollableContainer","setScrollableContainer","containerRef","useRef","_a","commonSelectors","selector","foundContainer","updateCursorPosition","step","scrollToElement","elementRect","scrollTop","handleNextClick","nextElement","nextStep","handleScroll","handleResize","handleKeyDown","startTour","handleButtonClick","handleMinimize","handleExpand","_b","_c","_d"],"mappings":"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"}