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-D3303HH...

2 lines
2.7 KiB

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