squash
This commit is contained in:
		
							parent
							
								
									abadb2ec7d
								
							
						
					
					
						commit
						828057f05e
					
				
					 7 changed files with 876 additions and 7 deletions
				
			
		
							
								
								
									
										239
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										239
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							|  | @ -1,5 +1,7 @@ | |||
| # This file is automatically @generated by Cargo. | ||||
| # It is not intended for manual editing. | ||||
| version = 3 | ||||
| 
 | ||||
| [[package]] | ||||
| name = "addr2line" | ||||
| version = "0.14.0" | ||||
|  | @ -15,6 +17,18 @@ version = "0.2.3" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anyhow" | ||||
| version = "1.0.48" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "62e1f47f7dc0422027a4e370dd4548d4d66b26782e513e98dca1e689e058a80e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anymap" | ||||
| version = "0.12.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "assert_approx_eq" | ||||
| version = "1.1.0" | ||||
|  | @ -41,12 +55,33 @@ dependencies = [ | |||
|  "rustc-demangle", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bincode" | ||||
| version = "1.3.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" | ||||
| dependencies = [ | ||||
|  "serde", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "boolinator" | ||||
| version = "2.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bumpalo" | ||||
| version = "3.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bytes" | ||||
| version = "1.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cfg-if" | ||||
| version = "0.1.10" | ||||
|  | @ -59,6 +94,12 @@ version = "1.0.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cfg-match" | ||||
| version = "0.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8100e46ff92eb85bf6dc2930c73f2a4f7176393c84a9446b3d501e1b354e7b34" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "chrono" | ||||
| version = "0.4.19" | ||||
|  | @ -91,6 +132,12 @@ dependencies = [ | |||
|  "backtrace", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "fnv" | ||||
| version = "1.0.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "geo-types" | ||||
| version = "0.4.3" | ||||
|  | @ -106,6 +153,60 @@ version = "0.23.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gloo" | ||||
| version = "0.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "68ce6f2dfa9f57f15b848efa2aade5e1850dc72986b87a2b0752d44ca08f4967" | ||||
| dependencies = [ | ||||
|  "gloo-console-timer", | ||||
|  "gloo-events", | ||||
|  "gloo-file", | ||||
|  "gloo-timers", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gloo-console-timer" | ||||
| version = "0.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b48675544b29ac03402c6dffc31a912f716e38d19f7e74b78b7e900ec3c941ea" | ||||
| dependencies = [ | ||||
|  "web-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gloo-events" | ||||
| version = "0.1.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "088514ec8ef284891c762c88a66b639b3a730134714692ee31829765c5bc814f" | ||||
| dependencies = [ | ||||
|  "wasm-bindgen", | ||||
|  "web-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gloo-file" | ||||
| version = "0.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8f9fecfe46b5dc3cc46f58e98ba580cc714f2c93860796d002eb3527a465ef49" | ||||
| dependencies = [ | ||||
|  "gloo-events", | ||||
|  "js-sys", | ||||
|  "wasm-bindgen", | ||||
|  "web-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gloo-timers" | ||||
| version = "0.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" | ||||
| dependencies = [ | ||||
|  "js-sys", | ||||
|  "wasm-bindgen", | ||||
|  "web-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gpx" | ||||
| version = "0.8.1" | ||||
|  | @ -128,8 +229,42 @@ dependencies = [ | |||
|  "js-sys", | ||||
|  "wasm-bindgen", | ||||
|  "wasm-bindgen-test", | ||||
|  "yew", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hashbrown" | ||||
| version = "0.11.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "http" | ||||
| version = "0.2.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" | ||||
| dependencies = [ | ||||
|  "bytes", | ||||
|  "fnv", | ||||
|  "itoa", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "indexmap" | ||||
| version = "1.7.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" | ||||
| dependencies = [ | ||||
|  "autocfg", | ||||
|  "hashbrown", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "itoa" | ||||
| version = "0.4.8" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "js-sys" | ||||
| version = "0.3.45" | ||||
|  | @ -219,12 +354,55 @@ version = "0.1.18" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ryu" | ||||
| version = "1.0.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "scoped-tls" | ||||
| version = "1.0.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "serde" | ||||
| version = "1.0.118" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" | ||||
| dependencies = [ | ||||
|  "serde_derive", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "serde_derive" | ||||
| version = "1.0.118" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "serde_json" | ||||
| version = "1.0.72" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527" | ||||
| dependencies = [ | ||||
|  "itoa", | ||||
|  "ryu", | ||||
|  "serde", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "slab" | ||||
| version = "0.4.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "syn" | ||||
| version = "1.0.48" | ||||
|  | @ -236,6 +414,26 @@ dependencies = [ | |||
|  "unicode-xid", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror" | ||||
| version = "1.0.30" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" | ||||
| dependencies = [ | ||||
|  "thiserror-impl", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror-impl" | ||||
| version = "1.0.30" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "time" | ||||
| version = "0.1.44" | ||||
|  | @ -386,3 +584,44 @@ name = "xml-rs" | |||
| version = "0.8.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "yew" | ||||
| version = "0.18.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e4d5154faef86dddd2eb333d4755ea5643787d20aca683e58759b0e53351409f" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "anymap", | ||||
|  "bincode", | ||||
|  "cfg-if 1.0.0", | ||||
|  "cfg-match", | ||||
|  "console_error_panic_hook", | ||||
|  "gloo", | ||||
|  "http", | ||||
|  "indexmap", | ||||
|  "js-sys", | ||||
|  "log", | ||||
|  "ryu", | ||||
|  "serde", | ||||
|  "serde_json", | ||||
|  "slab", | ||||
|  "thiserror", | ||||
|  "wasm-bindgen", | ||||
|  "wasm-bindgen-futures", | ||||
|  "web-sys", | ||||
|  "yew-macro", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "yew-macro" | ||||
| version = "0.18.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d6e23bfe3dc3933fbe9592d149c9985f3047d08c637a884b9344c21e56e092ef" | ||||
| dependencies = [ | ||||
|  "boolinator", | ||||
|  "lazy_static", | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
|  |  | |||
|  | @ -4,19 +4,14 @@ version = "0.0.1" | |||
| authors = ["Matthew Dillon <matthewrdillon@gmail.com>"] | ||||
| edition = "2018" | ||||
| description = "just some gpx-related tools that i want to use" | ||||
| repository = "https://github.com/thermokarst/gpx-web-utils" | ||||
| repository = "git://pingo.thermokar.st/gpx-web-utils" | ||||
| license = "MIT" | ||||
| 
 | ||||
| [lib] | ||||
| crate-type = ["cdylib", "rlib"] | ||||
| 
 | ||||
| [features] | ||||
| default = ["console_error_panic_hook"] | ||||
| 
 | ||||
| [dependencies] | ||||
| wasm-bindgen = "0.2.63" | ||||
| js-sys = "0.3.45" | ||||
| gpx = "0.8.1" | ||||
| yew = "0.18" | ||||
| 
 | ||||
| console_error_panic_hook = { version = "0.1.6", optional = true } | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										480
									
								
								dist/index-5695e498a6d6f6f5.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										480
									
								
								dist/index-5695e498a6d6f6f5.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,480 @@ | |||
| 
 | ||||
| let wasm; | ||||
| 
 | ||||
| const heap = new Array(32).fill(undefined); | ||||
| 
 | ||||
| heap.push(undefined, null, true, false); | ||||
| 
 | ||||
| function getObject(idx) { return heap[idx]; } | ||||
| 
 | ||||
| let heap_next = heap.length; | ||||
| 
 | ||||
| function addHeapObject(obj) { | ||||
|     if (heap_next === heap.length) heap.push(heap.length + 1); | ||||
|     const idx = heap_next; | ||||
|     heap_next = heap[idx]; | ||||
| 
 | ||||
|     heap[idx] = obj; | ||||
|     return idx; | ||||
| } | ||||
| 
 | ||||
| let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); | ||||
| 
 | ||||
| cachedTextDecoder.decode(); | ||||
| 
 | ||||
| let cachegetUint8Memory0 = null; | ||||
| function getUint8Memory0() { | ||||
|     if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { | ||||
|         cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); | ||||
|     } | ||||
|     return cachegetUint8Memory0; | ||||
| } | ||||
| 
 | ||||
| function getStringFromWasm0(ptr, len) { | ||||
|     return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); | ||||
| } | ||||
| 
 | ||||
| function dropObject(idx) { | ||||
|     if (idx < 36) return; | ||||
|     heap[idx] = heap_next; | ||||
|     heap_next = idx; | ||||
| } | ||||
| 
 | ||||
| function takeObject(idx) { | ||||
|     const ret = getObject(idx); | ||||
|     dropObject(idx); | ||||
|     return ret; | ||||
| } | ||||
| 
 | ||||
| function debugString(val) { | ||||
|     // primitive types
 | ||||
|     const type = typeof val; | ||||
|     if (type == 'number' || type == 'boolean' || val == null) { | ||||
|         return  `${val}`; | ||||
|     } | ||||
|     if (type == 'string') { | ||||
|         return `"${val}"`; | ||||
|     } | ||||
|     if (type == 'symbol') { | ||||
|         const description = val.description; | ||||
|         if (description == null) { | ||||
|             return 'Symbol'; | ||||
|         } else { | ||||
|             return `Symbol(${description})`; | ||||
|         } | ||||
|     } | ||||
|     if (type == 'function') { | ||||
|         const name = val.name; | ||||
|         if (typeof name == 'string' && name.length > 0) { | ||||
|             return `Function(${name})`; | ||||
|         } else { | ||||
|             return 'Function'; | ||||
|         } | ||||
|     } | ||||
|     // objects
 | ||||
|     if (Array.isArray(val)) { | ||||
|         const length = val.length; | ||||
|         let debug = '['; | ||||
|         if (length > 0) { | ||||
|             debug += debugString(val[0]); | ||||
|         } | ||||
|         for(let i = 1; i < length; i++) { | ||||
|             debug += ', ' + debugString(val[i]); | ||||
|         } | ||||
|         debug += ']'; | ||||
|         return debug; | ||||
|     } | ||||
|     // Test for built-in
 | ||||
|     const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); | ||||
|     let className; | ||||
|     if (builtInMatches.length > 1) { | ||||
|         className = builtInMatches[1]; | ||||
|     } else { | ||||
|         // Failed to match the standard '[object ClassName]'
 | ||||
|         return toString.call(val); | ||||
|     } | ||||
|     if (className == 'Object') { | ||||
|         // we're a user defined class or Object
 | ||||
|         // JSON.stringify avoids problems with cycles, and is generally much
 | ||||
|         // easier than looping through ownProperties of `val`.
 | ||||
|         try { | ||||
|             return 'Object(' + JSON.stringify(val) + ')'; | ||||
|         } catch (_) { | ||||
|             return 'Object'; | ||||
|         } | ||||
|     } | ||||
|     // errors
 | ||||
|     if (val instanceof Error) { | ||||
|         return `${val.name}: ${val.message}\n${val.stack}`; | ||||
|     } | ||||
|     // TODO we could test for more things here, like `Set`s and `Map`s.
 | ||||
|     return className; | ||||
| } | ||||
| 
 | ||||
| let WASM_VECTOR_LEN = 0; | ||||
| 
 | ||||
| let cachedTextEncoder = new TextEncoder('utf-8'); | ||||
| 
 | ||||
| const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' | ||||
|     ? function (arg, view) { | ||||
|     return cachedTextEncoder.encodeInto(arg, view); | ||||
| } | ||||
|     : function (arg, view) { | ||||
|     const buf = cachedTextEncoder.encode(arg); | ||||
|     view.set(buf); | ||||
|     return { | ||||
|         read: arg.length, | ||||
|         written: buf.length | ||||
|     }; | ||||
| }); | ||||
| 
 | ||||
| function passStringToWasm0(arg, malloc, realloc) { | ||||
| 
 | ||||
|     if (realloc === undefined) { | ||||
|         const buf = cachedTextEncoder.encode(arg); | ||||
|         const ptr = malloc(buf.length); | ||||
|         getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); | ||||
|         WASM_VECTOR_LEN = buf.length; | ||||
|         return ptr; | ||||
|     } | ||||
| 
 | ||||
|     let len = arg.length; | ||||
|     let ptr = malloc(len); | ||||
| 
 | ||||
|     const mem = getUint8Memory0(); | ||||
| 
 | ||||
|     let offset = 0; | ||||
| 
 | ||||
|     for (; offset < len; offset++) { | ||||
|         const code = arg.charCodeAt(offset); | ||||
|         if (code > 0x7F) break; | ||||
|         mem[ptr + offset] = code; | ||||
|     } | ||||
| 
 | ||||
|     if (offset !== len) { | ||||
|         if (offset !== 0) { | ||||
|             arg = arg.slice(offset); | ||||
|         } | ||||
|         ptr = realloc(ptr, len, len = offset + arg.length * 3); | ||||
|         const view = getUint8Memory0().subarray(ptr + offset, ptr + len); | ||||
|         const ret = encodeString(arg, view); | ||||
| 
 | ||||
|         offset += ret.written; | ||||
|     } | ||||
| 
 | ||||
|     WASM_VECTOR_LEN = offset; | ||||
|     return ptr; | ||||
| } | ||||
| 
 | ||||
| let cachegetInt32Memory0 = null; | ||||
| function getInt32Memory0() { | ||||
|     if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { | ||||
|         cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); | ||||
|     } | ||||
|     return cachegetInt32Memory0; | ||||
| } | ||||
| 
 | ||||
| function makeMutClosure(arg0, arg1, dtor, f) { | ||||
|     const state = { a: arg0, b: arg1, cnt: 1, dtor }; | ||||
|     const real = (...args) => { | ||||
|         // First up with a closure we increment the internal reference
 | ||||
|         // count. This ensures that the Rust closure environment won't
 | ||||
|         // be deallocated while we're invoking it.
 | ||||
|         state.cnt++; | ||||
|         const a = state.a; | ||||
|         state.a = 0; | ||||
|         try { | ||||
|             return f(a, state.b, ...args); | ||||
|         } finally { | ||||
|             if (--state.cnt === 0) { | ||||
|                 wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); | ||||
| 
 | ||||
|             } else { | ||||
|                 state.a = a; | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
|     real.original = state; | ||||
| 
 | ||||
|     return real; | ||||
| } | ||||
| 
 | ||||
| let stack_pointer = 32; | ||||
| 
 | ||||
| function addBorrowedObject(obj) { | ||||
|     if (stack_pointer == 1) throw new Error('out of js stack'); | ||||
|     heap[--stack_pointer] = obj; | ||||
|     return stack_pointer; | ||||
| } | ||||
| function __wbg_adapter_16(arg0, arg1, arg2) { | ||||
|     try { | ||||
|         wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h62558760dc33a565(arg0, arg1, addBorrowedObject(arg2)); | ||||
|     } finally { | ||||
|         heap[stack_pointer++] = undefined; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function isLikeNone(x) { | ||||
|     return x === undefined || x === null; | ||||
| } | ||||
| 
 | ||||
| function handleError(f) { | ||||
|     return function () { | ||||
|         try { | ||||
|             return f.apply(this, arguments); | ||||
| 
 | ||||
|         } catch (e) { | ||||
|             wasm.__wbindgen_exn_store(addHeapObject(e)); | ||||
|         } | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
| async function load(module, imports) { | ||||
|     if (typeof Response === 'function' && module instanceof Response) { | ||||
| 
 | ||||
|         if (typeof WebAssembly.instantiateStreaming === 'function') { | ||||
|             try { | ||||
|                 return await WebAssembly.instantiateStreaming(module, imports); | ||||
| 
 | ||||
|             } catch (e) { | ||||
|                 if (module.headers.get('Content-Type') != 'application/wasm') { | ||||
|                     console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); | ||||
| 
 | ||||
|                 } else { | ||||
|                     throw e; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         const bytes = await module.arrayBuffer(); | ||||
|         return await WebAssembly.instantiate(bytes, imports); | ||||
| 
 | ||||
|     } else { | ||||
| 
 | ||||
|         const instance = await WebAssembly.instantiate(module, imports); | ||||
| 
 | ||||
|         if (instance instanceof WebAssembly.Instance) { | ||||
|             return { instance, module }; | ||||
| 
 | ||||
|         } else { | ||||
|             return instance; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| async function init(input) { | ||||
|     if (typeof input === 'undefined') { | ||||
|         input = import.meta.url.replace(/\.js$/, '_bg.wasm'); | ||||
|     } | ||||
|     const imports = {}; | ||||
|     imports.wbg = {}; | ||||
|     imports.wbg.__wbindgen_object_clone_ref = function(arg0) { | ||||
|         var ret = getObject(arg0); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbindgen_is_undefined = function(arg0) { | ||||
|         var ret = getObject(arg0) === undefined; | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbindgen_string_new = function(arg0, arg1) { | ||||
|         var ret = getStringFromWasm0(arg0, arg1); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbindgen_cb_drop = function(arg0) { | ||||
|         const obj = takeObject(arg0).original; | ||||
|         if (obj.cnt-- == 1) { | ||||
|             obj.a = 0; | ||||
|             return true; | ||||
|         } | ||||
|         var ret = false; | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbindgen_object_drop_ref = function(arg0) { | ||||
|         takeObject(arg0); | ||||
|     }; | ||||
|     imports.wbg.__wbg_error_4bb6c2a97407129a = function(arg0, arg1) { | ||||
|         try { | ||||
|             console.error(getStringFromWasm0(arg0, arg1)); | ||||
|         } finally { | ||||
|             wasm.__wbindgen_free(arg0, arg1); | ||||
|         } | ||||
|     }; | ||||
|     imports.wbg.__wbg_new_59cb74e423758ede = function() { | ||||
|         var ret = new Error(); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbg_stack_558ba5917b466edd = function(arg0, arg1) { | ||||
|         var ret = getObject(arg1).stack; | ||||
|         var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); | ||||
|         var len0 = WASM_VECTOR_LEN; | ||||
|         getInt32Memory0()[arg0 / 4 + 1] = len0; | ||||
|         getInt32Memory0()[arg0 / 4 + 0] = ptr0; | ||||
|     }; | ||||
|     imports.wbg.__wbg_instanceof_Window_adf3196bdc02b386 = function(arg0) { | ||||
|         var ret = getObject(arg0) instanceof Window; | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbg_document_6cc8d0b87c0a99b9 = function(arg0) { | ||||
|         var ret = getObject(arg0).document; | ||||
|         return isLikeNone(ret) ? 0 : addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbg_createElement_5bdf88a5af9f17c5 = handleError(function(arg0, arg1, arg2) { | ||||
|         var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2)); | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_createElementNS_ea14cb45a87a0719 = handleError(function(arg0, arg1, arg2, arg3, arg4) { | ||||
|         var ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_createTextNode_b3c9e3cb02f83ab5 = function(arg0, arg1, arg2) { | ||||
|         var ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2)); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbg_querySelector_69fd5cd784bcc892 = handleError(function(arg0, arg1, arg2) { | ||||
|         var ret = getObject(arg0).querySelector(getStringFromWasm0(arg1, arg2)); | ||||
|         return isLikeNone(ret) ? 0 : addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_instanceof_HtmlButtonElement_645b6f9d0d172e00 = function(arg0) { | ||||
|         var ret = getObject(arg0) instanceof HTMLButtonElement; | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbg_settype_98bff8074314478e = function(arg0, arg1, arg2) { | ||||
|         getObject(arg0).type = getStringFromWasm0(arg1, arg2); | ||||
|     }; | ||||
|     imports.wbg.__wbg_instanceof_HtmlTextAreaElement_6c876047bbe08f92 = function(arg0) { | ||||
|         var ret = getObject(arg0) instanceof HTMLTextAreaElement; | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbg_value_91d41b8dbd0b2f0b = function(arg0, arg1) { | ||||
|         var ret = getObject(arg1).value; | ||||
|         var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); | ||||
|         var len0 = WASM_VECTOR_LEN; | ||||
|         getInt32Memory0()[arg0 / 4 + 1] = len0; | ||||
|         getInt32Memory0()[arg0 / 4 + 0] = ptr0; | ||||
|     }; | ||||
|     imports.wbg.__wbg_setvalue_1012134a2989f3ee = function(arg0, arg1, arg2) { | ||||
|         getObject(arg0).value = getStringFromWasm0(arg1, arg2); | ||||
|     }; | ||||
|     imports.wbg.__wbg_instanceof_HtmlInputElement_aaef9fb14eceaa9b = function(arg0) { | ||||
|         var ret = getObject(arg0) instanceof HTMLInputElement; | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbg_setchecked_1a89c058f5ac906a = function(arg0, arg1) { | ||||
|         getObject(arg0).checked = arg1 !== 0; | ||||
|     }; | ||||
|     imports.wbg.__wbg_settype_4f9e0a597bc38efe = function(arg0, arg1, arg2) { | ||||
|         getObject(arg0).type = getStringFromWasm0(arg1, arg2); | ||||
|     }; | ||||
|     imports.wbg.__wbg_value_bff6f7ef104e077a = function(arg0, arg1) { | ||||
|         var ret = getObject(arg1).value; | ||||
|         var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); | ||||
|         var len0 = WASM_VECTOR_LEN; | ||||
|         getInt32Memory0()[arg0 / 4 + 1] = len0; | ||||
|         getInt32Memory0()[arg0 / 4 + 0] = ptr0; | ||||
|     }; | ||||
|     imports.wbg.__wbg_setvalue_839acf17e43a847f = function(arg0, arg1, arg2) { | ||||
|         getObject(arg0).value = getStringFromWasm0(arg1, arg2); | ||||
|     }; | ||||
|     imports.wbg.__wbg_addEventListener_f0baf69c9c7425c9 = handleError(function(arg0, arg1, arg2, arg3, arg4) { | ||||
|         getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); | ||||
|     }); | ||||
|     imports.wbg.__wbg_removeEventListener_9ffcd175e0916270 = handleError(function(arg0, arg1, arg2, arg3, arg4) { | ||||
|         getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0); | ||||
|     }); | ||||
|     imports.wbg.__wbg_namespaceURI_a4d52538ca0c6bae = function(arg0, arg1) { | ||||
|         var ret = getObject(arg1).namespaceURI; | ||||
|         var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); | ||||
|         var len0 = WASM_VECTOR_LEN; | ||||
|         getInt32Memory0()[arg0 / 4 + 1] = len0; | ||||
|         getInt32Memory0()[arg0 / 4 + 0] = ptr0; | ||||
|     }; | ||||
|     imports.wbg.__wbg_removeAttribute_a705c6de4bb158c4 = handleError(function(arg0, arg1, arg2) { | ||||
|         getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2)); | ||||
|     }); | ||||
|     imports.wbg.__wbg_setAttribute_727bdb9763037624 = handleError(function(arg0, arg1, arg2, arg3, arg4) { | ||||
|         getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); | ||||
|     }); | ||||
|     imports.wbg.__wbg_lastChild_4a41600911ce94c7 = function(arg0) { | ||||
|         var ret = getObject(arg0).lastChild; | ||||
|         return isLikeNone(ret) ? 0 : addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbg_setnodeValue_ec452cd3716fee72 = function(arg0, arg1, arg2) { | ||||
|         getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2); | ||||
|     }; | ||||
|     imports.wbg.__wbg_appendChild_77215fd672b162c5 = handleError(function(arg0, arg1) { | ||||
|         var ret = getObject(arg0).appendChild(getObject(arg1)); | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_insertBefore_ea385f1d7ec76e50 = handleError(function(arg0, arg1, arg2) { | ||||
|         var ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2)); | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_removeChild_f4829fcd2e376e1b = handleError(function(arg0, arg1) { | ||||
|         var ret = getObject(arg0).removeChild(getObject(arg1)); | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_newnoargs_f3b8a801d5d4b079 = function(arg0, arg1) { | ||||
|         var ret = new Function(getStringFromWasm0(arg0, arg1)); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbg_call_8e95613cc6524977 = handleError(function(arg0, arg1) { | ||||
|         var ret = getObject(arg0).call(getObject(arg1)); | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_is_333329c4a02916de = function(arg0, arg1) { | ||||
|         var ret = Object.is(getObject(arg0), getObject(arg1)); | ||||
|         return ret; | ||||
|     }; | ||||
|     imports.wbg.__wbg_new_3e06d4f36713e4cb = function() { | ||||
|         var ret = new Object(); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
|     imports.wbg.__wbg_globalThis_b9277fc37e201fe5 = handleError(function() { | ||||
|         var ret = globalThis.globalThis; | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_self_07b2f89e82ceb76d = handleError(function() { | ||||
|         var ret = self.self; | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_window_ba85d88572adc0dc = handleError(function() { | ||||
|         var ret = window.window; | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_global_e16303fe83e1d57f = handleError(function() { | ||||
|         var ret = global.global; | ||||
|         return addHeapObject(ret); | ||||
|     }); | ||||
|     imports.wbg.__wbg_set_304f2ec1a3ab3b79 = handleError(function(arg0, arg1, arg2) { | ||||
|         var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); | ||||
|         return ret; | ||||
|     }); | ||||
|     imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { | ||||
|         var ret = debugString(getObject(arg1)); | ||||
|         var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); | ||||
|         var len0 = WASM_VECTOR_LEN; | ||||
|         getInt32Memory0()[arg0 / 4 + 1] = len0; | ||||
|         getInt32Memory0()[arg0 / 4 + 0] = ptr0; | ||||
|     }; | ||||
|     imports.wbg.__wbindgen_throw = function(arg0, arg1) { | ||||
|         throw new Error(getStringFromWasm0(arg0, arg1)); | ||||
|     }; | ||||
|     imports.wbg.__wbindgen_closure_wrapper1149 = function(arg0, arg1, arg2) { | ||||
|         var ret = makeMutClosure(arg0, arg1, 42, __wbg_adapter_16); | ||||
|         return addHeapObject(ret); | ||||
|     }; | ||||
| 
 | ||||
|     if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { | ||||
|         input = fetch(input); | ||||
|     } | ||||
| 
 | ||||
|     const { instance, module } = await load(await input, imports); | ||||
| 
 | ||||
|     wasm = instance.exports; | ||||
|     init.__wbindgen_wasm_module = module; | ||||
|     wasm.__wbindgen_start(); | ||||
|     return wasm; | ||||
| } | ||||
| 
 | ||||
| export default init; | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								dist/index-5695e498a6d6f6f5_bg.wasm
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/index-5695e498a6d6f6f5_bg.wasm
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										52
									
								
								dist/index.html
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								dist/index.html
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| <!DOCTYPE html><html><head> | ||||
|     <meta charset="utf-8"> | ||||
|     <title>gpx.thermokar.st</title> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|     <style> | ||||
|       body { | ||||
|         max-width: 35em; | ||||
|         margin: 0 auto; | ||||
|         line-height: 1.5; | ||||
|         font-family: sans-serif; | ||||
|         font-size: large; | ||||
|       } | ||||
|     </style> | ||||
|    | ||||
| <link rel="preload" href="/index-5695e498a6d6f6f5_bg.wasm" as="fetch" type="application/wasm" crossorigin=""> | ||||
| <link rel="modulepreload" href="/index-5695e498a6d6f6f5.js"></head> | ||||
|   <body> | ||||
|     <noscript> | ||||
|       <mark> | ||||
|         This page contains webassembly and javascript content, please enable | ||||
|         javascript in your browser to use this tool. | ||||
|       </mark> | ||||
|     </noscript> | ||||
|    | ||||
| 
 | ||||
| <script type="module">import init from '/index-5695e498a6d6f6f5.js';init('/index-5695e498a6d6f6f5_bg.wasm');</script><script>(function () { | ||||
|     var url = 'ws://' + window.location.host + '/_trunk/ws'; | ||||
|     var poll_interval = 5000; | ||||
|     var reload_upon_connect = () => { | ||||
|         window.setTimeout( | ||||
|             () => { | ||||
|                 // when we successfully reconnect, we'll force a | ||||
|                 // reload (since we presumably lost connection to | ||||
|                 // trunk due to it being killed, so it will have | ||||
|                 // rebuilt on restart) | ||||
|                 var ws = new WebSocket(url); | ||||
|                 ws.onopen = () => window.location.reload(); | ||||
|                 ws.onclose = reload_upon_connect; | ||||
|             }, | ||||
|             poll_interval); | ||||
|     }; | ||||
| 
 | ||||
|     var ws = new WebSocket(url); | ||||
|     ws.onmessage = (ev) => { | ||||
|         const msg = JSON.parse(ev.data); | ||||
|         if (msg.reload) { | ||||
|             window.location.reload(); | ||||
|         } | ||||
|     }; | ||||
|     ws.onclose = reload_upon_connect; | ||||
| })() | ||||
| </script></body></html> | ||||
							
								
								
									
										25
									
								
								index.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								index.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <meta charset="utf-8" /> | ||||
|     <title>gpx.thermokar.st</title> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|     <style> | ||||
|       body { | ||||
|         max-width: 35em; | ||||
|         margin: 0 auto; | ||||
|         line-height: 1.5; | ||||
|         font-family: sans-serif; | ||||
|         font-size: large; | ||||
|       } | ||||
|     </style> | ||||
|   </head> | ||||
|   <body> | ||||
|     <noscript> | ||||
|       <mark> | ||||
|         This page contains webassembly and javascript content, please enable | ||||
|         javascript in your browser to use this tool. | ||||
|       </mark> | ||||
|     </noscript> | ||||
|   </body> | ||||
| </html> | ||||
							
								
								
									
										78
									
								
								src/main.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/main.rs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,78 @@ | |||
| use yew::prelude::*; | ||||
| 
 | ||||
| enum Msg { | ||||
|     AddOne, | ||||
|     SubOne, | ||||
| } | ||||
| 
 | ||||
| struct Model { | ||||
|     link: ComponentLink<Self>, | ||||
|     value: i64, | ||||
| } | ||||
| 
 | ||||
| impl Component for Model { | ||||
|     type Message = Msg; | ||||
|     type Properties = (); | ||||
| 
 | ||||
|     fn create(_props: Self::Properties, link: ComponentLink<Self>) -> Self { | ||||
|         Self { | ||||
|             link, | ||||
|             value: 0, | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     fn update(&mut self, msg: Self::Message) -> ShouldRender { | ||||
|         match msg { | ||||
|             Msg::AddOne => { | ||||
|                 self.value += 1; | ||||
|                 true | ||||
|             } | ||||
|             Msg::SubOne => { | ||||
|                 self.value -= 1; | ||||
|                 true | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     fn change(&mut self, _props: Self::Properties) -> ShouldRender { | ||||
|         false | ||||
|     } | ||||
| 
 | ||||
|     fn view(&self) -> Html { | ||||
|         html! { | ||||
|           <div> | ||||
|             <h1> | ||||
|               <a href="https://gpx.thermokar.st">{"gpx.thermokar.st"}</a> | ||||
|             </h1> | ||||
| 
 | ||||
|             <p> | ||||
|               {"This client-side tool is for merging "} | ||||
|               <a href="https://www.topografix.com/gpx.asp">{"GPX files"}</a> | ||||
|               {". Please note, this has only been tested on GPX files produced by "} | ||||
|               <a href="https://www.garmin.com">{"Garmin"}</a> | ||||
|               {" and "} | ||||
|               <a href="https://www.strava.com">{"Strava"}</a> | ||||
|               {" - your mileage may vary."} | ||||
|             </p> | ||||
| 
 | ||||
|             <button onclick=self.link.callback(|_| Msg::SubOne)>{ "-1" }</button> | ||||
|             <button onclick=self.link.callback(|_| Msg::AddOne)>{ "+1" }</button> | ||||
|             <p>{ self.value }</p> | ||||
| 
 | ||||
|             <hr/> | ||||
| 
 | ||||
|             <p> | ||||
|               <small> | ||||
|                 <a href="https://github.com/thermokarst/gpx-web-utils"> | ||||
|                   {"https://github.com/thermokarst/gpx-web-utils"} | ||||
|                 </a> | ||||
|               </small> | ||||
|             </p> | ||||
|           </div> | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn main() { | ||||
|     yew::start_app::<Model>(); | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue