{"version":3,"file":"CMSCardStack.1DcozKla.mjs","names":["Fragment","Children","isValidElement","useState","useRef","startTransition"],"sources":["https:/framerusercontent.com/modules/lFD7xjA9IFRqKzLFjA6y/MwZxpVDwPz8an3uQ2htd/CMSCardStack.js"],"sourcesContent":["// Swipeable, looping stack of cards taken from a connected Collection List (or\n// any layers, which are stretched to the stack's width). Cards behind the front one peek out on the right; swipe left for\n// the next card, right for the previous. Taps on the front card still reach the\n// card's own interactions, e.g. opening an overlay.\n//\n// Swiping is tracked with plain pointer events instead of Motion's drag: a tap\n// gesture that ends while a Motion drag is active is never released, which would\n// leave the card's own tap interaction dead after its first swipe.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{Children,Fragment,cloneElement,isValidElement,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{animate,motion,useMotionValue}from\"framer-motion\";const SWIPE_DISTANCE=60;const SWIPE_VELOCITY=400;const SWIPE_SLOP=8;const SPRING={type:\"spring\",stiffness:320,damping:32};const MAX_VISIBLE_BEHIND=2;// Front card per stack label, so a stack that re-mounts (e.g. when a tap on a\n// card switches the surrounding component's variant) keeps showing that card\nconst savedFront=new Map;function flattenItems(node){if(Array.isArray(node))return node.flatMap(flattenItems);if(!/*#__PURE__*/isValidElement(node))return[];if(node.type===Fragment)return flattenItems(node.props.children);return[node];}// A connected Collection List arrives as one element. Its items are rendered by\n// a descendant that loads the CMS data and calls a function child. Rebuild that\n// chain (minus the list's own layout wrapper) with a function that passes the\n// rendered items to `render` instead of laying them out.\nfunction withCollectionItems(node,render){if(!/*#__PURE__*/isValidElement(node))return null;const props=node.props;if(typeof props.children===\"function\"&&props.query){const original=props.children;return /*#__PURE__*/cloneElement(node,{children:(...args)=>render(flattenItems(original(...args)))});}for(const child of Children.toArray(props.children)){const found=withCollectionItems(child,render);if(found)return /*#__PURE__*/cloneElement(node,{},found);}return null;}/**\n * CMS Card Stack\n *\n * @framerIntrinsicWidth 342\n * @framerIntrinsicHeight 640\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function CMSCardStack(props){const{slides,peek=14,scaleStep=.06,radius=20,showDots=true,dotColor=\"#08547A\",label=\"Cards\",cardRatio=0}=props;const settings={peek,scaleStep,radius,showDots,dotColor,label,cardRatio};const layers=Children.toArray(slides);const render=items=>/*#__PURE__*/_jsx(Stack,{items:items,...settings});let content=null;const list=layers.length===1?layers[0]:null;if(list&&/*#__PURE__*/isValidElement(list)){content=withCollectionItems(list.props.children,render);}if(!content){// Plain layers keep their canvas size, so stretch them to the stack's width\nconst cards=layers.filter(isValidElement).map(layer=>/*#__PURE__*/cloneElement(layer,{style:{...layer.props.style,width:\"100%\",height:\"100%\"}}));content=render(cards);}// Isolate so the cards' z-indexes only order them against each other and\n// never lift them above page elements such as a sticky header\nreturn /*#__PURE__*/_jsx(\"div\",{style:{...props.style,position:\"relative\",width:\"100%\",isolation:\"isolate\"},children:content});}function Stack(props){const{peek,scaleStep,radius,showDots,dotColor,label,cardRatio}=props;// Drop non-item output such as a hidden empty state\nconst keyed=props.items.filter(item=>item.key!=null);const items=keyed.length>0?keyed:props.items;const isStatic=useIsStaticRenderer();const[front,setFrontState]=useState(()=>savedFront.get(label)??0);function setFront(next){setFrontState(f=>{const value=typeof next===\"function\"?next(f):next;savedFront.set(label,value);return value;});}const[draggedIndex,setDraggedIndex]=useState(null);const dragX=useMotionValue(0);const gesture=useRef(null);const justSwiped=useRef(false);const count=items.length;if(count===0)return null;const current=front%count;const behind=Math.min(count-1,MAX_VISIBLE_BEHIND);function go(step){startTransition(()=>setFront(f=>((f+step)%count+count)%count));}function onPointerDown(e,index){if(isStatic||count<2||e.pointerType===\"mouse\"&&e.button!==0)return;gesture.current={id:e.pointerId,index,x:e.clientX,y:e.clientY,lastX:e.clientX,lastT:e.timeStamp,velocity:0,swiping:false};}function onPointerMove(e){const g=gesture.current;if(!g||e.pointerId!==g.id)return;const dx=e.clientX-g.x;const dy=e.clientY-g.y;if(!g.swiping){if(Math.abs(dx)<SWIPE_SLOP&&Math.abs(dy)<SWIPE_SLOP)return;if(Math.abs(dy)>Math.abs(dx)){// Vertical: let the page scroll\ngesture.current=null;return;}g.swiping=true;// Capturing moves the release off the card, so its tap is cancelled\ne.currentTarget.setPointerCapture(g.id);dragX.stop();setDraggedIndex(g.index);}const dt=e.timeStamp-g.lastT;if(dt>0)g.velocity=(e.clientX-g.lastX)/dt*1e3;g.lastX=e.clientX;g.lastT=e.timeStamp;dragX.set(dx*.9);}function onPointerEnd(e){const g=gesture.current;if(!g||e.pointerId!==g.id)return;gesture.current=null;if(!g.swiping)return;const offset=dragX.get();if(offset<-SWIPE_DISTANCE||g.velocity<-SWIPE_VELOCITY)go(1);else if(offset>SWIPE_DISTANCE||g.velocity>SWIPE_VELOCITY)go(-1);justSwiped.current=true;window.setTimeout(()=>justSwiped.current=false,50);animate(dragX,0,{...SPRING,onComplete:()=>setDraggedIndex(null)});}return /*#__PURE__*/_jsxs(\"section\",{\"aria-roledescription\":\"carousel\",\"aria-label\":label,\"data-card-stack\":\"\",style:{display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",gap:20},children:[/*#__PURE__*/_jsx(\"style\",{children:`[data-card-stack] img { -webkit-user-drag: none; user-drag: none; pointer-events: none; }`}),/*#__PURE__*/_jsx(\"div\",{tabIndex:0,onKeyDown:e=>{if(e.key===\"ArrowRight\")go(1);if(e.key===\"ArrowLeft\")go(-1);},style:{display:\"grid\",paddingRight:behind*peek,outline:\"none\"},children:items.map((item,index)=>{const depth=(index-current+count)%count;const isFront=depth===0;const visibleDepth=Math.min(depth,behind);const hidden=depth>behind;return /*#__PURE__*/_jsxs(motion.div,{\"aria-hidden\":!isFront,\"aria-roledescription\":\"slide\",\"aria-label\":`${index+1} of ${count}`,initial:false,animate:{x:visibleDepth*peek,scale:1-visibleDepth*scaleStep,opacity:hidden?0:1},transition:SPRING,onPointerDown:isFront?e=>onPointerDown(e,index):undefined,onPointerMove:isFront?onPointerMove:undefined,onPointerUp:isFront?onPointerEnd:undefined,onPointerCancel:isFront?onPointerEnd:undefined,// Photos are <img> elements, which the browser would otherwise\n// drag as a ghost image instead of letting the card swipe\nonDragStart:e=>e.preventDefault(),// Cancels the mouse's native drag and text selection so only the swipe runs\nonMouseDown:isFront&&count>1&&!isStatic?e=>e.preventDefault():undefined,onClickCapture:e=>{if(justSwiped.current){e.preventDefault();e.stopPropagation();}},onClick:isFront||hidden?undefined:()=>go(depth),style:{position:\"relative\",gridArea:\"1 / 1\",// Cards with no content height (e.g. photo cards) take their height from the width\naspectRatio:cardRatio>0?cardRatio:undefined,zIndex:count-depth,transformOrigin:\"right center\",borderRadius:radius,cursor:!isFront?\"pointer\":count<2||isStatic?\"auto\":index===draggedIndex?\"grabbing\":\"grab\",pointerEvents:hidden?\"none\":\"auto\",touchAction:\"pan-y\"},children:[/*#__PURE__*/_jsx(motion.div,{style:{height:\"100%\",x:index===draggedIndex?dragX:0,// Back cards only respond as a whole, to bring them forward\npointerEvents:isFront?\"auto\":\"none\",userSelect:\"none\",WebkitUserSelect:\"none\"},children:item}),/*#__PURE__*/_jsx(motion.div,{\"aria-hidden\":\"true\",initial:false,animate:{opacity:visibleDepth*.05},style:{position:\"absolute\",inset:0,borderRadius:radius,background:\"#000000\",pointerEvents:\"none\"}})]},item.key??index);})}),showDots&&count>1&&/*#__PURE__*/_jsx(\"div\",{role:\"tablist\",\"aria-label\":`Choose from ${label}`,style:{display:\"flex\",justifyContent:\"center\",gap:8},children:items.map((item,index)=>{const active=index===current;return /*#__PURE__*/_jsx(\"button\",{type:\"button\",role:\"tab\",\"aria-selected\":active,\"aria-label\":`Show ${index+1} of ${count}`,onClick:()=>startTransition(()=>setFront(index)),style:{width:active?20:8,height:8,padding:0,border:\"none\",borderRadius:999,background:dotColor,opacity:active?1:.25,cursor:\"pointer\",transition:\"width 0.3s ease, opacity 0.3s ease\"}},item.key??index);})})]});}addPropertyControls(CMSCardStack,{slides:{type:ControlType.Slot,title:\"Cards\",description:\"Connect a Collection List, or the card layers themselves.\"},peek:{type:ControlType.Number,title:\"Peek\",defaultValue:14,min:0,max:40,unit:\"px\"},scaleStep:{type:ControlType.Number,title:\"Shrink\",defaultValue:.06,min:0,max:.2,step:.01},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:20,min:0,max:48,unit:\"px\"},showDots:{type:ControlType.Boolean,title:\"Dots\",defaultValue:true},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#08547A\"},cardRatio:{type:ControlType.Number,title:\"Card Ratio\",defaultValue:0,min:0,max:3,step:.01,description:\"Width \\xf7 height of each card. 0 sizes cards to their content.\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Cards\",description:\"Read out by screen readers, e.g. Magazines.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CMSCardStack\",\"slots\":[\"slides\"],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicWidth\":\"342\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"640\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CMSCardStack.map"],"mappings":"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"}