-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathvue-animate-onscroll.cjs.js
1 lines (1 loc) · 1.35 KB
/
vue-animate-onscroll.cjs.js
1
"use strict";var ScrollAnimate=()=>{const e=e=>!(e.down||e.up),t=(e,t,n="")=>{e.className=`${t} ${n}`.trim()};return{isInView:({top:e,bottom:t},n)=>e+n<(()=>document.documentElement.clientHeight)()&&t-n>0,run(n,{value:o,modifiers:r},{useParent:s,offset:i,isUpwards:a,previousClassName:l=""}){if((e=>!e.in&&e.out)(o))return void console.warn("animate-on-scroll","'out' parameter can't be used alone. 'in' required");let d=null;if(d=s?n.parentNode.getBoundingClientRect():n.getBoundingClientRect(),!this.isInView(d,i)){const s=o.out||"";return r.repeat&&(e(o)||s)?t(n,l,s):void 0}if(e(o)){const e=o.in||o;return t(n,l,e)}if(r.repeat||(e=>e.down&&e.up)(o)||!((e="",t="")=>e.trim()!==t.trim())(n.className,l)){const e=a?o.up:o.down;return t(n,l,e)}return(({params:e,isUpwards:t,repeat:n})=>n&&(t&&e.down||!t&&e.up))({params:o,isUpwards:a,...r})?t(n,l):void 0}}},index={ScrollAnimate:ScrollAnimate,install(e){e.directive("animate-onscroll",{inserted(e,t){const n=ScrollAnimate(Date.now()),o=t.value,r=1==e.parentNode.childNodes.length,s=parseInt(e.dataset.animateOnscrollOffset||0);let i=e.className,a=window.pageYOffset;i=i.replace(o.in||o,"").replace(o.out,""),window.addEventListener("scroll",function(){let o=window.pageYOffset||document.documentElement.scrollTop;const l=o<a;n.run(e,t,{useParent:r,offset:s,isUpwards:l,previousClassName:i}),a=o<=0?0:o},!1)}})}};module.exports=index;