UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

2 lines 3.65 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`});function t(){return!!(typeof window<`u`&&window.document&&window.document.createElement)}let n=e=>typeof e==`object`&&!!e&&e.constructor===Object&&Object.prototype.toString.call(e)===`[object Object]`;function r(){if(window.parent===window)return!1;try{var e=window.frameElement}catch{e=null}return e===null?location.protocol===`data:`:e.hasAttribute(`sandbox`)}let i,a=!1,o=!1,s=!1,c=!1,l,u=()=>{let e=new URL(document.URL).hash,t=e.slice(1).split(`-`),n=t[t.length-1],r=n&&/^\+?\d+$/.test(n)&&parseInt(t.pop()||`1`,10)||1;return{urlHash:e,urlSlug:t.join(`-`),urlIndex:r}},d=()=>{let e=i?.getInstance(),t=e?.getState();return!!(e&&(t===0||t===1))},f=()=>{if(!i||d())return;let{urlSlug:e,urlIndex:t}=u();if(!e)return;let n=document.querySelector(`[data-slug="${e}"]`);n&&i.fromTriggerEl(n),d()||(n=document.querySelectorAll(`[data-fancybox="${e}"]`)[t-1],n&&i.fromTriggerEl(n,{startIndex:t-1})),d()&&n&&!n.closest(`[inert]`)&&n.scrollIntoView({behavior:`instant`,block:`center`,inline:`center`})},p=e=>{let t=e.getOptions().Hash,r=e.getSlide();return r&&(r.slug||r.fancybox||(n(t)?t.slug:``))||``},m=e=>{let t=p(e),n=e.getSlide();if(!n||!t)return``;let r=parseInt(n.index+``,10)+1,i=n.slug?`#${n.slug}`:`#${t}-${r}`;return(e.getCarousel()?.getPages()?.length||0)<2&&(i=`#${t}`),i},h=()=>{if(!i||s)return;let e=i?.getInstance(),t=e?.getCarousel(),{urlSlug:r,urlIndex:a}=u(),l=e?.getOptions().Hash;if(l!==!1){if(e&&e.getState()===1&&t){let i=t.getSlides();for(let e of i||[])if(e.slug===r||(e.fancybox===r||n(l)&&l.slug===r)&&e.index===a-1){o=!1,t.goTo(e.index);return}c=!0,e.close(),c=!1}f()}},g=()=>{i&&(l=setTimeout(()=>{a=!0,f(),a=!1},300),window.addEventListener(`hashchange`,h,!1))},_;function v(){history.scrollRestoration&&_&&(history.scrollRestoration=_,_=void 0)}let y=()=>{let e,t=``;function n(){if(!e||!e.isTopMost()||e.getOptions().Hash===!1)return;if(a){let t=e.getOptions().sync;t&&t.goTo(e?.getCarousel()?.getPageIndex()||0,{transition:!1,tween:!1})}let n=e.getCarousel();if(!n||!e.getSlide())return;let r=p(e);if(!r)return;let{urlHash:i,urlSlug:s}=u(),c=m(e);i!==c&&(t=i),history.scrollRestoration&&!_&&(_=history.scrollRestoration,history.scrollRestoration=`manual`,window.addEventListener(`beforeunload`,v)),n.on(`change`,d);let l=r!==s;try{window.history[l?`pushState`:`replaceState`]({},document.title,window.location.pathname+window.location.search+c),l&&(o=!0)}catch{}}function d(){if(!e||!e.isTopMost()||e.getOptions().Hash===!1||!e.getSlide()||!p(e))return;let t=m(e);s=!0;try{window.history.replaceState({},document.title,window.location.pathname+window.location.search+t)}catch{}s=!1}function f(){if(!(!e||!e.isTopMost()||e.getOptions().Hash===!1||c)&&p(e)){s=!0;try{o&&!r()&&document.activeElement?.nodeName!==`IFRAME`?window.history.back():window.history.replaceState({},document.title,window.location.pathname+window.location.search+t)}catch{}s=!1}}return{init:function(t){clearTimeout(l),e=t,e.on(`ready`,n),e.on(`close`,f)},destroy:function(){e?.off(`ready`,n),e?.off(`close`,f);let t=e?.getCarousel();t&&t.off(`change`,d),e=void 0,i?.getInstance()||(v(),window.removeEventListener(`beforeunload`,v))}}};y.getInfoFromURL=u,y.startFromUrl=f,y.setup=function(e){i||(i=e,t()&&(/complete|interactive|loaded/.test(document.readyState)?g():document.addEventListener(`DOMContentLoaded`,g)))},e.Hash=y});