flet-web 0.29.0.dev5039__py3-none-any.whl → 0.70.0.dev5066__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. flet_web/__init__.py +8 -1
  2. flet_web/fastapi/__init__.py +2 -0
  3. flet_web/fastapi/app.py +44 -17
  4. flet_web/fastapi/flet_app.py +195 -288
  5. flet_web/fastapi/flet_app_manager.py +41 -64
  6. flet_web/fastapi/flet_oauth.py +2 -1
  7. flet_web/fastapi/flet_static_files.py +54 -50
  8. flet_web/fastapi/serve_fastapi_web_app.py +30 -27
  9. flet_web/patch_index.py +35 -35
  10. flet_web/version.py +1 -1
  11. flet_web/web/assets/NOTICES +1815 -3803
  12. flet_web/web/assets/fonts/roboto.woff2 +0 -0
  13. flet_web/web/assets/packages/media_kit/assets/web/hls1.4.10.js +2 -2
  14. flet_web/web/canvaskit/canvaskit.js +192 -0
  15. flet_web/web/canvaskit/canvaskit.js.symbols +12098 -0
  16. flet_web/web/canvaskit/canvaskit.wasm +0 -0
  17. flet_web/web/canvaskit/chromium/canvaskit.js +192 -0
  18. flet_web/web/canvaskit/chromium/canvaskit.js.symbols +11050 -0
  19. flet_web/web/canvaskit/chromium/canvaskit.wasm +0 -0
  20. flet_web/web/canvaskit/skwasm.js +137 -0
  21. flet_web/web/canvaskit/skwasm.js.symbols +12073 -0
  22. flet_web/web/canvaskit/skwasm.wasm +0 -0
  23. flet_web/web/flutter.js +30 -2
  24. flet_web/web/flutter.js.map +3 -3
  25. flet_web/web/flutter_bootstrap.js +50 -10
  26. flet_web/web/flutter_service_worker.js +23 -21
  27. flet_web/web/index.html +56 -11
  28. flet_web/web/main.dart.js +170400 -167642
  29. flet_web/web/main.dart.mjs +44188 -0
  30. flet_web/web/main.dart.wasm +0 -0
  31. flet_web/web/pyodide/ffi.d.ts +10 -1
  32. flet_web/web/pyodide/micropip-0.8.0-py3-none-any.whl +14 -0
  33. flet_web/web/pyodide/package.json +2 -2
  34. flet_web/web/pyodide/packaging-24.2-py3-none-any.whl +0 -0
  35. flet_web/web/pyodide/pyodide-lock.json +1 -1
  36. flet_web/web/pyodide/pyodide.asm.js +1 -1
  37. flet_web/web/pyodide/pyodide.asm.wasm +0 -0
  38. flet_web/web/pyodide/pyodide.d.ts +15 -3
  39. flet_web/web/pyodide/pyodide.js +1 -1
  40. flet_web/web/pyodide/pyodide.mjs +2 -2
  41. flet_web/web/pyodide/python_stdlib.zip +0 -0
  42. flet_web/web/python-worker.js +75 -24
  43. flet_web/web/python.js +62 -20
  44. {flet_web-0.29.0.dev5039.dist-info → flet_web-0.70.0.dev5066.dist-info}/METADATA +3 -3
  45. flet_web-0.70.0.dev5066.dist-info/RECORD +71 -0
  46. flet_web-0.29.0.dev5039.dist-info/RECORD +0 -57
  47. {flet_web-0.29.0.dev5039.dist-info → flet_web-0.70.0.dev5066.dist-info}/WHEEL +0 -0
  48. {flet_web-0.29.0.dev5039.dist-info → flet_web-0.70.0.dev5066.dist-info}/top_level.txt +0 -0
Binary file
flet_web/web/flutter.js CHANGED
@@ -1,4 +1,32 @@
1
- (()=>{var P=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:P(),L=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",W=()=>{let n=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(n))},w={hasImageCodecs:E(),hasChromiumBreakIterators:L(),supportsWasmGC:W(),crossOriginIsolated:window.crossOriginIsolated};function l(...n){return new URL(C(...n),document.baseURI).toString()}function C(...n){return n.filter(t=>!!t).map((t,i)=>i===0?_(t):j(_(t))).filter(t=>t.length).join("/")}function j(n){let t=0;for(;t<n.length&&n.charAt(t)==="/";)t++;return n.substring(t)}function _(n){let t=n.length;for(;t>0&&n.charAt(t-1)==="/";)t--;return n.substring(0,t)}function T(n,t){return n.canvasKitBaseUrl?n.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?C("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}var v=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(t){this._ttPolicy=t}async loadEntrypoint(t){let{entrypointUrl:i=l("main.dart.js"),onEntrypointLoaded:r,nonce:e}=t||{};return this._loadJSEntrypoint(i,r,e)}async load(t,i,r,e,a){a??=o=>{o.initializeEngine(r).then(c=>c.runApp())};let{entryPointBaseUrl:s}=r;if(t.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(t,i,s,a);{let o=t.mainJsPath??"main.dart.js",c=l(s,o);return this._loadJSEntrypoint(c,a,e)}}didCreateEngineInitializer(t){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(t),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(t)}_loadJSEntrypoint(t,i,r){let e=typeof i=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let a=this._createScriptTag(t,r);if(e)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(a);else return new Promise((s,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=s,a.addEventListener("error",o),document.head.append(a)})}}async _loadWasmEntrypoint(t,i,r,e){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=e;let{mainWasmPath:a,jsSupportRuntimePath:s}=t,o=l(r,a),c=l(r,s);this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let d=(await import(c)).compileStreaming(fetch(o)),f;t.renderer==="skwasm"?f=(async()=>{let m=await i.skwasm;return window._flutter_skwasmInstance=m,{skwasm:m.wasmExports,skwasmWrapper:m,ffi:{memory:m.wasmMemory}}})():f=Promise.resolve({}),await(await(await d).instantiate(await f)).invokeMain()}}_createScriptTag(t,i){let r=document.createElement("script");r.type="application/javascript",i&&(r.nonce=i);let e=t;return this._ttPolicy!=null&&(e=this._ttPolicy.createScriptURL(t)),r.src=e,r}};async function I(n,t,i){if(t<0)return n;let r,e=new Promise((a,s)=>{r=setTimeout(()=>{s(new Error(`${i} took more than ${t}ms to resolve. Moving on.`,{cause:I}))},t)});return Promise.race([n,e]).finally(()=>{clearTimeout(r)})}var y=class{setTrustedTypesPolicy(t){this._ttPolicy=t}loadServiceWorker(t){if(!t)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
1
+ (()=>{var U=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:U(),W=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",P=()=>{let s=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(s))},p={hasImageCodecs:E(),hasChromiumBreakIterators:W(),supportsWasmGC:P(),crossOriginIsolated:window.crossOriginIsolated};function l(...s){return new URL(_(...s),document.baseURI).toString()}function _(...s){return s.filter(e=>!!e).map((e,i)=>i===0?C(e):j(C(e))).filter(e=>e.length).join("/")}function j(s){let e=0;for(;e<s.length&&s.charAt(e)==="/";)e++;return s.substring(e)}function C(s){let e=s.length;for(;e>0&&s.charAt(e-1)==="/";)e--;return s.substring(0,e)}function L(s,e){return s.canvasKitBaseUrl?s.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?_("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var h=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:i=l("main.dart.js"),onEntrypointLoaded:r,nonce:t}=e||{};return this._loadJSEntrypoint(i,r,t)}async load(e,i,r,t,n){n??=o=>{o.initializeEngine(r).then(c=>c.runApp())};let{entryPointBaseUrl:a}=r;if(e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,i,a,n);{let o=e.mainJsPath??"main.dart.js",c=l(a,o);return this._loadJSEntrypoint(c,n,t)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,i,r){let t=typeof i=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(t)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(n);else return new Promise((a,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=a,n.addEventListener("error",o),document.head.append(n)})}}async _loadWasmEntrypoint(e,i,r,t){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=t;let{mainWasmPath:n,jsSupportRuntimePath:a}=e,o=l(r,n),c=l(r,a);this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let d=(await import(c)).compileStreaming(fetch(o)),w;e.renderer==="skwasm"?w=(async()=>{let f=await i.skwasm;return window._flutter_skwasmInstance=f,{skwasm:f.wasmExports,skwasmWrapper:f,ffi:{memory:f.wasmMemory}}})():w=Promise.resolve({}),await(await(await d).instantiate(await w)).invokeMain()}}_createScriptTag(e,i){let r=document.createElement("script");r.type="application/javascript",i&&(r.nonce=i);let t=e;return this._ttPolicy!=null&&(t=this._ttPolicy.createScriptURL(e)),r.src=t,r}};async function T(s,e,i){if(e<0)return s;let r,t=new Promise((n,a)=>{r=setTimeout(()=>{a(new Error(`${i} took more than ${e}ms to resolve. Moving on.`,{cause:T}))},e)});return Promise.race([s,t]).finally(()=>{clearTimeout(r)})}var g=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
2
2
  The current context is NOT secure.`,o+=`
