@nebula.js/cli-serve 8.0.0-alpha.2 → 8.0.0-alpha.3

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.
package/README.md CHANGED
@@ -26,7 +26,7 @@ Options:
26
26
  --build Build the nebula visualization into /dist dictionary
27
27
  [boolean] [default: true]
28
28
  --host Specify a host to use[string] [default: "localhost"]
29
- --port Specify a port number to listen for requests on
29
+ -p, --port Specify a port number to listen for requests on
30
30
  [number]
31
31
  --disableHostCheck Bypasses host checking [boolean] [default: false]
32
32
  --keyboardNavigation Whether or not Nebula handles keyboard navigation
@@ -44,8 +44,6 @@ Options:
44
44
  --fixturePath Path to a folder that will be used as basis when
45
45
  locating fixtures
46
46
  [string] [default: "test/component"]
47
- --mfe Serves bundle to use in micro frontend
48
- [boolean] [default: false]
49
47
  -h, --help Show help [boolean]
50
48
  --open Open up in browser [boolean] [default: true]
51
49
  ```
@@ -70,8 +68,12 @@ module.exports = {
70
68
  };
71
69
  ```
72
70
 
71
+ Every option of nebula serve can be set here, and an option on the command line is used before the one in the file, as
72
+ `port: 8000` in the file and `-p 9000` on the command line serves on port 9000.
73
+
73
74
  Serve properties:
74
75
 
76
+ - port: The port to listen for requests on, which is a free one when it is not set
75
77
  - types: Additional types to load into the serve instance. Useful in conjunction with useEmbed. The `url` is an es module.
76
78
  - `ex: types: [{ name: 'barchart', url: "https://example.com/sn-bar-chart.esm.js"}],`
77
79
  - themes: Theme files to load
@@ -108,22 +110,31 @@ The page has `@nebula.js/stardust`, `react`, `react-dom`, `react-dom/client` and
108
110
  visualization imports those by their names, so that the page and the visualization share one of each. Any other module
109
111
  is bundled into the visualization, also the ones that are `peerDependencies` of it.
110
112
 
111
- ### Micro Frontend (MFE) Mode
113
+ A code split `module` imports its chunks from the `chunks` directory beside the entry, which nebula build writes.
112
114
 
113
- The MFE mode activated with the `--mfe` option, builds a visualisation as a SystemJS module (the `systemjs` field of
114
- `package.json`) which is used in a micro frontend environment. The visualisation is served at:
115
+ ### The modules of the visualization
116
+
117
+ Nebula serve builds and watches the es module (the `module` field of `package.json`) and the SystemJS module (the
118
+ `systemjs` field), and serves the directories that nebula build writes them to, from the root. A module is at its file
119
+ name, and the chunks and the source maps beside it are too, as the module imports them relative to its own url. The
120
+ directory is not in the url:
115
121
 
116
122
  ```
117
- https://<host>:<port>/pkg/<module name>
123
+ https://<host>:<port>/sn-viz.js the es module, when "module" is dist/sn-viz.js
124
+ https://<host>:<port>/sn-viz.systemjs.js the SystemJS module, when "systemjs" is dist/sn-viz.systemjs.js
118
125
  ```
119
126
 
120
- The module name is by default the name in `package.json` but may be overridden using the
121
- `--type` option.
127
+ The urls are printed when nebula serve has started.
128
+
129
+ ### HTTPS
122
130
 
123
- The MFE mode runs in HTTPS which requires certificates to be installed in the
124
- environment running nebula serve.
131
+ Nebula serve serves over HTTPS when the certificates are installed in `~/.certs` (see below), as they are on a development
132
+ machine, because the page that loads the SystemJS module is served over HTTPS. Without certificates, as on a CI runner,
133
+ it serves over HTTP and tells you so.
125
134
 
126
- The regular dev environment in nebula serve is disabled when running in this mode.
135
+ - `--https` serves over HTTPS, and fails to start if the certificates are not installed.
136
+ - `--no-https` serves over HTTP, also when the certificates are installed. Use it where the url has to be `http`, such
137
+ as in a test that has a `http://localhost` base url.
127
138
 
128
139
  #### How to install trusted certificates locally
129
140
 
