{"version":3,"file":"shared-lib.Cmi0AzXn.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/7J9scraPWMgsmUg677GP/jpmZ2ifN5KV6IccUkFFc/DitherField.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const BAYER=[[0,32,8,40,2,34,10,42],[48,16,56,24,50,18,58,26],[12,44,4,36,14,46,6,38],[60,28,52,20,62,30,54,22],[3,35,11,43,1,33,9,41],[51,19,59,27,49,17,57,25],[15,47,7,39,13,45,5,37],[63,31,55,23,61,29,53,21]];// Value noise with a few octaves: soft, uneven clouds rather than a regular grid.\nconst hash=(x,y,seed)=>{const s=Math.sin(x*127.1+y*311.7+seed*74.7)*43758.5453;return s-Math.floor(s);};const noise=(x,y,seed)=>{const xi=Math.floor(x),yi=Math.floor(y);const xf=x-xi,yf=y-yi;const u=xf*xf*(3-2*xf),v=yf*yf*(3-2*yf);const a=hash(xi,yi,seed),b=hash(xi+1,yi,seed);const c=hash(xi,yi+1,seed),d=hash(xi+1,yi+1,seed);return a+(b-a)*u+(c-a)*v+(a-b-c+d)*u*v;};const fbm=(x,y,seed)=>noise(x,y,seed)*.6+noise(x*2.1,y*2.1,seed+3)*.28+noise(x*4.3,y*4.3,seed+7)*.12;const smooth=t=>{const x=Math.min(1,Math.max(0,t));return x*x*(3-2*x);};// 0..1 strength of the pattern at a point, given the box size.\nconst strength=(fade,reach,x,y,w,h)=>{const r=Math.max(.05,reach/100);if(fade===\"none\")return 1;if(fade===\"top\")return 1-smooth(y/(h*r));if(fade===\"radial\"){const dx=(x-w/2)/(w*.62*r);const dy=y/(h*r);return 1-smooth(Math.sqrt(dx*dx+dy*dy));}const band=.5+.5*Math.sin((x*.6+y)/140);return(1-smooth(y/(h*r)))*(.35+.65*band);};/**\n * Dither Field\n *\n * A quiet print-style texture for backgrounds: halftone, dot grid, ordered\n * dither or hatching, fading out from the top. Pick a colour style so it\n * follows the palette.\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function DitherField(props){const{pattern,fade,color,cell,reach,clearTop=120,scale=260,seed=4,style}=props;const box=useRef(null);const canvas=useRef(null);useEffect(()=>{const host=box.current;const cv=canvas.current;if(!host||!cv)return;const draw=()=>{const w=host.clientWidth;const h=host.clientHeight;if(!w||!h)return;const dpr=Math.min(2,window.devicePixelRatio||1);cv.width=Math.round(w*dpr);cv.height=Math.round(h*dpr);const ctx=cv.getContext(\"2d\");if(!ctx)return;ctx.setTransform(dpr,0,0,dpr,0,0);ctx.clearRect(0,0,w,h);ctx.fillStyle=ctx.strokeStyle=getComputedStyle(host).color;const s=Math.max(2,cell);if(pattern===\"organic\"){// ordered dither over noise clouds; the top band stays clear for the header\nconst px=Math.max(2,Math.round(s/3));const r=Math.max(.05,reach/100);const sc=Math.max(40,scale);for(let y=0,j=0;y<h;y+=px,j++){const top=smooth((y-clearTop)/220);if(top<=0)continue;const bottom=1-smooth((y-h*r*.55)/(h*r*.45));if(bottom<=0)break;for(let x=0,i=0;x<w;x+=px,i++){const n=smooth((fbm(x/sc,y/sc,seed)-.4)/.3);// lighter behind the centred headline, heavier towards the sides\nconst side=.3+.7*smooth((Math.abs(x-w/2)/(w/2)-.12)/.5);const v=n*top*bottom*side;if(v*64>BAYER[j&7][i&7])ctx.fillRect(x,y,px*.6,px*.6);}}return;}if(pattern===\"bayer\"){const px=Math.max(1,Math.round(s/3));for(let y=0,j=0;y<h;y+=px,j++){for(let x=0,i=0;x<w;x+=px,i++){const v=strength(fade,reach,x,y,w,h)*.5;if(v*64>BAYER[j&7][i&7])ctx.fillRect(x,y,px*.5,px*.5);}}return;}if(pattern===\"lines\"){ctx.lineCap=\"round\";for(let y=0;y<h+w;y+=s){for(let x=0;x<w;x+=s/2){const yy=y-x;if(yy<0||yy>h)continue;const v=strength(fade,reach,x,yy,w,h);if(v<.04)continue;ctx.beginPath();ctx.lineWidth=Math.max(.3,v*1.1);ctx.moveTo(x,yy);ctx.lineTo(x+s/2,yy-s/2);ctx.stroke();}}return;}for(let y=s/2,row=0;y<h;y+=s,row++){const off=pattern===\"halftone\"&&row%2?s/2:0;for(let x=s/2+off;x<w;x+=s){const v=strength(fade,reach,x,y,w,h);if(v<.03)continue;const rad=pattern===\"dots\"?s*.11:s*.42*Math.sqrt(v);ctx.globalAlpha=pattern===\"dots\"?v:1;ctx.beginPath();ctx.arc(x,y,rad,0,Math.PI*2);ctx.fill();}}ctx.globalAlpha=1;};draw();const ro=new ResizeObserver(draw);ro.observe(host);return()=>ro.disconnect();},[pattern,fade,color,cell,reach,clearTop,scale,seed]);return /*#__PURE__*/_jsx(\"div\",{ref:box,\"aria-hidden\":\"true\",style:{...style,position:\"relative\",overflow:\"hidden\",pointerEvents:\"none\",color},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvas,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\"}})});}addPropertyControls(DitherField,{pattern:{type:ControlType.Enum,title:\"Pattern\",options:[\"halftone\",\"dots\",\"bayer\",\"lines\",\"organic\"],optionTitles:[\"Halftone\",\"Dot grid\",\"Ordered\",\"Hatching\",\"Organic\"],defaultValue:\"halftone\"},fade:{type:ControlType.Enum,title:\"Fade\",options:[\"top\",\"radial\",\"wave\",\"none\"],optionTitles:[\"From top\",\"Radial\",\"Waves\",\"None\"],defaultValue:\"radial\"},color:{type:ControlType.Color,title:\"Colour\",defaultValue:\"rgba(14, 14, 28, 0.08)\"},cell:{type:ControlType.Number,title:\"Cell\",defaultValue:8,min:3,max:24,step:1,unit:\"px\"},reach:{type:ControlType.Number,title:\"Reach\",defaultValue:80,min:10,max:100,unit:\"%\"},clearTop:{type:ControlType.Number,title:\"Clear Top\",defaultValue:120,min:0,max:400,step:10,unit:\"px\",hidden:p=>p.pattern!==\"organic\"},scale:{type:ControlType.Number,title:\"Cloud Size\",defaultValue:260,min:60,max:800,step:10,unit:\"px\",hidden:p=>p.pattern!==\"organic\"},seed:{type:ControlType.Number,title:\"Seed\",defaultValue:4,min:1,max:99,step:1,displayStepper:true,hidden:p=>p.pattern!==\"organic\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DitherField\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"400\",\"framerIntrinsicWidth\":\"600\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DitherField.map"],"mappings":"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"}