3
- Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:i,serviceWorkerUrl:r=l(`flutter_service_worker.js?v=${i}`),timeoutMillis:e=4e3}=t,a=r;this._ttPolicy!=null&&(a=this._ttPolicy.createScriptURL(a));let s=navigator.serviceWorker.register(a).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return I(s,e,"prepareServiceWorker")}async _getNewServiceWorker(t,i){if(!t.active&&(t.installing||t.waiting))return console.debug("Installing/Activating first service worker."),t.installing||t.waiting;if(t.active.scriptURL.endsWith(i))return console.debug("Loading from existing service worker."),t.active;{let r=await t.update();return console.debug("Updating service worker."),r.installing||r.waiting||r.active}}async _waitForServiceWorkerActivation(t){if(!t||t.state==="activated")if(t){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((i,r)=>{t.addEventListener("statechange",()=>{t.state==="activated"&&(console.debug("Activated new service worker."),i())})})}};var g=class{constructor(t,i="flutter-js"){let r=t||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(i,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let a=new URL(e,window.location),s=a.pathname.split("/").pop();if(r.some(c=>c.test(s)))return a.toString();console.error("URL rejected by TrustedTypes policy",i,":",e,"(download prevented)")}}))}};var k=n=>{let t=WebAssembly.compileStreaming(fetch(n));return(i,r)=>((async()=>{let e=await t,a=await WebAssembly.instantiate(e,i);r(a,e)})(),{})};var b=(n,t,i,r)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let e=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!e&&t.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let a=e&&t.canvasKitVariant!=="full",s=r;a&&(s=l(s,"chromium"));let o=l(s,"canvaskit.js");n.flutterTT.policy&&(o=n.flutterTT.policy.createScriptURL(o));let c=k(l(s,"canvaskit.wasm")),p=await import(o);return window.flutterCanvasKit=await p.default({instantiateWasm:c}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var U=async(n,t,i,r)=>{let e=i.crossOriginIsolated&&!t.forceSingleThreadedSkwasm?"skwasm":"skwasm_st",s=l(r,`${e}.js`);n.flutterTT.policy&&(s=n.flutterTT.policy.createScriptURL(s));let o=k(l(r,`${e}.wasm`));return await(await import(s)).default({instantiateWasm:o,mainScriptUrlOrBlob:new Blob([`import '${s}'`],{type:"application/javascript"})})};var S=class{async loadEntrypoint(t){let{serviceWorker:i,...r}=t||{},e=new g,a=new y;a.setTrustedTypesPolicy(e.policy),await a.loadServiceWorker(i).catch(o=>{console.warn("Exception while loading service worker:",o)});let s=new v;return s.setTrustedTypesPolicy(e.policy),this.didCreateEngineInitializer=s.didCreateEngineInitializer.bind(s),s.loadEntrypoint(r)}async load({serviceWorkerSettings:t,onEntrypointLoaded:i,nonce:r,config:e}={}){e??={};let a=_flutter.buildConfig;if(!a)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let s=u=>{switch(u){case"skwasm":return w.hasChromiumBreakIterators&&w.hasImageCodecs&&w.supportsWasmGC;default:return!0}},o=(u,m)=>{switch(u.renderer){case"auto":return m=="canvaskit"||m=="html";default:return u.renderer==m}},c=u=>u.compileTarget==="dart2wasm"&&!w.supportsWasmGC||e.renderer&&!o(u,e.renderer)?!1:s(u.renderer),p=a.builds.find(c);if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new g,t&&(d.serviceWorkerLoader=new y,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(t).catch(u=>{console.warn("Exception while loading service worker:",u)}));let f=T(e,a);p.renderer==="canvaskit"?d.canvasKit=b(d,e,w,f):p.renderer==="skwasm"&&(d.skwasm=U(d,e,w,f));let h=new v;return h.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=h.didCreateEngineInitializer.bind(h),h.load(p,d,e,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
3
+ Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:i,serviceWorkerUrl:r=l(`flutter_service_worker.js?v=${i}`),timeoutMillis:t=4e3}=e,n=r;this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(n));let a=navigator.serviceWorker.register(n).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return T(a,t,"prepareServiceWorker")}async _getNewServiceWorker(e,i){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(i))return console.debug("Loading from existing service worker."),e.active;{let r=await e.update();return console.debug("Updating service worker."),r.installing||r.waiting||r.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((i,r)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),i())})})}};var y=class{constructor(e,i="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(i,{createScriptURL:function(t){if(t.startsWith("blob:"))return t;let n=new URL(t,window.location),a=n.pathname.split("/").pop();if(r.some(c=>c.test(a)))return n.toString();console.error("URL rejected by TrustedTypes policy",i,":",t,"(download prevented)")}}))}};var k=s=>{let e=WebAssembly.compileStreaming(fetch(s));return(i,r)=>((async()=>{let t=await e,n=await WebAssembly.instantiate(t,i);r(n,t)})(),{})};var I=(s,e,i,r)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let t=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!t&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let n=t&&e.canvasKitVariant!=="full",a=r;n&&(a=l(a,"chromium"));let o=l(a,"canvaskit.js");s.flutterTT.policy&&(o=s.flutterTT.policy.createScriptURL(o));let c=k(l(a,"canvaskit.wasm")),u=await import(o);return window.flutterCanvasKit=await u.default({instantiateWasm:c}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var b=async(s,e,i,r)=>{let t=l(r,"skwasm.js"),n=t;s.flutterTT.policy&&(n=s.flutterTT.policy.createScriptURL(n));let a=k(l(r,"skwasm.wasm"));return await(await import(n)).default({skwasmSingleThreaded:!i.crossOriginIsolated||e.forceSingleThreadedSkwasm,instantiateWasm:a,locateFile:(c,u)=>{if(c.endsWith(".ww.js")){let d=l(r,c);return URL.createObjectURL(new Blob([`
4
+ "use strict";
5
+
6
+ let eventListener;
7
+ eventListener = (message) => {
8
+ const pendingMessages = [];
9
+ const data = message.data;
10
+ data["instantiateWasm"] = (info,receiveInstance) => {
11
+ const instance = new WebAssembly.Instance(data["wasm"], info);
12
+ return receiveInstance(instance, data["wasm"])
13
+ };
14
+ import(data.js).then(async (skwasm) => {
15
+ await skwasm.default(data);
16
+
17
+ removeEventListener("message", eventListener);
18
+ for (const message of pendingMessages) {
19
+ dispatchEvent(message);
20
+ }
21
+ });
22
+ removeEventListener("message", eventListener);
23
+ eventListener = (message) => {
24
+
25
+ pendingMessages.push(message);
26
+ };
27
+
28
+ addEventListener("message", eventListener);
29
+ };
30
+ addEventListener("message", eventListener);
31
+ `],{type:"application/javascript"}))}return url},mainScriptUrlOrBlob:t})};var S=class{async loadEntrypoint(e){let{serviceWorker:i,...r}=e||{},t=new y,n=new g;n.setTrustedTypesPolicy(t.policy),await n.loadServiceWorker(i).catch(o=>{console.warn("Exception while loading service worker:",o)});let a=new h;return a.setTrustedTypesPolicy(t.policy),this.didCreateEngineInitializer=a.didCreateEngineInitializer.bind(a),a.loadEntrypoint(r)}async load({serviceWorkerSettings:e,onEntrypointLoaded:i,nonce:r,config:t}={}){t??={};let n=_flutter.buildConfig;if(!n)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let a=m=>{switch(m){case"skwasm":return p.hasChromiumBreakIterators&&p.hasImageCodecs&&p.supportsWasmGC;default:return!0}},o=(m,f)=>m.renderer==f,c=m=>m.compileTarget==="dart2wasm"&&!p.supportsWasmGC||t.renderer&&!o(m,t.renderer)?!1:a(m.renderer),u=n.builds.find(c);if(!u)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new y,e&&(d.serviceWorkerLoader=new g,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(m=>{console.warn("Exception while loading service worker:",m)}));let w=L(t,n);u.renderer==="canvaskit"?d.canvasKit=I(d,t,p,w):u.renderer==="skwasm"&&(d.skwasm=b(d,t,p,w));let v=new h;return v.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=v.didCreateEngineInitializer.bind(v),v.load(u,d,t,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
4
32
  //# sourceMappingURL=flutter.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/browser_environment.js", "src/utils.js", "src/entrypoint_loader.js", "src/service_worker_loader.js", "src/trusted_types.js", "src/instantiate_wasm.js", "src/canvaskit_loader.js", "src/skwasm_loader.js", "src/loader.js", "src/flutter.js"],
4
- "sourcesContent": ["// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nconst isBlink = () => {\n return (navigator.vendor === 'Google Inc.') ||\n (navigator.agent === 'Edg/');\n}\n\nconst hasImageCodecs = () => {\n if (typeof ImageDecoder === 'undefined') {\n return false;\n }\n // TODO(yjbanov): https://github.com/flutter/flutter/issues/122761\n // Frequently, when a browser launches an API that other browsers already\n // support, there are subtle incompatibilities that may cause apps to crash if,\n // we blindly adopt the new implementation. This check prevents us from picking\n // up potentially incompatible implementations of ImagdeDecoder API. Instead,\n // when a new browser engine launches the API, we'll evaluate it and enable it\n // explicitly.\n return isBlink();\n}\n\nconst hasChromiumBreakIterators = () => {\n return (typeof Intl.v8BreakIterator !== \"undefined\") &&\n (typeof Intl.Segmenter !== \"undefined\");\n}\n\nconst supportsWasmGC = () => {\n // This attempts to instantiate a wasm module that only will validate if the\n // final WasmGC spec is implemented in the browser.\n //\n // Copied from https://github.com/GoogleChromeLabs/wasm-feature-detect/blob/main/src/detectors/gc/index.js\n const bytes = [0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 95, 1, 120, 0];\n return WebAssembly.validate(new Uint8Array(bytes));\n}\n\n/**\n * @returns {import(\"./types\").BrowserEnvironment}\n */\nexport const browserEnvironment = {\n hasImageCodecs: hasImageCodecs(),\n hasChromiumBreakIterators: hasChromiumBreakIterators(),\n supportsWasmGC: supportsWasmGC(),\n crossOriginIsolated: window.crossOriginIsolated,\n};\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nexport function resolveUrlWithSegments(...segments) {\n return new URL(joinPathSegments(...segments), document.baseURI).toString()\n}\n\nfunction joinPathSegments(...segments) {\n return segments.filter((segment) => !!segment).map((segment, i) => {\n if (i === 0) {\n return stripRightSlashes(segment);\n } else {\n return stripLeftSlashes(stripRightSlashes(segment));\n }\n }).filter(x => x.length).join(\"/\")\n}\n\nfunction stripLeftSlashes(s) {\n let i = 0;\n while (i < s.length) {\n if (s.charAt(i) !== \"/\") {\n break;\n }\n i++;\n }\n return s.substring(i);\n}\n\nfunction stripRightSlashes(s) {\n let i = s.length;\n while (i > 0) {\n if (s.charAt(i - 1) !== \"/\") {\n break;\n }\n i--;\n }\n return s.substring(0, i);\n}\n\n/**\n * Calculates the proper base URL for CanvasKit/Skwasm assets.\n * \n * @param {import(\"./types\").FlutterConfiguration} config\n * @param {import(\"./types\").BuildConfig} buildConfig\n */\nexport function getCanvaskitBaseUrl(config, buildConfig) {\n if (config.canvasKitBaseUrl) {\n return config.canvasKitBaseUrl;\n }\n if (buildConfig.engineRevision && !buildConfig.useLocalCanvasKit) {\n return joinPathSegments(\"https://www.gstatic.com/flutter-canvaskit\", buildConfig.engineRevision);\n }\n return \"canvaskit\";\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\n/**\n * Handles injecting the main Flutter web entrypoint (main.dart.js), and notifying\n * the user when Flutter is ready, through `didCreateEngineInitializer`.\n *\n * @see https://docs.flutter.dev/development/platform-integration/web/initialization\n */\nexport class FlutterEntrypointLoader {\n /**\n * Creates a FlutterEntrypointLoader.\n */\n constructor() {\n // Watchdog to prevent injecting the main entrypoint multiple times.\n this._scriptLoaded = false;\n }\n /**\n * Injects a TrustedTypesPolicy (or undefined if the feature is not supported).\n * @param {TrustedTypesPolicy | undefined} policy\n */\n setTrustedTypesPolicy(policy) {\n this._ttPolicy = policy;\n }\n /**\n * @deprecated\n * Loads flutter main entrypoint, specified by `entrypointUrl`, and calls a\n * user-specified `onEntrypointLoaded` callback with an EngineInitializer\n * object when it's done.\n *\n * @param {*} options\n * @returns {Promise | undefined} that will eventually resolve with an\n * EngineInitializer, or will be rejected with the error caused by the loader.\n * Returns undefined when an `onEntrypointLoaded` callback is supplied in `options`.\n */\n async loadEntrypoint(options) {\n const { entrypointUrl = resolveUrlWithSegments(\"main.dart.js\"), onEntrypointLoaded, nonce } =\n options || {};\n return this._loadJSEntrypoint(entrypointUrl, onEntrypointLoaded, nonce);\n }\n\n /**\n * Loads the entry point for a flutter application.\n * @param {import(\"./types\").ApplicationBuild} build\n * Information about the specific build that is to be loaded\n * @param {*} deps\n * External dependencies that may be needed to load the app.\n * @param {import(\"./types\").FlutterConfiguration} config\n * The application configuration. If no callback is specified, this will be\n * passed along to engine when initializing it.\n * @param {string} nonce\n * A nonce to apply to the main application script tag, if necessary.\n * @param {import(\"./types\").OnEntrypointLoadedCallback?} onEntrypointLoaded\n * An optional callback to invoke when the entrypoint is loaded. If no\n * callback is supplied, the engine initializer and app runner will be\n * automatically invoked on load, passing along the supplied flutter\n * configuration.\n */\n async load(build, deps, config, nonce, onEntrypointLoaded) {\n onEntrypointLoaded ??= (engineInitializer) => {\n engineInitializer.initializeEngine(config).then((appRunner) => appRunner.runApp())\n };\n const { entryPointBaseUrl } = config;\n if (build.compileTarget === \"dart2wasm\") {\n return this._loadWasmEntrypoint(build, deps, entryPointBaseUrl, onEntrypointLoaded);\n } else {\n const mainPath = build.mainJsPath ?? \"main.dart.js\";\n const entrypointUrl = resolveUrlWithSegments(entryPointBaseUrl, mainPath);\n return this._loadJSEntrypoint(entrypointUrl, onEntrypointLoaded, nonce);\n }\n }\n\n /**\n * Resolves the promise created by loadEntrypoint, and calls the `onEntrypointLoaded`\n * function supplied by the user (if needed).\n *\n * Called by Flutter through `_flutter.loader.didCreateEngineInitializer` method,\n * which is bound to the correct instance of the FlutterEntrypointLoader by\n * the FlutterLoader object.\n *\n * @param {Function} engineInitializer @see https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/js_interop/js_loader.dart#L42\n */\n didCreateEngineInitializer(engineInitializer) {\n if (typeof this._didCreateEngineInitializerResolve === \"function\") {\n this._didCreateEngineInitializerResolve(engineInitializer);\n // Remove the resolver after the first time, so Flutter Web can hot restart.\n this._didCreateEngineInitializerResolve = null;\n // Make the engine revert to \"auto\" initialization on hot restart.\n delete _flutter.loader.didCreateEngineInitializer;\n }\n if (typeof this._onEntrypointLoaded === \"function\") {\n this._onEntrypointLoaded(engineInitializer);\n }\n }\n /**\n * Injects a script tag into the DOM, and configures this loader to be able to\n * handle the \"entrypoint loaded\" notifications received from Flutter web.\n *\n * @param {string} entrypointUrl the URL of the script that will initialize\n * Flutter.\n * @param {Function} onEntrypointLoaded a callback that will be called when\n * Flutter web notifies this object that the entrypoint is\n * loaded.\n * @returns {Promise | undefined} a Promise that resolves when the entrypoint\n * is loaded, or undefined if `onEntrypointLoaded`\n * is a function.\n */\n _loadJSEntrypoint(entrypointUrl, onEntrypointLoaded, nonce) {\n const useCallback = typeof onEntrypointLoaded === \"function\";\n if (!this._scriptLoaded) {\n this._scriptLoaded = true;\n const scriptTag = this._createScriptTag(entrypointUrl, nonce);\n if (useCallback) {\n // Just inject the script tag, and return nothing; Flutter will call\n // `didCreateEngineInitializer` when it's done.\n console.debug(\"Injecting <script> tag. Using callback.\");\n this._onEntrypointLoaded = onEntrypointLoaded;\n document.head.append(scriptTag);\n } else {\n // Inject the script tag and return a promise that will get resolved\n // with the EngineInitializer object from Flutter when it calls\n // `didCreateEngineInitializer` later.\n return new Promise((resolve, reject) => {\n console.debug(\n \"Injecting <script> tag. Using Promises. Use the callback approach instead!\"\n );\n this._didCreateEngineInitializerResolve = resolve;\n scriptTag.addEventListener(\"error\", reject);\n document.head.append(scriptTag);\n });\n }\n }\n }\n\n /**\n *\n * @param {import(\"./types\").WasmApplicationBuild} build\n * @param {*} deps\n * @param {string} entryPointBaseUrl\n * @param {import(\"./types\").OnEntrypointLoadedCallback} onEntrypointLoaded\n */\n async _loadWasmEntrypoint(build, deps, entrypointBaseUrl, onEntrypointLoaded) {\n if (!this._scriptLoaded) {\n this._scriptLoaded = true;\n\n this._onEntrypointLoaded = onEntrypointLoaded;\n const { mainWasmPath, jsSupportRuntimePath } = build;\n const moduleUri = resolveUrlWithSegments(entrypointBaseUrl, mainWasmPath);\n let jsSupportRuntimeUri = resolveUrlWithSegments(entrypointBaseUrl, jsSupportRuntimePath);\n if (this._ttPolicy != null) {\n jsSupportRuntimeUri = this._ttPolicy.createScriptURL(jsSupportRuntimeUri);\n }\n const jsSupportRuntime = await import(jsSupportRuntimeUri);\n\n const compiledDartAppPromise = jsSupportRuntime.compileStreaming(fetch(moduleUri));\n\n let importsPromise;\n if (build.renderer === \"skwasm\") {\n importsPromise = (async () => {\n const skwasmInstance = await deps.skwasm;\n window._flutter_skwasmInstance = skwasmInstance;\n return {\n skwasm: skwasmInstance.wasmExports,\n skwasmWrapper: skwasmInstance,\n ffi: {\n memory: skwasmInstance.wasmMemory,\n },\n };\n })();\n } else {\n importsPromise = Promise.resolve({});\n }\n const compiledDartApp = await compiledDartAppPromise;\n const dartApp = await compiledDartApp.instantiate(await importsPromise);\n await dartApp.invokeMain();\n }\n }\n\n /**\n * Creates a script tag for the given URL.\n * @param {string} url\n * @returns {HTMLScriptElement}\n */\n _createScriptTag(url, nonce) {\n const scriptTag = document.createElement(\"script\");\n scriptTag.type = \"application/javascript\";\n if (nonce) {\n scriptTag.nonce = nonce;\n }\n // Apply TrustedTypes validation, if available.\n let trustedUrl = url;\n if (this._ttPolicy != null) {\n trustedUrl = this._ttPolicy.createScriptURL(url);\n }\n scriptTag.src = trustedUrl;\n return scriptTag;\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\n/**\n * Wraps `promise` in a timeout of the given `duration` in ms.\n *\n * Resolves/rejects with whatever the original `promises` does, or rejects\n * if `promise` takes longer to complete than `duration`. In that case,\n * `debugName` is used to compose a legible error message.\n *\n * If `duration` is < 0, the original `promise` is returned unchanged.\n * @param {Promise} promise\n * @param {number} duration\n * @param {string} debugName\n * @returns {Promise} a wrapped promise.\n */\nasync function timeout(promise, duration, debugName) {\n if (duration < 0) {\n return promise;\n }\n let timeoutId;\n const _clock = new Promise((_, reject) => {\n timeoutId = setTimeout(() => {\n reject(\n new Error(\n `${debugName} took more than ${duration}ms to resolve. Moving on.`,\n {\n cause: timeout,\n }\n )\n );\n }, duration);\n });\n return Promise.race([promise, _clock]).finally(() => {\n clearTimeout(timeoutId);\n });\n}\n\n/**\n * Handles loading/reloading Flutter's service worker, if configured.\n *\n * @see: https://developers.google.com/web/fundamentals/primers/service-workers\n */\nexport class FlutterServiceWorkerLoader {\n /**\n * Injects a TrustedTypesPolicy (or undefined if the feature is not supported).\n * @param {TrustedTypesPolicy | undefined} policy\n */\n setTrustedTypesPolicy(policy) {\n this._ttPolicy = policy;\n }\n /**\n * Returns a Promise that resolves when the latest Flutter service worker,\n * configured by `settings` has been loaded and activated.\n *\n * Otherwise, the promise is rejected with an error message.\n * @param {import(\"./types\").ServiceWorkerSettings} settings Service worker settings\n * @returns {Promise} that resolves when the latest serviceWorker is ready.\n */\n loadServiceWorker(settings) {\n if (!settings) {\n // In the future, settings = null -> uninstall service worker?\n console.debug(\"Null serviceWorker configuration. Skipping.\");\n return Promise.resolve();\n }\n if (!(\"serviceWorker\" in navigator)) {\n let errorMessage = \"Service Worker API unavailable.\";\n if (!window.isSecureContext) {\n errorMessage += \"\\nThe current context is NOT secure.\"\n errorMessage += \"\\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\";\n }\n return Promise.reject(\n new Error(errorMessage)\n );\n }\n const {\n serviceWorkerVersion,\n serviceWorkerUrl = resolveUrlWithSegments(`flutter_service_worker.js?v=${serviceWorkerVersion}`),\n timeoutMillis = 4000,\n } = settings;\n // Apply the TrustedTypes policy, if present.\n let url = serviceWorkerUrl;\n if (this._ttPolicy != null) {\n url = this._ttPolicy.createScriptURL(url);\n }\n const serviceWorkerActivation = navigator.serviceWorker\n .register(url)\n .then((serviceWorkerRegistration) => this._getNewServiceWorker(serviceWorkerRegistration, serviceWorkerVersion))\n .then(this._waitForServiceWorkerActivation);\n // Timeout race promise\n return timeout(\n serviceWorkerActivation,\n timeoutMillis,\n \"prepareServiceWorker\"\n );\n }\n /**\n * Returns the latest service worker for the given `serviceWorkerRegistration`.\n *\n * This might return the current service worker, if there's no new service worker\n * awaiting to be installed/updated.\n *\n * @param {ServiceWorkerRegistration} serviceWorkerRegistration\n * @param {string} serviceWorkerVersion\n * @returns {Promise<ServiceWorker>}\n */\n async _getNewServiceWorker(serviceWorkerRegistration, serviceWorkerVersion) {\n if (!serviceWorkerRegistration.active && (serviceWorkerRegistration.installing || serviceWorkerRegistration.waiting)) {\n // No active web worker and we have installed or are installing\n // one for the first time. Simply wait for it to activate.\n console.debug(\"Installing/Activating first service worker.\");\n return serviceWorkerRegistration.installing || serviceWorkerRegistration.waiting;\n } else if (!serviceWorkerRegistration.active.scriptURL.endsWith(serviceWorkerVersion)) {\n // When the app updates the serviceWorkerVersion changes, so we\n // need to ask the service worker to update.\n const newRegistration = await serviceWorkerRegistration.update();\n console.debug(\"Updating service worker.\");\n return newRegistration.installing || newRegistration.waiting || newRegistration.active;\n } else {\n console.debug(\"Loading from existing service worker.\");\n return serviceWorkerRegistration.active;\n }\n }\n /**\n * Returns a Promise that resolves when the `serviceWorker` changes its\n * state to \"activated\".\n *\n * @param {ServiceWorker} serviceWorker\n * @returns {Promise<void>}\n */\n async _waitForServiceWorkerActivation(serviceWorker) {\n if (!serviceWorker || serviceWorker.state === \"activated\") {\n if (!serviceWorker) {\n throw new Error(\"Cannot activate a null service worker!\");\n } else {\n console.debug(\"Service worker already active.\");\n return;\n }\n }\n return new Promise((resolve, _) => {\n serviceWorker.addEventListener(\"statechange\", () => {\n if (serviceWorker.state === \"activated\") {\n console.debug(\"Activated new service worker.\");\n resolve();\n }\n });\n });\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/**\n * Handles the creation of a TrustedTypes `policy` that validates URLs based\n * on an (optional) incoming array of RegExes.\n */\nexport class FlutterTrustedTypesPolicy {\n /**\n * Constructs the policy.\n * @param {[RegExp]} validPatterns the patterns to test URLs\n * @param {String} policyName the policy name (optional)\n */\n constructor(validPatterns, policyName = \"flutter-js\") {\n const patterns = validPatterns || [\n /\\.js$/,\n /\\.mjs$/,\n ];\n if (window.trustedTypes) {\n this.policy = trustedTypes.createPolicy(policyName, {\n createScriptURL: function (url) {\n // Return blob urls without manipulating them\n if (url.startsWith('blob:')) {\n return url;\n }\n // Validate other urls\n const parsed = new URL(url, window.location);\n const file = parsed.pathname.split(\"/\").pop();\n const matches = patterns.some((pattern) => pattern.test(file));\n if (matches) {\n return parsed.toString();\n }\n console.error(\n \"URL rejected by TrustedTypes policy\",\n policyName, \":\", url, \"(download prevented)\");\n }\n });\n }\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n// This is a little helper function that helps us start the fetch and compilation\n// of an emscripten wasm module in parallel with the fetch of its script.\nexport const createWasmInstantiator = (url) => {\n const modulePromise = WebAssembly.compileStreaming(fetch(url));\n return (imports, successCallback) => {\n (async () => {\n const module = await modulePromise;\n const instance = await WebAssembly.instantiate(module, imports);\n successCallback(instance, module);\n })();\n return {};\n };\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { createWasmInstantiator } from \"./instantiate_wasm.js\";\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\nexport const loadCanvasKit = (deps, config, browserEnvironment, canvasKitBaseUrl) => {\n window.flutterCanvasKitLoaded = (async () => {\n if (window.flutterCanvasKit) {\n // The user has set this global variable ahead of time, so we just return that.\n return window.flutterCanvasKit;\n }\n const supportsChromiumCanvasKit = browserEnvironment.hasChromiumBreakIterators && browserEnvironment.hasImageCodecs;\n if (!supportsChromiumCanvasKit && config.canvasKitVariant == \"chromium\") {\n throw \"Chromium CanvasKit variant specifically requested, but unsupported in this browser\";\n }\n const useChromiumCanvasKit = supportsChromiumCanvasKit && (config.canvasKitVariant !== \"full\");\n let baseUrl = canvasKitBaseUrl;\n if (useChromiumCanvasKit) {\n baseUrl = resolveUrlWithSegments(baseUrl, \"chromium\");\n }\n let canvasKitUrl = resolveUrlWithSegments(baseUrl, \"canvaskit.js\");\n if (deps.flutterTT.policy) {\n canvasKitUrl = deps.flutterTT.policy.createScriptURL(canvasKitUrl);\n }\n const wasmInstantiator = createWasmInstantiator(resolveUrlWithSegments(baseUrl, \"canvaskit.wasm\"));\n const canvasKitModule = await import(canvasKitUrl);\n window.flutterCanvasKit = await canvasKitModule.default({\n instantiateWasm: wasmInstantiator,\n });\n return window.flutterCanvasKit;\n })();\n return window.flutterCanvasKitLoaded;\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { createWasmInstantiator } from \"./instantiate_wasm.js\";\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\nexport const loadSkwasm = async (deps, config, browserEnvironment, baseUrl) => {\n const fileStem = (browserEnvironment.crossOriginIsolated && !config.forceSingleThreadedSkwasm) ? \"skwasm\" : \"skwasm_st\";\n const rawSkwasmUrl = resolveUrlWithSegments(baseUrl, `${fileStem}.js`)\n let skwasmUrl = rawSkwasmUrl;\n if (deps.flutterTT.policy) {\n skwasmUrl = deps.flutterTT.policy.createScriptURL(skwasmUrl);\n }\n const wasmInstantiator = createWasmInstantiator(resolveUrlWithSegments(baseUrl, `${fileStem}.wasm`));\n const skwasm = await import(skwasmUrl);\n return await skwasm.default({\n instantiateWasm: wasmInstantiator,\n // When hosted via a CDN or some other url that is not the same\n // origin as the main script of the page, we will fail to create\n // a web worker with the bootstrapping script. This workaround will\n // make sure that the worker JS can be loaded regardless of where\n // it is hosted.\n mainScriptUrlOrBlob: new Blob(\n [`import '${skwasmUrl}'`],\n { 'type': 'application/javascript' },\n ),\n });\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { browserEnvironment } from './browser_environment.js';\nimport { FlutterEntrypointLoader } from './entrypoint_loader.js';\nimport { FlutterServiceWorkerLoader } from './service_worker_loader.js';\nimport { FlutterTrustedTypesPolicy } from './trusted_types.js';\nimport { loadCanvasKit } from './canvaskit_loader.js';\nimport { loadSkwasm } from './skwasm_loader.js';\nimport { getCanvaskitBaseUrl } from './utils.js';\n\n/**\n * The public interface of _flutter.loader. Exposes two methods:\n * * loadEntrypoint (which coordinates the default Flutter web loading procedure)\n * * didCreateEngineInitializer (which is called by Flutter to notify that its\n * Engine is ready to be initialized)\n */\nexport class FlutterLoader {\n /**\n * @deprecated Use `load` instead.\n * Initializes the Flutter web app.\n * @param {*} options\n * @returns {Promise?} a (Deprecated) Promise that will eventually resolve\n * with an EngineInitializer, or will be rejected with\n * any error caused by the loader. Or Null, if the user\n * supplies an `onEntrypointLoaded` Function as an option.\n */\n async loadEntrypoint(options) {\n const { serviceWorker, ...entrypoint } = options || {};\n // A Trusted Types policy that is going to be used by the loader.\n const flutterTT = new FlutterTrustedTypesPolicy();\n // The FlutterServiceWorkerLoader instance could be injected as a dependency\n // (and dynamically imported from a module if not present).\n const serviceWorkerLoader = new FlutterServiceWorkerLoader();\n serviceWorkerLoader.setTrustedTypesPolicy(flutterTT.policy);\n await serviceWorkerLoader.loadServiceWorker(serviceWorker).catch(e => {\n // Regardless of what happens with the injection of the SW, the show must go on\n console.warn(\"Exception while loading service worker:\", e);\n });\n // The FlutterEntrypointLoader instance could be injected as a dependency\n // (and dynamically imported from a module if not present).\n const entrypointLoader = new FlutterEntrypointLoader();\n entrypointLoader.setTrustedTypesPolicy(flutterTT.policy);\n // Install the `didCreateEngineInitializer` listener where Flutter web expects it to be.\n this.didCreateEngineInitializer =\n entrypointLoader.didCreateEngineInitializer.bind(entrypointLoader);\n return entrypointLoader.loadEntrypoint(entrypoint);\n }\n\n /**\n * Loads and initializes a flutter application.\n * @param {Object} options\n * @param {import(\"/.types\".ServiceWorkerSettings?)} options.serviceWorkerSettings\n * Settings for the service worker to be loaded. Can pass `undefined` or\n * `null` to not launch a service worker at all.\n * @param {import(\"/.types\".OnEntryPointLoadedCallback)} options.onEntrypointLoaded\n * An optional callback to invoke \n * @param {string} options.nonce\n * A nonce to be applied to the main JS script when loading it, which may\n * be required by the sites Content-Security-Policy.\n * For more details, see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src here}.\n * @param {import(\"./types\".FlutterConfiguration)} arg.config\n */\n async load({\n serviceWorkerSettings,\n onEntrypointLoaded,\n nonce,\n config,\n } = {}) {\n config ??= {};\n\n /** @type {import(\"./types\").BuildConfig} */\n const buildConfig = _flutter.buildConfig;\n if (!buildConfig) {\n throw \"FlutterLoader.load requires _flutter.buildConfig to be set\";\n }\n\n const rendererIsCompatible = (renderer) => {\n switch (renderer) {\n case \"skwasm\":\n return browserEnvironment.hasChromiumBreakIterators\n && browserEnvironment.hasImageCodecs\n && browserEnvironment.supportsWasmGC;\n default:\n return true;\n }\n }\n\n /**\n * @param {import(\"./types\").ApplicationBuild} build\n * @param {import(\"./types\").WebRenderer} renderer\n **/\n const buildContainsRenderer = (build, renderer) => {\n switch (build.renderer) {\n // The \"auto\" build contains both canvaskit and html renderers.\n case \"auto\":\n return renderer == \"canvaskit\" || renderer == \"html\";\n default:\n return build.renderer == renderer;\n }\n }\n\n const buildIsCompatible = (build) => {\n if (build.compileTarget === \"dart2wasm\" && !browserEnvironment.supportsWasmGC) {\n return false;\n }\n if (config.renderer && !buildContainsRenderer(build, config.renderer)) {\n return false;\n }\n return rendererIsCompatible(build.renderer);\n };\n const build = buildConfig.builds.find(buildIsCompatible);\n if (!build) {\n throw \"FlutterLoader could not find a build compatible with configuration and environment.\";\n }\n\n const deps = {};\n deps.flutterTT = new FlutterTrustedTypesPolicy();\n if (serviceWorkerSettings) {\n deps.serviceWorkerLoader = new FlutterServiceWorkerLoader();\n deps.serviceWorkerLoader.setTrustedTypesPolicy(deps.flutterTT.policy);\n await deps.serviceWorkerLoader.loadServiceWorker(serviceWorkerSettings).catch(e => {\n // Regardless of what happens with the injection of the SW, the show must go on\n console.warn(\"Exception while loading service worker:\", e);\n });\n }\n\n const canvasKitBaseUrl = getCanvaskitBaseUrl(config, buildConfig);\n if (build.renderer === \"canvaskit\") {\n deps.canvasKit = loadCanvasKit(deps, config, browserEnvironment, canvasKitBaseUrl);\n } else if (build.renderer === \"skwasm\") {\n deps.skwasm = loadSkwasm(deps, config, browserEnvironment, canvasKitBaseUrl);\n }\n\n // The FlutterEntrypointLoader instance could be injected as a dependency\n // (and dynamically imported from a module if not present).\n const entrypointLoader = new FlutterEntrypointLoader();\n entrypointLoader.setTrustedTypesPolicy(deps.flutterTT.policy);\n // Install the `didCreateEngineInitializer` listener where Flutter web expects it to be.\n this.didCreateEngineInitializer =\n entrypointLoader.didCreateEngineInitializer.bind(entrypointLoader);\n return entrypointLoader.load(build, deps, config, nonce, onEntrypointLoaded);\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { FlutterLoader } from './loader.js';\n\nif (!window._flutter) {\n window._flutter = {};\n}\n\nif (!window._flutter.loader) {\n window._flutter.loader = new FlutterLoader();\n}\n"],
5
- "mappings": "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",
6
- "names": ["isBlink", "hasImageCodecs", "hasChromiumBreakIterators", "supportsWasmGC", "bytes", "browserEnvironment", "resolveUrlWithSegments", "segments", "joinPathSegments", "segment", "stripRightSlashes", "stripLeftSlashes", "x", "s", "i", "getCanvaskitBaseUrl", "config", "buildConfig", "FlutterEntrypointLoader", "policy", "options", "entrypointUrl", "resolveUrlWithSegments", "onEntrypointLoaded", "nonce", "build", "deps", "config", "engineInitializer", "appRunner", "entryPointBaseUrl", "mainPath", "useCallback", "scriptTag", "resolve", "reject", "entrypointBaseUrl", "mainWasmPath", "jsSupportRuntimePath", "moduleUri", "jsSupportRuntimeUri", "compiledDartAppPromise", "importsPromise", "skwasmInstance", "url", "trustedUrl", "timeout", "promise", "duration", "debugName", "timeoutId", "_clock", "_", "reject", "FlutterServiceWorkerLoader", "policy", "settings", "errorMessage", "serviceWorkerVersion", "serviceWorkerUrl", "resolveUrlWithSegments", "timeoutMillis", "url", "serviceWorkerActivation", "serviceWorkerRegistration", "newRegistration", "serviceWorker", "resolve", "FlutterTrustedTypesPolicy", "validPatterns", "policyName", "patterns", "url", "parsed", "file", "pattern", "createWasmInstantiator", "url", "modulePromise", "imports", "successCallback", "module", "instance", "loadCanvasKit", "deps", "config", "browserEnvironment", "canvasKitBaseUrl", "supportsChromiumCanvasKit", "useChromiumCanvasKit", "baseUrl", "resolveUrlWithSegments", "canvasKitUrl", "wasmInstantiator", "createWasmInstantiator", "canvasKitModule", "loadSkwasm", "deps", "config", "browserEnvironment", "baseUrl", "fileStem", "skwasmUrl", "resolveUrlWithSegments", "wasmInstantiator", "createWasmInstantiator", "FlutterLoader", "options", "serviceWorker", "entrypoint", "flutterTT", "FlutterTrustedTypesPolicy", "serviceWorkerLoader", "FlutterServiceWorkerLoader", "e", "entrypointLoader", "FlutterEntrypointLoader", "serviceWorkerSettings", "onEntrypointLoaded", "nonce", "config", "buildConfig", "rendererIsCompatible", "renderer", "browserEnvironment", "buildContainsRenderer", "build", "buildIsCompatible", "deps", "canvasKitBaseUrl", "getCanvaskitBaseUrl", "loadCanvasKit", "loadSkwasm", "FlutterLoader"]
4
+ "sourcesContent": ["// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nconst isBlink = () => {\n return (navigator.vendor === 'Google Inc.') ||\n (navigator.agent === 'Edg/');\n}\n\nconst hasImageCodecs = () => {\n if (typeof ImageDecoder === 'undefined') {\n return false;\n }\n // TODO(yjbanov): https://github.com/flutter/flutter/issues/122761\n // Frequently, when a browser launches an API that other browsers already\n // support, there are subtle incompatibilities that may cause apps to crash if,\n // we blindly adopt the new implementation. This check prevents us from picking\n // up potentially incompatible implementations of ImagdeDecoder API. Instead,\n // when a new browser engine launches the API, we'll evaluate it and enable it\n // explicitly.\n return isBlink();\n}\n\nconst hasChromiumBreakIterators = () => {\n return (typeof Intl.v8BreakIterator !== \"undefined\") &&\n (typeof Intl.Segmenter !== \"undefined\");\n}\n\nconst supportsWasmGC = () => {\n // This attempts to instantiate a wasm module that only will validate if the\n // final WasmGC spec is implemented in the browser.\n //\n // Copied from https://github.com/GoogleChromeLabs/wasm-feature-detect/blob/main/src/detectors/gc/index.js\n const bytes = [0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 95, 1, 120, 0];\n return WebAssembly.validate(new Uint8Array(bytes));\n}\n\n/**\n * @returns {import(\"./types\").BrowserEnvironment}\n */\nexport const browserEnvironment = {\n hasImageCodecs: hasImageCodecs(),\n hasChromiumBreakIterators: hasChromiumBreakIterators(),\n supportsWasmGC: supportsWasmGC(),\n crossOriginIsolated: window.crossOriginIsolated,\n};\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nexport function resolveUrlWithSegments(...segments) {\n return new URL(joinPathSegments(...segments), document.baseURI).toString()\n}\n\nfunction joinPathSegments(...segments) {\n return segments.filter((segment) => !!segment).map((segment, i) => {\n if (i === 0) {\n return stripRightSlashes(segment);\n } else {\n return stripLeftSlashes(stripRightSlashes(segment));\n }\n }).filter(x => x.length).join(\"/\")\n}\n\nfunction stripLeftSlashes(s) {\n let i = 0;\n while (i < s.length) {\n if (s.charAt(i) !== \"/\") {\n break;\n }\n i++;\n }\n return s.substring(i);\n}\n\nfunction stripRightSlashes(s) {\n let i = s.length;\n while (i > 0) {\n if (s.charAt(i - 1) !== \"/\") {\n break;\n }\n i--;\n }\n return s.substring(0, i);\n}\n\n/**\n * Calculates the proper base URL for CanvasKit/Skwasm assets.\n * \n * @param {import(\"./types\").FlutterConfiguration} config\n * @param {import(\"./types\").BuildConfig} buildConfig\n */\nexport function getCanvaskitBaseUrl(config, buildConfig) {\n if (config.canvasKitBaseUrl) {\n return config.canvasKitBaseUrl;\n }\n if (buildConfig.engineRevision && !buildConfig.useLocalCanvasKit) {\n return joinPathSegments(\"https://www.gstatic.com/flutter-canvaskit\", buildConfig.engineRevision);\n }\n return \"canvaskit\";\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\n/**\n * Handles injecting the main Flutter web entrypoint (main.dart.js), and notifying\n * the user when Flutter is ready, through `didCreateEngineInitializer`.\n *\n * @see https://docs.flutter.dev/development/platform-integration/web/initialization\n */\nexport class FlutterEntrypointLoader {\n /**\n * Creates a FlutterEntrypointLoader.\n */\n constructor() {\n // Watchdog to prevent injecting the main entrypoint multiple times.\n this._scriptLoaded = false;\n }\n /**\n * Injects a TrustedTypesPolicy (or undefined if the feature is not supported).\n * @param {TrustedTypesPolicy | undefined} policy\n */\n setTrustedTypesPolicy(policy) {\n this._ttPolicy = policy;\n }\n /**\n * @deprecated\n * Loads flutter main entrypoint, specified by `entrypointUrl`, and calls a\n * user-specified `onEntrypointLoaded` callback with an EngineInitializer\n * object when it's done.\n *\n * @param {*} options\n * @returns {Promise | undefined} that will eventually resolve with an\n * EngineInitializer, or will be rejected with the error caused by the loader.\n * Returns undefined when an `onEntrypointLoaded` callback is supplied in `options`.\n */\n async loadEntrypoint(options) {\n const { entrypointUrl = resolveUrlWithSegments(\"main.dart.js\"), onEntrypointLoaded, nonce } =\n options || {};\n return this._loadJSEntrypoint(entrypointUrl, onEntrypointLoaded, nonce);\n }\n\n /**\n * Loads the entry point for a flutter application.\n * @param {import(\"./types\").ApplicationBuild} build\n * Information about the specific build that is to be loaded\n * @param {*} deps\n * External dependencies that may be needed to load the app.\n * @param {import(\"./types\").FlutterConfiguration} config\n * The application configuration. If no callback is specified, this will be\n * passed along to engine when initializing it.\n * @param {string} nonce\n * A nonce to apply to the main application script tag, if necessary.\n * @param {import(\"./types\").OnEntrypointLoadedCallback?} onEntrypointLoaded\n * An optional callback to invoke when the entrypoint is loaded. If no\n * callback is supplied, the engine initializer and app runner will be\n * automatically invoked on load, passing along the supplied flutter\n * configuration.\n */\n async load(build, deps, config, nonce, onEntrypointLoaded) {\n onEntrypointLoaded ??= (engineInitializer) => {\n engineInitializer.initializeEngine(config).then((appRunner) => appRunner.runApp())\n };\n const { entryPointBaseUrl } = config;\n if (build.compileTarget === \"dart2wasm\") {\n return this._loadWasmEntrypoint(build, deps, entryPointBaseUrl, onEntrypointLoaded);\n } else {\n const mainPath = build.mainJsPath ?? \"main.dart.js\";\n const entrypointUrl = resolveUrlWithSegments(entryPointBaseUrl, mainPath);\n return this._loadJSEntrypoint(entrypointUrl, onEntrypointLoaded, nonce);\n }\n }\n\n /**\n * Resolves the promise created by loadEntrypoint, and calls the `onEntrypointLoaded`\n * function supplied by the user (if needed).\n *\n * Called by Flutter through `_flutter.loader.didCreateEngineInitializer` method,\n * which is bound to the correct instance of the FlutterEntrypointLoader by\n * the FlutterLoader object.\n *\n * @param {Function} engineInitializer @see https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/js_interop/js_loader.dart#L42\n */\n didCreateEngineInitializer(engineInitializer) {\n if (typeof this._didCreateEngineInitializerResolve === \"function\") {\n this._didCreateEngineInitializerResolve(engineInitializer);\n // Remove the resolver after the first time, so Flutter Web can hot restart.\n this._didCreateEngineInitializerResolve = null;\n // Make the engine revert to \"auto\" initialization on hot restart.\n delete _flutter.loader.didCreateEngineInitializer;\n }\n if (typeof this._onEntrypointLoaded === \"function\") {\n this._onEntrypointLoaded(engineInitializer);\n }\n }\n /**\n * Injects a script tag into the DOM, and configures this loader to be able to\n * handle the \"entrypoint loaded\" notifications received from Flutter web.\n *\n * @param {string} entrypointUrl the URL of the script that will initialize\n * Flutter.\n * @param {Function} onEntrypointLoaded a callback that will be called when\n * Flutter web notifies this object that the entrypoint is\n * loaded.\n * @returns {Promise | undefined} a Promise that resolves when the entrypoint\n * is loaded, or undefined if `onEntrypointLoaded`\n * is a function.\n */\n _loadJSEntrypoint(entrypointUrl, onEntrypointLoaded, nonce) {\n const useCallback = typeof onEntrypointLoaded === \"function\";\n if (!this._scriptLoaded) {\n this._scriptLoaded = true;\n const scriptTag = this._createScriptTag(entrypointUrl, nonce);\n if (useCallback) {\n // Just inject the script tag, and return nothing; Flutter will call\n // `didCreateEngineInitializer` when it's done.\n console.debug(\"Injecting <script> tag. Using callback.\");\n this._onEntrypointLoaded = onEntrypointLoaded;\n document.head.append(scriptTag);\n } else {\n // Inject the script tag and return a promise that will get resolved\n // with the EngineInitializer object from Flutter when it calls\n // `didCreateEngineInitializer` later.\n return new Promise((resolve, reject) => {\n console.debug(\n \"Injecting <script> tag. Using Promises. Use the callback approach instead!\"\n );\n this._didCreateEngineInitializerResolve = resolve;\n scriptTag.addEventListener(\"error\", reject);\n document.head.append(scriptTag);\n });\n }\n }\n }\n\n /**\n *\n * @param {import(\"./types\").WasmApplicationBuild} build\n * @param {*} deps\n * @param {string} entryPointBaseUrl\n * @param {import(\"./types\").OnEntrypointLoadedCallback} onEntrypointLoaded\n */\n async _loadWasmEntrypoint(build, deps, entrypointBaseUrl, onEntrypointLoaded) {\n if (!this._scriptLoaded) {\n this._scriptLoaded = true;\n\n this._onEntrypointLoaded = onEntrypointLoaded;\n const { mainWasmPath, jsSupportRuntimePath } = build;\n const moduleUri = resolveUrlWithSegments(entrypointBaseUrl, mainWasmPath);\n let jsSupportRuntimeUri = resolveUrlWithSegments(entrypointBaseUrl, jsSupportRuntimePath);\n if (this._ttPolicy != null) {\n jsSupportRuntimeUri = this._ttPolicy.createScriptURL(jsSupportRuntimeUri);\n }\n const jsSupportRuntime = await import(jsSupportRuntimeUri);\n\n const compiledDartAppPromise = jsSupportRuntime.compileStreaming(fetch(moduleUri));\n\n let importsPromise;\n if (build.renderer === \"skwasm\") {\n importsPromise = (async () => {\n const skwasmInstance = await deps.skwasm;\n window._flutter_skwasmInstance = skwasmInstance;\n return {\n skwasm: skwasmInstance.wasmExports,\n skwasmWrapper: skwasmInstance,\n ffi: {\n memory: skwasmInstance.wasmMemory,\n },\n };\n })();\n } else {\n importsPromise = Promise.resolve({});\n }\n const compiledDartApp = await compiledDartAppPromise;\n const dartApp = await compiledDartApp.instantiate(await importsPromise);\n await dartApp.invokeMain();\n }\n }\n\n /**\n * Creates a script tag for the given URL.\n * @param {string} url\n * @returns {HTMLScriptElement}\n */\n _createScriptTag(url, nonce) {\n const scriptTag = document.createElement(\"script\");\n scriptTag.type = \"application/javascript\";\n if (nonce) {\n scriptTag.nonce = nonce;\n }\n // Apply TrustedTypes validation, if available.\n let trustedUrl = url;\n if (this._ttPolicy != null) {\n trustedUrl = this._ttPolicy.createScriptURL(url);\n }\n scriptTag.src = trustedUrl;\n return scriptTag;\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\n/**\n * Wraps `promise` in a timeout of the given `duration` in ms.\n *\n * Resolves/rejects with whatever the original `promises` does, or rejects\n * if `promise` takes longer to complete than `duration`. In that case,\n * `debugName` is used to compose a legible error message.\n *\n * If `duration` is < 0, the original `promise` is returned unchanged.\n * @param {Promise} promise\n * @param {number} duration\n * @param {string} debugName\n * @returns {Promise} a wrapped promise.\n */\nasync function timeout(promise, duration, debugName) {\n if (duration < 0) {\n return promise;\n }\n let timeoutId;\n const _clock = new Promise((_, reject) => {\n timeoutId = setTimeout(() => {\n reject(\n new Error(\n `${debugName} took more than ${duration}ms to resolve. Moving on.`,\n {\n cause: timeout,\n }\n )\n );\n }, duration);\n });\n return Promise.race([promise, _clock]).finally(() => {\n clearTimeout(timeoutId);\n });\n}\n\n/**\n * Handles loading/reloading Flutter's service worker, if configured.\n *\n * @see: https://developers.google.com/web/fundamentals/primers/service-workers\n */\nexport class FlutterServiceWorkerLoader {\n /**\n * Injects a TrustedTypesPolicy (or undefined if the feature is not supported).\n * @param {TrustedTypesPolicy | undefined} policy\n */\n setTrustedTypesPolicy(policy) {\n this._ttPolicy = policy;\n }\n /**\n * Returns a Promise that resolves when the latest Flutter service worker,\n * configured by `settings` has been loaded and activated.\n *\n * Otherwise, the promise is rejected with an error message.\n * @param {import(\"./types\").ServiceWorkerSettings} settings Service worker settings\n * @returns {Promise} that resolves when the latest serviceWorker is ready.\n */\n loadServiceWorker(settings) {\n if (!settings) {\n // In the future, settings = null -> uninstall service worker?\n console.debug(\"Null serviceWorker configuration. Skipping.\");\n return Promise.resolve();\n }\n if (!(\"serviceWorker\" in navigator)) {\n let errorMessage = \"Service Worker API unavailable.\";\n if (!window.isSecureContext) {\n errorMessage += \"\\nThe current context is NOT secure.\"\n errorMessage += \"\\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\";\n }\n return Promise.reject(\n new Error(errorMessage)\n );\n }\n const {\n serviceWorkerVersion,\n serviceWorkerUrl = resolveUrlWithSegments(`flutter_service_worker.js?v=${serviceWorkerVersion}`),\n timeoutMillis = 4000,\n } = settings;\n // Apply the TrustedTypes policy, if present.\n let url = serviceWorkerUrl;\n if (this._ttPolicy != null) {\n url = this._ttPolicy.createScriptURL(url);\n }\n const serviceWorkerActivation = navigator.serviceWorker\n .register(url)\n .then((serviceWorkerRegistration) => this._getNewServiceWorker(serviceWorkerRegistration, serviceWorkerVersion))\n .then(this._waitForServiceWorkerActivation);\n // Timeout race promise\n return timeout(\n serviceWorkerActivation,\n timeoutMillis,\n \"prepareServiceWorker\"\n );\n }\n /**\n * Returns the latest service worker for the given `serviceWorkerRegistration`.\n *\n * This might return the current service worker, if there's no new service worker\n * awaiting to be installed/updated.\n *\n * @param {ServiceWorkerRegistration} serviceWorkerRegistration\n * @param {string} serviceWorkerVersion\n * @returns {Promise<ServiceWorker>}\n */\n async _getNewServiceWorker(serviceWorkerRegistration, serviceWorkerVersion) {\n if (!serviceWorkerRegistration.active && (serviceWorkerRegistration.installing || serviceWorkerRegistration.waiting)) {\n // No active web worker and we have installed or are installing\n // one for the first time. Simply wait for it to activate.\n console.debug(\"Installing/Activating first service worker.\");\n return serviceWorkerRegistration.installing || serviceWorkerRegistration.waiting;\n } else if (!serviceWorkerRegistration.active.scriptURL.endsWith(serviceWorkerVersion)) {\n // When the app updates the serviceWorkerVersion changes, so we\n // need to ask the service worker to update.\n const newRegistration = await serviceWorkerRegistration.update();\n console.debug(\"Updating service worker.\");\n return newRegistration.installing || newRegistration.waiting || newRegistration.active;\n } else {\n console.debug(\"Loading from existing service worker.\");\n return serviceWorkerRegistration.active;\n }\n }\n /**\n * Returns a Promise that resolves when the `serviceWorker` changes its\n * state to \"activated\".\n *\n * @param {ServiceWorker} serviceWorker\n * @returns {Promise<void>}\n */\n async _waitForServiceWorkerActivation(serviceWorker) {\n if (!serviceWorker || serviceWorker.state === \"activated\") {\n if (!serviceWorker) {\n throw new Error(\"Cannot activate a null service worker!\");\n } else {\n console.debug(\"Service worker already active.\");\n return;\n }\n }\n return new Promise((resolve, _) => {\n serviceWorker.addEventListener(\"statechange\", () => {\n if (serviceWorker.state === \"activated\") {\n console.debug(\"Activated new service worker.\");\n resolve();\n }\n });\n });\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/**\n * Handles the creation of a TrustedTypes `policy` that validates URLs based\n * on an (optional) incoming array of RegExes.\n */\nexport class FlutterTrustedTypesPolicy {\n /**\n * Constructs the policy.\n * @param {[RegExp]} validPatterns the patterns to test URLs\n * @param {String} policyName the policy name (optional)\n */\n constructor(validPatterns, policyName = \"flutter-js\") {\n const patterns = validPatterns || [\n /\\.js$/,\n /\\.mjs$/,\n ];\n if (window.trustedTypes) {\n this.policy = trustedTypes.createPolicy(policyName, {\n createScriptURL: function (url) {\n // Return blob urls without manipulating them\n if (url.startsWith('blob:')) {\n return url;\n }\n // Validate other urls\n const parsed = new URL(url, window.location);\n const file = parsed.pathname.split(\"/\").pop();\n const matches = patterns.some((pattern) => pattern.test(file));\n if (matches) {\n return parsed.toString();\n }\n console.error(\n \"URL rejected by TrustedTypes policy\",\n policyName, \":\", url, \"(download prevented)\");\n }\n });\n }\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n// This is a little helper function that helps us start the fetch and compilation\n// of an emscripten wasm module in parallel with the fetch of its script.\nexport const createWasmInstantiator = (url) => {\n const modulePromise = WebAssembly.compileStreaming(fetch(url));\n return (imports, successCallback) => {\n (async () => {\n const module = await modulePromise;\n const instance = await WebAssembly.instantiate(module, imports);\n successCallback(instance, module);\n })();\n return {};\n };\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { createWasmInstantiator } from \"./instantiate_wasm.js\";\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\nexport const loadCanvasKit = (deps, config, browserEnvironment, canvasKitBaseUrl) => {\n window.flutterCanvasKitLoaded = (async () => {\n if (window.flutterCanvasKit) {\n // The user has set this global variable ahead of time, so we just return that.\n return window.flutterCanvasKit;\n }\n const supportsChromiumCanvasKit = browserEnvironment.hasChromiumBreakIterators && browserEnvironment.hasImageCodecs;\n if (!supportsChromiumCanvasKit && config.canvasKitVariant == \"chromium\") {\n throw \"Chromium CanvasKit variant specifically requested, but unsupported in this browser\";\n }\n const useChromiumCanvasKit = supportsChromiumCanvasKit && (config.canvasKitVariant !== \"full\");\n let baseUrl = canvasKitBaseUrl;\n if (useChromiumCanvasKit) {\n baseUrl = resolveUrlWithSegments(baseUrl, \"chromium\");\n }\n let canvasKitUrl = resolveUrlWithSegments(baseUrl, \"canvaskit.js\");\n if (deps.flutterTT.policy) {\n canvasKitUrl = deps.flutterTT.policy.createScriptURL(canvasKitUrl);\n }\n const wasmInstantiator = createWasmInstantiator(resolveUrlWithSegments(baseUrl, \"canvaskit.wasm\"));\n const canvasKitModule = await import(canvasKitUrl);\n window.flutterCanvasKit = await canvasKitModule.default({\n instantiateWasm: wasmInstantiator,\n });\n return window.flutterCanvasKit;\n })();\n return window.flutterCanvasKitLoaded;\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { createWasmInstantiator } from \"./instantiate_wasm.js\";\nimport { resolveUrlWithSegments } from \"./utils.js\";\n\nexport const loadSkwasm = async (deps, config, browserEnvironment, baseUrl) => {\n const rawSkwasmUrl = resolveUrlWithSegments(baseUrl, 'skwasm.js')\n let skwasmUrl = rawSkwasmUrl;\n if (deps.flutterTT.policy) {\n skwasmUrl = deps.flutterTT.policy.createScriptURL(skwasmUrl);\n }\n const wasmInstantiator = createWasmInstantiator(resolveUrlWithSegments(baseUrl, 'skwasm.wasm'));\n const skwasm = await import(skwasmUrl);\n return await skwasm.default({\n skwasmSingleThreaded: !browserEnvironment.crossOriginIsolated || config.forceSingleThreadedSkwasm,\n instantiateWasm: wasmInstantiator,\n locateFile: (filename, scriptDirectory) => {\n // The wasm workers API has a separate .ww.js file that bootstraps the\n // web worker. However, it turns out this worker bootstrapper doesn't\n // actually work with ES6 modules, which we have enabled. So we instead\n // pass our own bootstrapper that loads skwasm.js as an ES6 module, and\n // queues/flushes pending messages that were received during the\n // asynchronous load.\n if (filename.endsWith('.ww.js')) {\n const url = resolveUrlWithSegments(baseUrl, filename);\n return URL.createObjectURL(new Blob(\n [`\n\"use strict\";\n\nlet eventListener;\neventListener = (message) => {\n const pendingMessages = [];\n const data = message.data;\n data[\"instantiateWasm\"] = (info,receiveInstance) => {\n const instance = new WebAssembly.Instance(data[\"wasm\"], info);\n return receiveInstance(instance, data[\"wasm\"])\n };\n import(data.js).then(async (skwasm) => {\n await skwasm.default(data);\n\n removeEventListener(\"message\", eventListener);\n for (const message of pendingMessages) {\n dispatchEvent(message);\n }\n });\n removeEventListener(\"message\", eventListener);\n eventListener = (message) => {\n\n pendingMessages.push(message);\n };\n\n addEventListener(\"message\", eventListener);\n};\naddEventListener(\"message\", eventListener);\n`\n ],\n { 'type': 'application/javascript' }));\n }\n return url;\n },\n // Because of the above workaround, the worker is just a blob and\n // can't locate the main script using a relative path to itself,\n // so we pass the main script location in.\n mainScriptUrlOrBlob: rawSkwasmUrl,\n });\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { browserEnvironment } from './browser_environment.js';\nimport { FlutterEntrypointLoader } from './entrypoint_loader.js';\nimport { FlutterServiceWorkerLoader } from './service_worker_loader.js';\nimport { FlutterTrustedTypesPolicy } from './trusted_types.js';\nimport { loadCanvasKit } from './canvaskit_loader.js';\nimport { loadSkwasm } from './skwasm_loader.js';\nimport { getCanvaskitBaseUrl } from './utils.js';\n\n/**\n * The public interface of _flutter.loader. Exposes two methods:\n * * loadEntrypoint (which coordinates the default Flutter web loading procedure)\n * * didCreateEngineInitializer (which is called by Flutter to notify that its\n * Engine is ready to be initialized)\n */\nexport class FlutterLoader {\n /**\n * @deprecated Use `load` instead.\n * Initializes the Flutter web app.\n * @param {*} options\n * @returns {Promise?} a (Deprecated) Promise that will eventually resolve\n * with an EngineInitializer, or will be rejected with\n * any error caused by the loader. Or Null, if the user\n * supplies an `onEntrypointLoaded` Function as an option.\n */\n async loadEntrypoint(options) {\n const { serviceWorker, ...entrypoint } = options || {};\n // A Trusted Types policy that is going to be used by the loader.\n const flutterTT = new FlutterTrustedTypesPolicy();\n // The FlutterServiceWorkerLoader instance could be injected as a dependency\n // (and dynamically imported from a module if not present).\n const serviceWorkerLoader = new FlutterServiceWorkerLoader();\n serviceWorkerLoader.setTrustedTypesPolicy(flutterTT.policy);\n await serviceWorkerLoader.loadServiceWorker(serviceWorker).catch(e => {\n // Regardless of what happens with the injection of the SW, the show must go on\n console.warn(\"Exception while loading service worker:\", e);\n });\n // The FlutterEntrypointLoader instance could be injected as a dependency\n // (and dynamically imported from a module if not present).\n const entrypointLoader = new FlutterEntrypointLoader();\n entrypointLoader.setTrustedTypesPolicy(flutterTT.policy);\n // Install the `didCreateEngineInitializer` listener where Flutter web expects it to be.\n this.didCreateEngineInitializer =\n entrypointLoader.didCreateEngineInitializer.bind(entrypointLoader);\n return entrypointLoader.loadEntrypoint(entrypoint);\n }\n\n /**\n * Loads and initializes a flutter application.\n * @param {Object} options\n * @param {import(\"/.types\".ServiceWorkerSettings?)} options.serviceWorkerSettings\n * Settings for the service worker to be loaded. Can pass `undefined` or\n * `null` to not launch a service worker at all.\n * @param {import(\"/.types\".OnEntryPointLoadedCallback)} options.onEntrypointLoaded\n * An optional callback to invoke \n * @param {string} options.nonce\n * A nonce to be applied to the main JS script when loading it, which may\n * be required by the sites Content-Security-Policy.\n * For more details, see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src here}.\n * @param {import(\"./types\".FlutterConfiguration)} arg.config\n */\n async load({\n serviceWorkerSettings,\n onEntrypointLoaded,\n nonce,\n config,\n } = {}) {\n config ??= {};\n\n /** @type {import(\"./types\").BuildConfig} */\n const buildConfig = _flutter.buildConfig;\n if (!buildConfig) {\n throw \"FlutterLoader.load requires _flutter.buildConfig to be set\";\n }\n\n const rendererIsCompatible = (renderer) => {\n switch (renderer) {\n case \"skwasm\":\n return browserEnvironment.hasChromiumBreakIterators\n && browserEnvironment.hasImageCodecs\n && browserEnvironment.supportsWasmGC;\n default:\n return true;\n }\n }\n\n /**\n * @param {import(\"./types\").ApplicationBuild} build\n * @param {import(\"./types\").WebRenderer} renderer\n **/\n const buildContainsRenderer = (build, renderer) => {\n return build.renderer == renderer;\n }\n\n const buildIsCompatible = (build) => {\n if (build.compileTarget === \"dart2wasm\" && !browserEnvironment.supportsWasmGC) {\n return false;\n }\n if (config.renderer && !buildContainsRenderer(build, config.renderer)) {\n return false;\n }\n return rendererIsCompatible(build.renderer);\n };\n const build = buildConfig.builds.find(buildIsCompatible);\n if (!build) {\n throw \"FlutterLoader could not find a build compatible with configuration and environment.\";\n }\n\n const deps = {};\n deps.flutterTT = new FlutterTrustedTypesPolicy();\n if (serviceWorkerSettings) {\n deps.serviceWorkerLoader = new FlutterServiceWorkerLoader();\n deps.serviceWorkerLoader.setTrustedTypesPolicy(deps.flutterTT.policy);\n await deps.serviceWorkerLoader.loadServiceWorker(serviceWorkerSettings).catch(e => {\n // Regardless of what happens with the injection of the SW, the show must go on\n console.warn(\"Exception while loading service worker:\", e);\n });\n }\n\n const canvasKitBaseUrl = getCanvaskitBaseUrl(config, buildConfig);\n if (build.renderer === \"canvaskit\") {\n deps.canvasKit = loadCanvasKit(deps, config, browserEnvironment, canvasKitBaseUrl);\n } else if (build.renderer === \"skwasm\") {\n deps.skwasm = loadSkwasm(deps, config, browserEnvironment, canvasKitBaseUrl);\n }\n\n // The FlutterEntrypointLoader instance could be injected as a dependency\n // (and dynamically imported from a module if not present).\n const entrypointLoader = new FlutterEntrypointLoader();\n entrypointLoader.setTrustedTypesPolicy(deps.flutterTT.policy);\n // Install the `didCreateEngineInitializer` listener where Flutter web expects it to be.\n this.didCreateEngineInitializer =\n entrypointLoader.didCreateEngineInitializer.bind(entrypointLoader);\n return entrypointLoader.load(build, deps, config, nonce, onEntrypointLoaded);\n }\n}\n", "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport { FlutterLoader } from './loader.js';\n\nif (!window._flutter) {\n window._flutter = {};\n}\n\nif (!window._flutter.loader) {\n window._flutter.loader = new FlutterLoader();\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["isBlink", "hasImageCodecs", "hasChromiumBreakIterators", "supportsWasmGC", "bytes", "browserEnvironment", "resolveUrlWithSegments", "segments", "joinPathSegments", "segment", "stripRightSlashes", "stripLeftSlashes", "x", "i", "getCanvaskitBaseUrl", "config", "buildConfig", "FlutterEntrypointLoader", "policy", "options", "entrypointUrl", "resolveUrlWithSegments", "onEntrypointLoaded", "nonce", "build", "deps", "config", "engineInitializer", "appRunner", "entryPointBaseUrl", "mainPath", "useCallback", "scriptTag", "resolve", "reject", "entrypointBaseUrl", "mainWasmPath", "jsSupportRuntimePath", "moduleUri", "jsSupportRuntimeUri", "compiledDartAppPromise", "importsPromise", "skwasmInstance", "url", "trustedUrl", "timeout", "promise", "duration", "debugName", "timeoutId", "_clock", "_", "reject", "FlutterServiceWorkerLoader", "policy", "settings", "errorMessage", "serviceWorkerVersion", "serviceWorkerUrl", "resolveUrlWithSegments", "timeoutMillis", "url", "serviceWorkerActivation", "serviceWorkerRegistration", "newRegistration", "serviceWorker", "resolve", "FlutterTrustedTypesPolicy", "validPatterns", "policyName", "patterns", "url", "parsed", "file", "pattern", "createWasmInstantiator", "url", "modulePromise", "imports", "successCallback", "module", "instance", "loadCanvasKit", "deps", "config", "browserEnvironment", "canvasKitBaseUrl", "supportsChromiumCanvasKit", "useChromiumCanvasKit", "baseUrl", "resolveUrlWithSegments", "canvasKitUrl", "wasmInstantiator", "createWasmInstantiator", "canvasKitModule", "loadSkwasm", "deps", "config", "browserEnvironment", "baseUrl", "rawSkwasmUrl", "resolveUrlWithSegments", "skwasmUrl", "wasmInstantiator", "createWasmInstantiator", "filename", "scriptDirectory", "url", "FlutterLoader", "options", "serviceWorker", "entrypoint", "flutterTT", "FlutterTrustedTypesPolicy", "serviceWorkerLoader", "FlutterServiceWorkerLoader", "e", "entrypointLoader", "FlutterEntrypointLoader", "serviceWorkerSettings", "onEntrypointLoaded", "nonce", "config", "buildConfig", "rendererIsCompatible", "renderer", "browserEnvironment", "buildContainsRenderer", "build", "buildIsCompatible", "deps", "canvasKitBaseUrl", "getCanvaskitBaseUrl", "loadCanvasKit", "loadSkwasm", "FlutterLoader"]
7
7
  }
@@ -1,31 +1,71 @@
1
- (()=>{var P=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:P(),L=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",W=()=>{let n=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(n))},w={hasImageCodecs:E(),hasChromiumBreakIterators:L(),supportsWasmGC:W(),crossOriginIsolated:window.crossOriginIsolated};function l(...n){return new URL(C(...n),document.baseURI).toString()}function C(...n){return n.filter(t=>!!t).map((t,i)=>i===0?_(t):j(_(t))).filter(t=>t.length).join("/")}function j(n){let t=0;for(;t<n.length&&n.charAt(t)==="/";)t++;return n.substring(t)}function _(n){let t=n.length;for(;t>0&&n.charAt(t-1)==="/";)t--;return n.substring(0,t)}function T(n,t){return n.canvasKitBaseUrl?n.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?C("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}var v=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(t){this._ttPolicy=t}async loadEntrypoint(t){let{entrypointUrl:i=l("main.dart.js"),onEntrypointLoaded:r,nonce:e}=t||{};return this._loadJSEntrypoint(i,r,e)}async load(t,i,r,e,a){a??=o=>{o.initializeEngine(r).then(c=>c.runApp())};let{entryPointBaseUrl:s}=r;if(t.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(t,i,s,a);{let o=t.mainJsPath??"main.dart.js",c=l(s,o);return this._loadJSEntrypoint(c,a,e)}}didCreateEngineInitializer(t){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(t),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(t)}_loadJSEntrypoint(t,i,r){let e=typeof i=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let a=this._createScriptTag(t,r);if(e)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(a);else return new Promise((s,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=s,a.addEventListener("error",o),document.head.append(a)})}}async _loadWasmEntrypoint(t,i,r,e){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=e;let{mainWasmPath:a,jsSupportRuntimePath:s}=t,o=l(r,a),c=l(r,s);this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let d=(await import(c)).compileStreaming(fetch(o)),f;t.renderer==="skwasm"?f=(async()=>{let m=await i.skwasm;return window._flutter_skwasmInstance=m,{skwasm:m.wasmExports,skwasmWrapper:m,ffi:{memory:m.wasmMemory}}})():f=Promise.resolve({}),await(await(await d).instantiate(await f)).invokeMain()}}_createScriptTag(t,i){let r=document.createElement("script");r.type="application/javascript",i&&(r.nonce=i);let e=t;return this._ttPolicy!=null&&(e=this._ttPolicy.createScriptURL(t)),r.src=e,r}};async function I(n,t,i){if(t<0)return n;let r,e=new Promise((a,s)=>{r=setTimeout(()=>{s(new Error(`${i} took more than ${t}ms to resolve. Moving on.`,{cause:I}))},t)});return Promise.race([n,e]).finally(()=>{clearTimeout(r)})}var y=class{setTrustedTypesPolicy(t){this._ttPolicy=t}loadServiceWorker(t){if(!t)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
1
+ (()=>{var U=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:U(),W=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",P=()=>{let s=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(s))},p={hasImageCodecs:E(),hasChromiumBreakIterators:W(),supportsWasmGC:P(),crossOriginIsolated:window.crossOriginIsolated};function l(...s){return new URL(_(...s),document.baseURI).toString()}function _(...s){return s.filter(e=>!!e).map((e,i)=>i===0?C(e):j(C(e))).filter(e=>e.length).join("/")}function j(s){let e=0;for(;e<s.length&&s.charAt(e)==="/";)e++;return s.substring(e)}function C(s){let e=s.length;for(;e>0&&s.charAt(e-1)==="/";)e--;return s.substring(0,e)}function L(s,e){return s.canvasKitBaseUrl?s.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?_("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var h=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:i=l("main.dart.js"),onEntrypointLoaded:r,nonce:t}=e||{};return this._loadJSEntrypoint(i,r,t)}async load(e,i,r,t,n){n??=o=>{o.initializeEngine(r).then(c=>c.runApp())};let{entryPointBaseUrl:a}=r;if(e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,i,a,n);{let o=e.mainJsPath??"main.dart.js",c=l(a,o);return this._loadJSEntrypoint(c,n,t)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,i,r){let t=typeof i=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(t)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(n);else return new Promise((a,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=a,n.addEventListener("error",o),document.head.append(n)})}}async _loadWasmEntrypoint(e,i,r,t){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=t;let{mainWasmPath:n,jsSupportRuntimePath:a}=e,o=l(r,n),c=l(r,a);this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let d=(await import(c)).compileStreaming(fetch(o)),w;e.renderer==="skwasm"?w=(async()=>{let f=await i.skwasm;return window._flutter_skwasmInstance=f,{skwasm:f.wasmExports,skwasmWrapper:f,ffi:{memory:f.wasmMemory}}})():w=Promise.resolve({}),await(await(await d).instantiate(await w)).invokeMain()}}_createScriptTag(e,i){let r=document.createElement("script");r.type="application/javascript",i&&(r.nonce=i);let t=e;return this._ttPolicy!=null&&(t=this._ttPolicy.createScriptURL(e)),r.src=t,r}};async function T(s,e,i){if(e<0)return s;let r,t=new Promise((n,a)=>{r=setTimeout(()=>{a(new Error(`${i} took more than ${e}ms to resolve. Moving on.`,{cause:T}))},e)});return Promise.race([s,t]).finally(()=>{clearTimeout(r)})}var g=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
2
2
  The current context is NOT secure.`,o+=`
