PageSourceSearch

https://www.photogrid.app/_nuxt/XEk0bfkE.js

js photogrid.app collected 2026-09-24 18:59:33 UTC 4,540 bytes, 1 lines download raw bytes

1import{d as re,w as F,n as le,o as se,e as ae,i as m,F as K,l as p,b1 as _,A as V,z as U,ad as M,B as C,C as a,h}from"./CFKhmQVY.js";const ie=48,D=400,ce=re({name:"CommonVirtualList",__name:"index",props:{list:{default:()=>[]},itemKey:{},itemSize:{},scrollRoot:{default:null},overscan:{default:D},enabled:{type:Boolean,default:!0}},emits:["range-change"],setup(H,{expose:j,emit:q}){const s=H,P=q,d=C(null),g=C(0),v=C(0);let y=0,I=null,S=null;const b=a(()=>s.scrollRoot??d.value),Z=a(()=>{if(!Array.isArray(s.list))return[];const e=[];return s.list.forEach((t,n)=>{t!==null&&typeof t=="object"&&e.push({item:t,index:n})}),e}),B=a(()=>{const e=Number(s.overscan);return Number.isFinite(e)&&e>=0?e:D});function G(e,t){try{const n=typeof s.itemKey=="function"?s.itemKey(e,t):e[s.itemKey];if(typeof n=="string"||typeof n=="number")return n}catch{}return t}function J(e,t){try{const n=typeof s.itemSize=="function"?s.itemSize(e,t):s.itemSize,o=Number(n);if(Number.isFinite(o)&&o>0)return o}catch{}return ie}const r=a(()=>{const e=new Map;
1return Z.value.map(({item:t,index:n})=>{const o=G(t,n),l=`${typeof o}:${String(o)}`,i=e.get(l)??0;return e.set(l,i+1),{item:t,index:n,businessKey:o,renderKey:`${l}::${i}`,size:J(t,n)}})}),u=a(()=>{const e=new Array(r.value.length+1);return e[0]=0,r.value.forEach((t,n)=>{e[n+1]=e[n]+t.size}),e}),f=a(()=>u.value[u.value.length-1]??0);function L(e){let t=0,n=r.value.length;for(;t<n;){const o=Math.floor((t+n)/2);(u.value[o+1]??f.value)<=e?t=o+1:n=o}return t}function Q(e){let t=0,n=r.value.length;for(;t<n;){const o=Math.floor((t+n)/2);(u.value[o]??0)<e?t=o+1:n=o}return t}const x=a(()=>{if(!s.enabled)return{startIndex:0,endIndex:r.value.length};const e=Math.max(0,g.value-B.value),t=Math.min(f.value,v.value+B.value);return t<=0?{startIndex:0,endIndex:0}:e>=f.value?{startIndex:r.value.length,endIndex:r.value.length}:{startIndex:L(e),endIndex:Math.max(L(e),Q(t))}}),W=a(()=>r.value.slice(x.value.startIndex,x.value.endIndex)),X=a(()=>({height:`${A.value}px`})),A=a(()=>u.value[x.value.startIndex]??0),Y=a(()=>({height:`${N.value}px`})),N=a(()=>Math.max(0,f.value-(u.value[x.value.endIndex]??f.value)));function T(){const e=d.value;if(!e)return 0;const t=window.getComputedStyle(e),n=Number.parseFloat(t.paddingTop);return Number.isFinite(n)?n:0}function ee(){y=0;const e=d.value,t=b.value;if(!e||!t)return;if(t===e){const i=T();g.value=t.scrollTop-i,v.value=t.scrollTop+t.clientHeight-i;return}const n=t.getBoundingClientRect(),o=e.getBoundingClientRect(),l=T();g.value=n.top-o.top-e.clientTop-l,v.value=n.bottom-o.top-e.clientTop-l}function c(){y||(y=window.requestAnimationFrame(ee))}function $(){I?.(),I=null,S?.disconnect(),S=null}function k(){$();const e=b.value,t=d.value;!e||!t||(e.addEventListener("scroll",c,{passive:!0}),I=()=>e.removeEventListener("scroll",c),typeof ResizeObserver<"u"&&(S=new ResizeObserver(c),S.observe(e),t!==e&&S.observe(t)),c())}function te(e){const t=d.value,n=b.value;if(!t||!n)return e;const o=T();if(n===t)return e+o;const l=n.getBoundingClientRect(),i=t.getBoundingClientRect();return n.scrollTop+i.top-l.top+t.clientTop+o+e}function O(e,t="auto",n="auto"){const o=b.value;if(!o||!r.value.length)return;const l=Number.isFinite(e)?Math.trunc(e):0,i=Math.min(Math.max(l,0),r.value.length-1),w=u.value[i]??0,R=u.value[i+1]??w,E=o.clientHeight,oe=g.value;if(t==="auto"&&w>=oe&&R<=v.value)return;let z=w;t==="center"&&(z=w-(E-(R-w))/2),t==="end"&&(z=R-E),t==="auto"&&R>v.value&&(z=R-E),o.scrollTo({top:Math.max(0,te(z)),behavior:n})}function ne(e,t="auto",n="auto"){let o=r.value.findIndex(l=>l.businessKey===e);o<0&&(o=r.value.findIndex(l=>String(l.businessKey)===String(e))),o>=0&&O(o,t,n)}return F(b,k,{flush:"post"}),F([()=>r.value.length,f,()=>s.enabled],()=>le(c),{flush:"post"}),F(x,e=>{P("range-change",{...e,viewportStart:g.value,viewportEnd:v.value})},{immediate:!0}),se(()=>{k(),window.addEventListener("resize",c,{passive:!0})}),ae(()=>{$(),window.removeEventListener("resize",c),y&&window.cancelAnimationFrame(y)}),j({getRootElement:()=>d.value,refresh:c,scrollToIndex:O,scrollToKey:ne}),(e,t)=>(h(),m("div",{ref_key:"containerRef",ref:d},[s.enabled?(h(),m(K,{key:0},[p(A)?(h(),m("div",{key:0,style:_(p(X))},null,4)):V("",!0),(h(!0),m(K,null,U(p(W),n=>M(e.$slots,"default",{item:n.item,index:n.index},void 0,void 0,n.renderKey)),128)),p(N)?(h(),m("div",{key:1,style:_(p(Y))},null,4)):V("",!0)],64)):(h(!0),m(K,{key:1},U(p(r),n=>M(e.$slots,"default",{item:n.item,index:n.index},void 0,void 0,n.renderKey)),128)),M(e.$slots,"footer")],512))}});export{ce as _};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.