{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/wB2oToZ9G1i63TtPaRQh/t9jojM2oLROfoLOBfs3Z/ShinyCursor_Prod.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useRef,useEffect,useMemo,useState}from\"react\";import{cubicBezier}from\"framer-motion\";const brightnessCurve=cubicBezier(.6,.18,.84,.7);/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n */export default function ShinyCursor(props){const{color,size,brightness,edgeBlur}=props;const id=useMemo(generateId,[]);const filterRef=useRef(null);const ref=useRef(null);const pointLightRef=useRef(null);const mousePosition=useRef({x:0,y:0});const parentRef=useRef(null);const[initialized,setInitialized]=useState(false);useEffect(()=>{if(ref.current){const container=ref.current.parentElement;if(container){const parentElement=container.parentElement;if(parentElement){parentRef.current=parentElement;parentElement.style.filter=`url(#${id})`;parentElement.style.isolation=\"isolate\";}}}if(filterRef.current){filterRef.current.id=id;}},[ref.current,id]);useEffect(()=>{const handlePointerMove=event=>{mousePosition.current={x:event.pageX-window.pageXOffset,y:event.pageY-window.pageYOffset};setInitialized(true);if(!parentRef.current||!pointLightRef.current)return;const rect=parentRef.current.getBoundingClientRect();pointLightRef.current.setAttribute(\"y\",(mousePosition.current.y-rect.top).toString());pointLightRef.current.setAttribute(\"x\",(mousePosition.current.x-rect.left).toString());};const handleScroll=()=>{if(!parentRef.current||!pointLightRef.current)return;const rect=parentRef.current.getBoundingClientRect();pointLightRef.current.setAttribute(\"y\",(mousePosition.current.y-rect.top).toString());pointLightRef.current.setAttribute(\"x\",(mousePosition.current.x-rect.left).toString());};document.addEventListener(\"pointermove\",handlePointerMove);document.addEventListener(\"scroll\",handleScroll);return()=>{document.removeEventListener(\"pointermove\",handlePointerMove);document.removeEventListener(\"scroll\",handleScroll);};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...props.style,width:0,height:0},children:initialized&&/*#__PURE__*/_jsx(\"svg\",{width:\"0\",height:\"0\",children:/*#__PURE__*/_jsxs(\"filter\",{id:id,ref:filterRef,colorInterpolationFilters:\"sRGB\",children:[/*#__PURE__*/_jsx(\"feGaussianBlur\",{in:\"SourceAlpha\",stdDeviation:edgeBlur,result:\"blur1\"}),/*#__PURE__*/_jsx(\"feSpecularLighting\",{result:\"spec1\",in:\"blur1\",surfaceScale:5,specularConstant:brightnessCurve(brightness/100),specularExponent:100,lightingColor:color,children:/*#__PURE__*/_jsx(\"fePointLight\",{ref:pointLightRef,x:\"0\",y:\"0\",z:mapRange(size,10,200,100,600)})}),/*#__PURE__*/_jsx(\"feComposite\",{in:\"spec1\",in2:\"SourceAlpha\",operator:\"in\",result:\"specOut2\"}),/*#__PURE__*/_jsx(\"feComposite\",{in:\"SourceGraphic\",in2:\"specOut2\",operator:\"arithmetic\",k1:\"0\",k2:\"1\",k3:\"1\",k4:\"0\",result:\"litPaint\"})]})})});}ShinyCursor.displayName=\"Shiny Cursor\";addPropertyControls(ShinyCursor,{color:{type:ControlType.Color,defaultValue:\"#ffffff\"},size:{type:ControlType.Number,defaultValue:100,min:10,max:200,step:1},brightness:{type:ControlType.Number,defaultValue:75,min:0,max:100,step:1,unit:\"%\"},edgeBlur:{type:ControlType.Number,defaultValue:10,min:0,max:25,step:.1,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}const CHARACTERS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";function generateId(){let result=\"\";for(let i=0;i<8;i++){const randomIndex=Math.floor(Math.random()*CHARACTERS.length);result+=CHARACTERS.charAt(randomIndex);}return result;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ShinyCursor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ShinyCursor_Prod.map"],
  "mappings": "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",
  "names": ["brightnessCurve", "cubicBezier", "ShinyCursor", "props", "color", "size", "brightness", "edgeBlur", "id", "se", "generateId", "filterRef", "pe", "ref", "pointLightRef", "mousePosition", "parentRef", "initialized", "setInitialized", "ye", "ue", "container", "parentElement", "handlePointerMove", "event", "window", "rect", "handleScroll", "p", "u", "mapRange", "addPropertyControls", "ControlType", "value", "fromLow", "fromHigh", "toLow", "toHigh", "percentage", "CHARACTERS", "result", "i", "randomIndex"]
}
