{"version":3,"file":"HeaderAutoContrast.D2ScldGH.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/pYUIMf49QUUfXIN0SGsB/0AcV65YlNviGXgyTfpHa/HeaderAutoContrast.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";// HeaderAutoContrast\n// ------------------\n// Makes the Header's nav text adapt to whatever page section is\n// scrolled behind it — without touching the logo or the \"Get a Demo\"\n// button.\n//\n// How it works:\n//   1. On mount, walks the Header's DOM subtree and collects the\n//      text-carrying elements (<a>, <p>, <h*>, <span>) that are\n//      NOT inside any element with an image or a solid/gradient\n//      background. That excludes the logo (image) and the button\n//      (purple gradient) automatically.\n//   2. On scroll, samples the background at MULTIPLE points across\n//      the viewport ~96px below the top and majority-votes whether\n//      the section behind the header is light or dark.\n//        - If a <video> element covers the sample point (common\n//          for dark hero animations), the sample is treated as dark\n//          regardless of any CSS background on the transparent\n//          wrapper above it.\n//        - Otherwise the sampler walks up ancestors looking for a\n//          non-transparent `background-color` and reads luminance\n//          from that.\n//   3. If the section behind the header is light, it sets the\n//      collected nav elements' color to near-black; otherwise it\n//      restores the original (white) color.\n//\n// Attach via Framer UI:\n//   1. Select the Header instance.\n//   2. Right panel → Code → + New Override.\n//   3. File: HeaderAutoContrast · Override: withAutoContrast\nconst DARK_TEXT=\"rgb(11, 15, 26)\";const LUMINANCE_THRESHOLD=.55;const SAMPLE_Y_FALLBACK=96// fallback if header rect isn't available\n;const SAMPLE_X_POSITIONS=[.12,.3,.5,.7,.88];const SHAPE_SELECTOR=\"path, line, circle, rect, polyline, polygon, ellipse, g, use\";// --- Helpers --------------------------------------------------------\nfunction hasSolidBgAncestor(el,stopAt){let cur=el;while(cur&&cur!==stopAt){const cs=getComputedStyle(cur);const bi=cs.backgroundImage;if(bi&&bi!==\"none\"&&bi.includes(\"gradient\"))return true;const bg=cs.backgroundColor;if(bg&&bg!==\"rgba(0, 0, 0, 0)\"&&bg!==\"transparent\"){const parts=bg.match(/[\\d.]+/g);if(parts){const alpha=parts.length>=4?parseFloat(parts[3]):1;if(alpha>.15)return true;}}cur=cur.parentElement;}return false;}function parseColor(input){const value=(input||\"\").trim();if(!value)return null;const rgbaMatch=value.match(/rgba?\\(([^)]+)\\)/i);if(rgbaMatch){const parts=rgbaMatch[1].split(\",\").map(p=>p.trim()).filter(Boolean);if(parts.length>=3){const r=Number(parts[0]);const g=Number(parts[1]);const b=Number(parts[2]);const a=parts.length>=4?Number(parts[3]):1;if([r,g,b,a].every(n=>!Number.isNaN(n)))return{r,g,b,a};}}const hexMatch=value.match(/^#([0-9a-f]{3,8})$/i);if(hexMatch){const hex=hexMatch[1];if(hex.length===3||hex.length===4){const r=parseInt(hex[0]+hex[0],16);const g=parseInt(hex[1]+hex[1],16);const b=parseInt(hex[2]+hex[2],16);const a=hex.length===4?parseInt(hex[3]+hex[3],16)/255:1;return{r,g,b,a};}if(hex.length===6||hex.length===8){const r=parseInt(hex.slice(0,2),16);const g=parseInt(hex.slice(2,4),16);const b=parseInt(hex.slice(4,6),16);const a=hex.length===8?parseInt(hex.slice(6,8),16)/255:1;return{r,g,b,a};}}return null;}function colorLuminance(color){return(.299*color.r+.587*color.g+.114*color.b)/255;}function isTransparentColor(value){const v=(value||\"\").trim().toLowerCase();if(!v||v===\"transparent\"||v===\"none\")return true;const parsed=parseColor(v);if(!parsed)return false;return parsed.a<=.01;}function isNearWhite(value){const parsed=parseColor(value);if(!parsed||parsed.a<=.15)return false;return parsed.r>=225&&parsed.g>=225&&parsed.b>=225;}function hasImageDescendant(el){if(el.tagName===\"IMG\")return true;if(el.querySelector(\"img\"))return true;const bi=getComputedStyle(el).backgroundImage;if(bi&&bi!==\"none\"&&!bi.includes(\"gradient\"))return true;const descendants=el.querySelectorAll(\"*\");for(let i=0;i<descendants.length;i++){const d=descendants[i];const dbi=getComputedStyle(d).backgroundImage;if(dbi&&dbi!==\"none\"&&!dbi.includes(\"gradient\"))return true;}return false;}function collectNavTexts(header){const out=new Set;// Prefer anchors: the nav links (Why USDN, Products, Company, Resources).\nconst anchors=header.querySelectorAll(\"a\");anchors.forEach(a=>{const text=(a.textContent||\"\").trim();if(!text)return;if(hasImageDescendant(a))return;// logo anchor\nif(hasSolidBgAncestor(a,header))return;// button\nout.add(a);});// Also collect text-bearing leaves that aren't covered by anchors.\nconst textEls=header.querySelectorAll(\"p, h1, h2, h3, h4, h5, h6, span\");textEls.forEach(el=>{const text=(el.textContent||\"\").trim();if(!text)return;if(el.querySelector(\"img, svg\"))return;if(hasSolidBgAncestor(el,header))return;// Skip if already covered by a collected anchor.\nlet covered=false;out.forEach(existing=>{if(existing.contains(el))covered=true;});if(covered)return;out.add(el);});return Array.from(out);}function collectSvgs(header){const out=[];const svgs=header.querySelectorAll(\"svg\");svgs.forEach(svg=>{if(hasSolidBgAncestor(svg,header))return;if(hasImageDescendant(svg))return;const shapes=[];const nodes=[svg];const descendants=svg.querySelectorAll(SHAPE_SELECTOR);descendants.forEach(d=>nodes.push(d));nodes.forEach(node=>{const cs=getComputedStyle(node);const strokeValue=cs.stroke;const fillValue=cs.fill;const changeStroke=!isTransparentColor(strokeValue);const changeFill=!isTransparentColor(fillValue);if(!changeStroke&&!changeFill)return;shapes.push({el:node,changeStroke,changeFill,originalStroke:node.style.stroke,originalFill:node.style.fill});});if(shapes.length===0)return;out.push({svg,originalColor:svg.style.color,originalTransition:svg.style.transition,shapes});});return out;}function collectBorderTargets(header){const out=[];const all=header.querySelectorAll(\"*\");all.forEach(el=>{if(hasSolidBgAncestor(el,header))return;if(hasImageDescendant(el))return;const cs=getComputedStyle(el);const hasGradientBg=cs.backgroundImage&&cs.backgroundImage!==\"none\"&&cs.backgroundImage.includes(\"gradient\");const hasOpaqueBg=!isTransparentColor(cs.backgroundColor);if(hasGradientBg||hasOpaqueBg)return;const borderWidth=parseFloat(cs.borderTopWidth||\"0\");if(!(borderWidth>0))return;if(!isNearWhite(cs.borderTopColor))return;out.push({el,originalBorderColor:el.style.borderColor,originalTransition:el.style.transition});});return out;}// Check whether any <video> on the page covers the given viewport point.\n// Framer hero animations (e.g. /our-team, /results) use <video> on top of\n// a transparent wrapper — walking DOM ancestors would otherwise land on\n// the white page root and mis-detect the section as \"light\".\nfunction isVideoRenderable(video){const cs=getComputedStyle(video);if(cs.display===\"none\")return false;if(cs.visibility===\"hidden\")return false;const opacity=Number.parseFloat(cs.opacity||\"1\");if(!Number.isNaN(opacity)&&opacity<=0)return false;const r=video.getBoundingClientRect();if(r.width<=0||r.height<=0)return false;return true;}function pointInRect(x,y,rect){return x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;}function findNearestClippingAncestor(el){let cur=el.parentElement;while(cur){const cs=getComputedStyle(cur);const ox=cs.overflowX;const oy=cs.overflowY;const o=cs.overflow;if(ox!==\"visible\"||oy!==\"visible\"||o!==\"visible\"){return cur;}cur=cur.parentElement;}return null;}function intersectsRect(a,b){const left=Math.max(a.left,b.left);const right=Math.min(a.right,b.right);const top=Math.max(a.top,b.top);const bottom=Math.min(a.bottom,b.bottom);if(right<=left||bottom<=top)return null;const width=right-left;const height=bottom-top;return{left,right,top,bottom,width,height,x:left,y:top,toJSON:()=>({})};}function elementContainsRenderableVideoAtPoint(el,x,y){if(el instanceof HTMLVideoElement){return isVideoRenderable(el)&&pointInRect(x,y,el.getBoundingClientRect());}const videoParent=el.closest(\"video\");if(videoParent instanceof HTMLVideoElement){return isVideoRenderable(videoParent)&&pointInRect(x,y,videoParent.getBoundingClientRect());}const descendants=el.querySelectorAll(\"video\");for(let i=0;i<descendants.length;i++){const v=descendants[i];if(!(v instanceof HTMLVideoElement))continue;if(!isVideoRenderable(v))continue;if(pointInRect(x,y,v.getBoundingClientRect()))return true;}return false;}function pointIsOverVideo(x,y){const stacked=document.elementsFromPoint?.(x,y);if(stacked&&stacked.length>0){for(let i=0;i<stacked.length;i++){const el=stacked[i];if(el instanceof HTMLVideoElement&&isVideoRenderable(el)){return true;}}return false;}const top=document.elementFromPoint(x,y);if(top&&elementContainsRenderableVideoAtPoint(top,x,y)){return true;}const videos=document.querySelectorAll(\"video\");for(let i=0;i<videos.length;i++){const v=videos[i];if(!(v instanceof HTMLVideoElement))continue;if(!isVideoRenderable(v))continue;const vr=v.getBoundingClientRect();if(!pointInRect(x,y,vr))continue;const clippingAncestor=findNearestClippingAncestor(v);if(!clippingAncestor){return true;}const cr=clippingAncestor.getBoundingClientRect();const visibleRect=intersectsRect(vr,cr);if(visibleRect&&pointInRect(x,y,visibleRect)){return true;}}return false;}function parseFirstGradientColor(backgroundImage){if(!backgroundImage||backgroundImage===\"none\")return null;if(!backgroundImage.includes(\"gradient\"))return null;const match=backgroundImage.match(/rgba?\\([^)]+\\)|#[0-9a-fA-F]{3,8}/);if(!match)return null;return parseColor(match[0]);}function luminanceAt(x,y){// Dark-hero case: if a video is rendering at this point, treat as dark.\nif(pointIsOverVideo(x,y))return 0;const el=document.elementFromPoint(x,y);if(!el)return null;let cur=el;while(cur){const cs=getComputedStyle(cur);const bg=cs.backgroundColor;if(!isTransparentColor(bg)){const parsed=parseColor(bg);if(parsed)return colorLuminance(parsed);}const gradientColor=parseFirstGradientColor(cs.backgroundImage);if(gradientColor){return colorLuminance(gradientColor);}cur=cur.parentElement;}return null;}function getSampleY(header){if(typeof window===\"undefined\")return SAMPLE_Y_FALLBACK;const h=window.innerHeight;if(header){const rect=header.getBoundingClientRect();if(rect&&Number.isFinite(rect.bottom)){return Math.max(1,Math.min(h-1,Math.round(rect.bottom+8)));}}return Math.max(1,Math.min(h-1,SAMPLE_Y_FALLBACK));}// Sample luminance at several horizontal positions just below the header\n// and majority-vote. Single samples can be misleading if they land on a\n// card, icon, or absolutely-positioned decoration at that exact point.\nfunction detectIsLight(header){const w=window.innerWidth;const sampleY=getSampleY(header);let lights=0;let darks=0;for(const frac of SAMPLE_X_POSITIONS){const x=Math.max(1,Math.min(w-1,w*frac));const lum=luminanceAt(x,sampleY);if(lum===null)continue;if(lum>LUMINANCE_THRESHOLD)lights++;else darks++;}if(lights+darks===0)return null;// Tie → light (prioritise readability on light sections; white text on\n// genuinely dark sections is already handled by the default style).\nreturn lights>=darks;}// --- Override -------------------------------------------------------\nexport function withAutoContrast(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const innerRef=useRef(null);const setRef=useCallback(node=>{innerRef.current=node;if(typeof ref===\"function\")ref(node);else if(ref)ref.current=node;},[ref]);useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\"){return;}let raf=0;let retryTimer=0;let navTexts=[];let textOriginals=[];let textTransitions=[];let svgTargets=[];let borderTargets=[];let appliedLight=null;let attempts=0;const setup=()=>{attempts++;const root=innerRef.current;if(!root)return false;navTexts=collectNavTexts(root);svgTargets=collectSvgs(root);borderTargets=collectBorderTargets(root);if(navTexts.length===0&&svgTargets.length===0&&borderTargets.length===0){return false;}textOriginals=navTexts.map(el=>el.style.color);textTransitions=navTexts.map(el=>el.style.transition);navTexts.forEach(el=>{el.style.transition=\"color 180ms ease\";});svgTargets.forEach(target=>{target.svg.style.transition=\"color 180ms ease\";});borderTargets.forEach(target=>{target.el.style.transition=\"border-color 180ms ease\";});return true;};const apply=light=>{if(appliedLight===light)return;appliedLight=light;navTexts.forEach((el,i)=>{el.style.color=light?DARK_TEXT:textOriginals[i]||\"\";});svgTargets.forEach(target=>{target.svg.style.color=light?DARK_TEXT:target.originalColor||\"\";target.shapes.forEach(shape=>{if(shape.changeStroke){shape.el.style.stroke=light?DARK_TEXT:shape.originalStroke||\"\";}if(shape.changeFill){shape.el.style.fill=light?DARK_TEXT:shape.originalFill||\"\";}});});borderTargets.forEach(target=>{target.el.style.borderColor=light?DARK_TEXT:target.originalBorderColor||\"\";});};const update=()=>{raf=0;if(navTexts.length===0&&svgTargets.length===0&&borderTargets.length===0){const ok=setup();if(!ok){if(attempts<20)retryTimer=window.setTimeout(update,200);return;}}const isLight=detectIsLight(innerRef.current);if(isLight===null)return;apply(isLight);};const onScroll=()=>{if(!raf)raf=requestAnimationFrame(update);};const initial=setTimeout(update,50);window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);return()=>{clearTimeout(initial);if(retryTimer)clearTimeout(retryTimer);if(raf)cancelAnimationFrame(raf);window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);// Restore originals\nnavTexts.forEach((el,i)=>{el.style.color=textOriginals[i]||\"\";el.style.transition=textTransitions[i]||\"\";});svgTargets.forEach(target=>{target.svg.style.color=target.originalColor||\"\";target.svg.style.transition=target.originalTransition||\"\";target.shapes.forEach(shape=>{if(shape.changeStroke){shape.el.style.stroke=shape.originalStroke||\"\";}if(shape.changeFill){shape.el.style.fill=shape.originalFill||\"\";}});});borderTargets.forEach(target=>{target.el.style.borderColor=target.originalBorderColor||\"\";target.el.style.transition=target.originalTransition||\"\";});};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRef,...props});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withAutoContrast\":{\"type\":\"reactHoc\",\"name\":\"withAutoContrast\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HeaderAutoContrast.map"],"mappings":"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"}