{"version":3,"file":"shared-lib.Cf7IvSec.mjs","names":["useMemo","useState","useRef"],"sources":["https:/framerusercontent.com/modules/MhSD8JypBloQlZMSXC1C/jfi1nJplSt5DyWgJsqgw/Directional_Cursor.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,useSpring,useTransform}from\"framer-motion\";import{useEffect,useMemo,useRef,useState}from\"react\";// Default Spring Configuration\nconst defaultSpringConfig={damping:45,stiffness:400,mass:1,restDelta:.001};// Default cursor SVG component\nconst DefaultCursorSVG=()=>{return /*#__PURE__*/_jsxs(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:50,height:54,viewBox:\"0 0 50 54\",fill:\"none\",children:[/*#__PURE__*/_jsxs(\"g\",{filter:\"url(#filter0_d_91_7928)\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M42.6817 41.1495L27.5103 6.79925C26.7269 5.02557 24.2082 5.02558 23.3927 6.79925L7.59814 41.1495C6.75833 42.9759 8.52712 44.8902 10.4125 44.1954L24.3757 39.0496C24.8829 38.8627 25.4385 38.8627 25.9422 39.0496L39.8121 44.1954C41.6849 44.8902 43.4884 42.9759 42.6817 41.1495Z\",fill:\"black\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M43.7146 40.6933L28.5431 6.34306C27.3556 3.65428 23.5772 3.69516 22.3668 6.32755L6.57226 40.6778C5.3134 43.4156 7.97238 46.298 10.803 45.2549L24.7662 40.109C25.0221 40.0147 25.2999 40.0156 25.5494 40.1082L39.4193 45.254C42.2261 46.2953 44.9254 43.4347 43.7146 40.6933Z\",stroke:\"white\",strokeWidth:2.25825})]}),/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsxs(\"filter\",{id:\"filter0_d_91_7928\",x:.602397,y:.952444,width:49.0584,height:52.428,filterUnits:\"userSpaceOnUse\",colorInterpolationFilters:\"sRGB\",children:[/*#__PURE__*/_jsx(\"feFlood\",{floodOpacity:0,result:\"BackgroundImageFix\"}),/*#__PURE__*/_jsx(\"feColorMatrix\",{in:\"SourceAlpha\",type:\"matrix\",values:\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",result:\"hardAlpha\"}),/*#__PURE__*/_jsx(\"feOffset\",{dy:2.25825}),/*#__PURE__*/_jsx(\"feGaussianBlur\",{stdDeviation:2.25825}),/*#__PURE__*/_jsx(\"feComposite\",{in2:\"hardAlpha\",operator:\"out\"}),/*#__PURE__*/_jsx(\"feColorMatrix\",{type:\"matrix\",values:\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0\"}),/*#__PURE__*/_jsx(\"feBlend\",{mode:\"normal\",in2:\"BackgroundImageFix\",result:\"effect1_dropShadow_91_7928\"}),/*#__PURE__*/_jsx(\"feBlend\",{mode:\"normal\",in:\"SourceGraphic\",in2:\"effect1_dropShadow_91_7928\",result:\"shape\"})]})})]});};// Custom SVG renderer component\nconst CustomSvgRenderer=({svgCode})=>{return /*#__PURE__*/_jsx(\"div\",{dangerouslySetInnerHTML:{__html:svgCode}});};// Device detection utility\nconst getDeviceType=()=>{if(typeof window===\"undefined\")return\"desktop\";const userAgent=navigator.userAgent.toLowerCase();const isMobile=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent);if(isMobile){const isTablet=/(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(userAgent);return isTablet?\"tablet\":\"mobile\";}return\"desktop\";};// Canvas detection\nconst renderContext=RenderTarget.current();const isCanvasMode=renderContext===RenderTarget.canvas;/**\n * DirectionalCursor - Directional cursor with device-aware rendering\n * Features device detection and progressive control system\n *\n * @framerDisableUnlink\n */export default function DirectionalCursor({hideOnMobile=false,hideOnTablet=false,keepBrowserCursor=false,controlMode=\"beginner\",followSpeed=50,cursorSize=1,damping=45,stiffness=400,mass=1,restDelta=.001,customSvg=\"\",useCustomSvg=false,keepTextCursor=true,keepPointerCursor=true,style,...props}){// Build spring config from individual props\nconst springConfig=useMemo(()=>({damping,stiffness,mass,restDelta}),[damping,stiffness,mass,restDelta]);// Device detection\nconst[deviceType,setDeviceType]=useState(\"desktop\");useEffect(()=>{setDeviceType(getDeviceType());},[]);// Hide cursor based on device type\nconst shouldHideCursor=useMemo(()=>{if(deviceType===\"mobile\"&&hideOnMobile)return true;if(deviceType===\"tablet\"&&hideOnTablet)return true;return false;},[deviceType,hideOnMobile,hideOnTablet]);// State management for cursor behavior\nconst[isMoving,setIsMoving]=useState(false);// Refs for tracking cursor state and calculations\nconst lastMousePos=useRef({x:0,y:0});const velocity=useRef({x:0,y:0});const lastUpdateTime=useRef(Date.now());const previousAngle=useRef(0);const accumulatedRotation=useRef(0);// Dynamic spring configuration based on control mode\nconst mapRange=(value,inMin,inMax,outMin,outMax)=>(value-inMin)*(outMax-outMin)/(inMax-inMin)+outMin;const positionSpringConfig=useMemo(()=>{// In beginner mode, use followSpeed to control spring behavior\nif(controlMode===\"beginner\"&&keepBrowserCursor){let calculatedStiffness,calculatedDamping;if(followSpeed<=50){calculatedStiffness=mapRange(followSpeed,0,50,50,400);calculatedDamping=mapRange(followSpeed,0,50,15,45);}else{calculatedStiffness=mapRange(followSpeed,50,100,400,8e3);calculatedDamping=mapRange(followSpeed,50,100,45,200);}return{stiffness:calculatedStiffness,damping:calculatedDamping,mass:springConfig.mass,restDelta:springConfig.restDelta};}else{return springConfig;}},[followSpeed,springConfig,controlMode,keepBrowserCursor]);// Position springs with dynamic config\nconst cursorX=useSpring(typeof window!==\"undefined\"?window.innerWidth/2:0,positionSpringConfig);const cursorY=useSpring(\"-50px\",positionSpringConfig);const translateX=useSpring(\"-50%\",positionSpringConfig);const translateY=useSpring(\"0%\",positionSpringConfig);// Rotation and scale springs use separate configs\nconst rotation=useSpring(0,{...positionSpringConfig,damping:60,stiffness:300});const baseScale=useSpring(1,{...positionSpringConfig,stiffness:500,damping:35});// Combine base scale with cursor size\nconst combinedScale=useTransform(baseScale,value=>value*(cursorSize||1));// Determine which cursor to render\nconst cursorElement=useCustomSvg&&customSvg?/*#__PURE__*/_jsx(CustomSvgRenderer,{svgCode:customSvg}):/*#__PURE__*/_jsx(DefaultCursorSVG,{});// CSS injection effect for hiding browser cursor - IMPROVED VERSION\nuseEffect(()=>{if(keepBrowserCursor)return;const cssId=\"smooth-cursor-css\";let existingStyle=document.getElementById(cssId);if(!existingStyle){existingStyle=document.createElement(\"style\");existingStyle.id=cssId;document.head.appendChild(existingStyle);}// Start with base rule - hide cursor everywhere\nlet css=`* { cursor: none !important; }`;// Exception: Keep text cursor on text input elements\nif(keepTextCursor){css+=`\n                input,\n                textarea,\n                select,\n                [contenteditable=\"true\"] {\n                    cursor: text !important;\n                }\n            `;}// Exception: Keep pointer cursor on interactive elements AND their children\nif(keepPointerCursor){css+=`\n                button,\n                button *,\n                a,\n                a *,\n                [role=\"button\"],\n                [role=\"button\"] *,\n                [onclick],\n                [onclick] *,\n                .clickable,\n                .clickable *,\n                [data-clickable],\n                [data-clickable] *,\n                input[type=\"button\"],\n                input[type=\"submit\"],\n                input[type=\"reset\"],\n                label[for],\n                label[for] * {\n                    cursor: pointer !important;\n                }\n            `;}existingStyle.innerHTML=css;return()=>{const styleElement=document.getElementById(cssId);if(styleElement)styleElement.remove();};},[keepBrowserCursor,keepTextCursor,keepPointerCursor]);// Main cursor tracking and animation effect\nuseEffect(()=>{if(isCanvasMode||shouldHideCursor)return;const updateVelocity=currentPos=>{const currentTime=Date.now();const deltaTime=currentTime-lastUpdateTime.current;if(deltaTime>0){velocity.current={x:(currentPos.x-lastMousePos.current.x)/deltaTime,y:(currentPos.y-lastMousePos.current.y)/deltaTime};}lastUpdateTime.current=currentTime;lastMousePos.current=currentPos;};const smoothMouseMove=e=>{const currentPos={x:e.clientX,y:e.clientY};updateVelocity(currentPos);const speed=Math.sqrt(velocity.current.x*velocity.current.x+velocity.current.y*velocity.current.y);// Update cursor position\ncursorX.set(currentPos.x);cursorY.set(currentPos.y);if(speed>.1){// Calculate angle based on velocity direction\nconst currentAngle=Math.atan2(velocity.current.y,velocity.current.x)*(180/Math.PI)+90;// Handle angle wrapping for smooth rotation\nlet angleDiff=currentAngle-previousAngle.current;if(angleDiff>180)angleDiff-=360;if(angleDiff<-180)angleDiff+=360;accumulatedRotation.current+=angleDiff;rotation.set(accumulatedRotation.current);previousAngle.current=currentAngle;// Directional transform\nconst normalizedAngle=(currentAngle%360+360)%360;if(normalizedAngle>=315||normalizedAngle<45){// Moving UP\ntranslateX.set(\"-50%\");translateY.set(\"0%\");}else if(normalizedAngle>=45&&normalizedAngle<135){// Moving RIGHT\ntranslateX.set(\"-100%\");translateY.set(\"-50%\");}else if(normalizedAngle>=135&&normalizedAngle<225){// Moving DOWN\ntranslateX.set(\"-50%\");translateY.set(\"-100%\");}else{// Moving LEFT\ntranslateX.set(\"0%\");translateY.set(\"-50%\");}// Scale down slightly during movement\nbaseScale.set(.95);setIsMoving(true);const timeout=setTimeout(()=>{baseScale.set(1);setIsMoving(false);},150);return()=>clearTimeout(timeout);}};// Throttled mouse movement\nlet rafId;const throttledMouseMove=e=>{if(rafId)return;rafId=requestAnimationFrame(()=>{smoothMouseMove(e);rafId=0;});};window.addEventListener(\"mousemove\",throttledMouseMove);return()=>{window.removeEventListener(\"mousemove\",throttledMouseMove);if(rafId)cancelAnimationFrame(rafId);};},[cursorX,cursorY,rotation,baseScale,translateX,translateY,isCanvasMode,shouldHideCursor]);// Canvas preview\nif(isCanvasMode){return null;}// Don't render cursor if hidden on current device\nif(shouldHideCursor){return null;}return /*#__PURE__*/_jsx(motion.div,{style:{position:\"fixed\",left:cursorX,top:cursorY,translateX:translateX,translateY:translateY,rotate:rotation,scale:combinedScale,zIndex:100,pointerEvents:\"none\",willChange:\"transform\",...style},children:cursorElement});}// Set display name for better debugging\nDirectionalCursor.displayName=\"Directional Cursor\";// Property controls\naddPropertyControls(DirectionalCursor,{hideOnMobile:{type:ControlType.Boolean,title:\"Hide on Mobile\",defaultValue:false,description:\"Hide the custom cursor on mobile devices.\",enabledTitle:\"Hide\",disabledTitle:\"Show\"},hideOnTablet:{type:ControlType.Boolean,title:\"Hide on Tablet\",defaultValue:false,description:\"Hide the custom cursor on tablet devices.\",enabledTitle:\"Hide\",disabledTitle:\"Show\"},keepBrowserCursor:{type:ControlType.Boolean,title:\"Keep Browser Cursor\",defaultValue:false,description:\"Keep the default browser cursor visible alongside the custom cursor.\",enabledTitle:\"Keep\",disabledTitle:\"Hide\"},controlMode:{type:ControlType.Enum,title:\"Control Mode\",options:[\"beginner\",\"advanced\"],optionTitles:[\"Beginner\",\"Advanced\"],defaultValue:\"beginner\",displaySegmentedControl:true,description:\"Choose control complexity: Beginner for simple adjustments, Advanced for detailed spring physics.\",hidden:props=>!props.keepBrowserCursor},followSpeed:{type:ControlType.Number,title:\"Follow Speed\",defaultValue:50,min:0,max:100,step:5,displayStepper:true,hidden:props=>!props.keepBrowserCursor||props.controlMode===\"advanced\",description:\"How quickly the cursor follows your pointer: 0 = smooth & slow, 100 = instant & snappy.\"},damping:{type:ControlType.Number,title:\"Damping\",defaultValue:45,min:1,max:100,description:\"Controls bounciness. Higher = less bouncy, more controlled.\",hidden:props=>!props.keepBrowserCursor||props.controlMode===\"beginner\"},stiffness:{type:ControlType.Number,title:\"Stiffness\",defaultValue:400,min:50,max:1e3,description:\"Spring tension. Higher = faster response, more aggressive movement.\",hidden:props=>!props.keepBrowserCursor||props.controlMode===\"beginner\"},mass:{type:ControlType.Number,title:\"Mass\",defaultValue:1,min:.1,max:5,step:.1,description:\"Virtual weight. Higher = heavier feel, more inertia.\"},restDelta:{type:ControlType.Number,title:\"Rest Delta\",defaultValue:.001,min:.001,max:.1,step:.001,description:\"Animation stop threshold. Lower = more precise, higher = better performance.\"},keepTextCursor:{type:ControlType.Boolean,title:\"Keep Text Cursor\",defaultValue:true,hidden:props=>props.keepBrowserCursor,description:\"Keep text cursor in input fields when browser cursor is hidden.\"},keepPointerCursor:{type:ControlType.Boolean,title:\"Keep Pointer Cursor\",defaultValue:true,hidden:props=>props.keepBrowserCursor,description:\"Keep pointer cursor on buttons & links when browser cursor is hidden.\"},cursorSize:{type:ControlType.Number,title:\"Cursor Size\",defaultValue:1,min:.1,max:3,step:.1,displayStepper:true,description:\"Size of the cursor: 0.1 = tiny, 1 = normal, 3 = large.\"},useCustomSvg:{type:ControlType.Boolean,title:\"Use Custom SVG\",defaultValue:false,description:\"Enable to use a custom SVG instead of the default cursor.\\n\\nMade with ❤️ by [Soyeb](https://framer.link/project)\",enabledTitle:\"Custom\",disabledTitle:\"Default\"},customSvg:{type:ControlType.String,title:\"Custom SVG Code\",displayTextArea:true,placeholder:\"Paste your complete SVG markup here...\",hidden:props=>!props.useCustomSvg,description:\"Enter full SVG markup including <svg> tags.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DirectionalCursor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"DirectionalCursorProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Directional_Cursor.map"],"mappings":"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"}