@feedma/vue-gen-ui-resolver
Version:
A vue js version for dynamic resolution of gen ui components
2 lines (1 loc) • 2.25 kB
JavaScript
(function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.VueGenUiResolver={},n.Vue))})(this,(function(n,e){"use strict";const d={key:0,class:"error"},m=((i,t)=>{const s=i.__vccOpts||i;for(const[a,l]of t)s[a]=l;return s})(e.defineComponent({__name:"DynamicRemoteComponentLoader",props:{url:{},name:{},module:{},props:{}},setup(i){const t=i,s=e.ref(null),a=async()=>{const o=await import("__federation__");return o.__federation_method_getRemote&&o.__federation_method_setRemote?{getRemote:o.__federation_method_getRemote,setRemote:o.__federation_method_setRemote}:null},l=e.defineAsyncComponent({loader:async()=>{try{console.log("Loading remote component:",t.name,t.url,t.module);const o=await a();if(!o)throw new Error("Module federation is not configured. Please ensure @originjs/vite-plugin-federation is properly set up in your host application. The host application must configure the federation plugin and expose the federation runtime.");o.setRemote(t.name,{url:()=>Promise.resolve(t.url),format:"esm",from:"vite"});const r=await o.getRemote(t.name,t.module);return console.log("Remote component loaded successfully"),r}catch(o){const r=o instanceof Error?o.message:String(o);throw console.error("Error loading remote component:",o),s.value=r,o}},errorComponent:{template:'<div class="error">Failed to load remote component</div>'}});return(o,r)=>(e.openBlock(),e.createElementBlock("div",null,[s.value?(e.openBlock(),e.createElementBlock("div",d,[r[0]||(r[0]=e.createElementVNode("h3",null,"Error loading remote component:",-1)),e.createElementVNode("pre",null,e.toDisplayString(s.value),1)])):(e.openBlock(),e.createBlock(e.Suspense,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(l),e.normalizeProps(e.guardReactiveProps(t.props)),null,16)]),fallback:e.withCtx(()=>r[1]||(r[1]=[e.createElementVNode("div",null,"Loading remote component...",-1)])),_:1}))]))}}),[["__scopeId","data-v-196060d2"]]),c={install(i){i.component("DynamicRemoteComponentLoader",m)}};n.DynamicRemoteComponentLoader=m,n.default=c,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));