1 |
- import{v as S,D as L,C as w,w as B,d as E,U as h,aq as R,$ as m,aB as N,a1 as U,Y as _,a2 as q,c as r,a0 as y,av as b,aC as z,L as D,z as F}from"./ResizeObserver.es.7b3c8c20.js";import{u as H}from"./use-tab-status.299f907f.js";const[I,o,M]=S("list"),V={error:Boolean,offset:L(300),loading:Boolean,disabled:Boolean,finished:Boolean,errorText:String,direction:w("down"),loadingText:String,finishedText:String,immediateCheck:B};var Y=E({name:I,props:V,emits:["load","update:error","update:loading"],setup(e,{emit:c,slots:t}){const d=h(e.loading),u=h(),g=h(),l=H(),v=R(u),i=()=>{y(()=>{if(d.value||e.finished||e.disabled||e.error||(l==null?void 0:l.value)===!1)return;const{offset:a,direction:s}=e,n=b(v);if(!n.height||z(u))return;let f=!1;const x=b(g);s==="up"?f=n.top-x.top<=a:f=x.bottom-n.bottom<=a,f&&(d.value=!0,c("update:loading",!0),c("load"))})},T=()=>{if(e.finished){const a=t.finished?t.finished():e.finishedText;if(a)return r("div",{class:o("finished-text")},[a])}},k=()=>{c("update:error",!1),i()},P=()=>{if(e.error){const a=t.error?t.error():e.errorText;if(a)return r("div",{role:"button",class:o("error-text"),tabindex:0,onClick:k},[a])}},C=()=>{if(d.value&&!e.finished&&!e.disabled)return r("div",{class:o("loading")},[t.loading?t.loading():r(D,{class:o("loading-icon")},{default:()=>[e.loadingText||M("loading")]})])};return m(()=>[e.loading,e.finished,e.error],i),l&&m(l,a=>{a&&i()}),N(()=>{d.value=e.loading}),U(()=>{e.immediateCheck&&i()}),_({check:i}),q("scroll",i,{target:v,passive:!0}),()=>{var a;const s=(a=t.default)==null?void 0:a.call(t),n=r("div",{ref:g,class:o("placeholder")},null);return r("div",{ref:u,role:"feed",class:o(),"aria-busy":d.value},[e.direction==="down"?s:n,C(),T(),P(),e.direction==="up"?s:n])}}});const A=F(Y);export{A as L};
|