{"version":3,"file":"MagneticGrid_Prod.CYYvEEFb.mjs","names":["mask","Base","MotionSVG","SVG","svg","getProps","Icon","getProps","React.useContext","React.useMemo","React.Fragment","React.useRef","React.useId","SVG","RichText","UtilsComponentMessage","useId","useRef","useCallback","x","props","useState"],"sources":["https:/framerusercontent.com/modules/SUBEdtCFaOJwrjN2Inhk/bznEUerLEqVVXGfsDOYE/pKERsxd4H.js","https:/framerusercontent.com/modules/tU9w8z6JJr5WqSAGwED9/naosvQ2yF5OqXKbWsFip/sHNc_d4Cd.js","https:/framerusercontent.com/modules/fMDE7Cqb2uOvQFAHEP2m/cRfVFRl0izzBulKFjOAe/W7oLCU4_B.js","https:/framer.com/m/Utils-Component-Message-ZVoG.js@cRfVFRl0izzBulKFjOAe","https:/framerusercontent.com/modules/aej5zpwxBpkMdzOteBwy/DWeAZ5wauvGM5oFwVdgS/Utils.js","https:/framer.com/m/Utils-FINc.js","https:/framerusercontent.com/modules/ZofMRQbpZ58D2E6Yl6pR/VK09T2AzGpxkBMkMDE7A/MagneticGrid_Prod.js"],"sourcesContent":["// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 3.75 0 L 0 11.25 L 7.5 11.25 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"11.25px\" id=\"q_nKPtBGJ\" transform=\"translate(2.25 6)\" width=\"7.5px\"/><path d=\"M 0 4.125 C 0 1.847 1.847 0 4.125 0 C 6.403 0 8.25 1.847 8.25 4.125 C 8.25 6.403 6.403 8.25 4.125 8.25 C 1.847 8.25 0 6.403 0 4.125 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"8.25px\" id=\"MpPyBdaZ4\" transform=\"translate(10.5 3)\" width=\"8.25px\"/><path d=\"M 0 5.25 L 0 0 L 8.25 0 L 8.25 5.25 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"5.25px\" id=\"vndv5ExCK\" transform=\"translate(12.75 14.25)\" width=\"8.25px\"/><path d=\"M 3.75 0 L 0 11.25 L 7.5 11.25 Z\" fill=\"transparent\" height=\"11.25px\" id=\"vm9iwQat7\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(2.25 6)\" width=\"7.5px\"/><path d=\"M 0 4.125 C 0 1.847 1.847 0 4.125 0 C 6.403 0 8.25 1.847 8.25 4.125 C 8.25 6.403 6.403 8.25 4.125 8.25 C 1.847 8.25 0 6.403 0 4.125 Z\" fill=\"transparent\" height=\"8.25px\" id=\"ZJXViX94I\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(10.5 3)\" width=\"8.25px\"/><path d=\"M 0 5.25 L 0 0 L 8.25 0 L 8.25 5.25 Z\" fill=\"transparent\" height=\"5.25px\" id=\"sATOM9inG\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(12.75 14.25)\" width=\"8.25px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,ezTt3ayMo:color??props.ezTt3ayMo??\"rgb(0, 0, 0)\",lschgej4H:width1??props.lschgej4H??1.5,qxTvv_EBh:alpha??props.qxTvv_EBh};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,ezTt3ayMo,lschgej4H,qxTvv_EBh,...restProps}=getProps(props);const href=useSVGTemplate(\"3151112179\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-c2uAX\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m6trwb\":qxTvv_EBh,\"--21h8s6\":ezTt3ayMo,\"--pgex8v\":lschgej4H,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-c2uAX { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"ezTt3ayMo\":\"color\",\"lschgej4H\":\"width1\",\"qxTvv_EBh\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Shapes\",\"color\":{\"type\":\"variable\",\"value\":\"21h8s6\"},\"set\":{\"localId\":\"vectorSet/NGVKdicsm\",\"id\":\"NGVKdicsm\",\"moduleId\":\"omX0gWFPqDwhaiWwf6ab\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-c2uAX\");Icon.displayName=\"Shapes\";export default Icon;addPropertyControls(Icon,{ezTt3ayMo:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},lschgej4H:{defaultValue:1.5,displayStepper:true,hidden:false,max:6,min:0,step:.5,title:\"Width\",type:ControlType.Number},qxTvv_EBh:{defaultValue:0,displayStepper:true,hidden:false,max:1,min:0,step:.1,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVector\":\"{\\\"name\\\":\\\"Shapes\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"21h8s6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NGVKdicsm\\\",\\\"id\\\":\\\"NGVKdicsm\\\",\\\"moduleId\\\":\\\"omX0gWFPqDwhaiWwf6ab\\\"}}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerIntrinsicHeight\":\"24\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"ezTt3ayMo\\\":\\\"color\\\",\\\"lschgej4H\\\":\\\"width1\\\",\\\"qxTvv_EBh\\\":\\\"alpha\\\"}\",\"framerDisableUnlink\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 4.5 C 0 2.015 3.694 0 8.25 0 C 12.806 0 16.5 2.015 16.5 4.5 C 16.5 6.985 12.806 9 8.25 9 C 3.694 9 0 6.985 0 4.5 Z\" fill-opacity=\"var(--1m6trwb, 0)\" fill=\"var(--21h8s6, rgb(0, 0, 0))\" height=\"9px\" id=\"xAWLUWrPZ\" transform=\"translate(3.75 3)\" width=\"16.5px\"/><path d=\"M 0 4.5 C 0 2.015 3.694 0 8.25 0 C 12.806 0 16.5 2.015 16.5 4.5 C 16.5 6.985 12.806 9 8.25 9 C 3.694 9 0 6.985 0 4.5 Z\" fill=\"transparent\" height=\"9px\" id=\"UJsAM5IhZ\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3.75 3)\" width=\"16.5px\"/><path d=\"M 0 0 L 0 4.5 C 0 6.985 3.694 9 8.25 9 C 12.806 9 16.5 6.985 16.5 4.5 L 16.5 0\" fill=\"transparent\" height=\"9px\" id=\"aEQ2yTY1B\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3.75 7.5)\" width=\"16.5px\"/><path d=\"M 0 0 L 0 4.5 C 0 6.985 3.694 9 8.25 9 C 12.806 9 16.5 6.985 16.5 4.5 L 16.5 0\" fill=\"transparent\" height=\"9px\" id=\"g0eQOYT5U\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--pgex8v, 1.5)\" stroke=\"var(--21h8s6, rgb(0, 0, 0))\" transform=\"translate(3.75 12)\" width=\"16.5px\"/></svg>';const getProps=({alpha,color,height,id,width,width1,...props})=>{return{...props,ezTt3ayMo:color??props.ezTt3ayMo??\"rgb(0, 0, 0)\",lschgej4H:width1??props.lschgej4H??1.5,qxTvv_EBh:alpha??props.qxTvv_EBh};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,ezTt3ayMo,lschgej4H,qxTvv_EBh,...restProps}=getProps(props);const href=useSVGTemplate(\"1449172719\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-CiD9c\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m6trwb\":qxTvv_EBh,\"--21h8s6\":ezTt3ayMo,\"--pgex8v\":lschgej4H,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-CiD9c { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"ezTt3ayMo\":\"color\",\"lschgej4H\":\"width1\",\"qxTvv_EBh\":\"alpha\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Database\",\"color\":{\"type\":\"variable\",\"value\":\"21h8s6\"},\"set\":{\"localId\":\"vectorSet/NGVKdicsm\",\"id\":\"NGVKdicsm\",\"moduleId\":\"omX0gWFPqDwhaiWwf6ab\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-CiD9c\");Icon.displayName=\"Database\";export default Icon;addPropertyControls(Icon,{ezTt3ayMo:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},lschgej4H:{defaultValue:1.5,displayStepper:true,hidden:false,max:6,min:0,step:.5,title:\"Width\",type:ControlType.Number},qxTvv_EBh:{defaultValue:0,displayStepper:true,hidden:false,max:1,min:0,step:.1,title:\"Alpha\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"true\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerVector\":\"{\\\"name\\\":\\\"Database\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"21h8s6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NGVKdicsm\\\",\\\"id\\\":\\\"NGVKdicsm\\\",\\\"moduleId\\\":\\\"omX0gWFPqDwhaiWwf6ab\\\"}}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"ezTt3ayMo\\\":\\\"color\\\",\\\"lschgej4H\\\":\\\"width1\\\",\\\"qxTvv_EBh\\\":\\\"alpha\\\"}\",\"framerIntrinsicHeight\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0b8b5e5)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const serializationHash=\"framer-q8Ttd\";const variantClassNames={XvqTw0Be9:\"framer-v-jjcw9a\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const getProps=({height,id,subtitle,title,width,...props})=>{var _ref,_ref1;return{...props,WuF2iG84P:(_ref=subtitle!==null&&subtitle!==void 0?subtitle:props.WuF2iG84P)!==null&&_ref!==void 0?_ref:\"Set up the component by adding background and bouncer elements to the component properties.\",yeAnKbEUZ:(_ref1=title!==null&&title!==void 0?title:props.yeAnKbEUZ)!==null&&_ref1!==void 0?_ref1:\"Screen Saver\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,yeAnKbEUZ,WuF2iG84P,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"XvqTw0Be9\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-jjcw9a\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"XvqTw0Be9\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(136, 85, 255, 0.1)\",...style},children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uh2i08\",layoutDependency:layoutDependency,layoutId:\"aM7oiNoFL\",children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-flw0dh\",\"data-framer-name\":\"Logo\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"GthLmGmBt\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 28 28\"><g id=\"ss11036020200_1\"><path d=\"M 0 0 L 28 0 L 28 28 L 0 28 Z\" fill=\"transparent\"></path><path d=\"M 21 7.113 C 21 7.041 21.029 6.971 21.079 6.921 L 27.534 0.465 C 27.613 0.388 27.73 0.365 27.831 0.407 C 27.933 0.449 28 0.548 28 0.658 L 28 13.888 C 28 13.96 27.971 14.028 27.921 14.079 L 21 21 Z M 7 21 L 7 7.658 C 7 7.548 6.933 7.449 6.831 7.407 C 6.73 7.365 6.613 7.388 6.534 7.465 L 0.079 13.921 C 0.028 13.972 0 14.041 0 14.113 L 0 27.728 C 0 27.877 0.122 28 0.273 28 L 13.888 28 C 13.96 28 14.028 27.971 14.079 27.921 L 21 21 Z\" fill=\"rgb(153, 102, 255)\"></path></g></svg>',svgContentId:11036020200,withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-k3ullq\",layoutDependency:layoutDependency,layoutId:\"E3DQBYSAf\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"SW50ZXItQm9sZA==\",\"--framer-font-family\":'\"Inter\", \"Inter Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(153, 102, 255))\"},children:\"Screen Saver\"})}),className:\"framer-q0gs4u\",\"data-framer-name\":\"Title\",fonts:[\"Inter-Bold\"],layoutDependency:layoutDependency,layoutId:\"UqJwZqJjg\",style:{\"--extracted-r6o4lv\":\"rgb(153, 102, 255)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:yeAnKbEUZ,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(153, 102, 255, 0.7))\"},children:\"Set up the component by adding background and bouncer elements to the component properties.\"})}),className:\"framer-g5dqhc\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"RJ7UF99m8\",style:{\"--extracted-r6o4lv\":\"rgba(153, 102, 255, 0.7)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:WuF2iG84P,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-q8Ttd.framer-qanqo2, .framer-q8Ttd .framer-qanqo2 { display: block; }\",\".framer-q8Ttd.framer-jjcw9a { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 200px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 400px; }\",\".framer-q8Ttd .framer-uh2i08 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: hidden; padding: 0px 20px 0px 20px; position: relative; width: 1px; }\",\".framer-q8Ttd .framer-flw0dh { flex: none; height: 28px; position: relative; width: 28px; }\",\".framer-q8Ttd .framer-k3ullq { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; max-width: 200px; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-q8Ttd .framer-q0gs4u, .framer-q8Ttd .framer-g5dqhc { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-q8Ttd.framer-jjcw9a, .framer-q8Ttd .framer-uh2i08, .framer-q8Ttd .framer-k3ullq { gap: 0px; } .framer-q8Ttd.framer-jjcw9a > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-q8Ttd.framer-jjcw9a > :first-child { margin-left: 0px; } .framer-q8Ttd.framer-jjcw9a > :last-child { margin-right: 0px; } .framer-q8Ttd .framer-uh2i08 > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-q8Ttd .framer-uh2i08 > :first-child, .framer-q8Ttd .framer-k3ullq > :first-child { margin-top: 0px; } .framer-q8Ttd .framer-uh2i08 > :last-child, .framer-q8Ttd .framer-k3ullq > :last-child { margin-bottom: 0px; } .framer-q8Ttd .framer-k3ullq > * { margin: 0px; margin-bottom: calc(12px / 2); margin-top: calc(12px / 2); } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 200\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"yeAnKbEUZ\":\"title\",\"WuF2iG84P\":\"subtitle\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerW7oLCU4_B=withCSS(Component,css,\"framer-q8Ttd\");export default FramerW7oLCU4_B;FramerW7oLCU4_B.displayName=\"Utils/Component Message\";FramerW7oLCU4_B.defaultProps={height:200,width:400};addPropertyControls(FramerW7oLCU4_B,{yeAnKbEUZ:{defaultValue:\"Screen Saver\",displayTextArea:false,title:\"Title\",type:ControlType.String},WuF2iG84P:{defaultValue:\"Set up the component by adding background and bouncer elements to the component properties.\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String}});addFonts(FramerW7oLCU4_B,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/DpPBYI0sL4fYLgAkX8KXOPVt7c.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/4RAEQdEOrcnDkhHiiCbJOw92Lk.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/1K3W8DizY3v4emK8Mb08YHxTbs.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tUSCtfYVM1I1IchuyCwz9gDdQ.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/VgYFWiwsAC5OYxAycRXXvhze58.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/DXD0Q7LSl7HEvDzucnyLnGBHM.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/GIryZETIX4IFypco5pYZONKhJIo.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerW7oLCU4_B\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerVariables\":\"{\\\"yeAnKbEUZ\\\":\\\"title\\\",\\\"WuF2iG84P\\\":\\\"subtitle\\\"}\",\"framerIntrinsicWidth\":\"400\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./W7oLCU4_B.map","/*\n * Utils/Component Message\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/fMDE7Cqb2uOvQFAHEP2m/cRfVFRl0izzBulKFjOAe/W7oLCU4_B.js\"\nexport { default } from \"https://framerusercontent.com/modules/fMDE7Cqb2uOvQFAHEP2m/cRfVFRl0izzBulKFjOAe/W7oLCU4_B.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{cloneElement}from\"react\";import UtilsComponentMessage from\"https://framer.com/m/Utils-Component-Message-ZVoG.js@cRfVFRl0izzBulKFjOAe\";export const ComponentMessage=({title,subtitle,style})=>{return /*#__PURE__*/_jsx(UtilsComponentMessage,{yeAnKbEUZ:title,WuF2iG84P:subtitle,style:{width:\"100%\",height:\"100%\",...style}});};/* \n    This function is also used many times to make sure components work even if we set a color style like \"Accent\" on their color properties. We can make this into a utility function.\n*/export const extractRGBColorFromString=str=>{const rgbRegex=/(rgba|rgb)\\(.*?\\)/g;const match=str.match(rgbRegex);return match?match[0]:str;};/*\n    This function makes a connected layer use the sizing of the component it is inside,\n    preventing it from being larger or smaller than the component's size.\n    Use this on layers connected with ControlType.ComponentInstance.\n*/export function styleLayer(layer,style={}){layer=Array.isArray(layer)?layer[0]:layer;let newLayer=layer;const{width,height,...otherStyle}=style;if(layer&&layer.props&&style&&(width||height)){if(typeof layer.type===\"function\"&&typeof layer.props.children===\"object\"){newLayer=/*#__PURE__*/cloneElement(layer,{children:{...layer.props.children,props:{...layer.props.children.props,style:{...layer.props.children.props.style,...width&&{width},...height&&{height},...otherStyle}}}});}else{newLayer=/*#__PURE__*/cloneElement(layer,{style:{...layer.props.style,...width&&{width},...height&&{height},...otherStyle}});}}return newLayer;}\nexport const __FramerMetadata__ = {\"exports\":{\"ComponentMessage\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"extractRGBColorFromString\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"styleLayer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utils.map","/*\n * Utils\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/aej5zpwxBpkMdzOteBwy/DWeAZ5wauvGM5oFwVdgS/Utils.js\"\n","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useCallback,useEffect,useState,useLayoutEffect,useId}from\"react\";import{ControlType,addPropertyControls,RenderTarget}from\"framer\";import{useInView}from\"framer-motion\";// import { ComponentMessage } from \"@/utils/ComponentMessage\";\nimport{ComponentMessage}from\"https://framer.com/m/Utils-FINc.js\";// Dynamic import for ReactP5Wrapper\nconst useReactP5Wrapper=()=>{const[ReactP5Wrapper,setReactP5Wrapper]=useState(null);const[isLoading,setIsLoading]=useState(true);useEffect(()=>{if(typeof window!==\"undefined\"){// Use a more immediate approach to prevent flash\nconst loadP5Wrapper=async()=>{try{//   const module = await import(\"@p5-wrapper/react\");\nconst module=await import(\"https://cdn.jsdelivr.net/gh/framer-university/components/npm-bundles/p5-react-6.js\");setReactP5Wrapper(()=>module.ReactP5Wrapper);}catch(error){console.error(\"Failed to load ReactP5Wrapper:\",error);}finally{setIsLoading(false);}};loadP5Wrapper();}else{setIsLoading(false);}},[]);return{ReactP5Wrapper,isLoading};};// ------------------------------------------------------------ //\n// DEFAULT GRID OBJECT\n// ------------------------------------------------------------ //\n// Simple default GridObject class\nclass DefaultGridObject{update(mouseX,mouseY,interact){const currentTime=this.p5.millis();if(interact){this.lastInteractionTime=currentTime;if(this.mode===\"looker\"){const angle=this.p5.atan2(mouseY-this.y,mouseX-this.x);this.targetRotation=angle;this.targetX=this.x;this.targetY=this.y;this.targetScale=1;}else if(this.mode===\"scaler\"){const distance=this.p5.dist(mouseX,mouseY,this.x,this.y);const maxDistance=this.radius;if(distance<maxDistance){const normalizedDistance=distance/maxDistance;const scaleMultiplier=1+(1-normalizedDistance)*this.intensity;this.targetScale=scaleMultiplier;}else{this.targetScale=1;}this.targetX=this.x;this.targetY=this.y;this.targetRotation=0;}else{const distance=this.p5.dist(mouseX,mouseY,this.x,this.y);const maxDistance=this.radius;const force=Math.max(0,1-distance/maxDistance);if(distance<maxDistance){let targetAngle;let forceStrength;if(this.mode===\"attractor\"){targetAngle=this.p5.atan2(mouseY-this.y,mouseX-this.x);forceStrength=20*this.intensity;}else{targetAngle=this.p5.atan2(this.y-mouseY,this.x-mouseX);forceStrength=20*this.intensity;}this.targetForceAngle=targetAngle;const normalizedTarget=this.normalizeAngleDifference(this.targetForceAngle,this.currentForceAngle);this.currentForceAngle=this.p5.lerp(this.currentForceAngle,normalizedTarget,.1);const forceX=this.p5.cos(this.currentForceAngle)*force*forceStrength;const forceY=this.p5.sin(this.currentForceAngle)*force*forceStrength;this.targetX=this.x+forceX;this.targetY=this.y+forceY;}else{this.targetX=this.x;this.targetY=this.y;}this.targetRotation=0;this.targetScale=1;}}else{// Smooth return to original position when not interacting\nconst timeSinceLastInteraction=currentTime-this.lastInteractionTime;const returnDelay=50// ms delay before returning\n;if(timeSinceLastInteraction>returnDelay){this.targetX=this.x;this.targetY=this.y;this.targetRotation=0;this.targetScale=1;this.currentForceAngle=0;this.targetForceAngle=0;}}}// Helper method to normalize angle difference for smooth rotation\nnormalizeAngleDifference(targetAngle,currentAngle){let diff=targetAngle-currentAngle;// Normalize to [-π, π]\nwhile(diff>Math.PI)diff-=2*Math.PI;while(diff<-Math.PI)diff+=2*Math.PI;return currentAngle+diff;}draw(){this.p5.push();// Smoothly interpolate current position towards target position\nthis.currentX=this.p5.lerp(this.currentX,this.targetX,.1);this.currentY=this.p5.lerp(this.currentY,this.targetY,.1);// Smoothly interpolate rotation with normalized angle difference\nif(this.mode===\"looker\"){const normalizedTarget=this.normalizeAngleDifference(this.targetRotation,this.rotation);this.rotation=this.p5.lerp(this.rotation,normalizedTarget,.1);}else{this.rotation=this.p5.lerp(this.rotation,this.targetRotation,.1);}// Smoothly interpolate scale\nthis.scale=this.p5.lerp(this.scale,this.targetScale,.1);this.p5.translate(this.currentX,this.currentY);// Apply rotation for looker mode\nif(this.mode===\"looker\"){this.p5.rotate(this.rotation);}// Apply base scale first, then animation scale\nconst totalScale=this.baseScale*this.scale;if(totalScale!==1){this.p5.scale(totalScale);}// If we have image data and it's loaded, draw the image\nif(this.imageData&&this.imageData.width>0){this.p5.imageMode(this.p5.CENTER);this.p5.image(this.imageData,0,0,this.itemSize,this.itemSize);}else{// Fallback to drawing a circle if no image\nthis.p5.fill(255);this.p5.noStroke();this.p5.circle(0,0,this.itemSize*.5);}this.p5.pop();}constructor(p5,x,y,gridArray,itemSize,intensity,radius,mode,baseScale,imageData){_define_property(this,\"p5\",void 0);_define_property(this,\"x\",void 0);_define_property(this,\"y\",void 0);_define_property(this,\"currentX\",void 0);_define_property(this,\"currentY\",void 0);_define_property(this,\"targetX\",void 0);_define_property(this,\"targetY\",void 0);_define_property(this,\"rotation\",void 0);_define_property(this,\"targetRotation\",void 0);_define_property(this,\"scale\",void 0);_define_property(this,\"targetScale\",void 0);_define_property(this,\"gridArray\",void 0);_define_property(this,\"imageData\",void 0);_define_property(this,\"itemSize\",void 0);_define_property(this,\"intensity\",void 0);_define_property(this,\"radius\",void 0);_define_property(this,\"mode\",void 0);_define_property(this,\"currentForceAngle\",void 0);_define_property(this,\"targetForceAngle\",void 0);_define_property(this,\"baseScale\",void 0);_define_property(this,\"lastInteractionTime\",void 0);this.p5=p5;this.x=x;this.y=y;this.currentX=x;this.currentY=y;this.targetX=x;this.targetY=y;this.rotation=0;this.targetRotation=0;this.scale=1;this.targetScale=1;this.gridArray=gridArray;this.imageData=imageData;this.itemSize=itemSize;this.intensity=intensity;this.radius=radius;this.mode=mode;this.currentForceAngle=0;this.targetForceAngle=0;this.baseScale=baseScale;this.lastInteractionTime=0;}}// ------------------------------------------------------------ //\n// DEFAULT PROPS\n// ------------------------------------------------------------ //\nMagneticGrid.defaultProps={mode:\"attractor\",columns:{count:6,spacing:20},rows:{count:6,spacing:20},padding:\"50px 10px 50px 10px\",scale:1,intensity:1,radius:200,image:{src:\"\",srcSet:\"\",alt:\"Grid item\",positionX:\"50%\",positionY:\"50%\"}};// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n * @framerDisableUnlink\n */export default function MagneticGrid(props){const isOnFramerCanvas=RenderTarget.hasRestrictions();const instanceId=useId()// Generate unique ID for this instance\n;const hasImage=props.image.src!==\"\";const imageRef=useRef({src:null,data:null});const gridArrayRef=useRef([]);const wrapperRef=useRef(null);const p5InstanceRef=useRef(null);const isInViewRef=useRef(false);const GridObject=DefaultGridObject;const detectedFrameRate=60;const{ReactP5Wrapper,isLoading}=useReactP5Wrapper();// Use useInView to detect when component is visible\nconst isInViewFromHook=useInView(wrapperRef,{once:false,margin:\"0px 0px 0px 0px\"});// When on Framer canvas, always set isInView to true\nconst isInView=isOnFramerCanvas?true:isInViewFromHook;const{calculatedItemSize,canvasSize}=useCalculateSizes({props,wrapperRef,instanceId});const sketch=useCallback(p5=>{if(!hasImage||!ReactP5Wrapper){return;}// Store p5 instance reference\np5InstanceRef.current=p5;// Track mouse state per instance\nconst mouseState={hasMouseMoved:false,lastMouseX:-99999,lastMouseY:-99999,isMouseWithinBounds:false};let isInitialized=false;const initializeGrid=()=>{gridArrayRef.current=[];const paddingValues=parsePadding(props.padding);for(let col=0;col<props.columns.count;col++){for(let row=0;row<props.rows.count;row++){const x=paddingValues.left+col*(calculatedItemSize+props.columns.spacing)+calculatedItemSize/2;const y=paddingValues.top+row*(calculatedItemSize+props.rows.spacing)+calculatedItemSize/2;gridArrayRef.current.push(new GridObject(p5,x,y,gridArrayRef.current,calculatedItemSize,props.intensity,props.radius,props.mode,props.scale,imageRef.current?.data));}}if(!isInitialized){isInitialized=true;}};const updateGridWithImage=()=>{gridArrayRef.current.forEach(gridObject=>{gridObject.imageData=imageRef.current?.data;});if(isOnFramerCanvas){p5.redraw();}};const preloadImages=()=>{if(imageRef.current.src!==props.image.src&&props.image.src){imageRef.current.src=props.image.src;imageRef.current.data=p5.loadImage(props.image.src,()=>{updateGridWithImage();if(isOnFramerCanvas){p5.redraw();}});if(imageRef.current.data&&typeof imageRef.current.data.play===\"function\"){imageRef.current.data.play();}}else if(!props.image.src){imageRef.current.src=null;imageRef.current.data=null;updateGridWithImage();if(isOnFramerCanvas){p5.redraw();}}};p5.preload=()=>{preloadImages();};p5.setup=()=>{p5.disableFriendlyErrors=true;p5.frameRate(detectedFrameRate);if(canvasSize.width<=0||canvasSize.height<=0){console.warn(`[${instanceId}] Invalid canvas size:`,canvasSize);return;}p5.createCanvas(canvasSize.width,canvasSize.height);const parent=p5.canvas.parentElement;if(parent){const canvases=parent.querySelectorAll(\"canvas\");canvases.forEach(canvas=>{if(canvas!==p5.canvas){canvas.remove();}});}if(calculatedItemSize<=0){console.warn(`[${instanceId}] Invalid item size:`,calculatedItemSize);return;}initializeGrid();preloadImages();// Add mouse enter/leave event listeners to the canvas with instance-specific handling\np5.canvas.addEventListener(\"mouseenter\",()=>{mouseState.isMouseWithinBounds=true;});p5.canvas.addEventListener(\"mouseleave\",()=>{mouseState.isMouseWithinBounds=false;// Reset all grid objects when mouse leaves this instance\ngridArrayRef.current.forEach(gridObject=>{if(gridObject.update){gridObject.update(mouseState.lastMouseX,mouseState.lastMouseY,false);}});});p5.currentIsInView=isInViewRef.current;if(isOnFramerCanvas){setTimeout(()=>{p5.redraw();if(!isInViewRef.current){p5.noLoop();}},100);}};p5.draw=()=>{p5.clear();// Use ref to get current isInView state to avoid closure issues\nconst currentIsInView=isInViewRef.current;if(!currentIsInView){return;}// Get mouse position relative to the canvas\nconst canvasRect=p5.canvas.getBoundingClientRect();const mouseX=p5.mouseX;const mouseY=p5.mouseY;// Check if mouse is within this specific instance's bounds\nconst isWithinBounds=mouseX>=0&&mouseX<=canvasSize.width&&mouseY>=0&&mouseY<=canvasSize.height;// Update mouse state for this instance\nif(isWithinBounds&&(mouseState.hasMouseMoved||mouseX!==0||mouseY!==0)){mouseState.hasMouseMoved=true;mouseState.lastMouseX=mouseX;mouseState.lastMouseY=mouseY;}// Update and draw grid objects with instance-specific mouse state\ngridArrayRef.current.forEach(gridObject=>{if(gridObject.update){gridObject.update(mouseState.lastMouseX,mouseState.lastMouseY,mouseState.isMouseWithinBounds&&isWithinBounds);}if(gridObject.draw){gridObject.draw();}});};// Handle prop updates and canvas resizing\nconst updateWithProps=props=>{// Pause/unpause based on visibility\nif(\"isInView\"in props){p5.currentIsInView=props.isInView;if(props.isInView){p5.loop();}else{p5.noLoop();}}if(\"shouldPause\"in props){if(props.shouldPause){p5.noLoop();}else{p5.loop();}}// Handle canvas resize\nif(\"canvasSize\"in props){p5.resizeCanvas(props.canvasSize.width,props.canvasSize.height);initializeGrid()// Reinitialize grid with new canvas size\n;}// Handle calculated item size changes\nif(\"calculatedItemSize\"in props){gridArrayRef.current.forEach(gridObject=>{gridObject.itemSize=props.calculatedItemSize;});initializeGrid()// Reinitialize grid with new item size\n;}// Handle image source changes\nif(\"imageSrc\"in props){preloadImages();}// Handle intensity changes\nif(\"intensity\"in props){gridArrayRef.current.forEach(gridObject=>{gridObject.intensity=props.intensity;});}// Handle radius changes\nif(\"radius\"in props){gridArrayRef.current.forEach(gridObject=>{gridObject.radius=props.radius;});}// Handle mode changes\nif(\"mode\"in props){gridArrayRef.current.forEach(gridObject=>{gridObject.mode=props.mode;// Reset scale when changing modes\ngridObject.scale=1;gridObject.targetScale=1;});}// Handle scale changes\nif(\"scale\"in props){gridArrayRef.current.forEach(gridObject=>{gridObject.baseScale=props.scale;});}// Redraw once on Framer canvas when props change\nif(isOnFramerCanvas){p5.redraw();}};p5.updateWithProps=updateWithProps;// Remove the p5.remove override - it was causing recursion\n},[props,canvasSize,calculatedItemSize,detectedFrameRate,hasImage,isOnFramerCanvas,instanceId,ReactP5Wrapper]);// Cleanup effect\nuseEffect(()=>{return()=>{if(p5InstanceRef.current){p5InstanceRef.current.noLoop();if(p5InstanceRef.current.canvas){p5InstanceRef.current.canvas.remove();}p5InstanceRef.current=null;}};},[]);// Redraw on Framer canvas when image src changes\nuseEffect(()=>{if(isOnFramerCanvas&&p5InstanceRef.current&&props.image.src){const timer=setTimeout(()=>{p5InstanceRef.current.redraw();},500);return()=>clearTimeout(timer);}},[props.image.src,isOnFramerCanvas]);// Pause/unpause p5 animation based on visibility\nuseEffect(()=>{// Update ref for use in sketch\nisInViewRef.current=isInView;if(p5InstanceRef.current){p5InstanceRef.current.currentIsInView=isInView;if(isInView){p5InstanceRef.current.loop();}else{p5InstanceRef.current.noLoop();}}},[isInView]);// Don't show ComponentMessage for no image if we're in browser environment and loading\nif(!hasImage){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(ComponentMessage,{title:\"Magnetic Grid\",subtitle:\"Set up the component by adding image to the component properties.\"})});}// Always render the wrapper for size calculations, regardless of loading state\nreturn /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",position:\"relative\",overflow:\"hidden\"},children:typeof window!==\"undefined\"&&!isLoading&&ReactP5Wrapper&&/*#__PURE__*/_jsx(ReactP5Wrapper,{sketch:sketch})});}// ------------------------------------------------------------ //\n// UTILITY FUNCTIONS\n// ------------------------------------------------------------ //\n// Helper function to parse padding string and return numeric values\nconst parsePadding=padding=>{// Remove 'px' and split by spaces\nconst values=padding.replace(/px/g,\"\").split(\" \").map(Number);if(values.length===1){// Single value: apply to all sides\nreturn{top:values[0],right:values[0],bottom:values[0],left:values[0]};}else if(values.length===4){// Four values: top, right, bottom, left\nreturn{top:values[0],right:values[1],bottom:values[2],left:values[3]};}else{// Fallback to 0 if invalid format\nreturn{top:0,right:0,bottom:0,left:0};}};// ------------------------------------------------------------ //\n// HOOKS\n// ------------------------------------------------------------ //\nconst useCalculateSizes=({props,wrapperRef,instanceId})=>{const isOnFramerCanvas=RenderTarget.hasRestrictions();// Use refs to track timeout/interval IDs per instance\nconst timeoutsRef=useRef([]);const pollIntervalRef=useRef(null);const resizeTimeoutRef=useRef(null);const isCalculatingRef=useRef(false);// State for dynamic sizing\nconst[wrapperSize,setWrapperSize]=useState({width:400,height:400});const[calculatedItemSize,setCalculatedItemSize]=useState(53);const[canvasSize,setCanvasSize]=useState({width:400,height:400});// Calculate item size and canvas size based on wrapper dimensions\nconst calculateSizes=useCallback((wrapperWidth,wrapperHeight)=>{// Prevent concurrent calculations for this instance\nif(isCalculatingRef.current)return;isCalculatingRef.current=true;try{const paddingValues=parsePadding(props.padding);// Calculate available space for grid items\nconst availableWidth=wrapperWidth-(paddingValues.left+paddingValues.right)-(props.columns.count-1)*props.columns.spacing;const availableHeight=wrapperHeight-(paddingValues.top+paddingValues.bottom)-(props.rows.count-1)*props.rows.spacing;// Calculate item size to fit within available space\nconst maxItemWidth=availableWidth/props.columns.count;const maxItemHeight=availableHeight/props.rows.count;const itemSize=Math.max(20,Math.min(maxItemWidth,maxItemHeight))// Minimum size of 20px\n;// Calculate actual canvas size to fit the wrapper\nconst canvasWidth=Math.min(wrapperWidth,paddingValues.left+paddingValues.right+props.columns.count*itemSize+(props.columns.count-1)*props.columns.spacing);const canvasHeight=Math.min(wrapperHeight,paddingValues.top+paddingValues.bottom+props.rows.count*itemSize+(props.rows.count-1)*props.rows.spacing);// Batch state updates to prevent race conditions\nsetCalculatedItemSize(itemSize);setCanvasSize({width:canvasWidth,height:canvasHeight});}finally{isCalculatingRef.current=false;}},[props.padding,props.columns,props.rows,instanceId]);// Function to check and update wrapper size with debouncing per instance\nconst checkAndUpdateSize=useCallback(()=>{if(!wrapperRef.current||isCalculatingRef.current){return false;}const wrapper=wrapperRef.current;const newWidth=wrapper.offsetWidth;const newHeight=wrapper.offsetHeight;// Only update if size actually changed and we have valid dimensions\nif((newWidth!==wrapperSize.width||newHeight!==wrapperSize.height)&&newWidth>0&&newHeight>0){setWrapperSize({width:newWidth,height:newHeight});// Clear any pending resize timeout for this instance\nif(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}// Debounce the calculation per instance\nresizeTimeoutRef.current=setTimeout(()=>{calculateSizes(newWidth,newHeight);},16)// Use requestAnimationFrame-like timing\n;return true;}return false;},[wrapperSize.width,wrapperSize.height,calculateSizes,instanceId]);// ResizeObserver to track wrapper size changes (works in preview/live)\nuseEffect(()=>{if(!wrapperRef.current||isOnFramerCanvas)return;const resizeObserver=new ResizeObserver(entries=>{// Clear previous timeout for this instance\nif(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}resizeTimeoutRef.current=setTimeout(()=>{for(const entry of entries){const{width,height}=entry.contentRect;if(width>0&&height>0&&!isCalculatingRef.current){setWrapperSize({width,height});calculateSizes(width,height);}}},16)// Reduced debounce time with RAF-like timing\n;});resizeObserver.observe(wrapperRef.current);return()=>{if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}resizeObserver.disconnect();};},[calculateSizes,isOnFramerCanvas]);// Fallback mechanism for Framer canvas: polling + window resize\nuseEffect(()=>{if(!isOnFramerCanvas)return;// Instance-specific window resize handler with debouncing\nconst handleResize=()=>{if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}resizeTimeoutRef.current=setTimeout(()=>{checkAndUpdateSize();},16);};window.addEventListener(\"resize\",handleResize);// Instance-specific polling with staggered intervals to prevent all instances polling simultaneously\nconst instanceOffset=parseInt(instanceId.slice(-2),36)%50// Get a pseudo-random offset based on instanceId\n;const pollDelay=100+instanceOffset// Stagger polling between 100-150ms\n;pollIntervalRef.current=setInterval(()=>{if(!isCalculatingRef.current){checkAndUpdateSize();}},pollDelay);return()=>{window.removeEventListener(\"resize\",handleResize);if(pollIntervalRef.current){clearInterval(pollIntervalRef.current);}if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}};},[checkAndUpdateSize,instanceId,isOnFramerCanvas]);// Initial size calculation with staggered retries per instance\nuseLayoutEffect(()=>{if(!wrapperRef.current){return;}// Initial calculation\nconst performInitialCalculation=()=>{const wrapper=wrapperRef.current;if(wrapper&&(wrapper.offsetWidth>0||wrapper.offsetHeight>0)&&!isCalculatingRef.current){const width=wrapper.offsetWidth;const height=wrapper.offsetHeight;setWrapperSize({width,height});calculateSizes(width,height);return true;}return false;};// Try immediate calculation\nif(performInitialCalculation()){return;}// Stagger retry delays based on instance to prevent all instances retrying simultaneously\nconst instanceOffset=parseInt(instanceId.slice(-2),36)%20// 0-20ms offset\n;const baseDelays=[10,50,100,200];const staggeredDelays=baseDelays.map(delay=>delay+instanceOffset);// Clear any existing timeouts for this instance\ntimeoutsRef.current.forEach(timeout=>clearTimeout(timeout));timeoutsRef.current=[];// Retry after staggered delays\ntimeoutsRef.current=staggeredDelays.map((delay,index)=>setTimeout(()=>{if(performInitialCalculation()){// Success - clear remaining timeouts\n    timeoutsRef.current.slice(index+1).forEach(timeout=>clearTimeout(timeout));}else if(index===staggeredDelays.length-1){console.warn(`[${instanceId}] Failed to get valid wrapper size after all attempts`);}},delay));return()=>{timeoutsRef.current.forEach(timeout=>clearTimeout(timeout));timeoutsRef.current=[];};},[calculateSizes,instanceId]);// Recalculate sizes when grid properties change with debouncing\nuseEffect(()=>{if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}resizeTimeoutRef.current=setTimeout(()=>{if(!isCalculatingRef.current){calculateSizes(wrapperSize.width,wrapperSize.height);}},16);return()=>{if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}};},[props.columns,props.rows,props.padding,wrapperSize,calculateSizes]);// Cleanup on unmount\nuseEffect(()=>{return()=>{timeoutsRef.current.forEach(timeout=>clearTimeout(timeout));if(pollIntervalRef.current){clearInterval(pollIntervalRef.current);}if(resizeTimeoutRef.current){clearTimeout(resizeTimeoutRef.current);}};},[]);return{wrapperSize,calculatedItemSize,canvasSize};};// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(MagneticGrid,{image:{type:ControlType.ResponsiveImage},scale:{type:ControlType.Number,min:.1,max:10,step:.1,defaultValue:1},mode:{type:ControlType.Enum,options:[\"repeler\",\"attractor\",\"looker\",\"scaler\"],optionTitles:[\"Repel\",\"Magnet\",\"Look\",\"Scale\"]},columns:{type:ControlType.Object,controls:{count:{type:ControlType.Number,min:1,max:50,step:1,displayStepper:true,defaultValue:6},spacing:{type:ControlType.Number,min:0,max:100,step:1,unit:\"px\",defaultValue:20}}},rows:{type:ControlType.Object,controls:{count:{type:ControlType.Number,min:1,max:50,step:1,displayStepper:true,defaultValue:6},spacing:{type:ControlType.Number,min:0,max:100,step:1,unit:\"px\",defaultValue:20}}},padding:{// @ts-expect-error - Padding is not a in this NPM package\ntype:ControlType.Padding,min:0,max:100,step:1,unit:\"px\",defaultValue:50},intensity:{type:ControlType.Number,min:0,max:10,step:.1,defaultValue:1,hidden:props=>props.mode==\"looker\"},radius:{type:ControlType.Number,title:\"Trigger Area\",min:0,max:1e3,step:1,defaultValue:200,hidden:props=>props.mode==\"looker\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// This is the name that will be displayed in the Framer editor\nMagneticGrid.displayName=\"Magnetic Grid\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MagneticGrid\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"400\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MagneticGrid_Prod.map"],"mappings":"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"}