{"version":3,"file":"AgentDotAnimation.y9bb5OSs.mjs","names":["useRef","useState","useMemo","__esmMin","pe","init_ssg_sandbox_shims","te","init_npm_react_18_3_1","de","window","init_jsx_runtime","p","ce","_e","addPropertyControls","ControlType","RenderTarget","init_framer_J2N2IBQG","hashDot","row","col","dotCount","getDelayMs","rowCount","variant","arrival","getAnimationName","getDurationMs","AgentDotAnimation","props","containerRef","isVisible","setIsVisible","isCompleted","setIsCompleted","completionRef","pauseOffscreen","observer","entry","entries","shouldPauseOnCanvas","pauseOnCanvas","canRun","grid","dotColor","gap","size","duration","timeout","onComplete","dots","dotStep","animationName","durationMs","items","delayMs","dotSize","contentBounds","safeBounds","gridSize","style","init_AgentDotAnimation"],"sources":["https:/framerusercontent.com/modules/XkcpSpVeu2bekwUhCOfw/Uvi6Ef1f8tfsHjWZpCqU/AgentDotAnimation.js"],"sourcesContent":["// User instructions: Update AgentDotAnimation to add duration and onComplete controls while preserving existing behavior and controls.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{startTransition,useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const dotSize=2;const gridSize=16;function hashDot(row,col,dotCount){return((row*7+col*13+row*col*5)*2654435761>>>0)%dotCount;}function getDelayMs(variant,row,col,rowCount){const dotCount=rowCount*rowCount;if(variant===\"dance-spark\"){return-Math.round(hashDot(row,col,dotCount)*1200/dotCount);}if(variant===\"double-slow\"){const base=col%2*190+row*120+col*55;return-(base*1.6%1920);}const arrival=((row-col)*187.5%750+750)%750;return arrival===0?0:arrival-750;}function getAnimationName(variant){if(variant===\"dance-spark\")return\"danceSpark\";if(variant===\"double-slow\")return\"doubleSlow\";return\"ghostFlow\";}function getDurationMs(variant){if(variant===\"dance-spark\")return 1200;if(variant===\"double-slow\")return 1920;return 750;}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function AgentDotAnimation(props){const{variant=\"ghost-flow\",grid=\"4x4\",dotColor=\"#0099ff\",gap=(16-dotSize)/(4-1),size=20,pauseOffscreen=true,pauseOnCanvas=true,duration=0,onComplete,style}=props;const containerRef=useRef(null);const[isVisible,setIsVisible]=useState(true);const[isCompleted,setIsCompleted]=useState(false);const completionRef=useRef(false);useEffect(()=>{if(!pauseOffscreen){setIsVisible(true);return;}const observer=new IntersectionObserver(entries=>{const entry=entries[0];if(entry){startTransition(()=>setIsVisible(entry.isIntersecting));}},{threshold:0});if(containerRef.current){observer.observe(containerRef.current);}return()=>{observer.disconnect();};},[pauseOffscreen]);const shouldPauseOnCanvas=pauseOnCanvas&&RenderTarget.current()===RenderTarget.canvas;const canRun=!shouldPauseOnCanvas&&(!pauseOffscreen||isVisible);useEffect(()=>{completionRef.current=false;startTransition(()=>setIsCompleted(false));},[variant,grid,dotColor,gap,size,pauseOffscreen,pauseOnCanvas,duration]);useEffect(()=>{if(duration<=0||isCompleted||!canRun)return;if(typeof window===\"undefined\")return;const timeout=window.setTimeout(()=>{if(completionRef.current)return;completionRef.current=true;startTransition(()=>setIsCompleted(true));if(onComplete)onComplete();},duration*1e3);return()=>window.clearTimeout(timeout);},[duration,canRun,isCompleted,onComplete]);const dots=useMemo(()=>{const rowCount=grid===\"3x3\"?3:4;const dotStep=rowCount>1?gap:0;const animationName=getAnimationName(variant);const durationMs=getDurationMs(variant);const items=[];for(let row=0;row<rowCount;row++){for(let col=0;col<rowCount;col++){const delayMs=getDelayMs(variant,row,col,rowCount);items.push(/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{position:\"absolute\",top:row*dotStep,left:col*dotStep,width:dotSize,height:dotSize,borderRadius:\"50%\",backgroundColor:dotColor,opacity:.3,animationName,animationDuration:`${durationMs}ms`,animationTimingFunction:\"linear\",animationIterationCount:\"infinite\",animationDelay:`${delayMs}ms`,animationPlayState:isCompleted?\"paused\":shouldPauseOnCanvas?\"paused\":isVisible?\"running\":\"paused\"}},`${row}-${col}`));}}return items;},[variant,grid,dotColor,gap,isVisible,shouldPauseOnCanvas,isCompleted]);const rowCount=grid===\"3x3\"?3:4;const contentBounds=dotSize+Math.max(0,rowCount-1)*gap;const safeBounds=contentBounds>0?contentBounds:gridSize;return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,role:\"img\",\"aria-label\":\"Animated dot grid\",style:{position:\"relative\",overflow:\"hidden\",padding:2,width:size,height:size,opacity:1,transition:\"none\",...style},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n@keyframes ghostFlow {\n  0%, 18% { opacity: 1; }\n  35% { opacity: 0.6; }\n  50%, 100% { opacity: 0.3; }\n}\n@keyframes doubleSlow {\n  0%, 100% { opacity: 0.3; }\n  8% { opacity: 0.72; }\n  16%, 24% { opacity: 1; }\n  34%, 50% { opacity: 0.3; }\n  58% { opacity: 0.58; }\n  66%, 74% { opacity: 0.96; }\n  84% { opacity: 0.48; }\n}\n@keyframes danceSpark {\n  0%, 6% { opacity: 1; }\n  18% { opacity: 0.45; }\n  24%, 100% { opacity: 0.3; }\n}\n            `}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:safeBounds,height:safeBounds,transform:`scale(${(size-4)/safeBounds})`,transformOrigin:\"top left\"},children:dots})]});}addPropertyControls(AgentDotAnimation,{grid:{type:ControlType.Enum,title:\"Grid\",options:[\"4x4\",\"3x3\"],optionTitles:[\"4\\xd74\",\"3\\xd73\"],defaultValue:\"4x4\"},variant:{type:ControlType.Enum,title:\"Variant\",options:[\"ghost-flow\",\"double-slow\",\"dance-spark\"],optionTitles:[\"Ghost Flow\",\"Double Slow\",\"Dance Spark\"],defaultValue:\"ghost-flow\"},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#0099ff\"},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:(16-dotSize)/(4-1),min:0,max:20,step:.1,unit:\"px\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:20,min:8,max:200,step:1,unit:\"px\"},pauseOffscreen:{type:ControlType.Boolean,title:\"Pause off-screen\",defaultValue:true},pauseOnCanvas:{type:ControlType.Boolean,title:\"Pause on Canvas\",defaultValue:true},duration:{type:ControlType.Number,title:\"Duration\",description:\"0 = loops forever\",defaultValue:0,min:0,max:60,step:.1,unit:\"s\"},onComplete:{type:ControlType.EventHandler,title:\"On Complete\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AgentDotAnimation\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AgentDotAnimation.map"],"mappings":"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"}