{"version":3,"file":"UseDragScroll.BaBGEeyc.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/3HqsnX5eGiHL6pSjQnKB/uNZpNy6PePaCnXBCnXuu/UseDragScroll.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback}from\"react\";export function useDragToScroll(Component){return props=>{const ref=useRef(null);// State for the drag interaction\nconst[isDragging,setIsDragging]=useState(false);const[startX,setStartX]=useState(0);const[scrollLeftStart,setScrollLeftStart]=useState(0);// NEW: State to track if the content is overflowing\nconst[isOverflowing,setIsOverflowing]=useState(false);// NEW: Function to check for overflow\nconst checkOverflow=useCallback(()=>{if(ref.current){const{scrollWidth,clientWidth}=ref.current;// Update state based on whether content width is greater than container width\nsetIsOverflowing(scrollWidth>clientWidth);}},[])// Empty dependency array, function is memoized\n;// NEW: Effect to check overflow on mount and window resize\nuseEffect(()=>{// Initial check\ncheckOverflow();// Add resize listener to re-check on window size changes\nwindow.addEventListener(\"resize\",checkOverflow);// Cleanup listener on unmount\nreturn()=>window.removeEventListener(\"resize\",checkOverflow);},[checkOverflow])// Re-run if checkOverflow function changes (it won't)\n;const handleMouseDown=e=>{// Exit early if content is not overflowing\nif(!isOverflowing||!ref.current)return;setIsDragging(true);setStartX(e.pageX-ref.current.offsetLeft);setScrollLeftStart(ref.current.scrollLeft);// NEW: Disable text selection during drag\nref.current.style.userSelect=\"none\";};const handleMouseMove=e=>{if(!isDragging||!isOverflowing||!ref.current)return;e.preventDefault()// This also helps prevent text selection\n;const x=e.pageX-ref.current.offsetLeft;const walk=(x-startX)*1.5;ref.current.scrollLeft=scrollLeftStart-walk;};const handleMouseUpAndLeave=()=>{if(!ref.current)return;setIsDragging(false);// NEW: Re-enable text selection when drag ends\nref.current.style.userSelect=\"auto\";};useEffect(()=>{const element=ref.current;if(element){// Set initial cursor style based on overflow state\nelement.style.cursor=isOverflowing?\"grab\":\"auto\";if(isDragging){element.style.cursor=\"grabbing\";}// Add event listeners (they will be guarded by isOverflowing inside handlers)\nelement.addEventListener(\"mousedown\",handleMouseDown);element.addEventListener(\"mousemove\",handleMouseMove);element.addEventListener(\"mouseup\",handleMouseUpAndLeave);element.addEventListener(\"mouseleave\",handleMouseUpAndLeave);return()=>{element.removeEventListener(\"mousedown\",handleMouseDown);element.removeEventListener(\"mousemove\",handleMouseMove);element.removeEventListener(\"mouseup\",handleMouseUpAndLeave);element.removeEventListener(\"mouseleave\",handleMouseUpAndLeave);};}},[isDragging,startX,scrollLeftStart,isOverflowing]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});};}\nexport const __FramerMetadata__ = {\"exports\":{\"useDragToScroll\":{\"type\":\"reactHoc\",\"name\":\"useDragToScroll\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UseDragScroll.map"],"mappings":"qJAAoG,SAAgB,EAAgB,EAAU,CAAC,MAAO,IAAO,CAAC,IAAM,EAAIA,EAAO,IAAI,EAC9K,CAAC,EAAW,GAAeC,EAAS,EAAK,EAAO,CAAC,EAAO,GAAWA,EAAS,CAAC,EAAO,CAAC,EAAgB,GAAoBA,EAAS,CAAC,EACnI,CAAC,EAAc,GAAkBA,EAAS,EAAK,EAC9C,EAAcC,MAAgB,CAAC,GAAG,EAAI,QAAQ,CAAC,GAAK,CAAC,cAAY,eAAa,EAAI,QACxF,EAAiB,EAAY,CAAW,CAAE,CAAC,EAAE,CAAC,CAAC,EAE/C,OACA,EAAc,EACd,EAAO,iBAAiB,SAAS,CAAa,MACpC,EAAO,oBAAoB,SAAS,CAAa,GAAI,CAAC,CAAa,CAAC,EAC7E,IAAM,EAAgB,GAAG,CACvB,CAAC,GAAe,CAAC,EAAI,UAAe,EAAc,EAAI,EAAE,EAAU,EAAE,MAAM,EAAI,QAAQ,UAAU,EAAE,EAAmB,EAAI,QAAQ,UAAU,EAC9I,EAAI,QAAQ,MAAM,WAAW,OAAO,EAAQ,EAAgB,GAAG,CAAC,GAAG,CAAC,GAAY,CAAC,GAAe,CAAC,EAAI,QAAQ,OAAO,EAAE,eAAe,EAC7F,IAAM,GAArC,EAAE,MAAM,EAAI,QAAQ,WAAyB,GAAQ,IAAI,EAAI,QAAQ,WAAW,EAAgB,CAAK,EAAQ,MAA0B,CAAK,EAAI,UAAe,EAAc,EAAK,EAC3L,EAAI,QAAQ,MAAM,WAAW,OAAO,EAEif,OAF/e,MAAc,CAAC,IAAM,EAAQ,EAAI,QAAQ,GAAG,EAEiJ,MADnO,GAAQ,MAAM,OAAO,EAAc,OAAO,OAAU,IAAY,EAAQ,MAAM,OAAO,YACrF,EAAQ,iBAAiB,YAAY,CAAe,EAAE,EAAQ,iBAAiB,YAAY,CAAe,EAAE,EAAQ,iBAAiB,UAAU,CAAqB,EAAE,EAAQ,iBAAiB,aAAa,CAAqB,MAAY,CAAC,EAAQ,oBAAoB,YAAY,CAAe,EAAE,EAAQ,oBAAoB,YAAY,CAAe,EAAE,EAAQ,oBAAoB,UAAU,CAAqB,EAAE,EAAQ,oBAAoB,aAAa,CAAqB,CAAE,CAAG,EAAE,CAAC,EAAW,EAAO,EAAgB,CAAa,CAAC,EAAsB,EAAK,EAAU,CAAC,GAAG,EAAU,KAAG,CAAC,CAAE,CAAE,qBAhBpiB,IAAyD"}