flet-web 0.1.0__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.
- flet_web/__init__.py +9 -0
- flet_web/fastapi/README.md +146 -0
- flet_web/fastapi/__init__.py +6 -0
- flet_web/fastapi/app.py +121 -0
- flet_web/fastapi/flet_app.py +430 -0
- flet_web/fastapi/flet_app_manager.py +167 -0
- flet_web/fastapi/flet_fastapi.py +128 -0
- flet_web/fastapi/flet_oauth.py +66 -0
- flet_web/fastapi/flet_static_files.py +188 -0
- flet_web/fastapi/flet_upload.py +95 -0
- flet_web/fastapi/oauth_state.py +11 -0
- flet_web/fastapi/serve_fastapi_web_app.py +94 -0
- flet_web/patch_index.py +112 -0
- flet_web/uploads.py +54 -0
- flet_web/version.py +1 -0
- flet_web/web/.last_build_id +1 -0
- flet_web/web/assets/AssetManifest.bin +1 -0
- flet_web/web/assets/AssetManifest.bin.json +1 -0
- flet_web/web/assets/AssetManifest.json +1 -0
- flet_web/web/assets/FontManifest.json +1 -0
- flet_web/web/assets/NOTICES +37535 -0
- flet_web/web/assets/fonts/MaterialIcons-Regular.otf +0 -0
- flet_web/web/assets/packages/cupertino_icons/assets/CupertinoIcons.ttf +0 -0
- flet_web/web/assets/packages/flutter_map/lib/assets/flutter_map_logo.png +0 -0
- flet_web/web/assets/packages/media_kit/assets/web/hls1.4.10.js +2 -0
- flet_web/web/assets/packages/record_web/assets/js/record.fixwebmduration.js +507 -0
- flet_web/web/assets/packages/record_web/assets/js/record.worklet.js +400 -0
- flet_web/web/assets/packages/wakelock_plus/assets/no_sleep.js +230 -0
- flet_web/web/assets/shaders/ink_sparkle.frag +126 -0
- flet_web/web/favicon.png +0 -0
- flet_web/web/flutter.js +4 -0
- flet_web/web/flutter_bootstrap.js +31 -0
- flet_web/web/flutter_service_worker.js +214 -0
- flet_web/web/icons/apple-touch-icon-192.png +0 -0
- flet_web/web/icons/icon-192.png +0 -0
- flet_web/web/icons/icon-512.png +0 -0
- flet_web/web/icons/icon-maskable-192.png +0 -0
- flet_web/web/icons/icon-maskable-512.png +0 -0
- flet_web/web/icons/loading-animation.png +0 -0
- flet_web/web/index.html +99 -0
- flet_web/web/main.dart.js +234871 -0
- flet_web/web/manifest.json +35 -0
- flet_web/web/python-worker.js +47 -0
- flet_web/web/python.js +28 -0
- flet_web/web/version.json +1 -0
- flet_web-0.1.0.dist-info/METADATA +26 -0
- flet_web-0.1.0.dist-info/RECORD +48 -0
- flet_web-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sksl": {
|
|
3
|
+
"entrypoint": "ink_sparkle_fragment_main",
|
|
4
|
+
"shader": "// This SkSL shader is autogenerated by spirv-cross.\n\nfloat4 flutter_FragCoord;\n\nuniform vec4 u_color;\nuniform vec4 u_composite_1;\nuniform vec2 u_center;\nuniform float u_max_radius;\nuniform vec2 u_resolution_scale;\nuniform vec2 u_noise_scale;\nuniform float u_noise_phase;\nuniform vec2 u_circle1;\nuniform vec2 u_circle2;\nuniform vec2 u_circle3;\nuniform vec2 u_rotation1;\nuniform vec2 u_rotation2;\nuniform vec2 u_rotation3;\n\nvec4 fragColor;\n\nfloat u_alpha;\nfloat u_sparkle_alpha;\nfloat u_blur;\nfloat u_radius_scale;\n\nvec2 FLT_flutter_local_FlutterFragCoord()\n{\n return flutter_FragCoord.xy;\n}\n\nmat2 FLT_flutter_local_rotate2d(vec2 rad)\n{\n return mat2(vec2(rad.x, -rad.y), vec2(rad.y, rad.x));\n}\n\nfloat FLT_flutter_local_soft_circle(vec2 uv, vec2 xy, float radius, float blur)\n{\n float blur_half = blur * 0.5;\n float d = distance(uv, xy);\n return 1.0 - smoothstep(1.0 - blur_half, 1.0 + blur_half, d / radius);\n}\n\nfloat FLT_flutter_local_circle_grid(vec2 resolution, inout vec2 p, vec2 xy, vec2 rotation, float cell_diameter)\n{\n vec2 param = rotation;\n p = (FLT_flutter_local_rotate2d(param) * (xy - p)) + xy;\n p = mod(p, vec2(cell_diameter)) / resolution;\n float cell_uv = (cell_diameter / resolution.y) * 0.5;\n float r = 0.64999997615814208984375 * cell_uv;\n vec2 param_1 = p;\n vec2 param_2 = vec2(cell_uv);\n float param_3 = r;\n float param_4 = r * 50.0;\n return FLT_flutter_local_soft_circle(param_1, param_2, param_3, param_4);\n}\n\nfloat FLT_flutter_local_turbulence(vec2 uv)\n{\n vec2 uv_scale = uv * vec2(0.800000011920928955078125);\n vec2 param = vec2(0.800000011920928955078125);\n vec2 param_1 = uv_scale;\n vec2 param_2 = u_circle1;\n vec2 param_3 = u_rotation1;\n float param_4 = 0.17000000178813934326171875;\n float _319 = FLT_flutter_local_circle_grid(param, param_1, param_2, param_3, param_4);\n float g1 = _319;\n vec2 param_5 = vec2(0.800000011920928955078125);\n vec2 param_6 = uv_scale;\n vec2 param_7 = u_circle2;\n vec2 param_8 = u_rotation2;\n float param_9 = 0.20000000298023223876953125;\n float _331 = FLT_flutter_local_circle_grid(param_5, param_6, param_7, param_8, param_9);\n float g2 = _331;\n vec2 param_10 = vec2(0.800000011920928955078125);\n vec2 param_11 = uv_scale;\n vec2 param_12 = u_circle3;\n vec2 param_13 = u_rotation3;\n float param_14 = 0.2750000059604644775390625;\n float _344 = FLT_flutter_local_circle_grid(param_10, param_11, param_12, param_13, param_14);\n float g3 = _344;\n float v = (((g1 * g1) + g2) - g3) * 0.5;\n return clamp(0.449999988079071044921875 + (0.800000011920928955078125 * v), 0.0, 1.0);\n}\n\nfloat FLT_flutter_local_soft_ring(vec2 uv, vec2 xy, float radius, float thickness, float blur)\n{\n vec2 param = uv;\n vec2 param_1 = xy;\n float param_2 = radius + thickness;\n float param_3 = blur;\n float circle_outer = FLT_flutter_local_soft_circle(param, param_1, param_2, param_3);\n vec2 param_4 = uv;\n vec2 param_5 = xy;\n float param_6 = max(radius - thickness, 0.0);\n float param_7 = blur;\n float circle_inner = FLT_flutter_local_soft_circle(param_4, param_5, param_6, param_7);\n return clamp(circle_outer - circle_inner, 0.0, 1.0);\n}\n\nfloat FLT_flutter_local_triangle_noise(inout vec2 n)\n{\n n = fract(n * vec2(5.398700237274169921875, 5.442100048065185546875));\n n += vec2(dot(n.yx, n + vec2(21.5351009368896484375, 14.3136997222900390625)));\n float xy = n.x * n.y;\n return (fract(xy * 95.43070220947265625) + fract(xy * 75.0496063232421875)) - 1.0;\n}\n\nfloat FLT_flutter_local_threshold(float v, float l, float h)\n{\n return step(l, v) * (1.0 - step(h, v));\n}\n\nfloat FLT_flutter_local_sparkle(vec2 uv, float t)\n{\n vec2 param = uv;\n float _242 = FLT_flutter_local_triangle_noise(param);\n float n = _242;\n float param_1 = n;\n float param_2 = 0.0;\n float param_3 = 0.0500000007450580596923828125;\n float s = FLT_flutter_local_threshold(param_1, param_2, param_3);\n float param_4 = n + sin(3.1415927410125732421875 * (t + 0.3499999940395355224609375));\n float param_5 = 0.100000001490116119384765625;\n float param_6 = 0.1500000059604644775390625;\n s += FLT_flutter_local_threshold(param_4, param_5, param_6);\n float param_7 = n + sin(3.1415927410125732421875 * (t + 0.699999988079071044921875));\n float param_8 = 0.20000000298023223876953125;\n float param_9 = 0.25;\n s += FLT_flutter_local_threshold(param_7, param_8, param_9);\n float param_10 = n + sin(3.1415927410125732421875 * (t + 1.0499999523162841796875));\n float param_11 = 0.300000011920928955078125;\n float param_12 = 0.3499999940395355224609375;\n s += FLT_flutter_local_threshold(param_10, param_11, param_12);\n return clamp(s, 0.0, 1.0) * 0.550000011920928955078125;\n}\n\nvoid FLT_main()\n{\n u_alpha = u_composite_1.x;\n u_sparkle_alpha = u_composite_1.y;\n u_blur = u_composite_1.z;\n u_radius_scale = u_composite_1.w;\n vec2 p = FLT_flutter_local_FlutterFragCoord();\n vec2 uv_1 = p * u_resolution_scale;\n vec2 density_uv = uv_1 - mod(p, u_noise_scale);\n float radius = u_max_radius * u_radius_scale;\n vec2 param_13 = uv_1;\n float turbulence = FLT_flutter_local_turbulence(param_13);\n vec2 param_14 = p;\n vec2 param_15 = u_center;\n float param_16 = radius;\n float param_17 = 0.0500000007450580596923828125 * u_max_radius;\n float param_18 = u_blur;\n float ring = FLT_flutter_local_soft_ring(param_14, param_15, param_16, param_17, param_18);\n vec2 param_19 = density_uv;\n float param_20 = u_noise_phase;\n float sparkle = ((FLT_flutter_local_sparkle(param_19, param_20) * ring) * turbulence) * u_sparkle_alpha;\n vec2 param_21 = p;\n vec2 param_22 = u_center;\n float param_23 = radius;\n float param_24 = u_blur;\n float wave_alpha = (FLT_flutter_local_soft_circle(param_21, param_22, param_23, param_24) * u_alpha) * u_color.w;\n vec4 wave_color = vec4(u_color.xyz * wave_alpha, wave_alpha);\n fragColor = mix(wave_color, vec4(1.0), vec4(sparkle));\n}\n\nhalf4 main(float2 iFragCoord)\n{\n flutter_FragCoord = float4(iFragCoord, 0, 0);\n FLT_main();\n return fragColor;\n}\n",
|
|
5
|
+
"stage": 1,
|
|
6
|
+
"uniforms": [
|
|
7
|
+
{
|
|
8
|
+
"array_elements": 0,
|
|
9
|
+
"bit_width": 32,
|
|
10
|
+
"columns": 1,
|
|
11
|
+
"location": 0,
|
|
12
|
+
"name": "u_color",
|
|
13
|
+
"rows": 4,
|
|
14
|
+
"type": 10
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"array_elements": 0,
|
|
18
|
+
"bit_width": 32,
|
|
19
|
+
"columns": 1,
|
|
20
|
+
"location": 1,
|
|
21
|
+
"name": "u_composite_1",
|
|
22
|
+
"rows": 4,
|
|
23
|
+
"type": 10
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"array_elements": 0,
|
|
27
|
+
"bit_width": 32,
|
|
28
|
+
"columns": 1,
|
|
29
|
+
"location": 2,
|
|
30
|
+
"name": "u_center",
|
|
31
|
+
"rows": 2,
|
|
32
|
+
"type": 10
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"array_elements": 0,
|
|
36
|
+
"bit_width": 32,
|
|
37
|
+
"columns": 1,
|
|
38
|
+
"location": 3,
|
|
39
|
+
"name": "u_max_radius",
|
|
40
|
+
"rows": 1,
|
|
41
|
+
"type": 10
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"array_elements": 0,
|
|
45
|
+
"bit_width": 32,
|
|
46
|
+
"columns": 1,
|
|
47
|
+
"location": 4,
|
|
48
|
+
"name": "u_resolution_scale",
|
|
49
|
+
"rows": 2,
|
|
50
|
+
"type": 10
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"array_elements": 0,
|
|
54
|
+
"bit_width": 32,
|
|
55
|
+
"columns": 1,
|
|
56
|
+
"location": 5,
|
|
57
|
+
"name": "u_noise_scale",
|
|
58
|
+
"rows": 2,
|
|
59
|
+
"type": 10
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"array_elements": 0,
|
|
63
|
+
"bit_width": 32,
|
|
64
|
+
"columns": 1,
|
|
65
|
+
"location": 6,
|
|
66
|
+
"name": "u_noise_phase",
|
|
67
|
+
"rows": 1,
|
|
68
|
+
"type": 10
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"array_elements": 0,
|
|
72
|
+
"bit_width": 32,
|
|
73
|
+
"columns": 1,
|
|
74
|
+
"location": 7,
|
|
75
|
+
"name": "u_circle1",
|
|
76
|
+
"rows": 2,
|
|
77
|
+
"type": 10
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"array_elements": 0,
|
|
81
|
+
"bit_width": 32,
|
|
82
|
+
"columns": 1,
|
|
83
|
+
"location": 8,
|
|
84
|
+
"name": "u_circle2",
|
|
85
|
+
"rows": 2,
|
|
86
|
+
"type": 10
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"array_elements": 0,
|
|
90
|
+
"bit_width": 32,
|
|
91
|
+
"columns": 1,
|
|
92
|
+
"location": 9,
|
|
93
|
+
"name": "u_circle3",
|
|
94
|
+
"rows": 2,
|
|
95
|
+
"type": 10
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"array_elements": 0,
|
|
99
|
+
"bit_width": 32,
|
|
100
|
+
"columns": 1,
|
|
101
|
+
"location": 10,
|
|
102
|
+
"name": "u_rotation1",
|
|
103
|
+
"rows": 2,
|
|
104
|
+
"type": 10
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"array_elements": 0,
|
|
108
|
+
"bit_width": 32,
|
|
109
|
+
"columns": 1,
|
|
110
|
+
"location": 11,
|
|
111
|
+
"name": "u_rotation2",
|
|
112
|
+
"rows": 2,
|
|
113
|
+
"type": 10
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"array_elements": 0,
|
|
117
|
+
"bit_width": 32,
|
|
118
|
+
"columns": 1,
|
|
119
|
+
"location": 12,
|
|
120
|
+
"name": "u_rotation3",
|
|
121
|
+
"rows": 2,
|
|
122
|
+
"type": 10
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
}
|
flet_web/web/favicon.png
ADDED
|
Binary file
|
flet_web/web/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
|
|
@@ -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: "4184786806",
|
|
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
|
+
});
|
|
@@ -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": "250c0f4f9c7bb34a21239f6b4c554cbb",
|
|
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": "01d10104643c120efc27ee81efb675da",
|
|
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": "e1f82c7cae4d45d0786730acc90d9fa6",
|
|
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
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
flet_web/web/index.html
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
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="Flet">
|
|
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="%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
|
+
<title>Flet</title>
|
|
26
|
+
<link rel="manifest" href="manifest.json">
|
|
27
|
+
|
|
28
|
+
<script>
|
|
29
|
+
var webRenderer = "auto";
|
|
30
|
+
var useColorEmoji = false;
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<!-- webRenderer -->
|
|
34
|
+
<!-- useColorEmoji -->
|
|
35
|
+
|
|
36
|
+
<!-- pyodideCode -->
|
|
37
|
+
</head>
|
|
38
|
+
|
|
39
|
+
<body>
|
|
40
|
+
<div id="loading">
|
|
41
|
+
<style>
|
|
42
|
+
body {
|
|
43
|
+
inset: 0;
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 0;
|
|
47
|
+
position: fixed;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#loading {
|
|
51
|
+
align-items: center;
|
|
52
|
+
display: flex;
|
|
53
|
+
height: 100%;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
width: 100%;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
#loading img {
|
|
59
|
+
animation: 1s ease-in-out 0s infinite alternate breathe;
|
|
60
|
+
opacity: .66;
|
|
61
|
+
transition: opacity .4s;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#loading.main_done img {
|
|
65
|
+
opacity: 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#loading.init_done img {
|
|
69
|
+
animation: .33s ease-in-out 0s 1 forwards zooooom;
|
|
70
|
+
opacity: .05;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@keyframes breathe {
|
|
74
|
+
from {
|
|
75
|
+
transform: scale(0.4);
|
|
76
|
+
opacity: 1.0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
to {
|
|
80
|
+
transform: scale(0.35);
|
|
81
|
+
opacity: .7;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@keyframes zooooom {
|
|
86
|
+
from {
|
|
87
|
+
transform: scale(0.4)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
to {
|
|
91
|
+
transform: scale(10)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
</style>
|
|
95
|
+
<img src="icons/loading-animation.png" alt="Loading..." />
|
|
96
|
+
</div>
|
|
97
|
+
<script src="flutter_bootstrap.js" async></script>
|
|
98
|
+
</body>
|
|
99
|
+
</html>
|