@perses-dev/scatter-chart-plugin 0.11.0-beta.0 → 0.11.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/__mf/js/ScatterChart.30c3d368.js +7 -0
  2. package/__mf/js/async/181.c7d3eed2.js +2 -0
  3. package/__mf/js/async/181.c7d3eed2.js.LICENSE.txt +9 -0
  4. package/__mf/js/async/222.72c6f282.js +147 -0
  5. package/__mf/js/async/{301.643f002b.js.LICENSE.txt → 222.72c6f282.js.LICENSE.txt} +26 -2
  6. package/__mf/js/async/285.76f8ba2e.js +7 -0
  7. package/__mf/js/async/386.c425d184.js +2 -0
  8. package/__mf/js/async/386.c425d184.js.LICENSE.txt +9 -0
  9. package/__mf/js/async/90.8382577e.js +24 -0
  10. package/__mf/js/async/{986.287d4ccd.js.LICENSE.txt → 90.8382577e.js.LICENSE.txt} +5 -3
  11. package/__mf/js/async/__federation_expose_ScatterChart.5ab2b939.js +2 -0
  12. package/__mf/js/async/__federation_expose_ScatterChart.5ab2b939.js.LICENSE.txt +9 -0
  13. package/__mf/js/async/lib-router.ac74a3dc.js +2 -0
  14. package/__mf/js/async/{lib-router.3e810b61.js.LICENSE.txt → lib-router.ac74a3dc.js.LICENSE.txt} +3 -3
  15. package/__mf/js/main.458f9590.js +7 -0
  16. package/lib/ScatterChartPanel.d.ts +1 -1
  17. package/lib/ScatterChartPanel.d.ts.map +1 -1
  18. package/lib/ScatterChartPanel.js.map +1 -1
  19. package/lib/Scatterplot.d.ts.map +1 -1
  20. package/lib/Scatterplot.js +1 -2
  21. package/lib/Scatterplot.js.map +1 -1
  22. package/lib/cjs/Scatterplot.js +2 -3
  23. package/lib/mock-trace-data.d.ts +1 -1
  24. package/lib/mock-trace-data.js.map +1 -1
  25. package/lib/scatter-chart-model.d.ts +1 -1
  26. package/lib/scatter-chart-model.d.ts.map +1 -1
  27. package/lib/scatter-chart-model.js.map +1 -1
  28. package/mf-manifest.json +14 -16
  29. package/mf-stats.json +14 -16
  30. package/package.json +5 -4
  31. package/__mf/js/ScatterChart.7ec4d004.js +0 -7
  32. package/__mf/js/async/282.ec0a0600.js +0 -1
  33. package/__mf/js/async/301.643f002b.js +0 -2
  34. package/__mf/js/async/366.421872cb.js +0 -24
  35. package/__mf/js/async/366.421872cb.js.LICENSE.txt +0 -35
  36. package/__mf/js/async/558.54cf316c.js +0 -1
  37. package/__mf/js/async/755.e44e74f9.js +0 -7
  38. package/__mf/js/async/986.287d4ccd.js +0 -147
  39. package/__mf/js/async/__federation_expose_ScatterChart.e6e00868.js +0 -1
  40. package/__mf/js/async/lib-router.3e810b61.js +0 -2
  41. package/__mf/js/main.9cf99f7c.js +0 -7
  42. /package/__mf/css/async/{755.85c2cbf6.css → 285.85c2cbf6.css} +0 -0
  43. /package/__mf/js/async/{755.e44e74f9.js.LICENSE.txt → 285.76f8ba2e.js.LICENSE.txt} +0 -0