package/dist/eRender.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";var e,t,n,r,o,a,i,s={R(e,t,n){var r=n("o"),o=async function(e){let{embed:t,element:n,snapshot:r}=e,o={},a=e=>{n.innerHTML=`<p>${e.message}</p>`,n.setAttribute("data-njs-error",e.message)};try{o="string"==typeof r?await t.config.snapshot.get(r):r}catch(e){throw a(e),e}let{meta:{theme:i,language:s,appLayout:l},layout:c}=o,u=e=>({id:`${+new Date}-object`,getLayout:async()=>e,on(){},once(){}}),d={id:`${+new Date}-app`,createSessionObject:async e=>u(e),getObject:async e=>e===c.qInfo.qId?u(c):Promise.reject(Error(`C\x1dould not find an object with id: ${e}`)),getAppLayout:async()=>l||{}},f=await t(d,{context:{theme:i,language:s}});try{await f.render(c.qInfo&&c.qInfo.qId?{id:c.qInfo.qId,element:n}:{type:c.visualization,element:n,properties:c})}catch(e){throw a(e||{message:"Failed to render visualization."}),e}};n("D"),n("H"),n("h"),n("HA");var a=n("Hg");let i=()=>{let e={};return window.location.search.substring(1).split("&").forEach(t=>{let n=t.indexOf("="),r=t.substr(0,n),o=decodeURIComponent(t.substring(n+1));"cols"===r&&(o=o.split(",")),e[r]=o}),e},s=/(wss?):\/\/([^/:?&]+)(?::(\d+))?/,l=/\/app\/([^?&#:]+)/,c=/(wss?):\/\/([^/:?&]+)(?::(\d+))?\/?([a-z0-9-._~]+)?/,u=()=>fetch("/info").then(e=>e.json()).then(async e=>{let t=e,n=i();if(n.engine_url?t={...t,...(e=>{let t,n,r=s.exec(e);if(!r)return{engineUrl:e,invalid:!0};let o=e.trim(),a=o,i=l.exec(o);i&&([,t]=i,a=o.substring(0,i.index),n=o);let u=c.exec(a);return u?{engine:{secure:"wss"===r[1],host:r[2],port:r[3]||void 0,prefix:u[4]||void 0,appId:t},engineUrl:a,appUrl:n}:{engineUrl:e,invalid:!0}})(n.engine_url)}:n.app&&(t={...t,engine:{...t.engine,appId:n.app}}),n["qlik-web-integration-id"]&&(t.webIntegrationId=n["qlik-web-integration-id"]),n["qlik-client-id"]&&(t.clientId=n["qlik-client-id"]),t.invalid)return t;let r=`${t.engine.secure?"https":"http"}://${t.engine.host}`;return{...t,rootPath:r}}),d=e=>{let{clientId:t,webIntegrationId:n,engine:{host:r,port:o,secure:a}}=e;return n?{authType:"cookie",webIntegrationId:n,host:r}:t?{authType:"oauth2",clientId:t,host:r,redirectUri:`${window.location.origin}/auth/login/callback`,accessTokenStorage:"session"}:{authType:"noauth",host:`${!1!==a?"https":"http"}://${r}${o?`:${o}`:""}`}};var f=n("g"),p=n.t(f,2),m=n("r"),g=n.t(m,2),h=n("X"),y=n.t(h,2),v=n("K");let w={"@nebula.js/stardust":r,react:p,"react-dom":g,"react-dom/client":y,"react/jsx-runtime":n.t(v,2)},b=/^[A-Za-z_$][\w$]*$/,j=!1,q=async(e,t)=>{let n;(()=>{if(j)return;j=!0,globalThis.nebulaShared=w;let e={};Object.entries(w).forEach(t=>{let n,[r,o]=t;e[r]=URL.createObjectURL(new Blob([(n=Object.keys(o).filter(e=>"default"!==e&&b.test(e)).map(e=>`export const ${e} = shared[${JSON.stringify(e)}];`),[`const shared = globalThis.nebulaShared[${JSON.stringify(r)}];`,"export default shared.default !== undefined ? shared.default : shared;",...n].join("\n"))],{type:"text/javascript"}))});let t=document.createElement("script");t.type="importmap",t.textContent=JSON.stringify({imports:e}),document.head.appendChild(t)})();let r=t||`/pkg/${encodeURIComponent(e)}`;return(n=await import(`${r}${r.includes("?")?"&":"?"}t=${Date.now()}`))&&"object"==typeof n&&"default"in n?n.default:n},I={};function O(e){let t=()=>{q(e.supernova.name,e.supernova.url).then(t=>{var n;window[e.supernova.name]=t,I[n=e.supernova.name]&&I[n].forEach(e=>e())})};return(e.sock.port&&(new WebSocket(`ws://localhost:${e.sock.port}`).onmessage=()=>{t()}),t(),e.types)?Promise.all(e.types.map(e=>q(e.name,e.url).then(t=>{window[e.name]=t}))):Promise.resolve()}window.onHotChange=(e,t)=>(I[e]||(I[e]=[]),I[e].push(t),window[e]&&t(),()=>{let n=I[e].indexOf(t);I[e].splice(n,1)});var L=function(){return{getObjectApi:()=>Promise.resolve({id:`sessapi - ${+Date.now()}`})}},$=n("Hs"),k=n.n($);let x=globalThis.crypto||{getRandomValues:()=>123456};var E=function(e){return t=>{let n=k()({},t);n.qInfo=n.qInfo||{},n.qInfo.qId=n.qInfo.qId||`mock-${"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^x.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}`;let r=n._mock,o=n;return r&&(delete n._mock,o=k()({},n,r)),Promise.resolve({on:()=>{},once:()=>{},getLayout:()=>Promise.resolve(o),getProperties:()=>Promise.resolve(n),getEffectiveProperties:()=>Promise.resolve(n),removeListener:()=>{},id:n.qInfo.qId,properties:n,session:e})}};let S=function(e){let{args:t=[],defaultValue:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"function"==typeof e?e(...t):void 0!==e?e:n},_=function(e){let{defaultValue:t,async:n=!0,delay:r=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(){for(var o=arguments.length,a=Array(o),i=0;i<o;i++)a[i]=arguments[i];let s=S(e,{defaultValue:t,args:a});return n?new Promise(e=>{setTimeout(()=>e(s),r)}):s}},P=["addListener","emit","listeners","on","once","removeAllListeners","removeListener","setMaxListerners"];function C(e){let t=S(e.getLayout);return t.qInfo&&t.qInfo.qId}function A(e){if(!e.getLayout)throw Error('Generic object is missing "getLayout"');if(!C(e))throw Error('Generic object is missing "qId" for path "getLayout().qInfo.qId"')}var T=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Array.isArray(e)||0===e.length)return()=>{throw Error('No "genericObjects" specified')};e.forEach(A);let n=e.reduce((e,n)=>({...e,...function(e,t){let n=C(e),{delay:r}=t,{id:o,session:a,...i}=e;if(o&&n&&o!==n)throw Error(`Generic object has multiple IDs, qInfo.qId: ${n}, id: ${o}`);let s={id:n=n||o||`object - ${+Date.now()}`,session:S(a,{defaultValue:!0}),on:()=>{},once:()=>{},removeListener:()=>{},...Object.entries(i).reduce((e,t)=>{let[n,o]=t;return{...e,[n]:_(o,{async:!P.includes(n),delay:r})}},{}),genericType:e.type};return{[n]:s}}(n,t)}),{});return async e=>Promise.resolve(n[e])},N=function(e){return()=>Promise.resolve({id:"app-layout",qLocaleInfo:e?.appLocaleInfo})},z={fromGenericObjects(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new L,r=new E(n),o=new T(e,t),a=new N(t);return Promise.resolve({...t.appMethods||{},id:`app - ${+Date.now()}`,session:n,createSessionObject:r,destroySessionObject:async()=>{},getObject:o,getAppLayout:a,getListObject:async e=>o(e.qInfo?.qId)})}(e,t)}};let D=e=>new Promise(t=>{let n=()=>{e.querySelector(".njs-viz")?requestAnimationFrame(n):t()};requestAnimationFrame(n)}),M=(e,t)=>new Promise(n=>{let r=()=>{let o=e.querySelector(".njs-viz[data-render-count]");o&&parseInt(o.getAttribute("data-render-count"),10)>t?n():requestAnimationFrame(r)};requestAnimationFrame(r)});window.addEventListener("load",function(){let e=i();e.fixture?(async e=>{let t=document.querySelector("#chart-container"),n=e.rerenders?parseInt(e.rerenders,10):0,o=await u(),a=await async function(e){let t=window.serveFixtures.get(e);if(!t)throw Error(`Unable to load fixture ${e}`);let n=t();return!function(){let{genericObjects:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||0===e.length)return;if(!e[0]||!e[0].getLayout)throw Error("Invalid getLayout of generic object");let{getLayout:t}=e[0],n="function"==typeof t?t():t;if(!n.visualization)throw Error('No "visualization" specified on generic object on path "getLayout"');if(!n.qInfo||!n.qInfo.qId)throw Error('No "qId" specified on generic object on path "getLayout.qInfo')}(n),n}(e.fixture),{type:i,load:s,genericObjects:l,instanceConfig:c,snConfig:d,enigmaMockerOptions:f}=await async function(e){let{params:t,fixture:n,serverInfo:r}=e,o=k()(!0,{},(e=>{let{themes:t=[],supernova:n={},flags:r,anything:o}=e,a={instanceConfig:{themes:t.map(e=>({id:e,load:async()=>(await fetch(`/theme/${e}`)).json()})),context:{constraints:{}},flags:r,anything:o}};return n.name&&(a.type=n.name),(n.name||n.url)&&(a.load=async()=>q(n.name,n.url)),a})(r),n,{instanceConfig:{context:{theme:t.theme,language:t.language,keyboardNavigation:t.keyboardNavigation}}});o.genericObjects=o.genericObjects||[(e=>{let{type:t}=e;return{getLayout:{qInfo:{qId:+Date.now()},visualization:t}}})({type:o.type})];if(!o.type)throw Error('No visualization type. Specify it either in fixture in the property "type" or as "--type" to Nebula serve.');if(!o.load)throw Error('Unable to load the visualization. Specify it in option "--entry" to Nebula serve.');return o}({fixture:a,params:e,serverInfo:o}),p=await z.fromGenericObjects(l,f),m=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{getLayout:t}=e[0];return("function"==typeof t?t():t).qInfo.qId}(l),g=null;if(e.simulatedMemLeakKB){let n=Math.round(1024*parseFloat(e.simulatedMemLeakKB)/48);g=await p.getObject(m);let r={};g.on=(e,t)=>{(r[e]=r[e]||[]).push(t)},g.once=(e,t)=>{let n=()=>{t(),g.removeListener(e,n)};g.on(e,n)},g.removeListener=(e,t)=>{r[e]&&(r[e]=r[e].filter(e=>e!==t))},g.emit=e=>{(r[e]||[]).forEach(e=>e())},t.leakStore=[];let o=g.getLayout.bind(g);g.getLayout=async()=>(t.leakStore.push(Array(n).fill(null).map((e,t)=>({j:t,v:Math.random()}))),o())}let h=o&&o.types||[],y=(0,r.embed)(p,{types:[{name:i,load:s},...h.map(e=>({name:e.name,load:async()=>q(e.name,e.url)}))],...c}),v=await y.render({type:i,element:t,id:m,...d});(d?.events||[]).forEach(e=>{v.addListener(e,e=>{document.querySelector("#events").innerHTML=e})});let w=v;n>0&&(await M(t,0),await (async e=>{for(let n=0;n<e;n++){if(await w.destroy(),await D(t),w=await y.render({type:i,element:t,id:m,...d}),await M(t,0),g){let e=parseInt(t.querySelector(".njs-viz[data-render-count]").getAttribute("data-render-count"),10);g.emit("changed"),await M(t,e)}t.setAttribute("data-render-count",String(n+1))}})(n))})(e):e.snapshot?async function(){let e=await u(),{themes:t,supernova:n}=e;await O(e);let a=document.querySelector("#chart-container");a.classList.toggle("full",!0);let s=r.embed.createConfiguration({hostConfig:d(e),themes:t?t.map(e=>({key:e,load:async()=>(await fetch(`/theme/${e}`)).json()})):void 0,types:[{load:e=>Promise.resolve(window[e.name]),name:n.name}],context:{constraints:{passive:!0,active:!0}}});window.onHotChange(n.name,async()=>{o({embed:s,element:a,snapshot:i().snapshot})})}():async function(){let e,t,n=await u();await O(n),n.engine.appId||(location.href=location.origin);let o=i(),s=await (async e=>{try{let t=await u();return(0,a.qs)({appId:e,hostConfig:d(t)}).getDoc()}catch(e){throw Error("Failed to open app!",{cause:e})}})(n.engine.appId),l=await (async e=>{let{app:t,supernova:{name:n},themes:o,theme:a,language:i,hostConfig:s}=e;return r.embed.createConfiguration({hostConfig:s,themes:o?o.map(e=>({id:e,load:async()=>(await fetch(`/theme/${e}`)).json()})):void 0,context:{theme:a,language:i}})(t,{load:e=>Promise.resolve(window[e.name]),types:[{name:n}]})})({app:s,...n,hostConfig:d(n),theme:o.theme,language:o.language}),c=document.querySelector("#chart-container");if(o["render-config"]){let t=await (await fetch(`/render-config/${o["render-config"]}`)).json();e={...t,...o.object?{id:o.object}:t.id?{id:t.id}:{},type:t.type?t.type:n.supernova.name,fields:o.cols?o.cols:t.fields,element:c}}else e=o.object?{id:o.object,element:c}:{type:n.supernova.name,fields:o.cols||[],element:c};window.onHotChange(n.supernova.name,async()=>{t&&(t.close(),l.__DO_NOT_USE__.types.clearFromCache(n.supernova.name),l.__DO_NOT_USE__.types.register(n.supernova)),t=await (async()=>{await l.render(e)})()})}()})}},l={};function c(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}};return s[e].call(n.exports,n,n.exports,c),n.exports}c.m=s,c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(n,r){if(1&r&&(n=this(n)),8&r||"object"==typeof n&&n&&(4&r&&n.__esModule||16&r&&"function"==typeof n.then))return n;var o=Object.create(null);c.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&n;("object"==typeof i||"function"==typeof i)&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>{a[e]=()=>n[e]});return a.default=()=>n,c.d(o,a),o},c.d=(e,t,n)=>{var r=(t,n)=>{for(var r in t)c.o(t,r)&&!c.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,[n]:t[r]})};r(t,"get"),r(n,"value")},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce((t,n)=>(c.f[n](e,t),t),[])),c.u=e=>"async/"+e+".js",c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},c.l=function(e,t,r,o){if(n[e])return void n[e].push(t);if(void 0!==r)for(var a,i,s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var u=s[l];if(u.getAttribute("src")==e){a=u;break}}a||(i=!0,(a=document.createElement("script")).timeout=120,c.nc&&a.setAttribute("nonce",c.nc),a.src=e),n[e]=[t];var d=function(t,r){a.onerror=a.onload=null,clearTimeout(f);var o=n[e];if(delete n[e],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(function(e){return e(r)}),t)return t(r)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),i&&document.head.appendChild(a)},c.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r=[],c.O=(e,t,n,o)=>{if(t){o=o||0;for(var a=r.length;a>0&&r[a-1][2]>o;a--)r[a]=r[a-1];r[a]=[t,n,o];return}for(var i=1/0,a=0;a<r.length;a++){for(var[t,n,o]=r[a],s=!0,l=0;l<t.length;l++)(!1&o||i>=o)&&Object.keys(c.O).every(e=>c.O[e](t[l]))?t.splice(l--,1):(s=!1,o<i&&(i=o));if(s){r.splice(a--,1);var u=n();void 0!==u&&(e=u)}}return e},c.p="/",o={"9b":0},c.f.j=function(e,t){var n=c.o(o,e)?o[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((t,r)=>n=o[e]=[t,r]);t.push(n[2]=r);var a=c.p+c.u(e),i=Error();c.l(a,function(t){if(c.o(o,e)&&(0!==(n=o[e])&&(o[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+a+")",i.name="ChunkLoadError",i.type=r,i.request=a,n[1](i)}},"chunk-"+e,e)}},c.O.j=e=>0===o[e],a=(e,t)=>{var n,r,[a,i,s]=t,l=0;if(a.some(e=>0!==o[e])){for(n in i)c.o(i,n)&&(c.m[n]=i[n]);if(s)var u=s(c)}for(e&&e(t);l<a.length;l++)r=a[l],c.o(o,r)&&o[r]&&o[r][0](),o[r]=0;return c.O(u)},(i=self.rspackChunk=self.rspackChunk||[]).forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i));var u=c.O(void 0,["g","b","q"],()=>c("R"));u=c.O(u)})();
1
+ (()=>{"use strict";var e,t,n,r,o,a,i,s={R(e,t,n){var r=n("o"),o=async function(e){let{embed:t,element:n,snapshot:r}=e,o={},a=e=>{n.innerHTML=`<p>${e.message}</p>`,n.setAttribute("data-njs-error",e.message)};try{o="string"==typeof r?await t.config.snapshot.get(r):r}catch(e){throw a(e),e}let{meta:{theme:i,language:s,appLayout:l},layout:c}=o,u=e=>({id:`${+new Date}-object`,getLayout:async()=>e,on(){},once(){}}),d={id:`${+new Date}-app`,createSessionObject:async e=>u(e),getObject:async e=>e===c.qInfo.qId?u(c):Promise.reject(Error(`C\x1dould not find an object with id: ${e}`)),getAppLayout:async()=>l||{}},f=await t(d,{context:{theme:i,language:s}});try{await f.render(c.qInfo&&c.qInfo.qId?{id:c.qInfo.qId,element:n}:{type:c.visualization,element:n,properties:c})}catch(e){throw a(e||{message:"Failed to render visualization."}),e}};n("D"),n("H"),n("h"),n("HA");var a=n("Hg");let i=()=>{let e={};return window.location.search.substring(1).split("&").forEach(t=>{let n=t.indexOf("="),r=t.substr(0,n),o=decodeURIComponent(t.substring(n+1));"cols"===r&&(o=o.split(",")),e[r]=o}),e},s=/(wss?):\/\/([^/:?&]+)(?::(\d+))?/,l=/\/app\/([^?&#:]+)/,c=/(wss?):\/\/([^/:?&]+)(?::(\d+))?\/?([a-z0-9-._~]+)?/,u=()=>fetch("/info").then(e=>e.json()).then(async e=>{let t=e,n=i();if(n.engine_url?t={...t,...(e=>{let t,n,r=s.exec(e);if(!r)return{engineUrl:e,invalid:!0};let o=e.trim(),a=o,i=l.exec(o);i&&([,t]=i,a=o.substring(0,i.index),n=o);let u=c.exec(a);return u?{engine:{secure:"wss"===r[1],host:r[2],port:r[3]||void 0,prefix:u[4]||void 0,appId:t},engineUrl:a,appUrl:n}:{engineUrl:e,invalid:!0}})(n.engine_url)}:n.app&&(t={...t,engine:{...t.engine,appId:n.app}}),n["qlik-web-integration-id"]&&(t.webIntegrationId=n["qlik-web-integration-id"]),n["qlik-client-id"]&&(t.clientId=n["qlik-client-id"]),t.invalid)return t;let r=`${t.engine.secure?"https":"http"}://${t.engine.host}`;return{...t,rootPath:r}}),d=e=>{let{clientId:t,webIntegrationId:n,engine:{host:r,port:o,secure:a}}=e;return n?{authType:"cookie",webIntegrationId:n,host:r}:t?{authType:"oauth2",clientId:t,host:r,redirectUri:`${window.location.origin}/auth/login/callback`,accessTokenStorage:"session"}:{authType:"noauth",host:`${!1!==a?"https":"http"}://${r}${o?`:${o}`:""}`}};var f=n("g"),p=n.t(f,2),m=n("r"),g=n.t(m,2),h=n("X"),y=n.t(h,2),v=n("K");let w={"@nebula.js/stardust":r,react:p,"react-dom":g,"react-dom/client":y,"react/jsx-runtime":n.t(v,2)},b=/^[A-Za-z_$][\w$]*$/,j=!1,q=async(e,t)=>{let n;return(()=>{if(j)return;j=!0,globalThis.nebulaShared=w;let e={};Object.entries(w).forEach(t=>{let n,[r,o]=t;e[r]=URL.createObjectURL(new Blob([(n=Object.keys(o).filter(e=>"default"!==e&&b.test(e)).map(e=>`export const ${e} = shared[${JSON.stringify(e)}];`),[`const shared = globalThis.nebulaShared[${JSON.stringify(r)}];`,"export default shared.default !== undefined ? shared.default : shared;",...n].join("\n"))],{type:"text/javascript"}))});let t=document.createElement("script");t.type="importmap",t.textContent=JSON.stringify({imports:e}),document.head.appendChild(t)})(),(n=await import(`${t}${t.includes("?")?"&":"?"}t=${Date.now()}`))&&"object"==typeof n&&"default"in n?n.default:n},I={};function O(e){let t=()=>{q(e.supernova.name,e.supernova.url||e.supernova.module).then(t=>{var n;window[e.supernova.name]=t,I[n=e.supernova.name]&&I[n].forEach(e=>e())})};return(e.sock.port&&(new WebSocket(`ws://localhost:${e.sock.port}`).onmessage=()=>{t()}),t(),e.types)?Promise.all(e.types.map(e=>q(e.name,e.url).then(t=>{window[e.name]=t}))):Promise.resolve()}window.onHotChange=(e,t)=>(I[e]||(I[e]=[]),I[e].push(t),window[e]&&t(),()=>{let n=I[e].indexOf(t);I[e].splice(n,1)});var L=function(){return{getObjectApi:()=>Promise.resolve({id:`sessapi - ${+Date.now()}`})}},$=n("Hs"),k=n.n($);let x=globalThis.crypto||{getRandomValues:()=>123456};var E=function(e){return t=>{let n=k()({},t);n.qInfo=n.qInfo||{},n.qInfo.qId=n.qInfo.qId||`mock-${"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^x.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}`;let r=n._mock,o=n;return r&&(delete n._mock,o=k()({},n,r)),Promise.resolve({on:()=>{},once:()=>{},getLayout:()=>Promise.resolve(o),getProperties:()=>Promise.resolve(n),getEffectiveProperties:()=>Promise.resolve(n),removeListener:()=>{},id:n.qInfo.qId,properties:n,session:e})}};let S=function(e){let{args:t=[],defaultValue:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"function"==typeof e?e(...t):void 0!==e?e:n},_=function(e){let{defaultValue:t,async:n=!0,delay:r=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(){for(var o=arguments.length,a=Array(o),i=0;i<o;i++)a[i]=arguments[i];let s=S(e,{defaultValue:t,args:a});return n?new Promise(e=>{setTimeout(()=>e(s),r)}):s}},P=["addListener","emit","listeners","on","once","removeAllListeners","removeListener","setMaxListerners"];function A(e){let t=S(e.getLayout);return t.qInfo&&t.qInfo.qId}function C(e){if(!e.getLayout)throw Error('Generic object is missing "getLayout"');if(!A(e))throw Error('Generic object is missing "qId" for path "getLayout().qInfo.qId"')}var T=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Array.isArray(e)||0===e.length)return()=>{throw Error('No "genericObjects" specified')};e.forEach(C);let n=e.reduce((e,n)=>({...e,...function(e,t){let n=A(e),{delay:r}=t,{id:o,session:a,...i}=e;if(o&&n&&o!==n)throw Error(`Generic object has multiple IDs, qInfo.qId: ${n}, id: ${o}`);let s={id:n=n||o||`object - ${+Date.now()}`,session:S(a,{defaultValue:!0}),on:()=>{},once:()=>{},removeListener:()=>{},...Object.entries(i).reduce((e,t)=>{let[n,o]=t;return{...e,[n]:_(o,{async:!P.includes(n),delay:r})}},{}),genericType:e.type};return{[n]:s}}(n,t)}),{});return async e=>Promise.resolve(n[e])},N=function(e){return()=>Promise.resolve({id:"app-layout",qLocaleInfo:e?.appLocaleInfo})},z={fromGenericObjects(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new L,r=new E(n),o=new T(e,t),a=new N(t);return Promise.resolve({...t.appMethods||{},id:`app - ${+Date.now()}`,session:n,createSessionObject:r,destroySessionObject:async()=>{},getObject:o,getAppLayout:a,getListObject:async e=>o(e.qInfo?.qId)})}(e,t)}};let D=e=>new Promise(t=>{let n=()=>{e.querySelector(".njs-viz")?requestAnimationFrame(n):t()};requestAnimationFrame(n)}),M=(e,t)=>new Promise(n=>{let r=()=>{let o=e.querySelector(".njs-viz[data-render-count]");o&&parseInt(o.getAttribute("data-render-count"),10)>t?n():requestAnimationFrame(r)};requestAnimationFrame(r)});window.addEventListener("load",function(){let e=i();e.fixture?(async e=>{let t=document.querySelector("#chart-container"),n=e.rerenders?parseInt(e.rerenders,10):0,o=await u(),a=await async function(e){let t=window.serveFixtures.get(e);if(!t)throw Error(`Unable to load fixture ${e}`);let n=t();return!function(){let{genericObjects:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||0===e.length)return;if(!e[0]||!e[0].getLayout)throw Error("Invalid getLayout of generic object");let{getLayout:t}=e[0],n="function"==typeof t?t():t;if(!n.visualization)throw Error('No "visualization" specified on generic object on path "getLayout"');if(!n.qInfo||!n.qInfo.qId)throw Error('No "qId" specified on generic object on path "getLayout.qInfo')}(n),n}(e.fixture),{type:i,load:s,genericObjects:l,instanceConfig:c,snConfig:d,enigmaMockerOptions:f}=await async function(e){let{params:t,fixture:n,serverInfo:r}=e,o=k()(!0,{},(e=>{let{themes:t=[],supernova:n={},flags:r,anything:o}=e,a={instanceConfig:{themes:t.map(e=>({id:e,load:async()=>(await fetch(`/theme/${e}`)).json()})),context:{constraints:{}},flags:r,anything:o}};return n.name&&(a.type=n.name),(n.name||n.url)&&(a.load=async()=>q(n.name,n.url||n.module)),a})(r),n,{instanceConfig:{context:{theme:t.theme,language:t.language,keyboardNavigation:t.keyboardNavigation}}});o.genericObjects=o.genericObjects||[(e=>{let{type:t}=e;return{getLayout:{qInfo:{qId:+Date.now()},visualization:t}}})({type:o.type})];if(!o.type)throw Error('No visualization type. Specify it either in fixture in the property "type" or as "--type" to Nebula serve.');if(!o.load)throw Error('Unable to load the visualization. Specify it in option "--entry" to Nebula serve.');return o}({fixture:a,params:e,serverInfo:o}),p=await z.fromGenericObjects(l,f),m=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{getLayout:t}=e[0];return("function"==typeof t?t():t).qInfo.qId}(l),g=null;if(e.simulatedMemLeakKB){let n=Math.round(1024*parseFloat(e.simulatedMemLeakKB)/48);g=await p.getObject(m);let r={};g.on=(e,t)=>{(r[e]=r[e]||[]).push(t)},g.once=(e,t)=>{let n=()=>{t(),g.removeListener(e,n)};g.on(e,n)},g.removeListener=(e,t)=>{r[e]&&(r[e]=r[e].filter(e=>e!==t))},g.emit=e=>{(r[e]||[]).forEach(e=>e())},t.leakStore=[];let o=g.getLayout.bind(g);g.getLayout=async()=>(t.leakStore.push(Array(n).fill(null).map((e,t)=>({j:t,v:Math.random()}))),o())}let h=o&&o.types||[],y=(0,r.embed)(p,{types:[{name:i,load:s},...h.map(e=>({name:e.name,load:async()=>q(e.name,e.url)}))],...c}),v=await y.render({type:i,element:t,id:m,...d});(d?.events||[]).forEach(e=>{v.addListener(e,e=>{document.querySelector("#events").innerHTML=e})});let w=v;n>0&&(await M(t,0),await (async e=>{for(let n=0;n<e;n++){if(await w.destroy(),await D(t),w=await y.render({type:i,element:t,id:m,...d}),await M(t,0),g){let e=parseInt(t.querySelector(".njs-viz[data-render-count]").getAttribute("data-render-count"),10);g.emit("changed"),await M(t,e)}t.setAttribute("data-render-count",String(n+1))}})(n))})(e):e.snapshot?async function(){let e=await u(),{themes:t,supernova:n}=e;await O(e);let a=document.querySelector("#chart-container");a.classList.toggle("full",!0);let s=r.embed.createConfiguration({hostConfig:d(e),themes:t?t.map(e=>({key:e,load:async()=>(await fetch(`/theme/${e}`)).json()})):void 0,types:[{load:e=>Promise.resolve(window[e.name]),name:n.name}],context:{constraints:{passive:!0,active:!0}}});window.onHotChange(n.name,async()=>{o({embed:s,element:a,snapshot:i().snapshot})})}():async function(){let e,t,n=await u();await O(n),n.engine.appId||(location.href=location.origin);let o=i(),s=await (async e=>{try{let t=await u();return(0,a.qs)({appId:e,hostConfig:d(t)}).getDoc()}catch(e){throw Error("Failed to open app!",{cause:e})}})(n.engine.appId),l=await (async e=>{let{app:t,supernova:{name:n},themes:o,theme:a,language:i,hostConfig:s}=e;return r.embed.createConfiguration({hostConfig:s,themes:o?o.map(e=>({id:e,load:async()=>(await fetch(`/theme/${e}`)).json()})):void 0,context:{theme:a,language:i}})(t,{load:e=>Promise.resolve(window[e.name]),types:[{name:n}]})})({app:s,...n,hostConfig:d(n),theme:o.theme,language:o.language}),c=document.querySelector("#chart-container");if(o["render-config"]){let t=await (await fetch(`/render-config/${o["render-config"]}`)).json();e={...t,...o.object?{id:o.object}:t.id?{id:t.id}:{},type:t.type?t.type:n.supernova.name,fields:o.cols?o.cols:t.fields,element:c}}else e=o.object?{id:o.object,element:c}:{type:n.supernova.name,fields:o.cols||[],element:c};window.onHotChange(n.supernova.name,async()=>{t&&(t.close(),l.__DO_NOT_USE__.types.clearFromCache(n.supernova.name),l.__DO_NOT_USE__.types.register(n.supernova)),t=await (async()=>{await l.render(e)})()})}()})}},l={};function c(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}};return s[e].call(n.exports,n,n.exports,c),n.exports}c.m=s,c.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return c.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(n,r){if(1&r&&(n=this(n)),8&r||"object"==typeof n&&n&&(4&r&&n.__esModule||16&r&&"function"==typeof n.then))return n;var o=Object.create(null);c.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&n;("object"==typeof i||"function"==typeof i)&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>{a[e]=()=>n[e]});return a.default=()=>n,c.d(o,a),o},c.d=(e,t,n)=>{var r=(t,n)=>{for(var r in t)c.o(t,r)&&!c.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,[n]:t[r]})};r(t,"get"),r(n,"value")},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce((t,n)=>(c.f[n](e,t),t),[])),c.u=e=>"async/"+e+".js",c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},c.l=function(e,t,r,o){if(n[e])return void n[e].push(t);if(void 0!==r)for(var a,i,s=document.getElementsByTagName("script"),l=0;l<s.length;l++){var u=s[l];if(u.getAttribute("src")==e){a=u;break}}a||(i=!0,(a=document.createElement("script")).timeout=120,c.nc&&a.setAttribute("nonce",c.nc),a.src=e),n[e]=[t];var d=function(t,r){a.onerror=a.onload=null,clearTimeout(f);var o=n[e];if(delete n[e],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(function(e){return e(r)}),t)return t(r)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),i&&document.head.appendChild(a)},c.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r=[],c.O=(e,t,n,o)=>{if(t){o=o||0;for(var a=r.length;a>0&&r[a-1][2]>o;a--)r[a]=r[a-1];r[a]=[t,n,o];return}for(var i=1/0,a=0;a<r.length;a++){for(var[t,n,o]=r[a],s=!0,l=0;l<t.length;l++)(!1&o||i>=o)&&Object.keys(c.O).every(e=>c.O[e](t[l]))?t.splice(l--,1):(s=!1,o<i&&(i=o));if(s){r.splice(a--,1);var u=n();void 0!==u&&(e=u)}}return e},c.p="/",o={"9b":0},c.f.j=function(e,t){var n=c.o(o,e)?o[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((t,r)=>n=o[e]=[t,r]);t.push(n[2]=r);var a=c.p+c.u(e),i=Error();c.l(a,function(t){if(c.o(o,e)&&(0!==(n=o[e])&&(o[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+a+")",i.name="ChunkLoadError",i.type=r,i.request=a,n[1](i)}},"chunk-"+e,e)}},c.O.j=e=>0===o[e],a=(e,t)=>{var n,r,[a,i,s]=t,l=0;if(a.some(e=>0!==o[e])){for(n in i)c.o(i,n)&&(c.m[n]=i[n]);if(s)var u=s(c)}for(e&&e(t);l<a.length;l++)r=a[l],c.o(o,r)&&o[r]&&o[r][0](),o[r]=0;return c.O(u)},(i=self.rspackChunk=self.rspackChunk||[]).forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i));var u=c.O(void 0,["g","b","q"],()=>c("R"));u=c.O(u)})();
2
2
  //# sourceMappingURL=eRender.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eRender.js","sources":["webpack://webpack/runtime/create_fake_namespace_object","webpack://webpack/runtime/load_script","webpack://webpack/runtime/on_chunk_loaded","webpack://webpack/runtime/jsonp_chunk_loading","../../../apis/snapshooter/src/renderer.js","../web/connect.js","../web/hot.js","../../../apis/enigma-mocker/src/mocks/session-mock.js","../../../apis/enigma-mocker/src/mocks/create-session-object-mock.js","../../../apis/enigma-mocker/src/prop.js","../../../apis/enigma-mocker/src/mocks/get-object-mock.js","../../../apis/enigma-mocker/src/mocks/get-app-layout-mock.js","../../../apis/enigma-mocker/src/index.js","../../../apis/enigma-mocker/src/from-generic-objects.js","../web/render-fixture.js","../web/eRender.js","webpack://webpack/runtime/compat_get_default_export","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/ensure_chunk","webpack://webpack/runtime/get javascript chunk filename","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","webpack://webpack/runtime/public_path"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\n\n\n// loadScript function to load a script via script tag\n__webpack_require__.l = function (url, done, key, chunkId) {\n\tif (inProgress[url]) {\n\t\tinProgress[url].push(done);\n\t\treturn;\n\t}\n\tvar script, needAttach;\n\tif (key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor (var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif (s.getAttribute(\"src\") == url) {\n\t\t\t\tscript = s;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\nscript.timeout = 120;\nif (__webpack_require__.nc) {\n script.setAttribute(\"nonce\", __webpack_require__.nc);\n}\n\n\n\nscript.src = url;\n\n\n\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function (prev, event) {\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns &&\n\t\t\tdoneFns.forEach(function (fn) {\n\t\t\t\treturn fn(event);\n\t\t\t});\n\t\tif (prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(\n\t\tonScriptComplete.bind(null, undefined, {\n\t\t\ttype: 'timeout',\n\t\t\ttarget: script\n\t\t}),\n\t\t120000\n\t);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","\n // object to store loaded and loading chunks\n // undefined = chunk not loaded, null = chunk preloaded/prefetched\n // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\n var jsonpInstalledChunks = {\"9b\": 0,};\n \n __webpack_require__.f.j = function (chunkId, promises) {\n // JSONP chunk loading for javascript\nvar installedChunkData = __webpack_require__.o(jsonpInstalledChunks, chunkId)\n\t? jsonpInstalledChunks[chunkId]\n\t: undefined;\nif (installedChunkData !== 0) {\n\t// 0 means \"already installed\".\n\n\t// a Promise means \"currently loading\".\n\tif (installedChunkData) {\n\t\tpromises.push(installedChunkData[2]);\n\t} else {\n\t\tif (true) {\n\t\t\t// setup Promise in chunk cache\n\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = jsonpInstalledChunks[chunkId] = [resolve, reject]));\n\t\t\tpromises.push((installedChunkData[2] = promise));\n\n\t\t\t// start chunk loading\n\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\tvar error = new Error();\n\t\t\tvar loadingEnded = function (event) {\n\t\t\t\tif (__webpack_require__.o(jsonpInstalledChunks, chunkId)) {\n\t\t\t\t\tinstalledChunkData = jsonpInstalledChunks[chunkId];\n\t\t\t\t\tif (installedChunkData !== 0) jsonpInstalledChunks[chunkId] = undefined;\n\t\t\t\t\tif (installedChunkData) {\n\t\t\t\t\t\tvar errorType =\n\t\t\t\t\t\t\tevent && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\terror.message =\n\t\t\t\t\t\t\t'Loading chunk ' +\n\t\t\t\t\t\t\tchunkId +\n\t\t\t\t\t\t\t' failed.\\n(' +\n\t\t\t\t\t\t\terrorType +\n\t\t\t\t\t\t\t': ' +\n\t\t\t\t\t\t\trealSrc +\n\t\t\t\t\t\t\t')';\n\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t} \n\t}\n}\n\n }\n __webpack_require__.O.j = (chunkId) => (jsonpInstalledChunks[chunkId] === 0);\n// install a JSONP callback for chunk loading\nvar __rspack_jsonp = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif (chunkIds.some((id) => (jsonpInstalledChunks[id] !== 0))) {\n\t\tfor (moduleId in moreModules) {\n\t\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif (runtime) var result = runtime(__webpack_require__);\n\t}\n\tif (parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor (; i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif (\n\t\t\t__webpack_require__.o(jsonpInstalledChunks, chunkId) &&\n\t\t\tjsonpInstalledChunks[chunkId]\n\t\t) {\n\t\t\tjsonpInstalledChunks[chunkId][0]();\n\t\t}\n\t\tjsonpInstalledChunks[chunkId] = 0;\n\t}\n\t\n\treturn __webpack_require__.O(result);\n\t\n};\n\nvar jsonpChunkLoadingGlobal = self[\"rspackChunk\"] = self[\"rspackChunk\"] || [];\njsonpChunkLoadingGlobal.forEach(__rspack_jsonp.bind(null, 0));\njsonpChunkLoadingGlobal.push = __rspack_jsonp.bind(null, jsonpChunkLoadingGlobal.push.bind(jsonpChunkLoadingGlobal));\n","/* eslint no-param-reassign: 0 */\nasync function renderSnapshot({ embed, element, snapshot: key }) {\n let snapshot = {};\n const renderError = (e) => {\n element.innerHTML = `<p>${e.message}</p>`;\n element.setAttribute('data-njs-error', e.message);\n };\n try {\n snapshot = typeof key === 'string' ? await embed.config.snapshot.get(key) : key;\n } catch (e) {\n renderError(e);\n throw e;\n }\n\n const {\n meta: { theme, language, appLayout },\n layout,\n } = snapshot;\n\n const objectModel = (props) => ({\n id: `${+new Date()}-object`,\n async getLayout() {\n return props;\n },\n on() {},\n once() {},\n });\n\n const app = {\n id: `${+new Date()}-app`,\n createSessionObject: async (props) => objectModel(props),\n async getObject(id) {\n if (id === layout.qInfo.qId) {\n return objectModel(layout);\n }\n return Promise.reject(new Error(`C\u001dould not find an object with id: ${id}`));\n },\n getAppLayout: async () => appLayout || {},\n };\n\n const nebbie = await embed(app, {\n context: {\n theme,\n language,\n // do NOT override constraints to allow the passed in embedding config to control it instead,\n // however, since it's a snapshot the 'select' constraint will always be set to true from\n // the embed internals\n // constraints: {}\n },\n });\n\n try {\n await nebbie.render(\n layout.qInfo && layout.qInfo.qId\n ? {\n id: layout.qInfo.qId,\n element,\n }\n : {\n type: layout.visualization,\n element,\n properties: layout,\n }\n );\n } catch (e) {\n renderError(e || { message: 'Failed to render visualization.' });\n throw e;\n }\n}\n\nexport default renderSnapshot;\n","import enigma from 'enigma.js';\nimport qixSchema from 'enigma.js/schemas/12.2015.0.json';\nimport auth from '@qlik/api/auth';\nimport { getItems } from '@qlik/api/items';\nimport { openAppSession } from '@qlik/api/qix';\nimport getCsrfToken from './utils/getCsrfToken';\n\nconst getParams = () => {\n const opts = {};\n window.location.search\n .substring(1)\n .split('&')\n .forEach((pair) => {\n const idx = pair.indexOf('=');\n const name = pair.substr(0, idx);\n let value = decodeURIComponent(pair.substring(idx + 1));\n if (name === 'cols') {\n value = value.split(',');\n }\n opts[name] = value;\n });\n return opts;\n};\n\n// These URLS are fully constructed later using the sdk\n// QCS: wss://<tenant-url>.<region>.qlikcloud.com/app/<app-GUID>\n// QSEoW: wss://<host>/<virtual-proxy-prefix>/app/<app-GUID>\n\n// matches the wss://<host>/<virtual-proxy-prefix>/\nconst urlRegex = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?/;\nconst appRegex = /\\/app\\/([^?&#:]+)/;\n// The prefix must be unique for all virtual proxies used by the same proxy service,\n// as this differentiates the virtual proxies and will be a part of the URL (https://[node]/[prefix]/).\n// Valid characters for prefix are \"a-z\", \"0-9\", \"-\", \".\", \"_\", \"~\".\nconst prefixRegx = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?\\/?([a-z0-9-._~]+)?/;\n\nconst parseEngineURL = (url) => {\n const match = urlRegex.exec(url);\n if (!match) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n\n let appId;\n const trimmedUrl = url.trim();\n let engineUrl = trimmedUrl;\n let appUrl;\n\n const appMatch = appRegex.exec(trimmedUrl);\n\n if (appMatch) {\n [, appId] = appMatch;\n engineUrl = trimmedUrl.substring(0, appMatch.index);\n appUrl = trimmedUrl;\n }\n\n const engineMatch = prefixRegx.exec(engineUrl);\n\n if (!engineMatch) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n return {\n engine: {\n secure: match[1] === 'wss',\n host: match[2],\n port: match[3] || undefined,\n prefix: engineMatch[4] || undefined,\n appId,\n },\n engineUrl,\n appUrl,\n };\n};\n\nconst getConnectionInfo = () =>\n fetch('/info')\n .then((response) => response.json())\n .then(async (n) => {\n let info = n;\n const params = getParams();\n if (params.engine_url) {\n info = {\n ...info,\n // TODO:\n // instead of calling \"/info\" and then parsing url inside of `getConnectionInfo()`\n // we can have a hook which listens on location.search and provides this information for us\n ...parseEngineURL(params.engine_url),\n };\n } else if (params.app) {\n info = {\n ...info,\n engine: {\n ...info.engine,\n appId: params.app,\n },\n };\n }\n if (params['qlik-web-integration-id']) {\n info.webIntegrationId = params['qlik-web-integration-id'];\n }\n if (params['qlik-client-id']) {\n info.clientId = params['qlik-client-id'];\n }\n if (info.invalid) {\n return info;\n }\n const rootPath = `${info.engine.secure ? 'https' : 'http'}://${info.engine.host}`;\n return {\n ...info,\n rootPath,\n };\n });\n\nconst setHostConfig = ({ webIntegrationId, clientId, host }) => {\n if (webIntegrationId) {\n auth.setDefaultHostConfig({ authType: 'cookie', webIntegrationId, host });\n } else if (clientId) {\n auth.setDefaultHostConfig({\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n });\n }\n};\n\nconst buildDocList = async () => {\n try {\n const response = await getItems({ resourceType: 'app', limit: 30, sort: '-updatedAt' });\n const { data = [] } = response.data;\n return data.map((d) => ({ qDocId: d.resourceId, qTitle: d.name }));\n } catch (error) {\n throw new Error('Failed to fetch app list', { cause: error });\n }\n};\n\nconst connect = async () => {\n try {\n const {\n clientId,\n webIntegrationId,\n engine: engineConfig,\n engine: { host },\n } = await getConnectionInfo();\n\n if (webIntegrationId) {\n setHostConfig({ webIntegrationId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n if (clientId) {\n setHostConfig({ clientId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n const csrfToken = await getCsrfToken(\n `https://${engineConfig.host}${engineConfig.prefix ? `/${engineConfig.prefix}` : ''}`\n );\n const scheme = engineConfig.secure !== false ? 'wss' : 'ws';\n const port = engineConfig.port ? `:${engineConfig.port}` : '';\n const prefix = engineConfig.prefix ? `/${engineConfig.prefix}` : '';\n const url = `${scheme}://${engineConfig.host}${port}${prefix}?qlik-csrf-token=${csrfToken}`;\n\n return enigma.create({ schema: qixSchema, url }).open();\n } catch (error) {\n throw new Error('Failed to return enigma instance', { cause: error });\n }\n};\n\n// Builds a qlik-api compatible host config from the connection info\nconst getHostConfig = ({ clientId, webIntegrationId, engine: { host, port, secure } }) => {\n if (webIntegrationId) {\n return { authType: 'cookie', webIntegrationId, host };\n }\n\n if (clientId) {\n return {\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n };\n }\n\n // Local / no-auth engine (e.g. qlik-core, docker engine)\n const scheme = secure !== false ? 'https' : 'http';\n return { authType: 'noauth', host: `${scheme}://${host}${port ? `:${port}` : ''}` };\n};\n\nconst openApp = async (id) => {\n try {\n const info = await getConnectionInfo();\n return openAppSession({ appId: id, hostConfig: getHostConfig(info) }).getDoc();\n } catch (error) {\n throw new Error('Failed to open app!', { cause: error });\n }\n};\n\nexport { connect, openApp, getParams, getConnectionInfo, getHostConfig, setHostConfig, parseEngineURL };\n","import * as stardust from '@nebula.js/stardust';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport * as jsxRuntime from 'react/jsx-runtime';\n\n// The modules that a visualization imports by name are the ones of this page, so there is one of each. The names are\n// the ones in lib/provided-modules.js, which the visualization is built to leave out.\nexport const SHARED = {\n '@nebula.js/stardust': stardust,\n react: React,\n 'react-dom': ReactDOM,\n 'react-dom/client': ReactDOMClient,\n 'react/jsx-runtime': jsxRuntime,\n};\n\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\n\n/**\n * The source of a module that has what an other module has, so that a visualization can import it by its name.\n */\nexport const shimSource = (name, ns) => {\n const exported = Object.keys(ns)\n .filter((key) => key !== 'default' && IDENTIFIER.test(key))\n .map((key) => `export const ${key} = shared[${JSON.stringify(key)}];`);\n return [\n `const shared = globalThis.nebulaShared[${JSON.stringify(name)}];`,\n 'export default shared.default !== undefined ? shared.default : shared;',\n ...exported,\n ].join('\\n');\n};\n\nlet importMapAdded = false;\n\n// A native import map has to be there before the first import of a module that imports by a name\nconst addImportMap = () => {\n if (importMapAdded) {\n return;\n }\n importMapAdded = true;\n globalThis.nebulaShared = SHARED;\n const imports = {};\n Object.entries(SHARED).forEach(([name, ns]) => {\n imports[name] = URL.createObjectURL(new Blob([shimSource(name, ns)], { type: 'text/javascript' }));\n });\n const script = document.createElement('script');\n script.type = 'importmap';\n script.textContent = JSON.stringify({ imports });\n document.head.appendChild(script);\n};\n\n// the visualization is the default export of a module\nconst visualization = (m) => (m && typeof m === 'object' && 'default' in m ? m.default : m);\n\nexport const getModule = async (name, url) => {\n addImportMap();\n const src = url || `/pkg/${encodeURIComponent(name)}`;\n // a new url for every load, since a module that was imported is never loaded again\n const mod = await import(/* webpackIgnore: true */ `${src}${src.includes('?') ? '&' : '?'}t=${Date.now()}`);\n return visualization(mod);\n};\n\nconst hotListeners = {};\n\nconst lightItUp = (name) => {\n if (!hotListeners[name]) {\n return;\n }\n hotListeners[name].forEach((fn) => fn());\n};\n\nconst onHotChange = (name, fn) => {\n if (!hotListeners[name]) {\n hotListeners[name] = [];\n }\n\n hotListeners[name].push(fn);\n if (window[name]) {\n fn();\n }\n return () => {\n // removeListener\n const idx = hotListeners[name].indexOf(fn);\n hotListeners[name].splice(idx, 1);\n };\n};\n\nwindow.onHotChange = onHotChange;\n\nexport default function initiateWatch(info) {\n const update = () => {\n getModule(info.supernova.name, info.supernova.url).then((mo) => {\n window[info.supernova.name] = mo;\n lightItUp(info.supernova.name);\n });\n };\n\n if (info.sock.port) {\n const ws = new WebSocket(`ws://localhost:${info.sock.port}`);\n ws.onmessage = () => {\n update();\n };\n }\n update();\n if (info.types) {\n const proms = info.types.map((t) =>\n getModule(t.name, t.url).then((mo) => {\n window[t.name] = mo;\n })\n );\n return Promise.all(proms);\n }\n return Promise.resolve();\n}\n","function SessionMock() {\n return {\n getObjectApi() {\n return Promise.resolve({\n id: `sessapi - ${+Date.now()}`,\n });\n },\n };\n}\n\nexport default SessionMock;\n","/* eslint-disable no-underscore-dangle */\nimport extend from 'extend';\n\n// To cover test\n\nconst crt = globalThis.crypto || { getRandomValues: () => 123456 };\n\n// https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid\n// Not using crypto.randomUUID due to missing safari support < 15\nfunction uuidv4() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (c ^ (crt.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n );\n}\n\nfunction CreateSessionObjectMock(session) {\n return (props) => {\n const properties = extend({}, props);\n properties.qInfo = properties.qInfo || {};\n properties.qInfo.qId = properties.qInfo.qId || `mock-${uuidv4()}`;\n\n const mockedInclusions = properties._mock;\n let layout = properties;\n\n if (mockedInclusions) {\n delete properties._mock;\n layout = extend({}, properties, mockedInclusions);\n }\n return Promise.resolve({\n on: () => {},\n once: () => {},\n getLayout: () => Promise.resolve(layout),\n getProperties: () => Promise.resolve(properties),\n getEffectiveProperties: () => Promise.resolve(properties),\n removeListener: () => {},\n id: properties.qInfo.qId,\n properties,\n session,\n });\n };\n}\n\nexport default CreateSessionObjectMock;\n","/**\n * Get value for a fixture property.\n *\n * The value is either static (e.g. pass a string / object / similar) or dynamic when passing a function.\n *\n * It falls back to the default value in case the fixture has no value specified.\n *\n * Example\n * ```js\n * const fixture = {\n * id: 'grid-chart-1',\n * };\n * const app = {\n * id: getValue(fixture.id, { defaultValue: 'object-id-${+Date.now()}'}),\n * }\n * ```\n * @type function\n * @ignore\n * @param {any} prop Fixture property. Either a fixed value (string / object / boolean / ...) or a function invoked when the value is needed.\n * @param {object} options Options.\n * @param {Array<any>} options.args Arguments used to evaluate the property value.\n * @param {any} options.defaultValue Default value in case not value is defined in fixture.\n * @returns {any} The property value.\n */\nexport const getPropValue = (prop, { args = [], defaultValue } = {}) => {\n if (typeof prop === 'function') {\n return prop(...args);\n }\n if (prop !== undefined) {\n return prop;\n }\n return defaultValue;\n};\n\n/**\n * Get function for a fixture property.\n *\n * When the returned function is invoked it resolves the value - using `defaultValue` as fallback - and returns it. The value is returned as a promise if `option.usePromise` is `true`.\n *\n * Example:\n * ```js\n * const fixture = {\n * getHyperCubeData(path, page) {\n * return [ ... ];\n * }\n * }\n * const app = {\n * getHyperCubeData: getPropFn(fixture.getHyperCubeData, { defaultValue: [], usePromise: true })\n * };\n * ```\n * @type function\n * @ignore\n * @param {any} prop Fixture property. Either a fixed value (string / object / boolean / ...) or a function invoked when the value is needed.\n * @param {object} options Options.\n * @param {any} options.defaultValue Default value in case not value is defined in fixture.\n * @param {boolean} options.async When `true` the returns value is wrapped in a promise, otherwise the value is directly returned.\n * @param {number} options.number Delay before value is returned.\n * @returns {function} A fixture property function\n */\nexport const getPropFn =\n (prop, { defaultValue, async = true, delay = 0 } = {}) =>\n (...args) => {\n const value = getPropValue(prop, { defaultValue, args });\n return async\n ? new Promise((resolve) => {\n setTimeout(() => resolve(value), delay);\n })\n : value;\n };\n","import { getPropValue, getPropFn } from '../prop';\n\n/**\n * Properties on `getObject()` operating synchronously.\n * @ignore\n * @type Array\n */\nconst PROPS_SYNC = [\n 'addListener',\n 'emit',\n 'listeners',\n 'on',\n 'once',\n 'removeAllListeners',\n 'removeListener',\n 'setMaxListerners',\n];\n\n/**\n * Is property operating asynchrously.\n * @param {string} name Property name.\n * @ignore\n * @returns `true` if property is operating asynchrously, otherwise `false`.\n */\nfunction isPropAsync(name) {\n return !PROPS_SYNC.includes(name);\n}\n\n/**\n * Get `qId` for visualization.\n * @param {object} genericObject Generic object describing behaviour of mock\n * @ignore\n * @returns The `qId`, undefined if not present\n */\nfunction getQId(genericObject) {\n const layout = getPropValue(genericObject.getLayout);\n return layout.qInfo && layout.qInfo.qId;\n}\n\n/**\n * Create a mock of a generic object. Mandatory properties are added, functions returns async values where applicable etc.\n * @param {object} genericObject Generic object describing behaviour of mock\n * @param {EnigmaMockerOptions} options Options.\n * @ignore\n * @returns The mocked object\n */\nfunction createMock(genericObject, options) {\n let qId = getQId(genericObject);\n const { delay } = options;\n const { id, session, ...props } = genericObject;\n\n if (id && qId && id !== qId) {\n throw new Error(`Generic object has multiple IDs, qInfo.qId: ${qId}, id: ${id}`);\n }\n\n qId = qId || id || `object - ${+Date.now()}`;\n\n const mock = {\n id: qId,\n session: getPropValue(session, { defaultValue: true }),\n on: () => {},\n once: () => {},\n removeListener: () => {},\n ...Object.entries(props).reduce(\n (fns, [name, value]) => ({\n ...fns,\n [name]: getPropFn(value, { async: isPropAsync(name), delay }),\n }),\n {}\n ),\n genericType: genericObject.type,\n };\n return { [qId]: mock };\n}\n\n/**\n * Create mocked objects from list of generic objects.\n * @param {Array<object>} genericObjects Generic objects describing behaviour of mock\n * @param {EnigmaMockerOptions} options options\n * @ignore\n * @returns Object with mocks where key is `qId` and value is the mocked object.\n */\nfunction createMocks(genericObjects, options) {\n return genericObjects.reduce(\n (mocks, genericObject) => ({\n ...mocks,\n ...createMock(genericObject, options),\n }),\n {}\n );\n}\n\n/**\n * Validates if mandatory information is available.\n * @param {object} genericObject Generic object to validate\n * @ignore\n * @throws {}\n * <ul>\n * <li>{Error} If getLayout is missing</li>\n * <li>{Error} If getLayout.qInfo.qId is missing</li>\n * </ul>\n */\nfunction validate(genericObject) {\n if (!genericObject.getLayout) {\n throw new Error('Generic object is missing \"getLayout\"');\n }\n const qId = getQId(genericObject);\n if (!qId) {\n throw new Error('Generic object is missing \"qId\" for path \"getLayout().qInfo.qId\"');\n }\n}\n\n/**\n * Creates mock of `getObject(id)` based on an array of generic objects.\n * @param {Array<object>} genericObjects Generic objects.\n * @param {EnigmaMockerOptions} options Options.\n * @ignore\n * @returns Function to retrieve the mocked generic object with the corresponding id.\n */\nfunction GetObjectMock(genericObjects = [], options = {}) {\n if (!Array.isArray(genericObjects) || genericObjects.length === 0) {\n return () => {\n throw new Error('No \"genericObjects\" specified');\n };\n }\n\n genericObjects.forEach(validate);\n const mocks = createMocks(genericObjects, options);\n\n return async (id) => Promise.resolve(mocks[id]);\n}\n\nexport default GetObjectMock;\n","function GetAppLayoutMock(options) {\n return () => Promise.resolve({ id: 'app-layout', qLocaleInfo: options?.appLocaleInfo });\n}\n\nexport default GetAppLayoutMock;\n","import fGO from './from-generic-objects';\n\n/**\n * @interface EnigmaMockerOptions\n * @property {object=} appMethods Object with methods to add to the mocked app.\n * @property {number} delay Simulate delay (in ms) for calls in enigma-mocker.\n * @description Options for Enigma Mocker\n * @experimental\n * @since 3.0.0\n */\n\n/**\n * @entry\n * @namespace\n * @alias EnigmaMocker\n * @description Mocks Engima app functionality for demo and testing purposes.\n */\nconst mocker = /** @lends EnigmaMocker# */ {\n /**\n * Mocks Engima app functionality. It accepts one / many generic objects as input argument and returns the mocked Enigma app. Each generic object represents one visualisation and specifies how it behaves. For example, what layout to use the data to present.\n *\n * The generic object is represented with a Javascript object with a number of properties. The name of the property correlates to the name in the Enigma model for `app.getObject(id)`. For example, the property `getLayout` in the generic object is used to define `app.getObject(id).getLayout()`. Any property can be added to the fixture (just make sure it exists and behaves as in the Enigma model!).\n *\n * The value for each property is either fixed (string / boolean / number / object) or a function. Arguments are forwarded to the function to allow for greater flexibility. For example, this can be used to return different hypercube data when scrolling in the chart.\n * @type function\n * @experimental\n * @since 3.0.0\n * @param {Array<object>} genericObjects Generic objects controlling behaviour of visualizations.\n * @param {EnigmaMockerOptions=} options Options\n * @returns {Promise<qix.Doc>}\n * @example\n * const genericObject = {\n * getLayout() {\n * return {\n * qInfo: {\n * qId: 'qqj4zx',\n * qType: 'sn-grid-chart'\n * },\n * ...\n * }\n * },\n * getHyperCubeData(path, page) {\n * return [ ... ];\n * }\n * };\n * const app = await EnigmaMocker.fromGenericObjects([genericObject]);\n */\n fromGenericObjects(genericObjects, options = {}) {\n return fGO(genericObjects, options);\n },\n};\n\nexport default mocker;\n","import SessionMock from './mocks/session-mock';\nimport CreateSessionObjectMock from './mocks/create-session-object-mock';\nimport GetObjectMock from './mocks/get-object-mock';\nimport GetAppLayoutMock from './mocks/get-app-layout-mock';\n\nexport default function fromGenericObjects(genericObjects, options = {}) {\n const session = new SessionMock();\n const createSessionObject = new CreateSessionObjectMock(session);\n const getObject = new GetObjectMock(genericObjects, options);\n const getAppLayout = new GetAppLayoutMock(options);\n\n const app = {\n ...(options.appMethods || {}),\n id: `app - ${+Date.now()}`,\n session,\n createSessionObject,\n destroySessionObject: async () => {},\n getObject,\n getAppLayout,\n getListObject: async (props) => getObject(props.qInfo?.qId),\n };\n\n return Promise.resolve(app);\n}\n","import { embed } from '@nebula.js/stardust';\nimport EnigmaMocker from '@nebula.js/enigma-mocker';\nimport extend from 'extend';\nimport { getConnectionInfo } from './connect';\nimport { getModule } from './hot';\n\nconst getDefaultGenericObject = ({ type }) => ({\n getLayout: {\n qInfo: { qId: +Date.now() },\n visualization: type,\n },\n});\n\nconst getServeOptions = ({ themes = [], supernova = {}, flags, anything }) => {\n const options = {\n instanceConfig: {\n themes: themes.map((t) => ({\n id: t,\n load: async () => (await fetch(`/theme/${t}`)).json(),\n })),\n context: {\n constraints: {},\n },\n flags,\n anything,\n },\n };\n if (supernova.name) {\n options.type = supernova.name;\n }\n if (supernova.name || supernova.url) {\n options.load = async () => getModule(supernova.name, supernova.url);\n }\n\n return options;\n};\n\nconst getUrlParamOptions = (params) => ({\n instanceConfig: {\n context: {\n theme: params.theme,\n language: params.language,\n keyboardNavigation: params.keyboardNavigation,\n },\n },\n});\n\nfunction validateOptions(options) {\n if (!options.type) {\n throw new Error(\n 'No visualization type. Specify it either in fixture in the property \"type\" or as \"--type\" to Nebula serve.'\n );\n }\n if (!options.load) {\n throw new Error('Unable to load the visualization. Specify it in option \"--entry\" to Nebula serve.');\n }\n}\n\nasync function getOptions({ params, fixture, serverInfo }) {\n const options = extend(true, {}, getServeOptions(serverInfo), fixture, getUrlParamOptions(params));\n options.genericObjects = options.genericObjects || [getDefaultGenericObject({ type: options.type })];\n\n validateOptions(options);\n\n return options;\n}\n\nfunction validateFixture({ genericObjects } = {}) {\n if (!genericObjects || genericObjects.length === 0) {\n return;\n }\n if (!genericObjects[0] || !genericObjects[0].getLayout) {\n throw new Error('Invalid getLayout of generic object');\n }\n const { getLayout } = genericObjects[0];\n const layout = typeof getLayout === 'function' ? getLayout() : getLayout;\n if (!layout.visualization) {\n throw new Error('No \"visualization\" specified on generic object on path \"getLayout\"');\n }\n if (!layout.qInfo || !layout.qInfo.qId) {\n throw new Error('No \"qId\" specified on generic object on path \"getLayout.qInfo');\n }\n}\n\nasync function getFixture(fixturePath) {\n const fixtureFn = window.serveFixtures.get(fixturePath);\n if (!fixtureFn) {\n throw new Error(`Unable to load fixture ${fixturePath}`);\n }\n\n const fixture = fixtureFn();\n validateFixture(fixture);\n\n return fixture;\n}\n\nfunction getQId(genericObjects = []) {\n const { getLayout } = genericObjects[0];\n const layout = typeof getLayout === 'function' ? getLayout() : getLayout;\n\n return layout.qInfo.qId;\n}\n\nconst waitForVizGone = (element) =>\n new Promise((resolve) => {\n const check = () => {\n if (!element.querySelector('.njs-viz')) resolve();\n else requestAnimationFrame(check);\n };\n requestAnimationFrame(check);\n });\n\nconst waitForRenderCountAbove = (element, count) =>\n new Promise((resolve) => {\n const check = () => {\n const vizEl = element.querySelector('.njs-viz[data-render-count]');\n if (vizEl && parseInt(vizEl.getAttribute('data-render-count'), 10) > count) resolve();\n else requestAnimationFrame(check);\n };\n requestAnimationFrame(check);\n });\n\nconst renderFixture = async (params) => {\n const element = document.querySelector('#chart-container');\n const rerenders = params.rerenders ? parseInt(params.rerenders, 10) : 0;\n const serverInfo = await getConnectionInfo();\n const fixture = await getFixture(params.fixture);\n const { type, load, genericObjects, instanceConfig, snConfig, enigmaMockerOptions } = await getOptions({\n fixture,\n params,\n serverInfo,\n });\n\n const mockedApp = await EnigmaMocker.fromGenericObjects(genericObjects, enigmaMockerOptions);\n const qId = getQId(genericObjects);\n\n // When ?simulatedMemLeakKB=<n>: patch the mock object to support real event emission so nebula\n // re-calls getLayout on every 'changed' event. Each getLayout call accumulates plain JS objects\n // totalling ~n KB, pinned via element.leakStore so GC cannot collect them. Use together with\n // ?rerenders to verify that your memory measurement infrastructure detects a real leak before\n // trusting clean-chart results.\n // 48 bytes is the measured V8 heap cost of one { j, v } object.\n let leakMock = null;\n if (params.simulatedMemLeakKB) {\n const leakKB = parseFloat(params.simulatedMemLeakKB);\n const itemCount = Math.round((leakKB * 1024) / 48);\n leakMock = await mockedApp.getObject(qId);\n const evListeners = {};\n leakMock.on = (event, fn) => {\n (evListeners[event] = evListeners[event] || []).push(fn);\n };\n leakMock.once = (event, fn) => {\n const wrapper = () => {\n fn();\n leakMock.removeListener(event, wrapper);\n };\n leakMock.on(event, wrapper);\n };\n leakMock.removeListener = (event, fn) => {\n if (evListeners[event]) evListeners[event] = evListeners[event].filter((h) => h !== fn);\n };\n leakMock.emit = (event) => {\n (evListeners[event] || []).forEach((h) => h());\n };\n // Pin to the DOM element so the store stays reachable after renderFixture returns.\n element.leakStore = [];\n const origGetLayout = leakMock.getLayout.bind(leakMock);\n leakMock.getLayout = async () => {\n element.leakStore.push(new Array(itemCount).fill(null).map((_, j) => ({ j, v: Math.random() })));\n return origGetLayout();\n };\n }\n const servedTypes = (serverInfo && serverInfo.types) || [];\n const nebbie = embed(mockedApp, {\n types: [\n {\n name: type,\n load,\n },\n ...servedTypes.map((configType) => ({\n name: configType.name,\n load: async () => getModule(configType.name, configType.url),\n })),\n ],\n ...instanceConfig,\n });\n const viz = await nebbie.render({\n type,\n element,\n id: qId,\n ...snConfig,\n });\n const events = snConfig?.events || [];\n events.forEach((e) => {\n viz.addListener(e, (message) => {\n document.querySelector('#events').innerHTML = message;\n });\n });\n\n let currentViz = viz;\n\n const runRerenders = async (count) => {\n for (let i = 0; i < count; i++) {\n // eslint-disable-next-line no-await-in-loop\n await currentViz.destroy();\n // eslint-disable-next-line no-await-in-loop\n await waitForVizGone(element);\n // eslint-disable-next-line no-await-in-loop\n currentViz = await nebbie.render({ type, element, id: qId, ...snConfig });\n // eslint-disable-next-line no-await-in-loop\n await waitForRenderCountAbove(element, 0);\n if (leakMock) {\n const currentCount = parseInt(\n element.querySelector('.njs-viz[data-render-count]').getAttribute('data-render-count'),\n 10\n );\n leakMock.emit('changed');\n // eslint-disable-next-line no-await-in-loop\n await waitForRenderCountAbove(element, currentCount);\n }\n element.setAttribute('data-render-count', String(i + 1));\n }\n };\n\n if (rerenders > 0) {\n await waitForRenderCountAbove(element, 0);\n await runRerenders(rerenders);\n }\n};\n\nexport default renderFixture;\n","/* eslint no-underscore-dangle:0 */\nimport { embed } from '@nebula.js/stardust';\nimport snapshooter from '@nebula.js/snapshooter/client';\n\nimport { openApp, getParams, getConnectionInfo, getHostConfig } from './connect';\nimport initiateWatch from './hot';\nimport renderFixture from './render-fixture';\n\nconst nuke = async ({ app, supernova: { name }, themes, theme, language, hostConfig }) => {\n const nuked = embed.createConfiguration({\n hostConfig,\n themes: themes\n ? themes.map((t) => ({\n id: t,\n load: async () => (await fetch(`/theme/${t}`)).json(),\n }))\n : undefined,\n context: {\n theme,\n language,\n },\n });\n const nebbie = nuked(app, {\n load: (type) => Promise.resolve(window[type.name]),\n types: [\n {\n name,\n },\n ],\n });\n return nebbie;\n};\n\nasync function renderWithEngine() {\n const info = await getConnectionInfo();\n await initiateWatch(info);\n if (!info.engine.appId) {\n location.href = location.origin; //eslint-disable-line\n }\n const params = getParams();\n const app = await openApp(info.engine.appId);\n const nebbie = await nuke({\n app,\n ...info,\n hostConfig: getHostConfig(info),\n theme: params.theme,\n language: params.language,\n });\n const element = document.querySelector('#chart-container');\n let cfg;\n if (params['render-config']) {\n const rc = await (await fetch(`/render-config/${params['render-config']}`)).json();\n cfg = {\n ...rc,\n // eslint-disable-next-line no-nested-ternary\n ...(params.object ? { id: params.object } : rc.id ? { id: rc.id } : {}),\n type: rc.type ? rc.type : info.supernova.name,\n fields: params.cols ? params.cols : rc.fields,\n element,\n };\n } else if (params.object) {\n cfg = {\n id: params.object,\n element,\n };\n } else {\n cfg = {\n type: info.supernova.name,\n fields: params.cols || [],\n element,\n };\n }\n\n const renderViz = async () => {\n await nebbie.render(cfg);\n };\n\n let viz;\n window.onHotChange(info.supernova.name, async () => {\n if (viz) {\n viz.close();\n nebbie.__DO_NOT_USE__.types.clearFromCache(info.supernova.name);\n nebbie.__DO_NOT_USE__.types.register(info.supernova);\n }\n viz = await renderViz();\n });\n}\n\nasync function renderSnapshot() {\n const info = await getConnectionInfo();\n const { themes, supernova } = info;\n await initiateWatch(info);\n const element = document.querySelector('#chart-container');\n element.classList.toggle('full', true);\n\n const n = embed.createConfiguration({\n hostConfig: getHostConfig(info),\n themes: themes\n ? themes.map((t) => ({\n key: t,\n load: async () => (await fetch(`/theme/${t}`)).json(),\n }))\n : undefined,\n types: [\n {\n load: (type) => Promise.resolve(window[type.name]),\n name: supernova.name,\n },\n ],\n context: {\n constraints: {\n passive: true,\n active: true,\n },\n },\n });\n\n window.onHotChange(supernova.name, async () => {\n const params = getParams();\n snapshooter({\n embed: n,\n element,\n snapshot: params.snapshot,\n });\n });\n}\n\nfunction render() {\n const params = getParams();\n if (params.fixture) {\n renderFixture(params);\n } else if (params.snapshot) {\n renderSnapshot();\n } else {\n renderWithEngine();\n }\n}\n\nwindow.addEventListener('load', render);\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"async/\" + chunkId + \".js\"\n}","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";"],"names":["param","embed","element","key","snapshot","renderError","e","theme","language","appLayout","layout","objectModel","props","Date","app","id","Promise","Error","nebbie","getParams","opts","window","pair","idx","name","value","decodeURIComponent","urlRegex","appRegex","prefixRegx","getConnectionInfo","fetch","response","n","info","params","parseEngineURL","url","appId","appUrl","match","trimmedUrl","engineUrl","appMatch","engineMatch","undefined","rootPath","getHostConfig","clientId","webIntegrationId","host","port","secure","SHARED","stardust","React","ReactDOM","ReactDOMClient","IDENTIFIER","importMapAdded","getModule","m","addImportMap","globalThis","imports","Object","exported","ns","URL","Blob","JSON","script","document","src","encodeURIComponent","hotListeners","initiateWatch","update","mo","fn","ws","WebSocket","t","crt","session","properties","extend","c","Uint8Array","mockedInclusions","getPropValue","prop","args","defaultValue","getPropFn","async","delay","resolve","setTimeout","PROPS_SYNC","getQId","genericObject","validate","genericObjects","options","Array","mocks","createMock","qId","mock","fns","fGO","SessionMock","createSessionObject","CreateSessionObjectMock","getObject","GetObjectMock","getAppLayout","GetAppLayoutMock","waitForVizGone","check","requestAnimationFrame","waitForRenderCountAbove","count","vizEl","parseInt","renderFixture","rerenders","serverInfo","fixture","getFixture","fixturePath","fixtureFn","validateFixture","getLayout","type","load","instanceConfig","snConfig","enigmaMockerOptions","getOptions","getServeOptions","themes","supernova","flags","anything","getDefaultGenericObject","mockedApp","EnigmaMocker","leakMock","itemCount","Math","leakKB","parseFloat","evListeners","event","wrapper","h","origGetLayout","_","j","servedTypes","configType","viz","events","message","currentViz","runRerenders","i","currentCount","String","renderSnapshot","snapshooter","renderWithEngine","cfg","location","openApp","openAppSession","error","nuke","hostConfig","nuked","rc","renderViz","s","clearTimeout","Symbol","r","self"],"mappings":"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"}