3
- Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:i,serviceWorkerUrl:r=l(`flutter_service_worker.js?v=${i}`),timeoutMillis:e=4e3}=t,a=r;this._ttPolicy!=null&&(a=this._ttPolicy.createScriptURL(a));let s=navigator.serviceWorker.register(a).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return I(s,e,"prepareServiceWorker")}async _getNewServiceWorker(t,i){if(!t.active&&(t.installing||t.waiting))return console.debug("Installing/Activating first service worker."),t.installing||t.waiting;if(t.active.scriptURL.endsWith(i))return console.debug("Loading from existing service worker."),t.active;{let r=await t.update();return console.debug("Updating service worker."),r.installing||r.waiting||r.active}}async _waitForServiceWorkerActivation(t){if(!t||t.state==="activated")if(t){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((i,r)=>{t.addEventListener("statechange",()=>{t.state==="activated"&&(console.debug("Activated new service worker."),i())})})}};var g=class{constructor(t,i="flutter-js"){let r=t||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(i,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let a=new URL(e,window.location),s=a.pathname.split("/").pop();if(r.some(c=>c.test(s)))return a.toString();console.error("URL rejected by TrustedTypes policy",i,":",e,"(download prevented)")}}))}};var k=n=>{let t=WebAssembly.compileStreaming(fetch(n));return(i,r)=>((async()=>{let e=await t,a=await WebAssembly.instantiate(e,i);r(a,e)})(),{})};var b=(n,t,i,r)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let e=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!e&&t.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let a=e&&t.canvasKitVariant!=="full",s=r;a&&(s=l(s,"chromium"));let o=l(s,"canvaskit.js");n.flutterTT.policy&&(o=n.flutterTT.policy.createScriptURL(o));let c=k(l(s,"canvaskit.wasm")),p=await import(o);return window.flutterCanvasKit=await p.default({instantiateWasm:c}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var U=async(n,t,i,r)=>{let e=i.crossOriginIsolated&&!t.forceSingleThreadedSkwasm?"skwasm":"skwasm_st",s=l(r,`${e}.js`);n.flutterTT.policy&&(s=n.flutterTT.policy.createScriptURL(s));let o=k(l(r,`${e}.wasm`));return await(await import(s)).default({instantiateWasm:o,mainScriptUrlOrBlob:new Blob([`import '${s}'`],{type:"application/javascript"})})};var S=class{async loadEntrypoint(t){let{serviceWorker:i,...r}=t||{},e=new g,a=new y;a.setTrustedTypesPolicy(e.policy),await a.loadServiceWorker(i).catch(o=>{console.warn("Exception while loading service worker:",o)});let s=new v;return s.setTrustedTypesPolicy(e.policy),this.didCreateEngineInitializer=s.didCreateEngineInitializer.bind(s),s.loadEntrypoint(r)}async load({serviceWorkerSettings:t,onEntrypointLoaded:i,nonce:r,config:e}={}){e??={};let a=_flutter.buildConfig;if(!a)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let s=u=>{switch(u){case"skwasm":return w.hasChromiumBreakIterators&&w.hasImageCodecs&&w.supportsWasmGC;default:return!0}},o=(u,m)=>{switch(u.renderer){case"auto":return m=="canvaskit"||m=="html";default:return u.renderer==m}},c=u=>u.compileTarget==="dart2wasm"&&!w.supportsWasmGC||e.renderer&&!o(u,e.renderer)?!1:s(u.renderer),p=a.builds.find(c);if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new g,t&&(d.serviceWorkerLoader=new y,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(t).catch(u=>{console.warn("Exception while loading service worker:",u)}));let f=T(e,a);p.renderer==="canvaskit"?d.canvasKit=b(d,e,w,f):p.renderer==="skwasm"&&(d.skwasm=U(d,e,w,f));let h=new v;return h.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=h.didCreateEngineInitializer.bind(h),h.load(p,d,e,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
3
+ Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:i,serviceWorkerUrl:r=l(`flutter_service_worker.js?v=${i}`),timeoutMillis:t=4e3}=e,n=r;this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(n));let a=navigator.serviceWorker.register(n).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return T(a,t,"prepareServiceWorker")}async _getNewServiceWorker(e,i){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(i))return console.debug("Loading from existing service worker."),e.active;{let r=await e.update();return console.debug("Updating service worker."),r.installing||r.waiting||r.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((i,r)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),i())})})}};var y=class{constructor(e,i="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(i,{createScriptURL:function(t){if(t.startsWith("blob:"))return t;let n=new URL(t,window.location),a=n.pathname.split("/").pop();if(r.some(c=>c.test(a)))return n.toString();console.error("URL rejected by TrustedTypes policy",i,":",t,"(download prevented)")}}))}};var k=s=>{let e=WebAssembly.compileStreaming(fetch(s));return(i,r)=>((async()=>{let t=await e,n=await WebAssembly.instantiate(t,i);r(n,t)})(),{})};var I=(s,e,i,r)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let t=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!t&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let n=t&&e.canvasKitVariant!=="full",a=r;n&&(a=l(a,"chromium"));let o=l(a,"canvaskit.js");s.flutterTT.policy&&(o=s.flutterTT.policy.createScriptURL(o));let c=k(l(a,"canvaskit.wasm")),u=await import(o);return window.flutterCanvasKit=await u.default({instantiateWasm:c}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var b=async(s,e,i,r)=>{let t=l(r,"skwasm.js"),n=t;s.flutterTT.policy&&(n=s.flutterTT.policy.createScriptURL(n));let a=k(l(r,"skwasm.wasm"));return await(await import(n)).default({skwasmSingleThreaded:!i.crossOriginIsolated||e.forceSingleThreadedSkwasm,instantiateWasm:a,locateFile:(c,u)=>{if(c.endsWith(".ww.js")){let d=l(r,c);return URL.createObjectURL(new Blob([`
4
+ "use strict";
5
+
6
+ let eventListener;
7
+ eventListener = (message) => {
8
+ const pendingMessages = [];
9
+ const data = message.data;
10
+ data["instantiateWasm"] = (info,receiveInstance) => {
11
+ const instance = new WebAssembly.Instance(data["wasm"], info);
12
+ return receiveInstance(instance, data["wasm"])
13
+ };
14
+ import(data.js).then(async (skwasm) => {
15
+ await skwasm.default(data);
16
+
17
+ removeEventListener("message", eventListener);
18
+ for (const message of pendingMessages) {
19
+ dispatchEvent(message);
20
+ }
21
+ });
22
+ removeEventListener("message", eventListener);
23
+ eventListener = (message) => {
24
+
25
+ pendingMessages.push(message);
26
+ };
27
+
28
+ addEventListener("message", eventListener);
29
+ };
30
+ addEventListener("message", eventListener);
31
+ `],{type:"application/javascript"}))}return url},mainScriptUrlOrBlob:t})};var S=class{async loadEntrypoint(e){let{serviceWorker:i,...r}=e||{},t=new y,n=new g;n.setTrustedTypesPolicy(t.policy),await n.loadServiceWorker(i).catch(o=>{console.warn("Exception while loading service worker:",o)});let a=new h;return a.setTrustedTypesPolicy(t.policy),this.didCreateEngineInitializer=a.didCreateEngineInitializer.bind(a),a.loadEntrypoint(r)}async load({serviceWorkerSettings:e,onEntrypointLoaded:i,nonce:r,config:t}={}){t??={};let n=_flutter.buildConfig;if(!n)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let a=m=>{switch(m){case"skwasm":return p.hasChromiumBreakIterators&&p.hasImageCodecs&&p.supportsWasmGC;default:return!0}},o=(m,f)=>m.renderer==f,c=m=>m.compileTarget==="dart2wasm"&&!p.supportsWasmGC||t.renderer&&!o(m,t.renderer)?!1:a(m.renderer),u=n.builds.find(c);if(!u)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new y,e&&(d.serviceWorkerLoader=new g,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(m=>{console.warn("Exception while loading service worker:",m)}));let w=L(t,n);u.renderer==="canvaskit"?d.canvasKit=I(d,t,p,w):u.renderer==="skwasm"&&(d.skwasm=b(d,t,p,w));let v=new h;return v.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=v.didCreateEngineInitializer.bind(v),v.load(u,d,t,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
4
32
  //# sourceMappingURL=flutter.js.map
5
33
 
6
34
  if (!window._flutter) {
7
35
  window._flutter = {};
8
36
  }
9
- _flutter.buildConfig = {"engineRevision":"cf56914b326edb0ccb123ffdc60f00060bd513fa","builds":[{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"}]};
37
+ _flutter.buildConfig = {"engineRevision":"8cd19e509d6bece8ccd74aef027c4ca947363095","builds":[{"compileTarget":"dart2wasm","renderer":"skwasm","mainWasmPath":"main.dart.wasm","jsSupportRuntimePath":"main.dart.mjs"},{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"}]};
10
38
 
11
39
 
12
40
  var loading = document.querySelector('#loading');
41
+
42
+ var flutterConfig = {
43
+ multiViewEnabled: flet.multiView,
44
+ assetBase: flet.assetBase
45
+ };
46
+ if (flet.webRenderer != "auto") {
47
+ flutterConfig.renderer = flet.webRenderer;
48
+ }
49
+ if (flet.noCdn) {
50
+ flutterConfig.canvasKitBaseUrl = flet.canvasKitBaseUrl;
51
+ flutterConfig.fontFallbackBaseUrl = flet.fontFallbackBaseUrl;
52
+ }
53
+
13
54
  _flutter.loader.load({
14
- config: {
15
- renderer: webRenderer
16
- },
55
+ config: flutterConfig,
17
56
  serviceWorkerSettings: {
18
- serviceWorkerVersion: "1375174814",
57
+ serviceWorkerVersion: "2146980671",
19
58
  },
20
59
  onEntrypointLoaded: async function (engineInitializer) {
21
60
  loading.classList.add('main_done');
22
- const appRunner = await engineInitializer.initializeEngine({useColorEmoji: useColorEmoji});
61
+ const engine = await engineInitializer.initializeEngine(flutterConfig);
23
62
 
24
63
  loading.classList.add('init_done');
25
- await appRunner.runApp();
64
+ flet.flutterApp = await engine.runApp();
65
+ flet.flutterAppResolve(flet.flutterApp);
26
66
 
27
67
  window.setTimeout(function () {
28
68
  loading.remove();
29
69
  }, 200);
30
70
  }
31
- });
71
+ });
@@ -3,36 +3,35 @@ const MANIFEST = 'flutter-app-manifest';
3
3
  const TEMP = 'flutter-temp-cache';
4
4
  const CACHE_NAME = 'flutter-app-cache';
5
5
 
6
- const RESOURCES = {"main.dart.js": "20f51c9a19580fd8cb6f196a04af27e7",
6
+ const RESOURCES = {"main.dart.js": "799e2ed6593526c548340d3c9530aef8",
7
7
  "manifest.json": "58765f937ba0d0c40a3a714c5c1adb87",
8
- "python-worker.js": "5ea86672b34644777103a090bfdd6710",
9
- "canvaskit/skwasm.wasm": "f0dfd99007f989368db17c9abeed5a49",
10
- "canvaskit/chromium/canvaskit.js.symbols": "5a23598a2a8efd18ec3b60de5d28af8f",
11
- "canvaskit/chromium/canvaskit.js": "34beda9f39eb7d992d46125ca868dc61",
12
- "canvaskit/chromium/canvaskit.wasm": "64a386c87532ae52ae041d18a32a3635",
13
- "canvaskit/skwasm.js": "f2ad9363618c5f62e813740099a80e63",
14
- "canvaskit/canvaskit.js.symbols": "68eb703b9a609baef8ee0e413b442f33",
15
- "canvaskit/skwasm_st.wasm": "56c3973560dfcbf28ce47cebe40f3206",
16
- "canvaskit/skwasm.js.symbols": "80806576fa1056b43dd6d0b445b4b6f7",
17
- "canvaskit/skwasm_st.js.symbols": "c7e7aac7cd8b612defd62b43e3050bdd",
18
- "canvaskit/skwasm_st.js": "d1326ceef381ad382ab492ba5d96f04d",
19
- "canvaskit/canvaskit.js": "86e461cf471c1640fd2b461ece4589df",
20
- "canvaskit/canvaskit.wasm": "efeeba7dcc952dae57870d4df3111fad",
21
- "flutter_bootstrap.js": "563caaa0c3ccae0e76ef5de94f5d8ead",
8
+ "python-worker.js": "26eb131f3acb5ce232fea72da957e8ce",
9
+ "canvaskit/skwasm.wasm": "39dd80367a4e71582d234948adc521c0",
10
+ "canvaskit/chromium/canvaskit.js.symbols": "b61b5f4673c9698029fa0a746a9ad581",
11
+ "canvaskit/chromium/canvaskit.js": "8191e843020c832c9cf8852a4b909d4c",
12
+ "canvaskit/chromium/canvaskit.wasm": "f504de372e31c8031018a9ec0a9ef5f0",
13
+ "canvaskit/skwasm.js": "ea559890a088fe28b4ddf70e17e60052",
14
+ "canvaskit/canvaskit.js.symbols": "bdcd3835edf8586b6d6edfce8749fb77",
15
+ "canvaskit/skwasm.js.symbols": "e72c79950c8a8483d826a7f0560573a1",
16
+ "canvaskit/canvaskit.js": "728b2d477d9b8c14593d4f9b82b484f3",
17
+ "canvaskit/canvaskit.wasm": "7a3f4ae7d65fc1de6a6e7ddd3224bc93",
18
+ "flutter_bootstrap.js": "2bb046222d05e1c8cc6d2cb5a20b4f62",
19
+ "main.dart.wasm": "df354fd5d7980be1545e3aa7fb401dcc",
22
20
  "favicon.png": "302ac04c14db027d016d1fe74c6a80a0",
23
- "flutter.js": "76f08d47ff9f5715220992f993002504",
24
- "index.html": "9b60787b64ca572171a5b4effdbca418",
25
- "/": "9b60787b64ca572171a5b4effdbca418",
21
+ "flutter.js": "83d881c1dbb6d6bcd6b42e274605b69c",
22
+ "index.html": "55e4a5140b3c5f98b694331a15299630",
23
+ "/": "55e4a5140b3c5f98b694331a15299630",
26
24
  "assets/AssetManifest.bin": "f82f600d0e9342f1147569932bdc3212",
27
25
  "assets/packages/wakelock_plus/assets/no_sleep.js": "7748a45cd593f33280669b29c2c8919a",
28
26
  "assets/packages/flutter_map/lib/assets/flutter_map_logo.png": "208d63cc917af9713fc9572bd5c09362",
29
27
  "assets/packages/cupertino_icons/assets/CupertinoIcons.ttf": "6323a28c4d27ae6070923bcb643dc985",
30
28
  "assets/packages/record_web/assets/js/record.worklet.js": "356bcfeddb8a625e3e2ba43ddf1cc13e",
31
29
  "assets/packages/record_web/assets/js/record.fixwebmduration.js": "1f0108ea80c8951ba702ced40cf8cdce",
32
- "assets/packages/media_kit/assets/web/hls1.4.10.js": "1e36f4683b03af6692ad2542810f28bc",
30
+ "assets/packages/media_kit/assets/web/hls1.4.10.js": "bd60e2701c42b6bf2c339dcf5d495865",
33
31
  "assets/FontManifest.json": "dc3d03800ccca4601324923c0b1d6d57",
34
- "assets/NOTICES": "f8569b8e0731bf5a64e046ff9eaca87a",
32
+ "assets/NOTICES": "c333d58cb755cf8814f087e5d72bb211",
35
33
  "assets/AssetManifest.json": "a38a816646dff320fc78b32cc727925e",
34
+ "assets/fonts/roboto.woff2": "e507bd45228483ae2f864d36f26bb43e",
36
35
  "assets/fonts/MaterialIcons-Regular.otf": "f34ace52ea74c95e26949fab4870ac22",
37
36
  "assets/shaders/ink_sparkle.frag": "ecc85a2e95f5e9f53123dcaf8cb9b6ce",
38
37
  "assets/AssetManifest.bin.json": "15a667376456bdf082d25c5b97a6577e",
@@ -42,11 +41,14 @@ const RESOURCES = {"main.dart.js": "20f51c9a19580fd8cb6f196a04af27e7",
42
41
  "icons/icon-maskable-192.png": "c1c2210feeb444cf800a5ce0d06eff16",
43
42
  "icons/loading-animation.png": "41a96047dbd2463a50c46ad3bf6ff158",
44
43
  "icons/icon-maskable-512.png": "aa798e6d780ff109da17c3a98d5f2619",
45
- "python.js": "9eee2c1773af78bc45ee89ca2ac5724f",
44
+ "main.dart.mjs": "9d192e550261d7bd7190b4b37c54c123",
45
+ "python.js": "352c5261eadd3cc73ac082984266c0fc",
46
46
  "version.json": "3fea9d9c7b4ca6955aa03e762e0d2e13"};
47
47
  // The application shell files that are downloaded before a service worker can
48
48
  // start.
49
49
  const CORE = ["main.dart.js",
50
+ "main.dart.wasm",
51
+ "main.dart.mjs",
50
52
  "index.html",
51
53
  "flutter_bootstrap.js",
52
54
  "assets/AssetManifest.bin.json",
flet_web/web/index.html CHANGED
@@ -17,23 +17,63 @@
17
17
  <!-- Favicon -->
18
18
  <link rel="icon" type="image/png" href="favicon.png" />
19
19
 
20
- <!-- Flet specific -->
21
- <meta name="flet-route-url-strategy" content="%FLET_ROUTE_URL_STRATEGY%">
22
- <meta name="flet-web-pyodide" content="%FLET_WEB_PYODIDE%">
23
- <meta name="flet-websocket-endpoint-path" content="/ws">
24
-
25
20
  <title>Flet</title>
26
21
  <link rel="manifest" href="manifest.json">
27
22
 
28
23
  <script>
29
- var webRenderer = "auto";
30
- var useColorEmoji = false;
24
+ var flet = {
25
+ pyodide: false,
26
+ multiView: false,
27
+ noCdn: false,
28
+ webSocketEndpoint: "/ws",
29
+ assetBase: "/",
30
+ routeUrlStrategy: "path",
31
+ canvasKitBaseUrl: "/canvaskit/",
32
+ pyodideUrl: "/pyodide/pyodide.js",
33
+ webRenderer: "auto",
34
+ fontFallbackBaseUrl: "assets/fonts/", // for Noto Emoji, use Google CDN
35
+ appPackageUrl: "app.tar.gz"
36
+ }
37
+
38
+ flet.flutterAppLoaded = new Promise((resolve) => {
39
+ flet.flutterAppResolve = resolve;
40
+ });
41
+
42
+ flet.flutterAppLoaded.then((flutterApp) => {
43
+ console.log("Flutter app loaded");
44
+ if (flet.multiView) {
45
+ console.log(flutterApp.addView({
46
+ hostElement: document.querySelector('#view-1'),
47
+ initialData: {
48
+ greeting: 'Hello, world!',
49
+ randomValue: Math.floor(Math.random() * 100),
50
+ },
51
+ viewConstraints: {
52
+ //maxWidth: Infinity,
53
+ maxHeight: Infinity,
54
+ minHeight: 300,
55
+ minWidth: 620
56
+ }
57
+ }));
58
+ console.log(flutterApp.addView({
59
+ hostElement: document.querySelector('#view-2'),
60
+ initialData: {
61
+ bar: "baz"
62
+ },
63
+ viewConstraints: {
64
+ minWidth: 620,
65
+ //maxWidth: 320,
66
+ //minHeight: 400,
67
+ maxHeight: 400,
68
+ }
69
+ }));
70
+ }
71
+ });
31
72
  </script>
32
73
 
33
- <!-- webRenderer -->
34
- <!-- useColorEmoji -->
74
+ <!-- fletAppConfig -->
35
75
 
36
- <!-- pyodideCode -->
76
+ <script src="python.js"></script>
37
77
  </head>
38
78
 
39
79
  <body>
@@ -95,5 +135,10 @@
95
135
  <img src="icons/loading-animation.png" alt="Loading..." />
96
136
  </div>
97
137
  <script src="flutter_bootstrap.js" async></script>
138
+
139
+ <h1>View 1</h1>
140
+ <div id="view-1" style="display: flex; justify-content: center;"></div>
141
+ <h1>View 2</h1>
142
+ <div id="view-2"></div>
98
143
  </body>
99
- </html>
144
+ </html>