{"version":3,"file":"CmsFilterBentoGrid.CN8O-jhP.mjs","names":["p","useId","useRef","useMemo","useState","c","useCallback","_Fragment","useLayoutEffect","useEffect"],"sources":["https:/framerusercontent.com/modules/mXRxxBwcbkicQpdpmmyC/nBjrB1OumMFDFXbEmfGP/CmsFilterBentoGrid.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";import{createPortal}from\"react-dom\";import{useState,useEffect,useLayoutEffect,useMemo,useCallback,useRef,useId}from\"react\";/*\n * CMS Bento Gallery\n *\n * A bento (or even) image grid, capped at Max Rows (3 by default), with a\n * category filter, an auto shuffle that walks through every image, and a\n * viewer. Source picks where photos come from: Manual uses the Images list,\n * CMS uses a Collection List connected to the gallery's Feed slot. Each item needs an\n * image; text layers named Tag, Category and Focus are read when present.\n * (Lists built with the older CmsBentoSource companion still work.)\n *\n * STRUCTURE\n * The default export picks a branch with useIsStaticRenderer().\n * - CanvasGallery (canvas, thumbnails, export): plain divs and imgs, the grid\n *   at rest. No motion, transitions, keyframes, timers or observers. It reads\n *   its own Feed slot once after render.\n * - SiteGallery: everything interactive. The shuffle clock, preloading and\n *   aspect probing run only while useActive() reports the gallery near the\n *   viewport on a visible page; before the first report they stay off.\n * Data parsing, capacity, row planning and the CSS builder are plain\n * functions used by both; markup is written separately for each.\n *\n * RESPONSIVE\n * Tiers come from the gallery's own width (container queries in CSS, a\n * ResizeObserver on the root in JS), not from the viewport:\n *   >= DESKTOP_MIN  desktop: bento, or Even: Columns x Max Rows\n *   >= TABLET_MIN   tablet: bento, or Even: Cols Tablet\n *   <  TABLET_MIN   mobile: bento, or Even (or Bento on Mobile off): Cols Mobile\n * Every tier shows whole rows and at most Max Rows of them. Bento rows get\n * random shapes from bentoPattern() (seeded: the canvas and first live render\n * match, and each shuffle re-rolls). Rules keep it from looking broken: no\n * repeated row shape back to back, one full-width row at most on desktop and\n * tablet, and no three-across rows on phones. A small category fills as\n * many rows as it needs, so filtering never flips the layout. The row plan follows the measured tier, so it is rebuilt on resize. Set every control on one breakpoint and create no\n * per-breakpoint overrides.\n *\n * HEIGHT\n * Fit: each row is Row Height tall. A Fixed, Fill or viewport height on the\n * layer (Framer passes height 100%) switches to fill mode: the filter bar keeps\n * its size and the rows share the rest equally, down to 60% of Row Height;\n * below that the gallery grows past the frame rather than squashing.\n *\n * TRUE SHAPE + DEPTH OF FIELD\n * Desktop bento rows are separate two-track grids stacked in a fixed-height\n * column. On hover the tile morphs toward its photo's own aspect ratio (read\n * from the loaded image) at Shape Size times its resting area, clamped so\n * every other tile stays usable; the rest of the bento makes room. Track\n * sizes are worked out in pixels and handed over as fr values so they\n * transition, and the gallery's outer size never changes. Depth of Field\n * dims the other tiles and Greyscale drains their colour. Mouse and keyboard focus only;\n * True Shape is off under reduced motion.\n *\n * SHUFFLE\n * The visible window advances by one screenful every interval until every\n * image has been shown, then keeps cycling for Passes full passes (0 means\n * forever). Hovering the grid, keyboard focus inside it, or an open viewer\n * pauses the clock; it resumes with the time that was left.\n *\n * BANDWIDTH\n * Images use srcSet when Framer provides one. Without it, sized() asks the\n * host for a scaled copy (framerusercontent / Drive). Orientation probing\n * loads a PROBE_W px copy and aborts if the host ignored the resize.\n *\n * FOCUS\n * Focus X / Focus Y set the default crop. A per-photo \"Focus\" value from the\n * CMS (e.g. \"50 20\") overrides both for that photo only.\n */const ROWS_LIMIT=6;const WIDE_SPAN=4;const DESKTOP_MIN=960;const TABLET_MIN=600;const VIEWER_Z=2147483e3;// System sans until the Font control picks a family. The viewer is portalled\n// to <body>, outside any text styles the page sets.\nconst FALLBACK_FONT=\"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\";const MIN_RESUME_MS=60;// Longest a swap waits for the next photos to finish loading.\nconst SWAP_WAIT_MAX=3e3;const PROBE_W=16;const PROBE_SANITY_W=64;const PROBE_MAX=60;const PORTRAIT_MAX_RATIO=.95;const TILE_W=1024;const VIEWER_W=2048;// Sample photos so the gallery previews out of the box in Manual mode, with\n// enough images and categories to show the bento, filter and shuffle.\nconst SAMPLE_PHOTOS=[// [image id, tag, category, alt, focus]\n[\"yGJCue9mz8NRpIwDtVepOjAOeo8\",\"Red filter\",\"Art\",\"A man's face through a red filter, being photographed by a camera\",\"\"],[\"JCOAZNKY4h3mIPN1DitXlndOQ\",\"Shared screen\",\"People\",\"Two smiling women looking at their phones\",\"\"],[\"VRHtGJ4imyhDJyB5nMBIMLDlnQ\",\"City walk\",\"People\",\"A person in a black blazer and denim shirt using a smartphone on a street\",\"\"],[\"LF4skrNP0woqEzjejLOku0SB4\",\"Story time\",\"People\",\"Three children reading together on a sea of green tulle\",\"\"],[\"5tP1d9OFSAUqwJwbLsMa2smCLo\",\"Orange coup\\xe9\",\"Still Life\",\"The rear of an orange vintage sports car on gravel\",\"\"],[\"G2rVy4QnTjsoz66QMnji0Nsr1Y\",\"Leaf study\",\"Art\",\"A man in a lilac vest holding a large leaf against a concrete wall\",\"\"],[\"QeyC30ZOUJB10umBi1vXjURCfvk\",\"Headline\",\"Art\",\"A man in a suit holding a newspaper over his face against a teal sky\",\"\"],[\"I8qP8zWGrWJOC4VKhpGplHWM4\",\"Three pours\",\"Still Life\",\"Hands holding three iced drinks garnished with dried citrus on a wooden table\",\"\"],[\"97ILKB3DC6w9dh8pLIar6aqre5w\",\"Red camera\",\"Still Life\",\"A red film camera on a plain white surface\",\"\"],[\"Mwn5He2o3UA0ghoYop412Iwup8\",\"Wrapped citrus\",\"Still Life\",\"An orange wrapped in purple tissue paper on a dark blue surface\",\"\"]];const SAMPLE=SAMPLE_PHOTOS.map(([id,tag,category,alt,focal])=>({image:{src:`https://framerusercontent.com/images/${id}.jpg`,alt},alt,tag,category,focal,link:\"\"}));const DEFAULTS={source:\"manual\",images:SAMPLE,variety:\"bento\",maxRows:3,bentoMobile:true,columns:4,columnsTablet:3,columnsMobile:2,gap:12,rowHeight:200,rowHeightTablet:180,rowHeightMobile:200,radius:16,hoverZoom:1.02,trueShape:true,shapeSize:1.2,depthOfField:.5,greyscale:1,matchOrientation:true,focalX:50,focalY:50,showTags:true,tagPosition:\"Bottom Left\",tagBg:\"rgba(16, 16, 18, 0.55)\",tagColor:\"rgb(255, 255, 255)\",showOpenIcon:true,font:undefined,tileAction:\"viewer\",newTab:true,viewerBackdrop:\"rgba(10, 10, 12, 0.92)\",viewerInk:\"rgb(255, 255, 255)\",viewerCaption:true,shuffleEnabled:true,shuffleInterval:8,passes:3,showFilter:true,allLabel:\"All\",hideCategories:\"\",// Empty colours follow the Theme; a value set in the panel overrides it.\nchipBg:\"\",chipText:\"\",chipActiveBg:\"\",chipActiveText:\"\",showCounts:true,focusRing:\"\",theme:\"light\"};// Panel groups arrive as nested objects; the component reads flat props.\nconst GROUPS=[\"responsive\",\"placement\",\"hover\",\"labels\",\"viewer\",\"shuffle\",\"filterStyle\"];function withDefaults(props){const p={...DEFAULTS};const take=source=>{for(const key of Object.keys(source)){const v=source[key];if(v!==undefined&&v!==null&&!GROUPS.includes(key))p[key]=v;}};const raw=props;take(raw);for(const g of GROUPS){const v=raw[g];if(v&&typeof v===\"object\")take(v);}return cssSafe(p);}// Every prop that reaches the generated stylesheet is constrained here, so\n// the CSS injected by buildCss() only ever holds trusted values: numbers are\n// clamped to sensible ranges, enums fall back to a known option, and colours\n// may only use characters a CSS colour needs. Nothing that could end a rule\n// or open markup (; { } < > quotes backslash) or load a resource (url())\n// gets through; an invalid value falls back to the default.\nfunction cssNum(v,fallback,lo,hi){const n=typeof v===\"number\"?v:parseFloat(String(v));return Number.isFinite(n)?Math.min(hi,Math.max(lo,n)):fallback;}function cssInt(v,fallback,lo,hi){return Math.round(cssNum(v,fallback,lo,hi));}const SAFE_COLOR=/^[#a-z0-9(),.%\\s/-]+$/i;function cssColor(v,fallback){// Framer appends a comment naming the colour style, e.g.\n// var(--token-x, rgb(0, 0, 0)) /* {\"name\":\"Dark\"} */; drop it first.\nconst c=typeof v===\"string\"?v.replace(/\\/\\*[\\s\\S]*?\\*\\//g,\"\").trim():\"\";return c&&c.length<=160&&SAFE_COLOR.test(c)&&!/url\\s*\\(/i.test(c)?c:fallback;}function cssSafe(p){const d=DEFAULTS;return{...p,variety:p.variety===\"even\"?\"even\":\"bento\",theme:p.theme===\"dark\"?\"dark\":\"light\",maxRows:cssInt(p.maxRows,d.maxRows,1,ROWS_LIMIT),columns:cssInt(p.columns,d.columns,1,12),columnsTablet:cssInt(p.columnsTablet,d.columnsTablet,1,12),columnsMobile:cssInt(p.columnsMobile,d.columnsMobile,1,12),rowHeight:cssNum(p.rowHeight,d.rowHeight,40,2e3),rowHeightTablet:cssNum(p.rowHeightTablet,d.rowHeightTablet,40,2e3),rowHeightMobile:cssNum(p.rowHeightMobile,d.rowHeightMobile,40,2e3),gap:cssNum(p.gap,d.gap,0,200),radius:cssNum(p.radius,d.radius,0,500),focalX:cssNum(p.focalX,d.focalX,0,100),focalY:cssNum(p.focalY,d.focalY,0,100),hoverZoom:cssNum(p.hoverZoom,d.hoverZoom,1,2),shapeSize:cssNum(p.shapeSize,d.shapeSize,1,2.5),depthOfField:cssNum(p.depthOfField,d.depthOfField,0,1),greyscale:cssNum(p.greyscale,d.greyscale,0,1),focusRing:cssColor(p.focusRing,d.focusRing),chipBg:cssColor(p.chipBg,d.chipBg),chipText:cssColor(p.chipText,d.chipText),chipActiveBg:cssColor(p.chipActiveBg,d.chipActiveBg),chipActiveText:cssColor(p.chipActiveText,d.chipActiveText),viewerInk:cssColor(p.viewerInk,d.viewerInk),viewerBackdrop:cssColor(p.viewerBackdrop,d.viewerBackdrop),tagBg:cssColor(p.tagBg,d.tagBg),tagColor:cssColor(p.tagColor,d.tagColor)};}const useIsoLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;/* ------------------------------------------------------------------ *//* Pure helpers: data                                                  *//* ------------------------------------------------------------------ */function clean(v){return typeof v===\"string\"?v.trim():\"\";}function toImage(v){if(typeof v===\"string\")return{src:v.trim(),srcSet:\"\",alt:\"\"};if(v&&typeof v===\"object\"){const o=v;return{src:clean(o.src)||clean(o.url),srcSet:clean(o.srcSet),alt:clean(o.alt)||clean(o.altText)};}return{src:\"\",srcSet:\"\",alt:\"\"};}// Manual mode. An empty Images list shows the sample photos as placeholders,\n// so a freshly dropped gallery is never blank.\nfunction manualItems(list){const own=itemsFromArray(list);return own.length?own:itemsFromArray(SAMPLE);}function itemsFromArray(list){const out=[];(Array.isArray(list)?list:[]).forEach((raw,i)=>{if(!raw)return;const img=toImage(raw.image);if(!img.src)return;const tag=clean(raw.tag);const category=clean(raw.category);out.push({src:img.src,srcSet:img.srcSet,alt:clean(raw.alt)||img.alt||tag||category||`Image ${i+1}`,tag,category,focal:clean(raw.focal),link:clean(raw.link)});});return out;}// Reads the gallery's own hidden Feed slot container; nothing outside the\n// component is read. Uses CmsBentoSource nodes when the list has them,\n// otherwise each item's own layers.\nfunction readFeed(root){return root.querySelector(\"[data-bento-node]\")?itemsFromNodes(root):itemsFromLayers(root);}function layerText(item,name){const el=item.querySelector(`[data-framer-name=\"${name}\" i]`);return el?clean(el.textContent||\"\"):\"\";}// A plain Collection List: each item's first image is the photo, and text\n// layers named Tag, Category and Focus (any case) fill those fields. Items\n// are the children of the deepest element that holds every image.\nfunction itemsFromLayers(root){const imgs=Array.from(root.querySelectorAll(\"img\"));if(!imgs.length)return[];let list=imgs[0].parentElement;while(list&&list!==root&&!imgs.every(im=>list.contains(im)))list=list.parentElement;if(!list)return[];const cells=imgs.length>1?Array.from(list.children).filter(c=>c.querySelector(\"img\")):[imgs[0].parentElement||imgs[0]];const out=[];cells.forEach((cell,i)=>{const img=cell.querySelector(\"img\");const src=img?img.getAttribute(\"src\")||\"\":\"\";if(!img||!src)return;const tag=layerText(cell,\"Tag\");const category=layerText(cell,\"Category\");const anchor=cell.closest(\"a[href]\")||cell.querySelector(\"a[href]\");out.push({src,srcSet:img.getAttribute(\"srcset\")||\"\",alt:clean(img.getAttribute(\"alt\"))||tag||category||`Image ${i+1}`,tag,category,focal:layerText(cell,\"Focus\"),link:anchor?anchor.getAttribute(\"href\")||\"\":\"\"});});return out;}function itemsFromNodes(root){const out=[];root.querySelectorAll(\"[data-bento-node]\").forEach((n,i)=>{const src=n.getAttribute(\"data-src\")||\"\";if(!src)return;const tag=n.getAttribute(\"data-tag\")||\"\";const category=n.getAttribute(\"data-category\")||\"\";out.push({src,srcSet:n.getAttribute(\"data-srcset\")||\"\",alt:n.getAttribute(\"data-alt\")||tag||category||`Image ${i+1}`,tag,category,focal:n.getAttribute(\"data-focal\")||\"\",link:n.getAttribute(\"data-link\")||\"\"});});return out;}function sameItems(a,b){if(a.length!==b.length)return false;for(let i=0;i<a.length;i++){const x=a[i];const y=b[i];if(x.src!==y.src||x.srcSet!==y.srcSet||x.tag!==y.tag||x.category!==y.category||x.focal!==y.focal||x.link!==y.link||x.alt!==y.alt)return false;}return true;}function categoryCounts(items){const out={};items.forEach(it=>{if(it.category)out[it.category]=(out[it.category]||0)+1;});return out;}function pad2(n){return n<10?`0${n}`:String(n);}function emptyNote(fromCms,withFeed){if(!fromCms)return\"Add photos to the Images list.\";if(!withFeed)return\"Connect a Collection List to Feed.\";return\"No photos found. Each item in the list needs an image layer.\";}function hasSlot(v){return Array.isArray(v)?v.length>0:!!v;}function sized(src,w){if(typeof src!==\"string\"||!src)return src;if(src.indexOf(\"framerusercontent.com\")!==-1){if(/([?&]scale-down-to=)\\d+/.test(src)){return src.replace(/([?&]scale-down-to=)\\d+/,`$1${w}`);}return src+(src.indexOf(\"?\")===-1?\"?\":\"&\")+\"scale-down-to=\"+w;}if(src.indexOf(\"drive.google.com/thumbnail\")!==-1){if(/([?&]sz=w)\\d+/.test(src)){return src.replace(/([?&]sz=w)\\d+/,`$1${w}`);}return src+(src.indexOf(\"?\")===-1?\"?\":\"&\")+\"sz=w\"+w;}return src;}function clamp(n,lo=0,hi=100){return Math.max(lo,Math.min(hi,n));}// Parse a per-photo focal string from the CMS.\n// Accepts \"50 20\", \"50% 20%\", \"50,20\". Returns a CSS object-position, or\n// null when blank / unparseable so the global settings apply instead.\nfunction parseFocal(raw){if(!raw||typeof raw!==\"string\")return null;const nums=raw.match(/-?\\d+(\\.\\d+)?/g);if(!nums||nums.length<2)return null;const x=parseFloat(nums[0]);const y=parseFloat(nums[1]);if(isNaN(x)||isNaN(y))return null;return`${clamp(x)}% ${clamp(y)}%`;}function shuffled(arr){const a=arr.slice();for(let i=a.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[a[i],a[j]]=[a[j],a[i]];}if(a.length>1&&a.every((v,i)=>v===arr[i])){[a[0],a[1]]=[a[1],a[0]];}return a;}/* ------------------------------------------------------------------ *//* Pure helpers: layout                                                *//* ------------------------------------------------------------------ */function tierFor(width){if(width>=DESKTOP_MIN)return\"desktop\";if(width>=TABLET_MIN)return\"tablet\";return\"mobile\";}function colsFor(p,tier){if(tier===\"tablet\")return Math.max(1,p.columnsTablet);if(tier===\"mobile\")return Math.max(1,p.columnsMobile);return p.variety===\"bento\"?6:Math.max(1,p.columns);}function rowsFor(p){return clamp(Math.round(p.maxRows),1,ROWS_LIMIT);}// Whether a tier renders bento rows. Mobile can opt out to a plain grid.\nfunction bentoAt(p,tier){return p.variety===\"bento\"&&(tier!==\"mobile\"||p.bentoMobile);}function rowHeightFor(p,tier){if(tier===\"tablet\")return p.rowHeightTablet;if(tier===\"mobile\")return p.rowHeightMobile;return p.rowHeight;}// Row shapes, as column weights on a 6 unit row. Phones never get three\n// across (too thin) and their uneven pair is gentler than desktop's.\nconst WIDE_ROWS=[[2,4],[4,2],[3,3],[2,2,2],[6]];const PHONE_ROWS=[[6],[2.5,3.5],[3.5,2.5],[3,3]];// Small seeded generator, so a seed always gives the same pattern (the\n// canvas and the first live render agree) while each shuffle can re-roll.\nfunction seeded(seed){let a=seed>>>0;return()=>{a=a+1831565813>>>0;let t=a;t=Math.imul(t^t>>>15,t|1);t^=t+Math.imul(t^t>>>7,t|61);return((t^t>>>14)>>>0)/4294967296;};}function sameRow(a,b){return a.length===b.length&&a.every((v,i)=>v===b[i]);}// A random bento: one row shape per row, never the same shape twice in a\n// row, at most one full-width row on desktop and tablet, and at least one\n// uneven row there so it reads as bento rather than a grid.\nfunction bentoPattern(p,tier,seed){const rows=rowsFor(p);const phone=tier===\"mobile\";const options=phone?PHONE_ROWS:WIDE_ROWS;const rand=seeded(seed*9973+rows*131+(phone?7:tier===\"tablet\"?3:1));const out=[];let fulls=0;for(let r=0;r<rows;r++){let pick=options[0];for(let tries=0;tries<24;tries++){pick=options[Math.floor(rand()*options.length)];const repeat=out.length>0&&sameRow(out[out.length-1],pick);const tooFull=!phone&&pick.length===1&&(fulls>=1||rows===1);if(!repeat&&!tooFull)break;}if(pick.length===1)fulls++;out.push(pick);}const uneven=row=>row.length===2&&row[0]!==row[1];if(!phone&&!out.some(uneven)){const i=Math.floor(rand()*out.length);out[i]=rand()<.5?[2,4]:[4,2];}return out;}// How many tiles a tier shows: whole rows, never more than Max Rows.\nfunction capacityFor(p,tier,seed=1){const rows=rowsFor(p);if(bentoAt(p,tier))return bentoPattern(p,tier,seed).reduce((a,row)=>a+row.length,0);const cols=colsFor(p,tier);// Bento with mobile opted out: about as many tiles as the bento shows.\nif(p.variety===\"bento\")return cols*Math.min(rows,Math.ceil(rows*2/cols));return cols*rows;}// Column weights per tile from the pattern. A row cut short by a small\n// category shares its width evenly; a lone tile gets the full row.\nfunction spansFor(count,p,tier,seed=1){if(!bentoAt(p,tier))return new Array(count).fill(1);const shapes=bentoPattern(p,tier,seed);const out=[];planRows(count,p,tier,seed).filter(row=>row.bento).forEach((row,r)=>{const shape=shapes[r]||[6];const k=row.slots.length;out.push(...k===shape.length?shape:new Array(k).fill(6/k));});return out;}// Landscape photos into wide slots, portraits into narrow ones.\nfunction arrange(picked,pool,ratios,spans){if(picked.length!==spans.length)return picked;const wide=[];const narrow=[];spans.forEach((s,i)=>(s>=WIDE_SPAN?wide:narrow).push(i));const land=[];const port=[];picked.forEach(idx=>{const r=pool[idx]?ratios[pool[idx].src]:undefined;if(r!==undefined&&r<PORTRAIT_MAX_RATIO)port.push(idx);else land.push(idx);});const out=new Array(picked.length);wide.forEach(s=>{const v=land.length?land.shift():port.shift();if(v!==undefined)out[s]=v;});narrow.forEach(s=>{const v=port.length?port.shift():land.shift();if(v!==undefined)out[s]=v;});for(let i=0;i<out.length;i++)if(out[i]===undefined)return picked;return out;}function tagPlacement(pos){switch(pos){case\"Top Left\":return{top:10,left:10};case\"Top Right\":return{top:10,right:10};case\"Bottom Right\":return{bottom:10,right:10};case\"Bottom Bar\":return{left:0,right:0,bottom:0,maxWidth:\"none\",borderRadius:0};case\"Bottom Left\":default:return{bottom:10,left:10};}}// The open icon sits in the corner the tag leaves free.\nfunction iconPlacement(tagPos){return tagPos===\"Top Right\"?{top:10,left:10}:{top:10,right:10};}// Framer passes height \"100%\" when the layer's height is Fixed, Fill or a\n// viewport unit; Fit leaves it out. In that case the rows share the height.\nfunction fillsHeight(style){return!!style&&style.height===\"100%\";}// In fill mode rows share the height, but never shrink below 60% of the\n// tier's Row Height; a short frame makes the gallery taller, not strips.\nfunction fillMinHeight(p,tier,rowCount){const n=Math.max(1,rowCount);return Math.round(n*rowHeightFor(p,tier)*.6+(n-1)*p.gap);}function fontStyle(f){return f&&typeof f===\"object\"?f:{};}function planRows(n,p,tier,seed=1){const all=(from,to)=>Array.from({length:Math.max(0,to-from)},(_,i)=>from+i);if(!bentoAt(p,tier))return[{slots:all(0,n),bento:false}];const d=Math.min(n,capacityFor(p,tier,seed));const sizes=bentoPattern(p,tier,seed).map(row=>row.length);// A small set (a filtered category) would otherwise fit in one row, and a\n// lone row cannot grow taller on hover. Keep at least two rows when Max\n// Rows allows, so True Shape always has height to work with.\nconst twoRows=d>=2&&d<=3&&rowsFor(p)>=2;const rows=[];for(let i=0,r=0;i<d;r++){const cap=twoRows&&r===0?d-1:d-i;const size=Math.min(sizes[r]||2,cap);rows.push({slots:all(i,i+size),bento:true});i+=size;}if(n>d)rows.push({slots:all(d,n),bento:false});return rows;}// Aspect ratio of the photo a tile is showing, read from its own img.\nfunction ratioOf(cell){const img=cell?cell.querySelector(\"img\"):null;return img&&img.naturalHeight>0?img.naturalWidth/img.naturalHeight:0;}// Which bento tile a point falls on in the resting layout (before any\n// reshape), or -1 for a gap. Rows share the grid height equally and each\n// row splits its width by the tiles' weights, exactly as at rest.\nfunction restSlotAt(grid,x,y,rows,spans,gap){const lines=rows.filter(r=>r.bento);const n=lines.length;if(!n)return-1;const box=grid.getBoundingClientRect();const lx=x-box.left;const ly=y-box.top;const rowH=(box.height-(n-1)*gap)/n;const ri=Math.floor(ly/(rowH+gap));if(ri<0||ri>=n||ly-ri*(rowH+gap)>rowH)return-1;const line=lines[ri];const weight=s=>spans[s]||6;const total=line.slots.reduce((a,s)=>a+weight(s),0);const lineW=box.width-(line.slots.length-1)*gap;let left=0;for(const s of line.slots){const w=lineW*weight(s)/total;if(lx>=left&&lx<=left+w)return s;left+=w+gap;}return-1;}// Track sizes for the desktop bento, as fr values. With the grid's pixel\n// width known they are pixel-scaled, so a reshape interpolates linearly\n// between resting and shaped sizes. shaping is the hovered tile and its\n// photo's aspect ratio (0 when unknown, which keeps the tile's own shape).\n// Track sizes for the desktop bento in pixels (null when the width is not\n// known yet). shaping is the hovered tile and its photo's aspect ratio (0\n// when unknown, which keeps the tile's own shape).\nfunction bentoMetrics(rows,spans,p,width,shaping,tier){const lines=rows.filter(r=>r.bento);const n=lines.length;if(width<=0||n===0)return null;const weight=s=>spans[s]||6;const h0=rowHeightFor(p,tier);const lineW=r=>Math.max(1,width-(r.slots.length-1)*p.gap);const restCols=r=>{const total=r.slots.reduce((a,s)=>a+weight(s),0);return r.slots.map(s=>lineW(r)*weight(s)/total);};const rest={rows:lines.map(()=>h0),cols:lines.map(restCols)};const at=shaping?lines.findIndex(r=>r.slots.includes(shaping.slot)):-1;if(!shaping||at<0)return rest;const line=lines[at];const W=lineW(line);const H=n*h0;const k=line.slots.length;const total=line.slots.reduce((a,s)=>a+weight(s),0);const w0=W*weight(shaping.slot)/total;const area=w0*h0*clamp(p.shapeSize,1,2.5);const ratio=shaping.ratio>0?clamp(shaping.ratio,.5,2.4):w0/h0;// The hovered tile only ever grows: at least 10% taller and 10% wider\n// than at rest (as far as the room allows), leaning toward its photo's\n// proportions, so tall photos mainly gain height and wide photos width.\n// Other rows keep 70% of their height; other tiles in the row keep 20%.\nconst tallest=H-(n-1)*h0*.7;const h=n>1?clamp(Math.sqrt(area/ratio),Math.min(h0*1.1,tallest),tallest):H;const most=W-(k-1)*W*.2;const w=k>1?clamp(h*ratio,Math.min(w0*1.1,most),most):W;const restWeight=total-weight(shaping.slot);return{rows:lines.map((_,i)=>i===at?h:(H-h)/(n-1)),cols:lines.map((r,i)=>i!==at?rest.cols[i]:r.slots.map(s=>s===shaping.slot?w:(W-w)*weight(s)/Math.max(.01,restWeight)))};}// The same sizes as fr tracks. Pixel-scaled fr values interpolate linearly\n// between resting and shaped sizes when the tracks transition.\nfunction bentoTracks(rows,spans,p,width,shaping,tier){const fr=v=>`${Math.max(.01,v).toFixed(2)}fr`;const m=bentoMetrics(rows,spans,p,width,shaping,tier);if(!m){const lines=rows.filter(r=>r.bento);return{rows:lines.map(()=>\"1fr\").join(\" \"),cols:lines.map(r=>r.slots.map(s=>fr(spans[s]||6)).join(\" \"))};}return{rows:m.rows.map(fr).join(\" \"),cols:m.cols.map(c=>c.map(fr).join(\" \"))};}function bentoHeight(rows,p,tier){const n=rows.filter(r=>r.bento).length;return n*rowHeightFor(p,tier)+Math.max(0,n-1)*p.gap;}// Marks a slot that falls past a tier's capacity, so CSS can hide it there.\nfunction outAttrs(slot,p,seed=1){const a={};if(slot>=capacityFor(p,\"mobile\",seed))a[\"data-out-m\"]=\"\";if(slot>=capacityFor(p,\"tablet\",seed))a[\"data-out-t\"]=\"\";if(slot>=capacityFor(p,\"desktop\",seed))a[\"data-out-d\"]=\"\";return a;}// One sizes value for every tile, sized for the widest bento tile. Tiles and\n// the preloader must ask for the same srcset candidate or the preload is a\n// cache miss; a photo can also move between narrow and wide slots.\nfunction tileSizes(p){const bento=p.variety===\"bento\";const grow=bento&&p.trueShape?Math.max(1,p.shapeSize):1;const desk=bento?Math.min(100,Math.round(WIDE_SPAN*grow*100/6)):Math.round(100/colsFor(p,\"desktop\"));const tab=bento?Math.round(WIDE_SPAN*100/6):Math.round(100/colsFor(p,\"tablet\"));const mob=bentoAt(p,\"mobile\")?100:Math.round(100/colsFor(p,\"mobile\"));return`(min-width: ${DESKTOP_MIN}px) ${desk}vw, (min-width: ${TABLET_MIN}px) ${tab}vw, ${mob}vw`;}// Loads and decodes the exact file a tile will request (same src, srcset and\n// sizes), so a swap paints at once instead of popping in late.\nfunction warm(it,sizes){return new Promise(resolve=>{const img=new Image;const done=()=>resolve();if(it.srcSet){img.sizes=sizes;img.srcset=it.srcSet;}img.src=it.srcSet?it.src:sized(it.src,TILE_W);if(typeof img.decode===\"function\")img.decode().then(done,done);else{img.onload=done;img.onerror=done;}});}// Interface colours as variables, so the gallery suits light and dark pages.\n// Theme picks the set; panel colours override via inline variables.\nconst LIGHT_VARS=\"--cbg-track:rgba(0,0,0,0.05);--cbg-text:rgb(107,106,101);--cbg-active-bg:rgb(255,255,255);\"+\"--cbg-active-text:rgb(17,17,17);--cbg-pill-edge:rgba(0,0,0,0.08);--cbg-tile:rgba(0,0,0,0.05);\"+\"--cbg-edge:rgba(0,0,0,0.06);--cbg-skel:rgba(0,0,0,0.06);--cbg-note:rgba(0,0,0,0.45);\"+\"--cbg-note-edge:rgba(0,0,0,0.15);--cbg-ring:rgb(20,20,20);\";const DARK_VARS=\"--cbg-track:rgba(255,255,255,0.08);--cbg-text:rgba(255,255,255,0.62);--cbg-active-bg:rgba(255,255,255,0.92);\"+\"--cbg-active-text:rgb(17,17,17);--cbg-pill-edge:rgba(0,0,0,0.3);--cbg-tile:rgba(255,255,255,0.06);\"+\"--cbg-edge:rgba(255,255,255,0.08);--cbg-skel:rgba(255,255,255,0.08);--cbg-note:rgba(255,255,255,0.55);\"+\"--cbg-note-edge:rgba(255,255,255,0.18);--cbg-ring:rgb(240,240,240);\";function themeClass(uid,p){return p.theme===\"dark\"?` dark-${uid}`:\"\";}// Panel colours, when set, as inline variables (they win over the theme).\nfunction themeOverrides(p){const out={};if(p.chipBg)out[\"--cbg-track\"]=p.chipBg;if(p.chipText)out[\"--cbg-text\"]=p.chipText;if(p.chipActiveBg)out[\"--cbg-active-bg\"]=p.chipActiveBg;if(p.chipActiveText)out[\"--cbg-active-text\"]=p.chipActiveText;if(p.focusRing)out[\"--cbg-ring\"]=p.focusRing;return out;}function buildCss(uid,p,live){const pos=`${clamp(p.focalX)}% ${clamp(p.focalY)}%`;const tier=t=>`.grid-${uid}{grid-template-columns:repeat(${colsFor(p,t)},minmax(0,1fr));`+`grid-auto-rows:${t===\"desktop\"?p.rowHeight:t===\"tablet\"?p.rowHeightTablet:p.rowHeightMobile}px;}`+// Reset at the same specificity as the hide rules, so each tier only\n    // hides what is past its own capacity.\n    `.cell-${uid},.cell-${uid}[data-out-m],.cell-${uid}[data-out-t],.cell-${uid}[data-out-d]{display:block;}`+`.cell-${uid}[data-out-${t[0]}]{display:none;}`;const base=`\n.root-${uid}{container-type:inline-size;container-name:cbg${uid};width:100%;font-family:${FALLBACK_FONT};${LIGHT_VARS}}\n.root-${uid}.dark-${uid}{${DARK_VARS}}\n.fill-${uid}{display:flex;flex-direction:column;height:100%;min-height:0;}\n.fill-${uid} .filters-${uid}{flex:none;}\n.fill-${uid} .grid-${uid}{flex:1 1 auto;min-height:0;grid-auto-rows:minmax(0,1fr);align-content:stretch;}\n.fill-${uid} .grid-${uid}[data-bento]{height:auto;}\n.fill-${uid} .note-${uid}{flex:1 1 auto;}\n.grid-${uid}{display:grid;gap:${p.gap}px;}\n.row-${uid}{display:contents;}\n.cell-${uid}{min-width:0;min-height:0;}\n${tier(\"mobile\")}\n@container cbg${uid} (min-width:${TABLET_MIN}px){${tier(\"tablet\")}}\n@container cbg${uid} (min-width:${DESKTOP_MIN}px){${tier(\"desktop\")}}\n.grid-${uid}[data-bento]{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto;grid-template-rows:var(--rw);height:var(--bh);}\n.row-${uid}[data-bento]{display:grid;gap:${p.gap}px;grid-template-columns:var(--cw);grid-template-rows:minmax(0,1fr);min-height:0;}\n.grid-${uid}[data-bento]>.row-${uid}:not([data-bento]){display:none;}\n.tile-${uid}{position:relative;display:block;width:100%;height:100%;margin:0;padding:0;border:0;overflow:hidden;isolation:isolate;border-radius:${p.radius}px;background:var(--cbg-tile);color:inherit;font:inherit;text-align:left;text-decoration:none;outline:none;-webkit-tap-highlight-color:transparent;}\n.tile-${uid}::after{content:\"\";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--cbg-edge);pointer-events:none;z-index:1;}\n.go-${uid}{cursor:pointer;}\n.zoom-${uid}{position:absolute;inset:0;}\n.img-${uid}{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:${pos};display:block;}\n.blank-${uid}{position:absolute;inset:0;background:var(--cbg-skel);}\n.tag-${uid}{position:absolute;z-index:2;padding:5px 11px;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;box-sizing:border-box;}\n.open-${uid}{position:absolute;z-index:3;width:30px;height:30px;border-radius:999px;display:flex;align-items:center;justify-content:center;pointer-events:none;background:rgba(16,16,18,0.36);color:#fff;}\n.filters-${uid}{display:flex;max-width:100%;margin-bottom:${p.gap+6}px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);}\n.filters-${uid}::-webkit-scrollbar{display:none;}\n.track-${uid}{display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:999px;background:var(--cbg-track);}\n.chip-${uid}{position:relative;isolation:isolate;display:inline-flex;align-items:center;border:0;background:transparent;cursor:pointer;padding:7px 14px;border-radius:999px;font:inherit;line-height:1.2;white-space:nowrap;color:var(--cbg-text);}\n.chip-${uid}[aria-pressed=\"true\"]{color:var(--cbg-active-text);}\n.pill-${uid}{position:absolute;inset:0;z-index:-1;border-radius:999px;background:var(--cbg-active-bg);box-shadow:0 0 0 0.5px var(--cbg-pill-edge),0 1px 2px rgba(0,0,0,0.08);}\n.count-${uid}{display:inline-flex;align-items:center;justify-content:center;min-width:1.6em;margin-left:7px;padding:2px 6px;border-radius:999px;box-sizing:border-box;font-size:0.86em;line-height:1.2;font-weight:500;font-variant-numeric:tabular-nums;background:color-mix(in srgb, currentColor 12%, transparent);}\n.note-${uid}{display:flex;align-items:center;justify-content:center;text-align:center;min-height:${p.rowHeight}px;padding:20px;box-sizing:border-box;border-radius:${p.radius}px;border:1px dashed var(--cbg-note-edge);color:var(--cbg-note);font-size:13px;line-height:1.5;}\n`;if(!live)return base;const ease=\"cubic-bezier(.23,1,.32,1)\";return base+`\n/* Reshapes animate the grid tracks, so photos are re-cropped, never\n   stretched. Each cell is contained so a resize stays local to it. */\n.grid-${uid}[data-bento]{transition:grid-template-rows .6s ${ease};}\n.row-${uid}[data-bento]{transition:grid-template-columns .6s ${ease};}\n.cell-${uid}{contain:layout paint;}\n.img-${uid}{transition:scale .7s ${ease};}\n/* Depth of Field dims and Greyscale drains the other tiles, starting with\n   the hover. Brightness and greyscale are per-pixel filters, far cheaper\n   than blur. The hovered photo is promoted to its own GPU layer so its zoom does\n   not repaint every frame. */\n.img-${uid}{transition:scale .7s ${ease},filter .2s ease;}\n.soft-${uid} .cell-${uid}:not(.on-${uid}) .img-${uid}{filter:grayscale(${clamp(p.greyscale,0,1).toFixed(2)}) brightness(${(1-.5*clamp(p.depthOfField,0,1)).toFixed(2)});scale:1.03;transition:scale .7s ${ease},filter .35s ease;}\n.tile-${uid}:hover .img-${uid},.tile-${uid}:focus-visible .img-${uid}{scale:${p.hoverZoom};will-change:scale;}\n.tile-${uid}:focus-visible{outline:3px solid var(--cbg-ring);outline-offset:-3px;}\n.tag-${uid}{opacity:0;transition:opacity .22s ease;}\n.tile-${uid}:hover .tag-${uid},.tile-${uid}:focus-visible .tag-${uid}{opacity:1;}\n@media (hover:none){.tag-${uid}{opacity:1;}}\n.open-${uid}{opacity:0;transition:opacity .22s ease;}\n.tile-${uid}:hover .open-${uid},.tile-${uid}:focus-visible .open-${uid}{opacity:1;}\n@media (hover:none){.open-${uid}{opacity:1;}}\n.chip-${uid}{transition:background-color .2s ease,color .2s ease,transform .16s ease-out;}\n.chip-${uid}:active{transform:scale(.97);}\n@media (hover:hover) and (pointer:fine){\n.chip-${uid}[aria-pressed=\"false\"]:hover{background:color-mix(in srgb, var(--cbg-text) 12%, transparent);color:color-mix(in srgb, var(--cbg-text) 45%, var(--cbg-active-text));}\n}\n.chip-${uid}:focus-visible{outline:2px solid var(--cbg-ring);outline-offset:2px;}\n.skel-${uid}{border-radius:${p.radius}px;background:var(--cbg-skel);animation:pulse${uid} 1.4s ease-in-out infinite;}\n@keyframes pulse${uid}{0%,100%{opacity:1}50%{opacity:.5}}\n/* After a filter change the new grid is in place at once; its tiles fade in\n   and rise slightly, staggered. Only opacity and transform animate. */\n@keyframes rise${uid}{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}\n.enter-${uid} .cell-${uid}{animation:rise${uid} .5s ${ease} both;animation-delay:calc(var(--i, 0) * 35ms);}\n.enter-${uid}[data-bento]{transition:none;}\n.enter-${uid} .row-${uid}[data-bento]{transition:none;}\n.rest-${uid} .grid-${uid},.rest-${uid} .row-${uid},.rest-${uid} .img-${uid},.rest-${uid} .tag-${uid},.rest-${uid} .open-${uid},.rest-${uid} .chip-${uid},.rest-${uid} .grid-${uid},.rest-${uid} .row-${uid}{transition:none;}\n.rest-${uid} .skel-${uid}{animation:none;}\n.vbtn-${uid}{position:absolute;z-index:3;border:0;border-radius:999px;cursor:pointer;padding:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;color:${p.viewerInk};background:color-mix(in srgb, ${p.viewerInk} 12%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, ${p.viewerInk} 20%, transparent);-webkit-backdrop-filter:blur(12px) saturate(140%);backdrop-filter:blur(12px) saturate(140%);transition:background-color .2s ease,box-shadow .2s ease,scale .16s ease-out;}\n@media (hover:hover) and (pointer:fine){.vbtn-${uid}:hover{background:color-mix(in srgb, ${p.viewerInk} 20%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, ${p.viewerInk} 38%, transparent);}}\n.vbtn-${uid}:active{scale:.94;}\n.vbtn-${uid}:focus-visible{outline:2px solid ${p.viewerInk};outline-offset:3px;}\n.vclose-${uid}{top:16px;right:16px;width:38px;height:38px;}\n.vside-${uid}{top:50%;transform:translateY(-50%);width:42px;height:42px;}\n.vstage-${uid}{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:64px max(76px, 7vw) 36px;box-sizing:border-box;pointer-events:none;}\n/* Phones: arrows dock to the bottom so the photo can use the full width. */\n.vbar-${uid}{position:absolute;left:0;right:0;bottom:calc(20px + env(safe-area-inset-bottom, 0px));z-index:3;display:none;justify-content:center;gap:14px;pointer-events:none;}\n.vbar-${uid} .vbtn-${uid}{position:relative;pointer-events:auto;width:48px;height:48px;}\n.vimg-${uid}{display:block;max-width:min(calc(100vw - 2 * max(76px, 7vw)), 1320px);max-height:calc(100svh - 180px);}\n.nocap-${uid} .vimg-${uid}{max-height:calc(100svh - 112px);}\n@media (max-width:640px){\n.vside-${uid}{display:none;}\n.vbar-${uid}{display:flex;}\n.vstage-${uid}{padding:60px 16px calc(92px + env(safe-area-inset-bottom, 0px));gap:16px;}\n.vimg-${uid}{max-width:calc(100vw - 32px);max-height:calc(100svh - 236px);}\n.nocap-${uid} .vimg-${uid}{max-height:calc(100svh - 168px);}\n}\n@media (prefers-reduced-motion:reduce){\n.enter-${uid} .cell-${uid}{animation:none;}\n.img-${uid},.tag-${uid},.open-${uid},.chip-${uid},.vbtn-${uid},.grid-${uid},.row-${uid}{transition:none;}\n.chip-${uid}:active,.vbtn-${uid}:active{transform:none;scale:none;}\n.tile-${uid}:hover .img-${uid},.tile-${uid}:focus-visible .img-${uid}{scale:none;}\n.skel-${uid}{animation:none;}\n}\n`;}/* ------------------------------------------------------------------ *//* Icons                                                               *//* ------------------------------------------------------------------ */function Icon({d,size=24,w=2}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:w,strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:d})});}const CARET_LEFT=\"M15 6l-6 6 6 6\";const CARET_RIGHT=\"M9 6l6 6-6 6\";const CLOSE=\"M6 6l12 12M18 6L6 18\";const EXPAND=\"M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7\";/* ------------------------------------------------------------------ *//* Entry                                                               *//* ------------------------------------------------------------------ *//**\n * @framerIntrinsicWidth 1080\n * @framerIntrinsicHeight 600\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any\n */export default function CmsBentoGallery(props){const isStatic=useIsStaticRenderer();if(isStatic)return /*#__PURE__*/_jsx(CanvasGallery,{...props});return /*#__PURE__*/_jsx(SiteGallery,{...props});}// Name shown in Framer's Assets panel and layer list.\nCmsBentoGallery.displayName=\"CMS Filter Bento Grid\";/* ------------------------------------------------------------------ *//* Static branch: canvas, thumbnails, export                           *//* ------------------------------------------------------------------ */function CanvasGallery(props){const p=withDefaults(props);const uid=\"s\"+useId().replace(/[^a-zA-Z0-9]/g,\"\");const feedRef=useRef(null);const fromCms=p.source===\"cms\";const withFeed=fromCms&&hasSlot(p.feed);const own=useMemo(()=>manualItems(p.images),[p.images]);const[fed,setFed]=useState([]);// One read of our own Feed slot after it renders. No observers or timers.\nuseIsoLayoutEffect(()=>{if(!withFeed||!feedRef.current)return;const next=readFeed(feedRef.current);setFed(prev=>sameItems(prev,next)?prev:next);},[withFeed,p.feed]);// One width read after render picks the tier, so the canvas shows the\n// bento each breakpoint will get. No observers or timers.\nconst rootRef=useRef(null);const[tier,setTier]=useState(\"desktop\");useIsoLayoutEffect(()=>{const el=rootRef.current;if(!el)return;// offsetWidth is the layout width; getBoundingClientRect() would be\n// scaled by the canvas zoom and pick the wrong tier.\nconst next=tierFor(el.offsetWidth);setTier(prev=>prev===next?prev:next);});const items=fromCms?fed:own;const shown=items.slice(0,capacityFor(p,tier));const spans=spansFor(shown.length,p,tier);const rows=planRows(shown.length,p,tier);const isBento=rows.some(r=>r.bento);const tracks=bentoTracks(rows,spans,p,0,null,tier);const categories=[];if(p.showFilter){const hidden=p.hideCategories.toLowerCase().split(\",\").map(s=>s.trim());items.forEach(it=>{if(it.category&&!categories.includes(it.category)&&!hidden.includes(it.category.toLowerCase()))categories.push(it.category);});}const counts=categoryCounts(items);return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:`root-${uid}${themeClass(uid,p)}${fillsHeight(p.style)?` fill-${uid}`:\"\"}`,style:{...p.style,...themeOverrides(p),width:\"100%\",height:fillsHeight(p.style)?\"100%\":\"auto\"},children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:buildCss(uid,p,false)}}),withFeed?/*#__PURE__*/_jsx(\"div\",{ref:feedRef,style:{display:\"none\"},\"aria-hidden\":\"true\",children:p.feed}):null,categories.length>0?/*#__PURE__*/_jsx(\"div\",{className:`filters-${uid}`,children:/*#__PURE__*/_jsx(\"div\",{className:`track-${uid}`,children:[null,...categories].map((c,i)=>/*#__PURE__*/_jsxs(\"span\",{className:`chip-${uid}`,\"aria-pressed\":i===0,style:fontStyle(p.font),children:[i===0?/*#__PURE__*/_jsx(\"span\",{className:`pill-${uid}`}):null,c||p.allLabel,p.showCounts?/*#__PURE__*/_jsx(\"span\",{className:`count-${uid}`,children:c?counts[c]||0:items.length}):null]},c||\"__all\"))})}):null,shown.length===0?/*#__PURE__*/_jsx(\"div\",{className:`note-${uid}`,children:emptyNote(fromCms,withFeed)}):/*#__PURE__*/_jsx(\"div\",{className:`grid-${uid}`,\"data-bento\":isBento?\"\":undefined,style:isBento?{\"--rw\":tracks.rows,\"--bh\":`${bentoHeight(rows,p,tier)}px`}:undefined,children:rows.map((row,r)=>/*#__PURE__*/_jsx(\"div\",{className:`row-${uid}`,\"data-bento\":row.bento?\"\":undefined,style:row.bento?{\"--cw\":tracks.cols[r]}:undefined,children:row.slots.map(slot=>{const item=shown[slot];const own=parseFocal(item.focal);return /*#__PURE__*/_jsx(\"div\",{className:`cell-${uid}`,...outAttrs(slot,p),children:/*#__PURE__*/_jsxs(\"div\",{className:`tile-${uid}`,children:[/*#__PURE__*/_jsx(\"img\",{className:`img-${uid}`,src:item.srcSet?item.src:sized(item.src,TILE_W),srcSet:item.srcSet||undefined,sizes:item.srcSet?tileSizes(p):undefined,alt:item.alt,style:own?{objectPosition:own}:undefined,draggable:false}),p.showTags&&item.tag?/*#__PURE__*/_jsx(\"span\",{className:`tag-${uid}`,style:{...fontStyle(p.font),background:p.tagBg,color:p.tagColor,borderRadius:999,...tagPlacement(p.tagPosition)},children:item.tag}):null]})},slot);})},r))})]});}/* ------------------------------------------------------------------ *//* Live-only hooks                                                     *//* ------------------------------------------------------------------ */// Open only while the gallery is near the viewport and the page is visible.\n// Stays closed until the first observer report; open if there is no\n// IntersectionObserver at all.\nfunction useActive(ref){const[open,setOpen]=useState(false);useEffect(()=>{const node=ref.current;const canWatch=!!node&&typeof IntersectionObserver!==\"undefined\";const state={near:!canWatch,shown:typeof document===\"undefined\"||document.visibilityState!==\"hidden\"};const sync=()=>{const next=state.near&&state.shown;setOpen(prev=>prev===next?prev:next);};const io=canWatch?new IntersectionObserver(entries=>{state.near=entries[entries.length-1].isIntersecting;sync();},{rootMargin:\"240px 0px\"}):null;if(io&&node)io.observe(node);const onVisibility=()=>{state.shown=document.visibilityState!==\"hidden\";sync();};if(typeof document!==\"undefined\")document.addEventListener(\"visibilitychange\",onVisibility);sync();return()=>{if(io)io.disconnect();if(typeof document!==\"undefined\")document.removeEventListener(\"visibilitychange\",onVisibility);};},[ref]);return open;}function useMedia(query,fallback){const[match,setMatch]=useState(fallback);useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const list=window.matchMedia(query);const read=()=>setMatch(list.matches);read();if(list.addEventListener)list.addEventListener(\"change\",read);else list.addListener(read);return()=>{if(list.removeEventListener)list.removeEventListener(\"change\",read);else list.removeListener(read);};},[query]);return match;}// The gallery's own width and tier, matching the CSS container queries.\nfunction useFrame(ref){const[tier,setTier]=useState(null);const[width,setWidth]=useState(0);useIsoLayoutEffect(()=>{const node=ref.current;if(!node)return;const take=w=>{const next=tierFor(w);setTier(prev=>prev===next?prev:next);const px=Math.round(w);setWidth(prev=>prev===px?prev:px);};// Layout width, unaffected by transforms such as a zoomed canvas.\ntake(node.offsetWidth);if(typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(records=>{for(const r of records)take(r.contentRect.width);});ro.observe(node);return()=>ro.disconnect();},[ref]);return{tier,width};}/* ------------------------------------------------------------------ *//* Live branch                                                         *//* ------------------------------------------------------------------ */function SiteGallery(props){const p=withDefaults(props);const uid=\"c\"+useId().replace(/[^a-zA-Z0-9]/g,\"\");const rootRef=useRef(null);const feedRef=useRef(null);const openerRef=useRef(null);const active=useActive(rootRef);const{tier,width}=useFrame(rootRef);const reduced=useMedia(\"(prefers-reduced-motion: reduce)\",false);const pointerFine=useMedia(\"(hover: hover) and (pointer: fine)\",true);const[mounted,setMounted]=useState(false);useEffect(()=>setMounted(true),[]);// --- Data ---\nconst fromCms=p.source===\"cms\";const withFeed=fromCms&&hasSlot(p.feed);const own=useMemo(()=>manualItems(p.images),[p.images]);const[fed,setFed]=useState([]);// True until the Feed slot has been read once.\nconst[pending,setPending]=useState(withFeed);useEffect(()=>{if(!withFeed){setPending(false);return;}const root=feedRef.current;setPending(false);if(!root)return;let cancelled=false;const commit=()=>{const next=readFeed(root);if(!cancelled)setFed(prev=>sameItems(prev,next)?prev:next);};commit();if(typeof MutationObserver===\"undefined\")return;// Watches only our own hidden slot; sameItems() skips no-op updates.\nconst mo=new MutationObserver(commit);mo.observe(root,{childList:true,subtree:true,attributes:true});return()=>{cancelled=true;mo.disconnect();};},[withFeed,p.feed]);const items=fromCms?fed:own;// --- Filter ---\nconst categories=useMemo(()=>{const hidden=p.hideCategories.toLowerCase().split(\",\").map(s=>s.trim());const set=[];items.forEach(it=>{if(it.category&&!set.includes(it.category)&&!hidden.includes(it.category.toLowerCase()))set.push(it.category);});return set;},[items,p.hideCategories]);const counts=useMemo(()=>categoryCounts(items),[items]);const[chosenCat,setActiveCat]=useState(null);// Bumped on each filter click: remounts the grid so its tiles play the\n// entrance instead of animating the old layout into the new one.\nconst[filterRun,setFilterRun]=useState(0);const[entering,setEntering]=useState(false);const pickCategory=useCallback(c=>{setActiveCat(c);setFilterRun(n=>n+1);setEntering(true);},[]);// The entrance class also pauses track transitions, so drop it once the\n// staggered rise has finished and hover reshapes animate again.\nuseEffect(()=>{if(!entering)return;const t=window.setTimeout(()=>setEntering(false),900);return()=>window.clearTimeout(t);},[entering,filterRun]);// Start loading a category's photos when its tab is hovered, so they are\n// usually ready by the click.\nconst warmCategory=c=>{const list=c?items.filter(it=>it.category===c):items;list.slice(0,12).forEach(it=>warm(it,tileSizes(p)));};const activeCat=chosenCat&&categories.includes(chosenCat)?chosenCat:null;const pool=useMemo(()=>activeCat?items.filter(it=>it.category===activeCat):items,[items,activeCat]);// --- Window ---\nconst bento=p.variety===\"bento\";const t=tier||\"desktop\";// The bento pattern re-rolls with each shuffle. Seed 1 matches the canvas.\nconst[seed,setSeed]=useState(1);const capacity=capacityFor(p,t,seed);const count=Math.min(capacity,pool.length);const nextCountRef=useRef(count);nextCountRef.current=Math.min(capacityFor(p,t,seed+1),pool.length);const desktopBento=bento&&t===\"desktop\";const bentoNow=bentoAt(p,t);const spans=useMemo(()=>spansFor(count,p,t,seed),// eslint-disable-next-line react-hooks/exhaustive-deps\n[count,t,seed,p.variety,p.bentoMobile,p.maxRows]);const fullMs=Math.max(1,p.shuffleInterval)*1e3;const[seq,setSeq]=useState([]);const[winStart,setWinStart]=useState(0);const[passes,setPasses]=useState(0);const winRef=useRef(0);const remainingRef=useRef(fullMs);const durRef=useRef(fullMs);const startedAtRef=useRef(0);useEffect(()=>{setSeq(shuffled(pool.map((_,i)=>i)));winRef.current=0;setWinStart(0);setPasses(0);remainingRef.current=fullMs;},[pool,fullMs]);const order=seq.length===pool.length?seq:pool.map((_,i)=>i);const orderRef=useRef(order);const poolRef=useRef(pool);orderRef.current=order;poolRef.current=pool;const sizes=tileSizes(p);// --- Orientation probe (guarded) ---\nconst[ratios,setRatios]=useState({});const[seen,setSeen]=useState(false);useEffect(()=>{if(active)setSeen(true);},[active]);useEffect(()=>{if(!seen||!bento||!p.matchOrientation||!items.length)return;let cancelled=false;const load=src=>new Promise(resolve=>{const img=new Image;img.onload=()=>resolve(img);img.onerror=()=>resolve(null);img.src=sized(src,PROBE_W);});const run=async()=>{const list=items.slice(0,PROBE_MAX);const first=await load(list[0].src);if(cancelled||!first)return;// If the host ignored the resize parameter we would be pulling\n// full-size originals for every photo. Stop here.\nif(first.naturalWidth>PROBE_SANITY_W)return;const next={};if(first.naturalHeight>0)next[list[0].src]=first.naturalWidth/first.naturalHeight;const rest=await Promise.all(list.slice(1).map(it=>load(it.src)));if(cancelled)return;rest.forEach((im,i)=>{if(im&&im.naturalHeight>0)next[list[i+1].src]=im.naturalWidth/im.naturalHeight;});setRatios(next);};run();return()=>{cancelled=true;};},[items,seen,bento,p.matchOrientation]);const display=useMemo(()=>{const n=order.length;if(!n)return[];const picked=[];for(let k=0;k<count;k++)picked.push(order[(winStart+k)%n]);if(!bentoNow||!p.matchOrientation)return picked;if(!Object.keys(ratios).length)return picked;return arrange(picked,pool,ratios,spans);},[order,winStart,count,bentoNow,p.matchOrientation,ratios,pool,spans]);// --- Clock ---\nconst[hovering,setHovering]=useState(false);const[focusInside,setFocusInside]=useState(false);const[viewing,setViewing]=useState(null);const paused=pointerFine&&hovering||focusInside||viewing!==null;const passesDone=p.passes>0&&passes>=p.passes;const clockOn=p.shuffleEnabled&&active&&!reduced&&!paused&&!passesDone&&pool.length>count&&count>0;useEffect(()=>{if(!clockOn||typeof window===\"undefined\")return;let timer=0;let capTimer=0;let waiting=false;let cancelled=false;const arm=ms=>{durRef.current=ms;startedAtRef.current=Date.now();timer=window.setTimeout(tick,ms);};// On time, load the next screenful first and swap once every photo is\n// decoded (or SWAP_WAIT_MAX passes), so nothing appears late.\nconst tick=()=>{const ord=orderRef.current;const pl=poolRef.current;const n=ord.length;if(!n)return;// Load what the next pattern will show; it may hold more or\n// fewer tiles than the current one.\nconst upcoming=[];for(let k=0;k<nextCountRef.current;k++){const it=pl[ord[(winRef.current+count+k)%n]];if(it)upcoming.push(it);}waiting=true;const cap=new Promise(r=>{capTimer=window.setTimeout(r,SWAP_WAIT_MAX);});Promise.race([Promise.all(upcoming.map(it=>warm(it,sizes))),cap]).then(()=>{window.clearTimeout(capTimer);if(cancelled)return;waiting=false;const next=winRef.current+count;if(next>=pl.length)setPasses(c=>c+1);winRef.current=next%pl.length;setWinStart(winRef.current);setSeed(v=>v+1);arm(fullMs);});};arm(Math.max(MIN_RESUME_MS,Math.min(remainingRef.current,fullMs)));return()=>{cancelled=true;window.clearTimeout(timer);window.clearTimeout(capTimer);// Interrupted mid-load: retry promptly on resume.\nconst elapsed=Date.now()-startedAtRef.current;remainingRef.current=waiting?MIN_RESUME_MS:Math.max(0,durRef.current-elapsed);};},[clockOn,count,pool.length,fullMs,sizes]);// Start loading the next screenful as soon as the current one is up.\nuseEffect(()=>{if(!clockOn||typeof window===\"undefined\")return;const n=order.length;for(let k=0;k<nextCountRef.current;k++){const it=pool[order[(winStart+count+k)%n]];if(it)warm(it,sizes);}},[clockOn,winStart,order,pool,count,sizes,seed]);// --- True Shape + Depth of Field ---\nconst[shaping,setShaping]=useState(null);const canShape=desktopBento&&pointerFine&&!reduced&&p.trueShape;const rows=useMemo(()=>planRows(display.length,p,t,seed),// eslint-disable-next-line react-hooks/exhaustive-deps\n[display.length,t,seed,p.variety,p.maxRows,p.bentoMobile]);const isBento=rows.some(r=>r.bento);const tracks=bentoTracks(rows,spans,p,isBento?width:0,canShape?shaping:null,t);const onFocusTile=useCallback((slot,ratio)=>{setShaping(slot<0?null:{slot,ratio});},[]);// Mouse hover. A reshape moves tile edges, so hit-testing the animated\n// layout feeds back: an edge slides under the cursor, the neighbour takes\n// the hover, the edge slides back. With True Shape on, the hovered tile is\n// read from the resting layout instead, so reshaping cannot change it.\n// A point in a gap keeps the current tile.\nconst shapingRef=useRef(null);shapingRef.current=shaping;const restRef=useRef({rows:[],spans:[],fromRest:false});restRef.current={rows,spans,fromRest:canShape&&isBento};const onGridMove=useCallback(e=>{if(e.pointerType!==\"mouse\"||!pointerFine)return;const grid=e.currentTarget;const rest=restRef.current;let slot=-1;if(rest.fromRest){slot=restSlotAt(grid,e.clientX,e.clientY,rest.rows,rest.spans,p.gap);}else{const cell=e.target.closest(\"[data-slot]\");slot=cell?Number(cell.getAttribute(\"data-slot\")):-1;}if(slot<0)return;const cur=shapingRef.current;if(cur&&cur.slot===slot)return;setShaping({slot,ratio:ratioOf(grid.querySelector(`[data-slot=\"${slot}\"]`))});},[pointerFine,p.gap]);const endHover=useCallback(()=>setShaping(null),[]);useEffect(()=>setShaping(null),[display]);// --- Viewer ---\nconst openAt=useCallback((idx,el)=>{openerRef.current=el;setViewing(idx);},[]);const close=useCallback(()=>{const el=openerRef.current;setViewing(null);if(el&&typeof window!==\"undefined\")window.setTimeout(()=>el.focus({preventScroll:true}),0);},[]);// --- Render ---\nconst css=buildCss(uid,p,true);const soft=!!shaping&&pointerFine&&(p.depthOfField>0||p.greyscale>0);const rootClass=`root-${uid}${themeClass(uid,p)}${fillsHeight(p.style)?` fill-${uid}`:\"\"}${active?\"\":` rest-${uid}`}${soft?` soft-${uid}`:\"\"}`;const bentoVars=(r,tr)=>({\"--rw\":tr.rows,\"--bh\":`${bentoHeight(r,p,t)}px`});const waiting=items.length===0&&pending;return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:rootClass,style:{...p.style,...themeOverrides(p),width:\"100%\",height:fillsHeight(p.style)?\"100%\":\"auto\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:css}}),withFeed?/*#__PURE__*/_jsx(\"div\",{ref:feedRef,style:{display:\"none\"},\"aria-hidden\":\"true\",children:p.feed}):null,p.showFilter&&categories.length>0?/*#__PURE__*/_jsx(\"div\",{className:`filters-${uid}`,children:/*#__PURE__*/_jsx(\"div\",{className:`track-${uid}`,role:\"group\",\"aria-label\":\"Filter images by category\",children:[null,...categories].map(c=>{const on=c===activeCat;return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:`chip-${uid}`,\"aria-pressed\":on,onClick:()=>{if(c!==activeCat)pickCategory(c);},onPointerEnter:()=>warmCategory(c),style:fontStyle(p.font),children:[on?// One pill per gallery; layoutId slides it to the\n// newly selected category.\n/*#__PURE__*/_jsx(motion.span,{layoutId:`pill-${uid}`,className:`pill-${uid}`,transition:reduced?{duration:0}:{type:\"spring\",bounce:.15,duration:.45}}):null,c||p.allLabel,p.showCounts?/*#__PURE__*/_jsx(\"span\",{className:`count-${uid}`,children:c?counts[c]||0:items.length}):null]},c||\"__all\");})})}):null,waiting?(()=>{const sr=planRows(capacity,p,t,seed);const st=bentoTracks(sr,spansFor(capacity,p,t,seed),p,0,null,t);const skelBento=sr.some(r=>r.bento);return /*#__PURE__*/_jsx(\"div\",{className:`grid-${uid}`,\"aria-busy\":\"true\",\"data-bento\":skelBento?\"\":undefined,style:skelBento?bentoVars(sr,st):undefined,children:sr.map((row,r)=>/*#__PURE__*/_jsx(\"div\",{className:`row-${uid}`,\"data-bento\":row.bento?\"\":undefined,style:row.bento?{\"--cw\":st.cols[r]}:undefined,children:row.slots.map(slot=>/*#__PURE__*/_jsx(\"div\",{className:`cell-${uid} skel-${uid}`,...outAttrs(slot,p,seed)},slot))},r))});})():items.length===0?/*#__PURE__*/_jsx(\"div\",{className:`note-${uid}`,children:emptyNote(fromCms,withFeed)}):/*#__PURE__*/_jsx(\"div\",{className:`grid-${uid}${entering?` enter-${uid}`:\"\"}`,\"data-bento\":isBento?\"\":undefined,style:{...isBento?bentoVars(rows,tracks):{},...fillsHeight(p.style)?{minHeight:fillMinHeight(p,t,isBento?rows.filter(r=>r.bento).length:Math.ceil(display.length/colsFor(p,t)))}:{}},onPointerEnter:e=>{if(e.pointerType===\"mouse\")setHovering(true);},onPointerMove:onGridMove,onPointerLeave:()=>{setHovering(false);endHover();},onFocus:()=>setFocusInside(true),onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget))setFocusInside(false);},children:rows.map((row,r)=>/*#__PURE__*/_jsx(\"div\",{className:`row-${uid}`,\"data-bento\":row.bento?\"\":undefined,style:row.bento?{\"--cw\":tracks.cols[r]}:undefined,children:row.slots.map(slot=>/*#__PURE__*/_jsx(Tile,{uid:uid,p:p,item:pool[display[slot]],index:display[slot],slot:slot,shaped:!!shaping&&shaping.slot===slot,seed:seed,reduced:reduced,eager:seen,pointerFine:pointerFine,onFocusTile:onFocusTile,onOpen:openAt},slot))},r))},`run-${filterRun}`),mounted&&typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(AnimatePresence,{children:viewing!==null&&pool[viewing]?/*#__PURE__*/_jsx(Viewer,{uid:uid,p:p,pool:pool,index:viewing,reduced:reduced,onIndex:setViewing,onClose:close},\"cbg-viewer\"):null}),document.body):null]});}/* ------------------------------------------------------------------ *//* Live tile                                                           *//* ------------------------------------------------------------------ */function Tile(props){const{uid,p,item,index,slot,shaped,seed,reduced,eager,onFocusTile,onOpen}=props;const[broken,setBroken]=useState(false);const src=item?item.src:\"\";useEffect(()=>setBroken(false),[src]);if(!item)return null;const own=parseFocal(item.focal);const asLink=p.tileAction===\"link\"&&!!item.link;const asButton=p.tileAction===\"viewer\";const className=`tile-${uid}${asLink||asButton?` go-${uid}`:\"\"}`;const inner=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{className:`zoom-${uid}`,children:broken?/*#__PURE__*/_jsx(\"span\",{className:`blank-${uid}`}):/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:/*#__PURE__*/_jsx(motion.img,{className:`img-${uid}`,src:item.srcSet?item.src:sized(item.src,TILE_W),srcSet:item.srcSet||undefined,sizes:item.srcSet?tileSizes(p):undefined,alt:item.alt,style:own?{objectPosition:own}:undefined,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:reduced?0:.55,delay:reduced?0:slot*.05},// Lazy until the gallery is first seen; photos swapped in\n// later are already loaded, so they must not wait.\nloading:eager?\"eager\":\"lazy\",decoding:\"async\",draggable:false,onError:()=>setBroken(true)},item.src)})}),p.showOpenIcon&&asButton?/*#__PURE__*/_jsx(\"span\",{className:`open-${uid}`,style:iconPlacement(p.tagPosition),children:/*#__PURE__*/_jsx(Icon,{d:EXPAND,size:14,w:2})}):null,p.showTags&&item.tag?/*#__PURE__*/_jsx(\"span\",{className:`tag-${uid}`,style:{...fontStyle(p.font),background:p.tagBg,color:p.tagColor,borderRadius:999,...tagPlacement(p.tagPosition)},children:item.tag}):null]});return /*#__PURE__*/_jsx(\"div\",{className:`cell-${uid}${shaped?` on-${uid}`:\"\"}`,\"data-slot\":slot,style:{[\"--i\"]:Math.min(slot,10)},...outAttrs(slot,p,seed),onFocus:e=>{// Only focus-visible (keyboard) focus reshapes, so clicks and\n// the focus restored when the viewer closes leave it alone.\nlet visible=true;try{visible=e.target.matches(\":focus-visible\");}catch(_){}if(visible)onFocusTile(slot,ratioOf(e.currentTarget));},onBlur:()=>onFocusTile(-1,0),children:asLink?/*#__PURE__*/_jsx(\"a\",{className:className,href:item.link,target:p.newTab?\"_blank\":undefined,rel:p.newTab?\"noopener noreferrer\":undefined,\"aria-label\":item.alt,children:inner}):asButton?/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:className,\"aria-label\":`View ${item.alt}`,onClick:e=>onOpen(index,e.currentTarget),children:inner}):/*#__PURE__*/_jsx(\"div\",{className:className,children:inner})});}/* ------------------------------------------------------------------ *//* Viewer                                                            *//* ------------------------------------------------------------------ */function Viewer(props){const{uid,p,pool,index,reduced,onIndex,onClose}=props;const total=pool.length;const cur=pool[index];const panelRef=useRef(null);const closeRef=useRef(null);const swipe=useRef(null);const step=useCallback(dir=>{if(total<2)return;onIndex(i=>i===null?i:(i+dir+total)%total);},[total,onIndex]);// Move focus to Close and freeze page scroll, padding for the scrollbar\n// so the page behind does not jump sideways.\nuseEffect(()=>{if(closeRef.current)closeRef.current.focus({preventScroll:true});const body=document.body;const overflow=body.style.overflow;const padRight=body.style.paddingRight;const bar=window.innerWidth-document.documentElement.clientWidth;body.style.overflow=\"hidden\";if(bar>0)body.style.paddingRight=`${bar}px`;return()=>{body.style.overflow=overflow;body.style.paddingRight=padRight;};},[]);useEffect(()=>{const onKey=e=>{if(e.key===\"Escape\"){e.preventDefault();onClose();}else if(e.key===\"ArrowRight\"){e.preventDefault();step(1);}else if(e.key===\"ArrowLeft\"){e.preventDefault();step(-1);}};window.addEventListener(\"keydown\",onKey);return()=>window.removeEventListener(\"keydown\",onKey);},[step,onClose]);// Preload the previous and next photo.\nuseEffect(()=>{if(total<2)return;for(const n of[pool[(index+1)%total],pool[(index-1+total)%total]]){if(!n||n===cur)continue;const img=new Image;if(n.srcSet)img.srcset=n.srcSet;img.src=n.srcSet?n.src:sized(n.src,VIEWER_W);}},[index,total,pool,cur]);const keepFocusInside=e=>{if(e.key!==\"Tab\"||!panelRef.current)return;// Only visible buttons: on phones the side arrows are hidden and the\n// docked ones take their place, and the reverse on wider screens.\nconst focusables=Array.from(panelRef.current.querySelectorAll(\"button\")).filter(b=>b.getClientRects().length>0);if(!focusables.length)return;const first=focusables[0];const last=focusables[focusables.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus();}};const swipeStart=e=>{if(e.pointerType===\"mouse\")return;swipe.current={x:e.clientX,y:e.clientY,id:e.pointerId};};const swipeEnd=e=>{const from=swipe.current;swipe.current=null;if(!from||from.id!==e.pointerId)return;const dx=e.clientX-from.x;const dy=e.clientY-from.y;// A mostly horizontal flick of 48px or more changes photo.\nif(Math.abs(dx)>=48&&Math.abs(dx)>Math.abs(dy)*1.5)step(dx<0?1:-1);};const swallow=e=>e.stopPropagation();if(!cur)return null;return /*#__PURE__*/_jsxs(motion.div,{ref:panelRef,role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":cur.alt,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:reduced?.1:.25},onClick:onClose,onKeyDown:keepFocusInside,onPointerDown:swipeStart,onPointerUp:swipeEnd,onPointerCancel:()=>swipe.current=null,style:{position:\"fixed\",inset:0,zIndex:VIEWER_Z,background:p.viewerBackdrop,color:p.viewerInk,fontFamily:FALLBACK_FONT,touchAction:\"pan-y\"},children:[/*#__PURE__*/_jsx(\"button\",{ref:closeRef,type:\"button\",\"aria-label\":\"Close\",className:`vbtn-${uid} vclose-${uid}`,onClick:e=>{swallow(e);onClose();},children:/*#__PURE__*/_jsx(Icon,{d:CLOSE,size:18,w:2})}),total>1?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Previous image\",className:`vbtn-${uid} vside-${uid}`,onClick:e=>{swallow(e);step(-1);},style:{left:\"max(12px, 2vw)\"},children:/*#__PURE__*/_jsx(Icon,{d:CARET_LEFT,size:20,w:2})}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Next image\",className:`vbtn-${uid} vside-${uid}`,onClick:e=>{swallow(e);step(1);},style:{right:\"max(12px, 2vw)\"},children:/*#__PURE__*/_jsx(Icon,{d:CARET_RIGHT,size:20,w:2})}),/*#__PURE__*/_jsxs(\"div\",{className:`vbar-${uid}`,children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Previous image\",className:`vbtn-${uid}`,onClick:e=>{swallow(e);step(-1);},children:/*#__PURE__*/_jsx(Icon,{d:CARET_LEFT,size:20,w:2})}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Next image\",className:`vbtn-${uid}`,onClick:e=>{swallow(e);step(1);},children:/*#__PURE__*/_jsx(Icon,{d:CARET_RIGHT,size:20,w:2})})]})]}):null,/*#__PURE__*/_jsx(motion.div,{className:`vstage-${uid}${p.viewerCaption?\"\":` nocap-${uid}`}`,initial:{opacity:0,scale:reduced?1:.96},animate:{opacity:1,scale:1},transition:{duration:reduced?.1:.28},children:/*#__PURE__*/_jsxs(\"figure\",{onClick:swallow,style:{margin:0,display:\"flex\",flexDirection:\"column\",gap:16,width:\"fit-content\",maxWidth:\"100%\",pointerEvents:\"auto\"},children:[/*#__PURE__*/_jsx(\"img\",{src:cur.srcSet?cur.src:sized(cur.src,VIEWER_W),srcSet:cur.srcSet||undefined,sizes:cur.srcSet?\"(max-width: 640px) 100vw, 90vw\":undefined,alt:cur.alt,className:`vimg-${uid}`,style:{width:\"auto\",height:\"auto\",objectFit:\"contain\",borderRadius:12,boxShadow:\"0 30px 80px rgba(0,0,0,0.45)\",userSelect:\"none\"},draggable:false}),p.viewerCaption&&(cur.tag||cur.category||total>1)?// Eyebrow caption: category above the title, counter on\n// the right, both aligned to the photo's edges.\n/*#__PURE__*/_jsxs(\"figcaption\",{\"aria-live\":\"polite\",style:{display:\"flex\",alignItems:\"flex-end\",justifyContent:\"space-between\",gap:24,width:\"100%\",color:p.viewerInk},children:[/*#__PURE__*/_jsxs(\"div\",{style:{minWidth:0},children:[cur.category?/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11,fontWeight:500,letterSpacing:\"0.12em\",textTransform:\"uppercase\",opacity:.6,marginBottom:5},children:cur.category}):null,cur.tag?/*#__PURE__*/_jsx(\"div\",{style:{...fontStyle(p.font),fontSize:15,lineHeight:1.35,display:\"-webkit-box\",WebkitLineClamp:2,WebkitBoxOrient:\"vertical\",overflow:\"hidden\"},children:cur.tag}):null]}),total>1?/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:12,opacity:.6,fontVariantNumeric:\"tabular-nums\",whiteSpace:\"nowrap\"},children:[pad2(index+1),\" / \",pad2(total)]}):null]}):null]})},cur.src)]});}/* ------------------------------------------------------------------ *//* Property controls                                                   *//* ------------------------------------------------------------------ */// Grouped rows open a popover. Nested hidden() gets the group's values first\n// and the component's props second.\naddPropertyControls(CmsBentoGallery,{/* ---------------- Content ---------------- */source:{type:ControlType.Enum,title:\"Source\",options:[\"manual\",\"cms\"],optionTitles:[\"Manual\",\"CMS\"],defaultValue:\"manual\",displaySegmentedControl:true},images:{type:ControlType.Array,title:\"Images\",description:\"Sample photos show until you add your own.\",hidden:p=>p.source===\"cms\",maxCount:60,defaultValue:SAMPLE,control:{type:ControlType.Object,controls:{image:{type:ControlType.ResponsiveImage,title:\"Image\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"\"},tag:{type:ControlType.String,title:\"Tag\",defaultValue:\"\"},category:{type:ControlType.String,title:\"Category\",defaultValue:\"\"},focal:{type:ControlType.String,title:\"Focus\",placeholder:\"50 20\",defaultValue:\"\"},link:{type:ControlType.Link,title:\"Link\"}}}},feed:{type:ControlType.Slot,title:\"Feed\",maxCount:1,description:\"Connect a Collection List. Each item needs an image; text layers named Tag, Category and Focus are optional.\",hidden:p=>p.source!==\"cms\"},tileAction:{type:ControlType.Enum,title:\"Tile Action\",options:[\"viewer\",\"link\",\"none\"],optionTitles:[\"Open Viewer\",\"Go to Link\",\"Nothing\"],defaultValue:\"viewer\"},newTab:{type:ControlType.Boolean,title:\"Open in New Tab\",defaultValue:true,hidden:p=>p.tileAction!==\"link\"},/* ---------------- Layout ---------------- */variety:{type:ControlType.Enum,title:\"Layout\",options:[\"bento\",\"even\"],optionTitles:[\"Bento\",\"Even\"],defaultValue:\"bento\",displaySegmentedControl:true,description:`Desktop applies when the gallery is ${DESKTOP_MIN}px or wider, tablet from ${TABLET_MIN}px.`},maxRows:{type:ControlType.Number,title:\"Max Rows\",description:\"The grid never grows taller than this. Extra images rotate in with Auto Shuffle.\",min:1,max:ROWS_LIMIT,step:1,defaultValue:3,displayStepper:true},columns:{type:ControlType.Number,title:\"Columns\",min:2,max:8,step:1,defaultValue:4,displayStepper:true,hidden:p=>p.variety!==\"even\"},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"light\",\"dark\"],optionTitles:[\"Light\",\"Dark\"],defaultValue:\"light\",displaySegmentedControl:true,description:\"Pick the one that matches your page background. Colours the filter bar and tiles.\"},rowHeight:{type:ControlType.Number,title:\"Row Height\",description:\"Used when the gallery's height is Fit. With a Fixed, Fill or viewport height, rows share that height instead.\",min:80,max:480,step:10,defaultValue:200,unit:\"px\"},gap:{type:ControlType.Number,title:\"Tile Gap\",min:0,max:48,step:1,defaultValue:12,unit:\"px\"},radius:{type:ControlType.Number,title:\"Corner Radius\",min:0,max:48,step:1,defaultValue:16,unit:\"px\"},responsive:{type:ControlType.Object,title:\"Responsive\",buttonTitle:\"Tablet & Mobile\",controls:{bentoMobile:{type:ControlType.Boolean,title:\"Bento on Mobile\",description:\"Off: phones get a plain grid with Cols Mobile.\",defaultValue:true,hidden:(_g,p)=>!!p&&p.variety===\"even\"},columnsTablet:{type:ControlType.Number,title:\"Cols Tablet\",min:1,max:6,step:1,defaultValue:3,displayStepper:true,hidden:(_g,p)=>!!p&&p.variety!==\"even\"},columnsMobile:{type:ControlType.Number,title:\"Cols Mobile\",min:1,max:4,step:1,defaultValue:2,displayStepper:true,hidden:(g,p)=>!!p&&p.variety!==\"even\"&&!(g&&g.bentoMobile===false)},rowHeightTablet:{type:ControlType.Number,title:\"Row Height Tablet\",min:80,max:480,step:10,defaultValue:180,unit:\"px\"},rowHeightMobile:{type:ControlType.Number,title:\"Row Height Mobile\",min:80,max:480,step:10,defaultValue:200,unit:\"px\"}}},/* ---------------- Photos ---------------- */placement:{type:ControlType.Object,title:\"Placement\",buttonTitle:\"Crop & Orientation\",controls:{matchOrientation:{type:ControlType.Boolean,title:\"Match Orientation\",description:\"Bento: landscape photos in wide tiles, portraits in narrow ones.\",defaultValue:true},focalX:{type:ControlType.Number,title:\"Focus X\",min:0,max:100,step:1,defaultValue:50,unit:\"%\"},focalY:{type:ControlType.Number,title:\"Focus Y\",min:0,max:100,step:1,defaultValue:50,unit:\"%\"}}},hover:{type:ControlType.Object,title:\"Hover\",buttonTitle:\"Effects\",icon:\"effect\",controls:{hoverZoom:{type:ControlType.Number,title:\"Zoom\",min:1,max:1.3,step:.01,defaultValue:1.02},trueShape:{type:ControlType.Boolean,title:\"True Shape\",description:\"Desktop bento: the hovered tile morphs toward its photo's real proportions and the grid makes room.\",defaultValue:true,hidden:(_g,p)=>!!p&&p.variety===\"even\"},shapeSize:{type:ControlType.Number,title:\"Shape Size\",min:1,max:2,step:.05,defaultValue:1.2,hidden:(g,p)=>!!p&&p.variety===\"even\"||!!g&&g.trueShape===false},depthOfField:{type:ControlType.Number,title:\"Depth of Field\",description:\"Dims the other tiles while one is hovered, so it stands forward. 0 turns it off.\",min:0,max:1,step:.05,defaultValue:.5},greyscale:{type:ControlType.Number,title:\"Greyscale\",description:\"Turns the other tiles black and white while one is hovered. 0 keeps their colour.\",min:0,max:1,step:.05,defaultValue:1}}},/* ---------------- Labels ---------------- */font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:13,variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"}},labels:{type:ControlType.Object,title:\"Labels\",buttonTitle:\"Tags & Icon\",controls:{showTags:{type:ControlType.Boolean,title:\"Tags\",defaultValue:true},tagPosition:{type:ControlType.Enum,title:\"Position\",options:[\"Bottom Left\",\"Bottom Right\",\"Top Left\",\"Top Right\",\"Bottom Bar\"],defaultValue:\"Bottom Left\",hidden:g=>!!g&&g.showTags===false},tagBg:{type:ControlType.Color,title:\"Fill\",defaultValue:\"rgba(16, 16, 18, 0.55)\",hidden:g=>!!g&&g.showTags===false},tagColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"rgb(255, 255, 255)\",hidden:g=>!!g&&g.showTags===false},showOpenIcon:{type:ControlType.Boolean,title:\"Open Icon\",defaultValue:true,hidden:(_g,p)=>!!p&&p.tileAction!==undefined&&p.tileAction!==\"viewer\"}}},/* ---------------- Viewer ---------------- */viewer:{type:ControlType.Object,title:\"Viewer\",buttonTitle:\"Backdrop & Controls\",hidden:p=>p.tileAction!==undefined&&p.tileAction!==\"viewer\",controls:{viewerBackdrop:{type:ControlType.Color,title:\"Backdrop\",defaultValue:\"rgba(10, 10, 12, 0.92)\"},viewerInk:{type:ControlType.Color,title:\"Controls\",description:\"Buttons and caption.\",defaultValue:\"rgb(255, 255, 255)\"},viewerCaption:{type:ControlType.Boolean,title:\"Show Caption\",defaultValue:true}}},/* ---------------- Shuffle ---------------- */shuffleEnabled:{type:ControlType.Boolean,title:\"Auto Shuffle\",description:\"Steps through every image when there are more than fit.\",defaultValue:true},shuffle:{type:ControlType.Object,title:\"Shuffle\",buttonTitle:\"Timing\",hidden:p=>p.shuffleEnabled===false,controls:{shuffleInterval:{type:ControlType.Number,title:\"Every\",min:2,max:60,step:1,unit:\"s\",defaultValue:8},passes:{type:ControlType.Number,title:\"Passes\",description:\"Full passes through all images before stopping. 0 runs forever.\",min:0,max:20,step:1,defaultValue:3,displayStepper:true}}},/* ---------------- Filter ---------------- */showFilter:{type:ControlType.Boolean,title:\"Filter Bar\",defaultValue:true},filterStyle:{type:ControlType.Object,title:\"Filter Style\",buttonTitle:\"Labels & Colors\",hidden:p=>p.showFilter===false,controls:{allLabel:{type:ControlType.String,title:\"All Label\",defaultValue:\"All\"},hideCategories:{type:ControlType.String,title:\"Hide\",placeholder:\"Archive, Drafts\",description:\"Categories to leave out of the bar, comma separated.\",defaultValue:\"\"},showCounts:{type:ControlType.Boolean,title:\"Show Counts\",defaultValue:true},chipBg:{type:ControlType.Color,title:\"Track\",optional:true,description:\"Empty follows the Theme.\"},chipText:{type:ControlType.Color,title:\"Text\",optional:true},chipActiveBg:{type:ControlType.Color,title:\"Active Fill\",optional:true},chipActiveText:{type:ControlType.Color,title:\"Active Text\",optional:true}}},/* ---------------- Accessibility ---------------- */focusRing:{type:ControlType.Color,title:\"Focus Ring\",description:\"Outline shown on tiles and filters when using a keyboard. Empty follows the Theme.\",optional:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CmsBentoGallery\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"600\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1080\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CmsFilterBentoGrid.map"],"mappings":"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"}