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-2c58ec2...

2 lines
2.5 KiB

import{d as L,H as v,_ as $,E as C,b as H,V as D,e as w,f as E,O as N,D as O,j as i,v as u,k as V,x as g,Y as y,n as h,$ as M,a0 as R}from"./@vue-a481fc63.js";function T(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={},U=e=>(M("data-v-d3e37633"),e=e(),R(),e),z={class:"container"},A=U(()=>i("div",{class:"spinner"},null,-1)),F=[A];function G(e,o){return w(),E("div",z,F)}const J=k(q,[["render",G],["__scopeId","data-v-d3e37633"]]),K={class:"state-error"},P=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),s=v(""),{top:p,firstload:_,distance:I}=n,{identifier:b,target:B}=$(n),a={infiniteLoading:d,top:p,firstload:_,distance:I,parentEl:null,emit(){c=(a.parentEl||document.documentElement).scrollHeight,m.loading(),o("infinite",m)}},m={loading(){s.value="loading"},async loaded(){s.value="loaded";const r=a.parentEl||document.documentElement;await h(),p&&(r.scrollTop=r.scrollHeight-c),T(d.value,a.parentEl)&&a.emit()},complete(){s.value="complete",t==null||t.disconnect()},error(){s.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(i("div",null,[u(r.$slots,"spinner",{},()=>[V(J)],!0)],512),[[O,s.value=="loading"]]),s.value=="complete"?u(r.$slots,"complete",{key:0},()=>{var l;return[i("span",null,g(((l=r.slots)==null?void 0:l.complete)||"No more results!"),1)]},!0):y("",!0),s.value=="error"?u(r.$slots,"error",{key:1,retry:a.emit},()=>{var l;return[i("span",K,[i("span",null,g(((l=r.slots)==null?void 0:l.error)||"Oops something went wrong!"),1),i("button",{class:"retry",onClick:f[0]||(f[0]=(...S)=>a.emit&&a.emit(...S))},"retry")])]},!0):y("",!0)],512))}}),Y=k(P,[["__scopeId","data-v-a7077831"]]);export{Y as W};