MoiMoi-01 commited on
Commit
349fb8b
·
verified ·
1 Parent(s): 67aa2f3

Upload 12 files

Browse files
Files changed (12) hide show
  1. .last_build_id +1 -0
  2. app.tar.gz +3 -0
  3. favicon.png +0 -0
  4. flutter.js +4 -0
  5. flutter_bootstrap.js +31 -0
  6. flutter_service_worker.js +214 -0
  7. index.html +105 -19
  8. main.dart.js +0 -0
  9. manifest.json +35 -0
  10. python-worker.js +47 -0
  11. python.js +28 -0
  12. version.json +1 -0
.last_build_id ADDED
@@ -0,0 +1 @@
 
 
1
+ ff5bfaed539c9f780e5cca58f351f125
app.tar.gz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5d9d8a941f1fd610eb6a6f5e93b4f10c73532d99d4727fd5c2cc3ce4d17c62b9
3
+ size 138501273
favicon.png ADDED
flutter.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ (()=>{var L=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:L(),P=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",W=()=>{let a=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(a))},w={hasImageCodecs:E(),hasChromiumBreakIterators:P(),supportsWasmGC:W(),crossOriginIsolated:window.crossOriginIsolated};function d(...a){return new URL(_(...a),document.baseURI).toString()}function _(...a){return a.filter(t=>!!t).map((t,i)=>i===0?S(t):j(S(t))).filter(t=>t.length).join("/")}function j(a){let t=0;for(;t<a.length&&a.charAt(t)==="/";)t++;return a.substring(t)}function S(a){let t=a.length;for(;t>0&&a.charAt(t-1)==="/";)t--;return a.substring(0,t)}function T(a,t){return a.canvasKitBaseUrl?a.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?_("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=d("main.dart.js"),onEntrypointLoaded:r,nonce:e}=t||{};return this._loadJSEntrypoint(i,r,e)}async load(t,i,r,e,n){n??=o=>{o.initializeEngine(r).then(l=>l.runApp())};let{entryPointBaseUrl:s}=r;if(t.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(t,i,s,n);{let o=t.mainJsPath??"main.dart.js",l=d(s,o);return this._loadJSEntrypoint(l,n,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 n=this._createScriptTag(t,r);if(e)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(n);else return new Promise((s,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=s,n.addEventListener("error",o),document.head.append(n)})}}async _loadWasmEntrypoint(t,i,r,e){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=e;let{mainWasmPath:n,jsSupportRuntimePath:s}=t,o=d(r,n),l=d(r,s);this._ttPolicy!=null&&(l=this._ttPolicy.createScriptURL(l));let c=(await import(l)).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 c).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 b(a,t,i){if(t<0)return a;let r,e=new Promise((n,s)=>{r=setTimeout(()=>{s(new Error(`${i} took more than ${t}ms to resolve. Moving on.`,{cause:b}))},t)});return Promise.race([a,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+=`
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=d(`flutter_service_worker.js?v=${i}`),timeoutMillis:e=4e3}=t,n=r;this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(n));let s=navigator.serviceWorker.register(n).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return b(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 n=new URL(e,window.location),s=n.pathname.split("/").pop();if(r.some(l=>l.test(s)))return n.toString();console.error("URL rejected by TrustedTypes policy",i,":",e,"(download prevented)")}}))}};var k=a=>{let t=WebAssembly.compileStreaming(fetch(a));return(i,r)=>((async()=>{let e=await t,n=await WebAssembly.instantiate(e,i);r(n,e)})(),{})};var I=(a,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 n=e&&t.canvasKitVariant!=="full",s=r;n&&(s=d(s,"chromium"));let o=d(s,"canvaskit.js");a.flutterTT.policy&&(o=a.flutterTT.policy.createScriptURL(o));let l=k(d(s,"canvaskit.wasm")),p=await import(o);return window.flutterCanvasKit=await p.default({instantiateWasm:l}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var U=async(a,t,i,r)=>{let e=d(r,"skwasm.js"),n=e;a.flutterTT.policy&&(n=a.flutterTT.policy.createScriptURL(n));let s=k(d(r,"skwasm.wasm"));return await(await import(n)).default({instantiateWasm:s,locateFile:(l,p)=>{let c=p+l;return c.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${c}');`],{type:"application/javascript"})):c},mainScriptUrlOrBlob:e})};var C=class{async loadEntrypoint(t){let{serviceWorker:i,...r}=t||{},e=new g,n=new y;n.setTrustedTypesPolicy(e.policy),await n.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 n=_flutter.buildConfig;if(!n)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let s=u=>{switch(u){case"skwasm":return w.crossOriginIsolated&&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}},l=u=>u.compileTarget==="dart2wasm"&&!w.supportsWasmGC||e.renderer&&!o(u,e.renderer)?!1:s(u.renderer),p=n.builds.find(l);if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let c={};c.flutterTT=new g,t&&(c.serviceWorkerLoader=new y,c.serviceWorkerLoader.setTrustedTypesPolicy(c.flutterTT.policy),await c.serviceWorkerLoader.loadServiceWorker(t).catch(u=>{console.warn("Exception while loading service worker:",u)}));let f=T(e,n);p.renderer==="canvaskit"?c.canvasKit=I(c,e,w,f):p.renderer==="skwasm"&&(c.skwasm=U(c,e,w,f));let h=new v;return h.setTrustedTypesPolicy(c.flutterTT.policy),this.didCreateEngineInitializer=h.didCreateEngineInitializer.bind(h),h.load(p,c,e,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new C);})();
4
+ //# sourceMappingURL=flutter.js.map
flutter_bootstrap.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (()=>{var L=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:L(),P=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",W=()=>{let a=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(a))},w={hasImageCodecs:E(),hasChromiumBreakIterators:P(),supportsWasmGC:W(),crossOriginIsolated:window.crossOriginIsolated};function d(...a){return new URL(_(...a),document.baseURI).toString()}function _(...a){return a.filter(t=>!!t).map((t,i)=>i===0?S(t):j(S(t))).filter(t=>t.length).join("/")}function j(a){let t=0;for(;t<a.length&&a.charAt(t)==="/";)t++;return a.substring(t)}function S(a){let t=a.length;for(;t>0&&a.charAt(t-1)==="/";)t--;return a.substring(0,t)}function T(a,t){return a.canvasKitBaseUrl?a.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?_("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=d("main.dart.js"),onEntrypointLoaded:r,nonce:e}=t||{};return this._loadJSEntrypoint(i,r,e)}async load(t,i,r,e,n){n??=o=>{o.initializeEngine(r).then(l=>l.runApp())};let{entryPointBaseUrl:s}=r;if(t.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(t,i,s,n);{let o=t.mainJsPath??"main.dart.js",l=d(s,o);return this._loadJSEntrypoint(l,n,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 n=this._createScriptTag(t,r);if(e)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(n);else return new Promise((s,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=s,n.addEventListener("error",o),document.head.append(n)})}}async _loadWasmEntrypoint(t,i,r,e){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=e;let{mainWasmPath:n,jsSupportRuntimePath:s}=t,o=d(r,n),l=d(r,s);this._ttPolicy!=null&&(l=this._ttPolicy.createScriptURL(l));let c=(await import(l)).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 c).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 b(a,t,i){if(t<0)return a;let r,e=new Promise((n,s)=>{r=setTimeout(()=>{s(new Error(`${i} took more than ${t}ms to resolve. Moving on.`,{cause:b}))},t)});return Promise.race([a,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+=`
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=d(`flutter_service_worker.js?v=${i}`),timeoutMillis:e=4e3}=t,n=r;this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(n));let s=navigator.serviceWorker.register(n).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return b(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 n=new URL(e,window.location),s=n.pathname.split("/").pop();if(r.some(l=>l.test(s)))return n.toString();console.error("URL rejected by TrustedTypes policy",i,":",e,"(download prevented)")}}))}};var k=a=>{let t=WebAssembly.compileStreaming(fetch(a));return(i,r)=>((async()=>{let e=await t,n=await WebAssembly.instantiate(e,i);r(n,e)})(),{})};var I=(a,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 n=e&&t.canvasKitVariant!=="full",s=r;n&&(s=d(s,"chromium"));let o=d(s,"canvaskit.js");a.flutterTT.policy&&(o=a.flutterTT.policy.createScriptURL(o));let l=k(d(s,"canvaskit.wasm")),p=await import(o);return window.flutterCanvasKit=await p.default({instantiateWasm:l}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var U=async(a,t,i,r)=>{let e=d(r,"skwasm.js"),n=e;a.flutterTT.policy&&(n=a.flutterTT.policy.createScriptURL(n));let s=k(d(r,"skwasm.wasm"));return await(await import(n)).default({instantiateWasm:s,locateFile:(l,p)=>{let c=p+l;return c.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${c}');`],{type:"application/javascript"})):c},mainScriptUrlOrBlob:e})};var C=class{async loadEntrypoint(t){let{serviceWorker:i,...r}=t||{},e=new g,n=new y;n.setTrustedTypesPolicy(e.policy),await n.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 n=_flutter.buildConfig;if(!n)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let s=u=>{switch(u){case"skwasm":return w.crossOriginIsolated&&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}},l=u=>u.compileTarget==="dart2wasm"&&!w.supportsWasmGC||e.renderer&&!o(u,e.renderer)?!1:s(u.renderer),p=n.builds.find(l);if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let c={};c.flutterTT=new g,t&&(c.serviceWorkerLoader=new y,c.serviceWorkerLoader.setTrustedTypesPolicy(c.flutterTT.policy),await c.serviceWorkerLoader.loadServiceWorker(t).catch(u=>{console.warn("Exception while loading service worker:",u)}));let f=T(e,n);p.renderer==="canvaskit"?c.canvasKit=I(c,e,w,f):p.renderer==="skwasm"&&(c.skwasm=U(c,e,w,f));let h=new v;return h.setTrustedTypesPolicy(c.flutterTT.policy),this.didCreateEngineInitializer=h.didCreateEngineInitializer.bind(h),h.load(p,c,e,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new C);})();
4
+ //# sourceMappingURL=flutter.js.map
5
+
6
+ if (!window._flutter) {
7
+ window._flutter = {};
8
+ }
9
+ _flutter.buildConfig = {"engineRevision":"e672b006cb34c921db85b8e2f482ed3144a4574b","builds":[{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"}]};
10
+
11
+
12
+ var loading = document.querySelector('#loading');
13
+ _flutter.loader.load({
14
+ config: {
15
+ renderer: webRenderer
16
+ },
17
+ serviceWorkerSettings: {
18
+ serviceWorkerVersion: "1378252651",
19
+ },
20
+ onEntrypointLoaded: async function (engineInitializer) {
21
+ loading.classList.add('main_done');
22
+ const appRunner = await engineInitializer.initializeEngine({useColorEmoji: useColorEmoji});
23
+
24
+ loading.classList.add('init_done');
25
+ await appRunner.runApp();
26
+
27
+ window.setTimeout(function () {
28
+ loading.remove();
29
+ }, 200);
30
+ }
31
+ });
flutter_service_worker.js ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ const MANIFEST = 'flutter-app-manifest';
3
+ const TEMP = 'flutter-temp-cache';
4
+ const CACHE_NAME = 'flutter-app-cache';
5
+
6
+ const RESOURCES = {"main.dart.js": "b640cbc9306860611dda7f3e7b583fd8",
7
+ "manifest.json": "58765f937ba0d0c40a3a714c5c1adb87",
8
+ "python-worker.js": "62a4865b3d41771b39660076485879be",
9
+ "canvaskit/skwasm.wasm": "828c26a0b1cc8eb1adacbdd0c5e8bcfa",
10
+ "canvaskit/chromium/canvaskit.js.symbols": "e115ddcfad5f5b98a90e389433606502",
11
+ "canvaskit/chromium/canvaskit.js": "b7ba6d908089f706772b2007c37e6da4",
12
+ "canvaskit/chromium/canvaskit.wasm": "ea5ab288728f7200f398f60089048b48",
13
+ "canvaskit/skwasm.js": "ac0f73826b925320a1e9b0d3fd7da61c",
14
+ "canvaskit/canvaskit.js.symbols": "efc2cd87d1ff6c586b7d4c7083063a40",
15
+ "canvaskit/skwasm.worker.js": "89990e8c92bcb123999aa81f7e203b1c",
16
+ "canvaskit/skwasm.js.symbols": "96263e00e3c9bd9cd878ead867c04f3c",
17
+ "canvaskit/canvaskit.js": "26eef3024dbc64886b7f48e1b6fb05cf",
18
+ "canvaskit/canvaskit.wasm": "e7602c687313cfac5f495c5eac2fb324",
19
+ "flutter_bootstrap.js": "b8cb831a2cf88145a9600a96999f8190",
20
+ "favicon.png": "302ac04c14db027d016d1fe74c6a80a0",
21
+ "flutter.js": "4b2350e14c6650ba82871f60906437ea",
22
+ "index.html": "9b60787b64ca572171a5b4effdbca418",
23
+ "/": "9b60787b64ca572171a5b4effdbca418",
24
+ "assets/AssetManifest.bin": "f82f600d0e9342f1147569932bdc3212",
25
+ "assets/packages/wakelock_plus/assets/no_sleep.js": "7748a45cd593f33280669b29c2c8919a",
26
+ "assets/packages/flutter_map/lib/assets/flutter_map_logo.png": "208d63cc917af9713fc9572bd5c09362",
27
+ "assets/packages/cupertino_icons/assets/CupertinoIcons.ttf": "6323a28c4d27ae6070923bcb643dc985",
28
+ "assets/packages/record_web/assets/js/record.worklet.js": "356bcfeddb8a625e3e2ba43ddf1cc13e",
29
+ "assets/packages/record_web/assets/js/record.fixwebmduration.js": "1f0108ea80c8951ba702ced40cf8cdce",
30
+ "assets/packages/media_kit/assets/web/hls1.4.10.js": "1e36f4683b03af6692ad2542810f28bc",
31
+ "assets/FontManifest.json": "dc3d03800ccca4601324923c0b1d6d57",
32
+ "assets/NOTICES": "cab1fa5a725d2caafacbae667837a6d1",
33
+ "assets/AssetManifest.json": "a38a816646dff320fc78b32cc727925e",
34
+ "assets/fonts/MaterialIcons-Regular.otf": "f34ace52ea74c95e26949fab4870ac22",
35
+ "assets/shaders/ink_sparkle.frag": "ecc85a2e95f5e9f53123dcaf8cb9b6ce",
36
+ "assets/AssetManifest.bin.json": "15a667376456bdf082d25c5b97a6577e",
37
+ "icons/icon-512.png": "06b219f171b5a1af6dd8299ea1e116f2",
38
+ "icons/apple-touch-icon-192.png": "8cf0d5162941f467a77f023c414a1812",
39
+ "icons/icon-192.png": "81c4311263d0cad60c1f0496b4fa7c8f",
40
+ "icons/icon-maskable-192.png": "c1c2210feeb444cf800a5ce0d06eff16",
41
+ "icons/loading-animation.png": "41a96047dbd2463a50c46ad3bf6ff158",
42
+ "icons/icon-maskable-512.png": "aa798e6d780ff109da17c3a98d5f2619",
43
+ "python.js": "9eee2c1773af78bc45ee89ca2ac5724f",
44
+ "version.json": "3fea9d9c7b4ca6955aa03e762e0d2e13"};
45
+ // The application shell files that are downloaded before a service worker can
46
+ // start.
47
+ const CORE = ["main.dart.js",
48
+ "index.html",
49
+ "flutter_bootstrap.js",
50
+ "assets/AssetManifest.bin.json",
51
+ "assets/FontManifest.json"];
52
+
53
+ // During install, the TEMP cache is populated with the application shell files.
54
+ self.addEventListener("install", (event) => {
55
+ self.skipWaiting();
56
+ return event.waitUntil(
57
+ caches.open(TEMP).then((cache) => {
58
+ return cache.addAll(
59
+ CORE.map((value) => new Request(value, {'cache': 'reload'})));
60
+ })
61
+ );
62
+ });
63
+ // During activate, the cache is populated with the temp files downloaded in
64
+ // install. If this service worker is upgrading from one with a saved
65
+ // MANIFEST, then use this to retain unchanged resource files.
66
+ self.addEventListener("activate", function(event) {
67
+ return event.waitUntil(async function() {
68
+ try {
69
+ var contentCache = await caches.open(CACHE_NAME);
70
+ var tempCache = await caches.open(TEMP);
71
+ var manifestCache = await caches.open(MANIFEST);
72
+ var manifest = await manifestCache.match('manifest');
73
+ // When there is no prior manifest, clear the entire cache.
74
+ if (!manifest) {
75
+ await caches.delete(CACHE_NAME);
76
+ contentCache = await caches.open(CACHE_NAME);
77
+ for (var request of await tempCache.keys()) {
78
+ var response = await tempCache.match(request);
79
+ await contentCache.put(request, response);
80
+ }
81
+ await caches.delete(TEMP);
82
+ // Save the manifest to make future upgrades efficient.
83
+ await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
84
+ // Claim client to enable caching on first launch
85
+ self.clients.claim();
86
+ return;
87
+ }
88
+ var oldManifest = await manifest.json();
89
+ var origin = self.location.origin;
90
+ for (var request of await contentCache.keys()) {
91
+ var key = request.url.substring(origin.length + 1);
92
+ if (key == "") {
93
+ key = "/";
94
+ }
95
+ // If a resource from the old manifest is not in the new cache, or if
96
+ // the MD5 sum has changed, delete it. Otherwise the resource is left
97
+ // in the cache and can be reused by the new service worker.
98
+ if (!RESOURCES[key] || RESOURCES[key] != oldManifest[key]) {
99
+ await contentCache.delete(request);
100
+ }
101
+ }
102
+ // Populate the cache with the app shell TEMP files, potentially overwriting
103
+ // cache files preserved above.
104
+ for (var request of await tempCache.keys()) {
105
+ var response = await tempCache.match(request);
106
+ await contentCache.put(request, response);
107
+ }
108
+ await caches.delete(TEMP);
109
+ // Save the manifest to make future upgrades efficient.
110
+ await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
111
+ // Claim client to enable caching on first launch
112
+ self.clients.claim();
113
+ return;
114
+ } catch (err) {
115
+ // On an unhandled exception the state of the cache cannot be guaranteed.
116
+ console.error('Failed to upgrade service worker: ' + err);
117
+ await caches.delete(CACHE_NAME);
118
+ await caches.delete(TEMP);
119
+ await caches.delete(MANIFEST);
120
+ }
121
+ }());
122
+ });
123
+ // The fetch handler redirects requests for RESOURCE files to the service
124
+ // worker cache.
125
+ self.addEventListener("fetch", (event) => {
126
+ if (event.request.method !== 'GET') {
127
+ return;
128
+ }
129
+ var origin = self.location.origin;
130
+ var key = event.request.url.substring(origin.length + 1);
131
+ // Redirect URLs to the index.html
132
+ if (key.indexOf('?v=') != -1) {
133
+ key = key.split('?v=')[0];
134
+ }
135
+ if (event.request.url == origin || event.request.url.startsWith(origin + '/#') || key == '') {
136
+ key = '/';
137
+ }
138
+ // If the URL is not the RESOURCE list then return to signal that the
139
+ // browser should take over.
140
+ if (!RESOURCES[key]) {
141
+ return;
142
+ }
143
+ // If the URL is the index.html, perform an online-first request.
144
+ if (key == '/') {
145
+ return onlineFirst(event);
146
+ }
147
+ event.respondWith(caches.open(CACHE_NAME)
148
+ .then((cache) => {
149
+ return cache.match(event.request).then((response) => {
150
+ // Either respond with the cached resource, or perform a fetch and
151
+ // lazily populate the cache only if the resource was successfully fetched.
152
+ return response || fetch(event.request).then((response) => {
153
+ if (response && Boolean(response.ok)) {
154
+ cache.put(event.request, response.clone());
155
+ }
156
+ return response;
157
+ });
158
+ })
159
+ })
160
+ );
161
+ });
162
+ self.addEventListener('message', (event) => {
163
+ // SkipWaiting can be used to immediately activate a waiting service worker.
164
+ // This will also require a page refresh triggered by the main worker.
165
+ if (event.data === 'skipWaiting') {
166
+ self.skipWaiting();
167
+ return;
168
+ }
169
+ if (event.data === 'downloadOffline') {
170
+ downloadOffline();
171
+ return;
172
+ }
173
+ });
174
+ // Download offline will check the RESOURCES for all files not in the cache
175
+ // and populate them.
176
+ async function downloadOffline() {
177
+ var resources = [];
178
+ var contentCache = await caches.open(CACHE_NAME);
179
+ var currentContent = {};
180
+ for (var request of await contentCache.keys()) {
181
+ var key = request.url.substring(origin.length + 1);
182
+ if (key == "") {
183
+ key = "/";
184
+ }
185
+ currentContent[key] = true;
186
+ }
187
+ for (var resourceKey of Object.keys(RESOURCES)) {
188
+ if (!currentContent[resourceKey]) {
189
+ resources.push(resourceKey);
190
+ }
191
+ }
192
+ return contentCache.addAll(resources);
193
+ }
194
+ // Attempt to download the resource online before falling back to
195
+ // the offline cache.
196
+ function onlineFirst(event) {
197
+ return event.respondWith(
198
+ fetch(event.request).then((response) => {
199
+ return caches.open(CACHE_NAME).then((cache) => {
200
+ cache.put(event.request, response.clone());
201
+ return response;
202
+ });
203
+ }).catch((error) => {
204
+ return caches.open(CACHE_NAME).then((cache) => {
205
+ return cache.match(event.request).then((response) => {
206
+ if (response != null) {
207
+ return response;
208
+ }
209
+ throw error;
210
+ });
211
+ });
212
+ })
213
+ );
214
+ }
index.html CHANGED
@@ -1,19 +1,105 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <base href="/">
6
+
7
+ <meta charset="UTF-8">
8
+ <meta content="IE=Edge" http-equiv="X-UA-Compatible">
9
+ <meta name="description" content="Flet application.">
10
+
11
+ <!-- iOS meta tags & icons -->
12
+ <meta name="mobile-web-app-capable" content="yes">
13
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
14
+ <meta name="apple-mobile-web-app-title" content="My_Portfolio">
15
+ <link rel="apple-touch-icon" href="icons/apple-touch-icon-192.png">
16
+
17
+ <!-- Favicon -->
18
+ <link rel="icon" type="image/png" href="favicon.png" />
19
+
20
+ <!-- Flet specific -->
21
+ <meta name="flet-route-url-strategy" content="path">
22
+ <meta name="flet-web-pyodide" content="true">
23
+ <meta name="flet-websocket-endpoint-path" content="/ws">
24
+
25
+ <title>My_Portfolio</title>
26
+ <link rel="manifest" href="manifest.json">
27
+
28
+ <script>
29
+ var webRenderer = "auto";
30
+ var useColorEmoji = false;
31
+ </script>
32
+
33
+ <script>webRenderer="canvaskit";</script>
34
+ <script>useColorEmoji=false;</script>
35
+
36
+
37
+ <script>
38
+ var micropipIncludePre = false;
39
+ var pythonModuleName = "main";
40
+ </script>
41
+ <script src="python.js"></script>
42
+
43
+ </head>
44
+
45
+ <body>
46
+ <div id="loading">
47
+ <style>
48
+ body {
49
+ inset: 0;
50
+ overflow: hidden;
51
+ margin: 0;
52
+ padding: 0;
53
+ position: fixed;
54
+ }
55
+
56
+ #loading {
57
+ align-items: center;
58
+ display: flex;
59
+ height: 100%;
60
+ justify-content: center;
61
+ width: 100%;
62
+ }
63
+
64
+ #loading img {
65
+ animation: 1s ease-in-out 0s infinite alternate breathe;
66
+ opacity: .66;
67
+ transition: opacity .4s;
68
+ }
69
+
70
+ #loading.main_done img {
71
+ opacity: 1;
72
+ }
73
+
74
+ #loading.init_done img {
75
+ animation: .33s ease-in-out 0s 1 forwards zooooom;
76
+ opacity: .05;
77
+ }
78
+
79
+ @keyframes breathe {
80
+ from {
81
+ transform: scale(0.4);
82
+ opacity: 1.0;
83
+ }
84
+
85
+ to {
86
+ transform: scale(0.35);
87
+ opacity: .7;
88
+ }
89
+ }
90
+
91
+ @keyframes zooooom {
92
+ from {
93
+ transform: scale(0.4)
94
+ }
95
+
96
+ to {
97
+ transform: scale(10)
98
+ }
99
+ }
100
+ </style>
101
+ <img src="icons/loading-animation.png" alt="Loading..." />
102
+ </div>
103
+ <script src="flutter_bootstrap.js" async></script>
104
+ </body>
105
+ </html>
main.dart.js ADDED
The diff for this file is too large to render. See raw diff
 
