@wyxos/vibe 2.0.2 → 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 +474 -418
  3. package/package.json +1 -1
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),Ae={mode:"default",pageSize:20,backfillRequestDelayMs:2e3,page:1,itemWidth:300,prefetchThresholdPx:200,gapX:16,gapY:16,headerHeight:0,footerHeight:0,overscanPx:600};function Ze(l,y){return!l||l<=0||!y||y<=0?1:Math.max(1,Math.floor(l/y))}function et(l,y,B,s=0){if(!l||l<=0||!y||y<=0)return B;const c=typeof s=="number"&&s>0?s:0,b=Math.max(0,y-1)*c,w=l-b;return!w||w<=0?B:w/y}function tt(l,y){const B=l?.width,s=l?.height;return typeof B=="number"&&typeof s=="number"&&B>0&&s>0?s/B*y:y}function Ce(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 nt(l){async function y(s){const c=fe(s);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 h=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(h),g())},w)})}async function B(s){const c=Ce(l.getPageSize()),b=l.isEnabled(),w=fe(l.getRequestDelayMs()),g=[];let h=0;l.buffer.value.length&&(h=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=s,F=0,I=!1;for(;g.length<c&&k!=null;){const T=k;I&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!0,requestPage:T,progress:{collected:Math.min(g.length,c),target:c},cooldownMsTotal:w,cooldownMsRemaining:0,pageSize:c});const x=await l.getContent(T);p.push(T),I&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,isRequestInFlight:!1,requestPage:null}),F+=x.items.length,l.markEnterFromLeft(x.items),g.push(...x.items),k=x.nextPage,!I&&g.length<c&&k!=null?(I=!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}):I&&(l.stats.value={...l.stats.value,enabled:b,isBackfillActive:!0,progress:{collected:Math.min(g.length,c),target:c}}),I&&g.length<c&&k!=null&&await y(w)}const E=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:s,pages:p,usedFromBuffer:h,fetchedFromNetwork:F,collectedTotal:g.length,emitted:E.length,carried:S.length},totals:{pagesFetched:l.stats.value.totals.pagesFetched+p.length,itemsFetchedFromNetwork:l.stats.value.totals.itemsFetchedFromNetwork+F}},{batchItems:E,pages:p,nextPage:k}}return{loadBackfillBatch:B}}function lt(l){const y=l.columnCount,B=l.columnWidth,s=l.gapX,c=l.gapY,b=l.headerHeight,w=l.footerHeight,g=l.bucketPx,h=Array.from({length:y},()=>0),p=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 T=l.items[S];T?.id&&I.set(T.id,S);let x=0;for(let M=1;M<h.length;M+=1)h[M]<h[x]&&(x=M);const z=x*(B+s),_=h[x],H=tt(T,B)+b+w;p[S]={x:z,y:_},k[S]=H,h[x]=_+H+c,E=Math.max(E,_+H);const G=Math.floor(_/g),K=Math.floor((_+H)/g);for(let M=G;M<=K;M+=1){const L=F.get(M);L?L.push(S):F.set(M,[S])}}return{positions:p,heights:k,buckets:F,contentHeight:E,indexById:I}}function ot(l){const y=l.itemCount;if(!y)return[];if(l.viewportHeight<=0)return Array.from({length:y},(h,p)=>p);const B=Math.max(0,l.scrollTop-l.overscanPx),s=l.scrollTop+l.viewportHeight+l.overscanPx,c=Math.floor(B/l.bucketPx),b=Math.floor(s/l.bucketPx),w=new Set;for(let h=c;h<=b;h+=1){const p=l.buckets.get(h);if(p)for(const k of p)w.add(k)}const g=Array.from(w);return g.sort((h,p)=>h-p),g}const at={key:0,class:"flex h-full items-center justify-center"},st={key:1,class:"text-sm font-medium text-red-700"},rt=["src","width","height","alt"],it=["poster"],ct=["src"],ut=["src","width","height","alt"],ft=["poster"],dt=["src"],mt={class:"mt-4 pb-2 text-center text-xs text-slate-600"},vt={key:0,class:"inline-flex items-center justify-center gap-2"},ht={key:1},gt={key:2},pt=200,ze=600,_e=300,He=600,Re=600,Ve=t.defineComponent({inheritAttrs:!1,__name:"Masonry",props:t.mergeDefaults({getContent:{},mode:{},pageSize:{},backfillRequestDelayMs:{},items:{},page:{},itemWidth:{},prefetchThresholdPx:{},gapX:{},gapY:{},headerHeight:{},footerHeight:{},overscanPx:{}},Ae),emits:["update:items"],setup(l,{expose:y,emit:B}){const s=l,c=B,b=t.useAttrs(),w=t.useSlots(),g=t.computed(()=>{const{class:e,...o}=b;return o}),h=t.ref(null),p=t.ref(0),k=t.ref(0),F=t.ref(0);let I;const E=t.computed(()=>s.gapX),S=t.computed(()=>s.gapY);function T(e){if(!e)return 0;const o=Math.max(0,E.value);return Math.max(0,e.clientWidth-o)}const x=t.computed(()=>s.headerHeight),z=t.computed(()=>s.footerHeight),_=t.computed(()=>!!w.itemHeader),H=t.computed(()=>!!w.itemFooter),G=t.computed(()=>{if(x.value>0)return{height:`${x.value}px`}}),K=t.computed(()=>{if(z.value>0)return{height:`${z.value}px`}}),M=t.ref([]),L=t.ref([]),de=t.ref(new Map),me=t.ref(0),J=t.ref(new Map);function ve(e){const o=typeof e=="number"&&Number.isFinite(e)?e:0;return-Math.max(0,o)}const D=t.ref(new Set),X=t.ref(new Set),ee=new Set,te=t.ref(new Map),R=t.ref(new Set),A=t.ref([]);function qe(e){const o=te.value.get(e);return o||{dx:0,dy:0}}function Le(e){if(X.value.has(e))return`transform ${He}ms ease-out`;if(R.value.has(e))return`transform ${_e}ms ease-out`}function De(e){const n=r.value[e]?.id,a=M.value[e]??{x:0,y:0},i=L.value[e]??0,v=i>0?i:W.value,m=a.x,f=n&&D.value.has(n)?ve(v):a.y,d=n?qe(n):{dx:0,dy:0};return`translate3d(${m+d.dx}px,${f+d.dy}px,0)`}function Y(e){(typeof requestAnimationFrame=="function"?requestAnimationFrame:n=>setTimeout(()=>n(0),0))(()=>e())}function Ye(e){Y(()=>Y(e))}function ne(e){if(!Array.isArray(e)||e.length===0)return;const o=new Set(D.value);let n=!1;for(const a of e){const i=a?.id;i&&(o.has(i)||(o.add(i),n=!0))}n&&(D.value=o)}function he(){const e=new Map;for(const o of ce.value){const a=r.value[o]?.id;if(!a)continue;const i=M.value[o];i&&e.set(a,{x:i.x,y:i.y})}return e}function ge(e,o){if(!e.size)return;const n=new Map,a=[];for(const[v,m]of e.entries()){if(o?.has(v))continue;const f=J.value.get(v);if(f==null)continue;const d=M.value[f];if(!d)continue;const u=m.x-d.x,P=m.y-d.y;(u||P)&&(n.set(v,{dx:u,dy:P}),a.push(v))}if(!n.size)return;te.value=n;const i=new Set(R.value);for(const v of a)i.delete(v);R.value=i,Y(()=>{R.value=new Set([...R.value,...a]),Y(()=>{te.value=new Map})}),setTimeout(()=>{const v=new Set(R.value);for(const m of a)v.delete(m);R.value=v},_e)}const Q=t.ref(!0),$=t.ref(!1),O=t.ref(""),C=t.ref([]),pe=t.ref([]),le=t.ref([]),N=t.ref(s.page),oe=t.ref([]);let ae=0;function j(e){for(const o of e)!o||typeof o!="object"||o.id&&o.originalIndex==null&&(o.originalIndex=ae,ae+=1)}const V=new Map,q=[];function Z(e){return typeof e=="number"&&Number.isFinite(e)}function Oe(e,o){if(!o.length)return e;const n=new Set;for(const m of e){const f=m?.id;f&&n.add(f)}const a=[];for(const m of o){const f=m?.id;f&&(n.has(f)||(a.push(m),n.add(f)))}if(!a.length)return e;const i=a.slice().sort((m,f)=>{const d=Z(m.originalIndex)?m.originalIndex:Number.POSITIVE_INFINITY,u=Z(f.originalIndex)?f.originalIndex:Number.POSITIVE_INFINITY;return d-u}),v=e.slice();for(const m of i){const f=m.originalIndex;if(!Z(f)){v.push(m);continue}let d=0,u=v.length;for(;d<u;){const P=d+u>>1,U=v[P]?.originalIndex;(Z(U)?U:Number.POSITIVE_INFINITY)<=f?d=P+1:u=P}v.splice(d,0,m)}return v}async function ye(e){if(!e.length)return;ne(e);const o=he();r.value=Oe(r.value,e),await t.nextTick(),ge(o)}async function we(e){const n=(Array.isArray(e)?e:[e]).map(ie).filter(Boolean);if(!n.length)return;const a=[];for(const i of n){const v=V.get(i);v&&a.push(v)}if(a.length){await ye(a);for(const i of a)i?.id&&V.delete(i.id)}}async function ke(){const e=q.pop();if(!e?.length)return;const o=[];for(const n of e){const a=V.get(n);a&&o.push(a)}if(o.length){await ye(o);for(const n of o)n?.id&&V.delete(n.id)}}async function Xe(e){return we(e)}async function $e(){return ke()}function be(e){const n=(Array.isArray(e)?e:[e]).map(ie).filter(Boolean);if(!n.length)return;const a=new Set(n);for(const i of a)V.delete(i);for(let i=q.length-1;i>=0;i-=1){const m=q[i].filter(f=>!a.has(f));m.length?q[i]=m:q.splice(i,1)}}const se=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}}),xe=nt({getContent:e=>s.getContent(e),markEnterFromLeft:ne,buffer:oe,stats:se,isEnabled:()=>s.mode==="backfill",getPageSize:()=>s.pageSize,getRequestDelayMs:()=>s.backfillRequestDelayMs}),re=t.computed(()=>s.items!==void 0);t.watch(()=>s.items,e=>{re.value&&(le.value=Array.isArray(e)?e:[])},{immediate:!0});const r=t.computed({get(){return re.value?le.value:pe.value},set(e){re.value?(le.value=e,c("update:items",e)):pe.value=e}});async function Be(e){const o=await s.getContent(e);return j(o.items),ne(o.items),{items:o.items,nextPage:o.nextPage}}function ie(e){return e?typeof e=="string"?e:e?.id:null}async function Se(e){const n=(Array.isArray(e)?e:[e]).map(ie).filter(Boolean);if(!n.length)return;const a=new Set(n),i=[];for(const d of a){const u=J.value.get(d);if(u==null)continue;const P=r.value[u];P&&(V.set(d,P),i.push(d))}i.length&&q.push(i);const v=he(),m=W.value,f=[];for(const d of a){const u=J.value.get(d);if(u==null)continue;const P=r.value[u];if(!P)continue;const U=M.value[u]??{x:0,y:0},Te=L.value[u]??m;f.push({id:d,item:P,fromX:U.x,fromY:U.y,width:m,height:Te,leaving:!0})}if(f.length&&(A.value=[...A.value,...f]),r.value=r.value.filter(d=>{const u=d?.id;return!u||!a.has(u)}),await t.nextTick(),ge(v,a),f.length){const d=new Set(f.map(u=>u.id));Y(()=>{A.value=A.value.map(u=>d.has(u.id)?{...u,leaving:!1}:u),setTimeout(()=>{A.value=A.value.filter(u=>!d.has(u.id))},Re)})}}async function Me(e){return Se(e)}y({remove:Se,restore:Xe,undo:$e,forget:be,restoreRemoved:we,undoLastRemoval:ke,forgetRemoved:be,backfillStats:se});function Ie(){const e=lt({items:r.value,columnCount:ue.value,columnWidth:W.value,gapX:E.value,gapY:S.value,headerHeight:x.value,footerHeight:z.value,bucketPx:ze});M.value=e.positions,L.value=e.heights,de.value=e.buckets,me.value=e.contentHeight,J.value=e.indexById}const je=t.computed(()=>Math.max(me.value,k.value)+pt),ce=t.computed(()=>ot({itemCount:r.value.length,viewportHeight:k.value,scrollTop:F.value,overscanPx:s.overscanPx,bucketPx:ze,buckets:de.value}));t.watch(ce,e=>{if(!e?.length)return;const o=[];for(const n of e){const a=r.value[n]?.id;a&&D.value.has(a)&&(ee.has(a)||(ee.add(a),o.push(a)))}o.length&&(Y(()=>{const n=new Set(X.value);for(const a of o)n.add(a);X.value=n}),Ye(()=>{const n=new Set(D.value);for(const a of o)n.delete(a);D.value=n,setTimeout(()=>{const a=new Set(X.value);for(const i of o)a.delete(i),ee.delete(i);X.value=a},He)}))},{flush:"post"});async function We(){if(!(Q.value||$.value)&&!(s.mode!=="backfill"&&N.value==null)&&!(s.mode==="backfill"&&N.value==null&&oe.value.length===0))try{if($.value=!0,O.value="",s.mode==="backfill"){const n=await xe.loadBackfillBatch(N.value);n.pages.length&&(C.value=[...C.value,...n.pages]),j(n.batchItems),r.value=[...r.value,...n.batchItems],N.value=n.nextPage;return}const e=N.value;if(e==null)return;const o=await Be(e);C.value=[...C.value,e],j(o.items),r.value=[...r.value,...o.items],N.value=o.nextPage}catch(e){O.value=e instanceof Error?e.message:String(e)}finally{$.value=!1}}function Ue(){const e=h.value;if(!e)return;F.value=e.scrollTop,k.value=e.clientHeight,e.scrollHeight-(e.scrollTop+e.clientHeight)<=s.prefetchThresholdPx&&We()}function Ee(){return h.value}function Pe(e){p.value=T(e),k.value=e.clientHeight}function Ge(){typeof ResizeObserver>"u"||(I=new ResizeObserver(()=>{const e=Ee();e&&Pe(e)}))}function Ke(){return{enabled:s.mode==="backfill",isBackfillActive:!1,isRequestInFlight:!1,requestPage:null,progress:{collected:0,target:0},cooldownMsRemaining:0,cooldownMsTotal:fe(s.backfillRequestDelayMs),pageSize:Ce(s.pageSize),bufferSize:0,lastBatch:null,totals:{pagesFetched:0,itemsFetchedFromNetwork:0}}}function Fe(e){ae=0,V.clear(),q.length=0,C.value=[],r.value=[],N.value=e,oe.value=[],se.value=Ke(),Q.value=!0,$.value=!1,O.value=""}async function Ne(e){try{if(s.mode==="backfill"){const o=await xe.loadBackfillBatch(e);C.value=o.pages.length?o.pages:[e],j(o.batchItems),r.value=o.batchItems,N.value=o.nextPage}else{const o=await Be(e);C.value=[e],j(o.items),r.value=o.items,N.value=o.nextPage}}catch(o){O.value=o instanceof Error?o.message:String(o)}finally{Q.value=!1}}function Je(){const e=Ee();e&&(Pe(e),F.value=e.scrollTop,I?.observe(e))}t.onMounted(async()=>{Ge(),Je(),Fe(s.page),await Ne(s.page)}),t.onUnmounted(()=>{I?.disconnect()}),t.watch(()=>s.page,async e=>{Fe(e),await Ne(e)}),t.watch(E,()=>{const e=h.value;e&&(p.value=T(e))},{immediate:!1});const ue=t.computed(()=>Ze(p.value,s.itemWidth)),W=t.computed(()=>et(p.value,ue.value,s.itemWidth,E.value));t.watch([ue,W,E,S,x,z],()=>{Ie()},{immediate:!0}),t.watch(()=>[r.value,r.value.length],()=>Ie(),{immediate:!0});const Qe=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:Qe.value}),[t.createElementVNode("div",{ref_key:"scrollViewportRef",ref:h,"data-testid":"items-scroll-container",class:"mt-4 min-h-0 flex-1 overflow-auto",style:t.normalizeStyle({paddingRight:E.value+"px"}),onScroll:Ue},[Q.value?(t.openBlock(),t.createElementBlock("div",at,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)]))):O.value?(t.openBlock(),t.createElementBlock("p",st,"Error: "+t.toDisplayString(O.value),1)):(t.openBlock(),t.createElementBlock("div",{key:2,class:"relative",style:t.normalizeStyle({height:je.value+"px"})},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(ce.value,n=>(t.openBlock(),t.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:t.normalizeStyle({width:W.value+"px",transition:Le(r.value[n].id),transform:De(n)})},[_.value||x.value>0?(t.openBlock(),t.createElementBlock("div",{key:0,"data-testid":"item-header-container",class:"w-full",style:t.normalizeStyle(G.value)},[t.renderSlot(e.$slots,"itemHeader",{item:r.value[n],remove:()=>Me(r.value[n])})],4)):t.createCommentVNode("",!0),t.createElementVNode("div",{class:"bg-slate-100",style:t.normalizeStyle({aspectRatio:r.value[n].width+" / "+r.value[n].height})},[r.value[n].type==="image"?(t.openBlock(),t.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,rt)):(t.openBlock(),t.createElementBlock("video",{key:1,class:"h-full w-full object-cover",poster:r.value[n].preview,controls:"",preload:"metadata"},[t.createElementVNode("source",{src:r.value[n].original,type:"video/mp4"},null,8,ct)],8,it))],4),H.value||z.value>0?(t.openBlock(),t.createElementBlock("div",{key:1,"data-testid":"item-footer-container",class:"w-full",style:t.normalizeStyle(K.value)},[t.renderSlot(e.$slots,"itemFooter",{item:r.value[n],remove:()=>Me(r.value[n])})],4)):t.createCommentVNode("",!0)],4))),128)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(A.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 "+Re+"ms ease-out",transform:n.leaving?"translate3d("+n.fromX+"px,"+n.fromY+"px,0)":"translate3d("+n.fromX+"px,"+ve(n.height)+"px,0)"})},[_.value||x.value>0?(t.openBlock(),t.createElementBlock("div",{key:0,"data-testid":"item-header-container",class:"w-full",style:t.normalizeStyle(G.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,ut)):(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,dt)],8,ft))],4),H.value||z.value>0?(t.openBlock(),t.createElementBlock("div",{key:1,"data-testid":"item-footer-container",class:"w-full",style:t.normalizeStyle(K.value)},[t.renderSlot(e.$slots,"itemFooter",{item:n.item,remove:()=>{}})],4)):t.createCommentVNode("",!0)],4))),128))],4)),t.createElementVNode("div",mt,[$.value?(t.openBlock(),t.createElementBlock("span",vt,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",ht,"End of list")):(t.openBlock(),t.createElementBlock("span",gt,"Scroll to load page "+t.toDisplayString(N.value),1))])],36)],16))}}),yt={install(l){l.component("Masonry",Ve)}};exports.Masonry=Ve;exports.VibePlugin=yt;exports.masonryDefaults=Ae;
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;