UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

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