@opuu/inview-vue
Version:
Vue.js directives for viewport detection - v-inview and v-outview directives powered by @opuu/inview. Perfect for Vue 3 lazy loading, scroll animations, infinite scroll, analytics tracking with TypeScript support.
2 lines (1 loc) • 1.94 kB
JavaScript
(function(t,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@opuu/inview")):typeof define=="function"&&define.amd?define(["exports","@opuu/inview"],r):(t=typeof globalThis!="undefined"?globalThis:t||self,r(t.InViewVue={},t.InView))})(this,function(t,r){"use strict";function _(){return typeof window!="undefined"&&typeof document!="undefined"}function c(i,n){var e,u,s;if(!_())return null;if(!i.__inviewInstance){i.__inviewUniqueClass||(i.__inviewUniqueClass="inview-"+Math.random().toString(36).substr(2,9),i.classList.add(i.__inviewUniqueClass));const o={selector:`.${i.__inviewUniqueClass}`,delay:(e=n.delay)!=null?e:0,precision:(u=n.precision)!=null?u:"medium",single:(s=n.single)!=null?s:!0};i.__inviewInstance=new r(o),i.__inviewListenerCount=0}return i.__inviewInstance}function w(i={}){return{mounted(n,e){const u=e.value;if(typeof u!="function"){console.warn("[InView]: v-inview expects a function as its value.");return}if(!_())return;const s=c(n,i);s&&(s.on("enter",o=>{u(o)}),n.__inviewListenerCount=(n.__inviewListenerCount||0)+1)},unmounted(n){const e=n;e.__inviewInstance&&(e.__inviewListenerCount=(e.__inviewListenerCount||1)-1,e.__inviewListenerCount<=0&&(e.__inviewInstance.destroy(),delete e.__inviewInstance,delete e.__inviewListenerCount))},getSSRProps(n){return{}}}}function v(i={}){return{mounted(n,e){const u=e.value;if(typeof u!="function"){console.warn("[InView]: v-outview expects a function as its value.");return}if(!_())return;const s=c(n,i);s&&(s.on("exit",o=>{u(o)}),n.__inviewListenerCount=(n.__inviewListenerCount||0)+1)},unmounted(n){const e=n;e.__inviewInstance&&(e.__inviewListenerCount=(e.__inviewListenerCount||1)-1,e.__inviewListenerCount<=0&&(e.__inviewInstance.destroy(),delete e.__inviewInstance,delete e.__inviewListenerCount))},getSSRProps(n){return{}}}}t.createInViewDirective=w,t.createOutViewDirective=v,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});