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