mmjs-core
Version:
mmjs-core hooks component vue
2 lines (1 loc) • 1.38 kB
JavaScript
;const e=require("vue"),f=require("@vueuse/core"),_=require("raf-polyfill-es"),p={class:"intersection_draw__loading_content"},k={class:"intersection_draw__inner_skeleton"},v=e.defineComponent({__name:"intersectionDraw",props:{timeoutTime:{default:100},once:{type:Boolean,default:!0},skeletonRows:{default:10},noSupportTime:{default:500},useIntersectionObserverOptions:{}},emits:["show","hide"],setup(s,{expose:c,emit:a}){const n=a,o=e.ref(!1),i=e.shallowRef(),{isSupported:r,stop:l,resume:u,pause:d}=f.useIntersectionObserver(i,([t])=>{_.requestAnimationFrame(()=>{setTimeout(()=>{o.value=(t==null?void 0:t.isIntersecting)||!1},s.timeoutTime)}),t!=null&&t.isIntersecting?(n("show"),s.once&&l()):n("hide")},s.useIntersectionObserverOptions);return e.watch(r,t=>{t===!1&&setTimeout(()=>{o.value=!0},s.noSupportTime)},{immediate:!0}),c({isSupported:r,pause:d,stop:l,resume:u}),(t,w)=>(e.openBlock(),e.createElementBlock("div",{class:"intersection_draw",ref_key:"intersectionRef",ref:i},[o.value?e.renderSlot(t.$slots,"default",{key:1},void 0,!0):e.renderSlot(t.$slots,"temp",{key:0},()=>[e.createElementVNode("div",p,[e.createElementVNode("div",k,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.skeletonRows,(h,m)=>(e.openBlock(),e.createElementBlock("div",{class:"intersection_draw__skeleton_item",key:m}))),128))])])],!0)],512))}});module.exports=v;