primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 1.12 kB
JavaScript
import e from"primevue/basecomponent";import{openBlock as t,createElementBlock as n,mergeProps as o,renderSlot as i,createCommentVNode as r}from"vue";var d={name:"DeferredContent",extends:e,emits:["load"],data:function(){return{loaded:!1}},mounted:function(){this.loaded||(this.shouldLoad()?this.load():this.bindScrollListener())},beforeUnmount:function(){this.unbindScrollListener()},methods:{bindScrollListener:function(){var e=this;this.documentScrollListener=function(){e.shouldLoad()&&(e.load(),e.unbindScrollListener())},window.addEventListener("scroll",this.documentScrollListener)},unbindScrollListener:function(){this.documentScrollListener&&(window.removeEventListener("scroll",this.documentScrollListener),this.documentScrollListener=null)},shouldLoad:function(){if(this.loaded)return!1;var e=this.$refs.container.getBoundingClientRect();return document.documentElement.clientHeight>=e.top},load:function(e){this.loaded=!0,this.$emit("load",e)}}};d.render=function(e,d,l,s,u,c){return t(),n("div",o({ref:"container"},e.ptm("root")),[u.loaded?i(e.$slots,"default",{key:0}):r("",!0)],16)};export{d as default};