{"version":3,"file":"FeatureTabs.DDGdpcEE.mjs","names":["useMemo","useRef","__esmMin","init_ssg_sandbox_shims","pe","c","init_jsx_runtime","ce","init_npm_react_18_3_1","de","window","addPropertyControls","RenderTarget","init_framer_BWFVvmND","ControlType","normalizeMediaValue","value","candidate","ConditionalProductMedia","props","normalizedVideo","video","normalizedImage","image","normalizedPoster","poster","hasVideo","altText","alt","srcSet","containerStyle","borderRadius","mediaStyle","autoplay","showControls","init_ConditionalProductMedia","navLabel","FeatureTabs","selfRef","tabSelector","tabLayerName","featureSelector","featureLayerName","barSelector","barLayerName","styleId","styleEl","activeBackground","activeText","bandFill","bandBorder","bandShadow","bar","tabs","features","frame","activeIndex","shown","el","scope","node","collect","root","tab","stickyTopOf","top","landingOffset","bandPadding","gap","scrollOffset","band","cx","cy","cs","info","readout","placeBand","vw","apply","vTop","vHeight","r","w","paintBand","stickyTop","z","rect","height","stuck","debug","b","scrollable","paintEdges","max","left","right","mask","revealTab","barRect","tabRect","offset","target","update","next","feature","index","setActive","onScroll","onBarScroll","jumping","jumpFrame","stopJump","destinationOf","focusFeature","jumpTo","reduced","from","scrollDuration","moveFocus","start","step","p","now","eased","to","onUserScroll","event","isTabKey","onKeyDown","onFocusIn","onClick","retry","previous","style","init_FeatureTabs"],"sources":["https:/framerusercontent.com/modules/pwOmko7B8c49O4O5b3Ti/1tOyD3bZPLDtXs3gFb1q/ConditionalProductMedia.js","https:/framerusercontent.com/modules/DrC6nUH4TEqtOtS01o3h/EJkrXG5hKCsyNQ32iA42/FeatureTabs.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";function normalizeMediaValue(value){if(typeof value===\"string\")return value.trim();if(!value||typeof value!==\"object\")return\"\";const candidate=value.src??value.url??value.source??\"\";return typeof candidate===\"string\"?candidate.trim():\"\";}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function ConditionalProductMedia(props){const{video=\"\",image=\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",poster=\"\",borderRadius=\"16px\",autoplay=true,muted=true,loop=true,playsInline=true,showControls=false,alt=\"\"}=props;const normalizedVideo=useMemo(()=>normalizeMediaValue(video),[video]);const normalizedImage=useMemo(()=>normalizeMediaValue(image),[image]);const normalizedPoster=useMemo(()=>normalizeMediaValue(poster),[poster]);const hasVideo=useMemo(()=>normalizedVideo.length>0,[normalizedVideo]);// Alt text comes from the CMS image (its alt field) unless set on the instance.\n// Without one the media is treated as decorative instead of announcing \"Product media\".\nconst altText=useMemo(()=>{if(alt.trim())return alt.trim();return image&&typeof image===\"object\"&&typeof image.alt===\"string\"?image.alt.trim():\"\";},[alt,image]);const srcSet=image&&typeof image===\"object\"&&typeof image.srcSet===\"string\"?image.srcSet:undefined;const containerStyle=useMemo(()=>({position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",borderRadius}),[borderRadius]);const mediaStyle=useMemo(()=>({width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",borderRadius}),[borderRadius]);return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:hasVideo?/*#__PURE__*/_jsx(\"video\",{src:normalizedVideo,poster:normalizedPoster||undefined,autoPlay:autoplay,muted:muted,loop:loop,playsInline:playsInline,controls:showControls,style:mediaStyle,...altText?{\"aria-label\":altText}:{\"aria-hidden\":true}}):/*#__PURE__*/_jsx(\"img\",{src:normalizedImage,srcSet:srcSet,sizes:srcSet?\"(max-width: 767px) 100vw, 50vw\":undefined,alt:altText,decoding:\"async\",style:mediaStyle})});}addPropertyControls(ConditionalProductMedia,{video:{type:ControlType.File,title:\"Video\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"]},image:{type:ControlType.ResponsiveImage,title:\"Image\"},alt:{type:ControlType.String,title:\"Alt text\",description:\"Optional. Leave empty to use the image's own alt text.\",defaultValue:\"\"},poster:{type:ControlType.Image,title:\"Poster\"},borderRadius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"16px\"},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true},muted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:true},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},playsInline:{type:ControlType.Boolean,title:\"Plays Inline\",defaultValue:true},showControls:{type:ControlType.Boolean,title:\"Show Controls\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ConditionalProductMedia\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ConditionalProductMedia.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */// Accessible name for the tab bar, in the page language.\nfunction navLabel(){const lang=(typeof document!==\"undefined\"?document.documentElement.lang:\"en\").slice(0,2);return({nl:\"Op deze pagina\",de:\"Auf dieser Seite\",es:\"En esta p\\xe1gina\",fr:\"Sur cette page\"})[lang]||\"On this page\";}export default function FeatureTabs(props){const{tabLayerName=\"Tab\",featureLayerName=\"Feature\",barLayerName=\"Tab Bar\",gap=16,scrollOffset=160,activeBackground=\"rgb(8, 19, 40)\",activeText=\"rgb(255, 255, 255)\",bandFill=\"rgb(255, 255, 255)\",bandBorder=\"rgba(8, 19, 40, 0.08)\",bandPadding=16,bandShadow=\"0px 4px 16px 0px rgba(8, 19, 40, 0.08)\",scrollDuration=300,debug=false,style}=props;const selfRef=useRef(null);useEffect(()=>{if(RenderTarget.current()===RenderTarget.canvas)return;if(typeof document===\"undefined\")return;const tabSelector=`[data-framer-name=\"${tabLayerName}\"]`;const featureSelector=`[data-framer-name=\"${featureLayerName}\"]`;const barSelector=`[data-framer-name=\"${barLayerName}\"]`;const styleId=\"dyflexis-feature-tabs\";let styleEl=document.getElementById(styleId);if(!styleEl){styleEl=document.createElement(\"style\");styleEl.id=styleId;document.head.appendChild(styleEl);}styleEl.textContent=`\n${barSelector} { -webkit-overflow-scrolling: touch; scroll-behavior: smooth; }\n${barSelector}::-webkit-scrollbar { display: none; }\n${tabSelector} { cursor: pointer; flex: 0 0 auto; white-space: nowrap; transition: background-color 200ms ease; }\n${tabSelector} * { white-space: nowrap; transition: color 200ms ease; }\n${tabSelector}:hover { background-color: rgba(255, 255, 255, 0.6); }\n${tabSelector}.dyf-tab-active { background-color: ${activeBackground}; }\n${tabSelector}.dyf-tab-active:hover { background-color: ${activeBackground}; }\n${tabSelector}.dyf-tab-active * { color: ${activeText}; }\n${featureSelector}:focus { outline: none; }\n.dyf-tab-band { position: fixed; top: 0; left: 0; height: 0; background-color: ${bandFill}; border-bottom: 1px solid ${bandBorder}; box-shadow: ${bandShadow}; opacity: 0; pointer-events: none; transition: opacity 180ms ease; }\n.dyf-tab-band.dyf-tab-band-on { opacity: 1; pointer-events: auto; }\n@media (prefers-reduced-motion: reduce) {\n  ${barSelector} { scroll-behavior: auto; }\n  .dyf-tab-band { transition: none; }\n}\n`;let bar=null;let tabs=[];let features=[];let frame=0;let activeIndex=-1;// Framer can render one copy per breakpoint and hide the others,\n// so only ever work with the copy that is actually on screen.\nconst shown=el=>el.getClientRects().length>0;const scope=()=>{let node=selfRef.current;while(node&&node!==document.body){const found=Array.from(node.querySelectorAll(barSelector));if(found.some(shown))return node;node=node.parentElement;}return document;};const collect=()=>{const root=scope();bar=Array.from(root.querySelectorAll(barSelector)).find(shown)||null;tabs=bar?Array.from(bar.querySelectorAll(tabSelector)).filter(shown):[];features=Array.from(root.querySelectorAll(featureSelector)).filter(shown);// Keyboard and screen reader support: the bar is an in-page navigation and each\n// tab is a link to its feature block.\nif(bar&&!bar.hasAttribute(\"role\")){bar.setAttribute(\"role\",\"navigation\");bar.setAttribute(\"aria-label\",navLabel());}tabs.forEach(tab=>{if(tab.getAttribute(\"role\")!==\"link\")tab.setAttribute(\"role\",\"link\");if(!tab.hasAttribute(\"tabindex\"))tab.tabIndex=0;});};// The bar sticks at whatever offset the design sets per breakpoint.\n// Read it back so the landing position stays correct on every screen.\nconst stickyTopOf=el=>{const top=parseFloat(getComputedStyle(el).top);return isFinite(top)?top:80;};const landingOffset=()=>{if(!bar)return scrollOffset;return stickyTopOf(bar)+bar.offsetHeight+bandPadding+gap;};// Full-width band behind the bar, shown only while the bar is stuck.\n// It sits under the fixed navbar and ends bandPadding below the bar.\nlet band=null;// Where the band's containing block sits and how it is scaled.\n// Normally 0/0/1; a transformed Framer wrapper changes it.\nlet cx=0;let cy=0;let cs=1;let info=\"\";let readout=null;const placeBand=(vTop,vHeight)=>{if(!band)return;const vw=document.documentElement.clientWidth;const apply=()=>{band.style.left=`${-cx/cs}px`;band.style.top=`${(vTop-cy)/cs}px`;band.style.width=`${vw/cs}px`;band.style.height=`${vHeight/cs}px`;};apply();const r=band.getBoundingClientRect();if(Math.abs(r.top-vTop)>.5||Math.abs(r.left)>.5||Math.abs(r.width-vw)>.5){const w=band.offsetWidth;if(w>0&&r.width>0)cs=r.width/w;cx=r.left-parseFloat(band.style.left)*cs;cy=r.top-parseFloat(band.style.top)*cs;apply();}};const paintBand=()=>{if(!bar||!bar.parentElement)return;if(!band){band=document.createElement(\"div\");band.className=\"dyf-tab-band\";band.setAttribute(\"aria-hidden\",\"true\");}if(band.parentElement!==bar.parentElement||band.nextSibling!==bar){bar.parentElement.insertBefore(band,bar);}const stickyTop=stickyTopOf(bar);const z=parseInt(getComputedStyle(bar).zIndex,10);const rect=bar.getBoundingClientRect();// Top edge stays at stickyTop - bandPadding (the navbar's bottom edge)\n// and the band shrinks from below as the bar scrolls away.\nconst top=Math.max(0,stickyTop-bandPadding);const height=Math.max(0,rect.bottom+bandPadding-top);const stuck=rect.top<=stickyTop+1&&height>0;band.style.zIndex=String(isFinite(z)?z-1:4);placeBand(top,height);band.classList.toggle(\"dyf-tab-band-on\",stuck);if(debug){const b=band.getBoundingClientRect();info=[\"FeatureTabs v3\",`bars ${document.querySelectorAll(barSelector).length}, tabs ${tabs.length}, features ${features.length}`,`stickyTop ${getComputedStyle(bar).top}, bar.top ${Math.round(rect.top)}`,`stuck ${stuck}, band ${Math.round(b.top)}/${Math.round(b.height)}/${Math.round(b.width)}`,`block ${Math.round(cx)},${Math.round(cy)} x${cs.toFixed(2)}`,`opacity ${getComputedStyle(band).opacity}, z ${band.style.zIndex}`].join(\"\\n\");if(!readout){readout=document.createElement(\"div\");readout.style.cssText=\"position:fixed;right:12px;bottom:12px;z-index:2147483000;padding:12px;background:rgba(8,19,40,.92);color:#fff;font:12px/1.5 ui-monospace,monospace;white-space:pre;border-radius:8px;pointer-events:none\";document.body.appendChild(readout);}readout.textContent=info;}};const scrollable=()=>!!bar&&bar.scrollWidth>bar.clientWidth+1;// Fade the edge the user can still scroll towards, both ends.\nconst paintEdges=()=>{if(!bar)return;if(!scrollable()){bar.style.maskImage=\"\";bar.style.webkitMaskImage=\"\";return;}const max=bar.scrollWidth-bar.clientWidth;const left=bar.scrollLeft>4;const right=bar.scrollLeft<max-4;const from=left?\"rgba(0,0,0,0) 0%, rgb(0,0,0) 6%\":\"rgb(0,0,0) 0%\";const to=right?\"rgb(0,0,0) 94%, rgba(0,0,0,0) 100%\":\"rgb(0,0,0) 100%\";const mask=`linear-gradient(90deg, ${from}, ${to})`;bar.style.maskImage=mask;bar.style.webkitMaskImage=mask;};// Keep the active tab visible inside the scrolling bar.\nconst revealTab=tab=>{if(!bar||!scrollable())return;const barRect=bar.getBoundingClientRect();const tabRect=tab.getBoundingClientRect();const offset=tabRect.left-barRect.left;const target=bar.scrollLeft+offset-(bar.clientWidth-tabRect.width)/2;const max=bar.scrollWidth-bar.clientWidth;bar.scrollLeft=Math.max(0,Math.min(target,max));};const update=()=>{frame=0;if(!bar||!bar.isConnected||!shown(bar)||!tabs.length||!features.length)collect();if(!tabs.length||!features.length)return;const offset=landingOffset();let next=0;features.forEach((feature,index)=>{if(feature.getBoundingClientRect().top-offset-8<=0){next=index;}});paintEdges();paintBand();if(jumping)return;setActive(next);};const setActive=next=>{if(next===activeIndex)return;activeIndex=next;tabs.forEach((tab,index)=>{tab.classList.toggle(\"dyf-tab-active\",index===next);if(index===next)tab.setAttribute(\"aria-current\",\"true\");else tab.removeAttribute(\"aria-current\");});if(tabs[next])revealTab(tabs[next]);};const onScroll=()=>{if(frame)return;frame=requestAnimationFrame(update);};const onBarScroll=()=>paintEdges();// Fixed-duration scroll, like Bynder: about 300ms whatever the\n// distance, with a gentle ease-in-out. The native smooth scroll\n// gets slower the further it travels.\nlet jumping=false;let jumpFrame=0;const stopJump=()=>{if(jumpFrame)cancelAnimationFrame(jumpFrame);jumpFrame=0;jumping=false;};const destinationOf=feature=>feature.getBoundingClientRect().top+window.scrollY-landingOffset();const focusFeature=feature=>{if(!feature.hasAttribute(\"tabindex\"))feature.tabIndex=-1;feature.focus({preventScroll:true});};const jumpTo=(feature,moveFocus=false)=>{stopJump();const reduced=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const from=window.scrollY;if(reduced||scrollDuration<=0){window.scrollTo({top:destinationOf(feature),behavior:\"instant\"});if(moveFocus)focusFeature(feature);return;}jumping=true;const start=performance.now();const step=now=>{const p=Math.min(1,(now-start)/scrollDuration);const eased=.5-Math.cos(p*Math.PI)/2;// Re-read the target each frame so late layout shifts still land right.\nconst to=destinationOf(feature);window.scrollTo({top:from+(to-from)*eased,behavior:\"instant\"});if(p<1){jumpFrame=requestAnimationFrame(step);}else{jumpFrame=0;jumping=false;if(moveFocus)focusFeature(feature);update();}};jumpFrame=requestAnimationFrame(step);};// Any manual scroll input takes over from the animation.\nconst onUserScroll=event=>{if(event instanceof KeyboardEvent&&isTabKey(event))return;if(jumping)stopJump();};const isTabKey=event=>(event.key===\"Enter\"||event.key===\" \")&&event.target instanceof Element&&!!event.target.closest(tabSelector);// Enter or Space on a focused tab jumps to its feature and moves focus there, so the\n// next Tab press continues inside that block.\nconst onKeyDown=event=>{if(!isTabKey(event))return;const tab=event.target.closest(tabSelector);collect();const index=tabs.indexOf(tab);const feature=features[index];if(index===-1||!feature)return;event.preventDefault();setActive(index);revealTab(tab);jumpTo(feature,true);};const onFocusIn=event=>{const tab=event.target instanceof Element?event.target.closest(tabSelector):null;if(tab)revealTab(tab);};const onClick=event=>{const target=event.target;if(!(target instanceof Element))return;const tab=target.closest(tabSelector);if(!tab)return;collect();const index=tabs.indexOf(tab);const feature=features[index];if(index===-1||!feature)return;event.preventDefault();setActive(index);revealTab(tab);jumpTo(feature);};collect();update();document.addEventListener(\"click\",onClick,true);document.addEventListener(\"keydown\",onKeyDown,true);document.addEventListener(\"focusin\",onFocusIn);document.addEventListener(\"scroll\",onScroll,{passive:true,capture:true});window.addEventListener(\"resize\",onScroll);window.addEventListener(\"wheel\",onUserScroll,{passive:true});window.addEventListener(\"touchstart\",onUserScroll,{passive:true});window.addEventListener(\"keydown\",onUserScroll);if(bar)bar.addEventListener(\"scroll\",onBarScroll,{passive:true});const retry=window.setTimeout(()=>{const previous=bar;collect();if(bar&&bar!==previous){if(previous)previous.removeEventListener(\"scroll\",onBarScroll);bar.addEventListener(\"scroll\",onBarScroll,{passive:true});}activeIndex=-1;update();},800);return()=>{document.removeEventListener(\"click\",onClick,true);document.removeEventListener(\"keydown\",onKeyDown,true);document.removeEventListener(\"focusin\",onFocusIn);document.removeEventListener(\"scroll\",onScroll,{capture:true});window.removeEventListener(\"resize\",onScroll);window.removeEventListener(\"wheel\",onUserScroll);window.removeEventListener(\"touchstart\",onUserScroll);window.removeEventListener(\"keydown\",onUserScroll);stopJump();if(bar)bar.removeEventListener(\"scroll\",onBarScroll);window.clearTimeout(retry);if(frame)cancelAnimationFrame(frame);if(band)band.remove();if(readout)readout.remove();};},[tabLayerName,featureLayerName,barLayerName,gap,scrollOffset,activeBackground,activeText,bandFill,bandBorder,bandPadding,bandShadow,scrollDuration,debug]);return /*#__PURE__*/_jsx(\"div\",{ref:selfRef,style:{...style,width:1,height:1,opacity:0,pointerEvents:\"none\"}});}addPropertyControls(FeatureTabs,{tabLayerName:{type:ControlType.String,title:\"Tab layer\",defaultValue:\"Tab\"},featureLayerName:{type:ControlType.String,title:\"Feature layer\",defaultValue:\"Feature\"},barLayerName:{type:ControlType.String,title:\"Bar layer\",defaultValue:\"Tab Bar\"},gap:{type:ControlType.Number,title:\"Gap\",description:\"Space between the sticky bar and the feature it scrolls to.\",defaultValue:16,min:0,max:120,step:4},scrollOffset:{type:ControlType.Number,title:\"Fallback\",description:\"Used only when the bar layer cannot be found.\",defaultValue:160,min:0,max:400,step:4},activeBackground:{type:ControlType.Color,title:\"Active fill\",defaultValue:\"rgb(8, 19, 40)\"},activeText:{type:ControlType.Color,title:\"Active text\",defaultValue:\"rgb(255, 255, 255)\"},bandFill:{type:ControlType.Color,title:\"Band fill\",description:\"Full-width background behind the bar while it is stuck.\",defaultValue:\"rgb(255, 255, 255)\"},bandBorder:{type:ControlType.Color,title:\"Band border\",defaultValue:\"rgba(8, 19, 40, 0.08)\"},scrollDuration:{type:ControlType.Number,title:\"Scroll time\",description:\"Milliseconds a tab click takes to reach its feature.\",defaultValue:300,min:0,max:1200,step:50,unit:\"ms\"},bandShadow:{type:ControlType.BoxShadow,title:\"Band shadow\",defaultValue:\"0px 4px 16px 0px rgba(8, 19, 40, 0.08)\"},debug:{type:ControlType.Boolean,title:\"Debug\",description:\"Shows a readout in Preview. Leave off.\",defaultValue:false},bandPadding:{type:ControlType.Number,title:\"Band padding\",description:\"Space between the bar and the bottom edge of the band.\",defaultValue:16,min:0,max:64,step:4}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FeatureTabs\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FeatureTabs.map"],"mappings":"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"}