UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

1 lines 2 kB
!/*! License details at fancyapps.com/license */function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).window=e.window||{})}(this,function(e){"use strict";let t={autoStart:!0,speed:3},n=1/60*1e3;e.Autoscroll=()=>{let e,o,i=null,s=!1,u=!1,r=!1,c=!1;function f(){let n=e?.getOptions().Autoscroll;return"object"==typeof n&&null!==n&&n.constructor===Object&&"[object Object]"===Object.prototype.toString.call(n)?{...t,...n}:t}function l(){i||(o=performance.now(),i=requestAnimationFrame(m))}function a(){i&&(cancelAnimationFrame(i),i=null)}function d(){if(e&&e.isInfinite()){if(!s){s=!0;let t=e?.getContainer();e?.getTween()?.on("start",y),t&&matchMedia("(hover: hover)").matches&&(t.addEventListener("mouseenter",g,!1),t.addEventListener("mouseleave",v,!1)),e.emit("autoscroll:start")}l()}}function p(){if(a(),s){s=!1,r=!1,e?.getTween()?.off("start",y);let t=e?.getContainer();t?.addEventListener("mouseenter",g,!1),t?.addEventListener("mouseleave",v,!1),e?.emit("autoscroll:end")}}function m(t){if(!e||!s||r||!o)return;let c=t-o;c>n&&(c=n);let a=1/60*c,d=f().speed,p=f().speedOnHover,m=a*(u&&void 0!==p?p:d),g=e.getPosition()+m;e.setPosition(g),i=null,l()}function g(){u=!0,0===f().speedOnHover&&(c=!0,e?.getTween()?.pause(),a())}function v(){u=!1,c=!1,s&&!r&&l()}function b(){e&&!1!==e.getOptions().Autoscroll&&f().autoStart&&d()}function y(){a()}function h(){!s||r||c||l()}function w(){s&&(document.hidden?(e?.getTween()?.pause(),a()):r||c||l())}return{init:function(t){(e=t).on("ready",b),e.on("settle",h),document.addEventListener("visibilitychange",w)},destroy:function(){c=!1,p(),e&&(e.off("ready",b),e.off("settle",h)),e=void 0,document.removeEventListener("visibilitychange",w)},isEnabled:()=>s,pause:function(){r||(r=!0,e?.getTween()?.pause(),a())},resume:function(){r=!1,s&&!c&&l()},start:function(){d()},stop:function(){p()},toggle(){s?p():d()}}}});