{"version":3,"file":"ProjectImageStack.B5_e7PTv.mjs","names":["useState","useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/BjUXoTfuFM5KzTlolHrx/M3088hTOREnLTEHBEuZW/ProjectImageStack.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useCallback,useMemo,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function ProjectImageStack(props){const{mode=\"slideshow\",imageUrls=\"\",images=[]}=props;const[activeIndex,setActiveIndex]=useState(0);const startXRef=useRef(null);const dragThreshold=36;const validImages=useMemo(()=>images.filter(image=>image&&typeof image.src===\"string\"&&image.src.trim()),[images]);const parsedUrlImages=useMemo(()=>(imageUrls||\"\").split(\"|\").map(value=>value.trim()).filter(value=>value.length>0).map(src=>({src,srcSet:undefined,alt:\"\"})),[imageUrls]);const slideImages=parsedUrlImages.length>0?parsedUrlImages:validImages;const total=slideImages.length;const goNext=useCallback(()=>{if(total<=1)return;startTransition(()=>{setActiveIndex(prev=>(prev+1)%total);});},[total]);const goPrev=useCallback(()=>{if(total<=1)return;startTransition(()=>{setActiveIndex(prev=>(prev-1+total)%total);});},[total]);const onPointerDown=useCallback(event=>{startXRef.current=event.clientX;},[]);const onPointerUp=useCallback(event=>{const startX=startXRef.current;startXRef.current=null;if(startX===null||total<=1)return;const deltaX=event.clientX-startX;if(Math.abs(deltaX)>=dragThreshold){if(deltaX<0)goNext();else goPrev();return;}const bounds=event.currentTarget.getBoundingClientRect();const isLeftHalf=event.clientX<bounds.left+bounds.width/2;if(isLeftHalf)goPrev();else goNext();},[goNext,goPrev,total]);const onPointerCancel=useCallback(()=>{startXRef.current=null;},[]);const onKeyDown=useCallback(event=>{if(total<=1)return;if(event.key===\"ArrowRight\"){event.preventDefault();goNext();}else if(event.key===\"ArrowLeft\"){event.preventDefault();goPrev();}else if(event.key===\"Enter\"||event.key===\" \"){event.preventDefault();goNext();}},[goNext,goPrev,total]);const activeImage=total>0?slideImages[(activeIndex%total+total)%total]:null;const isSlideshow=mode===\"slideshow\";return /*#__PURE__*/_jsx(\"section\",{\"aria-label\":\"Project image stack\",role:isSlideshow?\"button\":undefined,\"aria-roledescription\":isSlideshow?\"slideshow\":undefined,\"aria-live\":isSlideshow?\"polite\":undefined,tabIndex:isSlideshow?0:undefined,onPointerDown:isSlideshow?onPointerDown:undefined,onPointerUp:isSlideshow?onPointerUp:undefined,onPointerCancel:isSlideshow?onPointerCancel:undefined,onKeyDown:isSlideshow?onKeyDown:undefined,style:{position:\"relative\",width:\"100%\",height:\"auto\",display:\"flex\",flexDirection:\"column\",alignItems:\"stretch\",gap:isSlideshow?0:10,cursor:isSlideshow&&total>1?\"pointer\":\"default\",touchAction:\"pan-y\",outline:\"none\"},children:isSlideshow?activeImage?/*#__PURE__*/_jsx(\"img\",{src:activeImage.src,srcSet:activeImage.srcSet,alt:activeImage.alt||\"\",style:{width:\"100%\",aspectRatio:\"4 / 5\",display:\"block\",objectFit:\"cover\",borderRadius:2,userSelect:\"none\"}},`${activeImage.src}-${activeIndex}`):null:slideImages.map((image,index)=>/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,alt:image.alt||\"\",style:{width:\"100%\",height:\"auto\",display:\"block\",objectFit:\"cover\",borderRadius:2,userSelect:\"none\"}},`${image.src}-${index}`))});}addPropertyControls(ProjectImageStack,{mode:{type:ControlType.Enum,title:\"Mode\",options:[\"slideshow\",\"stack\"],optionTitles:[\"Slideshow\",\"Stack\"],defaultValue:\"slideshow\"},imageUrls:{type:ControlType.String,title:\"Image URLs\",defaultValue:\"\",placeholder:\"https://...|https://...|https://...\",displayTextArea:true},images:{type:ControlType.Array,title:\"Images\",control:{type:ControlType.ResponsiveImage},defaultValue:[],maxCount:50}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProjectImageStack\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProjectImageStack.map"],"mappings":"sMAGG,SAAwB,EAAkB,EAAM,CAAC,GAAK,CAAC,OAAK,YAAY,YAAU,GAAG,SAAO,CAAC,GAAG,EAAW,CAAC,EAAY,GAAgBA,EAAS,CAAC,EAAQ,EAAUC,EAAO,IAAI,EAA+B,EAAYC,MAAY,EAAO,OAAO,GAAO,GAAO,OAAO,EAAM,KAAM,UAAU,EAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAM,CAAC,EAAQ,EAAgBA,OAAa,GAAW,GAAA,CAAI,MAAM,GAAG,CAAC,CAAC,IAAI,GAAO,EAAM,KAAK,CAAC,CAAC,CAAC,OAAO,GAAO,EAAM,OAAO,CAAC,CAAC,CAAC,IAAI,IAAM,CAAC,MAAI,OAAO,IAAA,GAAU,IAAI,EAAE,EAAE,EAAE,CAAC,CAAS,CAAC,EAAQ,EAAY,EAAgB,OAAO,EAAE,EAAgB,EAAkB,EAAM,EAAY,OAAa,EAAOC,MAAgB,CAAI,GAAO,GAAS,MAAoB,CAAC,EAAe,IAAO,EAAK,GAAG,CAAK,CAAE,CAAC,CAAE,EAAE,CAAC,CAAK,CAAC,EAAQ,EAAOA,MAAgB,CAAI,GAAO,GAAS,MAAoB,CAAC,EAAe,IAAO,EAAK,EAAE,GAAO,CAAK,CAAE,CAAC,CAAE,EAAE,CAAC,CAAK,CAAC,EAAQ,EAAcA,EAAY,GAAO,CAAC,EAAU,QAAQ,EAAM,OAAQ,EAAE,CAAC,CAAC,EAAQ,EAAYA,EAAY,GAAO,CAAC,IAAM,EAAO,EAAU,QAA+B,GAAvB,EAAU,QAAQ,KAAQ,IAAS,MAAM,GAAO,EAAE,OAAO,IAAM,EAAO,EAAM,QAAQ,EAAO,GAAG,KAAK,IAAI,CAAM,GAAG,GAAc,CAAI,EAAO,EAAE,EAAO,EAAO,EAAO,EAAE,MAAO,CAAC,IAAM,EAAO,EAAM,cAAc,sBAAsB,EAAmB,EAAM,QAAQ,EAAO,KAAK,EAAO,MAAM,EAAgB,EAAO,EAAO,EAAO,CAAE,EAAE,CAAC,EAAO,EAAO,CAAK,CAAC,EAAQ,EAAgBA,MAAgB,CAAC,EAAU,QAAQ,IAAK,EAAE,CAAC,CAAC,EAAQ,EAAUA,EAAY,GAAO,CAAI,GAAO,IAAY,EAAM,MAAM,cAAc,EAAM,eAAe,EAAE,EAAO,GAAW,EAAM,MAAM,aAAa,EAAM,eAAe,EAAE,EAAO,IAAW,EAAM,MAAM,SAAS,EAAM,MAAM,OAAK,EAAM,eAAe,EAAE,EAAO,GAAG,EAAE,CAAC,EAAO,EAAO,CAAK,CAAC,EAAQ,EAAY,EAAM,EAAE,GAAa,EAAY,EAAM,GAAO,GAAO,KAAW,EAAY,IAAO,YAAY,OAAoB,EAAK,UAAU,CAAC,aAAa,sBAAsB,KAAK,EAAY,SAAS,IAAA,GAAU,uBAAuB,EAAY,YAAY,IAAA,GAAU,YAAY,EAAY,SAAS,IAAA,GAAU,SAAS,EAAY,EAAE,IAAA,GAAU,cAAc,EAAY,EAAc,IAAA,GAAU,YAAY,EAAY,EAAY,IAAA,GAAU,gBAAgB,EAAY,EAAgB,IAAA,GAAU,UAAU,EAAY,EAAU,IAAA,GAAU,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,cAAc,SAAS,WAAW,UAAU,IAAI,EAAY,EAAE,GAAG,OAAO,GAAa,EAAM,EAAE,UAAU,UAAU,YAAY,QAAQ,QAAQ,MAAM,EAAE,SAAS,EAAY,EAAyB,EAAK,MAAM,CAAC,IAAI,EAAY,IAAI,OAAO,EAAY,OAAO,IAAI,EAAY,KAAK,GAAG,MAAM,CAAC,MAAM,OAAO,YAAY,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,aAAa,EAAE,WAAW,MAAM,CAAC,EAAE,GAAG,EAAY,IAAI,GAAG,GAAa,EAAE,KAAK,EAAY,KAAK,EAAM,IAAqB,EAAK,MAAM,CAAC,IAAI,EAAM,IAAI,OAAO,EAAM,OAAO,IAAI,EAAM,KAAK,GAAG,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,QAAQ,QAAQ,UAAU,QAAQ,aAAa,EAAE,WAAW,MAAM,CAAC,EAAE,GAAG,EAAM,IAAI,GAAG,GAAO,CAAC,CAAC,CAAC,CAAE,iBAH/2F,IAAuE,IAAoD,EAGqvF,EAAoB,EAAkB,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,YAAY,OAAO,EAAE,aAAa,CAAC,YAAY,OAAO,EAAE,aAAa,WAAW,EAAE,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,YAAY,sCAAsC,gBAAgB,EAAI,EAAE,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,SAAS,QAAQ,CAAC,KAAK,EAAY,eAAe,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC"}