{"version":3,"file":"Slider_Override.CSUAP13p.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/McI4lXFOKqlBq3ZHVgzw/zlsl1TY1GvwUD6hP4wxG/Slider_Override.js"],"sourcesContent":["// SliderOverride_v17.tsx\n// ─────────────────────────────────────────────────────────────────────────────\n// HOW TO USE:\n// 1. Assets → Code → \"+\" → paste this file → save as SliderOverride_v17\n// 2. Select your Collection List on the canvas\n// 3. Right panel → Override → File: SliderOverride_v17 → Function: collectionList\n// ─────────────────────────────────────────────────────────────────────────────\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useState,useEffect,useCallback}from\"react\";function getCurrentTranslateX(el){const matrix=window.getComputedStyle(el).transform;if(!matrix||matrix===\"none\")return 0;const match=matrix.match(/matrix\\(([^)]+)\\)/);if(!match)return 0;return parseFloat(match[1].split(\",\")[4])||0;}// ─── Arrow Button ─────────────────────────────────────────────────────────────\nfunction ArrowButton({direction,onClick,disabled}){return /*#__PURE__*/_jsx(\"button\",{onPointerDown:e=>{e.stopPropagation();e.preventDefault();},onPointerUp:e=>{e.stopPropagation();e.preventDefault();if(!disabled)onClick();},disabled:disabled,style:{width:\"44px\",height:\"44px\",borderRadius:\"9999px\",border:\"none\",background:\"#EDF1FA\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:disabled?\"default\":\"pointer\",opacity:disabled?.5:1,transition:\"opacity 0.2s ease\",outline:\"none\",padding:0,flexShrink:0,pointerEvents:\"all\"},\"aria-label\":direction===\"left\"?\"Previous\":\"Next\",children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",style:{transform:direction===\"left\"?\"rotate(180deg)\":\"none\",display:\"block\",pointerEvents:\"none\",flexShrink:0},children:/*#__PURE__*/_jsx(\"path\",{d:\"M15.5355 12.0001L9.87869 17.657L8.46448 16.2428L12.7071 12.0001L8.46448 7.75748L9.87869 6.34326L15.5355 12.0001Z\",fill:\"#160D27\"})})});}// ─── Override ─────────────────────────────────────────────────────────────────\nexport function collectionList(Component){return function SliderWrapper(props){const trackRef=useRef(null);const wrapperRef=useRef(null);const offsetRef=useRef(0);const[offset,setOffset]=useState(0);const maxOffsetRef=useRef(0);const isMobileRef=useRef(false);const[atStart,setAtStart]=useState(true);const[atEnd,setAtEnd]=useState(false);// Drag state\nconst pointerId=useRef(null);const dragStartX=useRef(0);const dragStartY=useRef(0);const dragStartOffset=useRef(0);const isDragging=useRef(false)// true = drag confirmed, pointer captured\n;const didDrag=useRef(false);// Velocity\nconst lastX=useRef(0);const lastT=useRef(0);const velocityPxMs=useRef(0);const rafRef=useRef(null);// ── Layout ───────────────────────────────────────────────────────────\nconst computeLayout=useCallback(()=>{const track=trackRef.current;const wrapper=wrapperRef.current;if(!track||!wrapper)return;isMobileRef.current=wrapper.clientWidth<768;const max=Math.min(0,wrapper.clientWidth-track.scrollWidth);maxOffsetRef.current=max;setAtStart(offsetRef.current>=0);setAtEnd(offsetRef.current<=max+2);},[]);useEffect(()=>{const observer=new ResizeObserver(computeLayout);if(trackRef.current)observer.observe(trackRef.current);if(wrapperRef.current)observer.observe(wrapperRef.current);const t=setTimeout(computeLayout,300);return()=>{observer.disconnect();clearTimeout(t);};},[computeLayout]);useEffect(()=>{return()=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);};},[]);// ── Native event listeners on the track ──────────────────────────────\n// We use native (not React synthetic) listeners so we can call\n// setPointerCapture at exactly the right moment and also\n// preventDefault on pointermove only after drag is confirmed.\nuseEffect(()=>{const track=trackRef.current;if(!track)return;const onPD=e=>{if(e.target.closest(\"button\"))return;if(e.button!==0)return;// left button / touch only\nif(rafRef.current)cancelAnimationFrame(rafRef.current);const visual=getCurrentTranslateX(track);track.style.transition=\"none\";track.style.transform=`translateX(${visual}px)`;offsetRef.current=visual;pointerId.current=e.pointerId;dragStartX.current=e.clientX;dragStartY.current=e.clientY;dragStartOffset.current=visual;isDragging.current=false;didDrag.current=false;lastX.current=e.clientX;lastT.current=performance.now();velocityPxMs.current=0;};const onPM=e=>{if(pointerId.current===null)return;if(e.pointerId!==pointerId.current)return;const dx=e.clientX-dragStartX.current;const dy=e.clientY-dragStartY.current;if(!isDragging.current){// Not yet confirmed as a drag\nif(Math.abs(dx)<8&&Math.abs(dy)<8)return;// If mostly vertical — abort, let the browser handle scroll\nif(Math.abs(dy)>Math.abs(dx)){pointerId.current=null;return;}// Confirmed horizontal drag — NOW capture the pointer\nisDragging.current=true;didDrag.current=true;track.setPointerCapture(e.pointerId);}// Prevent page scroll once we've taken over\ne.preventDefault();const raw=dragStartOffset.current+dx;let next;if(raw>0){next=raw*.2;}else if(raw<maxOffsetRef.current){next=maxOffsetRef.current+(raw-maxOffsetRef.current)*.2;}else{next=raw;}offsetRef.current=next;track.style.transform=`translateX(${next}px)`;const now=performance.now();const dt=now-lastT.current;if(dt>0)velocityPxMs.current=(e.clientX-lastX.current)/dt;lastX.current=e.clientX;lastT.current=now;setAtStart(next>=0);setAtEnd(next<=maxOffsetRef.current+2);};const onPU=e=>{if(e.pointerId!==pointerId.current)return;pointerId.current=null;if(!isDragging.current){// Was a tap — do nothing, let click fire naturally\nreturn;}isDragging.current=false;if(isMobileRef.current){startMomentum(velocityPxMs.current);}else{const step=getStep();const nearest=step>0?Math.round(-offsetRef.current/step)*-step:offsetRef.current;commitOffset(nearest);}};const blockDragStart=e=>{if(isDragging.current)e.preventDefault();};// Block click only if a drag happened\nconst onClickCapture=e=>{if(didDrag.current){e.preventDefault();e.stopPropagation();didDrag.current=false;}};track.addEventListener(\"pointerdown\",onPD);track.addEventListener(\"pointermove\",onPM,{passive:false});track.addEventListener(\"pointerup\",onPU);track.addEventListener(\"pointercancel\",onPU);track.addEventListener(\"dragstart\",blockDragStart);track.addEventListener(\"click\",onClickCapture,true);return()=>{track.removeEventListener(\"pointerdown\",onPD);track.removeEventListener(\"pointermove\",onPM);track.removeEventListener(\"pointerup\",onPU);track.removeEventListener(\"pointercancel\",onPU);track.removeEventListener(\"dragstart\",blockDragStart);track.removeEventListener(\"click\",onClickCapture,true);};},[]);// ── DOM helpers ──────────────────────────────────────────────────────\nconst setTransform=(val,transition=\"none\")=>{const track=trackRef.current;if(!track)return;track.style.transition=transition;track.style.transform=`translateX(${val}px)`;};const syncState=val=>{offsetRef.current=val;setOffset(val);setAtStart(val>=0);setAtEnd(val<=maxOffsetRef.current+2);};// ── Momentum ─────────────────────────────────────────────────────────\nconst DECEL=.969;const startMomentum=vPxMs=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);let v=vPxMs*16;const tick=()=>{v*=DECEL;if(Math.abs(v)<.5){const clamped=Math.max(maxOffsetRef.current,Math.min(0,offsetRef.current));if(Math.abs(clamped-offsetRef.current)>.5){setTransform(clamped,\"transform 0.35s cubic-bezier(0.25, 1, 0.5, 1)\");}syncState(clamped);return;}let next=offsetRef.current+v;if(next>0){next=next*.1;v*=.5;}else if(next<maxOffsetRef.current){next=maxOffsetRef.current+(next-maxOffsetRef.current)*.1;v*=.5;}offsetRef.current=next;setTransform(next);setAtStart(next>=0);setAtEnd(next<=maxOffsetRef.current+2);rafRef.current=requestAnimationFrame(tick);};rafRef.current=requestAnimationFrame(tick);};// ── Arrows ───────────────────────────────────────────────────────────\nconst getStep=()=>{const w=wrapperRef.current;return w?w.clientWidth*.33:400;};const commitOffset=val=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);const clamped=Math.max(maxOffsetRef.current,Math.min(0,val));setTransform(clamped,\"transform 0.45s cubic-bezier(0.25, 1, 0.5, 1)\");syncState(clamped);};const slideBy=dir=>{const step=getStep();commitOffset(offsetRef.current+(dir===\"right\"?-step:step));};return /*#__PURE__*/_jsxs(\"div\",{ref:wrapperRef,style:{position:\"relative\",width:\"100%\",overflow:\"visible\",display:\"flex\",flexDirection:\"column\",gap:\"24px\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:trackRef,style:{display:\"flex\",flexDirection:\"row\",flexWrap:\"nowrap\",overflow:\"visible\",gap:\"20px\",width:\"100%\",cursor:\"grab\",userSelect:\"none\",WebkitUserSelect:\"none\",transform:`translateX(${offset}px)`,willChange:\"transform\",WebkitUserDrag:\"none\",touchAction:\"pan-y\"},children:/*#__PURE__*/_jsx(Component,{...props,style:{...props.style??{},display:\"contents\"}})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"row\",alignItems:\"center\",gap:\"8px\"},children:[/*#__PURE__*/_jsx(ArrowButton,{direction:\"left\",onClick:()=>slideBy(\"left\"),disabled:atStart}),/*#__PURE__*/_jsx(ArrowButton,{direction:\"right\",onClick:()=>slideBy(\"right\"),disabled:atEnd})]})]});};}\nexport const __FramerMetadata__ = {\"exports\":{\"collectionList\":{\"type\":\"reactHoc\",\"name\":\"collectionList\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Slider_Override.map"],"mappings":"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"}