Build: (17d4cfb) 0.4
This commit is contained in:
commit
600b7e7c3b
|
|
@ -0,0 +1,33 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Scroll view</title>
|
||||||
|
<style>
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
text-align: center;
|
||||||
|
margin: auto 0;
|
||||||
|
background-color: #292F36;
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas {
|
||||||
|
filter: drop-shadow(#04b5cd 0 0 10px);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<script type="module">
|
||||||
|
import './restart-audio-context.js'
|
||||||
|
import init from './simple.js'
|
||||||
|
|
||||||
|
init().catch((error) => {
|
||||||
|
if (!error.message.startsWith("Using exceptions for control flow, don't mind me. This isn't actually an error!")) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
// taken from https://developer.chrome.com/blog/web-audio-autoplay/#moving-forward
|
||||||
|
(function () {
|
||||||
|
// An array of all contexts to resume on the page
|
||||||
|
const audioContextList = [];
|
||||||
|
|
||||||
|
// An array of various user interaction events we should listen for
|
||||||
|
const userInputEventNames = [
|
||||||
|
'click',
|
||||||
|
'contextmenu',
|
||||||
|
'auxclick',
|
||||||
|
'dblclick',
|
||||||
|
'mousedown',
|
||||||
|
'mouseup',
|
||||||
|
'pointerup',
|
||||||
|
'touchend',
|
||||||
|
'keydown',
|
||||||
|
'keyup',
|
||||||
|
];
|
||||||
|
|
||||||
|
// A proxy object to intercept AudioContexts and
|
||||||
|
// add them to the array for tracking and resuming later
|
||||||
|
self.AudioContext = new Proxy(self.AudioContext, {
|
||||||
|
construct(target, args) {
|
||||||
|
const result = new target(...args);
|
||||||
|
audioContextList.push(result);
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// To resume all AudioContexts being tracked
|
||||||
|
function resumeAllContexts(event) {
|
||||||
|
let count = 0;
|
||||||
|
|
||||||
|
audioContextList.forEach(context => {
|
||||||
|
if (context.state !== 'running') {
|
||||||
|
context.resume();
|
||||||
|
} else {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// If all the AudioContexts have now resumed then we
|
||||||
|
// unbind all the event listeners from the page to prevent
|
||||||
|
// unnecessary resume attempts
|
||||||
|
if (count == audioContextList.length) {
|
||||||
|
userInputEventNames.forEach(eventName => {
|
||||||
|
document.removeEventListener(eventName, resumeAllContexts);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// We bind the resume function for each user interaction
|
||||||
|
// event on the page
|
||||||
|
userInputEventNames.forEach(eventName => {
|
||||||
|
document.addEventListener(eventName, resumeAllContexts);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
|
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
||||||
|
|
||||||
|
export interface InitOutput {
|
||||||
|
readonly memory: WebAssembly.Memory;
|
||||||
|
readonly main: (a: number, b: number) => number;
|
||||||
|
readonly __externref_table_alloc: () => number;
|
||||||
|
readonly __wbindgen_export_1: WebAssembly.Table;
|
||||||
|
readonly __wbindgen_exn_store: (a: number) => void;
|
||||||
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
||||||
|
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
||||||
|
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
||||||
|
readonly __wbindgen_export_6: WebAssembly.Table;
|
||||||
|
readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1c21a3a0f3153cd3: (a: number, b: number, c: number) => void;
|
||||||
|
readonly closure5035_externref_shim: (a: number, b: number, c: any) => void;
|
||||||
|
readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he95ed6491b3eede5: (a: number, b: number) => void;
|
||||||
|
readonly closure5040_externref_shim: (a: number, b: number, c: any, d: any) => void;
|
||||||
|
readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hb9c6ea294dc2c419: (a: number, b: number) => void;
|
||||||
|
readonly closure118797_externref_shim: (a: number, b: number, c: any) => void;
|
||||||
|
readonly __wbindgen_start: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type SyncInitInput = BufferSource | WebAssembly.Module;
|
||||||
|
/**
|
||||||
|
* Instantiates the given `module`, which can either be bytes or
|
||||||
|
* a precompiled `WebAssembly.Module`.
|
||||||
|
*
|
||||||
|
* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
|
||||||
|
*
|
||||||
|
* @returns {InitOutput}
|
||||||
|
*/
|
||||||
|
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
|
||||||
|
* for everything else, calls `WebAssembly.instantiate` directly.
|
||||||
|
*
|
||||||
|
* @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
|
||||||
|
*
|
||||||
|
* @returns {Promise<InitOutput>}
|
||||||
|
*/
|
||||||
|
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,18 @@
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
export const memory: WebAssembly.Memory;
|
||||||
|
export const main: (a: number, b: number) => number;
|
||||||
|
export const __externref_table_alloc: () => number;
|
||||||
|
export const __wbindgen_export_1: WebAssembly.Table;
|
||||||
|
export const __wbindgen_exn_store: (a: number) => void;
|
||||||
|
export const __wbindgen_malloc: (a: number, b: number) => number;
|
||||||
|
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
||||||
|
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
||||||
|
export const __wbindgen_export_6: WebAssembly.Table;
|
||||||
|
export const _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1c21a3a0f3153cd3: (a: number, b: number, c: number) => void;
|
||||||
|
export const closure5035_externref_shim: (a: number, b: number, c: any) => void;
|
||||||
|
export const _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he95ed6491b3eede5: (a: number, b: number) => void;
|
||||||
|
export const closure5040_externref_shim: (a: number, b: number, c: any, d: any) => void;
|
||||||
|
export const _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hb9c6ea294dc2c419: (a: number, b: number) => void;
|
||||||
|
export const closure118797_externref_shim: (a: number, b: number, c: any) => void;
|
||||||
|
export const __wbindgen_start: () => void;
|
||||||
Loading…
Reference in New Issue