@@ -0,0 +1,7 @@
1
+ (()=>{var __webpack_modules__={89095(e,t,r){Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});let o=r(3958);t.logAndReport=function(e,t,r,n,a,i){return n(o.getShortErrorMsg(e,t,r,a))}},84990(e,t,r){let o=r(44528),n={[o.RUNTIME_001]:"Failed to get remoteEntry exports.",[o.RUNTIME_002]:'The remote entry interface does not contain "init"',[o.RUNTIME_003]:"Failed to get manifest.",[o.RUNTIME_004]:"Failed to locate remote.",[o.RUNTIME_005]:"Invalid loadShareSync function call from bundler runtime",[o.RUNTIME_006]:"Invalid loadShareSync function call from runtime",[o.RUNTIME_007]:"Failed to get remote snapshot.",[o.RUNTIME_008]:"Failed to load script resources.",[o.RUNTIME_009]:"Please call createInstance first.",[o.RUNTIME_010]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[o.RUNTIME_011]:"The remoteEntry URL is missing from the remote snapshot.",[o.RUNTIME_012]:'The getter for the shared module is not a function. This may be caused by setting "shared.import: false" without the host providing the corresponding lib.',[o.RUNTIME_013]:"The manifest is not a valid Module Federation manifest.",[o.RUNTIME_014]:"The remote does not expose the requested module.",[o.RUNTIME_015]:"Remote container initialization failed."},a={[o.TYPE_001]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},i={[o.BUILD_001]:"Failed to find expose module.",[o.BUILD_002]:"PublicPath is required in prod mode."},s={...n,...a,...i};t.buildDescMap=i,t.errorDescMap=s,t.runtimeDescMap=n,t.typeDescMap=a},44528(e,t){let r="RUNTIME-001",o="RUNTIME-002",n="RUNTIME-003",a="RUNTIME-004",i="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",c="RUNTIME-008",u="RUNTIME-009",d="RUNTIME-010",f="RUNTIME-011",h="RUNTIME-012",m="RUNTIME-013",p="RUNTIME-014",g="RUNTIME-015",y="TYPE-001",E="BUILD-002";t.BUILD_001="BUILD-001",t.BUILD_002=E,t.RUNTIME_001=r,t.RUNTIME_002=o,t.RUNTIME_003=n,t.RUNTIME_004=a,t.RUNTIME_005=i,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=c,t.RUNTIME_009=u,t.RUNTIME_010=d,t.RUNTIME_011=f,t.RUNTIME_012=h,t.RUNTIME_013=m,t.RUNTIME_014=p,t.RUNTIME_015=g,t.TYPE_001=y},3958(e,t){let r=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`;t.getShortErrorMsg=(e,t,o,n)=>{let a=[`${[t[e]]} #${e}`];return o&&a.push(`args: ${JSON.stringify(o)}`),a.push(r(e)),n&&a.push(`Original Error Message:
2
+ ${n}`),a.join("\n")}},4071(e,t,r){Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});let o=r(44528),n=r(3958),a=r(84990);t.BUILD_001=o.BUILD_001,t.BUILD_002=o.BUILD_002,t.RUNTIME_001=o.RUNTIME_001,t.RUNTIME_002=o.RUNTIME_002,t.RUNTIME_003=o.RUNTIME_003,t.RUNTIME_004=o.RUNTIME_004,t.RUNTIME_005=o.RUNTIME_005,t.RUNTIME_006=o.RUNTIME_006,t.RUNTIME_007=o.RUNTIME_007,t.RUNTIME_008=o.RUNTIME_008,t.RUNTIME_009=o.RUNTIME_009,t.RUNTIME_010=o.RUNTIME_010,t.RUNTIME_011=o.RUNTIME_011,t.RUNTIME_012=o.RUNTIME_012,t.RUNTIME_013=o.RUNTIME_013,t.RUNTIME_014=o.RUNTIME_014,t.RUNTIME_015=o.RUNTIME_015,t.TYPE_001=o.TYPE_001,t.buildDescMap=a.buildDescMap,t.errorDescMap=a.errorDescMap,t.getShortErrorMsg=n.getShortErrorMsg,t.runtimeDescMap=a.runtimeDescMap,t.typeDescMap=a.typeDescMap},36568(e,t){var r=Object.defineProperty;t.__exportAll=(e,t)=>{let o={};for(var n in e)r(o,n,{get:e[n],enumerable:!0});return t||r(o,Symbol.toStringTag,{value:"Module"}),o}},45818(e,t){let r="default";t.DEFAULT_REMOTE_TYPE="global",t.DEFAULT_SCOPE=r},97795(e,t,r){let o=r(85968),n=r(45818),a=r(7269),i=r(90537),s=r(8349),l=r(84616);r(87728);let c=r(11415),u=r(14007),d=r(25344),f=r(69757),h=r(11767),m=r(27185);r(7353);let p=r(62648),g=r(88170),y=r(36292),E=r(39032),S=r(61949),b=r(89850),_=r(4071);t.ModuleFederation=class{initOptions(e){e.name&&e.name!==this.options.name&&o.error((0,_.getShortErrorMsg)(_.RUNTIME_010,_.runtimeDescMap)),this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n.DEFAULT_SCOPE,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let o=l.getRemoteInfo({name:e,entry:t}),n=new c.Module({host:this,remoteInfo:o});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=a.formatShareConfigs(e,t),{userOptions:o,options:n}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(n,o),{allShareInfos:s}=this.sharedHandler.registerShared(n,o),l=[...n.plugins];o.plugins&&o.plugins.forEach(e=>{l.includes(e)||l.push(e)});let c={...e,...t,plugins:l,remotes:i,shared:s,id:o.id||e.id};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){let t=s.registerPlugins(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new m.PluginSystem({beforeInit:new f.SyncWaterfallHook("beforeInit"),init:new u.SyncHook,beforeInitContainer:new h.AsyncWaterfallHook("beforeInitContainer"),initContainer:new h.AsyncWaterfallHook("initContainer")}),this.version="2.5.1",this.moduleCache=new Map,this.loaderHook=new m.PluginSystem({getModuleInfo:new u.SyncHook,createScript:new u.SyncHook,createLink:new u.SyncHook,fetch:new d.AsyncHook,loadEntryError:new d.AsyncHook,afterLoadEntry:new d.AsyncHook("afterLoadEntry"),beforeInitRemote:new d.AsyncHook("beforeInitRemote"),afterInitRemote:new d.AsyncHook("afterInitRemote"),beforeGetExpose:new d.AsyncHook("beforeGetExpose"),afterGetExpose:new d.AsyncHook("afterGetExpose"),beforeExecuteFactory:new d.AsyncHook("beforeExecuteFactory"),afterExecuteFactory:new d.AsyncHook("afterExecuteFactory"),getModuleFactory:new d.AsyncHook}),this.bridgeHook=new m.PluginSystem({beforeBridgeRender:new u.SyncHook,afterBridgeRender:new u.SyncHook,beforeBridgeDestroy:new u.SyncHook,afterBridgeDestroy:new u.SyncHook});const t=[p.snapshotPlugin(),g.generatePreloadAssetsPlugin()],r={id:i.getBuilderId(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:b.isBrowserEnvValue};this.name=e.name,this.options=r,this.snapshotHandler=new y.SnapshotHandler(this),this.sharedHandler=new E.SharedHandler(this),this.remoteHandler=new S.RemoteHandler(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}},74331(e,t,r){let o=r(85968),n=r(95018),a=r(89850),i="object"==typeof globalThis?globalThis:window,s=(()=>{try{return document.defaultView}catch{return i}})(),l=s;function c(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function u(e,t){return Object.hasOwnProperty.call(e,t)}u(i,"__GLOBAL_LOADING_REMOTE_ENTRY__")||c(i,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let d=i.__GLOBAL_LOADING_REMOTE_ENTRY__;function f(e){var t,r,o,n,a,i;u(e,"__VMOK__")&&!u(e,"__FEDERATION__")&&c(e,"__FEDERATION__",e.__VMOK__),u(e,"__FEDERATION__")||(c(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),c(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(o=e.__FEDERATION__).moduleInfo??(o.moduleInfo={}),(n=e.__FEDERATION__).__SHARE__??(n.__SHARE__={}),(a=e.__FEDERATION__).__MANIFEST_LOADING__??(a.__MANIFEST_LOADING__={}),(i=e.__FEDERATION__).__PRELOADED_MAP__??(i.__PRELOADED_MAP__=new Map)}function h(){i.__FEDERATION__.__GLOBAL_PLUGIN__=[],i.__FEDERATION__.__INSTANCES__=[],i.__FEDERATION__.moduleInfo={},i.__FEDERATION__.__SHARE__={},i.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(d).forEach(e=>{delete d[e]})}function m(e){i.__FEDERATION__.__INSTANCES__.push(e)}function p(){return i.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,a.isDebugMode)();t&&(i.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,i.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.5.1")}function y(e,t){if("string"==typeof t)if(e[t])return{value:e[t],key:t};else{for(let r of Object.keys(e)){let[o,n]=r.split(":"),a=`${o}:${t}`,i=e[a];if(i)return{value:i,key:a}}return{value:void 0,key:t}}o.error(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}f(i),f(s);let E=()=>s.__FEDERATION__.moduleInfo,S=(e,t)=>{let r=y(t,n.getFMId(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,o=n.getFMId(r),a=y(s.__FEDERATION__.moduleInfo,o).value;if((null==a?void 0:a.version)===t)return a}},b=e=>S(e,s.__FEDERATION__.moduleInfo),_=(e,t)=>{let r=n.getFMId(e);return s.__FEDERATION__.moduleInfo[r]=t,s.__FEDERATION__.moduleInfo},v=e=>(s.__FEDERATION__.moduleInfo={...s.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete s.__FEDERATION__.moduleInfo[t]}),I=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:i[r]}},R=e=>{let{__GLOBAL_PLUGIN__:t}=s.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):o.warn(`The plugin ${e.name} has been registered.`)})},N=()=>s.__FEDERATION__.__GLOBAL_PLUGIN__,T=e=>i.__FEDERATION__.__PRELOADED_MAP__.get(e),M=e=>i.__FEDERATION__.__PRELOADED_MAP__.set(e,!0);t.CurrentGlobal=i,t.Global=l,t.addGlobalSnapshot=v,t.getGlobalFederationConstructor=p,t.getGlobalHostPlugins=N,t.getGlobalSnapshot=E,t.getGlobalSnapshotInfoByModuleInfo=b,t.getInfoWithoutType=y,t.getPreloaded=T,t.getRemoteEntryExports=I,t.getTargetSnapshotInfoByModuleInfo=S,t.globalLoading=d,t.nativeGlobal=s,t.registerGlobalPlugins=R,t.resetFederationGlobalInfo=h,t.setGlobalFederationConstructor=g,t.setGlobalFederationInstance=m,t.setGlobalSnapshotInfoByModuleInfo=_,t.setPreloaded=M},4697(e,t,r){let o=r(74331),n=r(7269),a=r(28395),i=r(84616);r(87728);let s=r(3371),l={getRegisteredShare:n.getRegisteredShare,getGlobalShareScope:n.getGlobalShareScope};t.default={global:{Global:o.Global,nativeGlobal:o.nativeGlobal,resetFederationGlobalInfo:o.resetFederationGlobalInfo,setGlobalFederationInstance:o.setGlobalFederationInstance,getGlobalFederationConstructor:o.getGlobalFederationConstructor,setGlobalFederationConstructor:o.setGlobalFederationConstructor,getInfoWithoutType:o.getInfoWithoutType,getGlobalSnapshot:o.getGlobalSnapshot,getTargetSnapshotInfoByModuleInfo:o.getTargetSnapshotInfoByModuleInfo,getGlobalSnapshotInfoByModuleInfo:o.getGlobalSnapshotInfoByModuleInfo,setGlobalSnapshotInfoByModuleInfo:o.setGlobalSnapshotInfoByModuleInfo,addGlobalSnapshot:o.addGlobalSnapshot,getRemoteEntryExports:o.getRemoteEntryExports,registerGlobalPlugins:o.registerGlobalPlugins,getGlobalHostPlugins:o.getGlobalHostPlugins,getPreloaded:o.getPreloaded,setPreloaded:o.setPreloaded},share:l,utils:{matchRemoteWithNameAndExpose:a.matchRemoteWithNameAndExpose,preloadAssets:s.preloadAssets,getRemoteInfo:i.getRemoteInfo}}},6614(e,t,r){Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});let o=r(85968),n=r(95018),a=r(74331),i=r(51209),s=r(7269),l=r(28395),c=r(84616);r(87728);let u=r(4697),d=r(11415),f=r(97795),h=r(94219),m=r(89850),p=u.default;t.CurrentGlobal=a.CurrentGlobal,t.Global=a.Global,t.Module=d.Module,t.ModuleFederation=f.ModuleFederation,t.addGlobalSnapshot=a.addGlobalSnapshot,t.assert=o.assert,t.error=o.error,t.getGlobalFederationConstructor=a.getGlobalFederationConstructor,t.getGlobalSnapshot=a.getGlobalSnapshot,t.getInfoWithoutType=a.getInfoWithoutType,t.getRegisteredShare=s.getRegisteredShare,t.getRemoteEntry=c.getRemoteEntry,t.getRemoteInfo=c.getRemoteInfo,t.helpers=p,t.isStaticResourcesEqual=n.isStaticResourcesEqual,Object.defineProperty(t,"loadScript",{enumerable:!0,get:function(){return m.loadScript}}),Object.defineProperty(t,"loadScriptNode",{enumerable:!0,get:function(){return m.loadScriptNode}}),t.matchRemoteWithNameAndExpose=l.matchRemoteWithNameAndExpose,t.registerGlobalPlugins=a.registerGlobalPlugins,t.resetFederationGlobalInfo=a.resetFederationGlobalInfo,t.safeWrapper=n.safeWrapper,t.satisfy=i.satisfy,t.setGlobalFederationConstructor=a.setGlobalFederationConstructor,t.setGlobalFederationInstance=a.setGlobalFederationInstance,Object.defineProperty(t,"types",{enumerable:!0,get:function(){return h.type_exports}})},11415(e,t,r){let o=r(85968),n=r(95018),a=r(28395),i=r(84616),s=r(53565);r(87728);let l=r(89850),c=r(4071);function u(e){if(!e||!("modules"in e)||!Array.isArray(e.modules))return;let t=e.modules.map(e=>e.moduleName).filter(Boolean);return t.length?t.join(","):void 0}function d(e,t,r){let o=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{o[e]||(o[e]={})});let a={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(a,"shareScopeMap",{value:o,enumerable:!1}),{remoteEntryInitOptions:a,shareScope:o[n[0]],initScope:r??[]}}t.Module=class{async getEntry(e){if(this.remoteEntryExports)return this.remoteEntryExports;let t=await i.getRemoteEntry({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports,resourceContext:{initiator:"loadRemote",id:a.composeRemoteRequestId(this.remoteInfo.name,e),resourceType:"remoteEntry"}});return o.assert(t,`remoteEntryExports is undefined
3
+ ${(0,l.safeToString)(this.remoteInfo)}`),this.remoteEntryExports=t,this.remoteEntryExports}async init(e,t,r,n){let a=await this.getEntry(n);if(this.inited)return await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:a,cached:!0,origin:this.host}),a;if(this.initPromise){try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:a,cached:!0,origin:this.host})}catch(r){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:a,error:r,cached:!0,origin:this.host}),r}return a}this.initing=!0,this.initPromise=(async()=>{await this.host.loaderHook.lifecycle.beforeInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,origin:this.host});let{remoteEntryInitOptions:n,shareScope:i,initScope:l}=d(this.remoteInfo,this.host.shareScopeMap,r),u=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:l,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==a?void 0:a.init)&&o.error(c.RUNTIME_002,c.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,s.optionsToMFContext(this.host.options));try{await a.init(u.shareScope,u.initScope,u.remoteEntryInitOptions)}catch(e){o.error(c.RUNTIME_015,c.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName,shareScope:this.remoteInfo.shareScope},`${e}`,s.optionsToMFContext(this.host.options))}await this.host.hooks.lifecycle.initContainer.emit({...u,id:e,remoteSnapshot:t,remoteEntryExports:a}),this.inited=!0})();try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:a,origin:this.host})}catch(r){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:a,error:r,origin:this.host}),r}finally{this.initing=!1,this.initPromise=void 0}return a}async get(e,t,r,a){let i,{loadFactory:l=!0}=r||{loadFactory:!0},d=await this.init(e,a,void 0,t);this.lib=d,await this.host.loaderHook.lifecycle.beforeGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:d,origin:this.host});try{let r=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:d,expose:t,moduleInfo:this.remoteInfo});(i="function"==typeof r?r:void 0)||(i=await d.get(t)),i||o.error(c.RUNTIME_014,c.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,expose:t,requestId:e,availableExposes:u(a)},void 0,s.optionsToMFContext(this.host.options)),await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:d,moduleFactory:i,origin:this.host})}catch(r){throw await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:d,error:r,origin:this.host}),r}let f=n.processModuleAlias(this.remoteInfo.name,t),h=this.wraperFactory(i,f);if(!l)return h;await this.host.loaderHook.lifecycle.beforeExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:l,origin:this.host});try{let r=await h();return await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:l,exposeModule:r,origin:this.host}),r}catch(r){throw await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:l,error:r,origin:this.host}),r}}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return()=>{let o=e();return o instanceof Promise?o.then(e=>(r(e,t),e)):(r(o,t),o)}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}},88170(e,t,r){let o=r(95018),n=r(74331),a=r(7269);r(87728);let i=r(3371),s=r(62648),l=r(89850);function c(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function u(e,t,r,a){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},s=arguments.length>5?arguments[5]:void 0,{value:d}=n.getInfoWithoutType(e,o.getFMId(t)),f=s||d;if(f&&!(0,l.isManifestProvider)(f)&&(r(f,t,a),f.remotesInfo))for(let t of Object.keys(f.remotesInfo)){if(i[t])continue;i[t]=!0;let o=c(t),n=f.remotesInfo[t];u(e,{name:o.name,version:n.matchedVersion},r,!1,i,void 0)}}let d=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function f(e,t,r,s,c){let f=[],h=[],m=[],p=new Set,g=new Set,{options:y}=e,{preloadConfig:E}=t,{depsRemote:S}=E;if(u(s,r,(t,r,a)=>{var s;let c;if(a)c=E;else if(Array.isArray(S)){let e=S.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;c=i.defaultPreloadArgs(e)}else{if(!0!==S)return;c=E}let u=(0,l.getResourceUrl)(t,o.getRemoteEntryInfoFromSnapshot(t).url);u&&m.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let d="modules"in t?t.modules:[],p=i.normalizePreloadExposes(c.exposes);function g(e){let r=e.map(e=>(0,l.getResourceUrl)(t,e));return c.filter?r.filter(c.filter):r}if(p.length&&"modules"in t&&(d=null==t||null==(s=t.modules)?void 0:s.reduce((e,t)=>((null==p?void 0:p.indexOf(t.moduleName))!==-1&&e.push(t),e),[])),d){let o=d.length;for(let a=0;a<o;a++){let o=d[a],i=`${r.name}/${o.moduleName}`;e.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({id:"."===o.moduleName?r.name:i,name:r.name,remoteSnapshot:t,preloadConfig:c,remote:r,origin:e}),n.getPreloaded(i)||("all"===c.resourceCategory?(f.push(...g(o.assets.css.async)),f.push(...g(o.assets.css.sync)),h.push(...g(o.assets.js.async)),h.push(...g(o.assets.js.sync))):"sync"===c.resourceCategory&&(f.push(...g(o.assets.css.sync)),h.push(...g(o.assets.js.sync))),n.setPreloaded(i))}}},!0,{},c),c.shared&&c.shared.length>0){let t=(t,r)=>{let{shared:o}=a.getRegisteredShare(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};o&&"function"==typeof o.lib&&(r.assets.js.sync.forEach(e=>{p.add(e)}),r.assets.css.sync.forEach(e=>{g.add(e)}))};c.shared.forEach(e=>{var r;let n=null==(r=y.shared)?void 0:r[e.sharedName];if(!n)return;let a=e.version?n.find(t=>t.version===e.version):n;a&&o.arrayOptions(a).forEach(r=>{t(r,e)})})}let b=h.filter(e=>!p.has(e)&&!d("script",e));return{cssAssets:f.filter(e=>!g.has(e)&&!d("link",e)),jsAssetsWithoutEntry:b,entryAssets:m.filter(e=>!d("script",e.url))}}t.generatePreloadAssetsPlugin=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:n,remote:a,globalSnapshot:i,remoteSnapshot:c}=e;return l.isBrowserEnvValue?o.isRemoteInfoWithEntry(a)&&o.isPureRemoteEntry(a)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:a.name,url:a.entry,moduleInfo:{name:n.name,entry:a.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(s.assignRemoteInfo(n,c),f(t,r,n,i,c)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}}},36292(e,t,r){let o=r(85968),n=r(95018),a=r(74331),i=r(84616),s=r(53565);r(87728);let l=r(25344),c=r(11767),u=r(27185);r(7353);let d=r(89850),f=r(4071);function h(e,t){let r=a.getGlobalSnapshotInfoByModuleInfo({name:t.name,version:t.options.version}),o=r&&"remotesInfo"in r&&r.remotesInfo&&a.getInfoWithoutType(r.remotesInfo,e.name).value;return o&&o.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:a.getGlobalSnapshot(),remoteSnapshot:a.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:o.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:a.getGlobalSnapshot(),remoteSnapshot:a.getGlobalSnapshotInfoByModuleInfo({name:e.name,version:"version"in e?e.version:void 0})}}t.SnapshotHandler=class{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:l,initiator:c="loadRemote"}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i,origin:this.HostInstance});let h=a.getGlobalSnapshotInfoByModuleInfo({name:this.HostInstance.options.name,version:this.HostInstance.options.version});h||(h={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},a.addGlobalSnapshot({[this.HostInstance.options.name]:h})),h&&"remotesInfo"in h&&!a.getInfoWithoutType(h.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(h.remotesInfo={...null==h?void 0:h.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:m,remoteSnapshot:p,globalSnapshot:g}=this.getGlobalRemoteInfo(i),{remoteSnapshot:y,globalSnapshot:E}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:m,remoteSnapshot:p,globalSnapshot:g});if(y)if((0,d.isManifestProvider)(y)){let e=d.isBrowserEnvValue?y.remoteEntry:y.ssrRemoteEntry||y.remoteEntry||"",o=await this.loadManifestSnapshot(e,i,{},{initiator:c,id:l||i.name}),n=a.setGlobalSnapshotInfoByModuleInfo({...i,entry:e},o);t=o,r=n}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:y,from:"global"});t=e,r=E}else if(n.isRemoteInfoWithEntry(i)){let e=await this.loadManifestSnapshot(i.entry,i,{},{initiator:c,id:l||i.name}),o=a.setGlobalSnapshotInfoByModuleInfo(i,e);t=e,r=o}else o.error(f.RUNTIME_007,f.runtimeDescMap,{remoteName:i.name,remoteVersion:i.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(E)},void 0,s.optionsToMFContext(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:l,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return h(e,this.HostInstance)}async getManifestJson(e,t,r,n){return(async()=>{let r=i.getRemoteInfo(t),a=this.manifestCache.get(e);if(a)return a;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{},r,n?{...n,url:e,resourceType:"manifest"}:void 0);t&&t instanceof Response||(t=await fetch(e,{})),a=await t.json()}catch(n){(a=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",remote:r,origin:this.HostInstance}))||(delete this.manifestLoading[e],o.error(f.RUNTIME_003,f.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`,s.optionsToMFContext(this.HostInstance.options)))}let l=[!a.metaData&&"metaData",!a.exposes&&"exposes",!a.shared&&"shared"].filter(Boolean);return l.length>0&&await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:Error(`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${l.join(", ")}.`),from:"runtime",lifecycle:"afterResolve",remote:r,origin:this.HostInstance}),l.length>0&&o.error(f.RUNTIME_013,f.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name,missingFields:l.join(",")},void 0,s.optionsToMFContext(this.HostInstance.options)),this.manifestCache.set(e,a),a})()}async loadManifestSnapshot(e,t,r,o){let n=async()=>{let n=await this.getManifestJson(e,t,r,o),a=(0,d.generateSnapshotFromManifest)(n,{version:e}),{remoteSnapshot:i}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:n,remoteSnapshot:a,manifestUrl:e,from:"manifest"});return i};return this.manifestLoading[e]||(this.manifestLoading[e]=n().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new u.PluginSystem({beforeLoadRemoteSnapshot:new l.AsyncHook("beforeLoadRemoteSnapshot"),loadSnapshot:new c.AsyncWaterfallHook("loadGlobalSnapshot"),loadRemoteSnapshot:new c.AsyncWaterfallHook("loadRemoteSnapshot"),afterLoadSnapshot:new c.AsyncWaterfallHook("afterLoadSnapshot")}),this.manifestLoading=a.Global.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}},t.getGlobalRemoteInfo=h},62648(e,t,r){let o=r(85968),n=r(95018),a=r(28395);r(87728);let i=r(3371),s=r(89850),l=r(4071);function c(e,t){let r=n.getRemoteEntryInfoFromSnapshot(t);r.url||o.error(l.RUNTIME_011,l.runtimeDescMap,{remoteName:e.name});let a=(0,s.getResourceUrl)(t,r.url);s.isBrowserEnvValue||a.startsWith("http")||(a=`https:${a}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=a,e.version=t.version,e.buildVersion=t.buildVersion}function u(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:o,origin:s,remoteInfo:l,id:u}=e;if(!n.isRemoteInfoWithEntry(t)||!n.isPureRemoteEntry(t)){let{remoteSnapshot:n,globalSnapshot:d}=await s.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a.composeRemoteRequestId(t.name,o)});c(l,n);let f={remote:t,preloadConfig:{nameOrAlias:r,exposes:[o],resourceCategory:"sync",share:!1,depsRemote:!1}},h=await s.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:s,preloadOptions:f,remoteInfo:l,remote:t,remoteSnapshot:n,globalSnapshot:d});return h&&i.preloadAssets(l,s,h,!1,{initiator:"loadRemote",id:u}).catch(()=>void 0),{...e,remoteSnapshot:n}}return e}}}t.assignRemoteInfo=c,t.snapshotPlugin=u},61949(e,t,r){let o=r(85968),n=r(74331),a=r(45818),i=r(7269),s=r(28395),l=r(84616),c=r(53565);r(87728);let u=r(3371),d=r(11415),f=r(14007),h=r(25344),m=r(69757),p=r(11767),g=r(27185);r(7353);let y=r(36292),E=r(89850),S=r(4071);t.RemoteHandler=class{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:o}=t,{name:n,alias:a}=r;if(this.idToRemoteMap[e]={name:r.name,expose:o},a&&e.startsWith(n)){let t=e.replace(n,a);this.idToRemoteMap[t]={name:r.name,expose:o};return}if(a&&e.startsWith(a)){let t=e.replace(a,n);this.idToRemoteMap[t]={name:r.name,expose:o}}}async loadRemote(e,t){let r,{host:o}=this,n=s.matchRemoteWithNameAndExpose(o.options.remotes,e),a=e,i=null==n?void 0:n.expose,c=n?l.getRemoteInfo(n.remote):void 0;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:s,moduleOptions:u,remoteMatchInfo:d}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:f,remote:h,expose:m,id:p,remoteSnapshot:g}=d;a=p,i=m,c=l.getRemoteInfo(h);let y=await s.get(p,m,t,g),E=await this.hooks.lifecycle.onLoad.emit({id:p,pkgNameOrAlias:f,expose:m,exposeModule:n?y:void 0,exposeModuleFactory:n?void 0:y,remote:h,options:u,moduleInstance:s,origin:o});if(this.setIdToRemoteMap(e,d),r={id:a,expose:i,remote:c,options:t,origin:o},"function"==typeof E)return E;return y}catch(l){let n,{from:s="runtime"}=t||{from:"runtime"};try{n=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:l,from:s,lifecycle:"onLoad",expose:i,remote:c,origin:o})}catch(e){throw r={id:a,expose:i,remote:c,options:t,error:e,origin:o},e}if(!n)throw r={id:a,expose:i,remote:c,options:t,error:l,origin:o},l;return r={id:a,expose:i,remote:c,options:t,error:l,origin:o,recovered:!0},n}finally{r&&await this.hooks.lifecycle.afterLoadRemote.emit(r)}}async preloadRemote(e){let t,{host:r}=this,o=[];await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:r.options,origin:r});let n=u.formatPreloadArgs(r.options.remotes,e),a=e=>{let{preloadConfig:t,remote:r}=e,o=t.exposes||[];return o.length?o.map(o=>({ops:{...e,preloadConfig:{...t,exposes:[o]}},id:s.composeRemoteRequestId(r.name,o)})):[{ops:e,id:`${r.name}/*`}]};await Promise.all(n.flatMap(a).map(async e=>{let{ops:t,id:n}=e,{remote:a,preloadConfig:i}=t,s=l.getRemoteInfo(a);try{let{globalSnapshot:e,remoteSnapshot:l}=await r.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:a,id:n,initiator:"preloadRemote"}),c=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:r,preloadOptions:t,remote:a,remoteInfo:s,globalSnapshot:e,remoteSnapshot:l});if(!c)return;let d=await u.preloadAssets(s,r,c,!0,{initiator:"preloadRemote",id:n});o.push({remote:a,remoteInfo:s,preloadConfig:i,id:n,results:d})}catch(e){o.push({remote:a,remoteInfo:s,preloadConfig:i,id:n,results:[{url:s.entry,status:"error",resourceType:/\.json(?:$|[?#])/i.test(s.entry)?"manifest":"remoteEntry",initiator:"preloadRemote",id:n,error:e}]})}}));let i=o.flatMap(e=>e.results.filter(e=>"error"===e.status||"timeout"===e.status));if(i.length>0&&Object.assign(t=Error(`preloadRemote failed to load ${i.length} resource(s).`),{results:o,failedResults:i}),await this.hooks.lifecycle.afterPreloadRemote.emit({preloadOps:e,options:r.options,origin:r,results:o,error:t}),t)throw t}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:a}=t,i=s.matchRemoteWithNameAndExpose(r.options.remotes,a);if(!i)try{o.error(S.RUNTIME_004,S.runtimeDescMap,{hostName:r.options.name,requestId:a},void 0,c.optionsToMFContext(r.options))}catch(e){throw await this.hooks.lifecycle.afterMatchRemote.emit({id:a,options:r.options,error:e,origin:r}),e}let{remote:u}=i,f=l.getRemoteInfo(u);await this.hooks.lifecycle.afterMatchRemote.emit({id:a,...i,options:r.options,remoteInfo:f,origin:r});let h=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:a,...i,options:r.options,origin:r,remoteInfo:f}),{remote:m,expose:p}=h;o.assert(m&&p,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${a}.`);let g=r.moduleCache.get(m.name),y={host:r,remoteInfo:f};return g||(g=new d.Module(y),r.moduleCache.set(m.name,g)),{module:g,moduleOptions:y,remoteMatchInfo:h}}registerRemote(e,t,r){let{host:n}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});o.assert(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&E.isBrowserEnvValue&&"u">typeof window&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=a.DEFAULT_SCOPE),e.type||(e.type=a.DEFAULT_REMOTE_TYPE)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});let s=t.find(t=>t.name===e.name);if(s){let o=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(s),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),(0,E.warn)(o.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n})}removeRemote(e){try{let{host:r}=this,{name:o}=e,a=r.options.remotes.findIndex(e=>e.name===o);-1!==a&&r.options.remotes.splice(a,1);let s=r.moduleCache.get(e.name);if(s){var t;let o=s.remoteInfo,a=o.entryGlobalName;n.CurrentGlobal[a]&&((null==(t=Object.getOwnPropertyDescriptor(n.CurrentGlobal,a))?void 0:t.configurable)?delete n.CurrentGlobal[a]:n.CurrentGlobal[a]=void 0);let c=l.getRemoteEntryUniqueKey(s.remoteInfo);n.globalLoading[c]&&delete n.globalLoading[c],r.snapshotHandler.manifestCache.delete(o.entry);let u=o.buildVersion?(0,E.composeKeyWithSeparator)(o.name,o.buildVersion):o.name,d=n.CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===u:e.name===u);if(-1!==d){let e=n.CurrentGlobal.__FEDERATION__.__INSTANCES__[d];u=e.options.id||u;let t=i.getGlobalShareScope(),r=!0,a=[];Object.keys(t).forEach(e=>{let n=t[e];n&&Object.keys(n).forEach(t=>{let i=n[t];i&&Object.keys(i).forEach(n=>{let s=i[n];s&&Object.keys(s).forEach(i=>{let l=s[i];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:a.push([e,t,n,i])):a.push([e,t,n,i]))})})})}),r&&(e.shareScopeMap={},delete t[u]),a.forEach(e=>{var r,o,n;let[a,i,s,l]=e;null==(n=t[a])||null==(o=n[i])||null==(r=o[s])||delete r[l]}),n.CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(d,1)}let{hostGlobalSnapshot:f}=y.getGlobalRemoteInfo(e,r);if(f){let t=f&&"remotesInfo"in f&&f.remotesInfo&&n.getInfoWithoutType(f.remotesInfo,e.name).key;t&&(delete f.remotesInfo[t],n.Global.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete n.Global.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){o.logger.error(`removeRemote failed: ${e instanceof Error?e.message:String(e)}`)}}constructor(e){this.hooks=new g.PluginSystem({beforeRegisterRemote:new m.SyncWaterfallHook("beforeRegisterRemote"),registerRemote:new m.SyncWaterfallHook("registerRemote"),beforeRequest:new p.AsyncWaterfallHook("beforeRequest"),afterMatchRemote:new h.AsyncHook("afterMatchRemote"),onLoad:new h.AsyncHook("onLoad"),afterLoadRemote:new h.AsyncHook("afterLoadRemote"),handlePreloadModule:new f.SyncHook("handlePreloadModule"),errorLoadRemote:new h.AsyncHook("errorLoadRemote"),beforePreloadRemote:new h.AsyncHook("beforePreloadRemote"),generatePreloadAssets:new h.AsyncHook("generatePreloadAssets"),afterPreloadRemote:new h.AsyncHook("afterPreloadRemote"),loadEntry:new h.AsyncHook}),this.host=e,this.idToRemoteMap={}}}},39032(e,t,r){let o=r(85968),n=r(45818),a=r(7269),i=r(53565);r(87728);let s=r(14007),l=r(25344),c=r(69757),u=r(11767),d=r(27185);r(7353);let f=r(4071);t.SharedHandler=class{emitAfterLoadShare(e){let{lifecycle:t,pkgName:r,shareInfo:n,selectedShared:a}=e;try{this.hooks.lifecycle.afterLoadShare.emit({pkgName:r,shareInfo:n,selectedShared:a,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:t,origin:this.host})}catch(e){o.warn(e)}}emitErrorLoadShare(e){let{lifecycle:t,pkgName:r,shareInfo:n,error:a,recovered:i}=e;try{this.hooks.lifecycle.errorLoadShare.emit({pkgName:r,shareInfo:n,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:t,origin:this.host,error:a,recovered:i})}catch(e){o.warn(e)}}registerShared(e,t){let{newShareInfos:r,allShareInfos:o}=a.formatShareConfigs(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(o=>{var n;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(n=this.shareScopeMap[o])?void 0:n[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:o}}async loadShare(e,t){let{host:r}=this,n=a.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared}),i=n;try{(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))})),i=(await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r})).shareInfo,o.assert(i,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);let s=i,{shared:l,useTreesShaking:c}=a.getRegisteredShare(this.shareScopeMap,e,i,this.hooks.lifecycle.resolveShare)||{};if(l){let t=a.directShare(l,c);if(t.lib)return a.addUseIn(t,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:l}),t.lib;if(t.loading&&!t.loaded){let o=await t.loading;return t.loaded=!0,t.lib||(t.lib=o),a.addUseIn(t,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:l}),o}{let o=(async()=>{let e=await t.get();return a.addUseIn(t,r.options.name),t.loaded=!0,t.lib=e,e})();this.setShared({pkgName:e,loaded:!1,shared:l,from:r.options.name,lib:null,loading:o,treeShaking:c?t:void 0});let n=await o;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:l}),n}}{if(null==t?void 0:t.customShareInfo)return this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,recovered:!0}),!1;let o=a.shouldUseTreeShaking(s.treeShaking),n=a.directShare(s,o),i=(async()=>{let t=await n.get();n.lib=t,n.loaded=!0,a.addUseIn(n,r.options.name);let{shared:o,useTreesShaking:i}=a.getRegisteredShare(this.shareScopeMap,e,s,this.hooks.lifecycle.resolveShare)||{};if(o){let e=a.directShare(o,i);e.lib=t,e.loaded=!0,o.from=s.from}return t})();this.setShared({pkgName:e,loaded:!1,shared:s,from:r.options.name,lib:null,loading:i,treeShaking:o?n:void 0});let l=await i;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,selectedShared:s}),l}}catch(t){throw this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:i,error:t}),t}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n.DEFAULT_SCOPE,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,o=null==t?void 0:t.from,i=null==t?void 0:t.strategy,s=null==t?void 0:t.initScope,l=[];if("build"!==o){let{initTokens:t}=this;s||(s=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),s.indexOf(r)>=0)return l;s.push(r)}let c=this.shareScopeMap,u=r.options.name;c[e]||(c[e]={});let d=c[e],f=(e,t)=>{var r;let{version:o,eager:n}=t;d[e]=d[e]||{};let i=d[e],s=i[o]&&a.directShare(i[o]),l=!!(s&&("eager"in s&&s.eager||"shareConfig"in s&&(null==(r=s.shareConfig)?void 0:r.eager)));(!s||"loaded-first"!==s.strategy&&!s.loaded&&(!n!=!l?n:u>i[o].from))&&(i[o]=t)},h=async e=>{let t,{module:o}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await o.getEntry()}catch(n){if(!(t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",remote:o.remoteInfo,origin:r})))return}finally{(null==t?void 0:t.init)&&!o.initing&&(o.remoteEntryExports=t,await o.init(void 0,void 0,s))}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&f(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===i)&&r.options.remotes.forEach(t=>{t.shareScope===e&&l.push(h(t.name))}),l}loadShareSync(e,t){let{host:r}=this,n=a.getTargetSharedOptions({pkgName:e,extraOptions:t,shareInfos:r.options.shared});try{(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:s}=a.getRegisteredShare(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(s){if("function"==typeof s.lib)return a.addUseIn(s,r.options.name),s.loaded||(s.loaded=!0,s.from===r.options.name&&(n.loaded=!0)),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:s}),s.lib;if("function"==typeof s.get){let t=s.get();if(!(t instanceof Promise))return a.addUseIn(s,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:s}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:s}),t}}if(n.lib)return n.loaded||(n.loaded=!0),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:n}),n.lib;if(n.get){let a=n.get();return a instanceof Promise&&o.error((null==t?void 0:t.from)==="build"?f.RUNTIME_005:f.RUNTIME_006,f.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,i.optionsToMFContext(r.options)),n.lib=a,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,selectedShared:n}),n.lib}o.error(f.RUNTIME_006,f.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e},void 0,i.optionsToMFContext(r.options))}catch(t){throw this.emitErrorLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:n,error:t}),t}}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:o}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:o.options,origin:o,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:o,lib:n,loading:a,loaded:i,get:s,treeShaking:l}=e,{version:c,scope:u="default",...d}=r,f=Array.isArray(u)?u:[u],h=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",i),t(r,"loading",a),t(r,"get",s)};f.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][c]||(this.shareScopeMap[e][t][c]={version:c,scope:[e],...d,lib:n});let r=this.shareScopeMap[e][t][c];h(r),o&&r.from!==o&&(r.from=o)})}_setGlobalShareScopeMap(e){let t=a.getGlobalShareScope(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new d.PluginSystem({beforeRegisterShare:new c.SyncWaterfallHook("beforeRegisterShare"),afterResolve:new u.AsyncWaterfallHook("afterResolve"),beforeLoadShare:new u.AsyncWaterfallHook("beforeLoadShare"),loadShare:new l.AsyncHook,afterLoadShare:new s.SyncHook("afterLoadShare"),errorLoadShare:new s.SyncHook("errorLoadShare"),resolveShare:new c.SyncWaterfallHook("resolveShare"),initContainerShareScopeMap:new c.SyncWaterfallHook("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}},94219(e,t,r){var o=r(36568).__exportAll({});Object.defineProperty(t,"type_exports",{enumerable:!0,get:function(){return o}})},53565(e,t){function r(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}t.optionsToMFContext=function(e){var t,o,n,a,i,s;let l={};for(let[t,r]of Object.entries(e.shared)){let e=r[0];e&&(l[t]={version:e.version,singleton:null==(n=e.shareConfig)?void 0:n.singleton,requiredVersion:(null==(a=e.shareConfig)?void 0:a.requiredVersion)!==!1&&(null==(i=e.shareConfig)?void 0:i.requiredVersion),eager:e.eager,strictVersion:null==(s=e.shareConfig)?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:(null==(t=e.remotes)?void 0:t.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:(null==(o=e.remotes)?void 0:o.map(r))??[],shared:l}}}},90537(e,t,r){r(89850),t.getBuilderId=function(){return"ScatterChart:0.11.0-beta.2"}},25344(e,t,r){let o=r(14007);t.AsyncHook=class extends o.SyncHook{emit(){let e;for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];let n=Array.from(this.listeners);if(n.length>0){let t=0,o=e=>!1!==e&&(t<n.length?Promise.resolve(n[t++].apply(null,r)).then(t=>void 0===t||1===r.length&&t===r[0]?o(e):o(t)):e);e=o()}return Promise.resolve(e)}}},11767(e,t,r){let o=r(85968),n=r(95018),a=r(14007),i=r(69757);t.AsyncWaterfallHook=class extends a.SyncHook{emit(e){n.isObject(e)||o.error(`The response data for the "${this.type}" hook must be an object.`);let t=Array.from(this.listeners);if(t.length>0){let r=0,n=t=>(o.warn(t),this.onerror(t),e),a=o=>{if(void 0!==o&&i.checkReturnData(e,o))e=o;else if(void 0!==o)return this.onerror(`A plugin returned an incorrect value for the "${this.type}" type.`),e;if(r<t.length)try{return Promise.resolve(t[r++](e)).then(a,n)}catch(e){return n(e)}return e};return Promise.resolve(a(e))}return Promise.resolve(e)}constructor(e){super(),this.onerror=o.error,this.type=e}}},7353(e,t,r){r(14007),r(25344),r(69757),r(11767),r(27185)},27185(e,t,r){let o=r(85968),n=r(95018);r(87728),t.PluginSystem=class{applyPlugin(e,t){o.assert(n.isPlainObject(e),"Plugin configuration is invalid.");let r=e.name;if(o.assert(r,"A name must be provided by the plugin."),!this.registerPlugins[r]){var a;this.registerPlugins[r]=e,null==(a=e.apply)||a.call(e,t),Object.keys(this.lifecycle).forEach(t=>{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){o.assert(e,"A name is required.");let t=this.registerPlugins[e];o.assert(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}},14007(e,t){t.SyncHook=class{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var o=arguments.length,n=Array(o),a=0;a<o;a++)n[a]=arguments[a];return t.remove(r),e.apply(null,n)})}emit(){let e;for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];return this.listeners.size>0&&this.listeners.forEach(t=>{let o=t(...r);void 0!==o&&(e=o)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}},69757(e,t,r){let o=r(85968),n=r(95018),a=r(14007);function i(e,t){if(!n.isObject(t))return!1;if(e!==t){for(let r in e)if(!(r in t))return!1}return!0}t.SyncWaterfallHook=class extends a.SyncHook{emit(e){for(let t of(n.isObject(e)||o.error(`The data for the "${this.type}" hook should be an object.`),this.listeners))try{let r=t(e);if(void 0===r)continue;if(i(e,r))e=r;else{this.onerror(`A plugin returned an unacceptable value for the "${this.type}" type.`);break}}catch(e){o.warn(e),this.onerror(e)}return e}constructor(e){super(),this.onerror=o.error,this.type=e}},t.checkReturnData=i},87728(e,t,r){r(85968),r(95018),r(90537),r(28395),r(8349),r(84616),r(53565),r(89850)},84616(e,t,r){let o=r(85968),n=r(74331),a=r(45818),i=r(89850),s=r(4071),l=".then(callbacks[0]).catch(callbacks[1])";async function c(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${l}`)([e,n]):import(t).then(e).catch(n)}catch(e){o.error(`Failed to load ESM entry from "${t}". ${e instanceof Error?e.message:String(e)}`)}})}async function u(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${l}`)([e,n])}catch(e){o.error(`Failed to load SystemJS entry from "${t}". ${e instanceof Error?e.message:String(e)}`)}})}function d(e,t,r){let{remoteEntryKey:a,entryExports:i}=n.getRemoteEntryExports(e,t);return i||o.error(s.RUNTIME_001,s.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:a}),i}async function f(e){let{name:t,globalName:r,entry:a,remoteInfo:l,loaderHook:c,getEntryUrl:u,resourceContext:f}=e,{entryExports:h}=n.getRemoteEntryExports(t,r);if(h)return h;let m=u?u(a):a;return(0,i.loadScript)(m,{attrs:{},createScriptHook:(e,t)=>{let r=c.lifecycle.createScript.emit({url:e,attrs:t,remoteInfo:l,resourceContext:f?{...f,url:e}:void 0});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>d(t,r,a),e=>{let r=e instanceof Error?e.message:String(e);o.error(s.RUNTIME_008,s.runtimeDescMap,{remoteName:t,resourceUrl:m},r)})}async function h(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:o,getEntryUrl:n,resourceContext:a}=e,{entry:i,entryGlobalName:s,name:l,type:d}=t;switch(d){case"esm":case"module":return c({entry:i,remoteEntryExports:r});case"system":return u({entry:i,remoteEntryExports:r});default:return f({entry:i,globalName:s,name:l,remoteInfo:t,loaderHook:o,getEntryUrl:n,resourceContext:a})}}async function m(e){let{remoteInfo:t,loaderHook:r,resourceContext:a}=e,{entry:s,entryGlobalName:l,name:c,type:u}=t,{entryExports:f}=n.getRemoteEntryExports(c,l);return f||(0,i.loadScriptNode)(s,{attrs:{name:c,globalName:l,type:u},loaderHook:{createScriptHook:function(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:o,remoteInfo:t,resourceContext:a?{...a,url:e}:void 0});if(n&&"url"in n)return n}}}).then(()=>d(c,l,s)).catch(e=>{o.error(`Failed to load Node.js entry for remote "${c}" from "${s}". ${e instanceof Error?e.message:String(e)}`)})}function p(e){let{entry:t,name:r}=e;return(0,i.composeKeyWithSeparator)(r,t)}async function g(e){let{origin:t,remoteEntryExports:r,remoteInfo:o,getEntryUrl:a,resourceContext:l,_inErrorHandling:c=!1}=e,u=p(o);if(r)return r;if(!n.globalLoading[u]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,d=t.loaderHook;n.globalLoading[u]=e.emit({origin:t,loaderHook:d,remoteInfo:o,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:i.isBrowserEnvValue)?h({remoteInfo:o,remoteEntryExports:r,loaderHook:d,getEntryUrl:a,resourceContext:l}):m({remoteInfo:o,loaderHook:d,resourceContext:l}))).then(async e=>(await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:o,remoteEntryExports:e}),e)).catch(async e=>{let a=p(o),i=e instanceof Error&&e.message.includes("ScriptExecutionError");if(e instanceof Error&&e.message.includes(s.RUNTIME_008)&&!i&&!c){let e=e=>g({...e,_inErrorHandling:!0}),i=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:o,remoteEntryExports:r,globalLoading:n.globalLoading,uniqueKey:a});if(i)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:o,remoteEntryExports:i,recovered:!0}),i}throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:o,error:e}),e})}return n.globalLoading[u]}function y(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||a.DEFAULT_REMOTE_TYPE,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||a.DEFAULT_SCOPE}}t.getRemoteEntry=g,t.getRemoteEntryUniqueKey=p,t.getRemoteInfo=y},85968(e,t,r){let o=r(89850),n=r(89095),a="[ Federation Runtime ]",i=(0,o.createLogger)(a);function s(e,t,r,o,i){if(void 0!==t)return(0,n.logAndReport)(e,t,r??{},e=>{throw Error(`${a}: ${e}`)},o,i);let s=e;if(s instanceof Error)throw s.message.startsWith(a)||(s.message=`${a}: ${s.message}`),s;throw Error(`${a}: ${s}`)}function l(e){e instanceof Error&&(e.message.startsWith(a)||(e.message=`${a}: ${e.message}`)),i.warn(e)}t.assert=function(e,t,r,o,n){e||(void 0!==r?s(t,r,o,void 0,n):s(t))},t.error=s,t.logger=i,t.warn=l},28395(e,t){function r(e,t){for(let r of e){let e=t.startsWith(r.name),o=t.replace(r.name,"");if(e){if(o.startsWith("/"))return{pkgNameOrAlias:r.name,expose:o=`.${o}`,remote:r};else if(""===o)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let n=r.alias&&t.startsWith(r.alias),a=r.alias&&t.replace(r.alias,"");if(r.alias&&n){if(a&&a.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:a=`.${a}`,remote:r};else if(""===a)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function o(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}t.composeRemoteRequestId=function(e,t){return t&&"."!==t?`${e}/${t.replace(/^\.\//,"")}`:e},t.matchRemote=o,t.matchRemoteWithNameAndExpose=r},8349(e,t,r){let o=r(74331);t.registerPlugins=function(e,t){let r=o.getGlobalHostPlugins(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}},3371(e,t,r){let o=r(85968),n=r(28395),a=r(84616),i=r(89850);function s(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,...e}}function l(e,t){return t.map(t=>{let r=n.matchRemote(e,t.nameOrAlias);return o.assert(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&(0,i.safeToString)({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:s(t)}})}function c(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function u(e){return e instanceof Error&&(e.message.includes("timed out")||e.name.includes("Timeout"))}function d(e,t,r,o){return{url:t,status:r,resourceType:e.resourceType,initiator:e.initiator,id:e.id,error:o}}async function f(e,t,r,o){let n=e.moduleCache.get(r.name),i=r.entry;if(null==n?void 0:n.remoteEntryExports)return d(o,i,"cached");try{if(!await a.getRemoteEntry({origin:e,remoteInfo:r,remoteEntryExports:null==n?void 0:n.remoteEntryExports,resourceContext:{...o,url:i}}))throw Error(`Failed to load remoteEntry "${i}".`);return d(o,i,"success")}catch(e){return d(o,i,u(e)?"timeout":"error",e)}}function h(e){let{host:t,remoteInfo:r,url:o,attrs:n,context:a,needDeleteLink:s}=e;return new Promise(e=>{let{link:l,needAttach:c}=(0,i.createLink)({url:o,cb:()=>{e(d(a,o,c?"success":"cached"))},onErrorCallback:t=>{e(d(a,o,u(t)?"timeout":"error",t))},attrs:n,createLinkHook:(e,o)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:o,remoteInfo:r,resourceContext:{...a,url:e}});return n instanceof HTMLLinkElement,n},needDeleteLink:s});c&&document.head.appendChild(l)})}function m(e){let{host:t,remoteInfo:r,url:o,attrs:n,context:a}=e;return new Promise(e=>{let{script:s,needAttach:l}=(0,i.createScript)({url:o,cb:()=>{e(d(a,o,l?"success":"cached"))},onErrorCallback:t=>{e(d(a,o,u(t)?"timeout":"error",t))},attrs:n,createScriptHook:(e,o)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:o,remoteInfo:r,resourceContext:{...a,url:e}});return n instanceof HTMLScriptElement,n},needDeleteScript:!0});l&&document.head.appendChild(s)})}function p(e,t){return{...e,resourceType:t}}function g(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{initiator:"preloadRemote",id:e.name},{cssAssets:a,jsAssetsWithoutEntry:i,entryAssets:s}=r,l=[];if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:o}=r;l.push(f(t,e,o,p(n,"remoteEntry")))}),o){let r={rel:"preload",as:"style"};a.forEach(o=>{l.push(h({host:t,remoteInfo:e,url:o,attrs:r,context:p(n,"css")}))})}else{let r={rel:"stylesheet",type:"text/css"};a.forEach(o=>{l.push(h({host:t,remoteInfo:e,url:o,attrs:r,needDeleteLink:!1,context:p(n,"css")}))})}if(o){let r={rel:"preload",as:"script"};i.forEach(o=>{l.push(h({host:t,remoteInfo:e,url:o,attrs:r,context:p(n,"js")}))})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};i.forEach(o=>{l.push(m({host:t,remoteInfo:e,url:o,attrs:r,context:p(n,"js")}))})}}return Promise.all(l)}t.defaultPreloadArgs=s,t.formatPreloadArgs=l,t.normalizePreloadExposes=c,t.preloadAssets=g},17564(e,t){function r(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function o(e,t){let{preRelease:o}=e,{preRelease:n}=t;if(void 0===o&&n)return 1;if(o&&void 0===n)return -1;if(void 0===o&&void 0===n)return 0;for(let e=0,t=o.length;e<=t;e++){let t=o[e],a=n[e];if(t!==a){if(void 0===t&&void 0===a)return 0;if(!t)return 1;if(!a)return -1;return r(t,a)}}return 0}function n(e,t){return r(e.major,t.major)||r(e.minor,t.minor)||r(e.patch,t.patch)||o(e,t)}function a(e,t){return e.version===t.version}t.compare=function(e,t){switch(e.operator){case"":case"=":return a(e,t);case">":return 0>n(e,t);case">=":return a(e,t)||0>n(e,t);case"<":return n(e,t)>0;case"<=":return a(e,t)||n(e,t)>0;case void 0:return!0;default:return!1}}},8950(e,t){let r="[0-9A-Za-z-]+",o=`(?:\\+(${r}(?:\\.${r})*))`,n="0|[1-9]\\d*",a="[0-9]+",i="\\d*[a-zA-Z-][a-zA-Z0-9-]*",s=`(?:${a}|${i})`,l=`(?:-?(${s}(?:\\.${s})*))`,c=`(?:${n}|${i})`,u=`(?:-(${c}(?:\\.${c})*))`,d=`${n}|x|X|\\*`,f=`[v=\\s]*(${d})(?:\\.(${d})(?:\\.(${d})(?:${u})?${o}?)?)?`,h=`^\\s*(${f})\\s+-\\s+(${f})\\s*$`,m=`[v=\\s]*${`(${a})\\.(${a})\\.(${a})`}${l}?${o}?`,p="((?:<|>)?=?)",g=`(\\s*)${p}\\s*(${m}|${f})`,y="(?:~>?)",E=`(\\s*)${y}\\s+`,S="(?:\\^)",b=`(\\s*)${S}\\s+`,_="(<|>)?=?\\s*\\*",v=`^${S}${f}$`,I=`v?${`(${n})\\.(${n})\\.(${n})`}${u}?${o}?`,R=`^${y}${f}$`,N=`^${p}\\s*${f}$`,T=`^${p}\\s*(${I})$|^$`,M="^\\s*>=\\s*0.0.0\\s*$";t.caret=v,t.caretTrim=b,t.comparator=T,t.comparatorTrim=g,t.gte0=M,t.hyphenRange=h,t.star=_,t.tilde=R,t.tildeTrim=E,t.xRange=N},51209(e,t,r){let o=r(13842),n=r(92190),a=r(17564);function i(e){return o.pipe(n.parseCarets,n.parseTildes,n.parseXRanges,n.parseStar)(e)}function s(e){return o.pipe(n.parseHyphen,n.parseComparatorTrim,n.parseTildeTrim,n.parseCaretTrim)(e.trim()).split(/\s+/).join(" ")}t.satisfy=function(e,t){if(!e)return!1;let r=o.extractComparator(e);if(!r)return!1;let[,l,,c,u,d,f]=r,h={operator:l,version:o.combineVersion(c,u,d,f),major:c,minor:u,patch:d,preRelease:null==f?void 0:f.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=s(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>i(e)).join(" ");if(!r.trim())return!0;let l=r.split(/\s+/).map(e=>n.parseGTE0(e)).filter(Boolean);if(0===l.length)continue;let c=!0;for(let e of l){let t=o.extractComparator(e);if(!t){c=!1;break}let[,r,,n,i,s,l]=t;if(!a.compare({operator:r,version:o.combineVersion(n,i,s,l),major:n,minor:i,patch:s,preRelease:null==l?void 0:l.split(".")},h)){c=!1;break}}if(c)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}},92190(e,t,r){let o=r(8950),n=r(13842);function a(e){return e.replace(n.parseRegex(o.hyphenRange),(e,t,r,o,a,i,s,l,c,u,d,f)=>(t=n.isXVersion(r)?"":n.isXVersion(o)?`>=${r}.0.0`:n.isXVersion(a)?`>=${r}.${o}.0`:`>=${t}`,l=n.isXVersion(c)?"":n.isXVersion(u)?`<${Number(c)+1}.0.0-0`:n.isXVersion(d)?`<${c}.${Number(u)+1}.0-0`:f?`<=${c}.${u}.${d}-${f}`:`<=${l}`,`${t} ${l}`.trim()))}function i(e){return e.replace(n.parseRegex(o.comparatorTrim),"$1$2$3")}function s(e){return e.replace(n.parseRegex(o.tildeTrim),"$1~")}function l(e){return e.trim().split(/\s+/).map(e=>e.replace(n.parseRegex(o.caret),(e,t,r,o,a)=>{if(n.isXVersion(t))return"";if(n.isXVersion(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(n.isXVersion(o))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(a)if("0"!==t)return`>=${t}.${r}.${o}-${a} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${o}-${a} <${t}.${r}.${Number(o)+1}-0`;else return`>=${t}.${r}.${o}-${a} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${o} <${t}.${r}.${Number(o)+1}-0`;else return`>=${t}.${r}.${o} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${o} <${Number(t)+1}.0.0-0`})).join(" ")}function c(e){return e.trim().split(/\s+/).map(e=>e.replace(n.parseRegex(o.tilde),(e,t,r,o,a)=>n.isXVersion(t)?"":n.isXVersion(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:n.isXVersion(o)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:a?`>=${t}.${r}.${o}-${a} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${o} <${t}.${Number(r)+1}.0-0`)).join(" ")}function u(e){return e.split(/\s+/).map(e=>e.trim().replace(n.parseRegex(o.xRange),(e,t,r,o,a,i)=>{let s=n.isXVersion(r),l=s||n.isXVersion(o),c=l||n.isXVersion(a);if("="===t&&c&&(t=""),i="",s)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&c?(l&&(o=0),a=0,">"===t?(t=">=",l?(r=Number(r)+1,o=0):o=Number(o)+1,a=0):"<="===t&&(t="<",l?r=Number(r)+1:o=Number(o)+1),"<"===t&&(i="-0"),`${t+r}.${o}.${a}${i}`):l?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:c?`>=${r}.${o}.0${i} <${r}.${Number(o)+1}.0-0`:e})).join(" ")}function d(e){return e.trim().replace(n.parseRegex(o.star),"")}function f(e){return e.trim().replace(n.parseRegex(o.gte0),"")}t.parseCaretTrim=function(e){return e.replace(n.parseRegex(o.caretTrim),"$1^")},t.parseCarets=l,t.parseComparatorTrim=i,t.parseGTE0=f,t.parseHyphen=a,t.parseStar=d,t.parseTildeTrim=s,t.parseTildes=c,t.parseXRanges=u},13842(e,t,r){let o=r(8950);function n(e){return new RegExp(e)}function a(e){return!e||"x"===e.toLowerCase()||"*"===e}function i(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return e=>t.reduce((e,t)=>t(e),e)}function s(e){return e.match(n(o.comparator))}t.combineVersion=function(e,t,r,o){let n=`${e}.${t}.${r}`;return o?`${n}-${o}`:n},t.extractComparator=s,t.isXVersion=a,t.parseRegex=n,t.pipe=i},7269(e,t,r){let o=r(85968),n=r(95018),a=r(74331),i=r(45818),s=r(51209),l=r(89850);function c(e,t,r,n){var a,i;let s;return s="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{o.error(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(null==(a=e.shareConfig)?void 0:a.eager)&&(null==(i=e.treeShaking)?void 0:i.mode)&&o.error(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:s,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??l.TreeShakingStatus.UNKNOWN,useIn:[]}:void 0}}function u(e,t){let r=t.shared||{},o=t.name,a=Object.keys(r).reduce((e,a)=>{let i=n.arrayOptions(r[a]);return e[a]=e[a]||[],i.forEach(r=>{e[a].push(c(r,o,a,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(a).forEach(e=>{i[e]?a[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=a[e]}),{allShareInfos:i,newShareInfos:a}}function d(e,t){if(!e)return!1;let{status:r,mode:o}=e;return r!==l.TreeShakingStatus.NO_USE&&(r===l.TreeShakingStatus.CALCULATED||"runtime-infer"===o&&(!t||g(e,t)))}function f(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!s.satisfy(r(e),`<=${r(t)}`)}let h=(e,t)=>{let r=t||function(e,t){return f(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},m=e=>!!e.loaded||"function"==typeof e.lib,p=e=>!!e.loading,g=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function y(e,t,r,o){let n=e[t][r],a="",i=d(o),s=function(e,t){return i?!n[e].treeShaking||!!n[t].treeShaking&&!m(n[e].treeShaking)&&f(e,t):!m(n[e])&&f(e,t)};if(i){if(a=h(e[t][r],s))return{version:a,useTreesShaking:i};i=!1}return{version:h(e[t][r],s),useTreesShaking:i}}let E=e=>m(e)||p(e);function S(e,t,r,o){let n=e[t][r],a="",i=d(o),s=function(e,t){if(i){if(!n[e].treeShaking)return!0;if(!n[t].treeShaking)return!1;if(E(n[t].treeShaking))if(E(n[e].treeShaking))return!!f(e,t);else return!0;if(E(n[e].treeShaking))return!1}if(E(n[t]))if(E(n[e]))return!!f(e,t);else return!0;return!E(n[e])&&f(e,t)};if(i){if(a=h(e[t][r],s))return{version:a,useTreesShaking:i};i=!1}return{version:h(e[t][r],s),useTreesShaking:i}}function b(e){return"loaded-first"===e?S:y}function _(e,t,r,n){if(!e)return;let{shareConfig:l,scope:c=i.DEFAULT_SCOPE,strategy:u,treeShaking:f}=r;for(let i of Array.isArray(c)?c:[c])if(l&&e[i]&&e[i][t]){let{requiredVersion:c}=l,{version:h,useTreesShaking:m}=b(u)(e,i,t,f),p=()=>{let n=e[i][t][h];if(l.singleton){if("string"==typeof c&&!s.satisfy(h,c)){let e=`Version ${h} from ${h&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${c})`;l.strictVersion?o.error(e):o.warn(e)}return{shared:n,useTreesShaking:m}}{if(!1===c||"*"===c||s.satisfy(h,c))return{shared:n,useTreesShaking:m};let r=d(f);if(r){for(let[o,n]of Object.entries(e[i][t]))if(d(n.treeShaking,null==f?void 0:f.usedExports)&&s.satisfy(o,c))return{shared:n,useTreesShaking:r}}for(let[r,o]of Object.entries(e[i][t]))if(s.satisfy(r,c))return{shared:o,useTreesShaking:!1}}},g={shareScopeMap:e,scope:i,pkgName:t,version:h,GlobalFederation:a.Global.__FEDERATION__,shareInfo:r,resolver:p};return(n.emit(g)||g).resolver()}}function v(){return a.Global.__FEDERATION__.__SHARE__}function I(e){let{pkgName:t,extraOptions:r,shareInfos:o}=e,n=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!m(t[e])&&f(e,r)};return t[h(t,r)]},a=(null==r?void 0:r.resolver)??n,i=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];let o={};for(let e of t)if(e)for(let[t,r]of Object.entries(e)){let e=o[t];i(e)&&i(r)?o[t]=s(e,r):void 0!==r&&(o[t]=r)}return o};return s(a(o[t]),null==r?void 0:r.customShareInfo)}function R(e,t){return t&&e.treeShaking?e.treeShaking:e}t.addUseIn=(e,t)=>{e.useIn||(e.useIn=[]),n.addUniqueItem(e.useIn,t)},t.directShare=R,t.formatShareConfigs=u,t.getGlobalShareScope=v,t.getRegisteredShare=_,t.getTargetSharedOptions=I,t.shouldUseTreeShaking=d},95018(e,t,r){let o=r(85968),n=r(89850);function a(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function i(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function s(e){return void 0!==e.entry}function l(e){return!e.entry.includes(".json")}async function c(e,t){try{return await e()}catch(e){t||o.warn(e);return}}function u(e){return e&&"object"==typeof e}let d=Object.prototype.toString;function f(e){return"[object Object]"===d.call(e)}function h(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function m(e){return Array.isArray(e)?e:[e]}function p(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnvValue||(0,n.isReactNativeEnv)()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let g=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t};t.addUniqueItem=a,t.arrayOptions=m,t.getFMId=i,t.getRemoteEntryInfoFromSnapshot=p,t.isObject=u,t.isPlainObject=f,t.isPureRemoteEntry=l,t.isRemoteInfoWithEntry=s,t.isStaticResourcesEqual=h,t.objectToString=d,t.processModuleAlias=g,t.safeWrapper=c},66396(e,t){var r=Object.create,o=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,l=(e,t,r,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var l,c=a(t),u=0,d=c.length;u<d;u++)l=c[u],s.call(e,l)||l===r||o(e,l,{get:(e=>t[e]).bind(null,l),enumerable:!(i=n(t,l))||i.enumerable});return e};t.__toESM=(e,t,n)=>(n=null!=e?r(i(e)):{},l(!t&&e&&e.__esModule?n:o(n,"default",{value:e,enumerable:!0}),e))},86173(e,t,r){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),r(66396);let o=r(45229),n=r(6614),a={...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance},i=n.helpers.share,s=n.helpers.utils;t.default={global:a,share:i,utils:s},t.global=a,t.share=i,t.utils=s},79706(e,t,r){Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),r(66396);let o=r(45229),n=r(6614),a=r(4071);function i(e){let t=new((0,n.getGlobalFederationConstructor)()||n.ModuleFederation)({id:`${e.name}@${e.version||Date.now()}`,...e});return(0,n.setGlobalFederationInstance)(t),t}let s=null;function l(e){let t=o.getGlobalFederationInstance(e.name,e.version),r={...e,id:e.id||""};return t?(t.initOptions(r),s||(s=t),t):s=i(r)}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.loadRemote.apply(s,t)}function u(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.loadShare.apply(s,t)}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.loadShareSync.apply(s,t)}function f(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.preloadRemote.apply(s,t)}function h(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.registerRemotes.apply(s,t)}function m(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.registerPlugins.apply(s,t)}function p(e){return e?n.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(e)||null:s}function g(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.assert)(s,a.RUNTIME_009,a.runtimeDescMap),s.registerShared.apply(s,t)}(0,n.setGlobalFederationConstructor)(n.ModuleFederation),Object.defineProperty(t,"Module",{enumerable:!0,get:function(){return n.Module}}),t.ModuleFederation=n.ModuleFederation,t.createInstance=i,t.getInstance=p,Object.defineProperty(t,"getRemoteEntry",{enumerable:!0,get:function(){return n.getRemoteEntry}}),Object.defineProperty(t,"getRemoteInfo",{enumerable:!0,get:function(){return n.getRemoteInfo}}),t.init=l,t.loadRemote=c,Object.defineProperty(t,"loadScript",{enumerable:!0,get:function(){return n.loadScript}}),Object.defineProperty(t,"loadScriptNode",{enumerable:!0,get:function(){return n.loadScriptNode}}),t.loadShare=u,t.loadShareSync=d,t.preloadRemote=f,Object.defineProperty(t,"registerGlobalPlugins",{enumerable:!0,get:function(){return n.registerGlobalPlugins}}),t.registerPlugins=m,t.registerRemotes=h,t.registerShared=g},45229(e,t,r){r(66396);let o=r(6614);function n(){return"ScatterChart:0.11.0-beta.2"}t.getGlobalFederationInstance=function(e,t){let r=n();return o.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(o=>!!r&&o.options.id===r||o.options.name===e&&!o.options.version&&!t||o.options.name===e&&!!t&&o.options.version===t)}},21820(e,t){var r=Object.defineProperty;t.__exportAll=(e,t)=>{let o={};for(var n in e)r(o,n,{get:e[n],enumerable:!0});return t||r(o,Symbol.toStringTag,{value:"Module"}),o}},38342(e,t){let r="federation-manifest.json",o=".json",n="FEDERATION_DEBUG",a={AT:"@",HYPHEN:"-",SLASH:"/"},i={[a.AT]:"scope_",[a.HYPHEN]:"_",[a.SLASH]:"__"},s={[i[a.AT]]:a.AT,[i[a.HYPHEN]]:a.HYPHEN,[i[a.SLASH]]:a.SLASH},l=":",c="mf-manifest.json",u="mf-stats.json",d={NPM:"npm",APP:"app"},f="__MF_DEVTOOLS_MODULE_INFO__",h="ENCODE_NAME_PREFIX",m=".federation",p=function(e){return e[e.UNKNOWN=1]="UNKNOWN",e[e.CALCULATED=2]="CALCULATED",e[e.NO_USE=0]="NO_USE",e}({});t.BROWSER_LOG_KEY=n,t.ENCODE_NAME_PREFIX=h,t.EncodedNameTransformMap=s,t.FederationModuleManifest=r,t.MANIFEST_EXT=o,t.MFModuleType=d,t.MODULE_DEVTOOL_IDENTIFIER=f,t.ManifestFileName=c,t.NameTransformMap=i,t.NameTransformSymbol=a,t.SEPARATOR=l,t.StatsFileName=u,t.TEMP_DIR=m,t.TreeShakingStatus=p},94975(e,t){t.createModuleFederationConfig=e=>e},72802(e,t,r){let o=r(33901);async function n(e,t){try{return await e()}catch(e){t||o.warn(e);return}}function a(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function i(e){let t,r=null,o=!0,i=2e4,s=document.getElementsByTagName("script");for(let t=0;t<s.length;t++){let n=s[t],i=n.getAttribute("src");if(i&&a(i,e.url)){r=n,o=!1;break}}if(!r){let t,o=e.attrs;(r=document.createElement("script")).type=(null==o?void 0:o.type)==="module"?"module":"text/javascript",e.createScriptHook&&((t=e.createScriptHook(e.url,e.attrs))instanceof HTMLScriptElement?r=t:"object"==typeof t&&("script"in t&&t.script&&(r=t.script),"timeout"in t&&t.timeout&&(i=t.timeout))),r.src||(r.src=e.url),o&&!t&&Object.keys(o).forEach(e=>{r&&("async"===e||"defer"===e?r[e]=o[e]:r.getAttribute(e)||r.setAttribute(e,o[e]))})}let l=null,c="u">typeof window?t=>{if(t.filename&&a(t.filename,e.url)){let r=Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${t.message} (${t.filename}:${t.lineno}:${t.colno})`);r.name="ScriptExecutionError",l=r}}:null;c&&window.addEventListener("error",c);let u=async(o,a)=>{clearTimeout(t),c&&window.removeEventListener("error",c);let i=()=>{if((null==a?void 0:a.type)==="error"){let t=Error((null==a?void 0:a.isTimeout)?`ScriptNetworkError: Script "${e.url}" timed out.`:`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);t.name="ScriptNetworkError",(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(t))}else l?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(l)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,n(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),o&&"function"==typeof o)){let e=o(a);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=u.bind(null,r.onerror),r.onload=u.bind(null,r.onload),t=setTimeout(()=>{u(null,{type:"error",isTimeout:!0})},i),{script:r,needAttach:o}}function s(e,t){let{attrs:r={},createScriptHook:o}=t;return new Promise((t,n)=>{let{script:a,needAttach:s}=i({url:e,cb:t,onErrorCallback:n,attrs:{fetchpriority:"high",...r},createScriptHook:o,needDeleteScript:!0});s&&document.head.appendChild(a)})}t.createLink=function(e){let t,r=null,o=!0,i=2e4,s=document.getElementsByTagName("link");for(let t=0;t<s.length;t++){let n=s[t],i=n.getAttribute("href"),l=n.getAttribute("rel");if(i&&a(i,e.url)&&l===e.attrs.rel){r=n,o=!1;break}}if(!r){let t;(r=document.createElement("link")).setAttribute("href",e.url);let o=!0,n=e.attrs;e.createLinkHook&&((t=e.createLinkHook(e.url,n))instanceof HTMLLinkElement?(r=t,o=!1):"object"==typeof t&&("link"in t&&t.link&&(r=t.link,o=!1),"timeout"in t&&t.timeout&&(i=t.timeout))),n&&o&&Object.keys(n).forEach(e=>{r&&!r.getAttribute(e)&&r.setAttribute(e,n[e])})}if(!o)return Promise.resolve().then(()=>{(null==e?void 0:e.cb)&&(null==e||e.cb())}),{link:r,needAttach:o};let l=(o,a)=>{t&&clearTimeout(t);let i=()=>{if((null==a?void 0:a.type)==="error"){let t=Error((null==a?void 0:a.isTimeout)?`LinkNetworkError: Link "${e.url}" timed out.`:`LinkNetworkError: Failed to load link "${e.url}" - the URL is unreachable or the server returned an error.`);t.name="LinkNetworkError",(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(t))}else(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,n(()=>{let{needDeleteLink:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),o)){let e=o(a);return i(),e}i()};return r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),t=setTimeout(()=>{l(null,{type:"error",isTimeout:!0})},i),{link:r,needAttach:o}},t.createScript=i,t.isStaticResourcesEqual=a,t.loadScript=s,t.safeWrapper=n},47799(e,t,r){let o=r(38342),n="u">typeof ENV_TARGET?"web"===ENV_TARGET:"u">typeof window&&void 0!==window.document;function a(){return n}function i(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function s(){try{if(a()&&window.localStorage)return!!localStorage.getItem(o.BROWSER_LOG_KEY)}catch(e){}return!1}function l(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||s()}t.getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},t.isBrowserEnv=a,t.isBrowserEnvValue=n,t.isDebugMode=l,t.isReactNativeEnv=i},66244(e,t,r){let o=r(38342),n=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function a(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function i(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(o.MANIFEST_EXT))}function s(e){if(!e)return{statsFileName:o.StatsFileName,manifestFileName:o.ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",a=".json",i=e=>e.endsWith(a)?e:`${e}${a}`,s=(e,t)=>e.replace(a,`${t}${a}`),l=r?i(r):o.ManifestFileName;return{statsFileName:n(t,r?s(l,"-stats"):o.StatsFileName),manifestFileName:n(t,l)}}t.generateSnapshotFromManifest=function(e){var t;let r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:i={},overrides:s={},version:l}=o,c=()=>"publicPath"in e.metaData?("auto"===e.metaData.publicPath||""===e.metaData.publicPath)&&l?a(l):e.metaData.publicPath:e.metaData.getPublicPath,u=Object.keys(s),d={};Object.keys(i).length||(d=(null==(t=e.remotes)?void 0:t.reduce((e,t)=>{let r,o=t.federationContainerName;return r=u.includes(o)?s[o]:"version"in t?t.version:t.entry,e[o]={matchedVersion:r},e},{}))||{}),Object.keys(i).forEach(e=>d[e]={matchedVersion:u.includes(e)?s[e]:i[e]});let{remoteEntry:{path:f,name:h,type:m},types:p={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:E}=e.metaData,{exposes:S}=e,b={version:l||"",buildVersion:g,globalName:y,remoteEntry:n(f,h),remoteEntryType:m,remoteTypes:n(p.path,p.name),remoteTypesZip:p.zip||"",remoteTypesAPI:p.api||"",remotesInfo:d,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==S?void 0:S.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if("publicPath"in e.metaData?(r={...b,publicPath:c()},"string"==typeof e.metaData.ssrPublicPath&&(r.ssrPublicPath=e.metaData.ssrPublicPath)):r={...b,getPublicPath:c()},E){let e=n(E.path,E.name);r.ssrRemoteEntry=e,r.ssrRemoteEntryType=E.type||"commonjs-module"}return r},t.getManifestFileName=s,t.inferAutoPublicPath=a,t.isManifestProvider=i,t.simpleJoinRemoteEntry=n},89850(e,t,r){Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});let o=r(38342),n=r(2413),a=r(70858),i=r(74945),s=r(38861),l=r(84101),c=r(2820),u=r(47799),d=r(33901),f=r(66244),h=r(72290),m=r(72802),p=r(60914),g=r(63651),y=r(94975);t.BROWSER_LOG_KEY=o.BROWSER_LOG_KEY,t.ENCODE_NAME_PREFIX=o.ENCODE_NAME_PREFIX,t.EncodedNameTransformMap=o.EncodedNameTransformMap,t.FederationModuleManifest=o.FederationModuleManifest,t.MANIFEST_EXT=o.MANIFEST_EXT,t.MFModuleType=o.MFModuleType,t.MODULE_DEVTOOL_IDENTIFIER=o.MODULE_DEVTOOL_IDENTIFIER,t.ManifestFileName=o.ManifestFileName,t.NameTransformMap=o.NameTransformMap,t.NameTransformSymbol=o.NameTransformSymbol,t.SEPARATOR=o.SEPARATOR,t.StatsFileName=o.StatsFileName,t.TEMP_DIR=o.TEMP_DIR,t.TreeShakingStatus=o.TreeShakingStatus,t.assert=d.assert,t.bindLoggerToCompiler=h.bindLoggerToCompiler,t.composeKeyWithSeparator=d.composeKeyWithSeparator,Object.defineProperty(t,"consumeSharedPlugin",{enumerable:!0,get:function(){return l.ConsumeSharedPlugin_exports}}),Object.defineProperty(t,"containerPlugin",{enumerable:!0,get:function(){return n.ContainerPlugin_exports}}),Object.defineProperty(t,"containerReferencePlugin",{enumerable:!0,get:function(){return a.ContainerReferencePlugin_exports}}),t.createInfrastructureLogger=h.createInfrastructureLogger,t.createLink=m.createLink,t.createLogger=h.createLogger,t.createModuleFederationConfig=y.createModuleFederationConfig,t.createScript=m.createScript,t.createScriptNode=p.createScriptNode,t.decodeName=d.decodeName,t.encodeName=d.encodeName,t.error=d.error,t.generateExposeFilename=d.generateExposeFilename,t.generateShareFilename=d.generateShareFilename,t.generateSnapshotFromManifest=f.generateSnapshotFromManifest,t.getManifestFileName=f.getManifestFileName,t.getProcessEnv=u.getProcessEnv,t.getResourceUrl=d.getResourceUrl,t.inferAutoPublicPath=f.inferAutoPublicPath,t.infrastructureLogger=h.infrastructureLogger,t.isBrowserEnv=u.isBrowserEnv,t.isBrowserEnvValue=u.isBrowserEnvValue,t.isDebugMode=u.isDebugMode,t.isManifestProvider=f.isManifestProvider,t.isReactNativeEnv=u.isReactNativeEnv,t.isRequiredVersion=d.isRequiredVersion,t.isStaticResourcesEqual=m.isStaticResourcesEqual,t.loadScript=m.loadScript,t.loadScriptNode=p.loadScriptNode,t.logger=h.logger,Object.defineProperty(t,"moduleFederationPlugin",{enumerable:!0,get:function(){return i.ModuleFederationPlugin_exports}}),t.normalizeOptions=g.normalizeOptions,t.parseEntry=d.parseEntry,Object.defineProperty(t,"provideSharedPlugin",{enumerable:!0,get:function(){return c.ProvideSharedPlugin_exports}}),t.safeToString=d.safeToString,t.safeWrapper=m.safeWrapper,Object.defineProperty(t,"sharePlugin",{enumerable:!0,get:function(){return s.SharePlugin_exports}}),t.simpleJoinRemoteEntry=f.simpleJoinRemoteEntry,t.warn=d.warn},72290(e,t,r){let o=r(47799),n="[ Module Federation ]",a=console,i=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function s(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!i.some(t=>e.includes(t)));if(!r.length)return;return`Stack trace:
4
+ ${r.slice(0,5).join("\n")}`}catch{return}}var l=class{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??a}emit(e,t){let r=this.delegate,n=o.isDebugMode()?s():void 0,i=n?[...t,n]:t,l=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of l){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...i)}for(let e of l){let t=a[e];if("function"==typeof t)return void t.call(a,this.prefix,...i)}}log(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.emit("log",t)}warn(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.emit("warn",t)}error(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.emit("error",t)}success(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.emit("info",t)}info(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.emit("info",t)}ready(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.emit("info",t)}debug(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];o.isDebugMode()&&this.emit("debug",t)}constructor(e,t=a){this.prefix=e,this.delegate=t??a}};function c(e){return new l(e)}function u(e){let t=new l(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}function d(e,t,r){if(e.__mf_infrastructure_logger__&&(null==t?void 0:t.getInfrastructureLogger))try{let o=t.getInfrastructureLogger(r);o&&"object"==typeof o&&("function"==typeof o.log||"function"==typeof o.info||"function"==typeof o.warn||"function"==typeof o.error)&&e.setDelegate(o)}catch{e.setDelegate(void 0)}}let f=c(n),h=u(n);t.bindLoggerToCompiler=d,t.createInfrastructureLogger=u,t.createLogger=c,t.infrastructureLogger=h,t.logger=f},60914(__unused_rspack_module,exports){let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let o=(e,t)=>r.lifecycle.fetch.emit(e,t),n=await o(e,t||{});return n&&n instanceof Response?n:("u"<typeof fetch?await loadNodeFetch():fetch)(e,t||{})},createScriptNode="u"<typeof ENV_TARGET||"web"!==ENV_TARGET?(url,cb,attrs,loaderHook)=>{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"<typeof fetch?loadNodeFetch():fetch,handleScriptFetch=async(f,urlObj)=>{try{var _vm_constants;let requireFn,res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data}
5
+ })`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});requireFn=eval("require"),script.runInThisContext()(scriptContext.exports,scriptContext.module,requireFn,urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName)return void cb(void 0,exportedInterface[attrs.globalName]||exportedInterface);cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,o)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"<typeof ENV_TARGET||"web"!==ENV_TARGET?(e,t)=>new Promise((r,o)=>{createScriptNode(e,(e,n)=>{if(e)o(e);else{var a,i;let e=(null==t||null==(a=t.attrs)?void 0:a.globalName)||`__FEDERATION_${null==t||null==(i=t.attrs)?void 0:i.name}:custom__`;r(globalThis[e]=n)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:o}=t,n=await (await r(e)).text(),a=new o.SourceTextModule(n,{importModuleDynamically:async(r,o)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let o=new URL(r,e).href;return await loadModule(o,t)}),a}exports.createScriptNode=createScriptNode,exports.loadScriptNode=loadScriptNode},63651(e,t){t.normalizeOptions=function(e,t,r){return function(o){if(!1===o)return!1;if(void 0===o)if(e)return t;else return!1;if(!0===o)return t;if(o&&"object"==typeof o)return{...t,...o};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof o}`)}}},84101(e,t,r){var o=r(21820).__exportAll({});Object.defineProperty(t,"ConsumeSharedPlugin_exports",{enumerable:!0,get:function(){return o}})},2413(e,t,r){var o=r(21820).__exportAll({});Object.defineProperty(t,"ContainerPlugin_exports",{enumerable:!0,get:function(){return o}})},70858(e,t,r){var o=r(21820).__exportAll({});Object.defineProperty(t,"ContainerReferencePlugin_exports",{enumerable:!0,get:function(){return o}})},74945(e,t,r){var o=r(21820).__exportAll({});Object.defineProperty(t,"ModuleFederationPlugin_exports",{enumerable:!0,get:function(){return o}})},2820(e,t,r){var o=r(21820).__exportAll({});Object.defineProperty(t,"ProvideSharedPlugin_exports",{enumerable:!0,get:function(){return o}})},38861(e,t,r){var o=r(21820).__exportAll({});Object.defineProperty(t,"SharePlugin_exports",{enumerable:!0,get:function(){return o}})},33901(e,t,r){let o=r(38342),n=r(47799),a="[ Federation Runtime ]",i=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.SEPARATOR,a=e.split(r),i="development"===n.getProcessEnv().NODE_ENV&&t,s="*",l=e=>e.startsWith("http")||e.includes(o.MANIFEST_EXT);if(a.length>=2){let[t,...o]=a;e.startsWith(r)&&(t=a.slice(0,2).join(r),o=[i||a.slice(2).join(r)]);let n=i||o.join(r);return l(n)?{name:t,entry:n}:{name:t,version:n||s}}if(1===a.length){let[e]=a;return i&&l(i)?{name:e,entry:i}:{name:e,version:i||s}}throw`Invalid entry value: ${e}`},s=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.length?t.reduce((e,t)=>t?e?`${e}${o.SEPARATOR}${t}`:t:e,""):""},l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${o.NameTransformSymbol.AT}`,"g"),o.NameTransformMap[o.NameTransformSymbol.AT]).replace(RegExp(`${o.NameTransformSymbol.HYPHEN}`,"g"),o.NameTransformMap[o.NameTransformSymbol.HYPHEN]).replace(RegExp(`${o.NameTransformSymbol.SLASH}`,"g"),o.NameTransformMap[o.NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},c=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${o.NameTransformMap[o.NameTransformSymbol.AT]}`,"g"),o.EncodedNameTransformMap[o.NameTransformMap[o.NameTransformSymbol.AT]]).replace(RegExp(`${o.NameTransformMap[o.NameTransformSymbol.SLASH]}`,"g"),o.EncodedNameTransformMap[o.NameTransformMap[o.NameTransformSymbol.SLASH]]).replace(RegExp(`${o.NameTransformMap[o.NameTransformSymbol.HYPHEN]}`,"g"),o.EncodedNameTransformMap[o.NameTransformMap[o.NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},u=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),l(r,"__federation_expose_",t)},d=(e,t)=>e?l(e,"__federation_shared_",t):"",f=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!n.isBrowserEnv()&&!n.isReactNativeEnv()&&"ssrPublicPath"in e&&"string"==typeof e.ssrPublicPath?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},h=e=>{throw Error(`${a}: ${e}`)},m=e=>{console.warn(`${a}: ${e}`)};function p(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let g=/^([\d^=v<>~]|[*xX]$)/;function y(e){return g.test(e)}t.assert=(e,t)=>{e||h(t)},t.composeKeyWithSeparator=s,t.decodeName=c,t.encodeName=l,t.error=h,t.generateExposeFilename=u,t.generateShareFilename=d,t.getResourceUrl=f,t.isRequiredVersion=y,t.parseEntry=i,t.safeToString=p,t.warn=m},64975(e,t){var r=Object.create,o=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,l=(e,t,r,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var l,c=a(t),u=0,d=c.length;u<d;u++)l=c[u],s.call(e,l)||l===r||o(e,l,{get:(e=>t[e]).bind(null,l),enumerable:!(i=n(t,l))||i.enumerable});return e};t.__toESM=(e,t,n)=>(n=null!=e?r(i(e)):{},l(!t&&e&&e.__esModule?n:o(n,"default",{value:e,enumerable:!0}),e))},98057(e,t){t.attachShareScopeMap=function(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}},45509(e,t){Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),t.FEDERATION_SUPPORTED_TYPES=["script"]},52664(e,t,r){let o=r(98057),n=r(47188),a=r(13957),i=r(15589),s=r(76077);t.consumes=function(e){n.updateConsumeOptions(e);let{chunkId:t,promises:r,installedModules:l,webpackRequire:c,chunkMapping:u,moduleToHandlerMapping:d}=e;o.attachShareScopeMap(c),c.o(u,t)&&u[t].forEach(e=>{if(c.o(l,e))return r.push(l[e]);let t=t=>{l[e]=0,c.m[e]=r=>{var o;delete c.c[e];let n=t(),{shareInfo:a}=d[e];if((null==a||null==(o=a.shareConfig)?void 0:o.layer)&&n&&"object"==typeof n)try{n.hasOwnProperty("layer")&&void 0!==n.layer||(n.layer=a.shareConfig.layer)}catch(e){}r.exports=n}},o=t=>{delete l[e],c.m[e]=r=>{throw delete c.c[e],t}};try{let n=c.federation.instance;if(!n)throw Error("Federation instance not found!");let{shareKey:u,getter:f,shareInfo:h,treeShakingGetter:m}=d[e],p=a.getUsedExports(c,u),g={...h};Array.isArray(g.scope)&&Array.isArray(g.scope[0])&&(g.scope=g.scope[0]),p&&(g.treeShaking={usedExports:p,useIn:[n.options.name]});let y=n.loadShare(u,{customShareInfo:g}).then(e=>{if(!1===e){if("function"!=typeof f)throw Error(s.getShortErrorMsg(i.RUNTIME_012,{[i.RUNTIME_012]:'The getter for the shared module is not a function. This may be caused by setting "shared.import: false" without the host providing the corresponding lib.'},{shareKey:u}));return(null==m?void 0:m())||f()}return e});y.then?r.push(l[e]=y.then(t).catch(o)):t(y)}catch(e){o(e)}})}},15589(e,t){t.RUNTIME_012="RUNTIME-012"},76077(e,t){let r=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`;t.getShortErrorMsg=(e,t,o,n)=>{let a=[`${[t[e]]} #${e}`];return o&&a.push(`args: ${JSON.stringify(o)}`),a.push(r(e)),n&&a.push(`Original Error Message:
6
+ ${n}`),a.join("\n")}},59651(e,t){t.getSharedFallbackGetter=e=>{let{shareKey:t,factory:r,version:o,webpackRequire:n,libraryType:a="global"}=e,{runtime:i,instance:s,bundlerRuntime:l,sharedFallback:c}=n.federation;if(!c)return r;let u=c[t];if(!u)return r;let d=o?u.find(e=>e[1]===o):u[0];if(!d)throw Error(`No fallback item found for shareKey: ${t} and version: ${o}`);return()=>i.getRemoteEntry({origin:n.federation.instance,remoteInfo:{name:d[2],entry:`${n.p}${d[0]}`,type:a,entryGlobalName:d[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${o}`);return e.init(n.federation.instance,l).then(()=>e.get())})}},13957(e,t){t.getUsedExports=function(e,t){let r=e.federation.usedExports;if(r)return r[t]}},31531(e,t,r){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});let o=r(64975),n=r(98057),a=r(39490),i=r(52664),s=r(47501),l=r(55331),c=r(34476),u=r(47391),d=r(59651),f=r(79706),h={runtime:f=o.__toESM(f),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:a.remotes,consumes:i.consumes,I:s.initializeSharing,S:{},installInitialConsumes:l.installInitialConsumes,initContainerEntry:c.initContainerEntry,init:u.init,getSharedFallbackGetter:d.getSharedFallbackGetter},attachShareScopeMap:n.attachShareScopeMap,bundlerRuntimeOptions:{}},m=h.instance,p=h.initOptions,g=h.bundlerRuntime,y=h.bundlerRuntimeOptions;t.attachShareScopeMap=n.attachShareScopeMap,t.bundlerRuntime=g,t.bundlerRuntimeOptions=y,t.default=h,t.initOptions=p,t.instance=m,Object.defineProperty(t,"runtime",{enumerable:!0,get:function(){return f}})},47391(e,t,r){let o=r(64975),n=r(79706),a=r(86173);a=o.__toESM(a),t.init=function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:c,libraryType:u}=o.federation;if(!i)throw Error("initOptions is required!");let d=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,d=t.version||s.version;if(!l)return e;let f=t.shared||{},h=[];Object.keys(f).forEach(e=>{(Array.isArray(f[e])?f[e]:[f[e]]).forEach(t=>{if(h.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=c.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:u,version:t.version})}})});let m=a.default.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:d});if(!m||!("shared"in m))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{h.push([e,t])})});let p=(e,t)=>{let o=m.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:c}=o;a.status!==c&&(a.status=c,l&&u&&s&&(a.get=async()=>{let e=await (0,n.getRemoteEntry)({origin:i,remoteInfo:{name:s,entry:l,type:u,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return h.forEach(e=>{let[t,r]=e;p(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(d()),s.init(i)}},34476(e,t){t.initContainerEntry=function(e){let{webpackRequire:t,shareScope:r,initScope:o,shareScopeKey:n,remoteEntryInitOptions:a}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let i=t.federation.instance;i.initOptions({name:t.federation.initOptions.name,remotes:[],...a});let s=null==a?void 0:a.shareScopeKeys,l=null==a?void 0:a.shareScopeMap;if(n&&"string"!=typeof n)n.forEach(e=>{if(!s||!l)return void i.initShareScopeMap(e,r,{hostShareScopeMap:(null==a?void 0:a.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];i.initShareScopeMap(e,t,{hostShareScopeMap:(null==a?void 0:a.shareScopeMap)||{}})});else{let e=n||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];i.initShareScopeMap(e,t,{hostShareScopeMap:(null==a?void 0:a.shareScopeMap)||{}})}):i.initShareScopeMap(e,r,{hostShareScopeMap:(null==a?void 0:a.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),Array.isArray(n))?t.federation.initOptions.shared?t.I(n,o):Promise.all(n.map(e=>t.I(e,o))).then(()=>!0):t.I(n||"default",o)}},47501(e,t,r){let o=r(98057),n=r(45509);t.initializeSharing=function(e){let{shareScopeName:t,webpackRequire:r,initPromises:a,initTokens:i,initScope:s}=e,l=Array.isArray(t)?t:[t];var c=[],u=function(e){s||(s=[]);let l=r.federation.instance;var c=i[e];if(c||(c=i[e]={from:l.name}),s.indexOf(c)>=0)return;s.push(c);let u=a[e];if(u)return u;var d=e=>"u">typeof console&&console.warn&&console.warn(e),f=o=>{var n=e=>d("Initialization of sharing external failed: "+e);try{var a=r(o);if(!a)return;var i=o=>o&&o.init&&o.init(r.S[e],s,{shareScopeMap:r.S||{},shareScopeKeys:t});if(a.then)return h.push(a.then(i,n));var l=i(a);if(l&&"boolean"!=typeof l&&l.then)return h.push(l.catch(n))}catch(e){n(e)}};let h=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:s,from:"build"});o.attachShareScopeMap(r);let m=r.federation.bundlerRuntimeOptions.remotes;return(m&&Object.keys(m.idToRemoteMap).forEach(e=>{let t=m.idToRemoteMap[e],r=m.idToExternalAndNameMapping[e][2];if(t.length>1)f(r);else if(1===t.length){let e=t[0];n.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||f(r)}}),h.length)?a[e]=Promise.all(h).then(()=>a[e]=!0):a[e]=!0};return l.forEach(e=>{c.push(u(e))}),Promise.all(c).then(()=>!0)}},55331(e,t,r){let o=r(47188),n=r(13957);function a(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:o,asyncLoad:a}=e,i=o.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:s,shareInfo:l}=r[t];try{let e=n.getUsedExports(o,s),t={...l};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),a)return i.loadShare(s,{customShareInfo:t});return i.loadShareSync(s,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}t.installInitialConsumes=function(e){o.updateConsumeOptions(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:i,asyncLoad:s}=e,l=[];i.forEach(e=>{let o=()=>a({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:s});l.push([e,o])});let c=(e,o)=>{r.m[e]=a=>{var i;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:c}=t[e];if((null==c||null==(i=c.shareConfig)?void 0:i.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=c.shareConfig.layer)}catch(e){}a.exports=l}};if(s)return Promise.all(l.map(async e=>{let[t,r]=e,o=await r();c(t,()=>o)}));l.forEach(e=>{let[t,r]=e;c(t,r)})}},39490(e,t,r){r(64975);let o=r(98057),n=r(45509),a=r(47188),i=r(89850);t.remotes=function(e){a.updateRemoteOptions(e);let{chunkId:t,promises:r,webpackRequire:s,chunkMapping:l,idToExternalAndNameMapping:c,idToRemoteMap:u}=e;o.attachShareScopeMap(s),s.o(l,t)&&l[t].forEach(e=>{let t=s.R;t||(t=[]);let o=c[e],a=u[e]||[];if(t.indexOf(o)>=0)return;if(t.push(o),o.p)return r.push(o.p);let l=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=`
7
+ while loading "${o[1]}" from ${o[2]}`),s.m[e]=()=>{throw t},o.p=0},d=(e,t,n,a,i,s)=>{try{let c=e(t,n);if(!c||!c.then)return i(c,a,s);{let e=c.then(e=>i(e,a),l);if(!s)return e;r.push(o.p=e)}}catch(e){l(e)}},f=(e,t,r)=>e?d(s.I,o[0],0,e,h,r):l();var h=(e,r,n)=>d(r.get,o[1],t,0,m,n),m=t=>{o.p=1,s.m[e]=e=>{e.exports=t()}};let p=()=>{try{let e=(0,i.decodeName)(a[0].name,i.ENCODE_NAME_PREFIX)+o[1].slice(1),t=s.federation.instance,r=()=>s.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy){let e=Array.isArray(o[0])?o[0]:[o[0]];return Promise.all(e.map(e=>t.sharedHandler.initializeSharing(e))).then(()=>r())}return r()}catch(e){l(e)}};1===a.length&&n.FEDERATION_SUPPORTED_TYPES.includes(a[0].externalType)&&a[0].name?d(p,o[2],0,0,m,1):d(s,o[2],0,0,f,1)})}},47188(e,t){function r(e){var t,r,o,n,a;let{webpackRequire:i,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:c={}}=e,{remotesLoadingData:u}=i,d=null==(o=i.federation)||null==(r=o.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!u||u._updated||!d)return;let{chunkMapping:f,moduleIdToRemoteDataMapping:h}=u;if(f&&h){for(let[e,t]of Object.entries(h))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&d[t.remoteName]){let r=d[t.remoteName];(n=l)[a=e]||(n[a]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}c&&Object.entries(f).forEach(e=>{let[t,r]=e;c[t]||(c[t]=[]),r.forEach(e=>{c[t].includes(e)||c[t].push(e)})}),u._updated=1}}t.updateConsumeOptions=function(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:o,initializeSharingData:n}=t,{sharedFallback:a,bundlerRuntime:i,libraryType:s}=t.federation;if(o&&!o._updated){let{moduleIdToConsumeDataMapping:n={},initialConsumes:l=[],chunkMapping:c={}}=o;if(Object.entries(n).forEach(e=>{let[o,n]=e;r[o]||(r[o]={getter:a?null==i?void 0:i.getSharedFallbackGetter({shareKey:n.shareKey,factory:n.fallback,webpackRequire:t,libraryType:s}):n.fallback,treeShakingGetter:a?n.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:n.requiredVersion,strictVersion:n.strictVersion,singleton:n.singleton,eager:n.eager,layer:n.layer},scope:Array.isArray(n.shareScope)?n.shareScope:[n.shareScope||"default"],treeShaking:a?{get:n.fallback,mode:n.treeShakingMode}:void 0},shareKey:n.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(c).forEach(e=>{let[r,o]=e;t[r]||(t[r]=[]),o.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}o._updated=1}if(n&&!n._updated){let{federation:e}=t;if(!e.instance||!n.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(n.scopeToSharingDataMapping))for(let o of t)if("object"==typeof o&&null!==o){let{name:t,version:n,factory:a,eager:i,singleton:s,requiredVersion:l,strictVersion:c}=o,u={requiredVersion:`^${n}`},d=function(e){return void 0!==e};d(s)&&(u.singleton=s),d(l)&&(u.requiredVersion=l),d(i)&&(u.eager=i),d(c)&&(u.strictVersion=c);let f={version:n,scope:[e],shareConfig:u,get:a};r[t]?r[t].push(f):r[t]=[f]}e.instance.registerShared(r),n._updated=1}},t.updateRemoteOptions=r},23362(e,t,r){Promise.all([r.e("312"),r.e("4"),r.e("941")]).then(r.bind(r,86604))},41703(e,t,r){"use strict";var o,n,a,i,s,l,c,u,d,f,h,m,p=r(31531),g=r.n(p);let y=[].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),E={},S="ScatterChart",b="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var o,n,a,i,s,l;let c=r();Array.isArray(c)?(null!=(a=(o=e)[n=t])||(o[n]=[]),e[t].push(...c)):"object"==typeof c&&null!==c&&(null!=(l=(i=e)[s=t])||(i[s]={}),Object.assign(e[t],c))},p=(e,t,r)=>{var o,n,a;null!=(a=(o=e)[n=t])||(o[n]=r())},_=null!=(o=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?o:{},v=null!=(n=null==(c=r.remotesLoadingData)?void 0:c.moduleIdToRemoteDataMapping)?n:{},I=null!=(a=null==(u=r.initializeSharingData)?void 0:u.scopeToSharingDataMapping)?a:{},R=null!=(i=null==(d=r.consumesLoadingData)?void 0:d.chunkMapping)?i:{},N=null!=(s=null==(f=r.consumesLoadingData)?void 0:f.moduleIdToConsumeDataMapping)?s:{},T={},M=[],A={},O=null==(h=r.initializeExposesData)?void 0:h.shareScope;for(let e in g())r.federation[e]=g()[e];p(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),p(r.federation,"initOptions",()=>({})),p(r.federation.initOptions,"name",()=>S),p(r.federation.initOptions,"shareStrategy",()=>b),p(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(I))for(let o of r)if("object"==typeof o&&null!==o){let{name:r,version:n,factory:a,eager:i,singleton:s,requiredVersion:l,strictVersion:c}=o,u={},d=function(e){return void 0!==e};d(s)&&(u.singleton=s),d(l)&&(u.requiredVersion=l),d(i)&&(u.eager=i),d(c)&&(u.strictVersion=c);let f={version:n,scope:[t],shareConfig:u,get:a};e[r]?e[r].push(f):e[r]=[f]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(E).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),p(r.federation,"bundlerRuntimeOptions",()=>({})),p(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),p(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>_),p(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>E),p(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(v))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),p(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(v)){let o=E[r.remoteName];o&&(e[t]=o)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:_,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:R,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:T,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:A,webpackRequire:r})),e(r,"initContainer",(e,t,o)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:o,shareScopeKey:O,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var o=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(o,e)?o[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(m=r.consumesLoadingData)?void 0:m.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:T,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>__webpack_require__(23362),(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return!/^((68|7|86)0|312|367|4)$/.test(e)},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"__mf/js/async/"+("535"===e?"lib-router":e)+"."+({110:"34eff628",121:"9aac62a4",181:"c7d3eed2",192:"cab71340",2:"de302c44",222:"72c6f282",235:"0073450e",274:"c3bd8521",285:"76f8ba2e",356:"49c9bfe6",386:"c425d184",392:"2bf509f7",470:"7b99bd75",535:"ac74a3dc",587:"ccc8bcd4",588:"4db1394c",616:"ca779190",659:"9db1a9e6",71:"ae02ccc1",873:"4c238897",90:"8382577e",941:"8657a25d",968:"9c716b09",978:"6ae2caad"})[e]+".js"})(),(()=>{__webpack_require__.miniCssF=e=>"__mf/css/async/"+e+".85c2cbf6.css"})(),(()=>{__webpack_require__.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}})()})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="ScatterChart:";__webpack_require__.l=function(r,o,n,a){if(e[r])return void e[r].push(o);if(void 0!==n)for(var i,s,l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var u=l[c];if(u.getAttribute("src")==r||u.getAttribute("data-rspack")==t+n){i=u;break}}i||(s=!0,(i=document.createElement("script")).timeout=120,__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-rspack",t+n),i.src=r),e[r]=[o];var d=function(t,o){i.onerror=i.onload=null,clearTimeout(f);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach(function(e){return e(o)}),t)return t(o)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),s&&document.head.appendChild(i)}})(),(()=>{__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e)})(),(()=>{__webpack_require__.nc=void 0})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"@emotion/react",version:"11.14.0",factory:()=>Promise.all([__webpack_require__.e("274"),__webpack_require__.e("312"),__webpack_require__.e("2")]).then(()=>()=>__webpack_require__(67449)),eager:0,singleton:1,requiredVersion:"^11.11.3"},{name:"@emotion/styled",version:"11.14.1",factory:()=>Promise.all([__webpack_require__.e("312"),__webpack_require__.e("367"),__webpack_require__.e("616")]).then(()=>()=>__webpack_require__(63859)),eager:0,singleton:1},{name:"@hookform/resolvers",version:"3.10.0",factory:()=>Promise.all([__webpack_require__.e("356"),__webpack_require__.e("312"),__webpack_require__.e("587")]).then(()=>()=>__webpack_require__(75150)),eager:0,singleton:1},{name:"@perses-dev/components",version:"0.54.0-beta.8",factory:()=>Promise.all([__webpack_require__.e("588"),__webpack_require__.e("356"),__webpack_require__.e("71"),__webpack_require__.e("222"),__webpack_require__.e("110"),__webpack_require__.e("659"),__webpack_require__.e("285"),__webpack_require__.e("312"),__webpack_require__.e("4"),__webpack_require__.e("367"),__webpack_require__.e("680"),__webpack_require__.e("181")]).then(()=>()=>__webpack_require__(54644)),eager:0,singleton:1},{name:"@perses-dev/plugin-system",version:"0.54.0-beta.8",factory:()=>Promise.all([__webpack_require__.e("535"),__webpack_require__.e("356"),__webpack_require__.e("222"),__webpack_require__.e("90"),__webpack_require__.e("312"),__webpack_require__.e("4"),__webpack_require__.e("367"),__webpack_require__.e("680"),__webpack_require__.e("860"),__webpack_require__.e("386")]).then(()=>()=>__webpack_require__(61361)),eager:0,singleton:1},{name:"date-fns",version:"4.1.0",factory:()=>Promise.all([__webpack_require__.e("588"),__webpack_require__.e("71"),__webpack_require__.e("192")]).then(()=>()=>__webpack_require__(89227)),eager:0,singleton:1},{name:"echarts",version:"5.5.0",factory:()=>Promise.all([__webpack_require__.e("110"),__webpack_require__.e("659"),__webpack_require__.e("873")]).then(()=>()=>__webpack_require__(83824)),eager:0,singleton:1},{name:"lodash",version:"4.18.1",factory:()=>__webpack_require__.e("392").then(()=>()=>__webpack_require__(17243)),eager:0,singleton:1},{name:"react-dom",version:"18.3.1",factory:()=>Promise.all([__webpack_require__.e("470"),__webpack_require__.e("312")]).then(()=>()=>__webpack_require__(78325)),eager:0,singleton:1,requiredVersion:"18.2.0"},{name:"react",version:"18.3.1",factory:()=>__webpack_require__.e("121").then(()=>()=>__webpack_require__(63696)),eager:0,singleton:1,requiredVersion:"18.2.0"}]},uniqueName:"ScatterChart"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var e,t=__webpack_require__.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=r[o--].src}if(!e)throw Error("Automatic publicPath is not supported in this browser");__webpack_require__.p=(e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"))+"../../"})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{312:["70451"],4:["20231"],367:["69402"],680:["42292","40224","94461"],860:["25511","42893","63682","64198","51035","28669","71935","21351"],70:["31829"]},moduleIdToConsumeDataMapping:{40224:{shareScope:"default",shareKey:"lodash",import:"lodash",requiredVersion:"^4.17.21",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("392").then(()=>()=>__webpack_require__(17243))},21351:{shareScope:"default",shareKey:"@perses-dev/components",import:"@perses-dev/components",requiredVersion:"0.54.0-beta.8",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>Promise.all([__webpack_require__.e("588"),__webpack_require__.e("71"),__webpack_require__.e("110"),__webpack_require__.e("659"),__webpack_require__.e("285")]).then(()=>()=>__webpack_require__(54644))},51035:{shareScope:"default",shareKey:"lodash",import:"lodash",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("392").then(()=>()=>__webpack_require__(17243))},31829:{shareScope:"default",shareKey:"date-fns",import:"date-fns",requiredVersion:"^3.0.0 || ^4.0.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>Promise.all([__webpack_require__.e("588"),__webpack_require__.e("192")]).then(()=>()=>__webpack_require__(89227))},64198:{shareScope:"default",shareKey:"echarts",import:"echarts",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>Promise.all([__webpack_require__.e("110"),__webpack_require__.e("659"),__webpack_require__.e("873")]).then(()=>()=>__webpack_require__(83824))},71935:{shareScope:"default",shareKey:"@perses-dev/plugin-system",import:"@perses-dev/plugin-system",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>()=>__webpack_require__(61361)},63682:{shareScope:"default",shareKey:"date-fns-tz",import:"date-fns-tz",requiredVersion:"^3.2.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>Promise.all([__webpack_require__.e("71"),__webpack_require__.e("978"),__webpack_require__.e("70")]).then(()=>()=>__webpack_require__(61153))},28669:{shareScope:"default",shareKey:"@emotion/styled",import:"@emotion/styled",requiredVersion:"^11.14.1",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("235").then(()=>()=>__webpack_require__(63859))},70451:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"18.2.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("121").then(()=>()=>__webpack_require__(63696))},94461:{shareScope:"default",shareKey:"date-fns",import:"date-fns",requiredVersion:"^4.1.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>Promise.all([__webpack_require__.e("588"),__webpack_require__.e("71"),__webpack_require__.e("192")]).then(()=>()=>__webpack_require__(89227))},25511:{shareScope:"default",shareKey:"@hookform/resolvers",import:"@hookform/resolvers",requiredVersion:"^2.0.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("968").then(()=>()=>__webpack_require__(75150))},69402:{shareScope:"default",shareKey:"@emotion/react",import:"@emotion/react",requiredVersion:"^11.11.3",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("274").then(()=>()=>__webpack_require__(67449))},42292:{shareScope:"default",shareKey:"@emotion/styled",import:"@emotion/styled",requiredVersion:"^11.3.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("235").then(()=>()=>__webpack_require__(63859))},20231:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"18.2.0",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("470").then(()=>()=>__webpack_require__(78325))},42893:{shareScope:"default",shareKey:"@perses-dev/plugin-system",import:"@perses-dev/plugin-system",requiredVersion:"0.54.0-beta.8",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>()=>__webpack_require__(61361)}},initialConsumes:[]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{if("u">typeof document){var e=function(e,t,r,o,n){var a=document.createElement("link");a.rel="stylesheet",a.type="text/css",__webpack_require__.nc&&(a.nonce=__webpack_require__.nc),a.href=t;var i=function(r){if(a.onerror=a.onload=null,"load"===r.type)o();else{var i=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.href||t,l=Error("Loading CSS chunk "+e+" failed.\\n("+s+")");l.code="CSS_CHUNK_LOAD_FAILED",l.type=i,l.request=s,a.parentNode&&a.parentNode.removeChild(a),n(l)}};return a.onerror=a.onload=i,r?r.parentNode.insertBefore(a,r.nextSibling):document.head.appendChild(a),a},t=function(e,t){for(var r=document.getElementsByTagName("link"),o=0;o<r.length;o++){var n=r[o],a=n.getAttribute("data-href")||n.getAttribute("href");if(a&&(a=a.split("?")[0]),"stylesheet"===n.rel&&(a===e||a===t))return n}for(var i=document.getElementsByTagName("style"),o=0;o<i.length;o++){var n=i[o],a=n.getAttribute("data-href");if(a===e||a===t)return n}},r=function(r){return new Promise(function(o,n){var a=__webpack_require__.miniCssF(r),i=__webpack_require__.p+a;if(t(a,i))return o();e(r,i,null,o,n)})},o={889:0};__webpack_require__.f.miniCss=function(e,t){var n={285:1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=r(e).then(function(){o[e]=0},function(t){throw delete o[e],t}))}}})(),(()=>{var e={889:0};__webpack_require__.f.j=function(t,r){var o=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else if(/^((68|7|86)0|312|367|4)$/.test(t))e[t]=0;else{var n=new Promise((r,n)=>o=e[t]=[r,n]);r.push(o[2]=n);var a=__webpack_require__.p+__webpack_require__.u(t),i=Error(),s=function(r){if(__webpack_require__.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;i.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",i.name="ChunkLoadError",i.type=n,i.request=a,o[1](i)}};__webpack_require__.l(a,s,"chunk-"+t,t)}};var t=(t,r)=>{var o,n,[a,i,s]=r,l=0;if(a.some(t=>0!==e[t])){for(o in i)__webpack_require__.o(i,o)&&(__webpack_require__.m[o]=i[o]);s&&s(__webpack_require__)}for(t&&t(r);l<a.length;l++)n=a[l],__webpack_require__.o(e,n)&&e[n]&&e[n][0](),e[n]=0},r=self["chunk_ScatterChart "]=self["chunk_ScatterChart "]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(41703)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x()})();
@@ -1,6 +1,6 @@
1
1
  import { PanelProps } from '@perses-dev/plugin-system';
2
2
  import { ReactElement } from 'react';
3
- import { TraceData, TraceSearchResult } from '@perses-dev/core';
3
+ import { TraceData, TraceSearchResult } from '@perses-dev/spec';
4
4
  import { ScatterChartOptions } from './scatter-chart-model';
5
5
  export interface EChartTraceValue extends Omit<TraceSearchResult, 'startTimeUnixMs' | 'serviceStats'> {
6
6
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ScatterChartPanel.d.ts","sourceRoot":"","sources":["../../src/ScatterChartPanel.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,cAAc,CAAC;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAKhF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CA+GpF;AAGD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,MAAM,CAYR"}
1
+ {"version":3,"file":"ScatterChartPanel.d.ts","sourceRoot":"","sources":["../../src/ScatterChartPanel.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,cAAc,CAAC;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAKhF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CA+GpF;AAGD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,MAAM,CAYR"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ScatterChartPanel.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { PanelProps } from '@perses-dev/plugin-system';\nimport { ReactElement, useMemo } from 'react';\nimport { TraceData, TraceSearchResult } from '@perses-dev/core';\nimport { EChartsOption, SeriesOption } from 'echarts';\nimport { NoDataOverlay, useChartsTheme } from '@perses-dev/components';\nimport { Scatterplot } from './Scatterplot';\nimport { ScatterChartOptions } from './scatter-chart-model';\n\nexport interface EChartTraceValue extends Omit<TraceSearchResult, 'startTimeUnixMs' | 'serviceStats'> {\n name: string;\n linkVariables: Record<string, string>;\n startTime: Date;\n spanCount: number;\n errorCount: number;\n}\n\nexport type ScatterChartPanelProps = PanelProps<ScatterChartOptions, TraceData>;\n\n/** default size range of the circles diameter */\nconst DEFAULT_SIZE_RANGE: [number, number] = [6, 20];\n\n/**\n * ScatterChartPanel receives data from the DataQueriesProvider and transforms it\n * into a `dataset` object that Apache ECharts can consume. Additionally,\n * data formatting is also dictated in this component. Formatting includes\n * datapoint size and color.\n *\n * Documentation for data structures accepted by Apache ECharts:\n * https://echarts.apache.org/handbook/en/concepts/dataset\n *\n * Examples for scatter chart formatting in Apache ECharts:\n * https://echarts.apache.org/examples/en/index.html#chart-type-scatter\n *\n * @returns a `ScatterPlot` component that contains an EChart which will handle\n * visualization of the data.\n */\nexport function ScatterChartPanel(props: ScatterChartPanelProps): ReactElement | null {\n const { spec, contentDimensions, queryResults: traceResults } = props;\n const chartsTheme = useChartsTheme();\n const defaultColor = chartsTheme.thresholds.defaultColor || 'blue';\n const sizeRange = spec.sizeRange || DEFAULT_SIZE_RANGE;\n\n // Generate dataset\n // Transform Tempo API response to fit 'dataset' structure from Apache ECharts\n // https://echarts.apache.org/handbook/en/concepts/dataset\n const { dataset, minSpanCount, maxSpanCount } = useMemo(() => {\n const dataset = [];\n let minSpanCount: number | undefined;\n let maxSpanCount: number | undefined;\n for (const result of traceResults) {\n if (result.data.searchResult === undefined) continue;\n const dataSeries = result.data.searchResult.map((trace) => {\n let spanCount = 0;\n let errorCount = 0;\n for (const stats of Object.values(trace.serviceStats)) {\n spanCount += stats.spanCount;\n errorCount += stats.errorCount ?? 0;\n }\n\n if (minSpanCount === undefined || spanCount < minSpanCount) {\n minSpanCount = spanCount;\n }\n if (maxSpanCount === undefined || spanCount > maxSpanCount) {\n maxSpanCount = spanCount;\n }\n\n const pluginSpec = result.definition.spec.plugin.spec as { datasource?: { name?: string } } | undefined;\n const newTraceValue: EChartTraceValue = {\n ...trace,\n linkVariables: {\n datasourceName: pluginSpec?.datasource?.name ?? '',\n traceId: trace.traceId,\n },\n name: `${trace.rootServiceName}: ${trace.rootTraceName}`,\n startTime: new Date(trace.startTimeUnixMs), // convert unix epoch time to Date\n spanCount,\n errorCount,\n };\n return newTraceValue;\n });\n dataset.push({\n source: dataSeries,\n });\n }\n return { dataset, minSpanCount: minSpanCount ?? 0, maxSpanCount: maxSpanCount ?? 0 };\n }, [traceResults]);\n\n // Formatting for the dataset\n // 1. Map x,y coordinates\n // 2. Datapoint size corresponds to the number of spans in a trace\n // 3. Color datapoint red if the trace contains an error\n const series = useMemo(() => {\n const seriesTemplate2: SeriesOption = {\n type: 'scatter',\n encode: {\n // Map to x-axis.\n x: 'startTime',\n // Map to y-axis.\n y: 'durationMs',\n },\n symbolSize: function (data) {\n // returns the diameter of the circles\n return getSymbolSize(data.spanCount, [minSpanCount, maxSpanCount], sizeRange);\n },\n itemStyle: {\n color: function (params) {\n const traceData: EChartTraceValue = params.data as EChartTraceValue;\n // If the trace contains an error, color the datapoint in red\n if (traceData.errorCount > 0) {\n return 'red';\n }\n // Else return default color\n return defaultColor;\n },\n },\n };\n\n // Each data set needs to have a corresponding series formatting object\n const series = [];\n for (let i = 0; i < dataset.length; i++) {\n series.push({ ...seriesTemplate2, datasetIndex: i });\n }\n return series;\n }, [dataset, defaultColor, minSpanCount, maxSpanCount, sizeRange]);\n\n const tracesFound = traceResults.some((traceData) => (traceData.data?.searchResult ?? []).length > 0);\n if (!tracesFound) {\n return <NoDataOverlay resource=\"traces\" />;\n }\n\n const options: EChartsOption = {\n dataset: dataset,\n series: series,\n };\n\n if (contentDimensions === undefined) return null;\n\n return (\n <div data-testid=\"ScatterChartPanel_ScatterPlot\">\n <Scatterplot\n width={contentDimensions.width}\n height={contentDimensions.height}\n options={options}\n link={spec.link}\n />\n </div>\n );\n}\n\n// exported for tests\nexport function getSymbolSize(\n spanCount: number,\n spanCountRange: [number, number],\n sizeRange: [number, number]\n): number {\n const [minSize, maxSize] = sizeRange;\n const [minSpanCount, maxSpanCount] = spanCountRange;\n\n // catch divison by zero\n if (maxSpanCount - minSpanCount === 0) {\n return maxSize;\n }\n\n // apply linear scale of spanCount from range [minSpanCount,maxSpanCount] to a value from range [minSize,maxSize]\n const rel = (spanCount - minSpanCount) / (maxSpanCount - minSpanCount);\n return minSize + (maxSize - minSize) * rel;\n}\n"],"names":["useMemo","NoDataOverlay","useChartsTheme","Scatterplot","DEFAULT_SIZE_RANGE","ScatterChartPanel","props","spec","contentDimensions","queryResults","traceResults","chartsTheme","defaultColor","thresholds","sizeRange","dataset","minSpanCount","maxSpanCount","result","data","searchResult","undefined","dataSeries","map","trace","spanCount","errorCount","stats","Object","values","serviceStats","pluginSpec","definition","plugin","newTraceValue","linkVariables","datasourceName","datasource","name","traceId","rootServiceName","rootTraceName","startTime","Date","startTimeUnixMs","push","source","series","seriesTemplate2","type","encode","x","y","symbolSize","getSymbolSize","itemStyle","color","params","traceData","i","length","datasetIndex","tracesFound","some","resource","options","div","data-testid","width","height","link","spanCountRange","minSize","maxSize","rel"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/ScatterChartPanel.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { PanelProps } from '@perses-dev/plugin-system';\nimport { ReactElement, useMemo } from 'react';\nimport { EChartsOption, SeriesOption } from 'echarts';\nimport { NoDataOverlay, useChartsTheme } from '@perses-dev/components';\nimport { TraceData, TraceSearchResult } from '@perses-dev/spec';\nimport { Scatterplot } from './Scatterplot';\nimport { ScatterChartOptions } from './scatter-chart-model';\n\nexport interface EChartTraceValue extends Omit<TraceSearchResult, 'startTimeUnixMs' | 'serviceStats'> {\n name: string;\n linkVariables: Record<string, string>;\n startTime: Date;\n spanCount: number;\n errorCount: number;\n}\n\nexport type ScatterChartPanelProps = PanelProps<ScatterChartOptions, TraceData>;\n\n/** default size range of the circles diameter */\nconst DEFAULT_SIZE_RANGE: [number, number] = [6, 20];\n\n/**\n * ScatterChartPanel receives data from the DataQueriesProvider and transforms it\n * into a `dataset` object that Apache ECharts can consume. Additionally,\n * data formatting is also dictated in this component. Formatting includes\n * datapoint size and color.\n *\n * Documentation for data structures accepted by Apache ECharts:\n * https://echarts.apache.org/handbook/en/concepts/dataset\n *\n * Examples for scatter chart formatting in Apache ECharts:\n * https://echarts.apache.org/examples/en/index.html#chart-type-scatter\n *\n * @returns a `ScatterPlot` component that contains an EChart which will handle\n * visualization of the data.\n */\nexport function ScatterChartPanel(props: ScatterChartPanelProps): ReactElement | null {\n const { spec, contentDimensions, queryResults: traceResults } = props;\n const chartsTheme = useChartsTheme();\n const defaultColor = chartsTheme.thresholds.defaultColor || 'blue';\n const sizeRange = spec.sizeRange || DEFAULT_SIZE_RANGE;\n\n // Generate dataset\n // Transform Tempo API response to fit 'dataset' structure from Apache ECharts\n // https://echarts.apache.org/handbook/en/concepts/dataset\n const { dataset, minSpanCount, maxSpanCount } = useMemo(() => {\n const dataset = [];\n let minSpanCount: number | undefined;\n let maxSpanCount: number | undefined;\n for (const result of traceResults) {\n if (result.data.searchResult === undefined) continue;\n const dataSeries = result.data.searchResult.map((trace) => {\n let spanCount = 0;\n let errorCount = 0;\n for (const stats of Object.values(trace.serviceStats)) {\n spanCount += stats.spanCount;\n errorCount += stats.errorCount ?? 0;\n }\n\n if (minSpanCount === undefined || spanCount < minSpanCount) {\n minSpanCount = spanCount;\n }\n if (maxSpanCount === undefined || spanCount > maxSpanCount) {\n maxSpanCount = spanCount;\n }\n\n const pluginSpec = result.definition.spec.plugin.spec as { datasource?: { name?: string } } | undefined;\n const newTraceValue: EChartTraceValue = {\n ...trace,\n linkVariables: {\n datasourceName: pluginSpec?.datasource?.name ?? '',\n traceId: trace.traceId,\n },\n name: `${trace.rootServiceName}: ${trace.rootTraceName}`,\n startTime: new Date(trace.startTimeUnixMs), // convert unix epoch time to Date\n spanCount,\n errorCount,\n };\n return newTraceValue;\n });\n dataset.push({\n source: dataSeries,\n });\n }\n return { dataset, minSpanCount: minSpanCount ?? 0, maxSpanCount: maxSpanCount ?? 0 };\n }, [traceResults]);\n\n // Formatting for the dataset\n // 1. Map x,y coordinates\n // 2. Datapoint size corresponds to the number of spans in a trace\n // 3. Color datapoint red if the trace contains an error\n const series = useMemo(() => {\n const seriesTemplate2: SeriesOption = {\n type: 'scatter',\n encode: {\n // Map to x-axis.\n x: 'startTime',\n // Map to y-axis.\n y: 'durationMs',\n },\n symbolSize: function (data) {\n // returns the diameter of the circles\n return getSymbolSize(data.spanCount, [minSpanCount, maxSpanCount], sizeRange);\n },\n itemStyle: {\n color: function (params) {\n const traceData: EChartTraceValue = params.data as EChartTraceValue;\n // If the trace contains an error, color the datapoint in red\n if (traceData.errorCount > 0) {\n return 'red';\n }\n // Else return default color\n return defaultColor;\n },\n },\n };\n\n // Each data set needs to have a corresponding series formatting object\n const series = [];\n for (let i = 0; i < dataset.length; i++) {\n series.push({ ...seriesTemplate2, datasetIndex: i });\n }\n return series;\n }, [dataset, defaultColor, minSpanCount, maxSpanCount, sizeRange]);\n\n const tracesFound = traceResults.some((traceData) => (traceData.data?.searchResult ?? []).length > 0);\n if (!tracesFound) {\n return <NoDataOverlay resource=\"traces\" />;\n }\n\n const options: EChartsOption = {\n dataset: dataset,\n series: series,\n };\n\n if (contentDimensions === undefined) return null;\n\n return (\n <div data-testid=\"ScatterChartPanel_ScatterPlot\">\n <Scatterplot\n width={contentDimensions.width}\n height={contentDimensions.height}\n options={options}\n link={spec.link}\n />\n </div>\n );\n}\n\n// exported for tests\nexport function getSymbolSize(\n spanCount: number,\n spanCountRange: [number, number],\n sizeRange: [number, number]\n): number {\n const [minSize, maxSize] = sizeRange;\n const [minSpanCount, maxSpanCount] = spanCountRange;\n\n // catch divison by zero\n if (maxSpanCount - minSpanCount === 0) {\n return maxSize;\n }\n\n // apply linear scale of spanCount from range [minSpanCount,maxSpanCount] to a value from range [minSize,maxSize]\n const rel = (spanCount - minSpanCount) / (maxSpanCount - minSpanCount);\n return minSize + (maxSize - minSize) * rel;\n}\n"],"names":["useMemo","NoDataOverlay","useChartsTheme","Scatterplot","DEFAULT_SIZE_RANGE","ScatterChartPanel","props","spec","contentDimensions","queryResults","traceResults","chartsTheme","defaultColor","thresholds","sizeRange","dataset","minSpanCount","maxSpanCount","result","data","searchResult","undefined","dataSeries","map","trace","spanCount","errorCount","stats","Object","values","serviceStats","pluginSpec","definition","plugin","newTraceValue","linkVariables","datasourceName","datasource","name","traceId","rootServiceName","rootTraceName","startTime","Date","startTimeUnixMs","push","source","series","seriesTemplate2","type","encode","x","y","symbolSize","getSymbolSize","itemStyle","color","params","traceData","i","length","datasetIndex","tracesFound","some","resource","options","div","data-testid","width","height","link","spanCountRange","minSize","maxSize","rel"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Scatterplot.d.ts","sourceRoot":"","sources":["../../src/Scatterplot.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAa9C,OAAO,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAqB7D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAOD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAoFjE"}
1
+ {"version":3,"file":"Scatterplot.d.ts","sourceRoot":"","sources":["../../src/Scatterplot.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAa9C,OAAO,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAoB7D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAOD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAoFjE"}
@@ -12,12 +12,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  import { useMemo } from 'react';
15
- import { EChart, useChartsTheme } from '@perses-dev/components';
15
+ import { EChart, formatValue, useChartsTheme } from '@perses-dev/components';
16
16
  import { use } from 'echarts/core';
17
17
  import { ScatterChart as EChartsScatterChart } from 'echarts/charts';
18
18
  import { DatasetComponent, DataZoomComponent, LegendComponent, GridComponent, TitleComponent, TooltipComponent } from 'echarts/components';
19
19
  import { CanvasRenderer } from 'echarts/renderers';
20
- import { formatValue } from '@perses-dev/core';
21
20
  import { replaceVariablesInString, useAllVariableValues, useRouterContext, useTimeRange } from '@perses-dev/plugin-system';
22
21
  use([
23
22
  DatasetComponent,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Scatterplot.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ReactElement, useMemo } from 'react';\nimport { EChart, OnEventsType, useChartsTheme } from '@perses-dev/components';\nimport { use, EChartsCoreOption } from 'echarts/core';\nimport { ScatterChart as EChartsScatterChart } from 'echarts/charts';\nimport {\n DatasetComponent,\n DataZoomComponent,\n LegendComponent,\n GridComponent,\n TitleComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsOption, ScatterSeriesOption } from 'echarts';\nimport { formatValue } from '@perses-dev/core';\nimport {\n replaceVariablesInString,\n useAllVariableValues,\n useRouterContext,\n useTimeRange,\n} from '@perses-dev/plugin-system';\nimport { EChartTraceValue } from './ScatterChartPanel';\n\nuse([\n DatasetComponent,\n DataZoomComponent,\n LegendComponent,\n EChartsScatterChart,\n GridComponent,\n TitleComponent,\n TooltipComponent,\n CanvasRenderer,\n]);\n\nexport interface ScatterplotProps {\n width: number;\n height: number;\n options: EChartsOption;\n link?: string;\n}\n\nconst DATE_FORMATTER = new Intl.DateTimeFormat(undefined, {\n dateStyle: 'long',\n timeStyle: 'medium',\n}).format;\n\nexport function Scatterplot(props: ScatterplotProps): ReactElement {\n const { width, height, options, link: linkTemplate } = props;\n const chartsTheme = useChartsTheme();\n const { absoluteTimeRange } = useTimeRange();\n const variableValues = useAllVariableValues();\n const { navigate } = useRouterContext();\n\n // Apache EChart Options Docs: https://echarts.apache.org/en/option.html\n const eChartOptions: EChartsCoreOption = {\n dataset: options.dataset,\n series: options.series,\n dataZoom: options.dataZoom,\n grid: {\n top: 45,\n bottom: 20,\n left: 30,\n right: 20,\n },\n xAxis: {\n type: 'time',\n min: absoluteTimeRange.start,\n max: absoluteTimeRange.end,\n },\n yAxis: {\n scale: true,\n type: 'value',\n name: 'Duration',\n splitNumber: 4,\n axisLabel: {\n formatter: (durationMs: number) => formatValue(durationMs, { unit: 'milliseconds' }),\n },\n },\n animation: false,\n tooltip: {\n padding: 5,\n borderWidth: 1,\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter: function (params: any) {\n // TODO: import type from ECharts instead of using any\n const data = params[0].data as EChartTraceValue;\n return [\n `<b>Service name</b>: ${data.rootServiceName}<br/>`,\n `<b>Span name</b>: ${data.rootTraceName}<br/>`,\n `<b>Time</b>: ${DATE_FORMATTER(data.startTime)}<br/>`,\n `<b>Duration</b>: ${formatValue(data.durationMs, { unit: 'milliseconds' })}<br/>`,\n `<b>Span count</b>: ${data.spanCount} (${data.errorCount} errors)<br/>`,\n ].join('');\n },\n },\n legend: {\n show: true,\n type: 'scroll',\n orient: 'horizontal',\n bottom: 0,\n },\n };\n\n const handleEvents: OnEventsType<ScatterSeriesOption['data'] | unknown> = useMemo(() => {\n const handlers: OnEventsType<ScatterSeriesOption['data'] | unknown> = {};\n if (navigate && linkTemplate) {\n handlers.click = (params): void => {\n const linkVariables = params.data.linkVariables as Record<string, string> | undefined;\n const link = replaceVariablesInString(linkTemplate, variableValues, linkVariables);\n navigate(link);\n };\n }\n return handlers;\n }, [linkTemplate, navigate, variableValues]);\n\n return (\n <EChart\n style={{\n width: width,\n height: height,\n }}\n option={eChartOptions}\n theme={chartsTheme.echartsTheme}\n onEvents={handleEvents}\n />\n );\n}\n"],"names":["useMemo","EChart","useChartsTheme","use","ScatterChart","EChartsScatterChart","DatasetComponent","DataZoomComponent","LegendComponent","GridComponent","TitleComponent","TooltipComponent","CanvasRenderer","formatValue","replaceVariablesInString","useAllVariableValues","useRouterContext","useTimeRange","DATE_FORMATTER","Intl","DateTimeFormat","undefined","dateStyle","timeStyle","format","Scatterplot","props","width","height","options","link","linkTemplate","chartsTheme","absoluteTimeRange","variableValues","navigate","eChartOptions","dataset","series","dataZoom","grid","top","bottom","left","right","xAxis","type","min","start","max","end","yAxis","scale","name","splitNumber","axisLabel","formatter","durationMs","unit","animation","tooltip","padding","borderWidth","trigger","axisPointer","params","data","rootServiceName","rootTraceName","startTime","spanCount","errorCount","join","legend","show","orient","handleEvents","handlers","click","linkVariables","style","option","theme","echartsTheme","onEvents"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/Scatterplot.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ReactElement, useMemo } from 'react';\nimport { EChart, formatValue, OnEventsType, useChartsTheme } from '@perses-dev/components';\nimport { use, EChartsCoreOption } from 'echarts/core';\nimport { ScatterChart as EChartsScatterChart } from 'echarts/charts';\nimport {\n DatasetComponent,\n DataZoomComponent,\n LegendComponent,\n GridComponent,\n TitleComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsOption, ScatterSeriesOption } from 'echarts';\nimport {\n replaceVariablesInString,\n useAllVariableValues,\n useRouterContext,\n useTimeRange,\n} from '@perses-dev/plugin-system';\nimport { EChartTraceValue } from './ScatterChartPanel';\n\nuse([\n DatasetComponent,\n DataZoomComponent,\n LegendComponent,\n EChartsScatterChart,\n GridComponent,\n TitleComponent,\n TooltipComponent,\n CanvasRenderer,\n]);\n\nexport interface ScatterplotProps {\n width: number;\n height: number;\n options: EChartsOption;\n link?: string;\n}\n\nconst DATE_FORMATTER = new Intl.DateTimeFormat(undefined, {\n dateStyle: 'long',\n timeStyle: 'medium',\n}).format;\n\nexport function Scatterplot(props: ScatterplotProps): ReactElement {\n const { width, height, options, link: linkTemplate } = props;\n const chartsTheme = useChartsTheme();\n const { absoluteTimeRange } = useTimeRange();\n const variableValues = useAllVariableValues();\n const { navigate } = useRouterContext();\n\n // Apache EChart Options Docs: https://echarts.apache.org/en/option.html\n const eChartOptions: EChartsCoreOption = {\n dataset: options.dataset,\n series: options.series,\n dataZoom: options.dataZoom,\n grid: {\n top: 45,\n bottom: 20,\n left: 30,\n right: 20,\n },\n xAxis: {\n type: 'time',\n min: absoluteTimeRange.start,\n max: absoluteTimeRange.end,\n },\n yAxis: {\n scale: true,\n type: 'value',\n name: 'Duration',\n splitNumber: 4,\n axisLabel: {\n formatter: (durationMs: number) => formatValue(durationMs, { unit: 'milliseconds' }),\n },\n },\n animation: false,\n tooltip: {\n padding: 5,\n borderWidth: 1,\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter: function (params: any) {\n // TODO: import type from ECharts instead of using any\n const data = params[0].data as EChartTraceValue;\n return [\n `<b>Service name</b>: ${data.rootServiceName}<br/>`,\n `<b>Span name</b>: ${data.rootTraceName}<br/>`,\n `<b>Time</b>: ${DATE_FORMATTER(data.startTime)}<br/>`,\n `<b>Duration</b>: ${formatValue(data.durationMs, { unit: 'milliseconds' })}<br/>`,\n `<b>Span count</b>: ${data.spanCount} (${data.errorCount} errors)<br/>`,\n ].join('');\n },\n },\n legend: {\n show: true,\n type: 'scroll',\n orient: 'horizontal',\n bottom: 0,\n },\n };\n\n const handleEvents: OnEventsType<ScatterSeriesOption['data'] | unknown> = useMemo(() => {\n const handlers: OnEventsType<ScatterSeriesOption['data'] | unknown> = {};\n if (navigate && linkTemplate) {\n handlers.click = (params): void => {\n const linkVariables = params.data.linkVariables as Record<string, string> | undefined;\n const link = replaceVariablesInString(linkTemplate, variableValues, linkVariables);\n navigate(link);\n };\n }\n return handlers;\n }, [linkTemplate, navigate, variableValues]);\n\n return (\n <EChart\n style={{\n width: width,\n height: height,\n }}\n option={eChartOptions}\n theme={chartsTheme.echartsTheme}\n onEvents={handleEvents}\n />\n );\n}\n"],"names":["useMemo","EChart","formatValue","useChartsTheme","use","ScatterChart","EChartsScatterChart","DatasetComponent","DataZoomComponent","LegendComponent","GridComponent","TitleComponent","TooltipComponent","CanvasRenderer","replaceVariablesInString","useAllVariableValues","useRouterContext","useTimeRange","DATE_FORMATTER","Intl","DateTimeFormat","undefined","dateStyle","timeStyle","format","Scatterplot","props","width","height","options","link","linkTemplate","chartsTheme","absoluteTimeRange","variableValues","navigate","eChartOptions","dataset","series","dataZoom","grid","top","bottom","left","right","xAxis","type","min","start","max","end","yAxis","scale","name","splitNumber","axisLabel","formatter","durationMs","unit","animation","tooltip","padding","borderWidth","trigger","axisPointer","params","data","rootServiceName","rootTraceName","startTime","spanCount","errorCount","join","legend","show","orient","handleEvents","handlers","click","linkVariables","style","option","theme","echartsTheme","onEvents"],"mappings":"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"}
@@ -27,7 +27,6 @@ const _core = require("echarts/core");
27
27
  const _charts = require("echarts/charts");
28
28
  const _components1 = require("echarts/components");
29
29
  const _renderers = require("echarts/renderers");
30
- const _core1 = require("@perses-dev/core");
31
30
  const _pluginsystem = require("@perses-dev/plugin-system");
32
31
  (0, _core.use)([
33
32
  _components1.DatasetComponent,
@@ -71,7 +70,7 @@ function Scatterplot(props) {
71
70
  name: 'Duration',
72
71
  splitNumber: 4,
73
72
  axisLabel: {
74
- formatter: (durationMs)=>(0, _core1.formatValue)(durationMs, {
73
+ formatter: (durationMs)=>(0, _components.formatValue)(durationMs, {
75
74
  unit: 'milliseconds'
76
75
  })
77
76
  }
@@ -92,7 +91,7 @@ function Scatterplot(props) {
92
91
  `<b>Service name</b>: ${data.rootServiceName}<br/>`,
93
92
  `<b>Span name</b>: ${data.rootTraceName}<br/>`,
94
93
  `<b>Time</b>: ${DATE_FORMATTER(data.startTime)}<br/>`,
95
- `<b>Duration</b>: ${(0, _core1.formatValue)(data.durationMs, {
94
+ `<b>Duration</b>: ${(0, _components.formatValue)(data.durationMs, {
96
95
  unit: 'milliseconds'
97
96
  })}<br/>`,
98
97
  `<b>Span count</b>: ${data.spanCount} (${data.errorCount} errors)<br/>`
@@ -1,4 +1,4 @@
1
- import { TraceData } from '@perses-dev/core';
1
+ import { TraceData } from '@perses-dev/spec';
2
2
  /**
3
3
  * Mock data we get from getTraceData() in @perses/tempo-plugin.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mock-trace-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TraceData } from '@perses-dev/core';\n\n/**\n * Mock data we get from getTraceData() in @perses/tempo-plugin.\n */\nexport const MOCK_TRACE_SEARCH_RESULT: TraceData = {\n searchResult: [\n {\n startTimeUnixMs: 1702915645000, // unix epoch time in milliseconds\n durationMs: 100,\n serviceStats: {\n 'service-name': {\n spanCount: 10,\n },\n 'second-service-name': {\n spanCount: 3,\n errorCount: 2,\n },\n },\n traceId: '123',\n rootServiceName: 'service-name',\n rootTraceName: 'span-name',\n },\n ],\n metadata: {\n executedQueryString: '{duration > 500ms}',\n },\n};\n\nexport const MOCK_TRACE_SEARCH_RESULT_EMPTY: TraceData = {\n searchResult: [],\n metadata: {\n executedQueryString: '{duration > 500ms}',\n },\n};\n\n/**\n * Mocks results obtained from useTraceQueries() in @perses/plugin-system/runtime.\n * This function uses then React TanStack function useQueries(fooQuery) to\n * handle fetching.\n */\nexport const MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: MOCK_TRACE_SEARCH_RESULT,\n dataUpdatedAt: 1666500979895,\n definition: {\n kind: 'TraceQuery',\n spec: {\n plugin: {\n kind: 'TempoTraceQuery',\n spec: {\n query: '{}',\n datasource: {\n kind: 'TempoDatasource',\n name: 'tempolocal',\n },\n },\n },\n },\n },\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT_EMPTY = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: MOCK_TRACE_SEARCH_RESULT_EMPTY,\n dataUpdatedAt: 1666500979895,\n definition: {\n kind: 'TraceQuery',\n spec: {\n plugin: {\n kind: 'TempoTraceQuery',\n spec: {\n query: '{}',\n datasource: {\n kind: 'TempoDatasource',\n name: 'tempolocal',\n },\n },\n },\n },\n },\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n"],"names":["MOCK_TRACE_SEARCH_RESULT","searchResult","startTimeUnixMs","durationMs","serviceStats","spanCount","errorCount","traceId","rootServiceName","rootTraceName","metadata","executedQueryString","MOCK_TRACE_SEARCH_RESULT_EMPTY","MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT","status","fetchStatus","isLoading","isSuccess","isError","data","dataUpdatedAt","definition","kind","spec","plugin","query","datasource","name","error","errorUpdatedAt","failureCount","errorUpdateCount","isFetched","isFetchedAfterMount","isFetching","isRefetching","isLoadingError","isPaused","isPlaceholderData","isPreviousData","isRefetchError","isStale","MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT_EMPTY"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC;;CAEC,GACD,OAAO,MAAMA,2BAAsC;IACjDC,cAAc;QACZ;YACEC,iBAAiB;YACjBC,YAAY;YACZC,cAAc;gBACZ,gBAAgB;oBACdC,WAAW;gBACb;gBACA,uBAAuB;oBACrBA,WAAW;oBACXC,YAAY;gBACd;YACF;YACAC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;QACjB;KACD;IACDC,UAAU;QACRC,qBAAqB;IACvB;AACF,EAAE;AAEF,OAAO,MAAMC,iCAA4C;IACvDX,cAAc,EAAE;IAChBS,UAAU;QACRC,qBAAqB;IACvB;AACF,EAAE;AAEF;;;;CAIC,GACD,OAAO,MAAME,wCAAwC;IACnD;QACEC,QAAQ;QACRC,aAAa;QACbC,WAAW;QACXC,WAAW;QACXC,SAAS;QACTC,MAAMnB;QACNoB,eAAe;QACfC,YAAY;YACVC,MAAM;YACNC,MAAM;gBACJC,QAAQ;oBACNF,MAAM;oBACNC,MAAM;wBACJE,OAAO;wBACPC,YAAY;4BACVJ,MAAM;4BACNK,MAAM;wBACR;oBACF;gBACF;YACF;QACF;QACAC,OAAO;QACPC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,WAAW;QACXC,qBAAqB;QACrBC,YAAY;QACZC,cAAc;QACdC,gBAAgB;QAChBC,UAAU;QACVC,mBAAmB;QACnBC,gBAAgB;QAChBC,gBAAgB;QAChBC,SAAS;IACX;CACD,CAAC;AAEF,OAAO,MAAMC,8CAA8C;IACzD;QACE5B,QAAQ;QACRC,aAAa;QACbC,WAAW;QACXC,WAAW;QACXC,SAAS;QACTC,MAAMP;QACNQ,eAAe;QACfC,YAAY;YACVC,MAAM;YACNC,MAAM;gBACJC,QAAQ;oBACNF,MAAM;oBACNC,MAAM;wBACJE,OAAO;wBACPC,YAAY;4BACVJ,MAAM;4BACNK,MAAM;wBACR;oBACF;gBACF;YACF;QACF;QACAC,OAAO;QACPC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,WAAW;QACXC,qBAAqB;QACrBC,YAAY;QACZC,cAAc;QACdC,gBAAgB;QAChBC,UAAU;QACVC,mBAAmB;QACnBC,gBAAgB;QAChBC,gBAAgB;QAChBC,SAAS;IACX;CACD,CAAC"}
1
+ {"version":3,"sources":["../../src/mock-trace-data.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TraceData } from '@perses-dev/spec';\n\n/**\n * Mock data we get from getTraceData() in @perses/tempo-plugin.\n */\nexport const MOCK_TRACE_SEARCH_RESULT: TraceData = {\n searchResult: [\n {\n startTimeUnixMs: 1702915645000, // unix epoch time in milliseconds\n durationMs: 100,\n serviceStats: {\n 'service-name': {\n spanCount: 10,\n },\n 'second-service-name': {\n spanCount: 3,\n errorCount: 2,\n },\n },\n traceId: '123',\n rootServiceName: 'service-name',\n rootTraceName: 'span-name',\n },\n ],\n metadata: {\n executedQueryString: '{duration > 500ms}',\n },\n};\n\nexport const MOCK_TRACE_SEARCH_RESULT_EMPTY: TraceData = {\n searchResult: [],\n metadata: {\n executedQueryString: '{duration > 500ms}',\n },\n};\n\n/**\n * Mocks results obtained from useTraceQueries() in @perses/plugin-system/runtime.\n * This function uses then React TanStack function useQueries(fooQuery) to\n * handle fetching.\n */\nexport const MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: MOCK_TRACE_SEARCH_RESULT,\n dataUpdatedAt: 1666500979895,\n definition: {\n kind: 'TraceQuery',\n spec: {\n plugin: {\n kind: 'TempoTraceQuery',\n spec: {\n query: '{}',\n datasource: {\n kind: 'TempoDatasource',\n name: 'tempolocal',\n },\n },\n },\n },\n },\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n\nexport const MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT_EMPTY = [\n {\n status: 'success',\n fetchStatus: 'idle',\n isLoading: false,\n isSuccess: true,\n isError: false,\n data: MOCK_TRACE_SEARCH_RESULT_EMPTY,\n dataUpdatedAt: 1666500979895,\n definition: {\n kind: 'TraceQuery',\n spec: {\n plugin: {\n kind: 'TempoTraceQuery',\n spec: {\n query: '{}',\n datasource: {\n kind: 'TempoDatasource',\n name: 'tempolocal',\n },\n },\n },\n },\n },\n error: null,\n errorUpdatedAt: 0,\n failureCount: 0,\n errorUpdateCount: 0,\n isFetched: true,\n isFetchedAfterMount: true,\n isFetching: false,\n isRefetching: false,\n isLoadingError: false,\n isPaused: false,\n isPlaceholderData: false,\n isPreviousData: false,\n isRefetchError: false,\n isStale: true,\n },\n];\n"],"names":["MOCK_TRACE_SEARCH_RESULT","searchResult","startTimeUnixMs","durationMs","serviceStats","spanCount","errorCount","traceId","rootServiceName","rootTraceName","metadata","executedQueryString","MOCK_TRACE_SEARCH_RESULT_EMPTY","MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT","status","fetchStatus","isLoading","isSuccess","isError","data","dataUpdatedAt","definition","kind","spec","plugin","query","datasource","name","error","errorUpdatedAt","failureCount","errorUpdateCount","isFetched","isFetchedAfterMount","isFetching","isRefetching","isLoadingError","isPaused","isPlaceholderData","isPreviousData","isRefetchError","isStale","MOCK_TRACE_SEARCH_RESULT_QUERY_RESULT_EMPTY"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC;;CAEC,GACD,OAAO,MAAMA,2BAAsC;IACjDC,cAAc;QACZ;YACEC,iBAAiB;YACjBC,YAAY;YACZC,cAAc;gBACZ,gBAAgB;oBACdC,WAAW;gBACb;gBACA,uBAAuB;oBACrBA,WAAW;oBACXC,YAAY;gBACd;YACF;YACAC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;QACjB;KACD;IACDC,UAAU;QACRC,qBAAqB;IACvB;AACF,EAAE;AAEF,OAAO,MAAMC,iCAA4C;IACvDX,cAAc,EAAE;IAChBS,UAAU;QACRC,qBAAqB;IACvB;AACF,EAAE;AAEF;;;;CAIC,GACD,OAAO,MAAME,wCAAwC;IACnD;QACEC,QAAQ;QACRC,aAAa;QACbC,WAAW;QACXC,WAAW;QACXC,SAAS;QACTC,MAAMnB;QACNoB,eAAe;QACfC,YAAY;YACVC,MAAM;YACNC,MAAM;gBACJC,QAAQ;oBACNF,MAAM;oBACNC,MAAM;wBACJE,OAAO;wBACPC,YAAY;4BACVJ,MAAM;4BACNK,MAAM;wBACR;oBACF;gBACF;YACF;QACF;QACAC,OAAO;QACPC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,WAAW;QACXC,qBAAqB;QACrBC,YAAY;QACZC,cAAc;QACdC,gBAAgB;QAChBC,UAAU;QACVC,mBAAmB;QACnBC,gBAAgB;QAChBC,gBAAgB;QAChBC,SAAS;IACX;CACD,CAAC;AAEF,OAAO,MAAMC,8CAA8C;IACzD;QACE5B,QAAQ;QACRC,aAAa;QACbC,WAAW;QACXC,WAAW;QACXC,SAAS;QACTC,MAAMP;QACNQ,eAAe;QACfC,YAAY;YACVC,MAAM;YACNC,MAAM;gBACJC,QAAQ;oBACNF,MAAM;oBACNC,MAAM;wBACJE,OAAO;wBACPC,YAAY;4BACVJ,MAAM;4BACNK,MAAM;wBACR;oBACF;gBACF;YACF;QACF;QACAC,OAAO;QACPC,gBAAgB;QAChBC,cAAc;QACdC,kBAAkB;QAClBC,WAAW;QACXC,qBAAqB;QACrBC,YAAY;QACZC,cAAc;QACdC,gBAAgB;QAChBC,UAAU;QACVC,mBAAmB;QACnBC,gBAAgB;QAChBC,gBAAgB;QAChBC,SAAS;IACX;CACD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { UnknownSpec, QueryDefinition } from '@perses-dev/core';
1
+ import { QueryDefinition, UnknownSpec } from '@perses-dev/spec';
2
2
  export type TraceQueryDefinition<PluginSpec = UnknownSpec> = QueryDefinition<'TraceQuery', PluginSpec>;
3
3
  /**
4
4
  * The Options object type supported by the ScatterChart panel plugin.
@@ -1 +1 @@
1
- {"version":3,"file":"scatter-chart-model.d.ts","sourceRoot":"","sources":["../../src/scatter-chart-model.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,WAAW,IAAI,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAEvG;;GAEG;AAKH,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1E"}
1
+ {"version":3,"file":"scatter-chart-model.d.ts","sourceRoot":"","sources":["../../src/scatter-chart-model.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,oBAAoB,CAAC,UAAU,GAAG,WAAW,IAAI,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAEvG;;GAEG;AAKH,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1E"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/scatter-chart-model.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { UnknownSpec, QueryDefinition } from '@perses-dev/core';\n\nexport type TraceQueryDefinition<PluginSpec = UnknownSpec> = QueryDefinition<'TraceQuery', PluginSpec>;\n\n/**\n * The Options object type supported by the ScatterChart panel plugin.\n */\n// TODO: Add support for scatter chart formatting options.\n// Some scaffolding has been done to support formatting options.\n// This includes the interface below which still needs implementation.\n// Note: The interface attributes must match schemas/scatter.cue\nexport interface ScatterChartOptions {\n /** range of the circles diameter */\n sizeRange?: [number, number];\n\n /**\n * Where to navigate after clicking on a bubble.\n * Supported variables: datasourceName, traceId\n */\n link?: string;\n}\n\n/**\n * Creates the initial/empty options for a ScatterChart panel.\n */\nexport function createInitialScatterChartOptions(): Record<string, unknown> {\n return {};\n}\n"],"names":["createInitialScatterChartOptions"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAwBjC;;CAEC,GACD,OAAO,SAASA;IACd,OAAO,CAAC;AACV"}
1
+ {"version":3,"sources":["../../src/scatter-chart-model.ts"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { QueryDefinition, UnknownSpec } from '@perses-dev/spec';\n\nexport type TraceQueryDefinition<PluginSpec = UnknownSpec> = QueryDefinition<'TraceQuery', PluginSpec>;\n\n/**\n * The Options object type supported by the ScatterChart panel plugin.\n */\n// TODO: Add support for scatter chart formatting options.\n// Some scaffolding has been done to support formatting options.\n// This includes the interface below which still needs implementation.\n// Note: The interface attributes must match schemas/scatter.cue\nexport interface ScatterChartOptions {\n /** range of the circles diameter */\n sizeRange?: [number, number];\n\n /**\n * Where to navigate after clicking on a bubble.\n * Supported variables: datasourceName, traceId\n */\n link?: string;\n}\n\n/**\n * Creates the initial/empty options for a ScatterChart panel.\n */\nexport function createInitialScatterChartOptions(): Record<string, unknown> {\n return {};\n}\n"],"names":["createInitialScatterChartOptions"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAwBjC;;CAEC,GACD,OAAO,SAASA;IACd,OAAO,CAAC;AACV"}