index-e2b8b745.js 1.7 KB

1
  1. import{c as S,o as E,q as L,t as w,d as B,r as h,bC as R,x as m,bD as N,M as F,g as M,h as _,j as r,A as j,bE as b,bF as q,L as y,C as A}from"./index-4546eaf0.js";import{u as D}from"./index-30852d3a.js";const[H,o,I]=S("list"),U={error:Boolean,offset:E(300),loading:Boolean,disabled:Boolean,finished:Boolean,errorText:String,direction:L("down"),loadingText:String,finishedText:String,immediateCheck:w};var V=B({name:H,props:U,emits:["load","update:error","update:loading"],setup(e,{emit:c,slots:a}){const d=h(e.loading),u=h(),g=h(),s=D(),x=R(u),n=()=>{j(()=>{if(d.value||e.finished||e.disabled||e.error||(s==null?void 0:s.value)===!1)return;const{direction:t}=e,l=+e.offset,i=b(x);if(!i.height||q(u))return;let f=!1;const v=b(g);t==="up"?f=i.top-v.top<=l:f=v.bottom-i.bottom<=l,f&&(d.value=!0,c("update:loading",!0),c("load"))})},T=()=>{if(e.finished){const t=a.finished?a.finished():e.finishedText;if(t)return r("div",{class:o("finished-text")},[t])}},k=()=>{c("update:error",!1),n()},P=()=>{if(e.error){const t=a.error?a.error():e.errorText;if(t)return r("div",{role:"button",class:o("error-text"),tabindex:0,onClick:k},[t])}},C=()=>{if(d.value&&!e.finished&&!e.disabled)return r("div",{class:o("loading")},[a.loading?a.loading():r(y,{class:o("loading-icon")},{default:()=>[e.loadingText||I("loading")]})])};return m(()=>[e.loading,e.finished,e.error],n),s&&m(s,t=>{t&&n()}),N(()=>{d.value=e.loading}),F(()=>{e.immediateCheck&&n()}),M({check:n}),_("scroll",n,{target:x,passive:!0}),()=>{var t;const l=(t=a.default)==null?void 0:t.call(a),i=r("div",{ref:g,class:o("placeholder")},null);return r("div",{ref:u,role:"feed",class:o(),"aria-busy":d.value},[e.direction==="down"?l:i,C(),T(),P(),e.direction==="up"?l:i])}}});const J=A(V);export{J as L};