manifest.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "My_Portfolio",
3
+ "short_name": "My_Portfolio",
4
+ "start_url": ".",
5
+ "display": "standalone",
6
+ "background_color": "#FFFFFF",
7
+ "theme_color": "#0175C2",
8
+ "description": "Flet - the fastest way to build Flutter apps in Python",
9
+ "orientation": "natural",
10
+ "prefer_related_applications": false,
11
+ "icons": [
12
+ {
13
+ "src": "icons/icon-192.png",
14
+ "sizes": "192x192",
15
+ "type": "image/png"
16
+ },
17
+ {
18
+ "src": "icons/icon-512.png",
19
+ "sizes": "512x512",
20
+ "type": "image/png"
21
+ },
22
+ {
23
+ "src": "icons/icon-maskable-192.png",
24
+ "sizes": "192x192",
25
+ "type": "image/png",
26
+ "purpose": "maskable"
27
+ },
28
+ {
29
+ "src": "icons/icon-maskable-512.png",
30
+ "sizes": "512x512",
31
+ "type": "image/png",
32
+ "purpose": "maskable"
33
+ }
34
+ ]
35
+ }
python-worker.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ importScripts("https://cdn.jsdelivr.net/pyodide/v0.24.1/full/pyodide.js");
2
+
3
+ self.micropipIncludePre = false;
4
+ self.pythonModuleName = null;
5
+ self.initialized = false;
6
+ self.flet_js = {}; // namespace for Python global functions
7
+
8
+ self.initPyodide = async function () {
9
+ self.pyodide = await loadPyodide();
10
+ self.pyodide.registerJsModule("flet_js", flet_js);
11
+ flet_js.documentUrl = documentUrl;
12
+ await self.pyodide.loadPackage("micropip");
13
+ let pre = self.micropipIncludePre ? "True" : "False";
14
+ await self.pyodide.runPythonAsync(`
15
+ import micropip
16
+ import os
17
+ from pyodide.http import pyfetch
18
+ response = await pyfetch("app.tar.gz")
19
+ await response.unpack_archive()
20
+ if os.path.exists("requirements.txt"):
21
+ with open("requirements.txt", "r") as f:
22
+ deps = [line.rstrip() for line in f]
23
+ print("Loading requirements.txt:", deps)
24
+ await micropip.install(deps, pre=${pre})
25
+ `);
26
+ pyodide.pyimport(self.pythonModuleName);
27
+ await self.flet_js.start_connection(self.receiveCallback);
28
+ self.postMessage("initialized");
29
+ };
30
+
31
+ self.receiveCallback = (message) => {
32
+ self.postMessage(message);
33
+ }
34
+
35
+ self.onmessage = async (event) => {
36
+ // run only once
37
+ if (!self.initialized) {
38
+ self.initialized = true;
39
+ self.documentUrl = event.data.documentUrl;
40
+ self.micropipIncludePre = event.data.micropipIncludePre;
41
+ self.pythonModuleName = event.data.pythonModuleName;
42
+ await self.initPyodide();
43
+ } else {
44
+ // message
45
+ flet_js.send(event.data);
46
+ }
47
+ };
python.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const pythonWorker = new Worker("python-worker.js");
2
+
3
+ let _onPythonInitialized = null;
4
+ let pythonInitialized = new Promise((onSuccess) => _onPythonInitialized = onSuccess);
5
+ let _onReceivedCallback = null;
6
+
7
+ pythonWorker.onmessage = (event) => {
8
+ if (event.data == "initialized") {
9
+ _onPythonInitialized();
10
+ } else {
11
+ _onReceivedCallback(event.data);
12
+ }
13
+ };
14
+
15
+ documentUrl = document.URL;
16
+
17
+ // initialize worker
18
+ pythonWorker.postMessage({ documentUrl, micropipIncludePre, pythonModuleName });
19
+
20
+ async function jsConnect(receiveCallback) {
21
+ _onReceivedCallback = receiveCallback;
22
+ await pythonInitialized;
23
+ console.log("Python engine initialized!");
24
+ }
25
+
26
+ async function jsSend(data) {
27
+ pythonWorker.postMessage(data);
28
+ }
version.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"app_name":"flet_client","version":"1.0.0","build_number":"1","package_name":"flet_client"}