{"version":3,"file":"PhotoSlideshow.CgFpzF5D.mjs","names":["useMemo","useRef","useState","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/Pu7WSmgUwVdk6RL4AvA4/8skHWXW9w003kyNE8FsP/PhotoSlideshow.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{animate,motion,useMotionValue}from\"framer-motion\";import{useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";// --- Image weight helpers -------------------------------------------------\n// Framer prepares several sizes of every photo. These pick a sensible one\n// instead of the multi-megabyte original. 2100px wide is about 2x the\n// largest tile on the site, so nothing looks softer on normal or retina screens.\nconst MAX_IMG_W=2100;function parseSrcSet(srcSet){if(!srcSet)return[];return srcSet.split(\",\").map(s=>s.trim()).filter(Boolean).map(s=>{const parts=s.split(/\\s+/);return{url:parts[0],w:parseInt(parts[1]||\"\",10)};}).filter(c=>c.url&&c.w>0).sort((a,b)=>a.w-b.w);}function cappedSrcSet(srcSet){const all=parseSrcSet(srcSet);if(!all.length)return srcSet;const kept=all.filter(c=>c.w<=MAX_IMG_W);return(kept.length?kept:[all[0]]).map(c=>c.url+\" \"+c.w+\"w\").join(\", \");}function safeSrc(src,srcSet){const all=parseSrcSet(srcSet);if(!all.length)return src;const kept=all.filter(c=>c.w<=MAX_IMG_W);return(kept.length?kept[kept.length-1]:all[0]).url;}function pickForWidth(src,srcSet,needW=1200){const all=parseSrcSet(srcSet);if(!all.length)return src;const kept=all.filter(c=>c.w<=MAX_IMG_W);const pool=kept.length?kept:[all[0]];return(pool.find(c=>c.w>=needW)||pool[pool.length-1]).url;}// Framer puts the photo's true pixel size in its URL, so proportions can be\n// known without downloading the picture.\nfunction ratioFromUrl(src){const m=src?/[?&]width=(\\d+)&(?:amp;)?height=(\\d+)/.exec(src):null;return m?Number(m[1])/Number(m[2]):null;}function SlideshowInner(props){const{images=[],mode=\"fit\",itemsVisible=1.2,gap=12,align=\"center\",autoplay=true,interval=5,duration=.9,pauseOnHover=true,draggable=true,radius=0,background=\"#000000\",saveData=false}=props;const isStatic=useIsStaticRenderer();const photos=useMemo(()=>(images||[]).filter(p=>p&&p.src),[images]);const n=photos.length;const rootRef=useRef(null);const[size,setSize]=useState({w:1200,h:600});useEffect(()=>{const el=rootRef.current;if(!el)return;const measure=()=>setSize({w:el.clientWidth||1,h:el.clientHeight||1});measure();const ro=new ResizeObserver(measure);ro.observe(el);return()=>ro.disconnect();},[]);// Natural proportions, read from each photo once it loads.\nconst[ratios,setRatios]=useState({});useEffect(()=>{let alive=true;photos.forEach(p=>{if(!p.src||ratios[p.src]||ratioFromUrl(p.src))return;const img=new Image;img.onload=()=>{if(!alive||!img.naturalWidth||!img.naturalHeight)return;setRatios(r=>({...r,[p.src]:img.naturalWidth/img.naturalHeight}));};img.src=pickForWidth(p.src,p.srcSet,512)||p.src;});return()=>{alive=false;};},[photos]);const slideWidth=useCallback(p=>{if(mode===\"fill\"){const k=Math.max(itemsVisible,1);return Math.max(1,(size.w-gap*(k-1))/k);}return Math.max(1,size.h*(ratios[p.src]||ratioFromUrl(p.src)||1.5));},[mode,itemsVisible,size,gap,ratios]);// Three copies of the list so the loop never runs out in either direction.\n// A single photo is shown once, still - repeating it would fake neighbours.\nconst track=useMemo(()=>n>1?[...photos,...photos,...photos]:photos,[photos,n]);const widths=useMemo(()=>track.map(slideWidth),[track,slideWidth]);const offsets=useMemo(()=>{const o=[];let acc=0;for(const w of widths){o.push(acc);acc+=w+gap;}return o;},[widths,gap]);const start=n>1?n:0;const[index,setIndex]=useState(start);useEffect(()=>setIndex(start),[start]);// Load-as-you-go (used on the archive): a row only fetches photos once it\n// is near the screen, and then only the photos around the one showing.\nconst[near,setNear]=useState(false);useEffect(()=>{const el=rootRef.current;if(!saveData||isStatic||!el||typeof IntersectionObserver===\"undefined\"){setNear(true);return;}const io=new IntersectionObserver(entries=>{if(entries.some(e=>e.isIntersecting)){setNear(true);io.disconnect();}},{rootMargin:\"1200px 0px 1200px 0px\"});io.observe(el);return()=>io.disconnect();},[saveData,isStatic]);const[loaded,setLoaded]=useState({});const targetX=useCallback(i=>{if(!widths.length)return 0;const lead=align===\"center\"?(size.w-widths[i])/2:0;return-offsets[i]+lead;},[widths,offsets,size.w,align]);// Load only the photos that are on screen, plus about one slide either side.\n// Works out from the real slide widths, so a phone (big slides, few visible)\n// fetches far less than a wide desktop.\nuseEffect(()=>{if(!saveData||!near||!n||!widths.length)return;const tx=targetX(index);const slack=Math.max(1,...widths)*.6;setLoaded(prev=>{const next={...prev};let changed=false;widths.forEach((w,i)=>{const left=offsets[i]+tx;if(left<size.w+slack&&left+w>-slack){const k=n>1?i%n:0;if(!next[k]){next[k]=true;changed=true;}}});return changed?next:prev;});},[saveData,near,index,n,widths,offsets,size.w,targetX]);const x=useMotionValue(0);const busy=useRef(false);// Keep the track in place on resize or when photos change.\nuseEffect(()=>{if(!busy.current)x.set(targetX(index));},[targetX]);const go=useCallback(next=>{if(!n)return;busy.current=true;setIndex(next);animate(x,targetX(next),{duration,ease:[.17,0,.12,1]}).then(()=>{let settled=next;if(next>=2*n)settled=next-n;if(next<n)settled=next+n;if(settled!==next){setIndex(settled);x.set(targetX(settled));}busy.current=false;});},[n,x,targetX,duration]);const[hovered,setHovered]=useState(false);useEffect(()=>{if(isStatic||!autoplay||n<2)return;if(pauseOnHover&&hovered)return;const t=setInterval(()=>{if(!busy.current&&document.visibilityState===\"visible\")go(index+1);},Math.max(interval,1)*1e3);return()=>clearInterval(t);},[isStatic,autoplay,n,hovered,pauseOnHover,interval,index,go]);const root={position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",background};if(!n){// Hint in the editor only - an empty slideshow shows nothing on the live site.\nif(!isStatic)return /*#__PURE__*/_jsx(\"div\",{style:{...root,background:\"transparent\"}});return /*#__PURE__*/_jsx(\"div\",{style:{...root,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#777\",fontSize:13},children:\"Add photos in the panel\"});}const slides=track.map((p,i)=>/*#__PURE__*/_jsx(\"div\",{style:{flex:\"0 0 auto\",width:widths[i],height:\"100%\",borderRadius:radius,overflow:\"hidden\",background},children:(!saveData||loaded[n>1?i%n:0])&&/*#__PURE__*/_jsx(\"img\",{src:safeSrc(p.src,p.srcSet),srcSet:cappedSrcSet(p.srcSet),sizes:Math.ceil(widths[i])+\"px\",alt:p.alt||\"\",decoding:\"async\",draggable:false,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",userSelect:\"none\",pointerEvents:\"none\"}})},i));const trackStyle={display:\"flex\",gap,height:\"100%\",alignItems:\"stretch\"};if(isStatic){return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:root,children:/*#__PURE__*/_jsx(\"div\",{style:{...trackStyle,transform:`translateX(${targetX(start)}px)`},children:slides})});}return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:root,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),children:/*#__PURE__*/_jsx(motion.div,{style:{...trackStyle,x,cursor:draggable?\"grab\":\"default\",touchAction:\"pan-y\"},drag:draggable&&n>1?\"x\":false,dragMomentum:false,dragElastic:.15,onDragStart:()=>busy.current=true,onDragEnd:(_,info)=>{busy.current=false;const swipe=info.offset.x+info.velocity.x*.2;if(swipe<-60)go(index+1);else if(swipe>60)go(index-1);else go(index);},whileTap:draggable?{cursor:\"grabbing\"}:undefined,children:slides})});}// --- Click-to-open mode ----------------------------------------------------\n// One cover photo per gallery. Nothing else is downloaded until a visitor\n// clicks it, then the photos open in a full-screen viewer one at a time.\nconst STEPS=[256,512,1024,2048,4096];const isFramerImage=u=>!!u&&/framerusercontent\\.com\\/images\\//.test(u);function baseOf(url){return url.replace(/([?&])scale-down-to=\\d+&?/,\"$1\").replace(/[?&]$/,\"\");}function scaledTo(src,n){if(!src)return src;if(!isFramerImage(src))return src;const base=baseOf(src);return base+(base.indexOf(\"?\")>=0?\"&\":\"?\")+\"scale-down-to=\"+n;}const overlayButton={position:\"absolute\",background:\"rgba(0,0,0,0.55)\",color:\"#fff\",border:\"1px solid rgba(255,255,255,0.35)\",width:44,height:44,borderRadius:22,fontSize:22,lineHeight:\"40px\",textAlign:\"center\",cursor:\"pointer\",padding:0,fontFamily:\"inherit\"};function Viewer({photos,start,onClose}){const n=photos.length;const[idx,setIdx]=useState(start);const touchX=useRef(null);const big=typeof window!==\"undefined\"&&window.innerWidth<810?1024:2048;const urlOf=i=>scaledTo(photos[(i%n+n)%n].src,big);const next=useCallback(()=>setIdx(i=>(i+1)%n),[n]);const prev=useCallback(()=>setIdx(i=>(i-1+n)%n),[n]);useEffect(()=>{const onKey=e=>{if(e.key===\"Escape\")onClose();else if(e.key===\"ArrowRight\")next();else if(e.key===\"ArrowLeft\")prev();};window.addEventListener(\"keydown\",onKey);const html=document.documentElement;const before=html.style.overflow;html.style.overflow=\"hidden\";return()=>{window.removeEventListener(\"keydown\",onKey);html.style.overflow=before;};},[onClose,next,prev]);// Fetch the neighbours so flicking through feels instant.\nuseEffect(()=>{if(n<2)return;[idx+1,idx-1].forEach(j=>{const u=urlOf(j);if(u){const im=new Image;im.src=u;}});},[idx,n]);return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{\"data-lenis-prevent\":\"\",role:\"dialog\",\"aria-modal\":\"true\",onClick:onClose,onTouchStart:e=>touchX.current=e.touches[0].clientX,onTouchEnd:e=>{if(touchX.current===null||n<2)return;const dx=e.changedTouches[0].clientX-touchX.current;touchX.current=null;if(dx<-50)next();else if(dx>50)prev();},style:{position:\"fixed\",inset:0,zIndex:2147483e3,background:\"rgba(0,0,0,0.95)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",touchAction:\"pan-y\"},children:[/*#__PURE__*/_jsx(\"img\",{src:urlOf(idx),alt:photos[idx].alt||\"\",draggable:false,onClick:e=>e.stopPropagation(),style:{maxWidth:\"94vw\",maxHeight:\"84vh\",objectFit:\"contain\",display:\"block\"}},idx),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Close\",onClick:e=>{e.stopPropagation();onClose();},style:{...overlayButton,top:16,right:16},children:\"\\xd7\"}),n>1&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Previous photo\",onClick:e=>{e.stopPropagation();prev();},style:{...overlayButton,left:12,top:\"50%\",marginTop:-22},children:\"‹\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Next photo\",onClick:e=>{e.stopPropagation();next();},style:{...overlayButton,right:12,top:\"50%\",marginTop:-22},children:\"›\"}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",bottom:18,left:0,right:0,textAlign:\"center\",color:\"rgba(255,255,255,0.7)\",fontSize:12,letterSpacing:\"0.12em\",pointerEvents:\"none\"},children:[idx+1,\" / \",n]})]})]}),document.body);}function PhotoCover(props){const{images=[],radius=0,background=\"#000000\"}=props;const isStatic=useIsStaticRenderer();const photos=useMemo(()=>(images||[]).filter(p=>p&&p.src),[images]);const n=photos.length;const[open,setOpen]=useState(false);const close=useCallback(()=>setOpen(false),[]);const cover=photos[0];const coverPhone=cover?scaledTo(cover.src,512):undefined;const coverDesk=cover?scaledTo(cover.src,1024):undefined;return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",background,borderRadius:radius},children:[cover?/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":n>1?\"Open gallery, \"+n+\" photos\":\"Open photo\",onClick:()=>!isStatic&&setOpen(true),style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",padding:0,margin:0,border:0,background:\"none\",cursor:\"pointer\",display:\"block\"},children:/*#__PURE__*/_jsxs(\"picture\",{children:[coverPhone&&coverPhone!==coverDesk&&/*#__PURE__*/_jsx(\"source\",{media:\"(max-width: 809px)\",srcSet:coverPhone}),/*#__PURE__*/_jsx(\"img\",{src:coverDesk,alt:cover.alt||\"\",draggable:false,decoding:\"async\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:\"center\",display:\"block\"}})]})}):/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"grid\",placeItems:\"center\",color:\"#666\",fontSize:12},children:\"Add photos\"}),n>1&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:12,bottom:12,padding:\"6px 10px\",background:\"rgba(0,0,0,0.6)\",color:\"#fff\",fontSize:11,letterSpacing:\"0.12em\",textTransform:\"uppercase\",pointerEvents:\"none\"},children:[n,\" photos +\"]}),open&&!isStatic&&typeof document!==\"undefined\"?/*#__PURE__*/_jsx(Viewer,{photos:photos,start:0,onClose:close}):null]});}// --------------------------------------------------------------------------\n/**\n * Reusable photo slideshow. Turn on \"Click to open\" to show a single cover\n * photo that opens the rest in a full-screen viewer (nothing else downloads\n * until it is clicked).\n *\n * Photos are a plain list in the panel, so each\n * copy on the site can carry its own set.\n *\n * \"Photo shape\" mode sizes every slide to its own photo at the height of the\n * component - portraits narrow, landscapes wide - so nothing is cropped and\n * there is no letterboxing, only the gap between photos.\n *\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 600\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function PhotoSlideshow(props){return props.clickToOpen?/*#__PURE__*/_jsx(PhotoCover,{...props}):/*#__PURE__*/_jsx(SlideshowInner,{...props});}addPropertyControls(PhotoSlideshow,{images:{type:ControlType.Array,title:\"Photos\",maxCount:60,control:{type:ControlType.ResponsiveImage}},mode:{type:ControlType.Enum,title:\"Slides\",options:[\"fit\",\"fill\"],optionTitles:[\"Photo shape\",\"Equal width\"],defaultValue:\"fit\",displaySegmentedControl:true,description:\"Photo shape never crops. Equal width crops to fill.\"},itemsVisible:{type:ControlType.Number,title:\"Across\",defaultValue:1.2,min:1,max:6,step:.05,hidden:p=>p.mode!==\"fill\"},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:12,min:0,max:80,step:1,unit:\"px\"},align:{type:ControlType.Enum,title:\"Align\",options:[\"center\",\"start\"],optionTitles:[\"Centre\",\"Left\"],defaultValue:\"center\",displaySegmentedControl:true},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true},clickToOpen:{type:ControlType.Boolean,title:\"Click to open\",defaultValue:false,description:\"Shows one cover photo. Clicking it opens all the photos full screen. Nothing else downloads until then.\"},saveData:{type:ControlType.Boolean,title:\"Load as you go\",defaultValue:false,description:\"Loads the row only when it nears the screen, and only the photos around the one showing.\"},interval:{type:ControlType.Number,title:\"Every\",defaultValue:5,min:1,max:30,step:.5,unit:\"s\",hidden:p=>!p.autoplay},pauseOnHover:{type:ControlType.Boolean,title:\"Pause on hover\",defaultValue:true,hidden:p=>!p.autoplay},duration:{type:ControlType.Number,title:\"Speed\",defaultValue:.9,min:.2,max:3,step:.1,unit:\"s\"},draggable:{type:ControlType.Boolean,title:\"Swipe\",defaultValue:true},radius:{type:ControlType.Number,title:\"Corners\",defaultValue:0,min:0,max:40,step:1,unit:\"px\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PhotoSlideshow\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"600\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"1200\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PhotoSlideshow.map"],"mappings":"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"}