UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) 2.08 kB
/*! License details at fancyapps.com/license */ import{isPlainObject as n}from"../utils/isPlainObject.js";const e={autoStart:!0,speed:3},t=1/60*1e3*1,o=()=>{let o,i,u=null,l=!1,s=!1,r=!1,a=!1;function c(){const t=null==o?void 0:o.getOptions().Autoscroll;return n(t)?Object.assign(Object.assign({},e),t):e}function d(){u||(i=performance.now(),u=requestAnimationFrame(g))}function v(){u&&(cancelAnimationFrame(u),u=null)}function f(){var n;if(o&&o.isInfinite()){if(!l){l=!0;const e=null==o?void 0:o.getContainer();null===(n=null==o?void 0:o.getTween())||void 0===n||n.on("start",O),e&&matchMedia("(hover: hover)").matches&&(e.addEventListener("mouseenter",p,!1),e.addEventListener("mouseleave",h,!1)),o.emit("autoscroll:start")}d()}}function m(){var n;if(v(),l){l=!1,r=!1,null===(n=null==o?void 0:o.getTween())||void 0===n||n.off("start",O);const e=null==o?void 0:o.getContainer();null==e||e.addEventListener("mouseenter",p,!1),null==e||e.addEventListener("mouseleave",h,!1),null==o||o.emit("autoscroll:end")}}function g(n){if(!o||!l)return;if(r)return;if(!i)return;let e=n-i;e>t&&(e=t);const a=1/60*e,v=c().speed,f=c().speedOnHover;let m=a*(s&&void 0!==f?f:v);const g=o.getPosition()+m;o.setPosition(g),u=null,d()}function p(){var n;s=!0;0===c().speedOnHover&&(a=!0,null===(n=null==o?void 0:o.getTween())||void 0===n||n.pause(),v())}function h(){s=!1,a=!1,l&&!r&&d()}function E(){o&&!1!==o.getOptions().Autoscroll&&c().autoStart&&f()}function O(){v()}function b(){!l||r||a||d()}function w(){var n;l&&(document.hidden?(null===(n=null==o?void 0:o.getTween())||void 0===n||n.pause(),v()):r||a||d())}return{init:function(n){o=n,o.on("ready",E),o.on("settle",b),document.addEventListener("visibilitychange",w)},destroy:function(){a=!1,m(),o&&(o.off("ready",E),o.off("settle",b)),o=void 0,document.removeEventListener("visibilitychange",w)},isEnabled:()=>l,pause:function(){var n;r||(r=!0,null===(n=null==o?void 0:o.getTween())||void 0===n||n.pause(),v())},resume:function(){r=!1,l&&!a&&d()},start:function(){f()},stop:function(){m()},toggle(){l?m():f()}}};export{o as Autoscroll};