@fancyapps/ui
Version:
Robust JavaScript UI Component Library
1 lines • 2.01 kB
JavaScript
!/*! 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 a(){i||(o=performance.now(),i=requestAnimationFrame(m))}function l(){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")}a()}}function p(){if(l(),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){if(!e.isInTransition()){let i=t-o;i>n&&(i=n);let s=1/60*i,r=f().speed,c=f().speedOnHover,a=s*(u&&void 0!==c?c:r),l=e.getPosition()+a;e.setPosition(l)}i=null,a()}}function g(){u=!0,0===f().speedOnHover&&(c=!0,e?.getTween()?.pause(),l())}function v(){u=!1,c=!1,s&&!r&&a()}function b(){e&&!1!==e.getOptions().Autoscroll&&f().autoStart&&d()}function y(){l()}function h(){!s||r||c||a()}function w(){s&&(document.hidden?(e?.getTween()?.pause(),l()):r||c||a())}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(),l())},resume:function(){r=!1,s&&!c&&a()},start:function(){d()},stop:function(){p()},toggle(){s?p():d()}}}});