{"version":3,"file":"shared-lib.CS-raR2b.mjs","names":["React.useRef","metadata","siteMetadata","metadataVersion","__FramerMetadata__","metadata","siteMetadata"],"sources":["https:/framerusercontent.com/modules/Tc5AGfHaZRiNipFqq7Tk/B4d2uG6kXU8ZRVCdAwHq/Scanner.js","https:/framerusercontent.com/modules/ex0G5w6iEqXINJAQcXXn/vayZ4aMnIHie2FKeXrax/siteMetadata.js","https:/framerusercontent.com/modules/8hEcyhoZhebyoNBUpVcV/vRWV95eWt0UNdnqhcYKI/augiA20Il.js","https:/framerusercontent.com/modules/ZomnkRqvOgrmvVWQ1RNL/ao8aKUG0m9LSuBpLq64X/CuXs2SXYI.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";function colorToRgb(color){if(!color)return{r:1,g:1,b:1};if(color.startsWith(\"#\")){const clean=color.replace(\"#\",\"\");const full=clean.length===3?clean.split(\"\").map(c=>c+c).join(\"\"):clean;const bigint=parseInt(full,16);if(Number.isNaN(bigint)){return{r:1,g:1,b:1};}return{r:(bigint>>16&255)/255,g:(bigint>>8&255)/255,b:(bigint&255)/255};}const match=color.match(/rgba?\\(([^)]+)\\)/);if(match){const parts=match[1].split(\",\").map(v=>parseFloat(v.trim()));return{r:(parts[0]||255)/255,g:(parts[1]||255)/255,b:(parts[2]||255)/255};}return{r:1,g:1,b:1};}export default function Effect03DepthScan(props){const canvasRef=React.useRef(null);const wrapRef=React.useRef(null);React.useEffect(()=>{const canvas=canvasRef.current;const wrapper=wrapRef.current;if(!canvas||!wrapper)return;const gl=canvas.getContext(\"webgl\",{alpha:true,antialias:true,premultipliedAlpha:true})||canvas.getContext(\"experimental-webgl\");if(!gl)return;let disposed=false;let raf=0;const start=performance.now();const vertexShaderSource=`\n            attribute vec2 aPosition;\n            varying vec2 vUv;\n\n            void main() {\n                vUv = aPosition * 0.5 + 0.5;\n                gl_Position = vec4(aPosition, 0.0, 1.0);\n            }\n        `;const fragmentShaderSource=`\n            precision mediump float;\n\n            varying vec2 vUv;\n\n            uniform sampler2D uImage;\n            uniform sampler2D uDepth;\n            uniform sampler2D uEdge;\n\n            uniform vec2 uCanvasRes;\n            uniform vec2 uImageRes;\n            uniform vec2 uPointer;\n\n            uniform float uTime;\n            uniform float uPointerStrength;\n            uniform float uScanDuration;\n            uniform float uScanMax;\n            uniform float uCrossScale;\n            uniform float uCrossSizeX;\n            uniform float uCrossSizeY;\n            uniform float uCrossSoftness;\n            uniform float uMaskBoost;\n            uniform float uImageDim;\n            uniform float uOpacity;\n            uniform float uInvertDepth;\n            uniform float uInvertEdge;\n            uniform float uUseEdgeMap;\n            uniform float uImageFit;\n\n            uniform vec3 uScanColor;\n\n            vec2 coverUv(vec2 uv, vec2 canvas, vec2 image) {\n                float canvasRatio = canvas.x / canvas.y;\n                float imageRatio = image.x / image.y;\n\n                vec2 outUv = uv;\n\n                if (canvasRatio > imageRatio) {\n                    float scale = imageRatio / canvasRatio;\n                    outUv.y = (uv.y - 0.5) * scale + 0.5;\n                } else {\n                    float scale = canvasRatio / imageRatio;\n                    outUv.x = (uv.x - 0.5) * scale + 0.5;\n                }\n\n                return outUv;\n            }\n\n            vec2 containUv(vec2 uv, vec2 canvas, vec2 image) {\n                float canvasRatio = canvas.x / canvas.y;\n                float imageRatio = image.x / image.y;\n\n                vec2 outUv = uv;\n\n                if (canvasRatio > imageRatio) {\n                    float scale = imageRatio / canvasRatio;\n                    outUv.x = (uv.x - 0.5) / scale + 0.5;\n                } else {\n                    float scale = canvasRatio / imageRatio;\n                    outUv.y = (uv.y - 0.5) / scale + 0.5;\n                }\n\n                return outUv;\n            }\n\n            float insideUv(vec2 uv) {\n                return\n                    step(0.0, uv.x) *\n                    step(0.0, uv.y) *\n                    step(uv.x, 1.0) *\n                    step(uv.y, 1.0);\n            }\n\n            vec2 mod2(vec2 x, float y) {\n                return x - y * floor(x / y);\n            }\n\n            float sdCross(vec2 p, vec2 b, float r) {\n                p = abs(p);\n                p = (p.y > p.x) ? p.yx : p.xy;\n                vec2 q = p - b;\n                float k = max(q.y, q.x);\n                vec2 w = (k > 0.0) ? q : vec2(b.y - p.x, -k);\n                float d = length(max(w, 0.0));\n                return ((k > 0.0) ? d : -d) + r;\n            }\n\n            vec3 blendScreen(vec3 base, vec3 blend) {\n                return 1.0 - (1.0 - base) * (1.0 - blend);\n            }\n\n            void main() {\n                vec2 uv = uImageFit < 0.5\n                    ? coverUv(vUv, uCanvasRes, uImageRes)\n                    : containUv(vUv, uCanvasRes, uImageRes);\n\n                float imageInside = insideUv(uv);\n\n                if (uImageFit > 0.5 && imageInside < 0.5) {\n                    discard;\n                }\n\n                vec4 depthTex = texture2D(uDepth, uv);\n                float depthSample = depthTex.r;\n\n                if (uInvertDepth > 0.5) {\n                    depthSample = 1.0 - depthSample;\n                }\n\n                vec2 displacedUv = uv + depthSample * uPointer * uPointerStrength;\n\n                float displacedInside = insideUv(displacedUv);\n\n                if (uImageFit > 0.5 && displacedInside < 0.5) {\n                    discard;\n                }\n\n                vec3 imageColor = texture2D(uImage, displacedUv).rgb * uImageDim;\n\n                float depth = 1.0 - depthSample;\n\n                float progress = mod(uTime / max(uScanDuration, 0.001), 1.0) * uScanMax;\n\n                float flow = 1.0 - smoothstep(0.0, 0.02, abs(depth - progress));\n\n                float maskValue;\n\n                if (uUseEdgeMap > 0.5) {\n                    // Edge map mode: use edge texture as the scan mask shape\n                    vec3 edgeTex = texture2D(uEdge, uv).rgb;\n                    float edgeValue = (edgeTex.r + edgeTex.g + edgeTex.b) / 3.0;\n\n                    if (uInvertEdge < 0.5) {\n                        edgeValue = 1.0 - edgeValue;\n                    }\n\n                    maskValue = edgeValue;\n                } else {\n                    // Cross pattern mode (original behavior)\n                    float aspect = uImageRes.x / uImageRes.y;\n                    vec2 tUv = vec2(uv.x * aspect, uv.y);\n                    vec2 tiledUv = mod2(tUv * uCrossScale, 2.0) - 1.0;\n\n                    float dist = sdCross(tiledUv, vec2(uCrossSizeX, uCrossSizeY), 0.0);\n                    float cross = smoothstep(0.0, uCrossSoftness, dist);\n\n                    maskValue = 1.0 - cross;\n                }\n\n                vec3 mask = vec3(maskValue) * flow * uScanColor * uMaskBoost;\n\n                vec3 finalColor = blendScreen(imageColor, mask);\n\n                gl_FragColor = vec4(finalColor, imageInside * displacedInside * uOpacity);\n            }\n        `;function compileShader(type,source){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.error(gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}const vertexShader=compileShader(gl.VERTEX_SHADER,vertexShaderSource);const fragmentShader=compileShader(gl.FRAGMENT_SHADER,fragmentShaderSource);if(!vertexShader||!fragmentShader)return;const program=gl.createProgram();if(!program)return;gl.attachShader(program,vertexShader);gl.attachShader(program,fragmentShader);gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.error(gl.getProgramInfoLog(program));return;}gl.useProgram(program);const positionBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),gl.STATIC_DRAW);const aPosition=gl.getAttribLocation(program,\"aPosition\");gl.enableVertexAttribArray(aPosition);gl.vertexAttribPointer(aPosition,2,gl.FLOAT,false,0,0);const uniforms={uImage:gl.getUniformLocation(program,\"uImage\"),uDepth:gl.getUniformLocation(program,\"uDepth\"),uEdge:gl.getUniformLocation(program,\"uEdge\"),uCanvasRes:gl.getUniformLocation(program,\"uCanvasRes\"),uImageRes:gl.getUniformLocation(program,\"uImageRes\"),uPointer:gl.getUniformLocation(program,\"uPointer\"),uTime:gl.getUniformLocation(program,\"uTime\"),uPointerStrength:gl.getUniformLocation(program,\"uPointerStrength\"),uScanDuration:gl.getUniformLocation(program,\"uScanDuration\"),uScanMax:gl.getUniformLocation(program,\"uScanMax\"),uCrossScale:gl.getUniformLocation(program,\"uCrossScale\"),uCrossSizeX:gl.getUniformLocation(program,\"uCrossSizeX\"),uCrossSizeY:gl.getUniformLocation(program,\"uCrossSizeY\"),uCrossSoftness:gl.getUniformLocation(program,\"uCrossSoftness\"),uMaskBoost:gl.getUniformLocation(program,\"uMaskBoost\"),uImageDim:gl.getUniformLocation(program,\"uImageDim\"),uOpacity:gl.getUniformLocation(program,\"uOpacity\"),uInvertDepth:gl.getUniformLocation(program,\"uInvertDepth\"),uInvertEdge:gl.getUniformLocation(program,\"uInvertEdge\"),uUseEdgeMap:gl.getUniformLocation(program,\"uUseEdgeMap\"),uImageFit:gl.getUniformLocation(program,\"uImageFit\"),uScanColor:gl.getUniformLocation(program,\"uScanColor\")};let imageTexture=null;let depthTexture=null;let edgeTexture=null;const imageSize={w:1226,h:650};const pointer={x:0,y:0};function resize(){const rect=wrapper.getBoundingClientRect();const dpr=Math.min(window.devicePixelRatio||1,2);const width=Math.max(1,Math.round(rect.width*dpr));const height=Math.max(1,Math.round(rect.height*dpr));if(canvas.width!==width||canvas.height!==height){canvas.width=width;canvas.height=height;canvas.style.width=`${rect.width}px`;canvas.style.height=`${rect.height}px`;gl.viewport(0,0,width,height);}}function createTexture(unit,image){const texture=gl.createTexture();gl.activeTexture(gl.TEXTURE0+unit);gl.bindTexture(gl.TEXTURE_2D,texture);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,1);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image);return texture;}// Create a 1x1 blank white texture as fallback for edge map\nfunction createFallbackTexture(unit){const texture=gl.createTexture();gl.activeTexture(gl.TEXTURE0+unit);gl.bindTexture(gl.TEXTURE_2D,texture);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,1,1,0,gl.RGBA,gl.UNSIGNED_BYTE,new Uint8Array([255,255,255,255]));return texture;}function loadImage(src){return new Promise((resolve,reject)=>{const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>resolve(img);img.onerror=reject;img.src=src;});}function onPointerMove(e){const rect=wrapper.getBoundingClientRect();const x=(e.clientX-rect.left)/Math.max(rect.width,1);const y=(e.clientY-rect.top)/Math.max(rect.height,1);pointer.x+=((x-.5)*2-pointer.x)*.18;pointer.y+=((1-y-.5)*2-pointer.y)*.18;}function onPointerLeave(){pointer.x=0;pointer.y=0;}wrapper.addEventListener(\"pointermove\",onPointerMove);wrapper.addEventListener(\"pointerleave\",onPointerLeave);window.addEventListener(\"resize\",resize);// Load image and depth map always; edge map is optional\nconst imagesToLoad=[loadImage(props.image),loadImage(props.depthMap)];const hasEdgeMap=props.useEdgeMap&&props.edgeMap&&props.edgeMap.length>0;if(hasEdgeMap){imagesToLoad.push(loadImage(props.edgeMap));}Promise.all(imagesToLoad).then(images=>{if(disposed)return;const[img,depth,edge]=images;imageSize.w=img.naturalWidth||img.width||1226;imageSize.h=img.naturalHeight||img.height||650;imageTexture=createTexture(0,img);depthTexture=createTexture(1,depth);// Use edge map if provided, otherwise use fallback blank texture\nif(edge){edgeTexture=createTexture(2,edge);}else{edgeTexture=createFallbackTexture(2);}gl.useProgram(program);gl.uniform1i(uniforms.uImage,0);gl.uniform1i(uniforms.uDepth,1);gl.uniform1i(uniforms.uEdge,2);resize();const render=now=>{if(disposed)return;raf=requestAnimationFrame(render);resize();const t=(now-start)*.001;const scanRgb=colorToRgb(props.scanColor);pointer.x+=(0-pointer.x)*.02;pointer.y+=(0-pointer.y)*.02;gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);gl.useProgram(program);gl.uniform2f(uniforms.uCanvasRes,canvas.width,canvas.height);gl.uniform2f(uniforms.uImageRes,imageSize.w,imageSize.h);gl.uniform2f(uniforms.uPointer,pointer.x,pointer.y);gl.uniform1f(uniforms.uTime,t);gl.uniform1f(uniforms.uPointerStrength,props.pointerStrength);gl.uniform1f(uniforms.uScanDuration,props.scanDuration);gl.uniform1f(uniforms.uScanMax,props.scanMax);gl.uniform1f(uniforms.uCrossScale,props.crossScale);gl.uniform1f(uniforms.uCrossSizeX,props.crossSizeX);gl.uniform1f(uniforms.uCrossSizeY,props.crossSizeY);gl.uniform1f(uniforms.uCrossSoftness,props.crossSoftness);gl.uniform1f(uniforms.uMaskBoost,props.maskBoost);gl.uniform1f(uniforms.uImageDim,props.imageDim);gl.uniform1f(uniforms.uOpacity,props.opacity);gl.uniform1f(uniforms.uInvertDepth,props.invertDepth?1:0);gl.uniform1f(uniforms.uInvertEdge,props.invertEdge?1:0);gl.uniform1f(uniforms.uUseEdgeMap,props.useEdgeMap&&hasEdgeMap?1:0);gl.uniform1f(uniforms.uImageFit,props.imageFit===\"contain\"?1:0);gl.uniform3f(uniforms.uScanColor,scanRgb.r,scanRgb.g,scanRgb.b);gl.drawArrays(gl.TRIANGLES,0,6);};raf=requestAnimationFrame(render);}).catch(err=>{console.error(\"Effect03DepthScan failed to load image/depth map:\",err);});return()=>{disposed=true;cancelAnimationFrame(raf);wrapper.removeEventListener(\"pointermove\",onPointerMove);wrapper.removeEventListener(\"pointerleave\",onPointerLeave);window.removeEventListener(\"resize\",resize);if(imageTexture)gl.deleteTexture(imageTexture);if(depthTexture)gl.deleteTexture(depthTexture);if(edgeTexture)gl.deleteTexture(edgeTexture);if(positionBuffer)gl.deleteBuffer(positionBuffer);if(program)gl.deleteProgram(program);if(vertexShader)gl.deleteShader(vertexShader);if(fragmentShader)gl.deleteShader(fragmentShader);};},[props.image,props.depthMap,props.edgeMap,props.imageFit,props.background,props.scanColor,props.pointerStrength,props.scanDuration,props.scanMax,props.crossScale,props.crossSizeX,props.crossSizeY,props.crossSoftness,props.maskBoost,props.imageDim,props.borderRadius,props.opacity,props.invertDepth,props.invertEdge,props.useEdgeMap]);return /*#__PURE__*/_jsx(\"div\",{ref:wrapRef,style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",borderRadius:props.borderRadius,background:props.background},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",borderRadius:props.borderRadius}})});}Effect03DepthScan.defaultProps={image:\"\",depthMap:\"\",edgeMap:\"\",imageFit:\"cover\",background:\"#000000\",scanColor:\"#ffffff\",pointerStrength:.01,scanDuration:3,scanMax:.9,crossScale:50,crossSizeX:.3,crossSizeY:.02,crossSoftness:.02,maskBoost:10,imageDim:.5,borderRadius:0,opacity:1,invertDepth:false,invertEdge:false,useEdgeMap:false};addPropertyControls(Effect03DepthScan,{image:{type:ControlType.File,title:\"Image\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"webp\",\"avif\"],description:\"Base image.\"},depthMap:{type:ControlType.File,title:\"Depth\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"webp\",\"avif\"],description:\"Matching grayscale depth map. You can generate a depth map from website like https://huggingface.co/spaces/depth-anything/Depth-Anything-V2.\"},useEdgeMap:{type:ControlType.Boolean,title:\"Use Edge Map\",description:\"Toggle to switch between the cross pattern (off) and edge map mode (on). Upload an edge map below when enabled.\",defaultValue:false},edgeMap:{type:ControlType.File,title:\"Edge Map\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"webp\",\"avif\"],description:\"Edge map used as the scan mask. Only active when 'Use Edge Map' is on. Generate one at https://pinetools.com/image-edge-detection\",hidden(props){return!props.useEdgeMap;}},invertEdge:{type:ControlType.Boolean,title:\"Invert Edge\",description:\"Flip the edge map interpretation if the mask looks wrong.\",hidden(props){return!props.useEdgeMap;}},imageFit:{type:ControlType.Enum,title:\"Image Fit\",options:[\"cover\",\"contain\"],optionTitles:[\"Cover\",\"Contain\"],defaultValue:\"cover\",description:\"Choose Cover to fill the frame or Contain to show the full image without cropping.\"},background:{type:ControlType.Color,title:\"BG\",description:\"Background shown behind the effect.\"},scanColor:{type:ControlType.Color,title:\"Scan Color\",description:\"Color of the scan animation.\"},pointerStrength:{type:ControlType.Number,title:\"Pointer\",min:0,max:.08,step:.001,description:\"Depth-based mouse displacement strength.\"},scanDuration:{type:ControlType.Number,title:\"Duration\",min:.2,max:10,step:.1,description:\"Time for one full scan cycle.\"},scanMax:{type:ControlType.Number,title:\"Progress Max\",min:.1,max:1,step:.01,description:\"Maximum scan progress before looping.\"},crossScale:{type:ControlType.Number,title:\"Tiling\",min:1,max:120,step:1,description:\"Density of the tiled cross pattern. (Cross mode only)\",hidden(props){return props.useEdgeMap;}},crossSizeX:{type:ControlType.Number,title:\"Cross W\",min:.01,max:1,step:.01,description:\"Cross width. (Cross mode only)\",hidden(props){return props.useEdgeMap;}},crossSizeY:{type:ControlType.Number,title:\"Cross H\",min:.001,max:.2,step:.001,description:\"Cross arm thickness. (Cross mode only)\",hidden(props){return props.useEdgeMap;}},crossSoftness:{type:ControlType.Number,title:\"Softness\",min:.001,max:.1,step:.001,description:\"Soft edge of the cross mask. (Cross mode only)\",hidden(props){return props.useEdgeMap;}},maskBoost:{type:ControlType.Number,title:\"Boost\",min:0,max:20,step:.1,description:\"Intensity of the scan mask.\"},imageDim:{type:ControlType.Number,title:\"Dim\",min:0,max:1.5,step:.01,description:\"Base image brightness before screen blend.\"},opacity:{type:ControlType.Number,title:\"Opacity\",min:0,max:1,step:.01,description:\"Overall effect opacity.\"},invertDepth:{type:ControlType.Boolean,title:\"Invert Depth\",description:\"Flip the depth map if the scan feels reversed.\"},borderRadius:{type:ControlType.Number,title:\"Radius\",min:0,max:200,step:1,description:\"Corner radius.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Effect03DepthScan\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Scanner.map","// Generated by Framer (3ad0d99)\nexport default function metadata(params,activeLocale){return{description:\"Made with Framer\",robots:\"max-image-preview:large\",title:\"My Framer Site\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (f2f96df)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\",mediaQuery:\"(min-width: 1200px)\"},{hash:\"53wcr9\",mediaQuery:\"(min-width: 810px) and (max-width: 1199.98px)\"},{hash:\"myny02\",mediaQuery:\"(max-width: 809.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-srpdA\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (f2f96df)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"hjei91\",mediaQuery:\"(min-width: 1200px)\"},{hash:\"oblq1x\",mediaQuery:\"(min-width: 810px) and (max-width: 1199.98px)\"},{hash:\"2e5oaz\",mediaQuery:\"(max-width: 809.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-iD4xR\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}