{"version":3,"file":"Carousel_Controls_Collection.B9xa2o7F.mjs","names":["useRef","useState","useMemo","__esmMin","init_npm_react_18_3_1","pe","window","ce","init_jsx_runtime","c","p","_e","de","init_ssg_sandbox_shims","addPropertyControls","init_framer_BWFVvmND","ControlType","getCardScrollDistance","track","el","depth","children","child","style","rect","starts","isHorizontal","a","b","index","value","values","viewport","leadingEdge","nearestIndex","neighbor","previous","otherNeighbor","card","trackStyle","gap","getCenteredCardPositions","cards","visibleSize","outerSize","renderedSize","measuredScale","scale","viewportCenter","current","contentSize","maxScroll","cardCenter","target","position","positions","CarouselControls","props","normalizedDirection","direction","carouselRef","hasTarget","setHasTarget","canScrollPrevious","setCanScrollPrevious","canScrollNext","setCanScrollNext","findTarget","name","selectedCarousel","root","cancelled","tries","frameId","resizeObserver","mutationObserver","currentTarget","updateScrollState","scrollPosition","viewportSize","centeredPositions","scrollMode","centerCard","firstPosition","lastPosition","scheduleScrollStateUpdate","observeTarget","tryFind","scrollByArrow","type","base","cardDistance","delta","baseButtonStyle","size","backgroundColor","borderRadius","getButtonStyle","disabled","arrowStyle","arrowColor","containerStyle","spacing","labelStyle","font","renderArrow","icon","kind","previousIcon","nextIcon","useCustomIcons","onHover","up","showLabels","previousLabel","nextLabel","init_Carousel_Controls_Collection"],"sources":["https:/framerusercontent.com/modules/f4reHtcZudGI4BXRiTh9/EranxZtVjGiNsJs2Y3km/Carousel_Controls_Collection.js"],"sourcesContent":["// Arrow controls for scrollable Framer Collections / stacks\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";function getCardScrollDistance(el,isHorizontal,previous){// Follow single layout wrappers until reaching the row of cards.\nlet track=el;for(let depth=0;depth<8;depth++){const children=Array.from(track.children).filter(child=>{if(!(child instanceof HTMLElement))return false;const style=window.getComputedStyle(child);const rect=child.getBoundingClientRect();return style.display!==\"none\"&&style.visibility!==\"hidden\"&&style.position!==\"absolute\"&&style.position!==\"fixed\"&&rect.width>0&&rect.height>0;});if(children.length===0)return null;if(children.length===1&&children[0].children.length>0){track=children[0];continue;}const starts=children.map(child=>{const rect=child.getBoundingClientRect();return isHorizontal?rect.left:rect.top;}).sort((a,b)=>a-b).filter((value,index,values)=>index===0||Math.abs(value-values[index-1])>1);const viewport=el.getBoundingClientRect();const style=window.getComputedStyle(el);const leadingEdge=isHorizontal?viewport.left+el.clientLeft+(parseFloat(style.paddingLeft)||0):viewport.top+el.clientTop+(parseFloat(style.paddingTop)||0);let nearestIndex=0;for(let index=1;index<starts.length;index++){if(Math.abs(starts[index]-leadingEdge)<Math.abs(starts[nearestIndex]-leadingEdge))nearestIndex=index;}// Adjacent positions include the actual card size, gap and margins.\nconst neighbor=starts[nearestIndex+(previous?-1:1)];if(neighbor!==undefined){return Math.abs(neighbor-starts[nearestIndex]);}const otherNeighbor=starts[nearestIndex+(previous?1:-1)];if(otherNeighbor!==undefined){return Math.abs(otherNeighbor-starts[nearestIndex]);}const card=children[0].getBoundingClientRect();const trackStyle=window.getComputedStyle(track);const gap=parseFloat(isHorizontal?trackStyle.columnGap:trackStyle.rowGap)||0;return(isHorizontal?card.width:card.height)+gap;}return null;}function getCenteredCardPositions(el,isHorizontal){let track=el;for(let depth=0;depth<8;depth++){const cards=Array.from(track.children).filter(child=>{if(!(child instanceof HTMLElement))return false;const style=window.getComputedStyle(child);const rect=child.getBoundingClientRect();return style.display!==\"none\"&&style.visibility!==\"hidden\"&&style.position!==\"absolute\"&&style.position!==\"fixed\"&&rect.width>0&&rect.height>0;});if(cards.length===0)return[];if(cards.length===1&&cards[0].children.length>0){track=cards[0];continue;}const viewport=el.getBoundingClientRect();const visibleSize=isHorizontal?el.clientWidth:el.clientHeight;const outerSize=isHorizontal?el.offsetWidth:el.offsetHeight;const renderedSize=isHorizontal?viewport.width:viewport.height;// Convert measured coordinates back to scroll units if the canvas is scaled.\nconst measuredScale=outerSize>0?renderedSize/outerSize:1;const scale=measuredScale>0?measuredScale:1;const viewportCenter=(isHorizontal?viewport.left:viewport.top)+((isHorizontal?el.clientLeft:el.clientTop)+visibleSize/2)*scale;const current=isHorizontal?el.scrollLeft:el.scrollTop;const contentSize=isHorizontal?el.scrollWidth:el.scrollHeight;const maxScroll=Math.max(0,contentSize-visibleSize);return cards.map(card=>{const rect=card.getBoundingClientRect();const cardCenter=isHorizontal?rect.left+rect.width/2:rect.top+rect.height/2;const target=current+(cardCenter-viewportCenter)/scale;// Respect the actual scroll range; edge cards need sufficient side space.\nreturn Math.max(0,Math.min(maxScroll,target));}).filter(position=>Number.isFinite(position)).sort((a,b)=>a-b).filter((position,index,positions)=>index===0||position-positions[index-1]>1);}return[];}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CarouselControls(props){const{direction=\"horizontal\",arrowColor=\"#000000\",backgroundColor=\"#F5F5F5\",borderRadius=8,size=40,spacing=12,selectedCarousel=\"\",scrollMode=\"viewport\",centerCard=false,showLabels=false,previousLabel=\"Previous\",nextLabel=\"Next\",font,useCustomIcons=false,previousIcon=\"\",nextIcon=\"\",style}=props;const normalizedDirection=direction===\"vertical\"||direction===\"↕\"?\"vertical\":\"horizontal\";const isHorizontal=normalizedDirection===\"horizontal\";const carouselRef=useRef(null);const[hasTarget,setHasTarget]=useState(false);const[canScrollPrevious,setCanScrollPrevious]=useState(false);const[canScrollNext,setCanScrollNext]=useState(false);// Find the scrollable container for a given Framer layer name\nconst findTarget=()=>{if(typeof window===\"undefined\")return null;const name=selectedCarousel?.trim();if(!name)return null;const root=document.querySelector(`[data-framer-name=\"${CSS.escape(name)}\"]`);if(!root)return null;// Internal layout container used by Collections / scrollable stacks\nconst layout=root.querySelector(\"[data-framer-collection-layout]\")||root.querySelector('[data-framer-component-type=\"Scroll\"]');return layout||root;};// Resolve the target once the Collection has rendered\nuseEffect(()=>{carouselRef.current=null;setHasTarget(false);setCanScrollPrevious(false);setCanScrollNext(false);if(!selectedCarousel.trim())return;let cancelled=false;let tries=0;let frameId=null;let resizeObserver=null;let mutationObserver=null;let currentTarget=null;const updateScrollState=()=>{if(!currentTarget)return;const scrollPosition=isHorizontal?currentTarget.scrollLeft:currentTarget.scrollTop;const viewportSize=isHorizontal?currentTarget.clientWidth:currentTarget.clientHeight;const contentSize=isHorizontal?currentTarget.scrollWidth:currentTarget.scrollHeight;const maxScroll=Math.max(0,contentSize-viewportSize);const edgeTolerance=2;const centeredPositions=scrollMode===\"card\"&&centerCard?getCenteredCardPositions(currentTarget,isHorizontal):[];const firstPosition=centeredPositions[0]??0;const lastPosition=centeredPositions[centeredPositions.length-1]??maxScroll;setCanScrollPrevious(scrollPosition>firstPosition+edgeTolerance);setCanScrollNext(scrollPosition<lastPosition-edgeTolerance);};const scheduleScrollStateUpdate=()=>{if(frameId!==null)cancelAnimationFrame(frameId);frameId=requestAnimationFrame(()=>{frameId=null;updateScrollState();});};const observeTarget=el=>{currentTarget=el;el.addEventListener(\"scroll\",scheduleScrollStateUpdate,{passive:true});window.addEventListener(\"resize\",scheduleScrollStateUpdate);if(typeof ResizeObserver!==\"undefined\"){resizeObserver=new ResizeObserver(scheduleScrollStateUpdate);resizeObserver.observe(el);if(el.firstElementChild){resizeObserver.observe(el.firstElementChild);}}if(typeof MutationObserver!==\"undefined\"){mutationObserver=new MutationObserver(scheduleScrollStateUpdate);mutationObserver.observe(el,{childList:true,subtree:true});}scheduleScrollStateUpdate();};const tryFind=()=>{if(cancelled)return;const el=findTarget();if(el){carouselRef.current=el;setHasTarget(true);observeTarget(el);}else if(tries<30){tries++;requestAnimationFrame(tryFind);}};tryFind();return()=>{cancelled=true;if(frameId!==null)cancelAnimationFrame(frameId);currentTarget?.removeEventListener(\"scroll\",scheduleScrollStateUpdate);window.removeEventListener(\"resize\",scheduleScrollStateUpdate);resizeObserver?.disconnect();mutationObserver?.disconnect();carouselRef.current=null;setHasTarget(false);};},[selectedCarousel,normalizedDirection,scrollMode,centerCard]);const scrollByArrow=type=>{let el=carouselRef.current;// Lazy resolve on first click if needed\nif(!el){el=findTarget();if(!el)return;carouselRef.current=el;setHasTarget(true);}if(scrollMode===\"card\"&&centerCard){const positions=getCenteredCardPositions(el,isHorizontal);if(positions.length>0){const current=isHorizontal?el.scrollLeft:el.scrollTop;const tolerance=2;// After a partial drag, center the next card in the requested direction.\nconst target=type===\"prev\"?[...positions].reverse().find(position=>position<current-tolerance)??positions[0]:positions.find(position=>position>current+tolerance)??positions[positions.length-1];if(isHorizontal){el.scrollTo({left:target,behavior:\"smooth\"});}else{el.scrollTo({top:target,behavior:\"smooth\"});}return;}}const base=isHorizontal?el.clientWidth:el.clientHeight;const cardDistance=scrollMode===\"card\"?getCardScrollDistance(el,isHorizontal,type===\"prev\"):null;const distance=cardDistance!==null&&Number.isFinite(cardDistance)&&cardDistance>0?cardDistance:base*.8;const delta=distance*(type===\"prev\"?-1:1);if(isHorizontal){el.scrollBy({left:delta,behavior:\"smooth\"});}else{el.scrollBy({top:delta,behavior:\"smooth\"});}};const baseButtonStyle=useMemo(()=>({width:size,height:size,backgroundColor,border:\"none\",borderRadius,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"transform .18s cubic-bezier(.4,0,.2,1), opacity .18s\",willChange:\"transform\",userSelect:\"none\",cursor:hasTarget?\"pointer\":\"default\"}),[size,backgroundColor,borderRadius,hasTarget]);const getButtonStyle=disabled=>({...baseButtonStyle,opacity:disabled?.4:1,cursor:disabled?\"default\":\"pointer\"});const arrowStyle=useMemo(()=>({width:size*.4,height:size*.4,fill:\"none\",stroke:arrowColor,strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",transition:\"stroke .18s\"}),[size,arrowColor]);const containerStyle=useMemo(()=>({display:\"inline-flex\",alignItems:\"center\",gap:spacing,flexDirection:isHorizontal?\"row\":\"column\",position:\"relative\"}),[spacing,isHorizontal]);const labelStyle=useMemo(()=>({...font||{},color:arrowColor,margin:0,userSelect:\"none\"}),[font,arrowColor]);const renderArrow=(kind,disabled)=>{const icon=kind===\"prev\"?previousIcon:nextIcon;if(useCustomIcons&&icon){return /*#__PURE__*/_jsx(\"img\",{src:icon,alt:kind===\"prev\"?\"previous\":\"next\",style:{width:size*.5,height:size*.5,objectFit:\"contain\",opacity:disabled?.4:1}});}return /*#__PURE__*/_jsx(\"svg\",{style:{...arrowStyle,stroke:disabled?\"#999999\":arrowColor},viewBox:\"0 0 24 24\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:kind===\"prev\"?\"M15 18l-6-6 6-6\":\"M9 18l6-6-6-6\"})});};const onHover=(e,up)=>{if(e.currentTarget.disabled)return;const el=e.currentTarget;el.style.transform=up?\"scale(1.05)\":\"scale(1)\";};return /*#__PURE__*/_jsxs(\"div\",{style:{...style||{},...containerStyle},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8,flexDirection:isHorizontal?\"row\":\"column\"},children:[/*#__PURE__*/_jsx(\"button\",{style:getButtonStyle(!hasTarget||!canScrollPrevious),disabled:!hasTarget||!canScrollPrevious,onClick:()=>scrollByArrow(\"prev\"),\"aria-label\":\"Previous\",onMouseEnter:e=>onHover(e,true),onMouseLeave:e=>onHover(e,false),children:renderArrow(\"prev\",!hasTarget||!canScrollPrevious)}),showLabels&&/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:previousLabel})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8,flexDirection:isHorizontal?\"row\":\"column\"},children:[/*#__PURE__*/_jsx(\"button\",{style:getButtonStyle(!hasTarget||!canScrollNext),disabled:!hasTarget||!canScrollNext,onClick:()=>scrollByArrow(\"next\"),\"aria-label\":\"Next\",onMouseEnter:e=>onHover(e,true),onMouseLeave:e=>onHover(e,false),children:renderArrow(\"next\",!hasTarget||!canScrollNext)}),showLabels&&/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:nextLabel})]})]});}addPropertyControls(CarouselControls,{selectedCarousel:{type:ControlType.String,title:\"Collection\",defaultValue:\"\",placeholder:\"Framer layer name…\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"horizontal\",\"vertical\"],optionTitles:[\"↔\",\"↕\"],defaultValue:\"horizontal\",displaySegmentedControl:true},scrollMode:{type:ControlType.Enum,title:\"Scroll by\",options:[\"viewport\",\"card\"],optionTitles:[\"80% of view\",\"One card\"],defaultValue:\"viewport\"},centerCard:{type:ControlType.Boolean,title:\"Center card\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:({scrollMode})=>scrollMode!==\"card\",description:\"Centers the next or previous card. The first and last cards need enough side spacing to center fully.\"},size:{type:ControlType.Number,title:\"Button Size\",defaultValue:40,min:24,max:80,step:4,unit:\"px\"},spacing:{type:ControlType.Number,title:\"Spacing\",defaultValue:12,min:0,max:40,step:2,unit:\"px\"},useCustomIcons:{type:ControlType.Boolean,title:\"Custom Icons\",defaultValue:false,enabledTitle:\"Custom\",disabledTitle:\"Default\"},previousIcon:{type:ControlType.File,title:\"Previous Icon\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"gif\",\"webp\",\"svg\"],hidden:({useCustomIcons})=>!useCustomIcons},nextIcon:{type:ControlType.File,title:\"Next Icon\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"gif\",\"webp\",\"svg\"],hidden:({useCustomIcons})=>!useCustomIcons},arrowColor:{type:ControlType.Color,title:\"Arrow Color\",defaultValue:\"#000000\",hidden:({useCustomIcons})=>Boolean(useCustomIcons)},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"#F5F5F5\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:8,min:0,step:1,unit:\"px\"},showLabels:{type:ControlType.Boolean,title:\"Show Labels\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},previousLabel:{type:ControlType.String,title:\"Previous Label\",defaultValue:\"Previous\",hidden:({showLabels})=>!showLabels},nextLabel:{type:ControlType.String,title:\"Next Label\",defaultValue:\"Next\",hidden:({showLabels})=>!showLabels},font:{type:ControlType.Font,title:\"Label Font\",defaultValue:{fontSize:\"14px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"},controls:\"extended\",defaultFontType:\"sans-serif\",hidden:({showLabels})=>!showLabels}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CarouselControls\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Carousel_Controls_Collection.map"],"mappings":"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"}