{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js", "ssg:https://ga.jspm.io/npm:@emotion/hash@0.9.2/dist/emotion-hash.esm.js", "ssg:https://framerusercontent.com/modules/ecXhgQXKT3kSdHJqMqeO/nZZQFiuTp5lA7f2LIPAu/DottedVideo_Prod.js"],
  "sourcesContent": ["import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map", "function murmur2(r){var t=0;var a,e=0,c=r.length;for(;c>=4;++e,c-=4){a=r.charCodeAt(e)&255|(r.charCodeAt(++e)&255)<<8|(r.charCodeAt(++e)&255)<<16|(r.charCodeAt(++e)&255)<<24;a=1540483477*(a&65535)+(59797*(a>>>16)<<16);a^=a>>>24;t=1540483477*(a&65535)+(59797*(a>>>16)<<16)^1540483477*(t&65535)+(59797*(t>>>16)<<16)}switch(c){case 3:t^=(r.charCodeAt(e+2)&255)<<16;case 2:t^=(r.charCodeAt(e+1)&255)<<8;case 1:t^=r.charCodeAt(e)&255;t=1540483477*(t&65535)+(59797*(t>>>16)<<16)}t^=t>>>13;t=1540483477*(t&65535)+(59797*(t>>>16)<<16);return((t^t>>>15)>>>0).toString(36)}export{murmur2 as default};\n//# sourceMappingURL=emotion-hash.esm.js.map\n", "import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,Color}from\"framer\";import{useEffect,useState,useRef,useId}from\"react\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";import hash from\"@emotion/hash\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 480\n * @framerIntrinsicHeight 270\n */export default function DottedVideo({id,type,image,videoSource,videoFile,videoUrl,sizing,playing,loop,muted,volume,preview,dotShape,dotSize,dotGap,dotColor,backgroundColor,radius,style,endEvent,clickEvent,hoverEvent}){const componentId=id?hash(id):\"\";const instanceId=useInstanceId();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const videoUrlValue=videoSource===\"upload\"?videoFile:videoUrl;const videoIsPlaying=isCanvas?playing&&preview:playing;const sizeMode=style?.width&&style?.height?\"none\":!style?.width&&!style?.height?\"both\":!style?.width?\"width\":!style?.height?\"height\":\"none\";const canvasRef=useRef(null);const offscreenCanvasRef=useRef(null);const videoRef=useRef(null);const imageRef=useRef(null);const[isVideoLoaded,setIsVideoLoaded]=useState(false);const[isImageLoaded,setIsImageLoaded]=useState(false);const[dimensions,setDimensions]=useState({width:0,height:0,pixelRatio:1});const dimensionsRef=useRef(dimensions);const imageSizeRef=useRef({width:0,height:0});const videoSizeRef=useRef({width:0,height:0});const animationFrameRef=useRef(null);const typeRef=useRef(type);const videoIsPlayingRef=useRef(videoIsPlaying);const[colorValue,color1Value,color2Value]=useColors(dotColor.color,dotColor.color1,dotColor.color2);const colorInterpolatorRef=useRef(()=>Color.interpolate(new Color(color1Value),new Color(color2Value)));// Create a ref to store all rendering values\nconst renderValuesRef=useRef({dotShape,dotSize,dotGap,dotColor,colorValue,color1Value,color2Value,sizing});// Update the ref whenever any of the rendering values change\nuseEffect(()=>{renderValuesRef.current={dotShape,dotSize,dotGap,dotColor,colorValue,color1Value,color2Value,sizing};},[dotShape,dotSize,dotGap,dotColor,colorValue,color1Value,color2Value,sizing]);useEffect(()=>{colorInterpolatorRef.current=Color.interpolate(new Color(color1Value),new Color(color2Value));},[color1Value,color2Value]);// Update typeRef when type changes\nuseEffect(()=>{typeRef.current=type;},[type]);// Update videoIsPlayingRef when videoIsPlaying changes\nuseEffect(()=>{videoIsPlayingRef.current=videoIsPlaying;},[videoIsPlaying]);// Handle type changes\nuseEffect(()=>{// Clear any existing animation frame\nif(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}// Reset canvas\nif(canvasRef.current){const ctx=canvasRef.current.getContext(\"2d\");ctx.clearRect(0,0,canvasRef.current.width,canvasRef.current.height);}// Handle video pause when switching to image\nif(type===\"image\"&&videoRef.current){videoRef.current.pause();setIsVideoLoaded(false);}// Reset image loaded state when switching to video\nif(type===\"video\"){setIsImageLoaded(false);}// Trigger appropriate rendering based on type\nif(type===\"image\"&&isImageLoaded){drawPixelatedImage();}else if(type===\"video\"&&isVideoLoaded){drawPixelatedVideo();}},[type]);// Handle image loading\nuseEffect(()=>{if(type===\"image\"&&image?.src){// Create a new image element\nconst img=new Image;img.crossOrigin=\"anonymous\";img.src=image.src;// Set up load handler\nimg.onload=()=>{imageRef.current=img;// Update the image size ref with natural dimensions\nimageSizeRef.current={width:img.naturalWidth,height:img.naturalHeight};setIsImageLoaded(true);};img.onerror=err=>{console.error(\"Error loading image:\",err);};}},[type,image?.src]);// Handle video loading\nuseEffect(()=>{if(type===\"video\"){if(videoRef.current){if(videoUrlValue){videoRef.current.src=videoUrlValue;videoRef.current.crossOrigin=\"anonymous\";videoRef.current.load();// Add an event listener for loadeddata to ensure we draw the first frame\n// regardless of whether the video is playing or not\nconst handleLoadedData=()=>{// Ensure we draw the first frame even if not playing\nif(!videoIsPlayingRef.current){drawPixelatedVideo();}};videoRef.current.addEventListener(\"loadeddata\",handleLoadedData);if(videoIsPlaying){videoRef.current.play().catch(err=>{console.error(\"Error playing video:\",err);});}// Clean up event listener\nreturn()=>{if(videoRef.current){videoRef.current.removeEventListener(\"loadeddata\",handleLoadedData);}};}else{// Clear video source\nvideoRef.current.src=\"\";videoRef.current.load();setIsVideoLoaded(false);// Clear the canvas when there's no video URL\nif(canvasRef.current){const ctx=canvasRef.current.getContext(\"2d\");ctx.clearRect(0,0,canvasRef.current.width,canvasRef.current.height);}// Cancel any ongoing animation frame\nif(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}}}}},[type,videoUrlValue,videoIsPlaying]);// Handle video loaded data event\nconst handleVideoLoaded=()=>{if(typeRef.current===\"video\"){setIsVideoLoaded(true);// Update the video size ref with video dimensions\nif(videoRef.current){videoSizeRef.current={width:videoRef.current.videoWidth,height:videoRef.current.videoHeight};}// Draw the first frame regardless of play state\ndrawPixelatedVideo();// If video is not playing, we need to manually start the animation loop\n// when it starts playing again\nif(!videoIsPlayingRef.current&&animationFrameRef.current){// Don't cancel the animation frame if we just drew the first frame\n// This allows the first frame to be drawn even when not playing\nif(videoRef.current&&videoRef.current.currentTime>0){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}}}};useEffect(()=>{const handleResize=()=>{if(canvasRef.current){try{// Get the device pixel ratio\nconst pixelRatio=window.devicePixelRatio||1;const canvasWidth=canvasRef.current.offsetWidth||1// Ensure non-zero\n;const canvasHeight=canvasRef.current.offsetHeight||1// Ensure non-zero\n;// Store previous dimensions to check if we need to update\nconst prevWidth=dimensionsRef.current.width;const prevHeight=dimensionsRef.current.height;let finalWidth=canvasWidth;let finalHeight=canvasHeight;const size=type===\"image\"?imageSizeRef.current:videoSizeRef.current;if(size&&size.width>0&&size.height>0){if(sizeMode===\"both\"){finalWidth=100;finalHeight=100;}else if(sizeMode===\"width\"||sizeMode===\"height\"){const aspectRatio=size.width/size.height;if(sizeMode===\"height\"){finalHeight=finalWidth/aspectRatio;}else if(sizeMode===\"width\"){finalWidth=finalHeight*aspectRatio;}}}// Ensure we have valid positive values\nfinalWidth=Math.max(1,finalWidth);finalHeight=Math.max(1,finalHeight);const cellSize=dotSize+dotGap;// Ensure at least one cell in each dimension\nconst width=Math.max(cellSize,Math.floor(finalWidth/cellSize)*cellSize);const height=Math.max(cellSize,Math.floor(finalHeight/cellSize)*cellSize);// Validate dimensions before setting\nif(isNaN(width)||isNaN(height)||isNaN(pixelRatio)||width<=0||height<=0||pixelRatio<=0){console.error(\"Invalid dimensions in handleResize:\",{width,height,pixelRatio});return;}// Only update dimensions if the relevant dimension has changed based on sizeMode\nconst shouldUpdate=sizeMode===\"both\"?width!==prevWidth||height!==prevHeight:sizeMode===\"width\"?width!==prevWidth:sizeMode===\"height\"?height!==prevHeight:width!==prevWidth||height!==prevHeight// For \"none\" mode\n;if(shouldUpdate||dimensionsRef.current.pixelRatio!==pixelRatio){const newDimensions={width,height,pixelRatio};setDimensions(newDimensions);dimensionsRef.current=newDimensions;// Redraw content when dimensions change\nif(typeRef.current===\"image\"&&isImageLoaded){drawPixelatedImage();}else if(typeRef.current===\"video\"&&isVideoLoaded){drawPixelatedVideo();}}}catch(error){console.error(\"Error in handleResize:\",error);}}};// Create a ResizeObserver to watch the canvas element\nconst resizeObserver=new ResizeObserver(handleResize);// Start observing the canvas element if it exists\nif(canvasRef.current){resizeObserver.observe(canvasRef.current);}handleResize();return()=>{// Clean up\nif(canvasRef.current){resizeObserver.unobserve(canvasRef.current);}resizeObserver.disconnect();};},[dotSize,dotGap,type,isImageLoaded,isVideoLoaded,dimensions,sizeMode]);// Unified drawing function for both image and video\nconst drawPixelated=(source=null)=>{// Determine if we're drawing from video or image\nconst isVideo=typeRef.current===\"video\";// For video mode, check if we should continue the animation loop\nif(isVideo&&!source){// Only draw new frames if the video is playing\nconst shouldDrawNewFrame=videoIsPlayingRef.current;if(!videoRef.current||videoRef.current.readyState<videoRef.current.HAVE_CURRENT_DATA||videoRef.current.videoWidth===0||videoRef.current.videoHeight===0){if(isVideo){animationFrameRef.current=requestAnimationFrame(()=>drawPixelated());}return;}source=videoRef.current;}else if(!isVideo&&!source){source=imageRef.current;}// Common validation for both modes\nif(!source||!canvasRef.current||!offscreenCanvasRef.current){return;}const{width,height,pixelRatio}=dimensionsRef.current;if(width<=0||height<=0||!pixelRatio){return;}// Access rendering values from the ref\nconst{dotShape,dotSize,dotGap,dotColor,colorValue,color1Value,color2Value,sizing}=renderValuesRef.current;const canvas=canvasRef.current;const offscreenCanvas=offscreenCanvasRef.current;const ctx=canvas.getContext(\"2d\");const offscreenCtx=offscreenCanvas.getContext(\"2d\");// Ensure width, height and pixelRatio are valid numbers\nif(isNaN(width)||isNaN(height)||isNaN(pixelRatio)){console.error(\"Invalid dimensions:\",{width,height,pixelRatio});return;}const fullWidth=width*pixelRatio;const fullHeight=height*pixelRatio;// Validate calculated dimensions\nif(isNaN(fullWidth)||isNaN(fullHeight)||fullWidth<=0||fullHeight<=0){console.error(\"Invalid calculated dimensions:\",{fullWidth,fullHeight,width,height,pixelRatio});return;}// Apply device pixel ratio to canvas dimensions\ncanvas.width=fullWidth;canvas.height=fullHeight;offscreenCanvas.width=fullWidth;offscreenCanvas.height=fullHeight;// Scale the context to account for the pixel ratio\nctx.scale(pixelRatio,pixelRatio);offscreenCtx.scale(pixelRatio,pixelRatio);offscreenCtx.clearRect(0,0,width,height);// Get source dimensions\nconst sourceWidth=isVideo?source.videoWidth:source.width;const sourceHeight=isVideo?source.videoHeight:source.height;// Calculate dimensions based on sizing option\nlet drawWidth,drawHeight,offsetX=0,offsetY=0;if(sizing===\"fill\"){// Cover: maintain aspect ratio and fill the entire canvas\nconst sourceRatio=sourceWidth/sourceHeight;const canvasRatio=width/height;if(sourceRatio>canvasRatio){// Source is wider than canvas\ndrawHeight=height;drawWidth=height*sourceRatio;offsetX=(width-drawWidth)/2;}else{// Source is taller than canvas\ndrawWidth=width;drawHeight=width/sourceRatio;offsetY=(height-drawHeight)/2;}}else if(sizing===\"fit\"){// Contain: maintain aspect ratio and fit within canvas\nconst sourceRatio=sourceWidth/sourceHeight;const canvasRatio=width/height;if(sourceRatio>canvasRatio){// Source is wider than canvas\ndrawWidth=width;drawHeight=width/sourceRatio;offsetY=(height-drawHeight)/2;}else{// Source is taller than canvas\ndrawHeight=height;drawWidth=height*sourceRatio;offsetX=(width-drawWidth)/2;}}else if(sizing===\"stretch\"){// Stretch: fill the entire canvas without maintaining aspect ratio\ndrawWidth=width;drawHeight=height;}// Draw the source to the offscreen canvas with the calculated dimensions\noffscreenCtx.drawImage(source,offsetX,offsetY,drawWidth,drawHeight);// Use Math.round for reliable integer conversion\nconst intFullWidth=Math.round(fullWidth);const intFullHeight=Math.round(fullHeight);try{const pixelData=offscreenCtx.getImageData(0,0,intFullWidth,intFullHeight);const data=pixelData.data;ctx.clearRect(0,0,width,height);// Calculate the total size of each dot cell (dot + gap)\nlet adjustedDotSize=dotSize;let cellSize=adjustedDotSize+dotGap;// Calculate the number of dots that would be drawn on each axis\nconst dotsX=Math.floor(width/cellSize);const dotsY=Math.floor(height/cellSize);// If either axis exceeds 200 dots, adjust the dot size\nconst MAX_DOTS=200;if(dotsX>MAX_DOTS||dotsY>MAX_DOTS){// Determine which axis has more dots\nconst maxDots=Math.max(dotsX,dotsY);// Calculate the minimum cell size needed to have at most MAX_DOTS dots\nconst minCellSize=maxDots===dotsX?width/MAX_DOTS:height/MAX_DOTS;// Adjust the dot size, keeping the gap the same\nadjustedDotSize=minCellSize-dotGap;// Recalculate the cell size with the adjusted dot size\ncellSize=adjustedDotSize+dotGap;}const threshold=dotColor.threshold/100*255;const color1Point=dotColor.color1Point/100;const color2Point=dotColor.color2Point/100;const dotColorMode=dotColor.mode;const colorInterpolator=colorInterpolatorRef.current;const offset=dotGap/2;const circleRadius=adjustedDotSize/2;const circlePosition=circleRadius+offset;for(let y=0;y<height;y+=cellSize){for(let x=0;x<width;x+=cellSize){// Sample the pixel at the center of where the dot will be\nconst sampleX=Math.min(Math.round(x*pixelRatio),intFullWidth-1);const sampleY=Math.min(Math.round(y*pixelRatio),intFullHeight-1);const idx=(sampleY*intFullWidth+sampleX)*4;const r=data[idx];const g=data[idx+1];const b=data[idx+2];const brightness=.2126*r+.7152*g+.0722*b;const isLight=brightness>threshold;let pixelColor;switch(dotColorMode){case\"color\":if(dotColor.invert?isLight:!isLight){pixelColor=colorValue;}break;case\"duotone\":pixelColor=isLight?color2Value:color1Value;break;case\"gradient\":const percent=brightness/255;pixelColor=percent<=color1Point?color1Value:percent>=color2Point?color2Value:colorInterpolator?colorInterpolator(mapRange(percent,color1Point,color2Point,0,1)).toValue():color1Value;break;case\"sourceColor\":const a=data[idx+3]/255// Alpha value normalized to 0-1\n;pixelColor=`rgba(${r}, ${g}, ${b}, ${a})`;break;}if(!pixelColor)continue;ctx.fillStyle=pixelColor;if(dotShape===\"circle\"){ctx.beginPath();ctx.arc(x+circlePosition,y+circlePosition,circleRadius,0,2*Math.PI);ctx.fill();}else if(dotShape===\"square\"){ctx.fillRect(x+offset,y+offset,adjustedDotSize,adjustedDotSize);}}}// For video mode, continue the animation loop if playing\nif(isVideo&&videoIsPlayingRef.current){animationFrameRef.current=requestAnimationFrame(()=>drawPixelated());}}catch(error){console.error(\"Error in drawPixelated:\",error,{dimensions:{width,height,pixelRatio},calculated:{fullWidth,fullHeight,intFullWidth,intFullHeight}});// Try to continue the animation loop for video even if there was an error\nif(isVideo&&videoIsPlayingRef.current){animationFrameRef.current=requestAnimationFrame(()=>drawPixelated());}}};// Replace the original functions with wrappers that call the unified function\nconst drawPixelatedImage=()=>{if(imageRef.current){drawPixelated(imageRef.current);}};const drawPixelatedVideo=()=>{if(typeRef.current!==\"video\"){if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}return;}drawPixelated();};// Clean up animation frame on unmount\nuseEffect(()=>{return()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}};},[]);useEffect(()=>{if(videoRef.current&&type===\"video\"){if(muted||volume<=0){videoRef.current.muted=true;videoRef.current.volume=0;}else{videoRef.current.muted=false;videoRef.current.volume=volume/100;}videoRef.current.loop=!!loop;if(videoIsPlaying){videoRef.current.play().catch(err=>{console.error(\"Error playing video:\",err);});}else{videoRef.current.pause();}}},[muted,volume,loop,videoIsPlaying,type]);// Handle video playing state changes\nuseEffect(()=>{if(type===\"video\"&&isVideoLoaded){if(videoIsPlaying){// If video starts playing and we don't have an animation frame running,\n// restart the animation loop\nif(!animationFrameRef.current){drawPixelatedVideo();}}}},[videoIsPlaying,type,isVideoLoaded]);// Handle image loaded event and re-render when properties change\nuseEffect(()=>{if(type===\"image\"&&isImageLoaded){if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}drawPixelatedImage();}},[type,isImageLoaded,dimensions,dotShape,dotSize,dotGap,dotColor,colorValue,color1Value,color2Value,sizing]);return /*#__PURE__*/_jsxs(\"div\",{id:instanceId,onClick:clickEvent,onMouseEnter:hoverEvent,style:{...style,backgroundColor,borderRadius:radius,overflow:\"hidden\",position:\"relative\",aspectRatio:style?.width&&style?.height?undefined:dimensions.width/dimensions.height},children:[/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,width:dimensions.width*dimensions.pixelRatio,height:dimensions.height*dimensions.pixelRatio,style:{display:\"block\",imageRendering:dotShape===\"square\"?\"pixelated\":\"auto\",...style}}),/*#__PURE__*/_jsx(\"canvas\",{ref:offscreenCanvasRef,style:{display:\"none\"}}),/*#__PURE__*/_jsx(\"video\",{ref:videoRef,style:{display:\"none\"},crossOrigin:\"anonymous\",onLoadedData:handleVideoLoaded,onEnded:()=>type===\"video\"&&endEvent?.(),muted:muted||volume<=0,loop:loop,playsInline:true}),/*#__PURE__*/_jsx(\"style\",{children:isCanvas?`div:has(> #${instanceId}) { overflow: hidden !important; }`:`.framer-${componentId}-container { overflow: hidden !important; }`})]});}DottedVideo.displayName=\"Dotted Image/Video\";addPropertyControls(DottedVideo,{type:{type:ControlType.Enum,defaultValue:\"image\",options:[\"image\",\"video\"],optionTitles:[\"Image\",\"Video\"],displaySegmentedControl:true},image:{type:ControlType.ResponsiveImage,hidden:props=>props.type!==\"image\"},videoSource:{type:ControlType.Enum,defaultValue:\"url\",options:[\"url\",\"upload\"],optionTitles:[\"URL\",\"Upload\"],displaySegmentedControl:true,title:\"Source\",hidden:props=>props.type!==\"video\"},videoFile:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\"],description:\"MP4 or WebM\",title:\"File\",hidden:props=>props.type!==\"video\"||props.videoSource!==\"upload\"},videoUrl:{type:ControlType.String,title:\"URL\",placeholder:\"Enter a video URL\",description:\"MP4 or WebM\",hidden:props=>props.type!==\"video\"||props.videoSource!==\"url\"},sizing:{type:ControlType.Enum,defaultValue:\"fill\",options:[\"fill\",\"fit\",\"stretch\"],optionTitles:[\"Fill\",\"Fit\",\"Stretch\"]},playing:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.type!==\"video\"},loop:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.type!==\"video\"},muted:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.type!==\"video\"},volume:{type:ControlType.Number,defaultValue:50,min:0,max:100,unit:\"%\",hidden:props=>props.type!==\"video\"||props.muted},preview:{type:ControlType.Boolean,defaultValue:true,description:\"Play in editor\",hidden:props=>props.type!==\"video\"},dotShape:{type:ControlType.Enum,defaultValue:\"circle\",options:[\"circle\",\"square\"],optionTitles:[\"Circle\",\"Square\"],displaySegmentedControl:true,title:\"Shape\"},dotSize:{type:ControlType.Number,defaultValue:30,min:1,max:100},dotGap:{type:ControlType.Number,defaultValue:0,min:0,step:1},dotColor:{type:ControlType.Object,title:\"Dot Color\",controls:{mode:{type:ControlType.Enum,defaultValue:\"color\",options:[\"color\",\"duotone\",\"gradient\",\"sourceColor\"],optionTitles:[\"Color\",\"Duotone\",\"Gradient\",\"Source Color\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},color:{type:ControlType.Color,defaultValue:\"#000000\",hidden:props=>props.mode!==\"color\"},color1:{type:ControlType.Color,defaultValue:\"#000000\",title:\"Color 1\",hidden:props=>props.mode!==\"duotone\"&&props.mode!==\"gradient\"},color1Point:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},color2:{type:ControlType.Color,defaultValue:\"#d9d9d9\",title:\"Color 2\",hidden:props=>props.mode!==\"duotone\"&&props.mode!==\"gradient\"},color2Point:{type:ControlType.Number,defaultValue:100,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},threshold:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\",hidden:props=>props.mode===\"gradient\"||props.mode===\"sourceColor\"},invert:{type:ControlType.Boolean,defaultValue:false,title:\"Invert\",hidden:props=>props.mode!==\"color\"}}},backgroundColor:{type:ControlType.Color,defaultValue:\"#ffffff\",optional:true,title:\"Background\"},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\",description:\"More components at [Framer University](https://frameruni.link/cc).\"},endEvent:{type:ControlType.EventHandler,title:\"End\"},clickEvent:{type:ControlType.EventHandler,title:\"Click\"},hoverEvent:{type:ControlType.EventHandler,title:\"Hover\"}});function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}const useInstanceId=()=>{const id=useId();const cleanId=id.replace(/:/g,\"\");const instanceId=`frameruni-${cleanId}`;return instanceId;};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DottedVideo\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"270\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"480\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["cssVariableRegex", "useColors", "colors", "isCanvas", "RenderTarget", "isOptimizing", "window", "darkMode", "useDarkMode", "styleValues", "setStyleValues", "ye", "extractStyleValues", "extractCSSVariableName", "ue", "div", "observer", "variableNames", "se", "color", "extractDefaultValue", "values", "i", "variableName", "colorValues", "result", "lightVars", "darkVars", "style", "vars", "parseVariables", "light", "dark", "extractColorStyles", "varName", "lightSection", "darkSection", "styles", "rules", "styleRules", "rule", "subrule", "isDarkMedia", "css", "isDark", "isLight", "isPreview", "isDarkMode", "setIsDarkMode", "mutations", "mutation", "theme", "mediaQuery", "handleChange", "e", "cssString", "match", "section", "declaration", "name", "value", "s", "cssVar", "parts", "murmur2", "r", "a", "e", "c", "DottedVideo", "id", "type", "image", "videoSource", "videoFile", "videoUrl", "sizing", "playing", "loop", "muted", "volume", "preview", "dotShape", "dotSize", "dotGap", "dotColor", "backgroundColor", "radius", "style", "endEvent", "clickEvent", "hoverEvent", "componentId", "murmur2", "instanceId", "useInstanceId", "isCanvas", "RenderTarget", "videoUrlValue", "videoIsPlaying", "sizeMode", "canvasRef", "pe", "offscreenCanvasRef", "videoRef", "imageRef", "isVideoLoaded", "setIsVideoLoaded", "ye", "isImageLoaded", "setIsImageLoaded", "dimensions", "setDimensions", "dimensionsRef", "imageSizeRef", "videoSizeRef", "animationFrameRef", "typeRef", "videoIsPlayingRef", "colorValue", "color1Value", "color2Value", "useColors", "colorInterpolatorRef", "Color", "renderValuesRef", "ue", "drawPixelatedImage", "drawPixelatedVideo", "img", "err", "handleLoadedData", "handleVideoLoaded", "handleResize", "pixelRatio", "window", "canvasWidth", "canvasHeight", "prevWidth", "prevHeight", "finalWidth", "finalHeight", "size", "aspectRatio", "cellSize", "width", "height", "newDimensions", "error", "resizeObserver", "drawPixelated", "source", "isVideo", "shouldDrawNewFrame", "canvas", "offscreenCanvas", "ctx", "offscreenCtx", "fullWidth", "fullHeight", "sourceWidth", "sourceHeight", "drawWidth", "drawHeight", "offsetX", "offsetY", "sourceRatio", "canvasRatio", "intFullWidth", "intFullHeight", "data", "adjustedDotSize", "dotsX", "dotsY", "MAX_DOTS", "threshold", "color1Point", "color2Point", "dotColorMode", "colorInterpolator", "offset", "circleRadius", "circlePosition", "y", "x", "sampleX", "idx", "r", "g", "b", "brightness", "isLight", "pixelColor", "percent", "mapRange", "a", "u", "p", "addPropertyControls", "ControlType", "props", "value", "fromLow", "fromHigh", "toLow", "toHigh", "percentage", "ae"]
}
