| 
									
										
										
										
											2020-03-11 11:55:28 +01:00
										 |  |  | var Utils = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	createLocateRewrite: function(execName) { | 
					
						
							|  |  |  | 		function rw(path) { | 
					
						
							|  |  |  | 			if (path.endsWith('.worker.js')) { | 
					
						
							|  |  |  | 				return execName + '.worker.js'; | 
					
						
							| 
									
										
										
										
											2020-11-10 11:05:22 +01:00
										 |  |  | 			} else if (path.endsWith('.audio.worklet.js')) { | 
					
						
							|  |  |  | 				return execName + '.audio.worklet.js'; | 
					
						
							| 
									
										
										
										
											2020-03-11 11:55:28 +01:00
										 |  |  | 			} else if (path.endsWith('.js')) { | 
					
						
							|  |  |  | 				return execName + '.js'; | 
					
						
							|  |  |  | 			} else if (path.endsWith('.wasm')) { | 
					
						
							|  |  |  | 				return execName + '.wasm'; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return rw; | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	createInstantiatePromise: function(wasmLoader) { | 
					
						
							|  |  |  | 		function instantiateWasm(imports, onSuccess) { | 
					
						
							|  |  |  | 			wasmLoader.then(function(xhr) { | 
					
						
							|  |  |  | 				WebAssembly.instantiate(xhr.response, imports).then(function(result) { | 
					
						
							|  |  |  | 					onSuccess(result['instance'], result['module']); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 			wasmLoader = null; | 
					
						
							|  |  |  | 			return {}; | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return instantiateWasm; | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	findCanvas: function() { | 
					
						
							|  |  |  | 		var nodes = document.getElementsByTagName('canvas'); | 
					
						
							|  |  |  | 		if (nodes.length && nodes[0] instanceof HTMLCanvasElement) { | 
					
						
							|  |  |  | 			return nodes[0]; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		throw new Error("No canvas found"); | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	isWebGLAvailable: function(majorVersion = 1) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		var testContext = false; | 
					
						
							|  |  |  | 		try { | 
					
						
							|  |  |  | 			var testCanvas = document.createElement('canvas'); | 
					
						
							|  |  |  | 			if (majorVersion === 1) { | 
					
						
							|  |  |  | 				testContext = testCanvas.getContext('webgl') || testCanvas.getContext('experimental-webgl'); | 
					
						
							|  |  |  | 			} else if (majorVersion === 2) { | 
					
						
							|  |  |  | 				testContext = testCanvas.getContext('webgl2') || testCanvas.getContext('experimental-webgl2'); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} catch (e) {} | 
					
						
							|  |  |  | 		return !!testContext; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | }; |