UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) 2.07 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,l=null,u=!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(){l||(i=performance.now(),l=requestAnimationFrame(g))}function v(){l&&(cancelAnimationFrame(l),l=null)}function f(){var n;if(o&&o.isInfinite()){if(!u){u=!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(),u){u=!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&&u&&!r&&i){if(!o.isInTransition()){let e=n-i;e>t&&(e=t);const l=1/60*e,u=c().speed,r=c().speedOnHover;let a=l*(s&&void 0!==r?r:u);const d=o.getPosition()+a;o.setPosition(d)}l=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,u&&!r&&d()}function E(){o&&!1!==o.getOptions().Autoscroll&&c().autoStart&&f()}function O(){v()}function b(){!u||r||a||d()}function w(){var n;u&&(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:()=>u,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,u&&!a&&d()},start:function(){f()},stop:function(){m()},toggle(){u?m():f()}}};export{o as Autoscroll};