jv3-loader
Version:
easy loading overlay by cdnagroup
2 lines (1 loc) • 1.56 kB
JavaScript
(function(t,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],o):(t=typeof globalThis<"u"?globalThis:t||self,o(t.JV3Loader={},t.Vue))})(this,function(t,o){"use strict";const p=e=>(o.pushScopeId("data-v-a121654f"),e=e(),o.popScopeId(),e),u={key:0,class:"loading-overlay"},f=[p(()=>o.createElementVNode("div",{class:"spinner"},null,-1))],_=((e,n)=>{const a=e.__vccOpts||e;for(const[d,c]of n)a[d]=c;return a})(o.defineComponent({__name:"LoadingOverlay",setup(e){const n=l(),a=o.computed(()=>n==null?void 0:n.isLoading);return(d,c)=>a.value?(o.openBlock(),o.createElementBlock("div",u,f)):o.createCommentVNode("",!0)}}),[["__scopeId","data-v-a121654f"]]),i=o.reactive({loadingCount:0}),r={add(e){i.loadingCount++,e().finally(()=>{i.loadingCount--})},get isLoading(){return i.loadingCount>0}};function l(){const e=o.inject("loader");return e||console.error("Loader is not available"),e}const s={install(e){e.config.globalProperties.$loader=r,e.provide("loader",r),window.addEventListener("load",()=>{const n=document.getElementById("app");if(n){const a=document.createElement("div");a.setAttribute("id","global-loader"),n.appendChild(a);let d=o.createApp(_);d.config.globalProperties.$loader=e.config.globalProperties.$loader,d.provide("loader",r),d.mount("#global-loader")}else console.error('Main app container with id "app" not found.')})}};t.JV3Loader=s,t.default=s,t.useLoader=l,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});