{"version":3,"file":"Dither_Prod.Cw2lhigC.mjs","names":["React.useContext","React.useMemo","React.Fragment","React.forwardRef","React.useRef","React.useId","SVG","RichText","UtilsComponentMessage","useRef","useMemo"],"sources":["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/lx89wDT6AiK5luo3hObH/fMVNYfQEejqC2cRWKym9/Dither_Prod.js"],"sourcesContent":["// 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","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{ControlType,addPropertyControls,RenderTarget}from\"framer\";import{useEffect,useMemo,useRef}from\"react\";import{useInView}from\"framer-motion\";import{ComponentMessage}from\"https://framer.com/m/Utils-FINc.js\";// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(Dither,{image:{type:ControlType.ResponsiveImage},algorithm:{type:ControlType.Enum,title:\"Algorithm\",options:[\"floyd-steinberg\",\"ordered\",\"random\",\"atkinson\"],optionTitles:[\"Floyd-Steinberg\",\"Ordered (Bayer)\",\"Random\",\"Atkinson\"],defaultValue:\"floyd-steinberg\"},threshold:{type:ControlType.Number,title:\"Threshold\",defaultValue:128,min:0,max:255,step:1},brightness:{type:ControlType.Number,title:\"Brightness\",defaultValue:0,min:-100,max:100,step:1},midtones:{type:ControlType.Number,title:\"Midtones\",defaultValue:50,min:0,max:100,step:1},pixelSize:{type:ControlType.Number,title:\"Pixel Size\",defaultValue:1,min:1,max:100,step:1},glow:{type:ControlType.Number,title:\"Glow\",defaultValue:0,min:0,max:50,step:1},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},dotColor:{type:ControlType.Color,title:\"Pixel Color\",defaultValue:\"#FFFFFF\"},animation:{type:ControlType.Object,icon:\"effect\",title:\"Animation\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:false},canvasPreview:{type:ControlType.Boolean,title:\"Preview\",defaultValue:true,hidden:props=>!props.enabled},interval:{type:ControlType.Number,title:\"Interval\",defaultValue:.1,min:.01,max:5,step:.01,unit:\"s\",displayStepper:true,hidden:props=>!props.enabled},intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:10,min:0,max:100,hidden:props=>!props.enabled}}},radius:{// @ts-expect-error - BorderRadius is not in this NPM version\ntype:ControlType.BorderRadius,defaultValue:\"0px\",title:\"Radius\"},enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// ------------------------------------------------------------ //\n// DEFAULT PROPS\n// ------------------------------------------------------------ //\nDither.defaultProps={algorithm:\"floyd-steinberg\",threshold:128,pixelSize:1,brightness:0,glow:0,midtones:50,radius:0,backgroundColor:\"#000000\",dotColor:\"#ffffff\",animation:{enabled:false,canvasPreview:true,interval:.1,intensity:10},enabled:true};// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n * @framerDisableUnlink\n */export default function Dither(props){const isOnFramerCanvas=RenderTarget.hasRestrictions();const hasImage=\"image\"in props&&props.image;const canvasRef=useRef(null);const isInView=useInView(canvasRef,{once:false});const intensityTransformed=useMemo(()=>{return transformValue(props.animation.intensity,[0,100],[.001,10]);},[props.animation.intensity]);// Animation frame refs\nconst animationFrameRef=useRef(null);const lastTimeRef=useRef(0);const elapsedTimeRef=useRef(0);// Use refs instead of state for animated values\nconst animatedValuesRef=useRef({brightness:props.brightness,glow:props.glow});const handleProcessImage=()=>{if(!canvasRef.current)return;const canvas=canvasRef.current;const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return;const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{try{// Calculate aspect ratio of original image\nconst aspectRatio=img.naturalWidth/img.naturalHeight;// Define a base resolution for consistent dithering (adjust as needed)\nconst baseResolution=800;// Calculate normalized dimensions based on pixel size and aspect ratio\nlet targetWidth,targetHeight;if(aspectRatio>=1){// Landscape or square\ntargetWidth=Math.floor(baseResolution/props.pixelSize);targetHeight=Math.floor(targetWidth/aspectRatio);}else{// Portrait\ntargetHeight=Math.floor(baseResolution/props.pixelSize);targetWidth=Math.floor(targetHeight*aspectRatio);}// Set canvas size to normalized dimensions\ncanvas.width=targetWidth;canvas.height=targetHeight;// Draw original image scaled to normalized size\nctx.imageSmoothingEnabled=false;ctx.drawImage(img,0,0,targetWidth,targetHeight);// Get image data\nconst imageData=ctx.getImageData(0,0,canvas.width,canvas.height);// Apply brightness adjustment using animated values\nconst brightAdjusted=DitherProcessor.adjustBrightness(imageData,animatedValuesRef.current.brightness);// Calculate adjusted threshold based on midtones\nconst adjustedThreshold=Math.round(props.threshold*props.midtones/50);// Apply selected dithering algorithm\nlet processedData;switch(props.algorithm){case\"floyd-steinberg\":processedData=DitherProcessor.floydSteinberg(brightAdjusted,adjustedThreshold,props.backgroundColor,props.dotColor);break;case\"ordered\":processedData=DitherProcessor.ordered(brightAdjusted,adjustedThreshold,props.backgroundColor,props.dotColor);break;case\"random\":processedData=DitherProcessor.random(brightAdjusted,adjustedThreshold,props.backgroundColor,props.dotColor);break;case\"atkinson\":processedData=DitherProcessor.atkinson(brightAdjusted,adjustedThreshold,props.backgroundColor,props.dotColor);break;default:processedData=DitherProcessor.floydSteinberg(brightAdjusted,adjustedThreshold,props.backgroundColor,props.dotColor);}// Apply glow effect using animated values\nconst glowProcessed=DitherProcessor.applyGlow(processedData,animatedValuesRef.current.glow);// Put processed image data back to canvas\nctx.putImageData(glowProcessed,0,0);}catch(err){console.error(\"Failed to process image\",err);}};img.src=props.image.src;};// Animation effect\nuseEffect(()=>{if(!props.animation.enabled||!isInView){animatedValuesRef.current={brightness:props.brightness,glow:props.glow};handleProcessImage();return;}if(isOnFramerCanvas&&!props.animation.canvasPreview){animatedValuesRef.current={brightness:props.brightness,glow:props.glow};handleProcessImage();return;}const generateRandomValue=baseValue=>{const variation=Math.abs(intensityTransformed);return baseValue+(Math.random()*2-1)*variation;};const animate=currentTime=>{if(!lastTimeRef.current){lastTimeRef.current=currentTime;}const deltaTime=currentTime-lastTimeRef.current;elapsedTimeRef.current+=deltaTime;// Check if enough time has passed based on interval\nif(elapsedTimeRef.current>=props.animation.interval*1e3){const newBrightness=generateRandomValue(props.brightness);animatedValuesRef.current={brightness:newBrightness,glow:props.glow};handleProcessImage()// Process image with new values\n;elapsedTimeRef.current=0// Reset elapsed time\n;}lastTimeRef.current=currentTime;animationFrameRef.current=requestAnimationFrame(animate);};// Start animation\nanimationFrameRef.current=requestAnimationFrame(animate);// Cleanup function\nreturn()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}lastTimeRef.current=0;elapsedTimeRef.current=0;};},[props.animation.enabled,props.animation.interval,props.animation.intensity,props.animation.canvasPreview,props.brightness,props.glow,props.backgroundColor,props.dotColor,props.algorithm,props.threshold,props.pixelSize,props.midtones,isInView,props.enabled,intensityTransformed]);// Effect to handle image updates\nuseEffect(()=>{if(!hasImage)return;handleProcessImage();},[props.image,props.algorithm,props.threshold,props.pixelSize,props.midtones,props.backgroundColor,props.dotColor,hasImage,props.enabled]);const getAriaLabel=()=>{if(!props.image.alt){return`Image with ${props.algorithm} dithering applied`;}return`Dithered version of ${props.image.alt} with ${props.algorithm} dithering applied`;};if(!hasImage){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(ComponentMessage,{title:\"Dither\",subtitle:\"Set up the component by adding image to the component properties.\"})});}return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",borderRadius:props.radius,overflow:\"hidden\"},children:[!props.enabled&&/*#__PURE__*/_jsx(\"img\",{src:props.image.src,alt:props.image.alt,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",imageRendering:\"pixelated\",opacity:props.enabled?1:0},\"aria-label\":getAriaLabel()})]});}// ------------------------------------------------------------ //\n// DITHERING ALGORITHMS\n// ------------------------------------------------------------ //\nclass DitherProcessor{// Utility function to convert hex color to RGB\nstatic hexToRgb(color){// Remove all whitespace from the color string\ncolor=color.replace(/\\s+/g,\"\");// Extract color value from var() if present\nconst varMatch=color.match(/var\\([^,]*,\\s*(.*?)\\)\\s*(?:\\/\\*|$)/);if(varMatch){color=varMatch[1].trim()// Get the color value between var(..., HERE)\n;}// Handle rgb() format with optional spaces\nconst rgbMatch=color.match(/^rgb\\((\\d+),(\\d+),(\\d+)\\)$/);if(rgbMatch){return{r:parseInt(rgbMatch[1],10),g:parseInt(rgbMatch[2],10),b:parseInt(rgbMatch[3],10)};}// Handle rgba() format with optional spaces and any decimal alpha\nconst rgbaMatch=color.match(/^rgba\\((\\d+),(\\d+),(\\d+),[\\d.]+\\)$/);if(rgbaMatch){return{r:parseInt(rgbaMatch[1],10),g:parseInt(rgbaMatch[2],10),b:parseInt(rgbaMatch[3],10)};}// Handle hex format (both with and without #)\nconst hexMatch=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(color);if(hexMatch){return{r:parseInt(hexMatch[1],16),g:parseInt(hexMatch[2],16),b:parseInt(hexMatch[3],16)};}// If we get here, log the problematic color for debugging\nconsole.warn(\"Could not parse color:\",color);// Try to extract numbers directly as a fallback\nconst numbers=color.match(/\\d+/g);if(numbers&&numbers.length>=3){return{r:parseInt(numbers[0],10),g:parseInt(numbers[1],10),b:parseInt(numbers[2],10)};}// Return black as last resort fallback\nreturn{r:0,g:0,b:0};}// Apply brightness adjustment to image data\nstatic adjustBrightness(imageData,brightness){const data=new Uint8ClampedArray(imageData.data);const factor=1+brightness/100;for(let i=0;i<data.length;i+=4){data[i]=Math.min(255,Math.max(0,Math.round(data[i]*factor)));data[i+1]=Math.min(255,Math.max(0,Math.round(data[i+1]*factor)));data[i+2]=Math.min(255,Math.max(0,Math.round(data[i+2]*factor)));}return new ImageData(data,imageData.width,imageData.height);}// Apply glow effect to image data\nstatic applyGlow(imageData,glowAmount){if(glowAmount===0)return imageData;const canvas=document.createElement(\"canvas\");canvas.width=imageData.width;canvas.height=imageData.height;const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});// Draw original image data\nctx.putImageData(imageData,0,0);// Apply blur for glow effect\nctx.filter=`blur(${glowAmount/4}px)`;ctx.globalCompositeOperation=\"lighter\";ctx.drawImage(canvas,0,0);ctx.filter=\"none\";return ctx.getImageData(0,0,imageData.width,imageData.height);}// Floyd-Steinberg error diffusion dithering\nstatic floydSteinberg(imageData,threshold,backgroundColor,dotColor){const data=new Uint8ClampedArray(imageData.data);const width=imageData.width;const height=imageData.height;const bgColor=this.hexToRgb(backgroundColor);const dotColorRgb=this.hexToRgb(dotColor);for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=(y*width+x)*4;// Calculate luminance\nconst luminance=Math.round(.299*data[idx]+.587*data[idx+1]+.114*data[idx+2]);// Determine which color to use based on luminance\nconst useDotColor=luminance>threshold;const targetColor=useDotColor?dotColorRgb:bgColor;// Calculate error for each channel\nconst errorR=data[idx]-targetColor.r;const errorG=data[idx+1]-targetColor.g;const errorB=data[idx+2]-targetColor.b;// Set current pixel color\ndata[idx]=targetColor.r;data[idx+1]=targetColor.g;data[idx+2]=targetColor.b;data[idx+3]=255// Alpha\n;// Distribute error to neighboring pixels\nif(x+1<width){data[(y*width+(x+1))*4]+=errorR*7/16;data[(y*width+(x+1))*4+1]+=errorG*7/16;data[(y*width+(x+1))*4+2]+=errorB*7/16;}if(y+1<height){if(x-1>=0){data[((y+1)*width+(x-1))*4]+=errorR*3/16;data[((y+1)*width+(x-1))*4+1]+=errorG*3/16;data[((y+1)*width+(x-1))*4+2]+=errorB*3/16;}data[((y+1)*width+x)*4]+=errorR*5/16;data[((y+1)*width+x)*4+1]+=errorG*5/16;data[((y+1)*width+x)*4+2]+=errorB*5/16;if(x+1<width){data[((y+1)*width+(x+1))*4]+=errorR/16;data[((y+1)*width+(x+1))*4+1]+=errorG/16;data[((y+1)*width+(x+1))*4+2]+=errorB/16;}}}}return new ImageData(data,width,height);}// Ordered/Bayer dithering\nstatic ordered(imageData,threshold,backgroundColor,dotColor){const data=new Uint8ClampedArray(imageData.data);const width=imageData.width;const height=imageData.height;const bgColor=this.hexToRgb(backgroundColor);const dotColorRgb=this.hexToRgb(dotColor);// 4x4 Bayer matrix\nconst bayerMatrix=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]];for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=(y*width+x)*4;// Convert to grayscale\nconst gray=Math.round(.299*data[idx]+.587*data[idx+1]+.114*data[idx+2]);// Get threshold modifier from Bayer matrix\nconst bayerValue=bayerMatrix[y%4][x%4];const adjustedThreshold=threshold+(bayerValue-7.5)*16;const useDotColor=gray>adjustedThreshold;const targetColor=useDotColor?dotColorRgb:bgColor;data[idx]=targetColor.r;data[idx+1]=targetColor.g;data[idx+2]=targetColor.b;}}return new ImageData(data,width,height);}// Random dithering\nstatic random(imageData,threshold,backgroundColor,dotColor){const data=new Uint8ClampedArray(imageData.data);const width=imageData.width;const height=imageData.height;const bgColor=this.hexToRgb(backgroundColor);const dotColorRgb=this.hexToRgb(dotColor);for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=(y*width+x)*4;// Convert to grayscale\nconst gray=Math.round(.299*data[idx]+.587*data[idx+1]+.114*data[idx+2]);// Add random noise to threshold\nconst randomNoise=(Math.random()-.5)*100;const adjustedThreshold=threshold+randomNoise;const useDotColor=gray>adjustedThreshold;const targetColor=useDotColor?dotColorRgb:bgColor;data[idx]=targetColor.r;data[idx+1]=targetColor.g;data[idx+2]=targetColor.b;}}return new ImageData(data,width,height);}// Atkinson dithering\nstatic atkinson(imageData,threshold,backgroundColor,dotColor){const data=new Uint8ClampedArray(imageData.data);const width=imageData.width;const height=imageData.height;const bgColor=this.hexToRgb(backgroundColor);const dotColorRgb=this.hexToRgb(dotColor);for(let y=0;y<height;y++){for(let x=0;x<width;x++){const idx=(y*width+x)*4;// Calculate luminance\nconst luminance=Math.round(.299*data[idx]+.587*data[idx+1]+.114*data[idx+2]);// Determine which color to use based on luminance\nconst useDotColor=luminance>threshold;const targetColor=useDotColor?dotColorRgb:bgColor;// Calculate error for each channel\nconst errorR=data[idx]-targetColor.r;const errorG=data[idx+1]-targetColor.g;const errorB=data[idx+2]-targetColor.b;// Set current pixel color\ndata[idx]=targetColor.r;data[idx+1]=targetColor.g;data[idx+2]=targetColor.b;data[idx+3]=255// Alpha\n;// Distribute error using Atkinson pattern (1/8 to each neighbor)\nconst positions=[[1,0],[2,0],[-1,1],[0,1],[1,1],[0,2]];for(const[dx,dy]of positions){const newX=x+dx;const newY=y+dy;if(newX>=0&&newX<width&&newY>=0&&newY<height){const newIdx=(newY*width+newX)*4;data[newIdx]=Math.min(255,Math.max(0,data[newIdx]+errorR/8));data[newIdx+1]=Math.min(255,Math.max(0,data[newIdx+1]+errorG/8));data[newIdx+2]=Math.min(255,Math.max(0,data[newIdx+2]+errorB/8));}}}}return new ImageData(data,width,height);}}function transformValue(input,inputRange,outputRange,clamp=false){const[inputMin,inputMax]=inputRange;const[outputMin,outputMax]=outputRange;const progress=(input-inputMin)/(inputMax-inputMin);let result=outputMin+progress*(outputMax-outputMin);if(clamp){if(outputMax>outputMin){result=Math.min(Math.max(result,outputMin),outputMax);}else{result=Math.min(Math.max(result,outputMax),outputMin);}}return result;}Dither.displayName=\"Dither\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Dither\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"\",\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Dither_Prod.map"],"mappings":"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"}