{"version":3,"file":"PhotoSlideshow.TKFGGGEq.mjs","names":["useMemo","useRef","useState","useCallback","_Fragment","__esmMin","init_ssg_sandbox_shims","ne","_e","Ha","de","init_jsx_runtime","pe","init_npm_react_dom_18_3_1","c","p","init_npm_react_18_3_1","ce","window","motion","useMotionValue","animate","init_framer_motion_DhsWWWsN","init_framer_BL70qLPA","useIsStaticRenderer","addPropertyControls","ControlType","parseSrcSet","srcSet","s","parts","a","b","cappedSrcSet","all","kept","MAX_IMG_W","safeSrc","src","pickForWidth","pool","needW","ratioFromUrl","m","SlideshowInner","props","isStatic","photos","images","n","rootRef","size","setSize","el","measure","ro","ratios","setRatios","alive","img","r","slideWidth","mode","k","itemsVisible","gap","track","widths","offsets","o","acc","w","start","index","setIndex","near","setNear","saveData","io","entries","loaded","setLoaded","targetX","lead","align","i","tx","slack","next","prev","changed","left","x","busy","go","settled","duration","hovered","setHovered","autoplay","pauseOnHover","t","interval","root","slides","radius","trackStyle","draggable","swipe","info","baseOf","url","scaledTo","isFramerImage","base","Viewer","idx","setIdx","touchX","big","urlOf","onKey","onClose","html","before","u","j","im","dx","overlayButton","l","PhotoCover","open","setOpen","close","cover","coverPhone","coverDesk","PhotoSlideshow","init_PhotoSlideshow"],"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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"}