{"version":3,"file":"Interactive_Grid.CuiLCIQL.mjs","names":["o","u","a","f","c","l","v","d","b","t","n","r","i","e","p","useState","useRef","useCallback","throttle","i"],"sources":["https:/ga.jspm.io/npm:lodash.throttle@4.1.1/index.js","https:/framerusercontent.com/modules/wXVYFY1OgT5vnd9TjXK8/GDt9lPdyUOzDlK64NYfV/Interactive_Grid.js"],"sourcesContent":["var e=\"undefined\"!==typeof globalThis?globalThis:\"undefined\"!==typeof self?self:global;var t={};var i=\"Expected a function\";var n=0/0;var r=\"[object Symbol]\";var o=/^\\s+|\\s+$/g;var u=/^[-+]0x[0-9a-f]+$/i;var a=/^0b[01]+$/i;var f=/^0o[0-7]+$/i;var c=parseInt;var l=\"object\"==typeof e&&e&&e.Object===Object&&e;var v=\"object\"==typeof self&&self&&self.Object===Object&&self;var d=l||v||Function(\"return this\")();var s=Object.prototype;var b=s.toString;var g=Math.max,p=Math.min;var now=function(){return d.Date.now()};function debounce(t,n,r){var o,u,a,f,c,l,v=0,d=false,s=false,b=true;if(\"function\"!=typeof t)throw new TypeError(i);n=toNumber(n)||0;if(isObject(r)){d=!!r.leading;s=\"maxWait\"in r;a=s?g(toNumber(r.maxWait)||0,n):a;b=\"trailing\"in r?!!r.trailing:b}function invokeFunc(e){var i=o,n=u;o=u=void 0;v=e;f=t.apply(n,i);return f}function leadingEdge(e){v=e;c=setTimeout(timerExpired,n);return d?invokeFunc(e):f}function remainingWait(e){var t=e-l,i=e-v,r=n-t;return s?p(r,a-i):r}function shouldInvoke(e){var t=e-l,i=e-v;return void 0===l||t>=n||t<0||s&&i>=a}function timerExpired(){var e=now();if(shouldInvoke(e))return trailingEdge(e);c=setTimeout(timerExpired,remainingWait(e))}function trailingEdge(e){c=void 0;if(b&&o)return invokeFunc(e);o=u=void 0;return f}function cancel(){void 0!==c&&clearTimeout(c);v=0;o=l=u=c=void 0}function flush(){return void 0===c?f:trailingEdge(now())}function debounced(){var t=now(),i=shouldInvoke(t);o=arguments;u=this||e;l=t;if(i){if(void 0===c)return leadingEdge(l);if(s){c=setTimeout(timerExpired,n);return invokeFunc(l)}}void 0===c&&(c=setTimeout(timerExpired,n));return f}debounced.cancel=cancel;debounced.flush=flush;return debounced}function throttle(e,t,n){var r=true,o=true;if(\"function\"!=typeof e)throw new TypeError(i);if(isObject(n)){r=\"leading\"in n?!!n.leading:r;o=\"trailing\"in n?!!n.trailing:o}return debounce(e,t,{leading:r,maxWait:t,trailing:o})}function isObject(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function isObjectLike(e){return!!e&&\"object\"==typeof e}function isSymbol(e){return\"symbol\"==typeof e||isObjectLike(e)&&b.call(e)==r}function toNumber(e){if(\"number\"==typeof e)return e;if(isSymbol(e))return n;if(isObject(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=isObject(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(o,\"\");var i=a.test(e);return i||f.test(e)?c(e.slice(2),i?2:8):u.test(e)?n:+e}t=throttle;var m=t;export default m;\n\n//# sourceMappingURL=index.js.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useState,useEffect,useRef,useCallback}from\"react\";import throttle from\"lodash.throttle\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function DotGrid(props){const{dotSize,dotColor,maxDotSize,distanceThreshold,dotSpacing,gridRows,gridColumns,smoothFactor,shape,enableLookAt}=props;const[mousePosition,setMousePosition]=useState({x:-1,y:-1});const containerRef=useRef(null);// Throttle the mouse move event handler to reduce state updates\nconst handleMouseMove=useCallback(throttle(event=>{if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();setMousePosition({x:event.clientX-rect.left,y:event.clientY-rect.top});},50),[]);useEffect(()=>{// Cleanup the throttle function on component unmount\nreturn()=>{handleMouseMove.cancel();};},[handleMouseMove]);// Calculate the size of the dot based on its distance to the mouse cursor\nconst calculateDotSize=(dotX,dotY)=>{const distance=Math.sqrt(Math.pow(mousePosition.x-dotX,2)+Math.pow(mousePosition.y-dotY,2));// Adjust the smoothing factor by multiplying the distance threshold\nconst smoothFalloff=Math.exp(-distance/(distanceThreshold*smoothFactor));const size=dotSize+(maxDotSize-dotSize)*smoothFalloff;return size;};// Calculate the angle between each dot and the mouse position\nconst calculateRotationAngle=(dotX,dotY)=>{const deltaX=mousePosition.x-dotX;const deltaY=mousePosition.y-dotY;const angle=Math.atan2(deltaY,deltaX)// Calculate angle in radians\n;return angle*(180/Math.PI)// Convert to degrees\n;};// Generate the dot grid\nconst dots=[];for(let i=0;i<gridRows;i++){for(let j=0;j<gridColumns;j++){const dotX=j*(dotSize+dotSpacing);const dotY=i*(dotSize+dotSpacing);// Determine styles based on the selected shape\nlet shapeStyle={};let shapeElement=null;// Calculate rotation angle only if look-at is enabled\nconst rotationAngle=enableLookAt?calculateRotationAngle(dotX,dotY):0;if(shape===\"circle\"){shapeStyle={width:calculateDotSize(dotX,dotY),height:calculateDotSize(dotX,dotY),backgroundColor:dotColor,borderRadius:\"50%\"};}else if(shape===\"square\"){shapeStyle={width:calculateDotSize(dotX,dotY),height:calculateDotSize(dotX,dotY),backgroundColor:dotColor,borderRadius:\"0%\"};}else if(shape===\"triangle\"){const size=calculateDotSize(dotX,dotY);shapeStyle={width:\"0\",height:\"0\",borderLeft:`${size/2}px solid transparent`,borderRight:`${size/2}px solid transparent`,borderBottom:`${size}px solid ${dotColor}`,backgroundColor:\"transparent\"};}else if(shape===\"rectangle\"){const size=calculateDotSize(dotX,dotY);shapeStyle={width:size*1.5,height:size,backgroundColor:dotColor,borderRadius:\"0%\"};}dots.push(/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:dotX,top:dotY,transform:`translate(-50%, -50%) rotate(${rotationAngle}deg)`,transformOrigin:\"center\",...shapeStyle},children:shapeElement},`${i}-${j}`));}}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:gridColumns*(dotSize+dotSpacing),height:gridRows*(dotSize+dotSpacing),overflow:\"hidden\",...props.style},onMouseMove:handleMouseMove,children:dots});}DotGrid.displayName=\"Dot Grid\";addPropertyControls(DotGrid,{dotSize:{type:ControlType.Number,title:\"Dot Size\",defaultValue:10,min:1,max:50,step:1,unit:\"px\"},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#000000\"},maxDotSize:{type:ControlType.Number,title:\"Max Dot Size\",defaultValue:20,min:1,max:100,step:1,unit:\"px\"},distanceThreshold:{type:ControlType.Number,title:\"Distance Threshold\",defaultValue:100,min:1,max:500,step:1,unit:\"px\"},dotSpacing:{type:ControlType.Number,title:\"Dot Spacing\",defaultValue:10,min:0,max:100,step:1,unit:\"px\"},gridRows:{type:ControlType.Number,title:\"Grid Rows\",defaultValue:50,min:1,max:100,step:1},gridColumns:{type:ControlType.Number,title:\"Grid Columns\",defaultValue:50,min:1,max:100,step:1},smoothFactor:{type:ControlType.Number,title:\"Smooth Factor\",defaultValue:1,min:.1,max:10,step:.1},shape:{type:ControlType.Enum,title:\"Shape\",defaultValue:\"circle\",options:[\"circle\",\"square\",\"triangle\",\"rectangle\"],optionTitles:[\"Circle\",\"Square\",\"Triangle\",\"Rectangle\"]},enableLookAt:{type:ControlType.Boolean,title:\"Enable Look-At\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DotGrid\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Interactive_Grid.map"],"mappings":"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"}