UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) 3.22 kB
/*! License details at fancyapps.com/license */ import{isPlainObject as t}from"../utils/isPlainObject.js";const e={autoStart:!0,pauseOnHover:!0,showProgressbar:!0,timeout:2e3},n=()=>{let n,o,i=!1,a=!1,l=!1,s=null;function r(o){const i=null==n?void 0:n.getOptions().Autoplay;let a=(t(i)?Object.assign(Object.assign({},e),i):e)[o];return a&&"function"==typeof a&&n?a(n):a}function u(){var t;const e=(null===(t=null==n?void 0:n.getPage())||void 0===t?void 0:t.slides)||[];for(const t of e)if(0===t.state)return!0;return!1}function d(){clearTimeout(o),o=void 0}function g(){if(o)return;if(l)return;if(u())return;if(!(null==n?void 0:n.isSettled()))return;!function(){var t,e,o,i;if(!n)return;if(v(),!r("showProgressbar"))return;let a=r("progressbarParentEl");!a&&(null===(t=n.getPlugins().Toolbar)||void 0===t?void 0:t.isEnabled())&&(a=n.getContainer());if(!a&&!0!==(null===(e=n.getPlugins().Toolbar)||void 0===e?void 0:e.isEnabled())){const t=(null===(o=n.getPages()[0])||void 0===o?void 0:o.slides)||[],e=(null===(i=n.getPage())||void 0===i?void 0:i.slides)||[];1===t.length&&1===e.length&&(a=e[0].el)}a||(a=n.getViewport());if(!a)return;s=document.createElement("div"),s.classList.add("f-progressbar"),a.prepend(s);const l=r("timeout")||1e3;s.style.animationDuration=`${l}ms`}();const t=r("timeout");o=setTimeout((()=>{n&&i&&!a&&(n.isInfinite()||n.getPageIndex()!==n.getPages().length-1?n.next():n.goTo(0))}),t)}function f(){var t,e;if(!n||n.getPages().length<2||!1===n.getOptions().Autoplay)return;if(i)return;i=!0,n.emit("autoplay:start",r("timeout")),null===(t=n.getContainer())||void 0===t||t.classList.add("has-autoplay"),null===(e=n.getTween())||void 0===e||e.on("start",b);const o=null==n?void 0:n.getContainer();o&&r("pauseOnHover")&&matchMedia("(hover: hover)").matches&&(o.addEventListener("mouseenter",E,!1),o.addEventListener("mouseleave",x,!1)),n.on("change",h),n.on("settle",y),n.on("contentReady",p),n.on("panzoom:animationStart",c),n.isSettled()&&g()}function c(){var t,e;if(d(),v(),i&&n){n.emit("autoplay:end"),null===(t=n.getContainer())||void 0===t||t.classList.remove("has-autoplay"),null===(e=n.getTween())||void 0===e||e.off("start",b);const o=null==n?void 0:n.getContainer();o&&(o.removeEventListener("mouseenter",E,!1),o.removeEventListener("mouseleave",x,!1))}n&&(n.off("change",h),n.off("settle",y),n.off("contentReady",p),n.off("panzoom:animationStart",c)),i=!1,a=!1}function v(){s&&(s.remove(),s=null)}function m(){n&&n.getPages().length>1&&r("autoStart")&&f()}function p(t){n&&n.getPageIndex(t.index)===n.getPageIndex()&&(!i||l||u()||g())}function P(t,e){const n=e.target;n&&!e.defaultPrevented&&"toggle"===n.dataset.autoplayAction&&L.toggle()}function h(){!n||!(null==n?void 0:n.isInfinite())&&n.getPageIndex()===n.getPages().length-1?c():(v(),d())}function y(){!i||l||a||g()}function b(){d(),v()}function E(){l=!0,i&&(v(),d())}function x(){l=!1,i&&!a&&(null==n?void 0:n.isSettled())&&g()}const L={init:function(t){n=t,n.on("ready",m),n.on("click",P)},destroy:function(){c(),null==n||n.off("ready",m),null==n||n.off("click",P),n=void 0},isEnabled:()=>i,pause:function(){a=!0,d()},resume:function(){a=!1,i&&!l&&g()},start(){f()},stop(){c()},toggle(){i?c():f()}};return L};export{n as Autoplay};