| | import { POPUP_RESULT, POPUP_TYPE, Popup } from './popup.js'; |
| |
|
| | |
| | let loaderPopup; |
| |
|
| | let preloaderYoinked = false; |
| |
|
| | export function showLoader() { |
| | |
| | if (loaderPopup) loaderPopup.complete(POPUP_RESULT.CANCELLED); |
| |
|
| | loaderPopup = new Popup(` |
| | <div id="loader"> |
| | <div id="load-spinner" class="fa-solid fa-gear fa-spin fa-3x"></div> |
| | </div>`, POPUP_TYPE.DISPLAY, null, { transparent: true, animation: 'none', wide: true, large: true }); |
| |
|
| | |
| | loaderPopup.closeButton.style.display = 'none'; |
| |
|
| | loaderPopup.show(); |
| | } |
| |
|
| | export async function hideLoader() { |
| | if (!loaderPopup) { |
| | console.warn('There is no loader showing to hide'); |
| | return Promise.resolve(); |
| | } |
| |
|
| | return new Promise((resolve) => { |
| | const spinner = $('#load-spinner'); |
| | if (!spinner.length) { |
| | console.warn('Spinner element not found, skipping animation'); |
| | cleanup(); |
| | return; |
| | } |
| |
|
| | |
| | const transitionDuration = spinner[0] ? getComputedStyle(spinner[0]).transitionDuration : '0s'; |
| | const hasTransitions = parseFloat(transitionDuration) > 0; |
| |
|
| | if (hasTransitions) { |
| | Promise.race([ |
| | new Promise((r) => setTimeout(r, 500)), |
| | new Promise((r) => spinner.one('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', r)), |
| | ]).finally(cleanup); |
| | } else { |
| | cleanup(); |
| | } |
| |
|
| | function cleanup() { |
| | $('#loader').remove(); |
| | |
| | |
| | yoinkPreloader(); |
| |
|
| | loaderPopup.complete(POPUP_RESULT.AFFIRMATIVE) |
| | .catch((err) => console.error('Error completing loaderPopup:', err)) |
| | .finally(() => { |
| | loaderPopup = null; |
| | resolve(); |
| | }); |
| | } |
| |
|
| | |
| | spinner.css({ |
| | 'filter': 'blur(15px)', |
| | 'opacity': '0', |
| | }); |
| | }); |
| | } |
| |
|
| | function yoinkPreloader() { |
| | if (preloaderYoinked) return; |
| | document.getElementById('preloader').remove(); |
| | preloaderYoinked = true; |
| | } |
| |
|