{"version":3,"file":"Brand_Pattern.CYsjFSK2.mjs","names":["React.useRef"],"sources":["https:/framerusercontent.com/modules/Kkzkhgm8uBD7fE0YBLna/vD7ajJshxuPaJKLK1iGa/Brand_Pattern.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const ART_W=1731;const seg=(x0,x1,g0,g1,flip=false,half=false)=>({x0:x0/ART_W,x1:x1/ART_W,g0:g0/ART_W,g1:g1/ART_W,flip,half});const PATTERNS={\"1\":[seg(0,528,0,528),seg(528,1731,528,1731)],\"2\":[seg(0,528,0,1202),seg(528,1202,528,1202),seg(1202,1731,1202,1731)],\"3\":[seg(0,528,0,529,true),seg(528,1202,528,1202),seg(1202,1731,529,1731,true)],\"4\":[seg(0,529,0,529,true),seg(529,1731,529,1731,true)],\"5\":[seg(0,1203,0,1203),seg(1203,1731,1203,1731)],\"6\":[seg(0,683,0,683,true),seg(683,1731,683,1731,false,true)],\"7\":[seg(0,227,0,402),seg(227,683,227,683,true),seg(683,850,402,850),seg(850,1731,850,1731,true)],\"8\":[seg(0,227,0,1329,true),seg(227,1468,227,1468),seg(1468,1731,683,1731,true)],\"9\":[seg(0,683,0,1329,true),seg(683,1731,683,1731,true)]};// row heights of the Figma artwork (689 px tall)\nconst HEIGHTS=[90,60,99,74,31,91,80,80,84];const DEFAULT_COLORS=[\"#FA7465\",\"#FA7FD8\",\"#934BF0\"];// The gradient reaches its last color at 78% of its width and stays there;\n// with three colors the middle one sits at 53% of the way.\nconst REACH=1.28;const SHIFT=.003;const MID=.529;// a stable pseudo-random number 0..1 for a row\nconst rand=(i,k)=>{const v=Math.sin(i*12.9898+k*78.233)*43758.5453;return v-Math.floor(v);};// the glint: a wide soft glow with a brighter core, slightly slanted like a reflection sliding over a surface\nconst SLANT=-.36;const hump=u=>{if(u<=-1||u>=1)return 0;const c=Math.cos(u*Math.PI/2);return c*c;};const bell=u=>.55*hump(u)+.45*hump(u*2.8);const BELL_STOPS=Array.from({length:29},(_,i)=>i/28)// 0..1 across the glint\n;const BAYER=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5].map(v=>(v+.5)/16);const clamp01=v=>v<0?0:v>1?1:v;const smooth=(a,b,x)=>{const t=clamp01((x-a)/(b-a));return t*t*(3-2*t);};// how much of the dither color covers the gradient at a ramp position (0 = first color, 1 = last)\nfunction coverage(t,amount){const cool=smooth(.5,1,t)// grows toward the last color\n;const warm=(1-smooth(0,.32,t))*.22// a few stray pixels on the first color\n;return Math.max(cool,warm)*amount;}const toCss=c=>`rgba(${Math.round(c[0])}, ${Math.round(c[1])}, ${Math.round(c[2])}, ${(c[3]/255).toFixed(3)})`;// a repeatable tile of random specks in one color\nfunction makeGrain(color,strength,size){const n=160;const alpha=document.createElement(\"canvas\");alpha.width=n;alpha.height=n;const actx=alpha.getContext(\"2d\");if(!actx)return null;const img=actx.createImageData(n,n);for(let i=3;i<img.data.length;i+=4)img.data[i]=Math.random()*strength*255;actx.putImageData(img,0,0);actx.globalCompositeOperation=\"source-in\";actx.fillStyle=color;actx.fillRect(0,0,n,n);if(size===1)return alpha;const tile=document.createElement(\"canvas\");tile.width=n*size;tile.height=n*size;const tctx=tile.getContext(\"2d\");if(!tctx)return alpha;tctx.imageSmoothingEnabled=false;tctx.drawImage(alpha,0,0,n*size,n*size);return tile;}export default function DitherBands(props){const canvasRef=React.useRef(null);const probeRef=React.useRef(null);const propsRef=React.useRef(props);propsRef.current=props;const drawRef=React.useRef(()=>{});React.useEffect(()=>{const canvas=canvasRef.current;const ctx=canvas?.getContext(\"2d\");if(!canvas||!ctx)return;// ----- colors: any CSS color (including Framer color styles) → numbers, remembered between frames -----\nconst pixel=document.createElement(\"canvas\");pixel.width=1;pixel.height=1;const pctx=pixel.getContext(\"2d\",{willReadFrequently:true});const known=new Map;const rgba=css=>{const hit=known.get(css);if(hit)return hit;let out=[0,0,0,255];const el=probeRef.current;if(el&&pctx){el.style.color=\"\";el.style.color=css;pctx.clearRect(0,0,1,1);pctx.fillStyle=\"#000\";pctx.fillStyle=getComputedStyle(el).color||css;pctx.fillRect(0,0,1,1);const d=pctx.getImageData(0,0,1,1).data;out=[d[0],d[1],d[2],d[3]];}known.set(css,out);return out;};const isCanvas=RenderTarget.current()===RenderTarget.canvas;const reduce=window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;const still=isCanvas||!!reduce;// on the Framer canvas the picture is frozen at a moment where the glints are visible\nlet time=still?2.4:0// seconds, already multiplied by speed\n;let frame=0;// reused between frames\nlet grainKey=\"\";let grainTile=null;const mask=document.createElement(\"canvas\")// the dither, one pixel per cell\n;const mctx=mask.getContext(\"2d\");let maskData=null;let rowOf=new Uint8Array(1);const draw=(fresh=false)=>{const p=propsRef.current;if(fresh||++frame%90===0)known.clear()// picks up color-style and theme changes\n;const dpr=Math.min(window.devicePixelRatio||1,2);const W=Math.max(1,Math.round(canvas.clientWidth*dpr));const H=Math.max(1,Math.round(canvas.clientHeight*dpr));if(canvas.width!==W||canvas.height!==H){canvas.width=W;canvas.height=H;}ctx.setTransform(1,0,0,1,0,0);ctx.clearRect(0,0,W,H);// ----- palette: 1, 2 or 3 colors -----\n// only the colors that are switched on in the panel take part (1, 2 or 3 of them)\nconst chosen=[p.color1,p.color2,p.color3].filter(c=>typeof c===\"string\"&&c.length>0);const picked=(chosen.length?chosen:DEFAULT_COLORS).map(rgba);const stops=picked.length===1?[[0,picked[0]],[1,picked[0]]]:picked.length===2?[[0,picked[0]],[1,picked[1]]]:[[0,picked[0]],[MID,picked[1]],[1,picked[2]]];const colorAt=t=>{for(let i=1;i<stops.length;i++){if(t<=stops[i][0]||i===stops.length-1){const[p0,a]=stops[i-1];const[p1,b]=stops[i];const k=clamp01((t-p0)/(p1-p0||1));return[a[0]+(b[0]-a[0])*k,a[1]+(b[1]-a[1])*k,a[2]+(b[2]-a[2])*k,a[3]+(b[3]-a[3])*k];}}return stops[0][1];};// ----- the artwork is laid out in a box that covers the frame at the chosen angle -----\nconst angle=(Number(p.rotation)||0)%360*Math.PI/180;let cos=Math.cos(angle);let sin=Math.sin(angle);if(Math.abs(cos)<1e-9)cos=0;if(Math.abs(sin)<1e-9)sin=0;const BW=Math.ceil(Math.abs(W*cos)+Math.abs(H*sin)-1e-6);const BH=Math.ceil(Math.abs(W*sin)+Math.abs(H*cos)-1e-6);// rows → bands. The first nine are the Figma artwork; extra rows reuse its patterns in another order.\nconst count=Math.min(40,Math.max(1,Math.round(Number(p.rows)||HEIGHTS.length)));const list=Array.from({length:count},(_,j)=>{const k=j<HEIGHTS.length?j:(j*5+3)%HEIGHTS.length;return{height:HEIGHTS[k],segs:PATTERNS[String(k+1)]};});const total=list.reduce((sum,r)=>sum+r.height,0);// glints: every row has its own. It enters on the left, glides to the right, leaves the row —\n// and the next one is already on its way. Rows differ a little in pace, width and brightness,\n// so the light never moves as one block.\nconst glow=p.animate?clamp01((Number(p.glintStrength)||0)/100):0;const glowWidth=Math.max(.02,(Number(p.glintWidth)||30)/100);let acc=0;const bands=list.map((r,bi)=>{const y0=Math.round(acc/total*BH);acc+=r.height;const y1=Math.round(acc/total*BH);const segs=r.segs.map(s=>{const g0=s.g0*BW;const gw=(s.g1-s.g0)*BW;// q = qa * x + qb, clamped to 0..1 — how far along the gradient a point is\nconst qa=(s.flip?-REACH:REACH)/gw;const qb=s.flip?REACH*(1+g0/gw)+SHIFT:-REACH*(g0/gw)+SHIFT;return{x0:Math.round(s.x0*BW),x1:Math.round(s.x1*BW),qa,qb,half:s.half};});const period=5.5*(.8+.5*rand(bi,1))// seconds for one pass at speed 1\n;const lap=time/period+rand(bi,2);const half=glowWidth*BW*(.65+.7*rand(bi,3))// half width of the glint\n;const reachX=half+Math.abs(SLANT)*(y1-y0)// so it is fully outside at both ends\n;const gx=-reachX+(BW+2*reachX)*(lap-Math.floor(lap));const power=glow*(.6+.4*rand(bi,4));return{y0,y1,yc:(y0+y1)/2,segs,gx,half,power};});// ----- 1. gradients -----\nctx.translate(W/2,H/2);ctx.rotate(angle);ctx.translate(-BW/2,-BH/2);for(const b of bands){for(const s of b.segs){const g=ctx.createLinearGradient(-s.qb/s.qa,0,(1-s.qb)/s.qa,0);if(s.half){g.addColorStop(0,toCss(colorAt(MID)));for(const[pos,c]of stops)if(pos>MID)g.addColorStop((pos-MID)/(1-MID),toCss(c));}else{for(const[pos,c]of stops)g.addColorStop(pos,toCss(c));}ctx.fillStyle=g;// one extra pixel right and down, so no hairlines show between neighbours when rotated\nctx.fillRect(s.x0,b.y0,s.x1-s.x0+1,b.y1-b.y0+1);}}// ----- 2. glints: light added on top of the colors (screen), each one clipped to its own row -----\nif(glow>0){const light=rgba(p.glintColor);ctx.globalCompositeOperation=\"screen\";for(const b of bands){if(b.power<=0)continue;const h=b.y1-b.y0;const pad=Math.abs(SLANT)*h;ctx.save();ctx.beginPath();ctx.rect(0,b.y0,BW,h);ctx.clip();ctx.transform(1,0,SLANT,1,-SLANT*b.yc,0)// slant around the middle of the row\n;const g=ctx.createLinearGradient(b.gx-b.half,0,b.gx+b.half,0);for(const t of BELL_STOPS){const a=light[3]/255*b.power*bell(t*2-1);g.addColorStop(t,`rgba(${light[0]}, ${light[1]}, ${light[2]}, ${a.toFixed(3)})`);}ctx.fillStyle=g;ctx.fillRect(b.gx-b.half-pad,b.y0,2*(b.half+pad),h);ctx.restore();}ctx.globalCompositeOperation=\"source-over\";}ctx.setTransform(1,0,0,1,0,0);// ----- 3. dither: a pixel grid that always stays straight, even when the bands are rotated -----\nif(p.dither&&p.ditherAmount>0&&mctx){const cell=Math.max(1,Math.round(p.ditherSize*dpr));const amount=p.ditherAmount/100;const nc=Math.ceil(W/cell);const nr=Math.ceil(H/cell);if(!maskData||mask.width!==nc||mask.height!==nr){mask.width=nc;mask.height=nr;maskData=mctx.createImageData(nc,nr);}const out=maskData.data;const ink=rgba(p.ditherColor);if(rowOf.length<BH+1)rowOf=new Uint8Array(BH+1);for(let i=0;i<bands.length;i++)rowOf.fill(i,bands[i].y0,bands[i].y1+1);let o=0;for(let r=0;r<nr;r++){const sy=(r+.5)*cell-H/2;for(let k=0;k<nc;k++,o+=4){const sx=(k+.5)*cell-W/2;const bx=sx*cos+sy*sin+BW/2;let by=-sx*sin+sy*cos+BH/2;by=by<0?0:by>BH-1?BH-1:by;const row=bands[rowOf[by|0]];const segs=row.segs;let s=segs[segs.length-1];for(let i=0;i<segs.length-1;i++){if(bx<segs[i].x1){s=segs[i];break;}}const q=clamp01(s.qa*bx+s.qb);// where the glint passes, the light pushes the dark pixels away\nconst lit=row.power>0?row.power*bell((bx-row.gx-SLANT*(by-row.yc))/row.half):0;const on=BAYER[(r&3)*4+(k&3)]<coverage(s.half?MID+(1-MID)*q:q,amount)*(1-.9*lit);out[o]=ink[0];out[o+1]=ink[1];out[o+2]=ink[2];out[o+3]=on?ink[3]:0;}}mctx.putImageData(maskData,0,0);ctx.imageSmoothingEnabled=false;ctx.drawImage(mask,0,0,nc*cell,nr*cell);}// ----- 4. grain -----\nif(p.noise&&p.noiseAmount>0){const grain=Math.max(1,Math.round(p.noiseSize*dpr));const color=toCss(rgba(p.noiseColor));const key=`${color}|${p.noiseAmount}|${grain}`;if(key!==grainKey||!grainTile){grainKey=key;grainTile=makeGrain(color,p.noiseAmount/100,grain);}const pattern=grainTile&&ctx.createPattern(grainTile,\"repeat\");if(pattern){ctx.fillStyle=pattern;ctx.fillRect(0,0,W,H);}}};drawRef.current=draw;// color styles: editing a style changes the CSS variable, not the property,\n// so check the resolved colors now and then and redraw when they differ\nconst styleColors=()=>{const el=probeRef.current;if(!el)return\"\";const out=[];const visit=(v,depth)=>{if(typeof v===\"string\"){if(v.includes(\"var(\")){el.style.color=\"\";el.style.color=v;out.push(getComputedStyle(el).color);}}else if(v&&typeof v===\"object\"&&depth<3){Object.values(v).forEach(x=>visit(x,depth+1));}};const{style,...rest}=propsRef.current;visit(rest,0);return out.join(\"|\");};let colorKey=styleColors();const colorTimer=window.setInterval(()=>{const key=styleColors();if(key!==colorKey){colorKey=key;draw(true);}},400);draw(true);const ro=new ResizeObserver(()=>draw());ro.observe(canvas);// animation loop — paused off screen; only if a frame is really heavy it skips the next one\nlet raf=0;let last=performance.now();let visible=true;let restUntil=0;const io=new IntersectionObserver(([e])=>visible=e.isIntersecting);io.observe(canvas);const loop=now=>{raf=requestAnimationFrame(loop);const p=propsRef.current;const dt=Math.min(.05,(now-last)/1e3);last=now;if(!visible||!p.animate||p.speed<=0||p.glintStrength<=0)return;time+=dt*p.speed;if(now<restUntil)return;const t0=performance.now();draw();const cost=performance.now()-t0;restUntil=cost>14?now+cost:0;};if(!still)raf=requestAnimationFrame(loop);return()=>{cancelAnimationFrame(raf);window.clearInterval(colorTimer);ro.disconnect();io.disconnect();drawRef.current=()=>{};};},[]);// redraw right away whenever a property changes\nReact.useEffect(()=>{drawRef.current(true);});return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",...props.style},children:[/*#__PURE__*/_jsx(\"span\",{ref:probeRef,style:{display:\"none\"}}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,\"aria-hidden\":true,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\"}})]});}DitherBands.defaultProps={rotation:0,rows:9,animate:true,speed:1,glintColor:\"#FFFFFF\",glintStrength:55,glintWidth:30,dither:false,ditherColor:\"#2D194B\",ditherSize:6,ditherAmount:88,noise:false,noiseColor:\"#FFFFFF\",noiseAmount:25,noiseSize:1};addPropertyControls(DitherBands,{// each color can be removed and added back in the panel; the defaults live here, not in defaultProps,\n// so a removed color really stays removed\ncolor1:{type:ControlType.Color,title:\"Color 1\",defaultValue:DEFAULT_COLORS[0],optional:true},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:DEFAULT_COLORS[1],optional:true},color3:{type:ControlType.Color,title:\"Color 3\",defaultValue:DEFAULT_COLORS[2],optional:true},rotation:{type:ControlType.Number,title:\"Rotation\",min:0,max:360,step:1,unit:\"\\xb0\"},rows:{type:ControlType.Number,title:\"Rows\",min:1,max:40,step:1,displayStepper:true},animate:{type:ControlType.Boolean,title:\"Glints\",enabledTitle:\"On\",disabledTitle:\"Off\"},speed:{type:ControlType.Number,title:\"Speed\",min:.1,max:5,step:.1,displayStepper:true,hidden:p=>!p.animate},glintColor:{type:ControlType.Color,title:\"Glint Color\",hidden:p=>!p.animate},glintStrength:{type:ControlType.Number,title:\"Glint Strength\",min:0,max:100,step:1,unit:\"%\",hidden:p=>!p.animate},glintWidth:{type:ControlType.Number,title:\"Glint Width\",min:5,max:100,step:1,unit:\"%\",hidden:p=>!p.animate},dither:{type:ControlType.Boolean,title:\"Dither\",enabledTitle:\"On\",disabledTitle:\"Off\"},ditherColor:{type:ControlType.Color,title:\"Dither Color\",hidden:p=>!p.dither},ditherSize:{type:ControlType.Number,title:\"Dither Size\",min:1,max:40,step:1,unit:\"px\",hidden:p=>!p.dither},ditherAmount:{type:ControlType.Number,title:\"Dither Amount\",min:0,max:100,step:1,unit:\"%\",hidden:p=>!p.dither},noise:{type:ControlType.Boolean,title:\"Noise\",enabledTitle:\"On\",disabledTitle:\"Off\"},noiseColor:{type:ControlType.Color,title:\"Noise Color\",hidden:p=>!p.noise},noiseAmount:{type:ControlType.Number,title:\"Noise Amount\",min:0,max:100,step:1,unit:\"%\",hidden:p=>!p.noise},noiseSize:{type:ControlType.Number,title:\"Noise Size\",min:1,max:8,step:1,unit:\"px\",hidden:p=>!p.noise}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DitherBands\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Brand_Pattern.map"],"mappings":"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"}