@wyxos/vibe 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/index.cjs +1 -1
  2. package/lib/index.js +519 -445
  3. package/package.json +1 -1
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ze={mode:"default",pageSize:20,backfillRequestDelayMs:2e3,page:1,itemWidth:300,prefetchThresholdPx:200,gapX:16,gapY:16,headerHeight:0,footerHeight:0,overscanPx:600};function Ge(l,y){return!l||l<=0||!y||y<=0?1:Math.max(1,Math.floor(l/y))}function Ke(l,y,B,o=0){if(!l||l<=0||!y||y<=0)return B;const i=typeof o=="number"&&o>0?o:0,b=Math.max(0,y-1)*i,w=l-b;return!w||w<=0?B:w/y}function Je(l,y){const B=l?.width,o=l?.height;return typeof B=="number"&&typeof o=="number"&&B>0&&o>0?o/B*y:y}function He(l){return Number.isFinite(l)&&l>0?Math.floor(l):1}function fe(l){return Number.isFinite(l)&&l>0?Math.floor(l):0}function Qe(l){async function y(o){const i=fe(o);if(i<=0)return;l.stats.value={...l.stats.value,cooldownMsTotal:i,cooldownMsRemaining:i};const b=Date.now(),w=100;await new Promise(h=>{const m=setInterval(()=>{const g=Date.now()-b,k=Math.max(0,i-g);l.stats.value={...l.stats.value,cooldownMsTotal:i,cooldownMsRemaining:k},k<=0&&(clearInterval(m),h())},w)})}async function B(o){const i=He(l.getPageSize()),b=l.isEnabled(),w=fe(l.getRequestDelayMs()),h=[];let m=0;l.buffer.value.length&&(m=l.buffer.value.length,h.push(...l.buffer.value),l.buffer.value=[]),l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,cooldownMsTotal:w,cooldownMsRemaining:0,progress:{collected:0,target:0},pageSize:i,bufferSize:0};const g=[];let k=o,F=0,I=!1;for(;h.length<i&&k!=null;){const N=k;I&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!0,requestPage:N,progress:{collected:Math.min(h.length,i),target:i},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:i});const x=await l.getContent(N);g.push(N),I&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!1,requestPage:null}),F+=x.items.length,l.markEnterFromLeft(x.items),h.push(...x.items),k=x.nextPage,!I&&h.length<i&&k!=null?(I=!0,l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!1,requestPage:null,progress:{collected:Math.min(h.length,i),target:i},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:i}):I&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,progress:{collected:Math.min(h.length,i),target:i}}),I&&h.length<i&&k!=null&&await y(w)}const E=h.slice(0,i),S=h.slice(i);return l.buffer.value=S,l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:i,bufferSize:S.length,lastBatch:{startPage:o,pages:g,usedFromBuffer:m,fetchedFromNetwork:F,collectedTotal:h.length,emitted:E.length,carried:S.length},totals:{pagesFetched:l.stats.value.totals.pagesFetched+g.length,itemsFetchedFromNetwork:l.stats.value.totals.itemsFetchedFromNetwork+F}},{batchItems:E,pages:g,nextPage:k}}return{loadBackfillBatch:B}}function Ze(l){const y=l.columnCount,B=l.columnWidth,o=l.gapX,i=l.gapY,b=l.headerHeight,w=l.footerHeight,h=l.bucketPx,m=Array.from({length:y},()=>0),g=new Array(l.items.length),k=new Array(l.items.length),F=new Map,I=new Map;let E=0;for(let S=0;S<l.items.length;S+=1){const N=l.items[S];N?.id&&I.set(N.id,S);let x=0;for(let M=1;M<m.length;M+=1)m[M]<m[x]&&(x=M);const z=x*(B+o),H=m[x],C=Je(N,B)+b+w;g[S]={x:z,y:H},k[S]=C,m[x]=H+C+i,E=Math.max(E,H+C);const G=Math.floor(H/h),K=Math.floor((H+C)/h);for(let M=G;M<=K;M+=1){const A=F.get(M);A?A.push(S):F.set(M,[S])}}return{positions:g,heights:k,buckets:F,contentHeight:E,indexById:I}}function et(l){const y=l.itemCount;if(!y)return[];if(l.viewportHeight<=0)return Array.from({length:y},(m,g)=>g);const B=Math.max(0,l.scrollTop-l.overscanPx),o=l.scrollTop+l.viewportHeight+l.overscanPx,i=Math.floor(B/l.bucketPx),b=Math.floor(o/l.bucketPx),w=new Set;for(let m=i;m<=b;m+=1){const g=l.buckets.get(m);if(g)for(const k of g)w.add(k)}const h=Array.from(w);return h.sort((m,g)=>m-g),h}const tt={key:0,class:"flex h-full items-center justify-center"},nt={key:1,class:"text-sm font-medium text-red-700"},lt=["src","width","height","alt"],at=["poster"],ot=["src"],st=["src","width","height","alt"],rt=["poster"],it=["src"],ct={class:"mt-4 pb-2 text-center text-xs text-slate-600"},ut={key:0,class:"inline-flex items-center justify-center gap-2"},ft={key:1},dt={key:2},mt=200,Ne=600,U=300,Ce=e.defineComponent({inheritAttrs:!1,__name:"Masonry",props:e.mergeDefaults({getContent:{},mode:{},pageSize:{},backfillRequestDelayMs:{},items:{},page:{},itemWidth:{},prefetchThresholdPx:{},gapX:{},gapY:{},headerHeight:{},footerHeight:{},overscanPx:{}},ze),emits:["update:items"],setup(l,{expose:y,emit:B}){const o=l,i=B,b=e.useAttrs(),w=e.useSlots(),h=e.computed(()=>{const{class:t,...a}=b;return a}),m=e.ref(null),g=e.ref(0),k=e.ref(0),F=e.ref(0);let I;const E=e.computed(()=>o.gapX),S=e.computed(()=>o.gapY);function N(t){if(!t)return 0;const a=Math.max(0,E.value);return Math.max(0,t.clientWidth-a)}const x=e.computed(()=>o.headerHeight),z=e.computed(()=>o.footerHeight),H=e.computed(()=>!!w.itemHeader),C=e.computed(()=>!!w.itemFooter),G=e.computed(()=>{if(x.value>0)return{height:`${x.value}px`}}),K=e.computed(()=>{if(z.value>0)return{height:`${z.value}px`}}),M=e.ref([]),A=e.ref([]),de=e.ref(new Map),me=e.ref(0),J=e.ref(new Map),q=e.ref(new Set),O=e.ref(new Set),ee=new Set,te=e.ref(new Map),R=e.ref(new Set),V=e.ref([]);function Re(t){const a=te.value.get(t);return a||{dx:0,dy:0}}function Ve(t){return O.value.has(t)||R.value.has(t)?`transform ${U}ms ease-out`:void 0}function _e(t){const n=r.value[t]?.id,s=M.value[t]??{x:0,y:0},c=A.value[t]??0,v=c>0?c:j.value,p=s.x,d=n&&q.value.has(n)?s.y-v:s.y,f=n?Re(n):{dx:0,dy:0};return`translate3d(${p+f.dx}px,${d+f.dy}px,0)`}function L(t){(typeof requestAnimationFrame=="function"?requestAnimationFrame:n=>setTimeout(()=>n(0),0))(()=>t())}function Ae(t){L(()=>L(t))}function ne(t){if(!Array.isArray(t)||t.length===0)return;const a=new Set(q.value);let n=!1;for(const s of t){const c=s?.id;c&&(a.has(c)||(a.add(c),n=!0))}n&&(q.value=a)}function ve(){const t=new Map;for(const a of ce.value){const s=r.value[a]?.id;if(!s)continue;const c=M.value[a];c&&t.set(s,{x:c.x,y:c.y})}return t}function he(t,a){if(!t.size)return;const n=new Map,s=[];for(const[v,p]of t.entries()){if(a?.has(v))continue;const d=J.value.get(v);if(d==null)continue;const f=M.value[d];if(!f)continue;const u=p.x-f.x,P=p.y-f.y;(u||P)&&(n.set(v,{dx:u,dy:P}),s.push(v))}if(!n.size)return;te.value=n;const c=new Set(R.value);for(const v of s)c.delete(v);R.value=c,L(()=>{R.value=new Set([...R.value,...s]),L(()=>{te.value=new Map})}),setTimeout(()=>{const v=new Set(R.value);for(const p of s)v.delete(p);R.value=v},U)}const Q=e.ref(!0),X=e.ref(!1),D=e.ref(""),_=e.ref([]),ge=e.ref([]),le=e.ref([]),T=e.ref(o.page),ae=e.ref([]);let oe=0;function $(t){for(const a of t)!a||typeof a!="object"||a.id&&a.originalIndex==null&&(a.originalIndex=oe,oe+=1)}const Y=new Map,se=[];function Z(t){return typeof t=="number"&&Number.isFinite(t)}function qe(t,a){if(!a.length)return t;const n=new Set;for(const p of t){const d=p?.id;d&&n.add(d)}const s=[];for(const p of a){const d=p?.id;d&&(n.has(d)||(s.push(p),n.add(d)))}if(!s.length)return t;const c=s.slice().sort((p,d)=>{const f=Z(p.originalIndex)?p.originalIndex:Number.POSITIVE_INFINITY,u=Z(d.originalIndex)?d.originalIndex:Number.POSITIVE_INFINITY;return f-u}),v=t.slice();for(const p of c){const d=p.originalIndex;if(!Z(d)){v.push(p);continue}let f=0,u=v.length;for(;f<u;){const P=f+u>>1,W=v[P]?.originalIndex;(Z(W)?W:Number.POSITIVE_INFINITY)<=d?f=P+1:u=P}v.splice(f,0,p)}return v}async function pe(t){if(!t.length)return;ne(t);const a=ve();r.value=qe(r.value,t),await e.nextTick(),he(a)}async function ye(t){const n=(Array.isArray(t)?t:[t]).map(xe).filter(Boolean);if(!n.length)return;const s=[];for(const c of n){const v=Y.get(c);v&&s.push(v)}if(s.length){await pe(s);for(const c of s)c?.id&&Y.delete(c.id)}}async function we(){const t=se.pop();if(!t?.length)return;const a=[];for(const n of t){const s=Y.get(n);s&&a.push(s)}if(a.length){await pe(a);for(const n of a)n?.id&&Y.delete(n.id)}}async function Le(t){return ye(t)}async function De(){return we()}const re=e.shallowRef({enabled:!1,isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsRemaining:0,cooldownMsTotal:2e3,pageSize:20,bufferSize:0,lastBatch:null,totals:{pagesFetched:0,itemsFetchedFromNetwork:0}}),ke=Qe({getContent:t=>o.getContent(t),markEnterFromLeft:ne,buffer:ae,stats:re,isEnabled:()=>o.mode==="backfill",getPageSize:()=>o.pageSize,getRequestDelayMs:()=>o.backfillRequestDelayMs}),ie=e.computed(()=>o.items!==void 0);e.watch(()=>o.items,t=>{ie.value&&(le.value=Array.isArray(t)?t:[])},{immediate:!0});const r=e.computed({get(){return ie.value?le.value:ge.value},set(t){ie.value?(le.value=t,i("update:items",t)):ge.value=t}});async function be(t){const a=await o.getContent(t);return $(a.items),ne(a.items),{items:a.items,nextPage:a.nextPage}}function xe(t){return t?typeof t=="string"?t:t?.id:null}async function Be(t){const n=(Array.isArray(t)?t:[t]).map(xe).filter(Boolean);if(!n.length)return;const s=new Set(n),c=[];for(const f of s){const u=J.value.get(f);if(u==null)continue;const P=r.value[u];P&&(Y.set(f,P),c.push(f))}c.length&&se.push(c);const v=ve(),p=j.value,d=[];for(const f of s){const u=J.value.get(f);if(u==null)continue;const P=r.value[u];if(!P)continue;const W=M.value[u]??{x:0,y:0},Te=A.value[u]??p;d.push({id:f,item:P,fromX:W.x,fromY:W.y,width:p,height:Te,leaving:!0})}if(d.length&&(V.value=[...V.value,...d]),r.value=r.value.filter(f=>{const u=f?.id;return!u||!s.has(u)}),await e.nextTick(),he(v,s),d.length){const f=new Set(d.map(u=>u.id));L(()=>{V.value=V.value.map(u=>f.has(u.id)?{...u,leaving:!1}:u),setTimeout(()=>{V.value=V.value.filter(u=>!f.has(u.id))},U)})}}async function Se(t){return Be(t)}y({remove:Be,restore:Le,undo:De,restoreRemoved:ye,undoLastRemoval:we,backfillStats:re});function Me(){const t=Ze({items:r.value,columnCount:ue.value,columnWidth:j.value,gapX:E.value,gapY:S.value,headerHeight:x.value,footerHeight:z.value,bucketPx:Ne});M.value=t.positions,A.value=t.heights,de.value=t.buckets,me.value=t.contentHeight,J.value=t.indexById}const Ye=e.computed(()=>Math.max(me.value,k.value)+mt),ce=e.computed(()=>et({itemCount:r.value.length,viewportHeight:k.value,scrollTop:F.value,overscanPx:o.overscanPx,bucketPx:Ne,buckets:de.value}));e.watch(ce,t=>{if(!t?.length)return;const a=[];for(const n of t){const s=r.value[n]?.id;s&&q.value.has(s)&&(ee.has(s)||(ee.add(s),a.push(s)))}a.length&&(L(()=>{const n=new Set(O.value);for(const s of a)n.add(s);O.value=n}),Ae(()=>{const n=new Set(q.value);for(const s of a)n.delete(s);q.value=n,setTimeout(()=>{const s=new Set(O.value);for(const c of a)s.delete(c),ee.delete(c);O.value=s},U)}))},{flush:"post"});async function Oe(){if(!(Q.value||X.value)&&!(o.mode!=="backfill"&&T.value==null)&&!(o.mode==="backfill"&&T.value==null&&ae.value.length===0))try{if(X.value=!0,D.value="",o.mode==="backfill"){const n=await ke.loadBackfillBatch(T.value);n.pages.length&&(_.value=[..._.value,...n.pages]),$(n.batchItems),r.value=[...r.value,...n.batchItems],T.value=n.nextPage;return}const t=T.value;if(t==null)return;const a=await be(t);_.value=[..._.value,t],$(a.items),r.value=[...r.value,...a.items],T.value=a.nextPage}catch(t){D.value=t instanceof Error?t.message:String(t)}finally{X.value=!1}}function Xe(){const t=m.value;if(!t)return;F.value=t.scrollTop,k.value=t.clientHeight,t.scrollHeight-(t.scrollTop+t.clientHeight)<=o.prefetchThresholdPx&&Oe()}function Ie(){return m.value}function Ee(t){g.value=N(t),k.value=t.clientHeight}function $e(){typeof ResizeObserver>"u"||(I=new ResizeObserver(()=>{const t=Ie();t&&Ee(t)}))}function je(){return{enabled:o.mode==="backfill",isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsRemaining:0,cooldownMsTotal:fe(o.backfillRequestDelayMs),pageSize:He(o.pageSize),bufferSize:0,lastBatch:null,totals:{pagesFetched:0,itemsFetchedFromNetwork:0}}}function Pe(t){oe=0,Y.clear(),se.length=0,_.value=[],r.value=[],T.value=t,ae.value=[],re.value=je(),Q.value=!0,X.value=!1,D.value=""}async function Fe(t){try{if(o.mode==="backfill"){const a=await ke.loadBackfillBatch(t);_.value=a.pages.length?a.pages:[t],$(a.batchItems),r.value=a.batchItems,T.value=a.nextPage}else{const a=await be(t);_.value=[t],$(a.items),r.value=a.items,T.value=a.nextPage}}catch(a){D.value=a instanceof Error?a.message:String(a)}finally{Q.value=!1}}function We(){const t=Ie();t&&(Ee(t),F.value=t.scrollTop,I?.observe(t))}e.onMounted(async()=>{$e(),Pe(o.page),await Fe(o.page),await e.nextTick(),We()}),e.onUnmounted(()=>{I?.disconnect()}),e.watch(()=>o.page,async t=>{Pe(t),await Fe(t)}),e.watch(E,()=>{const t=m.value;t&&(g.value=N(t))},{immediate:!1});const ue=e.computed(()=>Ge(g.value,o.itemWidth)),j=e.computed(()=>Ke(g.value,ue.value,o.itemWidth,E.value));e.watch([ue,j,E,S,x,z],()=>{Me()},{immediate:!0}),e.watch(()=>[r.value,r.value.length],()=>Me(),{immediate:!0});const Ue=e.computed(()=>["mt-8 flex min-h-0 flex-1 flex-col rounded-2xl border border-slate-200/70 bg-white/70 p-5 shadow-sm backdrop-blur",b.class]);return(t,a)=>(e.openBlock(),e.createElementBlock("section",e.mergeProps(h.value,{class:Ue.value}),[e.createElementVNode("div",{ref_key:"scrollViewportRef",ref:m,"data-testid":"items-scroll-container",class:"mt-4 min-h-0 flex-1 overflow-auto",style:e.normalizeStyle({paddingRight:E.value+"px"}),onScroll:Xe},[Q.value?(e.openBlock(),e.createElementBlock("div",tt,a[0]||(a[0]=[e.createElementVNode("div",{class:"inline-flex items-center gap-3 text-sm text-slate-600"},[e.createElementVNode("svg",{class:"h-5 w-5 animate-spin text-slate-500",viewBox:"0 0 24 24","aria-hidden":"true"},[e.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"4"}),e.createElementVNode("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z"})]),e.createElementVNode("span",null,"Loading…")],-1)]))):D.value?(e.openBlock(),e.createElementBlock("p",nt,"Error: "+e.toDisplayString(D.value),1)):(e.openBlock(),e.createElementBlock("div",{key:2,class:"relative",style:e.normalizeStyle({height:Ye.value+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ce.value,n=>(e.openBlock(),e.createElementBlock("article",{key:r.value[n].id,"data-testid":"item-card",class:"absolute overflow-hidden rounded-xl border border-slate-200/60 bg-white shadow-sm",style:e.normalizeStyle({width:j.value+"px",transition:Ve(r.value[n].id),transform:_e(n)})},[H.value||x.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"item-header-container",class:"w-full",style:e.normalizeStyle(G.value)},[e.renderSlot(t.$slots,"itemHeader",{item:r.value[n],remove:()=>Se(r.value[n])})],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"bg-slate-100",style:e.normalizeStyle({aspectRatio:r.value[n].width+" / "+r.value[n].height})},[r.value[n].type==="image"?(e.openBlock(),e.createElementBlock("img",{key:0,class:"h-full w-full object-cover",src:r.value[n].preview,width:r.value[n].width,height:r.value[n].height,loading:"lazy",alt:r.value[n].id},null,8,lt)):(e.openBlock(),e.createElementBlock("video",{key:1,class:"h-full w-full object-cover",poster:r.value[n].preview,controls:"",preload:"metadata"},[e.createElementVNode("source",{src:r.value[n].original,type:"video/mp4"},null,8,ot)],8,at))],4),C.value||z.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,"data-testid":"item-footer-container",class:"w-full",style:e.normalizeStyle(K.value)},[e.renderSlot(t.$slots,"itemFooter",{item:r.value[n],remove:()=>Se(r.value[n])})],4)):e.createCommentVNode("",!0)],4))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,n=>(e.openBlock(),e.createElementBlock("article",{key:n.id+":leaving","data-testid":"item-card-leaving",class:"pointer-events-none absolute overflow-hidden rounded-xl border border-slate-200/60 bg-white shadow-sm",style:e.normalizeStyle({width:n.width+"px",transition:"transform "+U+"ms ease-out",transform:n.leaving?"translate3d("+n.fromX+"px,"+n.fromY+"px,0)":"translate3d("+n.fromX+"px,"+(n.fromY-n.height)+"px,0)"})},[H.value||x.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,"data-testid":"item-header-container",class:"w-full",style:e.normalizeStyle(G.value)},[e.renderSlot(t.$slots,"itemHeader",{item:n.item,remove:()=>{}})],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"bg-slate-100",style:e.normalizeStyle({aspectRatio:n.item.width+" / "+n.item.height})},[n.item.type==="image"?(e.openBlock(),e.createElementBlock("img",{key:0,class:"h-full w-full object-cover",src:n.item.preview,width:n.item.width,height:n.item.height,loading:"lazy",alt:n.item.id},null,8,st)):(e.openBlock(),e.createElementBlock("video",{key:1,class:"h-full w-full object-cover",poster:n.item.preview,controls:"",preload:"metadata"},[e.createElementVNode("source",{src:n.item.original,type:"video/mp4"},null,8,it)],8,rt))],4),C.value||z.value>0?(e.openBlock(),e.createElementBlock("div",{key:1,"data-testid":"item-footer-container",class:"w-full",style:e.normalizeStyle(K.value)},[e.renderSlot(t.$slots,"itemFooter",{item:n.item,remove:()=>{}})],4)):e.createCommentVNode("",!0)],4))),128))],4)),e.createElementVNode("div",ct,[X.value?(e.openBlock(),e.createElementBlock("span",ut,a[1]||(a[1]=[e.createElementVNode("svg",{class:"h-4 w-4 animate-spin text-slate-500",viewBox:"0 0 24 24","aria-hidden":"true"},[e.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"4"}),e.createElementVNode("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z"})],-1),e.createElementVNode("span",null,"Loading more…",-1)]))):T.value==null?(e.openBlock(),e.createElementBlock("span",ft,"End of list")):(e.openBlock(),e.createElementBlock("span",dt,"Scroll to load page "+e.toDisplayString(T.value),1))])],36)],16))}}),vt={install(l){l.component("Masonry",Ce)}};exports.Masonry=Ce;exports.VibePlugin=vt;exports.masonryDefaults=ze;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),$e={mode:"default",pageSize:20,backfillRequestDelayMs:2e3,page:1,itemWidth:300,prefetchThresholdPx:200,gapX:16,gapY:16,headerHeight:0,footerHeight:0,overscanPx:600};function it(l,y){return!l||l<=0||!y||y<=0?1:Math.max(1,Math.floor(l/y))}function ct(l,y,B,r=0){if(!l||l<=0||!y||y<=0)return B;const c=typeof r=="number"&&r>0?r:0,b=Math.max(0,y-1)*c,w=l-b;return!w||w<=0?B:w/y}function ut(l,y){const B=l?.width,r=l?.height;return typeof B=="number"&&typeof r=="number"&&B>0&&r>0?r/B*y:y}function Xe(l){return Number.isFinite(l)&&l>0?Math.floor(l):1}function he(l){return Number.isFinite(l)&&l>0?Math.floor(l):0}function ft(l){async function y(r){const c=he(r);if(c<=0)return;l.stats.value={...l.stats.value,cooldownMsTotal:c,cooldownMsRemaining:c};const b=Date.now(),w=100;await new Promise(g=>{const v=setInterval(()=>{const p=Date.now()-b,k=Math.max(0,c-p);l.stats.value={...l.stats.value,cooldownMsTotal:c,cooldownMsRemaining:k},k<=0&&(clearInterval(v),g())},w)})}async function B(r){const c=Xe(l.getPageSize()),b=l.isEnabled(),w=he(l.getRequestDelayMs()),g=[];let v=0;l.buffer.value.length&&(v=l.buffer.value.length,g.push(...l.buffer.value),l.buffer.value=[]),l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,cooldownMsTotal:w,cooldownMsRemaining:0,progress:{collected:0,target:0},pageSize:c,bufferSize:0};const p=[];let k=r,T=0,E=!1;for(;g.length<c&&k!=null;){const _=k;E&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!0,requestPage:_,progress:{collected:Math.min(g.length,c),target:c},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:c});const x=await l.getContent(_);p.push(_),E&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!1,requestPage:null}),T+=x.items.length,l.markEnterFromLeft(x.items),g.push(...x.items),k=x.nextPage,!E&&g.length<c&&k!=null?(E=!0,l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!1,requestPage:null,progress:{collected:Math.min(g.length,c),target:c},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:c}):E&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,progress:{collected:Math.min(g.length,c),target:c}}),E&&g.length<c&&k!=null&&await y(w)}const F=g.slice(0,c),S=g.slice(c);return l.buffer.value=S,l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:c,bufferSize:S.length,lastBatch:{startPage:r,pages:p,usedFromBuffer:v,fetchedFromNetwork:T,collectedTotal:g.length,emitted:F.length,carried:S.length},totals:{pagesFetched:l.stats.value.totals.pagesFetched+p.length,itemsFetchedFromNetwork:l.stats.value.totals.itemsFetchedFromNetwork+T}},{batchItems:F,pages:p,nextPage:k}}return{loadBackfillBatch:B}}function dt(l){const y=l.columnCount,B=l.columnWidth,r=l.gapX,c=l.gapY,b=l.headerHeight,w=l.footerHeight,g=l.bucketPx,v=Array.from({length:y},()=>0),p=new Array(l.items.length),k=new Array(l.items.length),T=new Map,E=new Map;let F=0;for(let S=0;S<l.items.length;S+=1){const _=l.items[S];_?.id&&E.set(_.id,S);let x=0;for(let M=1;M<v.length;M+=1)v[M]<v[x]&&(x=M);const A=x*(B+r),R=v[x],H=ut(_,B)+b+w;p[S]={x:A,y:R},k[S]=H,v[x]=R+H+c,F=Math.max(F,R+H);const Q=Math.floor(R/g),Z=Math.floor((R+H)/g);for(let M=Q;M<=Z;M+=1){const Y=T.get(M);Y?Y.push(S):T.set(M,[S])}}return{positions:p,heights:k,buckets:T,contentHeight:F,indexById:E}}function mt(l){const y=l.itemCount;if(!y)return[];if(l.viewportHeight<=0)return Array.from({length:y},(v,p)=>p);const B=Math.max(0,l.scrollTop-l.overscanPx),r=l.scrollTop+l.viewportHeight+l.overscanPx,c=Math.floor(B/l.bucketPx),b=Math.floor(r/l.bucketPx),w=new Set;for(let v=c;v<=b;v+=1){const p=l.buckets.get(v);if(p)for(const k of p)w.add(k)}const g=Array.from(w);return g.sort((v,p)=>v-p),g}const ht={key:0,class:"flex h-full items-center justify-center"},vt={key:1,class:"text-sm font-medium text-red-700"},gt=["src","width","height","alt"],pt=["poster"],yt=["src"],wt=["src","width","height","alt"],kt=["poster"],bt=["src"],xt={class:"mt-4 pb-2 text-center text-xs text-slate-600"},Bt={key:0,class:"inline-flex items-center justify-center gap-2"},St={key:1},Mt={key:2},It=200,Le=600,De=300,Ye=600,Oe=600,Et=5,Ft=1e3,je=t.defineComponent({inheritAttrs:!1,__name:"Masonry",props:t.mergeDefaults({getContent:{},mode:{},pageSize:{},backfillRequestDelayMs:{},items:{},page:{},itemWidth:{},prefetchThresholdPx:{},gapX:{},gapY:{},headerHeight:{},footerHeight:{},overscanPx:{}},$e),emits:["update:items"],setup(l,{expose:y,emit:B}){const r=l,c=B,b=t.useAttrs(),w=t.useSlots(),g=t.computed(()=>{const{class:e,...o}=b;return o}),v=t.ref(null),p=t.ref(0),k=t.ref(0),T=t.ref(0);let E;const F=t.computed(()=>r.gapX),S=t.computed(()=>r.gapY);function _(e){if(!e)return 0;const o=Math.max(0,F.value);return Math.max(0,e.clientWidth-o)}const x=t.computed(()=>r.headerHeight),A=t.computed(()=>r.footerHeight),R=t.computed(()=>!!w.itemHeader),H=t.computed(()=>!!w.itemFooter),Q=t.computed(()=>{if(x.value>0)return{height:`${x.value}px`}}),Z=t.computed(()=>{if(A.value>0)return{height:`${A.value}px`}}),M=t.ref([]),Y=t.ref([]),ve=t.ref(new Map),ge=t.ref(0),ee=t.ref(new Map);function pe(e){const o=typeof e=="number"&&Number.isFinite(e)?e:0;return-Math.max(0,o)}const V=t.ref(new Set),O=t.ref(new Set),te=new Set,ne=t.ref(new Map),z=t.ref(new Set),C=t.ref([]);function We(e){const o=ne.value.get(e);return o||{dx:0,dy:0}}function Ge(e){if(O.value.has(e))return`transform ${Ye}ms ease-out`;if(z.value.has(e))return`transform ${De}ms ease-out`}function Ue(e){const n=i.value[e]?.id,a=M.value[e]??{x:0,y:0},s=Y.value[e]??0,d=s>0?s:K.value,u=a.x,m=n&&V.value.has(n)?pe(d):a.y,h=n?We(n):{dx:0,dy:0};return`translate3d(${u+h.dx}px,${m+h.dy}px,0)`}function $(e){(typeof requestAnimationFrame=="function"?requestAnimationFrame:n=>setTimeout(()=>n(0),0))(()=>e())}function Ke(e){$(()=>$(e))}const ye=new Set;function we(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function ae(e){if(!Array.isArray(e)||e.length===0)return;const o=new Set(V.value);let n=!1;for(const a of e){const s=a?.id;if(s){if(!ye.has(s)){const d=a?.width,u=a?.height;(!we(d)||!we(u))&&(ye.add(s),console.warn(`[Masonry] Item "${s}" has invalid dimensions (width=${String(d)}, height=${String(u)}); layout expects { id, width, height }.`))}o.has(s)||(o.add(s),n=!0)}}n&&(V.value=o)}function ke(){const e=new Map;for(const o of de.value){const a=i.value[o]?.id;if(!a)continue;const s=M.value[o];s&&e.set(a,{x:s.x,y:s.y})}return e}function be(e,o){if(!e.size)return;const n=new Map,a=[];for(const[d,u]of e.entries()){if(o?.has(d))continue;const m=ee.value.get(d);if(m==null)continue;const h=M.value[m];if(!h)continue;const f=u.x-h.x,P=u.y-h.y;(f||P)&&(n.set(d,{dx:f,dy:P}),a.push(d))}if(!n.size)return;ne.value=n;const s=new Set(z.value);for(const d of a)s.delete(d);z.value=s,$(()=>{z.value=new Set([...z.value,...a]),$(()=>{ne.value=new Map})}),setTimeout(()=>{const d=new Set(z.value);for(const u of a)d.delete(u);z.value=d},De)}const le=t.ref(!0),G=t.ref(!1),X=t.ref("");let I=0;function xe(e){return e instanceof Error&&e.name==="AbortError"}function Be(){const e=new Error("aborted");return e.name="AbortError",e}function Je(e){return new Promise(o=>setTimeout(o,e))}async function Se(e,o){let n=0;for(;;){if(o!==I)throw Be();try{return await r.getContent(e)}catch(a){if(o!==I)throw Be();if(n>=Et)throw a;n+=1,await Je(n*Ft)}}}const q=t.ref([]),Me=t.ref([]),se=t.ref([]),N=t.ref(r.page),re=t.ref([]);let j=null,W=null,ie=0;function U(e){for(const o of e)!o||typeof o!="object"||o.id&&o.originalIndex==null&&(o.originalIndex=ie,ie+=1)}const L=new Map,D=[];function oe(e){return typeof e=="number"&&Number.isFinite(e)}function Qe(e,o){if(!o.length)return e;const n=new Set;for(const u of e){const m=u?.id;m&&n.add(m)}const a=[];for(const u of o){const m=u?.id;m&&(n.has(m)||(a.push(u),n.add(m)))}if(!a.length)return e;const s=a.slice().sort((u,m)=>{const h=oe(u.originalIndex)?u.originalIndex:Number.POSITIVE_INFINITY,f=oe(m.originalIndex)?m.originalIndex:Number.POSITIVE_INFINITY;return h-f}),d=e.slice();for(const u of s){const m=u.originalIndex;if(!oe(m)){d.push(u);continue}let h=0,f=d.length;for(;h<f;){const P=h+f>>1,J=d[P]?.originalIndex;(oe(J)?J:Number.POSITIVE_INFINITY)<=m?h=P+1:f=P}d.splice(h,0,u)}return d}async function Ie(e){if(!e.length)return;ae(e);const o=ke();i.value=Qe(i.value,e),await t.nextTick(),be(o)}async function Ee(e){const n=(Array.isArray(e)?e:[e]).map(fe).filter(Boolean);if(!n.length)return;const a=[];for(const s of n){const d=L.get(s);d&&a.push(d)}if(a.length){await Ie(a);for(const s of a)s?.id&&L.delete(s.id)}}async function Fe(){const e=D.pop();if(!e?.length)return;const o=[];for(const n of e){const a=L.get(n);a&&o.push(a)}if(o.length){await Ie(o);for(const n of o)n?.id&&L.delete(n.id)}}async function Ze(e){return Ee(e)}async function et(){return Fe()}function Pe(e){const n=(Array.isArray(e)?e:[e]).map(fe).filter(Boolean);if(!n.length)return;const a=new Set(n);for(const s of a)L.delete(s);for(let s=D.length-1;s>=0;s-=1){const u=D[s].filter(m=>!a.has(m));u.length?D[s]=u:D.splice(s,1)}}const ce=t.shallowRef({enabled:!1,isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsRemaining:0,cooldownMsTotal:2e3,pageSize:20,bufferSize:0,lastBatch:null,totals:{pagesFetched:0,itemsFetchedFromNetwork:0}}),Te=ft({getContent:e=>Se(e,I),markEnterFromLeft:ae,buffer:re,stats:ce,isEnabled:()=>r.mode==="backfill",getPageSize:()=>r.pageSize,getRequestDelayMs:()=>r.backfillRequestDelayMs}),ue=t.computed(()=>r.items!==void 0);t.watch(()=>r.items,e=>{ue.value&&(se.value=Array.isArray(e)?e:[])},{immediate:!0});const i=t.computed({get(){return ue.value?se.value:Me.value},set(e){ue.value?(se.value=e,c("update:items",e)):Me.value=e}});async function Ne(e){const o=await Se(e,I);return U(o.items),ae(o.items),{items:o.items,nextPage:o.nextPage}}function fe(e){return e?typeof e=="string"?e:e?.id:null}async function _e(e){const n=(Array.isArray(e)?e:[e]).map(fe).filter(Boolean);if(!n.length)return;const a=new Set(n),s=[];for(const h of a){const f=ee.value.get(h);if(f==null)continue;const P=i.value[f];P&&(L.set(h,P),s.push(h))}s.length&&D.push(s);const d=ke(),u=K.value,m=[];for(const h of a){const f=ee.value.get(h);if(f==null)continue;const P=i.value[f];if(!P)continue;const J=M.value[f]??{x:0,y:0},qe=Y.value[f]??u;m.push({id:h,item:P,fromX:J.x,fromY:J.y,width:u,height:qe,leaving:!0})}if(m.length&&(C.value=[...C.value,...m]),i.value=i.value.filter(h=>{const f=h?.id;return!f||!a.has(f)}),await t.nextTick(),be(d,a),m.length){const h=new Set(m.map(f=>f.id));$(()=>{C.value=C.value.map(f=>h.has(f.id)?{...f,leaving:!1}:f),setTimeout(()=>{C.value=C.value.filter(f=>!h.has(f.id))},Oe)})}}async function Ae(e){return _e(e)}y({remove:_e,restore:Ze,undo:et,forget:Pe,restoreRemoved:Ee,undoLastRemoval:Fe,forgetRemoved:Pe,backfillStats:ce});function Re(){const e=dt({items:i.value,columnCount:me.value,columnWidth:K.value,gapX:F.value,gapY:S.value,headerHeight:x.value,footerHeight:A.value,bucketPx:Le});M.value=e.positions,Y.value=e.heights,ve.value=e.buckets,ge.value=e.contentHeight,ee.value=e.indexById}const tt=t.computed(()=>Math.max(ge.value,k.value)+It),de=t.computed(()=>mt({itemCount:i.value.length,viewportHeight:k.value,scrollTop:T.value,overscanPx:r.overscanPx,bucketPx:Le,buckets:ve.value}));t.watch(de,e=>{if(!e?.length)return;const o=[];for(const n of e){const a=i.value[n]?.id;a&&V.value.has(a)&&(te.has(a)||(te.add(a),o.push(a)))}o.length&&($(()=>{const n=new Set(O.value);for(const a of o)n.add(a);O.value=n}),Ke(()=>{const n=new Set(V.value);for(const a of o)n.delete(a);V.value=n,setTimeout(()=>{const a=new Set(O.value);for(const s of o)a.delete(s),te.delete(s);O.value=a},Ye)}))},{flush:"post"});async function nt(){if(j)return j;if(le.value||G.value||r.mode!=="backfill"&&N.value==null||r.mode==="backfill"&&N.value==null&&re.value.length===0)return;const e=I;let o=null;return o=(async()=>{try{if(G.value=!0,X.value="",r.mode==="backfill"){const s=await Te.loadBackfillBatch(N.value);if(e!==I)return;s.pages.length&&(q.value=[...q.value,...s.pages]),U(s.batchItems),i.value=[...i.value,...s.batchItems],N.value=s.nextPage;return}const n=N.value;if(n==null)return;const a=await Ne(n);if(e!==I)return;q.value=[...q.value,n],U(a.items),i.value=[...i.value,...a.items],N.value=a.nextPage}catch(n){if(e!==I||xe(n))return;X.value=n instanceof Error?n.message:String(n)}finally{e===I&&(G.value=!1),j===o&&(j=null)}})(),j=o,o}function lt(){const e=v.value;if(!e)return;T.value=e.scrollTop,k.value=e.clientHeight,e.scrollHeight-(e.scrollTop+e.clientHeight)<=r.prefetchThresholdPx&&nt()}function ze(){return v.value}function Ce(e){p.value=_(e),k.value=e.clientHeight}function ot(){typeof ResizeObserver>"u"||(E=new ResizeObserver(()=>{const e=ze();e&&Ce(e)}))}function at(){return{enabled:r.mode==="backfill",isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsRemaining:0,cooldownMsTotal:he(r.backfillRequestDelayMs),pageSize:Xe(r.pageSize),bufferSize:0,lastBatch:null,totals:{pagesFetched:0,itemsFetchedFromNetwork:0}}}function He(e){I+=1,j=null,W=null,ie=0,L.clear(),D.length=0,V.value=new Set,O.value=new Set,te.clear(),ne.value=new Map,z.value=new Set,C.value=[],q.value=[],i.value=[],N.value=e,re.value=[],ce.value=at(),le.value=!0,G.value=!1,X.value=""}async function Ve(e){if(W)return W;const o=I;let n=null;return n=(async()=>{try{if(r.mode==="backfill"){const a=await Te.loadBackfillBatch(e);if(o!==I)return;q.value=a.pages.length?a.pages:[e],U(a.batchItems),i.value=a.batchItems,N.value=a.nextPage}else{const a=await Ne(e);if(o!==I)return;q.value=[e],U(a.items),i.value=a.items,N.value=a.nextPage}}catch(a){if(o!==I||xe(a))return;X.value=a instanceof Error?a.message:String(a)}finally{o===I&&(le.value=!1),W===n&&(W=null)}})(),W=n,n}function st(){const e=ze();e&&(Ce(e),T.value=e.scrollTop,E?.observe(e))}t.onMounted(async()=>{ot(),st(),He(r.page),await Ve(r.page)}),t.onUnmounted(()=>{E?.disconnect()}),t.watch(()=>r.page,async e=>{He(e),await Ve(e)}),t.watch(F,()=>{const e=v.value;e&&(p.value=_(e))},{immediate:!1});const me=t.computed(()=>it(p.value,r.itemWidth)),K=t.computed(()=>ct(p.value,me.value,r.itemWidth,F.value));t.watch([me,K,F,S,x,A],()=>{Re()},{immediate:!0}),t.watch(()=>[i.value,i.value.length],()=>Re(),{immediate:!0});const rt=t.computed(()=>["mt-8 flex min-h-0 flex-1 flex-col rounded-2xl border border-slate-200/70 bg-white/70 p-5 shadow-sm backdrop-blur",b.class]);return(e,o)=>(t.openBlock(),t.createElementBlock("section",t.mergeProps(g.value,{class:rt.value}),[t.createElementVNode("div",{ref_key:"scrollViewportRef",ref:v,"data-testid":"items-scroll-container",class:"mt-4 min-h-0 flex-1 overflow-auto",style:t.normalizeStyle({paddingRight:F.value+"px"}),onScroll:lt},[le.value?(t.openBlock(),t.createElementBlock("div",ht,o[0]||(o[0]=[t.createElementVNode("div",{class:"inline-flex items-center gap-3 text-sm text-slate-600"},[t.createElementVNode("svg",{class:"h-5 w-5 animate-spin text-slate-500",viewBox:"0 0 24 24","aria-hidden":"true"},[t.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"4"}),t.createElementVNode("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z"})]),t.createElementVNode("span",null,"Loading…")],-1)]))):X.value?(t.openBlock(),t.createElementBlock("p",vt,"Error: "+t.toDisplayString(X.value),1)):(t.openBlock(),t.createElementBlock("div",{key:2,class:"relative",style:t.normalizeStyle({height:tt.value+"px"})},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(de.value,n=>(t.openBlock(),t.createElementBlock("article",{key:i.value[n].id,"data-testid":"item-card",class:"absolute overflow-hidden rounded-xl border border-slate-200/60 bg-white shadow-sm",style:t.normalizeStyle({width:K.value+"px",transition:Ge(i.value[n].id),transform:Ue(n)})},[R.value||x.value>0?(t.openBlock(),t.createElementBlock("div",{key:0,"data-testid":"item-header-container",class:"w-full",style:t.normalizeStyle(Q.value)},[t.renderSlot(e.$slots,"itemHeader",{item:i.value[n],remove:()=>Ae(i.value[n])})],4)):t.createCommentVNode("",!0),t.createElementVNode("div",{class:"bg-slate-100",style:t.normalizeStyle({aspectRatio:i.value[n].width+" / "+i.value[n].height})},[i.value[n].type==="image"?(t.openBlock(),t.createElementBlock("img",{key:0,class:"h-full w-full object-cover",src:i.value[n].preview,width:i.value[n].width,height:i.value[n].height,loading:"lazy",alt:i.value[n].id},null,8,gt)):(t.openBlock(),t.createElementBlock("video",{key:1,class:"h-full w-full object-cover",poster:i.value[n].preview,controls:"",preload:"metadata"},[t.createElementVNode("source",{src:i.value[n].original,type:"video/mp4"},null,8,yt)],8,pt))],4),H.value||A.value>0?(t.openBlock(),t.createElementBlock("div",{key:1,"data-testid":"item-footer-container",class:"w-full",style:t.normalizeStyle(Z.value)},[t.renderSlot(e.$slots,"itemFooter",{item:i.value[n],remove:()=>Ae(i.value[n])})],4)):t.createCommentVNode("",!0)],4))),128)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(C.value,n=>(t.openBlock(),t.createElementBlock("article",{key:n.id+":leaving","data-testid":"item-card-leaving",class:"pointer-events-none absolute overflow-hidden rounded-xl border border-slate-200/60 bg-white shadow-sm",style:t.normalizeStyle({width:n.width+"px",transition:"transform "+Oe+"ms ease-out",transform:n.leaving?"translate3d("+n.fromX+"px,"+n.fromY+"px,0)":"translate3d("+n.fromX+"px,"+pe(n.height)+"px,0)"})},[R.value||x.value>0?(t.openBlock(),t.createElementBlock("div",{key:0,"data-testid":"item-header-container",class:"w-full",style:t.normalizeStyle(Q.value)},[t.renderSlot(e.$slots,"itemHeader",{item:n.item,remove:()=>{}})],4)):t.createCommentVNode("",!0),t.createElementVNode("div",{class:"bg-slate-100",style:t.normalizeStyle({aspectRatio:n.item.width+" / "+n.item.height})},[n.item.type==="image"?(t.openBlock(),t.createElementBlock("img",{key:0,class:"h-full w-full object-cover",src:n.item.preview,width:n.item.width,height:n.item.height,loading:"lazy",alt:n.item.id},null,8,wt)):(t.openBlock(),t.createElementBlock("video",{key:1,class:"h-full w-full object-cover",poster:n.item.preview,controls:"",preload:"metadata"},[t.createElementVNode("source",{src:n.item.original,type:"video/mp4"},null,8,bt)],8,kt))],4),H.value||A.value>0?(t.openBlock(),t.createElementBlock("div",{key:1,"data-testid":"item-footer-container",class:"w-full",style:t.normalizeStyle(Z.value)},[t.renderSlot(e.$slots,"itemFooter",{item:n.item,remove:()=>{}})],4)):t.createCommentVNode("",!0)],4))),128))],4)),t.createElementVNode("div",xt,[G.value?(t.openBlock(),t.createElementBlock("span",Bt,o[1]||(o[1]=[t.createElementVNode("svg",{class:"h-4 w-4 animate-spin text-slate-500",viewBox:"0 0 24 24","aria-hidden":"true"},[t.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"4"}),t.createElementVNode("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 0 1 8-8v4a4 4 0 0 0-4 4H4z"})],-1),t.createElementVNode("span",null,"Loading more…",-1)]))):N.value==null?(t.openBlock(),t.createElementBlock("span",St,"End of list")):(t.openBlock(),t.createElementBlock("span",Mt,"Scroll to load page "+t.toDisplayString(N.value),1))])],36)],16))}}),Pt={install(l){l.component("Masonry",je)}};exports.Masonry=je;exports.VibePlugin=Pt;exports.masonryDefaults=$e;