1
+ {"version":3,"file":"eRender.js","sources":["webpack://webpack/runtime/create_fake_namespace_object","webpack://webpack/runtime/load_script","webpack://webpack/runtime/on_chunk_loaded","webpack://webpack/runtime/jsonp_chunk_loading","../../../apis/snapshooter/src/renderer.js","../web/connect.js","../web/hot.js","../../../apis/enigma-mocker/src/mocks/session-mock.js","../../../apis/enigma-mocker/src/mocks/create-session-object-mock.js","../../../apis/enigma-mocker/src/prop.js","../../../apis/enigma-mocker/src/mocks/get-object-mock.js","../../../apis/enigma-mocker/src/mocks/get-app-layout-mock.js","../../../apis/enigma-mocker/src/index.js","../../../apis/enigma-mocker/src/from-generic-objects.js","../web/render-fixture.js","../web/eRender.js","webpack://webpack/runtime/compat_get_default_export","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/ensure_chunk","webpack://webpack/runtime/get javascript chunk filename","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","webpack://webpack/runtime/public_path"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\n\n\n// loadScript function to load a script via script tag\n__webpack_require__.l = function (url, done, key, chunkId) {\n\tif (inProgress[url]) {\n\t\tinProgress[url].push(done);\n\t\treturn;\n\t}\n\tvar script, needAttach;\n\tif (key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor (var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif (s.getAttribute(\"src\") == url) {\n\t\t\t\tscript = s;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\nscript.timeout = 120;\nif (__webpack_require__.nc) {\n script.setAttribute(\"nonce\", __webpack_require__.nc);\n}\n\n\n\nscript.src = url;\n\n\n\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function (prev, event) {\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns &&\n\t\t\tdoneFns.forEach(function (fn) {\n\t\t\t\treturn fn(event);\n\t\t\t});\n\t\tif (prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(\n\t\tonScriptComplete.bind(null, undefined, {\n\t\t\ttype: 'timeout',\n\t\t\ttarget: script\n\t\t}),\n\t\t120000\n\t);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","\n // object to store loaded and loading chunks\n // undefined = chunk not loaded, null = chunk preloaded/prefetched\n // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\n var jsonpInstalledChunks = {\"9b\": 0,};\n \n __webpack_require__.f.j = function (chunkId, promises) {\n // JSONP chunk loading for javascript\nvar installedChunkData = __webpack_require__.o(jsonpInstalledChunks, chunkId)\n\t? jsonpInstalledChunks[chunkId]\n\t: undefined;\nif (installedChunkData !== 0) {\n\t// 0 means \"already installed\".\n\n\t// a Promise means \"currently loading\".\n\tif (installedChunkData) {\n\t\tpromises.push(installedChunkData[2]);\n\t} else {\n\t\tif (true) {\n\t\t\t// setup Promise in chunk cache\n\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = jsonpInstalledChunks[chunkId] = [resolve, reject]));\n\t\t\tpromises.push((installedChunkData[2] = promise));\n\n\t\t\t// start chunk loading\n\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\tvar error = new Error();\n\t\t\tvar loadingEnded = function (event) {\n\t\t\t\tif (__webpack_require__.o(jsonpInstalledChunks, chunkId)) {\n\t\t\t\t\tinstalledChunkData = jsonpInstalledChunks[chunkId];\n\t\t\t\t\tif (installedChunkData !== 0) jsonpInstalledChunks[chunkId] = undefined;\n\t\t\t\t\tif (installedChunkData) {\n\t\t\t\t\t\tvar errorType =\n\t\t\t\t\t\t\tevent && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\terror.message =\n\t\t\t\t\t\t\t'Loading chunk ' +\n\t\t\t\t\t\t\tchunkId +\n\t\t\t\t\t\t\t' failed.\\n(' +\n\t\t\t\t\t\t\terrorType +\n\t\t\t\t\t\t\t': ' +\n\t\t\t\t\t\t\trealSrc +\n\t\t\t\t\t\t\t')';\n\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t} \n\t}\n}\n\n }\n __webpack_require__.O.j = (chunkId) => (jsonpInstalledChunks[chunkId] === 0);\n// install a JSONP callback for chunk loading\nvar __rspack_jsonp = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif (chunkIds.some((id) => (jsonpInstalledChunks[id] !== 0))) {\n\t\tfor (moduleId in moreModules) {\n\t\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif (runtime) var result = runtime(__webpack_require__);\n\t}\n\tif (parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor (; i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif (\n\t\t\t__webpack_require__.o(jsonpInstalledChunks, chunkId) &&\n\t\t\tjsonpInstalledChunks[chunkId]\n\t\t) {\n\t\t\tjsonpInstalledChunks[chunkId][0]();\n\t\t}\n\t\tjsonpInstalledChunks[chunkId] = 0;\n\t}\n\t\n\treturn __webpack_require__.O(result);\n\t\n};\n\nvar jsonpChunkLoadingGlobal = self[\"rspackChunk\"] = self[\"rspackChunk\"] || [];\njsonpChunkLoadingGlobal.forEach(__rspack_jsonp.bind(null, 0));\njsonpChunkLoadingGlobal.push = __rspack_jsonp.bind(null, jsonpChunkLoadingGlobal.push.bind(jsonpChunkLoadingGlobal));\n","/* eslint no-param-reassign: 0 */\nasync function renderSnapshot({ embed, element, snapshot: key }) {\n let snapshot = {};\n const renderError = (e) => {\n element.innerHTML = `<p>${e.message}</p>`;\n element.setAttribute('data-njs-error', e.message);\n };\n try {\n snapshot = typeof key === 'string' ? await embed.config.snapshot.get(key) : key;\n } catch (e) {\n renderError(e);\n throw e;\n }\n\n const {\n meta: { theme, language, appLayout },\n layout,\n } = snapshot;\n\n const objectModel = (props) => ({\n id: `${+new Date()}-object`,\n async getLayout() {\n return props;\n },\n on() {},\n once() {},\n });\n\n const app = {\n id: `${+new Date()}-app`,\n createSessionObject: async (props) => objectModel(props),\n async getObject(id) {\n if (id === layout.qInfo.qId) {\n return objectModel(layout);\n }\n return Promise.reject(new Error(`C\u001dould not find an object with id: ${id}`));\n },\n getAppLayout: async () => appLayout || {},\n };\n\n const nebbie = await embed(app, {\n context: {\n theme,\n language,\n // do NOT override constraints to allow the passed in embedding config to control it instead,\n // however, since it's a snapshot the 'select' constraint will always be set to true from\n // the embed internals\n // constraints: {}\n },\n });\n\n try {\n await nebbie.render(\n layout.qInfo && layout.qInfo.qId\n ? {\n id: layout.qInfo.qId,\n element,\n }\n : {\n type: layout.visualization,\n element,\n properties: layout,\n }\n );\n } catch (e) {\n renderError(e || { message: 'Failed to render visualization.' });\n throw e;\n }\n}\n\nexport default renderSnapshot;\n","import enigma from 'enigma.js';\nimport qixSchema from 'enigma.js/schemas/12.2015.0.json';\nimport auth from '@qlik/api/auth';\nimport { getItems } from '@qlik/api/items';\nimport { openAppSession } from '@qlik/api/qix';\nimport getCsrfToken from './utils/getCsrfToken';\n\nconst getParams = () => {\n const opts = {};\n window.location.search\n .substring(1)\n .split('&')\n .forEach((pair) => {\n const idx = pair.indexOf('=');\n const name = pair.substr(0, idx);\n let value = decodeURIComponent(pair.substring(idx + 1));\n if (name === 'cols') {\n value = value.split(',');\n }\n opts[name] = value;\n });\n return opts;\n};\n\n// These URLS are fully constructed later using the sdk\n// QCS: wss://<tenant-url>.<region>.qlikcloud.com/app/<app-GUID>\n// QSEoW: wss://<host>/<virtual-proxy-prefix>/app/<app-GUID>\n\n// matches the wss://<host>/<virtual-proxy-prefix>/\nconst urlRegex = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?/;\nconst appRegex = /\\/app\\/([^?&#:]+)/;\n// The prefix must be unique for all virtual proxies used by the same proxy service,\n// as this differentiates the virtual proxies and will be a part of the URL (https://[node]/[prefix]/).\n// Valid characters for prefix are \"a-z\", \"0-9\", \"-\", \".\", \"_\", \"~\".\nconst prefixRegx = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?\\/?([a-z0-9-._~]+)?/;\n\nconst parseEngineURL = (url) => {\n const match = urlRegex.exec(url);\n if (!match) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n\n let appId;\n const trimmedUrl = url.trim();\n let engineUrl = trimmedUrl;\n let appUrl;\n\n const appMatch = appRegex.exec(trimmedUrl);\n\n if (appMatch) {\n [, appId] = appMatch;\n engineUrl = trimmedUrl.substring(0, appMatch.index);\n appUrl = trimmedUrl;\n }\n\n const engineMatch = prefixRegx.exec(engineUrl);\n\n if (!engineMatch) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n return {\n engine: {\n secure: match[1] === 'wss',\n host: match[2],\n port: match[3] || undefined,\n prefix: engineMatch[4] || undefined,\n appId,\n },\n engineUrl,\n appUrl,\n };\n};\n\nconst getConnectionInfo = () =>\n fetch('/info')\n .then((response) => response.json())\n .then(async (n) => {\n let info = n;\n const params = getParams();\n if (params.engine_url) {\n info = {\n ...info,\n // TODO:\n // instead of calling \"/info\" and then parsing url inside of `getConnectionInfo()`\n // we can have a hook which listens on location.search and provides this information for us\n ...parseEngineURL(params.engine_url),\n };\n } else if (params.app) {\n info = {\n ...info,\n engine: {\n ...info.engine,\n appId: params.app,\n },\n };\n }\n if (params['qlik-web-integration-id']) {\n info.webIntegrationId = params['qlik-web-integration-id'];\n }\n if (params['qlik-client-id']) {\n info.clientId = params['qlik-client-id'];\n }\n if (info.invalid) {\n return info;\n }\n const rootPath = `${info.engine.secure ? 'https' : 'http'}://${info.engine.host}`;\n return {\n ...info,\n rootPath,\n };\n });\n\nconst setHostConfig = ({ webIntegrationId, clientId, host }) => {\n if (webIntegrationId) {\n auth.setDefaultHostConfig({ authType: 'cookie', webIntegrationId, host });\n } else if (clientId) {\n auth.setDefaultHostConfig({\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n });\n }\n};\n\nconst buildDocList = async () => {\n try {\n const response = await getItems({ resourceType: 'app', limit: 30, sort: '-updatedAt' });\n const { data = [] } = response.data;\n return data.map((d) => ({ qDocId: d.resourceId, qTitle: d.name }));\n } catch (error) {\n throw new Error('Failed to fetch app list', { cause: error });\n }\n};\n\nconst connect = async () => {\n try {\n const {\n clientId,\n webIntegrationId,\n engine: engineConfig,\n engine: { host },\n } = await getConnectionInfo();\n\n if (webIntegrationId) {\n setHostConfig({ webIntegrationId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n if (clientId) {\n setHostConfig({ clientId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n const csrfToken = await getCsrfToken(\n `https://${engineConfig.host}${engineConfig.prefix ? `/${engineConfig.prefix}` : ''}`\n );\n const scheme = engineConfig.secure !== false ? 'wss' : 'ws';\n const port = engineConfig.port ? `:${engineConfig.port}` : '';\n const prefix = engineConfig.prefix ? `/${engineConfig.prefix}` : '';\n const url = `${scheme}://${engineConfig.host}${port}${prefix}?qlik-csrf-token=${csrfToken}`;\n\n return enigma.create({ schema: qixSchema, url }).open();\n } catch (error) {\n throw new Error('Failed to return enigma instance', { cause: error });\n }\n};\n\n// Builds a qlik-api compatible host config from the connection info\nconst getHostConfig = ({ clientId, webIntegrationId, engine: { host, port, secure } }) => {\n if (webIntegrationId) {\n return { authType: 'cookie', webIntegrationId, host };\n }\n\n if (clientId) {\n return {\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n };\n }\n\n // Local / no-auth engine (e.g. qlik-core, docker engine)\n const scheme = secure !== false ? 'https' : 'http';\n return { authType: 'noauth', host: `${scheme}://${host}${port ? `:${port}` : ''}` };\n};\n\nconst openApp = async (id) => {\n try {\n const info = await getConnectionInfo();\n return openAppSession({ appId: id, hostConfig: getHostConfig(info) }).getDoc();\n } catch (error) {\n throw new Error('Failed to open app!', { cause: error });\n }\n};\n\nexport { connect, openApp, getParams, getConnectionInfo, getHostConfig, setHostConfig, parseEngineURL };\n","import * as stardust from '@nebula.js/stardust';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport * as jsxRuntime from 'react/jsx-runtime';\n\n// The modules that a visualization imports by name are the ones of this page, so there is one of each. The names are\n// the ones in lib/provided-modules.js, which the visualization is built to leave out.\nexport const SHARED = {\n '@nebula.js/stardust': stardust,\n react: React,\n 'react-dom': ReactDOM,\n 'react-dom/client': ReactDOMClient,\n 'react/jsx-runtime': jsxRuntime,\n};\n\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\n\n/**\n * The source of a module that has what an other module has, so that a visualization can import it by its name.\n */\nexport const shimSource = (name, ns) => {\n const exported = Object.keys(ns)\n .filter((key) => key !== 'default' && IDENTIFIER.test(key))\n .map((key) => `export const ${key} = shared[${JSON.stringify(key)}];`);\n return [\n `const shared = globalThis.nebulaShared[${JSON.stringify(name)}];`,\n 'export default shared.default !== undefined ? shared.default : shared;',\n ...exported,\n ].join('\\n');\n};\n\nlet importMapAdded = false;\n\n// A native import map has to be there before the first import of a module that imports by a name\nconst addImportMap = () => {\n if (importMapAdded) {\n return;\n }\n importMapAdded = true;\n globalThis.nebulaShared = SHARED;\n const imports = {};\n Object.entries(SHARED).forEach(([name, ns]) => {\n imports[name] = URL.createObjectURL(new Blob([shimSource(name, ns)], { type: 'text/javascript' }));\n });\n const script = document.createElement('script');\n script.type = 'importmap';\n script.textContent = JSON.stringify({ imports });\n document.head.appendChild(script);\n};\n\n// the visualization is the default export of a module\nconst visualization = (m) => (m && typeof m === 'object' && 'default' in m ? m.default : m);\n\nexport const getModule = async (name, url) => {\n addImportMap();\n // a new url for every load, since a module that was imported is never loaded again\n const mod = await import(/* webpackIgnore: true */ `${url}${url.includes('?') ? '&' : '?'}t=${Date.now()}`);\n return visualization(mod);\n};\n\nconst hotListeners = {};\n\nconst lightItUp = (name) => {\n if (!hotListeners[name]) {\n return;\n }\n hotListeners[name].forEach((fn) => fn());\n};\n\nconst onHotChange = (name, fn) => {\n if (!hotListeners[name]) {\n hotListeners[name] = [];\n }\n\n hotListeners[name].push(fn);\n if (window[name]) {\n fn();\n }\n return () => {\n // removeListener\n const idx = hotListeners[name].indexOf(fn);\n hotListeners[name].splice(idx, 1);\n };\n};\n\nwindow.onHotChange = onHotChange;\n\nexport default function initiateWatch(info) {\n const update = () => {\n getModule(info.supernova.name, info.supernova.url || info.supernova.module).then((mo) => {\n window[info.supernova.name] = mo;\n lightItUp(info.supernova.name);\n });\n };\n\n if (info.sock.port) {\n const ws = new WebSocket(`ws://localhost:${info.sock.port}`);\n ws.onmessage = () => {\n update();\n };\n }\n update();\n if (info.types) {\n const proms = info.types.map((t) =>\n getModule(t.name, t.url).then((mo) => {\n window[t.name] = mo;\n })\n );\n return Promise.all(proms);\n }\n return Promise.resolve();\n}\n","function SessionMock() {\n return {\n getObjectApi() {\n return Promise.resolve({\n id: `sessapi - ${+Date.now()}`,\n });\n },\n };\n}\n\nexport default SessionMock;\n","/* eslint-disable no-underscore-dangle */\nimport extend from 'extend';\n\n// To cover test\n\nconst crt = globalThis.crypto || { getRandomValues: () => 123456 };\n\n// https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid\n// Not using crypto.randomUUID due to missing safari support < 15\nfunction uuidv4() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n (c ^ (crt.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\n );\n}\n\nfunction CreateSessionObjectMock(session) {\n return (props) => {\n const properties = extend({}, props);\n properties.qInfo = properties.qInfo || {};\n properties.qInfo.qId = properties.qInfo.qId || `mock-${uuidv4()}`;\n\n const mockedInclusions = properties._mock;\n let layout = properties;\n\n if (mockedInclusions) {\n delete properties._mock;\n layout = extend({}, properties, mockedInclusions);\n }\n return Promise.resolve({\n on: () => {},\n once: () => {},\n getLayout: () => Promise.resolve(layout),\n getProperties: () => Promise.resolve(properties),\n getEffectiveProperties: () => Promise.resolve(properties),\n removeListener: () => {},\n id: properties.qInfo.qId,\n properties,\n session,\n });\n };\n}\n\nexport default CreateSessionObjectMock;\n","/**\n * Get value for a fixture property.\n *\n * The value is either static (e.g. pass a string / object / similar) or dynamic when passing a function.\n *\n * It falls back to the default value in case the fixture has no value specified.\n *\n * Example\n * ```js\n * const fixture = {\n * id: 'grid-chart-1',\n * };\n * const app = {\n * id: getValue(fixture.id, { defaultValue: 'object-id-${+Date.now()}'}),\n * }\n * ```\n * @type function\n * @ignore\n * @param {any} prop Fixture property. Either a fixed value (string / object / boolean / ...) or a function invoked when the value is needed.\n * @param {object} options Options.\n * @param {Array<any>} options.args Arguments used to evaluate the property value.\n * @param {any} options.defaultValue Default value in case not value is defined in fixture.\n * @returns {any} The property value.\n */\nexport const getPropValue = (prop, { args = [], defaultValue } = {}) => {\n if (typeof prop === 'function') {\n return prop(...args);\n }\n if (prop !== undefined) {\n return prop;\n }\n return defaultValue;\n};\n\n/**\n * Get function for a fixture property.\n *\n * When the returned function is invoked it resolves the value - using `defaultValue` as fallback - and returns it. The value is returned as a promise if `option.usePromise` is `true`.\n *\n * Example:\n * ```js\n * const fixture = {\n * getHyperCubeData(path, page) {\n * return [ ... ];\n * }\n * }\n * const app = {\n * getHyperCubeData: getPropFn(fixture.getHyperCubeData, { defaultValue: [], usePromise: true })\n * };\n * ```\n * @type function\n * @ignore\n * @param {any} prop Fixture property. Either a fixed value (string / object / boolean / ...) or a function invoked when the value is needed.\n * @param {object} options Options.\n * @param {any} options.defaultValue Default value in case not value is defined in fixture.\n * @param {boolean} options.async When `true` the returns value is wrapped in a promise, otherwise the value is directly returned.\n * @param {number} options.number Delay before value is returned.\n * @returns {function} A fixture property function\n */\nexport const getPropFn =\n (prop, { defaultValue, async = true, delay = 0 } = {}) =>\n (...args) => {\n const value = getPropValue(prop, { defaultValue, args });\n return async\n ? new Promise((resolve) => {\n setTimeout(() => resolve(value), delay);\n })\n : value;\n };\n","import { getPropValue, getPropFn } from '../prop';\n\n/**\n * Properties on `getObject()` operating synchronously.\n * @ignore\n * @type Array\n */\nconst PROPS_SYNC = [\n 'addListener',\n 'emit',\n 'listeners',\n 'on',\n 'once',\n 'removeAllListeners',\n 'removeListener',\n 'setMaxListerners',\n];\n\n/**\n * Is property operating asynchrously.\n * @param {string} name Property name.\n * @ignore\n * @returns `true` if property is operating asynchrously, otherwise `false`.\n */\nfunction isPropAsync(name) {\n return !PROPS_SYNC.includes(name);\n}\n\n/**\n * Get `qId` for visualization.\n * @param {object} genericObject Generic object describing behaviour of mock\n * @ignore\n * @returns The `qId`, undefined if not present\n */\nfunction getQId(genericObject) {\n const layout = getPropValue(genericObject.getLayout);\n return layout.qInfo && layout.qInfo.qId;\n}\n\n/**\n * Create a mock of a generic object. Mandatory properties are added, functions returns async values where applicable etc.\n * @param {object} genericObject Generic object describing behaviour of mock\n * @param {EnigmaMockerOptions} options Options.\n * @ignore\n * @returns The mocked object\n */\nfunction createMock(genericObject, options) {\n let qId = getQId(genericObject);\n const { delay } = options;\n const { id, session, ...props } = genericObject;\n\n if (id && qId && id !== qId) {\n throw new Error(`Generic object has multiple IDs, qInfo.qId: ${qId}, id: ${id}`);\n }\n\n qId = qId || id || `object - ${+Date.now()}`;\n\n const mock = {\n id: qId,\n session: getPropValue(session, { defaultValue: true }),\n on: () => {},\n once: () => {},\n removeListener: () => {},\n ...Object.entries(props).reduce(\n (fns, [name, value]) => ({\n ...fns,\n [name]: getPropFn(value, { async: isPropAsync(name), delay }),\n }),\n {}\n ),\n genericType: genericObject.type,\n };\n return { [qId]: mock };\n}\n\n/**\n * Create mocked objects from list of generic objects.\n * @param {Array<object>} genericObjects Generic objects describing behaviour of mock\n * @param {EnigmaMockerOptions} options options\n * @ignore\n * @returns Object with mocks where key is `qId` and value is the mocked object.\n */\nfunction createMocks(genericObjects, options) {\n return genericObjects.reduce(\n (mocks, genericObject) => ({\n ...mocks,\n ...createMock(genericObject, options),\n }),\n {}\n );\n}\n\n/**\n * Validates if mandatory information is available.\n * @param {object} genericObject Generic object to validate\n * @ignore\n * @throws {}\n * <ul>\n * <li>{Error} If getLayout is missing</li>\n * <li>{Error} If getLayout.qInfo.qId is missing</li>\n * </ul>\n */\nfunction validate(genericObject) {\n if (!genericObject.getLayout) {\n throw new Error('Generic object is missing \"getLayout\"');\n }\n const qId = getQId(genericObject);\n if (!qId) {\n throw new Error('Generic object is missing \"qId\" for path \"getLayout().qInfo.qId\"');\n }\n}\n\n/**\n * Creates mock of `getObject(id)` based on an array of generic objects.\n * @param {Array<object>} genericObjects Generic objects.\n * @param {EnigmaMockerOptions} options Options.\n * @ignore\n * @returns Function to retrieve the mocked generic object with the corresponding id.\n */\nfunction GetObjectMock(genericObjects = [], options = {}) {\n if (!Array.isArray(genericObjects) || genericObjects.length === 0) {\n return () => {\n throw new Error('No \"genericObjects\" specified');\n };\n }\n\n genericObjects.forEach(validate);\n const mocks = createMocks(genericObjects, options);\n\n return async (id) => Promise.resolve(mocks[id]);\n}\n\nexport default GetObjectMock;\n","function GetAppLayoutMock(options) {\n return () => Promise.resolve({ id: 'app-layout', qLocaleInfo: options?.appLocaleInfo });\n}\n\nexport default GetAppLayoutMock;\n","import fGO from './from-generic-objects';\n\n/**\n * @interface EnigmaMockerOptions\n * @property {object=} appMethods Object with methods to add to the mocked app.\n * @property {number} delay Simulate delay (in ms) for calls in enigma-mocker.\n * @description Options for Enigma Mocker\n * @experimental\n * @since 3.0.0\n */\n\n/**\n * @entry\n * @namespace\n * @alias EnigmaMocker\n * @description Mocks Engima app functionality for demo and testing purposes.\n */\nconst mocker = /** @lends EnigmaMocker# */ {\n /**\n * Mocks Engima app functionality. It accepts one / many generic objects as input argument and returns the mocked Enigma app. Each generic object represents one visualisation and specifies how it behaves. For example, what layout to use the data to present.\n *\n * The generic object is represented with a Javascript object with a number of properties. The name of the property correlates to the name in the Enigma model for `app.getObject(id)`. For example, the property `getLayout` in the generic object is used to define `app.getObject(id).getLayout()`. Any property can be added to the fixture (just make sure it exists and behaves as in the Enigma model!).\n *\n * The value for each property is either fixed (string / boolean / number / object) or a function. Arguments are forwarded to the function to allow for greater flexibility. For example, this can be used to return different hypercube data when scrolling in the chart.\n * @type function\n * @experimental\n * @since 3.0.0\n * @param {Array<object>} genericObjects Generic objects controlling behaviour of visualizations.\n * @param {EnigmaMockerOptions=} options Options\n * @returns {Promise<qix.Doc>}\n * @example\n * const genericObject = {\n * getLayout() {\n * return {\n * qInfo: {\n * qId: 'qqj4zx',\n * qType: 'sn-grid-chart'\n * },\n * ...\n * }\n * },\n * getHyperCubeData(path, page) {\n * return [ ... ];\n * }\n * };\n * const app = await EnigmaMocker.fromGenericObjects([genericObject]);\n */\n fromGenericObjects(genericObjects, options = {}) {\n return fGO(genericObjects, options);\n },\n};\n\nexport default mocker;\n","import SessionMock from './mocks/session-mock';\nimport CreateSessionObjectMock from './mocks/create-session-object-mock';\nimport GetObjectMock from './mocks/get-object-mock';\nimport GetAppLayoutMock from './mocks/get-app-layout-mock';\n\nexport default function fromGenericObjects(genericObjects, options = {}) {\n const session = new SessionMock();\n const createSessionObject = new CreateSessionObjectMock(session);\n const getObject = new GetObjectMock(genericObjects, options);\n const getAppLayout = new GetAppLayoutMock(options);\n\n const app = {\n ...(options.appMethods || {}),\n id: `app - ${+Date.now()}`,\n session,\n createSessionObject,\n destroySessionObject: async () => {},\n getObject,\n getAppLayout,\n getListObject: async (props) => getObject(props.qInfo?.qId),\n };\n\n return Promise.resolve(app);\n}\n","import { embed } from '@nebula.js/stardust';\nimport EnigmaMocker from '@nebula.js/enigma-mocker';\nimport extend from 'extend';\nimport { getConnectionInfo } from './connect';\nimport { getModule } from './hot';\n\nconst getDefaultGenericObject = ({ type }) => ({\n getLayout: {\n qInfo: { qId: +Date.now() },\n visualization: type,\n },\n});\n\nconst getServeOptions = ({ themes = [], supernova = {}, flags, anything }) => {\n const options = {\n instanceConfig: {\n themes: themes.map((t) => ({\n id: t,\n load: async () => (await fetch(`/theme/${t}`)).json(),\n })),\n context: {\n constraints: {},\n },\n flags,\n anything,\n },\n };\n if (supernova.name) {\n options.type = supernova.name;\n }\n if (supernova.name || supernova.url) {\n options.load = async () => getModule(supernova.name, supernova.url || supernova.module);\n }\n\n return options;\n};\n\nconst getUrlParamOptions = (params) => ({\n instanceConfig: {\n context: {\n theme: params.theme,\n language: params.language,\n keyboardNavigation: params.keyboardNavigation,\n },\n },\n});\n\nfunction validateOptions(options) {\n if (!options.type) {\n throw new Error(\n 'No visualization type. Specify it either in fixture in the property \"type\" or as \"--type\" to Nebula serve.'\n );\n }\n if (!options.load) {\n throw new Error('Unable to load the visualization. Specify it in option \"--entry\" to Nebula serve.');\n }\n}\n\nasync function getOptions({ params, fixture, serverInfo }) {\n const options = extend(true, {}, getServeOptions(serverInfo), fixture, getUrlParamOptions(params));\n options.genericObjects = options.genericObjects || [getDefaultGenericObject({ type: options.type })];\n\n validateOptions(options);\n\n return options;\n}\n\nfunction validateFixture({ genericObjects } = {}) {\n if (!genericObjects || genericObjects.length === 0) {\n return;\n }\n if (!genericObjects[0] || !genericObjects[0].getLayout) {\n throw new Error('Invalid getLayout of generic object');\n }\n const { getLayout } = genericObjects[0];\n const layout = typeof getLayout === 'function' ? getLayout() : getLayout;\n if (!layout.visualization) {\n throw new Error('No \"visualization\" specified on generic object on path \"getLayout\"');\n }\n if (!layout.qInfo || !layout.qInfo.qId) {\n throw new Error('No \"qId\" specified on generic object on path \"getLayout.qInfo');\n }\n}\n\nasync function getFixture(fixturePath) {\n const fixtureFn = window.serveFixtures.get(fixturePath);\n if (!fixtureFn) {\n throw new Error(`Unable to load fixture ${fixturePath}`);\n }\n\n const fixture = fixtureFn();\n validateFixture(fixture);\n\n return fixture;\n}\n\nfunction getQId(genericObjects = []) {\n const { getLayout } = genericObjects[0];\n const layout = typeof getLayout === 'function' ? getLayout() : getLayout;\n\n return layout.qInfo.qId;\n}\n\nconst waitForVizGone = (element) =>\n new Promise((resolve) => {\n const check = () => {\n if (!element.querySelector('.njs-viz')) resolve();\n else requestAnimationFrame(check);\n };\n requestAnimationFrame(check);\n });\n\nconst waitForRenderCountAbove = (element, count) =>\n new Promise((resolve) => {\n const check = () => {\n const vizEl = element.querySelector('.njs-viz[data-render-count]');\n if (vizEl && parseInt(vizEl.getAttribute('data-render-count'), 10) > count) resolve();\n else requestAnimationFrame(check);\n };\n requestAnimationFrame(check);\n });\n\nconst renderFixture = async (params) => {\n const element = document.querySelector('#chart-container');\n const rerenders = params.rerenders ? parseInt(params.rerenders, 10) : 0;\n const serverInfo = await getConnectionInfo();\n const fixture = await getFixture(params.fixture);\n const { type, load, genericObjects, instanceConfig, snConfig, enigmaMockerOptions } = await getOptions({\n fixture,\n params,\n serverInfo,\n });\n\n const mockedApp = await EnigmaMocker.fromGenericObjects(genericObjects, enigmaMockerOptions);\n const qId = getQId(genericObjects);\n\n // When ?simulatedMemLeakKB=<n>: patch the mock object to support real event emission so nebula\n // re-calls getLayout on every 'changed' event. Each getLayout call accumulates plain JS objects\n // totalling ~n KB, pinned via element.leakStore so GC cannot collect them. Use together with\n // ?rerenders to verify that your memory measurement infrastructure detects a real leak before\n // trusting clean-chart results.\n // 48 bytes is the measured V8 heap cost of one { j, v } object.\n let leakMock = null;\n if (params.simulatedMemLeakKB) {\n const leakKB = parseFloat(params.simulatedMemLeakKB);\n const itemCount = Math.round((leakKB * 1024) / 48);\n leakMock = await mockedApp.getObject(qId);\n const evListeners = {};\n leakMock.on = (event, fn) => {\n (evListeners[event] = evListeners[event] || []).push(fn);\n };\n leakMock.once = (event, fn) => {\n const wrapper = () => {\n fn();\n leakMock.removeListener(event, wrapper);\n };\n leakMock.on(event, wrapper);\n };\n leakMock.removeListener = (event, fn) => {\n if (evListeners[event]) evListeners[event] = evListeners[event].filter((h) => h !== fn);\n };\n leakMock.emit = (event) => {\n (evListeners[event] || []).forEach((h) => h());\n };\n // Pin to the DOM element so the store stays reachable after renderFixture returns.\n element.leakStore = [];\n const origGetLayout = leakMock.getLayout.bind(leakMock);\n leakMock.getLayout = async () => {\n element.leakStore.push(new Array(itemCount).fill(null).map((_, j) => ({ j, v: Math.random() })));\n return origGetLayout();\n };\n }\n const servedTypes = (serverInfo && serverInfo.types) || [];\n const nebbie = embed(mockedApp, {\n types: [\n {\n name: type,\n load,\n },\n ...servedTypes.map((configType) => ({\n name: configType.name,\n load: async () => getModule(configType.name, configType.url),\n })),\n ],\n ...instanceConfig,\n });\n const viz = await nebbie.render({\n type,\n element,\n id: qId,\n ...snConfig,\n });\n const events = snConfig?.events || [];\n events.forEach((e) => {\n viz.addListener(e, (message) => {\n document.querySelector('#events').innerHTML = message;\n });\n });\n\n let currentViz = viz;\n\n const runRerenders = async (count) => {\n for (let i = 0; i < count; i++) {\n // eslint-disable-next-line no-await-in-loop\n await currentViz.destroy();\n // eslint-disable-next-line no-await-in-loop\n await waitForVizGone(element);\n // eslint-disable-next-line no-await-in-loop\n currentViz = await nebbie.render({ type, element, id: qId, ...snConfig });\n // eslint-disable-next-line no-await-in-loop\n await waitForRenderCountAbove(element, 0);\n if (leakMock) {\n const currentCount = parseInt(\n element.querySelector('.njs-viz[data-render-count]').getAttribute('data-render-count'),\n 10\n );\n leakMock.emit('changed');\n // eslint-disable-next-line no-await-in-loop\n await waitForRenderCountAbove(element, currentCount);\n }\n element.setAttribute('data-render-count', String(i + 1));\n }\n };\n\n if (rerenders > 0) {\n await waitForRenderCountAbove(element, 0);\n await runRerenders(rerenders);\n }\n};\n\nexport default renderFixture;\n","/* eslint no-underscore-dangle:0 */\nimport { embed } from '@nebula.js/stardust';\nimport snapshooter from '@nebula.js/snapshooter/client';\n\nimport { openApp, getParams, getConnectionInfo, getHostConfig } from './connect';\nimport initiateWatch from './hot';\nimport renderFixture from './render-fixture';\n\nconst nuke = async ({ app, supernova: { name }, themes, theme, language, hostConfig }) => {\n const nuked = embed.createConfiguration({\n hostConfig,\n themes: themes\n ? themes.map((t) => ({\n id: t,\n load: async () => (await fetch(`/theme/${t}`)).json(),\n }))\n : undefined,\n context: {\n theme,\n language,\n },\n });\n const nebbie = nuked(app, {\n load: (type) => Promise.resolve(window[type.name]),\n types: [\n {\n name,\n },\n ],\n });\n return nebbie;\n};\n\nasync function renderWithEngine() {\n const info = await getConnectionInfo();\n await initiateWatch(info);\n if (!info.engine.appId) {\n location.href = location.origin; //eslint-disable-line\n }\n const params = getParams();\n const app = await openApp(info.engine.appId);\n const nebbie = await nuke({\n app,\n ...info,\n hostConfig: getHostConfig(info),\n theme: params.theme,\n language: params.language,\n });\n const element = document.querySelector('#chart-container');\n let cfg;\n if (params['render-config']) {\n const rc = await (await fetch(`/render-config/${params['render-config']}`)).json();\n cfg = {\n ...rc,\n // eslint-disable-next-line no-nested-ternary\n ...(params.object ? { id: params.object } : rc.id ? { id: rc.id } : {}),\n type: rc.type ? rc.type : info.supernova.name,\n fields: params.cols ? params.cols : rc.fields,\n element,\n };\n } else if (params.object) {\n cfg = {\n id: params.object,\n element,\n };\n } else {\n cfg = {\n type: info.supernova.name,\n fields: params.cols || [],\n element,\n };\n }\n\n const renderViz = async () => {\n await nebbie.render(cfg);\n };\n\n let viz;\n window.onHotChange(info.supernova.name, async () => {\n if (viz) {\n viz.close();\n nebbie.__DO_NOT_USE__.types.clearFromCache(info.supernova.name);\n nebbie.__DO_NOT_USE__.types.register(info.supernova);\n }\n viz = await renderViz();\n });\n}\n\nasync function renderSnapshot() {\n const info = await getConnectionInfo();\n const { themes, supernova } = info;\n await initiateWatch(info);\n const element = document.querySelector('#chart-container');\n element.classList.toggle('full', true);\n\n const n = embed.createConfiguration({\n hostConfig: getHostConfig(info),\n themes: themes\n ? themes.map((t) => ({\n key: t,\n load: async () => (await fetch(`/theme/${t}`)).json(),\n }))\n : undefined,\n types: [\n {\n load: (type) => Promise.resolve(window[type.name]),\n name: supernova.name,\n },\n ],\n context: {\n constraints: {\n passive: true,\n active: true,\n },\n },\n });\n\n window.onHotChange(supernova.name, async () => {\n const params = getParams();\n snapshooter({\n embed: n,\n element,\n snapshot: params.snapshot,\n });\n });\n}\n\nfunction render() {\n const params = getParams();\n if (params.fixture) {\n renderFixture(params);\n } else if (params.snapshot) {\n renderSnapshot();\n } else {\n renderWithEngine();\n }\n}\n\nwindow.addEventListener('load', render);\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"async/\" + chunkId + \".js\"\n}","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";"],"names":["param","embed","element","key","snapshot","renderError","e","theme","language","appLayout","layout","objectModel","props","Date","app","id","Promise","Error","nebbie","getParams","opts","window","pair","idx","name","value","decodeURIComponent","urlRegex","appRegex","prefixRegx","getConnectionInfo","fetch","response","n","info","params","parseEngineURL","url","appId","appUrl","match","trimmedUrl","engineUrl","appMatch","engineMatch","undefined","rootPath","getHostConfig","clientId","webIntegrationId","host","port","secure","SHARED","stardust","React","ReactDOM","ReactDOMClient","IDENTIFIER","importMapAdded","getModule","m","addImportMap","globalThis","imports","Object","exported","ns","URL","Blob","JSON","script","document","hotListeners","initiateWatch","update","mo","fn","ws","WebSocket","t","crt","session","properties","extend","c","Uint8Array","mockedInclusions","getPropValue","prop","args","defaultValue","getPropFn","async","delay","resolve","setTimeout","PROPS_SYNC","getQId","genericObject","validate","genericObjects","options","Array","mocks","createMock","qId","mock","fns","fGO","SessionMock","createSessionObject","CreateSessionObjectMock","getObject","GetObjectMock","getAppLayout","GetAppLayoutMock","waitForVizGone","check","requestAnimationFrame","waitForRenderCountAbove","count","vizEl","parseInt","renderFixture","rerenders","serverInfo","fixture","getFixture","fixturePath","fixtureFn","validateFixture","getLayout","type","load","instanceConfig","snConfig","enigmaMockerOptions","getOptions","getServeOptions","themes","supernova","flags","anything","getDefaultGenericObject","mockedApp","EnigmaMocker","leakMock","itemCount","Math","leakKB","parseFloat","evListeners","event","wrapper","h","origGetLayout","_","j","servedTypes","configType","viz","events","message","currentViz","runRerenders","i","currentCount","String","renderSnapshot","snapshooter","renderWithEngine","cfg","location","openApp","openAppSession","error","nuke","hostConfig","nuked","rc","renderViz","s","clearTimeout","Symbol","r","self"],"mappings":"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"}