You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
paopao-ce/web/dist/assets/v3-infinite-loading-DK6TzcZ...

2 lines
2.5 KiB

import{d as L,H as v,$,E as C,b as H,W as D,e as w,f as E,P as N,D as M,j as s,v as u,k as O,x as g,Z as y,n as h,a0 as R,a1 as T}from"./@vue-CQsYufSu.js";function V(e,o){const n=e.getBoundingClientRect();if(!o)return n.top>=0&&n.bottom<=window.innerHeight;const t=o.getBoundingClientRect();return n.top>=t.top&&n.bottom<=t.bottom}async function j(e){return await h(),e.value instanceof HTMLElement?e.value:e.value?document.querySelector(e.value):null}function x(e){let o=`0px 0px ${e.distance}px 0px`;e.top&&(o=`${e.distance}px 0px 0px 0px`);const n=new IntersectionObserver(t=>{t[0].isIntersecting&&(e.firstload&&e.emit(),e.firstload=!0)},{root:e.parentEl,rootMargin:o});return n.observe(e.infiniteLoading.value),n}const k=(e,o)=>{const n=e.__vccOpts||e;for(const[t,c]of o)n[t]=c;return n},q={},P=e=>(R("data-v-d3e37633"),e=e(),T(),e),U={class:"container"},W=P(()=>s("div",{class:"spinner"},null,-1)),z=[W];function A(e,o){return w(),E("div",U,z)}const F=k(q,[["render",A],["__scopeId","data-v-d3e37633"]]),G={class:"state-error"},J=L({__name:"InfiniteLoading",props:{top:{type:Boolean,default:!1},target:{},distance:{default:0},identifier:{},firstload:{type:Boolean,default:!0},slots:{}},emits:["infinite"],setup(e,{emit:o}){const n=e;let t=null,c=0;const d=v(null),i=v(""),{top:p,firstload:I,distance:_}=n,{identifier:b,target:B}=$(n),a={infiniteLoading:d,top:p,firstload:I,distance:_,parentEl:null,emit(){c=(a.parentEl||document.documentElement).scrollHeight,m.loading(),o("infinite",m)}},m={loading(){i.value="loading"},async loaded(){i.value="loaded";const r=a.parentEl||document.documentElement;await h(),p&&(r.scrollTop=r.scrollHeight-c),V(d.value,a.parentEl)&&a.emit()},complete(){i.value="complete",t==null||t.disconnect()},error(){i.value="error"}};return C(b,()=>{t==null||t.disconnect(),t=x(a)}),H(async()=>{a.parentEl=await j(B),t=x(a)}),D(()=>{t==null||t.disconnect()}),(r,f)=>(w(),E("div",{ref_key:"infiniteLoading",ref:d,style:{"min-height":"1px"}},[N(s("div",null,[u(r.$slots,"spinner",{},()=>[O(F)],!0)],512),[[M,i.value=="loading"]]),i.value=="complete"?u(r.$slots,"complete",{key:0},()=>{var l;return[s("span",null,g(((l=r.slots)==null?void 0:l.complete)||"No more results!"),1)]},!0):y("",!0),i.value=="error"?u(r.$slots,"error",{key:1,retry:a.emit},()=>{var l;return[s("span",G,[s("span",null,g(((l=r.slots)==null?void 0:l.error)||"Oops something went wrong!"),1),s("button",{class:"retry",onClick:f[0]||(f[0]=(...S)=>a.emit&&a.emit(...S))},"retry")])]},!0):y("",!0)],512))}}),Z=k(J,[["__scopeId","data-v-a7077831"]]);export{Z as W};