{"version":3,"file":"BlogCarousel.DQMEBEHA.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/K3PKFO4LxhgVBxASzj0p/kNszVpduxNqnI6dqeiqx/BlogCarousel.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useRef}from\"react\";// Enhances the existing native CMS list and native editable arrow components.\nfunction connectCarousel(root){let teardown=()=>{};let current=[];function bind(){const list=root.querySelector('[data-framer-name=\"Latest articles\"], [data-framer-name=\"Article carousel\"]');const previous=root.querySelector('[data-framer-name=\"Previous article\"]');const next=root.querySelector('[data-framer-name=\"Next article\"]');if(!list||!previous||!next)return;const elements=[list,previous,next,...Array.from(list.children)];if(elements.length===current.length&&elements.every((el,i)=>el===current[i]))return;teardown();current=elements;const buttons=[previous,next].map(el=>el.matches(\"button\")?el:el.querySelector(\"button\")||el);const cards=Array.from(list.children).filter(el=>el instanceof HTMLElement&&el.getAttribute(\"data-framer-name\")!==\"No related articles\");const restored=[];const save=(el,attr)=>{const old=el.getAttribute(attr);restored.push(()=>old===null?el.removeAttribute(attr):el.setAttribute(attr,old));};[list,previous,next,...cards].forEach(el=>save(el,\"style\"));[previous,next].forEach(el=>{save(el,\"aria-hidden\");save(el,\"inert\");});buttons.forEach((button,index)=>{[\"type\",\"role\",\"tabindex\",\"aria-label\",\"disabled\"].forEach(attr=>save(button,attr));button.setAttribute(\"type\",\"button\");button.setAttribute(\"role\",\"button\");button.setAttribute(\"aria-label\",index?\"Next article\":\"Previous article\");});const reduced=window.matchMedia(\"(prefers-reduced-motion: reduce)\");// The viewport reaches the outer edges; only the scrolling content is inset.\nconst syncScrollPadding=()=>{const style=window.getComputedStyle(list);list.style.scrollPaddingLeft=style.paddingLeft;list.style.scrollPaddingRight=style.paddingRight;};syncScrollPadding();list.style.scrollSnapType=\"x mandatory\";list.style.scrollbarWidth=\"none\";cards.forEach(card=>{card.style.scrollSnapAlign=\"start\";card.style.flexShrink=\"0\";});let raf=0;let destination=null;let lastClick=0;const max=()=>Math.max(0,list.scrollWidth-list.clientWidth);const offsets=()=>{const left=list.getBoundingClientRect().left;const inset=parseFloat(window.getComputedStyle(list).paddingLeft)||0;return cards.map(card=>card.getBoundingClientRect().left-left+list.scrollLeft-inset);};function visibility(index,visible){const outer=index?next:previous;const button=buttons[index];outer.style.opacity=visible?\"1\":\"0\";outer.style.pointerEvents=visible?\"auto\":\"none\";outer.setAttribute(\"aria-hidden\",String(!visible));outer.toggleAttribute(\"inert\",!visible);button.toggleAttribute(\"disabled\",!visible);button.tabIndex=visible?0:-1;}function update(){raf=0;syncScrollPadding();const width=cards[0]?.getBoundingClientRect().width||0;const top=`${Math.max(0,width/2-16)}px`;[previous,next].forEach(el=>{el.style.top=top;el.style.transition=reduced.matches?\"none\":\"opacity 150ms ease\";});const end=max();const position=Math.max(0,Math.min(end,list.scrollLeft));visibility(0,end>1&&position>1);visibility(1,end>1&&position<end-1);if(destination!==null&&Math.abs(position-destination)<1)destination=null;}function schedule(){if(!raf)raf=requestAnimationFrame(update);}function go(direction){const end=max();const now=performance.now();const position=destination!==null&&now-lastClick<800?destination:list.scrollLeft;const stops=offsets();let target=direction>0?end:0;if(direction>0)target=stops.find(stop=>stop>position+1)??end;else target=[...stops].reverse().find(stop=>stop<position-1)??0;destination=Math.max(0,Math.min(end,target));lastClick=now;list.scrollTo({left:destination,behavior:reduced.matches?\"auto\":\"smooth\"});schedule();}const handlers=buttons.map((button,index)=>{const click=event=>{event.preventDefault();go(index?1:-1);};const key=event=>{if(button.tagName!==\"BUTTON\"&&(event.key===\"Enter\"||event.key===\" \")){event.preventDefault();go(index?1:-1);}};button.addEventListener(\"click\",click);button.addEventListener(\"keydown\",key);return()=>{button.removeEventListener(\"click\",click);button.removeEventListener(\"keydown\",key);};});const cancelTarget=()=>{destination=null;};list.addEventListener(\"scroll\",schedule,{passive:true});list.addEventListener(\"pointerdown\",cancelTarget,{passive:true});list.addEventListener(\"wheel\",cancelTarget,{passive:true});reduced.addEventListener(\"change\",schedule);const resize=new ResizeObserver(()=>{destination=null;schedule();});[root,list,...cards].forEach(el=>resize.observe(el));update();teardown=()=>{cancelAnimationFrame(raf);resize.disconnect();list.removeEventListener(\"scroll\",schedule);list.removeEventListener(\"pointerdown\",cancelTarget);list.removeEventListener(\"wheel\",cancelTarget);reduced.removeEventListener(\"change\",schedule);handlers.forEach(remove=>remove());restored.reverse().forEach(restore=>restore());};}const observer=new MutationObserver(bind);observer.observe(root,{childList:true,subtree:true});bind();return()=>{observer.disconnect();teardown();};}export function BlogCarousel(Component){return /*#__PURE__*/forwardRef(function HomepageBlogCarousel(props,forwardedRef){const cleanup=useRef();const attach=useCallback(element=>{cleanup.current?.();cleanup.current=element?connectCarousel(element):undefined;if(typeof forwardedRef===\"function\")forwardedRef(element);else if(forwardedRef)forwardedRef.current=element;},[forwardedRef]);return /*#__PURE__*/_jsx(Component,{...props,ref:attach});});}\nexport const __FramerMetadata__ = {\"exports\":{\"BlogCarousel\":{\"type\":\"reactHoc\",\"name\":\"BlogCarousel\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BlogCarousel.map"],"mappings":"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"}