{"version":3,"file":"CellMatrixWidget.Fk7V-e7s.mjs","names":["useMemo","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/p97r9HGyHTYo0UJbMHsw/TLdHXDRVIFsZ25PDOqqP/CellMatrixWidget.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{startTransition,useCallback,useEffect,useMemo,useState}from\"react\";function createStaticPattern(size){const total=size*size;return Array.from({length:total},(_,index)=>{const row=Math.floor(index/size);const col=index%size;return(row+col)%2===0;});}function createRandomPattern(total){return Array.from({length:total},()=>Math.random()>.5);}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CellMatrixWidget(props){const{gridSize=3,cellSize=24,gap=6,cellRadius=4,onColor=\"#111111\",onColors,offColor=\"rgba(0,0,0,0.08)\",scrambleDuration=900,flickerInterval=90,holdDuration=1200,transitionDuration=150}=props;const isStaticRenderer=useIsStaticRenderer();const safeGridSize=Math.max(1,Math.round(gridSize));const totalCells=safeGridSize*safeGridSize;const activeColorPalette=useMemo(()=>{const cleaned=(onColors??[]).filter(value=>typeof value===\"string\"&&value.trim().length>0);return cleaned.length>0?cleaned:[onColor];},[onColor,onColors]);const initialPattern=useMemo(()=>createStaticPattern(safeGridSize),[safeGridSize]);const[cells,setCells]=useState(initialPattern);const[prefersReducedMotion,setPrefersReducedMotion]=useState(false);useEffect(()=>{startTransition(()=>setCells(initialPattern));},[initialPattern]);useEffect(()=>{if(typeof window===\"undefined\")return;const mediaQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");startTransition(()=>setPrefersReducedMotion(mediaQuery.matches));const handleChange=event=>{startTransition(()=>setPrefersReducedMotion(event.matches));};mediaQuery.addEventListener(\"change\",handleChange);return()=>{mediaQuery.removeEventListener(\"change\",handleChange);};},[]);const runScrambleTick=useCallback(count=>{const randomIndex=Math.floor(Math.random()*count);startTransition(()=>{setCells(prev=>{if(prev.length!==count)return createStaticPattern(Math.sqrt(count));const next=[...prev];next[randomIndex]=!next[randomIndex];return next;});});},[]);useEffect(()=>{if(typeof window===\"undefined\")return;if(isStaticRenderer||prefersReducedMotion){startTransition(()=>setCells(initialPattern));return;}let isCancelled=false;let flickerIntervalId=null;let scrambleTimeoutId=null;let holdTimeoutId=null;const startCycle=()=>{if(isCancelled)return;flickerIntervalId=window.setInterval(()=>{runScrambleTick(totalCells);},Math.max(16,flickerInterval));scrambleTimeoutId=window.setTimeout(()=>{if(flickerIntervalId!==null){window.clearInterval(flickerIntervalId);flickerIntervalId=null;}const landedPattern=createRandomPattern(totalCells);startTransition(()=>setCells(landedPattern));holdTimeoutId=window.setTimeout(()=>{startCycle();},Math.max(0,holdDuration));},Math.max(0,scrambleDuration));};startCycle();return()=>{isCancelled=true;if(flickerIntervalId!==null)window.clearInterval(flickerIntervalId);if(scrambleTimeoutId!==null)window.clearTimeout(scrambleTimeoutId);if(holdTimeoutId!==null)window.clearTimeout(holdTimeoutId);};},[flickerInterval,holdDuration,initialPattern,isStaticRenderer,prefersReducedMotion,runScrambleTick,scrambleDuration,totalCells]);const containerStyle=useMemo(()=>({position:\"relative\",display:\"grid\",gridTemplateColumns:`repeat(${safeGridSize}, ${cellSize}px)`,gridTemplateRows:`repeat(${safeGridSize}, ${cellSize}px)`,gap:`${gap}px`,width:\"max-content\",height:\"max-content\",background:\"transparent\"}),[cellSize,gap,safeGridSize]);return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:Array.from({length:totalCells},(_,index)=>{const isOn=cells[index]??false;const row=Math.floor(index/safeGridSize);const col=index%safeGridSize;const activeColor=activeColorPalette[(row+col)%activeColorPalette.length];return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{width:`${cellSize}px`,height:`${cellSize}px`,borderRadius:`${cellRadius}px`,backgroundColor:isOn?activeColor:offColor,transform:`scale(${isOn?1:.94})`,opacity:isOn?1:.85,transition:`background-color ${Math.max(0,transitionDuration)}ms ease, transform ${Math.max(0,transitionDuration)}ms ease, opacity ${Math.max(0,transitionDuration)}ms ease`,willChange:\"background-color, transform, opacity\"}},index);})});}addPropertyControls(CellMatrixWidget,{gridSize:{type:ControlType.Number,title:\"Grid Size\",defaultValue:3,min:1,max:12,step:1},cellSize:{type:ControlType.Number,title:\"Cell Size\",defaultValue:24,min:6,max:120,unit:\"px\",step:1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:6,min:0,max:40,unit:\"px\",step:1},cellRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:4,min:0,max:40,unit:\"px\",step:1},onColor:{type:ControlType.Color,title:\"On Color\",defaultValue:\"#111111\",hidden:()=>true},onColors:{type:ControlType.Array,title:\"On Color\",control:{type:ControlType.Color,defaultValue:\"#111111\"},defaultValue:[\"#111111\",\"#444444\",\"#777777\"],maxCount:12},offColor:{type:ControlType.Color,title:\"Off Color\",defaultValue:\"rgba(0,0,0,0.08)\"},scrambleDuration:{type:ControlType.Number,title:\"Scramble\",defaultValue:900,min:100,max:4e3,unit:\"ms\",step:10},flickerInterval:{type:ControlType.Number,title:\"Flicker\",defaultValue:90,min:16,max:1e3,unit:\"ms\",step:1},holdDuration:{type:ControlType.Number,title:\"Hold\",defaultValue:1200,min:0,max:5e3,unit:\"ms\",step:10},transitionDuration:{type:ControlType.Number,title:\"Tween\",defaultValue:150,min:0,max:1e3,unit:\"ms\",step:10}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CellMatrixWidget\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CellMatrixWidget.map"],"mappings":"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"}