@zeroweight/renderer 0.2.2 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"zeroweight-renderer.umd.js","sources":["../src/engine/avatar_engine.js","../src/ZeroWeightRenderer.ts","../src/ActionQueue.ts","../src/VoiceActivityDetector.ts"],"sourcesContent":["let wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => state.dtor(state.a, state.b));\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n state.a = a;\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n state.dtor(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n }\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af(arg0, arg1, arg2);\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4(arg0, arg1, arg2);\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec(arg0, arg1, arg2, arg3);\n}\n\nconst __wbindgen_enum_EncodedVideoChunkType = [\"key\", \"delta\"];\n\nconst AvatarEngineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_avatarengine_free(ptr >>> 0, 1));\n\nconst LoadedActionFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_loadedaction_free(ptr >>> 0, 1));\n\nconst ZCodecEngineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_zcodecengine_free(ptr >>> 0, 1));\n\nexport class AvatarEngine {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n AvatarEngineFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_avatarengine_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @param {LoadedAction} loaded\n */\n add_action(id, loaded) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(loaded, LoadedAction);\n var ptr1 = loaded.__destroy_into_raw();\n wasm.avatarengine_add_action(this.__wbg_ptr, ptr0, len0, ptr1);\n }\n /**\n * @param {any} config_val\n * @returns {Promise<any>}\n */\n load_action(config_val) {\n const ret = wasm.avatarengine_load_action(this.__wbg_ptr, config_val);\n return ret;\n }\n /**\n * @returns {number}\n */\n video_width() {\n const ret = wasm.avatarengine_video_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n video_height() {\n const ret = wasm.avatarengine_video_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {string} action_id\n * @param {string | null} [next_action_id]\n */\n execute_action(action_id, next_action_id) {\n const ptr0 = passStringToWasm0(action_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(next_action_id) ? 0 : passStringToWasm0(next_action_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.avatarengine_execute_action(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {any}\n */\n get_actions_list() {\n const ret = wasm.avatarengine_get_actions_list(this.__wbg_ptr);\n return ret;\n }\n constructor() {\n const ret = wasm.avatarengine_new();\n this.__wbg_ptr = ret >>> 0;\n AvatarEngineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} config_val\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise<any>}\n */\n init(config_val, canvas) {\n const ret = wasm.avatarengine_init(this.__wbg_ptr, config_val, canvas);\n return ret;\n }\n /**\n * @param {number} now_ms\n */\n tick(now_ms) {\n wasm.avatarengine_tick(this.__wbg_ptr, now_ms);\n }\n /**\n * @param {number} width\n * @param {number} height\n */\n resize(width, height) {\n wasm.avatarengine_resize(this.__wbg_ptr, width, height);\n }\n interrupt() {\n wasm.avatarengine_interrupt(this.__wbg_ptr);\n }\n}\nif (Symbol.dispose) AvatarEngine.prototype[Symbol.dispose] = AvatarEngine.prototype.free;\n\nexport class LoadedAction {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(LoadedAction.prototype);\n obj.__wbg_ptr = ptr;\n LoadedActionFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n LoadedActionFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_loadedaction_free(ptr, 0);\n }\n}\nif (Symbol.dispose) LoadedAction.prototype[Symbol.dispose] = LoadedAction.prototype.free;\n\nexport class ZCodecEngine {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ZCodecEngine.prototype);\n obj.__wbg_ptr = ptr;\n ZCodecEngineFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ZCodecEngineFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_zcodecengine_free(ptr, 0);\n }\n /**\n * @returns {VideoFrame | undefined}\n */\n next_frame() {\n const ret = wasm.zcodecengine_next_frame(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {ZCodecEngine}\n */\n static new_headless() {\n const ret = wasm.zcodecengine_new_headless();\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ZCodecEngine.__wrap(ret[0]);\n }\n /**\n * @returns {number}\n */\n total_frames() {\n const ret = wasm.zcodecengine_total_frames(this.__wbg_ptr);\n return ret >>> 0;\n }\n trigger_transition() {\n wasm.zcodecengine_trigger_transition(this.__wbg_ptr);\n }\n /**\n * @param {HTMLCanvasElement} canvas\n */\n constructor(canvas) {\n const ret = wasm.zcodecengine_new(canvas);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n ZCodecEngineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n reset() {\n const ret = wasm.zcodecengine_reset(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {number}\n */\n width() {\n const ret = wasm.zcodecengine_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n height() {\n const ret = wasm.zcodecengine_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n render() {\n const ret = wasm.zcodecengine_render(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n resume() {\n const ret = wasm.zcodecengine_resume(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {boolean}\n */\n is_loop() {\n const ret = wasm.zcodecengine_is_loop(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} fps\n */\n set_fps(fps) {\n wasm.zcodecengine_set_fps(this.__wbg_ptr, fps);\n }\n suspend() {\n wasm.zcodecengine_suspend(this.__wbg_ptr);\n }\n /**\n * @returns {boolean}\n */\n is_ended() {\n const ret = wasm.zcodecengine_is_ended(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} data\n */\n load_zai(data) {\n const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.zcodecengine_load_zai(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ZCodecEngine.prototype[Symbol.dispose] = ZCodecEngine.prototype.free;\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n 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);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_Error_52673b7de5a0ca89 = function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n };\n imports.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6 = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_in_0d3e1e8f0c669317 = function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_object_ce774f3490692386 = function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_string_704ef9c8fc131030 = function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_jsval_loose_eq_766057600fdd1b0d = function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_number_get_9619185a74197f95 = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n };\n imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg__wbg_cb_unref_87dfb5aaa0cbcea7 = function(arg0) {\n arg0._wbg_cb_unref();\n };\n imports.wbg.__wbg_activeTexture_1db0722f00c3f843 = function(arg0, arg1) {\n arg0.activeTexture(arg1 >>> 0);\n };\n imports.wbg.__wbg_apply_52e9ae668d017009 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.apply(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_arrayBuffer_c04af4fce566092d = function() { return handleError(function (arg0) {\n const ret = arg0.arrayBuffer();\n return ret;\n }, arguments) };\n imports.wbg.__wbg_attachShader_bc2b53790fd12d3a = function(arg0, arg1, arg2) {\n arg0.attachShader(arg1, arg2);\n };\n imports.wbg.__wbg_bindBuffer_110b128c65a97376 = function(arg0, arg1, arg2) {\n arg0.bindBuffer(arg1 >>> 0, arg2);\n };\n imports.wbg.__wbg_bindTexture_4537240b278f1d53 = function(arg0, arg1, arg2) {\n arg0.bindTexture(arg1 >>> 0, arg2);\n };\n imports.wbg.__wbg_blendFunc_5eed6dc03a180da2 = function(arg0, arg1, arg2) {\n arg0.blendFunc(arg1 >>> 0, arg2 >>> 0);\n };\n imports.wbg.__wbg_bufferData_ac5c7900b06f1517 = function(arg0, arg1, arg2, arg3) {\n arg0.bufferData(arg1 >>> 0, arg2, arg3 >>> 0);\n };\n imports.wbg.__wbg_call_3020136f7a2d6e44 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_abb4ff46ce38be40 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_canvas_b73dbfddac9ded86 = function(arg0) {\n const ret = arg0.canvas;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_clearColor_fe8de7e582b77e40 = function(arg0, arg1, arg2, arg3, arg4) {\n arg0.clearColor(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_clear_52caf9271911674b = function(arg0, arg1) {\n arg0.clear(arg1 >>> 0);\n };\n imports.wbg.__wbg_close_50d36cfeaf328abc = function() { return handleError(function (arg0) {\n arg0.close();\n }, arguments) };\n imports.wbg.__wbg_close_79883b2ec4564223 = function(arg0) {\n arg0.close();\n };\n imports.wbg.__wbg_compileShader_ac0bf6f0837881c3 = function(arg0, arg1) {\n arg0.compileShader(arg1);\n };\n imports.wbg.__wbg_configure_5d862b852c9f0667 = function() { return handleError(function (arg0, arg1) {\n arg0.configure(arg1);\n }, arguments) };\n imports.wbg.__wbg_createBuffer_8601b8ec330ab49d = function(arg0) {\n const ret = arg0.createBuffer();\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createProgram_023ba0fc6ff6efd6 = function(arg0) {\n const ret = arg0.createProgram();\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createShader_4626088b63c33727 = function(arg0, arg1) {\n const ret = arg0.createShader(arg1 >>> 0);\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createTexture_4d5934eb9772b5fe = function(arg0) {\n const ret = arg0.createTexture();\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_decode_4da4a9f9ba25a680 = function() { return handleError(function (arg0, arg1) {\n arg0.decode(arg1);\n }, arguments) };\n imports.wbg.__wbg_drawArrays_c106ebe0234971d4 = function(arg0, arg1, arg2, arg3) {\n arg0.drawArrays(arg1 >>> 0, arg2, arg3);\n };\n imports.wbg.__wbg_enableVertexAttribArray_def9952d8426be95 = function(arg0, arg1) {\n arg0.enableVertexAttribArray(arg1 >>> 0);\n };\n imports.wbg.__wbg_enable_52598759008d46ee = function(arg0, arg1) {\n arg0.enable(arg1 >>> 0);\n };\n imports.wbg.__wbg_entries_83c79938054e065f = function(arg0) {\n const ret = Object.entries(arg0);\n return ret;\n };\n imports.wbg.__wbg_fetch_417ef4c9a8dfcd8f = function(arg0, arg1, arg2) {\n const ret = arg0.fetch(getStringFromWasm0(arg1, arg2));\n return ret;\n };\n imports.wbg.__wbg_getAttribLocation_5917620b3c9497e6 = function(arg0, arg1, arg2, arg3) {\n const ret = arg0.getAttribLocation(arg1, getStringFromWasm0(arg2, arg3));\n return ret;\n };\n imports.wbg.__wbg_getContext_01f42b234e833f0a = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n }, arguments) };\n imports.wbg.__wbg_getContext_40a6fc6da6cacc21 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.getContext(getStringFromWasm0(arg1, arg2), arg3);\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n }, arguments) };\n imports.wbg.__wbg_getProgramInfoLog_ea3064b153e4542a = function(arg0, arg1, arg2) {\n const ret = arg1.getProgramInfoLog(arg2);\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_getProgramParameter_ff1aee3815d6a8f9 = function(arg0, arg1, arg2) {\n const ret = arg0.getProgramParameter(arg1, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_getShaderInfoLog_1affea8c74bd191c = function(arg0, arg1, arg2) {\n const ret = arg1.getShaderInfoLog(arg2);\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_getShaderParameter_1f86483b99db3dcc = function(arg0, arg1, arg2) {\n const ret = arg0.getShaderParameter(arg1, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_getUniformLocation_2a4ddf8dd8285373 = function(arg0, arg1, arg2, arg3) {\n const ret = arg0.getUniformLocation(arg1, getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_get_6b7bd52aca3f9671 = function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n };\n imports.wbg.__wbg_get_af9dab7e9603ea93 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe = function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_f3320d2419cd0355 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_d070139aaac1459f = function(arg0) {\n let result;\n try {\n result = arg0 instanceof CanvasRenderingContext2D;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Response_cd74d1c2ac92cb0b = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Uint8Array_da54ccc9d3e09434 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_WebGlRenderingContext_f2a36a2d31de185f = function(arg0) {\n let result;\n try {\n result = arg0 instanceof WebGLRenderingContext;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Window_b5cf7783caa68180 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_length_22ac23eaec9d8053 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_linkProgram_2f770464e69099dc = function(arg0, arg1) {\n arg0.linkProgram(arg1);\n };\n imports.wbg.__wbg_loadedaction_new = function(arg0) {\n const ret = LoadedAction.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_1ba21ce319a06297 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_1ded466bc4dcef8e = function() { return handleError(function (arg0) {\n const ret = new EncodedVideoChunk(arg0);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_25f239778d6112b9 = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_6421f6084cc5bc5a = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_b546ae120718850e = function() {\n const ret = new Map();\n return ret;\n };\n imports.wbg.__wbg_new_d7eb87b462ce0007 = function() { return handleError(function (arg0) {\n const ret = new VideoDecoder(arg0);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_ff12d2b041fb48f1 = function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return ret;\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbg_new_from_slice_f9c22b9153b26992 = function(arg0, arg1) {\n const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_new_no_args_cb138f77cf6151ee = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_now_69d776cd24f5215b = function() {\n const ret = Date.now();\n return ret;\n };\n imports.wbg.__wbg_now_8cf15d6e317793e1 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_ok_dd98ecb60d721e20 = function(arg0) {\n const ret = arg0.ok;\n return ret;\n };\n imports.wbg.__wbg_performance_c77a440eff2efd9b = function(arg0) {\n const ret = arg0.performance;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_prototypesetcall_dfe9b766cdc1f1fd = function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n };\n imports.wbg.__wbg_push_7d9be8f38fc13975 = function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n };\n imports.wbg.__wbg_queueMicrotask_9b549dfce8865860 = function(arg0) {\n const ret = arg0.queueMicrotask;\n return ret;\n };\n imports.wbg.__wbg_queueMicrotask_fca69f5bfad613a5 = function(arg0) {\n queueMicrotask(arg0);\n };\n imports.wbg.__wbg_reset_6daf3535b34fc20d = function() { return handleError(function (arg0) {\n arg0.reset();\n }, arguments) };\n imports.wbg.__wbg_resolve_fd5bfbaa4ce36e1e = function(arg0) {\n const ret = Promise.resolve(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n };\n imports.wbg.__wbg_set_7df433eea03a5c14 = function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n };\n imports.wbg.__wbg_set_codec_5ce4eeb13e47869f = function(arg0, arg1, arg2) {\n arg0.codec = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_set_coded_height_1c1bfedf5cd624de = function(arg0, arg1) {\n arg0.codedHeight = arg1 >>> 0;\n };\n imports.wbg.__wbg_set_coded_width_665db0630f7e176c = function(arg0, arg1) {\n arg0.codedWidth = arg1 >>> 0;\n };\n imports.wbg.__wbg_set_data_25bca89a2bbe3c8e = function(arg0, arg1) {\n arg0.data = arg1;\n };\n imports.wbg.__wbg_set_duration_c76e08e01946b301 = function(arg0, arg1) {\n arg0.duration = arg1;\n };\n imports.wbg.__wbg_set_efaaf145b9377369 = function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n };\n imports.wbg.__wbg_set_error_f6080078fa7badaa = function(arg0, arg1) {\n arg0.error = arg1;\n };\n imports.wbg.__wbg_set_height_6f8f8ef4cb40e496 = function(arg0, arg1) {\n arg0.height = arg1 >>> 0;\n };\n imports.wbg.__wbg_set_optimize_for_latency_6d5ac90adfa2b6c3 = function(arg0, arg1) {\n arg0.optimizeForLatency = arg1 !== 0;\n };\n imports.wbg.__wbg_set_output_0ebd7b0816c1747f = function(arg0, arg1) {\n arg0.output = arg1;\n };\n imports.wbg.__wbg_set_timestamp_8c6c0e81a6d92710 = function(arg0, arg1) {\n arg0.timestamp = arg1;\n };\n imports.wbg.__wbg_set_type_bce1bc8e77021fbd = function(arg0, arg1) {\n arg0.type = __wbindgen_enum_EncodedVideoChunkType[arg1];\n };\n imports.wbg.__wbg_set_width_7ff7a22c6e9f423e = function(arg0, arg1) {\n arg0.width = arg1 >>> 0;\n };\n imports.wbg.__wbg_shaderSource_8a7a30baeaf655d5 = function(arg0, arg1, arg2, arg3) {\n arg0.shaderSource(arg1, getStringFromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_769e6b65d6557335 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_60cf02db4de8e1c1 = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_08f5a74c69739274 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_a8924b26aa92d024 = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_texImage2D_bb9c87914f232f46 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n arg0.texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));\n }, arguments) };\n imports.wbg.__wbg_texParameteri_035e104616b395e0 = function(arg0, arg1, arg2, arg3) {\n arg0.texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);\n };\n imports.wbg.__wbg_then_429f7caf1026411d = function(arg0, arg1, arg2) {\n const ret = arg0.then(arg1, arg2);\n return ret;\n };\n imports.wbg.__wbg_then_4f95312d68691235 = function(arg0, arg1) {\n const ret = arg0.then(arg1);\n return ret;\n };\n imports.wbg.__wbg_uniform1f_058417475b9966c8 = function(arg0, arg1, arg2) {\n arg0.uniform1f(arg1, arg2);\n };\n imports.wbg.__wbg_uniform1i_e48736e68cd30ed1 = function(arg0, arg1, arg2) {\n arg0.uniform1i(arg1, arg2);\n };\n imports.wbg.__wbg_useProgram_142dd02d095f80f1 = function(arg0, arg1) {\n arg0.useProgram(arg1);\n };\n imports.wbg.__wbg_vertexAttribPointer_5c516f4c675103bf = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n arg0.vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6);\n };\n imports.wbg.__wbg_viewport_ceaa5c1a061b76df = function(arg0, arg1, arg2, arg3, arg4) {\n arg0.viewport(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbindgen_cast_0056b9585dc60b0e = function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 56, function: Function { arguments: [NamedExternref(\"VideoFrame\")], shim_idx: 57, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h23f0d2e49ebcbedf, wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af);\n return ret;\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_cast_cd07b1914aa3d62c = function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_cast_e7ad0d7b317830d5 = function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 56, function: Function { arguments: [Externref], shim_idx: 57, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h23f0d2e49ebcbedf, wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af);\n return ret;\n };\n imports.wbg.__wbindgen_cast_f9e6a4d05db47fec = function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 66, function: Function { arguments: [Externref], shim_idx: 67, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__had5a6045a93392fa, wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4);\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n };\n\n return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('avatar_engine_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/**\n * zeroweight-renderer — ZeroWeightRenderer\n *\n * Raw rendering engine wrapper. Framework-agnostic.\n * Handles WASM initialization, canvas setup, render loop, action loading,\n * and provides a clean API for playing actions.\n *\n * Usage (vanilla JS / CDN):\n * const renderer = new ZeroWeightRenderer();\n * await renderer.init(canvas, { payload: bundleData });\n * renderer.play('speaking');\n * renderer.play('wave_hand', 'listening');\n * renderer.destroy();\n */\n\nimport type {\n RendererConfig,\n RendererEvents,\n RendererState,\n ActionMetadata,\n} from \"./types\";\n\n// @ts-ignore — WASM engine module\nimport initWasm, { AvatarEngine } from \"./engine/avatar_engine.js\";\n\nexport class ZeroWeightRenderer {\n // Engine\n private engine: InstanceType<typeof AvatarEngine> | null = null;\n private canvas: HTMLCanvasElement | null = null;\n private container: HTMLElement | null = null;\n\n // Render loop\n private rafId: number | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n // State\n private _state: RendererState = \"idle\";\n private loadedActions = new Set<string>([\"listening\"]);\n private actionMetadata: Record<string, ActionMetadata> = {\n listening: { kind: \"looped\" },\n speaking: { kind: \"looped\" },\n };\n private _dimensions: { width: number; height: number } | null = null;\n\n // Event listeners\n private listeners: { [K in keyof RendererEvents]?: RendererEvents[K][] } = {};\n\n // Cancellation flag for async init\n private cancelled = false;\n\n // ─── Public API ────────────────────────────────────────────────\n\n /**\n * Initialize the renderer with a canvas and bundle config.\n *\n * @param canvas - The canvas element to render to.\n * If inside a container, the canvas will auto-resize to fill it.\n * @param config - Renderer configuration with bundle payload.\n * @returns A promise that resolves when the engine is ready.\n */\n async init(canvas: HTMLCanvasElement, config: RendererConfig): Promise<void> {\n this.cancelled = false;\n this.canvas = canvas;\n this.container = canvas.parentElement;\n this.setState(\"loading\");\n\n try {\n // Init WASM module\n await initWasm();\n if (this.cancelled) return;\n\n const engine = new AvatarEngine();\n this.engine = engine;\n\n // Detect mobile for downscaling\n const isMobile =\n config.forceMobile ??\n (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n ) ||\n window.innerWidth < 768);\n\n const scale = config.scale ?? (isMobile ? 0.5 : 1.0);\n\n // Init engine with bundle payload\n const remainingActionsMap = await engine.init(\n { payload: config.payload, scale },\n canvas\n );\n\n if (this.cancelled) return;\n\n // Read intrinsic dimensions\n const w = engine.video_width();\n const h = engine.video_height();\n if (w > 0 && h > 0) {\n this._dimensions = { width: w, height: h };\n this.emit(\"dimensions\", w, h);\n }\n\n // Setup resize observer\n this.setupResizeObserver();\n this.handleResize();\n\n // Start render loop\n this.startRenderLoop();\n\n // Mark as ready (listening action is loaded by init)\n this.setState(\"ready\");\n this.emit(\"ready\");\n\n // Load remaining actions in background\n await this.loadRemainingActions(remainingActionsMap);\n } catch (e) {\n console.error(\"[ZeroWeightRenderer] Init failed:\", e);\n this.setState(\"error\");\n this.emit(\"error\", e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n /**\n * Play an action on the avatar.\n *\n * @param actionId - The action to play (e.g. \"speaking\", \"wave_hand\").\n * @param fallbackAction - Optional fallback action to play after a oneshot.\n */\n play(actionId: string, fallbackAction?: string): void {\n if (!this.engine) {\n console.warn(\"[ZeroWeightRenderer] Engine not ready, cannot play:\", actionId);\n return;\n }\n\n try {\n if (fallbackAction) {\n this.engine.execute_action(actionId, fallbackAction);\n } else {\n this.engine.execute_action(actionId);\n }\n } catch (e) {\n console.error(`[ZeroWeightRenderer] Failed to play action \"${actionId}\":`, e);\n }\n }\n\n /**\n * Interrupt the current action.\n */\n interrupt(): void {\n try {\n this.engine?.interrupt?.();\n } catch (e) {\n console.error(\"[ZeroWeightRenderer] Interrupt failed:\", e);\n }\n }\n\n /**\n * Load a single action by its config.\n * Useful for lazy-loading actions after init.\n */\n async loadAction(id: string, config: any): Promise<void> {\n if (!this.engine) {\n throw new Error(\"Engine not initialized\");\n }\n\n const loaded = await this.engine.load_action(config);\n this.engine.add_action(id, loaded);\n this.loadedActions.add(id);\n\n if (config.kind) {\n this.actionMetadata[id] = { kind: config.kind };\n }\n }\n\n /**\n * Destroy the renderer and clean up all resources.\n */\n destroy(): void {\n this.cancelled = true;\n\n // Stop render loop\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n\n // Stop resize observer\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n this.engine = null;\n this.canvas = null;\n this.container = null;\n this.setState(\"idle\");\n }\n\n // ─── Getters ───────────────────────────────────────────────────\n\n get state(): RendererState {\n return this._state;\n }\n\n get dimensions(): { width: number; height: number } | null {\n return this._dimensions;\n }\n\n get isReady(): boolean {\n return this._state === \"ready\";\n }\n\n getLoadedActions(): Set<string> {\n return new Set(this.loadedActions);\n }\n\n getActionMetadata(): Record<string, ActionMetadata> {\n return { ...this.actionMetadata };\n }\n\n /**\n * Direct access to the underlying engine instance (advanced usage).\n */\n getEngine(): any {\n return this.engine;\n }\n\n // ─── Event Emitter ─────────────────────────────────────────────\n\n on<K extends keyof RendererEvents>(event: K, callback: RendererEvents[K]): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event]!.push(callback);\n }\n\n off<K extends keyof RendererEvents>(event: K, callback: RendererEvents[K]): void {\n const arr = this.listeners[event];\n if (arr) {\n this.listeners[event] = arr.filter((cb) => cb !== callback) as any;\n }\n }\n\n private emit<K extends keyof RendererEvents>(event: K, ...args: Parameters<RendererEvents[K]>): void {\n const arr = this.listeners[event];\n if (arr) {\n for (const cb of arr) {\n (cb as (...a: any[]) => void)(...args);\n }\n }\n }\n\n // ─── Internals ─────────────────────────────────────────────────\n\n private setState(state: RendererState): void {\n if (this._state === state) return;\n this._state = state;\n this.emit(\"stateChanged\", state);\n }\n\n private startRenderLoop(): void {\n const tick = (time: number) => {\n if (this.engine) {\n this.engine.tick(time);\n }\n this.rafId = requestAnimationFrame(tick);\n };\n this.rafId = requestAnimationFrame(tick);\n }\n\n private setupResizeObserver(): void {\n const target = this.container || this.canvas;\n if (!target) return;\n\n this.resizeObserver = new ResizeObserver(() => this.handleResize());\n this.resizeObserver.observe(target);\n }\n\n private handleResize(): void {\n const container = this.container || this.canvas?.parentElement;\n const canvas = this.canvas;\n const engine = this.engine;\n\n if (!container || !canvas || !engine) return;\n\n const dpr = Math.min(window.devicePixelRatio || 1, 2);\n const rect = container.getBoundingClientRect();\n const targetWidth = Math.floor(rect.width * dpr);\n const targetHeight = Math.floor(rect.height * dpr);\n\n if (canvas.width !== targetWidth || canvas.height !== targetHeight) {\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n engine.resize(targetWidth, targetHeight);\n }\n }\n\n private async loadRemainingActions(remainingActionsMap: any): Promise<void> {\n if (!remainingActionsMap || this.cancelled) return;\n\n const entries =\n remainingActionsMap instanceof Map\n ? Array.from(remainingActionsMap.entries())\n : Object.entries(remainingActionsMap || {});\n\n if (entries.length === 0) {\n this.emit(\"allActionsLoaded\");\n return;\n }\n\n // Register metadata early\n const newMetadata: Record<string, ActionMetadata> = {};\n for (const [id, config] of entries) {\n newMetadata[id as string] = { kind: (config as any).kind };\n }\n this.actionMetadata = { ...this.actionMetadata, ...newMetadata };\n\n // Load each action sequentially\n let remaining = entries.length;\n for (const [id, config] of entries) {\n if (this.cancelled) break;\n\n try {\n console.log(`[ZeroWeightRenderer] Loading action: ${id}`);\n const loaded = await this.engine!.load_action(config);\n if (this.cancelled) break;\n\n this.engine!.add_action(id as string, loaded);\n this.loadedActions.add(id as string);\n\n remaining--;\n this.emit(\"actionLoaded\", id as string, remaining);\n console.log(`[ZeroWeightRenderer] Action \"${id}\" loaded. ${remaining} remaining.`);\n } catch (err) {\n console.error(`[ZeroWeightRenderer] Failed to load action \"${id}\":`, err);\n }\n }\n\n if (!this.cancelled) {\n this.emit(\"allActionsLoaded\");\n console.log(\"[ZeroWeightRenderer] All actions loaded.\");\n }\n }\n}\n","/**\n * zeroweight-renderer — ActionQueue\n *\n * Centralized action dispatch + queue system.\n * ALL calls to the rendering engine go through this single coordinator.\n *\n * Key concepts:\n * - \"Turn\": The entire speaking episode. While a turn is active, non-speaking\n * actions are queued and only executed after the turn ends.\n * - \"Speech state\": Within a turn, the avatar can be \"speaking\" or \"pause\"\n * (natural breath/pause). Pauses change the avatar's visual pose but don't\n * drain the queue.\n * - \"Idle\": No active turn. Actions execute immediately.\n */\n\nimport type { ActionMetadata, ActionQueueEvents, SpeechState } from \"./types\";\n\n/** Function that actually executes an action on the engine. */\nexport type ActionExecutor = (actionId: string, fallbackAction?: string) => void;\n\nexport class ActionQueue {\n private executor: ActionExecutor;\n\n // State\n private turnActive = false;\n private speechState: SpeechState = \"idle\";\n private currentAction = \"listening\";\n private pendingQueue: string[] = [];\n private actionMetadata: Record<string, ActionMetadata> = {};\n\n // Pulse mechanism: re-send action to survive renderer's 5-frame (~200ms) transition window.\n // We pulse for 600ms total so that even if the first signals arrive DURING the transition\n // and get ignored, later pulses (at 250ms, 300ms, etc.) arrive AFTER it completes.\n private pulseTimer: ReturnType<typeof setInterval> | null = null;\n private pulseCount = 0;\n private static readonly PULSE_INTERVAL_MS = 50; // re-send every 50ms\n private static readonly PULSE_MAX_COUNT = 12; // 12 retries × 50ms = 600ms total coverage\n\n // Event listeners\n private listeners: { [K in keyof ActionQueueEvents]?: ActionQueueEvents[K][] } = {};\n\n constructor(executor: ActionExecutor) {\n this.executor = executor;\n }\n\n // ─── Public API ────────────────────────────────────────────────\n\n /**\n * Register action metadata so the queue knows which actions are looped vs oneshot.\n */\n setActionMetadata(metadata: Record<string, ActionMetadata>): void {\n this.actionMetadata = { ...this.actionMetadata, ...metadata };\n }\n\n /**\n * The SINGLE entry point for dispatching actions.\n * All action requests MUST go through this method.\n */\n dispatch(actionId: string): void {\n const isSpeechAction = this.isSpeechAction(actionId);\n\n if (isSpeechAction) {\n // Speech actions always execute immediately (they sync with audio)\n this.currentAction = actionId;\n this.executeOnEngine(actionId);\n return;\n }\n\n // Non-speech action\n if (this.turnActive) {\n // Queue it — will execute after the turn ends\n console.log(`[ActionQueue] Queuing action (turn active): ${actionId}`);\n this.pendingQueue.push(actionId);\n return;\n }\n\n // Idle — execute immediately\n this.currentAction = actionId;\n const kind = this.actionMetadata[actionId]?.kind;\n if (kind === \"looped\") {\n this.executeOnEngine(actionId);\n } else {\n // Oneshot: play once, then fall back to listening\n this.executeOnEngine(actionId, \"listening\");\n }\n }\n\n /**\n * Mark whether a speaking turn is active.\n * When a turn starts, speaking actions execute immediately and non-speech\n * actions are queued. When a turn ends, the queue is drained.\n */\n setTurnActive(active: boolean): void {\n const was = this.turnActive;\n this.turnActive = active;\n\n if (was !== active) {\n this.emit(\"turnChanged\", active);\n }\n\n if (active && !was) {\n // Turn just started — switch to speaking\n this.speechState = \"speaking\";\n this.emit(\"speechStateChanged\", \"speaking\");\n\n // Execute speaking action\n if (this.isSpeechAction(this.currentAction)) {\n this.executeOnEngine(this.currentAction);\n } else {\n this.executeOnEngine(\"speaking\");\n }\n } else if (!active && was) {\n // Turn just ended\n this.speechState = \"idle\";\n this.emit(\"speechStateChanged\", \"idle\");\n this.drainQueue();\n }\n }\n\n /**\n * Update the visual speech state within an active turn.\n * \"speaking\" = avatar is speaking\n * \"pause\" = natural pause, avatar goes to resting pose (but queue doesn't drain)\n */\n setSpeechState(state: SpeechState): void {\n if (this.speechState === state) return;\n\n this.speechState = state;\n this.emit(\"speechStateChanged\", state);\n\n if (!this.turnActive) return;\n\n if (state === \"speaking\") {\n // Resume speaking pose — PULSE to survive renderer transition\n if (this.isSpeechAction(this.currentAction)) {\n this.executeOnEngine(this.currentAction, undefined, true);\n } else {\n this.executeOnEngine(\"speaking\", undefined, true);\n }\n } else if (state === \"pause\") {\n // Show resting/listening pose during pause, but DON'T drain queue\n // NO PULSE — this is a soft visual change; pulsing 'listening' would\n // conflict with the upcoming 'speaking' resume signal\n this.stopPulse();\n this.executeOnEngine(\"listening\", undefined, false);\n }\n }\n\n /**\n * Force transition to listening and clear the queue.\n * Used on disconnect, audio loss, etc.\n */\n forceListening(): void {\n this.stopPulse();\n this.turnActive = false;\n this.speechState = \"idle\";\n this.pendingQueue = [];\n this.currentAction = \"listening\";\n this.executeOnEngine(\"listening\");\n this.emit(\"speechStateChanged\", \"idle\");\n }\n\n /**\n * Get current state for debugging/UI purposes.\n */\n getState() {\n return {\n turnActive: this.turnActive,\n speechState: this.speechState,\n currentAction: this.currentAction,\n queueLength: this.pendingQueue.length,\n queuedActions: [...this.pendingQueue],\n };\n }\n\n // ─── Event Emitter ─────────────────────────────────────────────\n\n on<K extends keyof ActionQueueEvents>(event: K, callback: ActionQueueEvents[K]): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event]!.push(callback);\n }\n\n off<K extends keyof ActionQueueEvents>(event: K, callback: ActionQueueEvents[K]): void {\n const arr = this.listeners[event];\n if (arr) {\n this.listeners[event] = arr.filter((cb) => cb !== callback) as any;\n }\n }\n\n private emit<K extends keyof ActionQueueEvents>(event: K, ...args: Parameters<ActionQueueEvents[K]>): void {\n const arr = this.listeners[event];\n if (arr) {\n for (const cb of arr) {\n (cb as (...a: any[]) => void)(...args);\n }\n }\n }\n\n // ─── Internals ─────────────────────────────────────────────────\n\n private isSpeechAction(actionId: string): boolean {\n return actionId.includes(\"speak\") || actionId === \"speaking\";\n }\n\n private executeOnEngine(actionId: string, fallback?: string, pulse: boolean = true): void {\n try {\n this.executor(actionId, fallback);\n this.emit(\"actionExecuted\", actionId, fallback);\n if (pulse) {\n // Start pulsing: re-send the action to survive the renderer's transition window\n this.startPulse(actionId, fallback);\n }\n } catch (e) {\n console.error(`[ActionQueue] Failed to execute action \"${actionId}\":`, e);\n }\n }\n\n /**\n * Pulse mechanism: re-sends the desired action multiple times at short intervals\n * to ensure the renderer catches it after its 5-frame (~200ms) transition window.\n * Duplicate triggers are idempotent on the renderer side — safe to call repeatedly.\n */\n private startPulse(actionId: string, fallback?: string): void {\n this.stopPulse();\n this.pulseCount = 0;\n\n this.pulseTimer = setInterval(() => {\n this.pulseCount++;\n if (this.pulseCount >= ActionQueue.PULSE_MAX_COUNT) {\n this.stopPulse();\n return;\n }\n try {\n this.executor(actionId, fallback);\n } catch (e) {\n // Silently ignore pulse errors\n }\n }, ActionQueue.PULSE_INTERVAL_MS);\n }\n\n private stopPulse(): void {\n if (this.pulseTimer !== null) {\n clearInterval(this.pulseTimer);\n this.pulseTimer = null;\n }\n this.pulseCount = 0;\n }\n\n /**\n * Drain queued actions after a turn ends. Each queued action plays as a\n * oneshot, then we return to listening.\n */\n private drainQueue(): void {\n if (this.pendingQueue.length === 0) {\n // No queued actions — just go to listening\n this.currentAction = \"listening\";\n this.executeOnEngine(\"listening\");\n this.emit(\"queueDrained\");\n return;\n }\n\n console.log(`[ActionQueue] Draining ${this.pendingQueue.length} queued action(s)`);\n\n // Execute all queued actions as chained oneshots\n // The last one falls back to \"listening\"\n const queue = [...this.pendingQueue];\n this.pendingQueue = [];\n\n // For simplicity, execute the first one now with \"listening\" as fallback.\n // The engine handles playing it once and then transitioning.\n // If there are multiple, we chain them via the fallback.\n const nextAction = queue.shift()!;\n this.currentAction = nextAction;\n\n const kind = this.actionMetadata[nextAction]?.kind;\n if (kind === \"looped\") {\n this.executeOnEngine(nextAction);\n } else {\n this.executeOnEngine(nextAction, \"listening\");\n }\n\n // Queue remaining actions back (they'll execute on next transition)\n // For now, we execute only the first and discard duplicates\n // since the engine plays one-shot-then-fallback.\n if (queue.length > 0) {\n // Store remaining for future drain cycles if needed\n this.pendingQueue = queue;\n }\n\n this.emit(\"queueDrained\");\n }\n}\n","/**\n * zeroweight-renderer — VoiceActivityDetector\n *\n * Amplitude-based VAD using Web Audio API with hysteresis to prevent\n * flickering between speaking/listening states during natural speech pauses.\n *\n * State machine:\n * IDLE ──(amplitude > threshold for N frames)──> SPEAKING\n * SPEAKING ──(amplitude < threshold for M frames)──> PAUSED (turn stays active)\n * PAUSED ──(amplitude > threshold for N frames)──> SPEAKING (resumed)\n * PAUSED ──(amplitude < threshold for L frames total)──> IDLE (turn ended)\n * SPEAKING ──(amplitude < threshold for L frames)──> IDLE (turn ended, skipped pause)\n *\n * \"Pause\" means the avatar can visually transition to a resting pose, but the\n * speaking turn is still active (action queue is NOT drained).\n * \"Turn end\" means the speaking turn is over and the action queue can drain.\n */\n\nimport type { VADConfig, VADEvents } from \"./types\";\n\ntype VADState = \"idle\" | \"speaking\" | \"paused\";\n\nconst DEFAULT_CONFIG: Required<VADConfig> = {\n threshold: 0.008,\n analyseIntervalMs: 30,\n speechStartFrames: 1, // instant start — 1 frame (~30ms)\n speechPauseFrames: 30, // ~900ms silence before visual pause (keep speaking through normal pauses)\n turnEndFrames: 50, // ~1500ms of silence before turn fully ends\n fftSize: 256,\n};\n\nexport class VoiceActivityDetector {\n private config: Required<VADConfig>;\n private state: VADState = \"idle\";\n\n // Web Audio\n private audioCtx: AudioContext | null = null;\n private analyser: AnalyserNode | null = null;\n private source: MediaStreamAudioSourceNode | null = null;\n private dataArray: Float32Array<ArrayBuffer> | null = null;\n\n // Analysis loop\n private intervalId: ReturnType<typeof setInterval> | null = null;\n\n // Hysteresis counters\n private aboveCount = 0;\n private belowCount = 0;\n\n // Event listeners\n private listeners: { [K in keyof VADEvents]?: VADEvents[K][] } = {};\n\n constructor(config?: VADConfig) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n // ─── Public API ────────────────────────────────────────────────\n\n /**\n * Start monitoring a MediaStreamTrack for voice activity.\n */\n start(track: MediaStreamTrack): void {\n this.stop();\n\n this.audioCtx = new AudioContext();\n this.analyser = this.audioCtx.createAnalyser();\n this.analyser.fftSize = this.config.fftSize;\n\n const stream = new MediaStream([track]);\n this.source = this.audioCtx.createMediaStreamSource(stream);\n this.source.connect(this.analyser);\n\n this.dataArray = new Float32Array(this.analyser.fftSize);\n this.state = \"idle\";\n this.aboveCount = 0;\n this.belowCount = 0;\n\n this.intervalId = setInterval(\n () => this.analyse(),\n this.config.analyseIntervalMs\n );\n }\n\n /**\n * Stop monitoring and clean up resources.\n */\n stop(): void {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n this.source?.disconnect();\n this.source = null;\n this.analyser = null;\n if (this.audioCtx && this.audioCtx.state !== \"closed\") {\n this.audioCtx.close().catch(() => {});\n }\n this.audioCtx = null;\n this.dataArray = null;\n\n // If we were in a speaking state, emit turn end\n if (this.state !== \"idle\") {\n this.state = \"idle\";\n this.emit(\"turnEnd\");\n }\n }\n\n /**\n * Force-end the current turn (e.g., when LiveKit state changes to non-speaking).\n */\n endTurn(): void {\n if (this.state !== \"idle\") {\n this.state = \"idle\";\n this.aboveCount = 0;\n this.belowCount = 0;\n this.emit(\"turnEnd\");\n }\n }\n\n /**\n * Get the current VAD state.\n */\n getState(): VADState {\n return this.state;\n }\n\n // ─── Event Emitter ─────────────────────────────────────────────\n\n on<K extends keyof VADEvents>(event: K, callback: VADEvents[K]): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event]!.push(callback);\n }\n\n off<K extends keyof VADEvents>(event: K, callback: VADEvents[K]): void {\n const arr = this.listeners[event];\n if (arr) {\n this.listeners[event] = arr.filter((cb) => cb !== callback) as any;\n }\n }\n\n private emit<K extends keyof VADEvents>(event: K, ...args: Parameters<VADEvents[K]>): void {\n const arr = this.listeners[event];\n if (arr) {\n for (const cb of arr) {\n (cb as (...a: any[]) => void)(...args);\n }\n }\n }\n\n // ─── Analysis Loop ─────────────────────────────────────────────\n\n private analyse(): void {\n if (!this.analyser || !this.dataArray) return;\n\n this.analyser.getFloatTimeDomainData(this.dataArray);\n\n // Compute RMS amplitude\n let sumSquares = 0;\n for (let i = 0; i < this.dataArray.length; i++) {\n sumSquares += this.dataArray[i] * this.dataArray[i];\n }\n const rms = Math.sqrt(sumSquares / this.dataArray.length);\n\n const isAbove = rms > this.config.threshold;\n\n if (isAbove) {\n this.aboveCount++;\n this.belowCount = 0;\n } else {\n this.belowCount++;\n this.aboveCount = 0;\n }\n\n switch (this.state) {\n case \"idle\":\n if (this.aboveCount >= this.config.speechStartFrames) {\n this.state = \"speaking\";\n this.emit(\"speechStart\");\n }\n break;\n\n case \"speaking\":\n if (this.belowCount >= this.config.turnEndFrames) {\n // Long silence → turn ended (skipped pause)\n this.state = \"idle\";\n this.emit(\"turnEnd\");\n } else if (this.belowCount >= this.config.speechPauseFrames) {\n // Short silence → paused (turn still active)\n this.state = \"paused\";\n this.emit(\"speechPause\");\n }\n break;\n\n case \"paused\":\n if (this.aboveCount >= this.config.speechStartFrames) {\n // Resumed speaking within the same turn\n this.state = \"speaking\";\n this.emit(\"speechResume\");\n } else if (this.belowCount >= this.config.turnEndFrames) {\n // Extended silence → turn over\n this.state = \"idle\";\n this.emit(\"turnEnd\");\n }\n break;\n }\n }\n}\n"],"names":["wasm","addToExternrefTable0","obj","idx","_assertClass","instance","klass","CLOSURE_DTORS","state","debugString","val","type","description","name","length","debug","i","builtInMatches","className","getArrayF32FromWasm0","ptr","len","getFloat32ArrayMemory0","getArrayU8FromWasm0","getUint8ArrayMemory0","cachedDataViewMemory0","getDataViewMemory0","cachedFloat32ArrayMemory0","getStringFromWasm0","decodeText","cachedUint8ArrayMemory0","handleError","f","args","e","isLikeNone","x","makeMutClosure","arg0","arg1","dtor","real","a","passStringToWasm0","arg","malloc","realloc","buf","cachedTextEncoder","WASM_VECTOR_LEN","mem","offset","code","view","ret","takeFromExternrefTable0","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af","arg2","wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4","wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec","arg3","__wbindgen_enum_EncodedVideoChunkType","AvatarEngineFinalization","LoadedActionFinalization","AvatarEngine","id","loaded","ptr0","len0","LoadedAction","ptr1","config_val","action_id","next_action_id","len1","canvas","now_ms","width","height","EXPECTED_RESPONSE_TYPES","__wbg_load","module","imports","bytes","__wbg_get_imports","v","arg4","result","state0","cb0","arg5","arg6","arg7","arg8","arg9","arg10","table","__wbg_finalize_init","__wbg_init","module_or_path","ZeroWeightRenderer","config","initWasm","engine","isMobile","scale","remainingActionsMap","w","h","actionId","fallbackAction","event","callback","arr","cb","tick","time","target","container","dpr","rect","targetWidth","targetHeight","entries","newMetadata","remaining","err","ActionQueue","executor","metadata","active","was","fallback","pulse","queue","nextAction","DEFAULT_CONFIG","VoiceActivityDetector","track","stream","sumSquares"],"mappings":"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"}
1
+ {"version":3,"file":"zeroweight-renderer.umd.js","sources":["../src/engine/avatar_engine.js","../src/ZeroWeightRenderer.ts","../src/ActionQueue.ts","../src/VoiceActivityDetector.ts"],"sourcesContent":["let wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => state.dtor(state.a, state.b));\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getFloat32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n state.a = a;\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n state.dtor(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n }\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4(arg0, arg1, arg2);\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af(arg0, arg1, arg2);\n}\n\nfunction wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec(arg0, arg1, arg2, arg3);\n}\n\nconst __wbindgen_enum_EncodedVideoChunkType = [\"key\", \"delta\"];\n\nconst AvatarEngineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_avatarengine_free(ptr >>> 0, 1));\n\nconst LoadedActionFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_loadedaction_free(ptr >>> 0, 1));\n\nconst ZCodecEngineFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_zcodecengine_free(ptr >>> 0, 1));\n\nexport class AvatarEngine {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n AvatarEngineFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_avatarengine_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @param {LoadedAction} loaded\n */\n add_action(id, loaded) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(loaded, LoadedAction);\n var ptr1 = loaded.__destroy_into_raw();\n wasm.avatarengine_add_action(this.__wbg_ptr, ptr0, len0, ptr1);\n }\n /**\n * @param {any} config_val\n * @returns {Promise<any>}\n */\n load_action(config_val) {\n const ret = wasm.avatarengine_load_action(this.__wbg_ptr, config_val);\n return ret;\n }\n /**\n * @returns {number}\n */\n video_width() {\n const ret = wasm.avatarengine_video_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n video_height() {\n const ret = wasm.avatarengine_video_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {string} action_id\n * @param {string | null} [next_action_id]\n */\n execute_action(action_id, next_action_id) {\n const ptr0 = passStringToWasm0(action_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(next_action_id) ? 0 : passStringToWasm0(next_action_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n const ret = wasm.avatarengine_execute_action(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {any}\n */\n get_actions_list() {\n const ret = wasm.avatarengine_get_actions_list(this.__wbg_ptr);\n return ret;\n }\n constructor() {\n const ret = wasm.avatarengine_new();\n this.__wbg_ptr = ret >>> 0;\n AvatarEngineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {any} config_val\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise<any>}\n */\n init(config_val, canvas) {\n const ret = wasm.avatarengine_init(this.__wbg_ptr, config_val, canvas);\n return ret;\n }\n /**\n * @param {number} now_ms\n */\n tick(now_ms) {\n wasm.avatarengine_tick(this.__wbg_ptr, now_ms);\n }\n /**\n * @param {number} width\n * @param {number} height\n */\n resize(width, height) {\n wasm.avatarengine_resize(this.__wbg_ptr, width, height);\n }\n interrupt() {\n wasm.avatarengine_interrupt(this.__wbg_ptr);\n }\n}\nif (Symbol.dispose) AvatarEngine.prototype[Symbol.dispose] = AvatarEngine.prototype.free;\n\nexport class LoadedAction {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(LoadedAction.prototype);\n obj.__wbg_ptr = ptr;\n LoadedActionFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n LoadedActionFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_loadedaction_free(ptr, 0);\n }\n}\nif (Symbol.dispose) LoadedAction.prototype[Symbol.dispose] = LoadedAction.prototype.free;\n\nexport class ZCodecEngine {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ZCodecEngine.prototype);\n obj.__wbg_ptr = ptr;\n ZCodecEngineFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ZCodecEngineFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_zcodecengine_free(ptr, 0);\n }\n /**\n * @returns {VideoFrame | undefined}\n */\n next_frame() {\n const ret = wasm.zcodecengine_next_frame(this.__wbg_ptr);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @returns {ZCodecEngine}\n */\n static new_headless() {\n const ret = wasm.zcodecengine_new_headless();\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ZCodecEngine.__wrap(ret[0]);\n }\n /**\n * @returns {number}\n */\n total_frames() {\n const ret = wasm.zcodecengine_total_frames(this.__wbg_ptr);\n return ret >>> 0;\n }\n trigger_transition() {\n wasm.zcodecengine_trigger_transition(this.__wbg_ptr);\n }\n /**\n * @param {HTMLCanvasElement} canvas\n */\n constructor(canvas) {\n const ret = wasm.zcodecengine_new(canvas);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n ZCodecEngineFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n reset() {\n const ret = wasm.zcodecengine_reset(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {number}\n */\n width() {\n const ret = wasm.zcodecengine_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n height() {\n const ret = wasm.zcodecengine_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n render() {\n const ret = wasm.zcodecengine_render(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n resume() {\n const ret = wasm.zcodecengine_resume(this.__wbg_ptr);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n /**\n * @returns {boolean}\n */\n is_loop() {\n const ret = wasm.zcodecengine_is_loop(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} fps\n */\n set_fps(fps) {\n wasm.zcodecengine_set_fps(this.__wbg_ptr, fps);\n }\n suspend() {\n wasm.zcodecengine_suspend(this.__wbg_ptr);\n }\n /**\n * @returns {boolean}\n */\n is_ended() {\n const ret = wasm.zcodecengine_is_ended(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {Uint8Array} data\n */\n load_zai(data) {\n const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.zcodecengine_load_zai(this.__wbg_ptr, ptr0, len0);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\nif (Symbol.dispose) ZCodecEngine.prototype[Symbol.dispose] = ZCodecEngine.prototype.free;\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n 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);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_Error_52673b7de5a0ca89 = function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n };\n imports.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6 = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_in_0d3e1e8f0c669317 = function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_object_ce774f3490692386 = function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_string_704ef9c8fc131030 = function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_jsval_loose_eq_766057600fdd1b0d = function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n };\n imports.wbg.__wbg___wbindgen_number_get_9619185a74197f95 = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n };\n imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg__wbg_cb_unref_87dfb5aaa0cbcea7 = function(arg0) {\n arg0._wbg_cb_unref();\n };\n imports.wbg.__wbg_activeTexture_1db0722f00c3f843 = function(arg0, arg1) {\n arg0.activeTexture(arg1 >>> 0);\n };\n imports.wbg.__wbg_apply_52e9ae668d017009 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.apply(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_arrayBuffer_c04af4fce566092d = function() { return handleError(function (arg0) {\n const ret = arg0.arrayBuffer();\n return ret;\n }, arguments) };\n imports.wbg.__wbg_attachShader_bc2b53790fd12d3a = function(arg0, arg1, arg2) {\n arg0.attachShader(arg1, arg2);\n };\n imports.wbg.__wbg_bindBuffer_110b128c65a97376 = function(arg0, arg1, arg2) {\n arg0.bindBuffer(arg1 >>> 0, arg2);\n };\n imports.wbg.__wbg_bindTexture_4537240b278f1d53 = function(arg0, arg1, arg2) {\n arg0.bindTexture(arg1 >>> 0, arg2);\n };\n imports.wbg.__wbg_blendFunc_5eed6dc03a180da2 = function(arg0, arg1, arg2) {\n arg0.blendFunc(arg1 >>> 0, arg2 >>> 0);\n };\n imports.wbg.__wbg_bufferData_ac5c7900b06f1517 = function(arg0, arg1, arg2, arg3) {\n arg0.bufferData(arg1 >>> 0, arg2, arg3 >>> 0);\n };\n imports.wbg.__wbg_call_3020136f7a2d6e44 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_abb4ff46ce38be40 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_canvas_b73dbfddac9ded86 = function(arg0) {\n const ret = arg0.canvas;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_clearColor_fe8de7e582b77e40 = function(arg0, arg1, arg2, arg3, arg4) {\n arg0.clearColor(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_clear_52caf9271911674b = function(arg0, arg1) {\n arg0.clear(arg1 >>> 0);\n };\n imports.wbg.__wbg_close_50d36cfeaf328abc = function() { return handleError(function (arg0) {\n arg0.close();\n }, arguments) };\n imports.wbg.__wbg_close_79883b2ec4564223 = function(arg0) {\n arg0.close();\n };\n imports.wbg.__wbg_compileShader_ac0bf6f0837881c3 = function(arg0, arg1) {\n arg0.compileShader(arg1);\n };\n imports.wbg.__wbg_configure_5d862b852c9f0667 = function() { return handleError(function (arg0, arg1) {\n arg0.configure(arg1);\n }, arguments) };\n imports.wbg.__wbg_createBuffer_8601b8ec330ab49d = function(arg0) {\n const ret = arg0.createBuffer();\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createProgram_023ba0fc6ff6efd6 = function(arg0) {\n const ret = arg0.createProgram();\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createShader_4626088b63c33727 = function(arg0, arg1) {\n const ret = arg0.createShader(arg1 >>> 0);\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createTexture_4d5934eb9772b5fe = function(arg0) {\n const ret = arg0.createTexture();\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_decode_4da4a9f9ba25a680 = function() { return handleError(function (arg0, arg1) {\n arg0.decode(arg1);\n }, arguments) };\n imports.wbg.__wbg_drawArrays_c106ebe0234971d4 = function(arg0, arg1, arg2, arg3) {\n arg0.drawArrays(arg1 >>> 0, arg2, arg3);\n };\n imports.wbg.__wbg_enableVertexAttribArray_def9952d8426be95 = function(arg0, arg1) {\n arg0.enableVertexAttribArray(arg1 >>> 0);\n };\n imports.wbg.__wbg_enable_52598759008d46ee = function(arg0, arg1) {\n arg0.enable(arg1 >>> 0);\n };\n imports.wbg.__wbg_entries_83c79938054e065f = function(arg0) {\n const ret = Object.entries(arg0);\n return ret;\n };\n imports.wbg.__wbg_fetch_417ef4c9a8dfcd8f = function(arg0, arg1, arg2) {\n const ret = arg0.fetch(getStringFromWasm0(arg1, arg2));\n return ret;\n };\n imports.wbg.__wbg_getAttribLocation_5917620b3c9497e6 = function(arg0, arg1, arg2, arg3) {\n const ret = arg0.getAttribLocation(arg1, getStringFromWasm0(arg2, arg3));\n return ret;\n };\n imports.wbg.__wbg_getContext_01f42b234e833f0a = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n }, arguments) };\n imports.wbg.__wbg_getContext_40a6fc6da6cacc21 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.getContext(getStringFromWasm0(arg1, arg2), arg3);\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n }, arguments) };\n imports.wbg.__wbg_getProgramInfoLog_ea3064b153e4542a = function(arg0, arg1, arg2) {\n const ret = arg1.getProgramInfoLog(arg2);\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_getProgramParameter_ff1aee3815d6a8f9 = function(arg0, arg1, arg2) {\n const ret = arg0.getProgramParameter(arg1, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_getShaderInfoLog_1affea8c74bd191c = function(arg0, arg1, arg2) {\n const ret = arg1.getShaderInfoLog(arg2);\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_getShaderParameter_1f86483b99db3dcc = function(arg0, arg1, arg2) {\n const ret = arg0.getShaderParameter(arg1, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_getUniformLocation_2a4ddf8dd8285373 = function(arg0, arg1, arg2, arg3) {\n const ret = arg0.getUniformLocation(arg1, getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_get_6b7bd52aca3f9671 = function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n };\n imports.wbg.__wbg_get_af9dab7e9603ea93 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe = function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_f3320d2419cd0355 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_d070139aaac1459f = function(arg0) {\n let result;\n try {\n result = arg0 instanceof CanvasRenderingContext2D;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Response_cd74d1c2ac92cb0b = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Uint8Array_da54ccc9d3e09434 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_WebGlRenderingContext_f2a36a2d31de185f = function(arg0) {\n let result;\n try {\n result = arg0 instanceof WebGLRenderingContext;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Window_b5cf7783caa68180 = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_length_22ac23eaec9d8053 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_linkProgram_2f770464e69099dc = function(arg0, arg1) {\n arg0.linkProgram(arg1);\n };\n imports.wbg.__wbg_loadedaction_new = function(arg0) {\n const ret = LoadedAction.__wrap(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_1ba21ce319a06297 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_1ded466bc4dcef8e = function() { return handleError(function (arg0) {\n const ret = new EncodedVideoChunk(arg0);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_25f239778d6112b9 = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_6421f6084cc5bc5a = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_new_b546ae120718850e = function() {\n const ret = new Map();\n return ret;\n };\n imports.wbg.__wbg_new_d7eb87b462ce0007 = function() { return handleError(function (arg0) {\n const ret = new VideoDecoder(arg0);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_ff12d2b041fb48f1 = function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return ret;\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbg_new_from_slice_f9c22b9153b26992 = function(arg0, arg1) {\n const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_new_no_args_cb138f77cf6151ee = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_now_69d776cd24f5215b = function() {\n const ret = Date.now();\n return ret;\n };\n imports.wbg.__wbg_now_8cf15d6e317793e1 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_ok_dd98ecb60d721e20 = function(arg0) {\n const ret = arg0.ok;\n return ret;\n };\n imports.wbg.__wbg_performance_c77a440eff2efd9b = function(arg0) {\n const ret = arg0.performance;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_prototypesetcall_dfe9b766cdc1f1fd = function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n };\n imports.wbg.__wbg_push_7d9be8f38fc13975 = function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n };\n imports.wbg.__wbg_queueMicrotask_9b549dfce8865860 = function(arg0) {\n const ret = arg0.queueMicrotask;\n return ret;\n };\n imports.wbg.__wbg_queueMicrotask_fca69f5bfad613a5 = function(arg0) {\n queueMicrotask(arg0);\n };\n imports.wbg.__wbg_reset_6daf3535b34fc20d = function() { return handleError(function (arg0) {\n arg0.reset();\n }, arguments) };\n imports.wbg.__wbg_resolve_fd5bfbaa4ce36e1e = function(arg0) {\n const ret = Promise.resolve(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n };\n imports.wbg.__wbg_set_7df433eea03a5c14 = function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n };\n imports.wbg.__wbg_set_codec_5ce4eeb13e47869f = function(arg0, arg1, arg2) {\n arg0.codec = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_set_coded_height_1c1bfedf5cd624de = function(arg0, arg1) {\n arg0.codedHeight = arg1 >>> 0;\n };\n imports.wbg.__wbg_set_coded_width_665db0630f7e176c = function(arg0, arg1) {\n arg0.codedWidth = arg1 >>> 0;\n };\n imports.wbg.__wbg_set_data_25bca89a2bbe3c8e = function(arg0, arg1) {\n arg0.data = arg1;\n };\n imports.wbg.__wbg_set_duration_c76e08e01946b301 = function(arg0, arg1) {\n arg0.duration = arg1;\n };\n imports.wbg.__wbg_set_efaaf145b9377369 = function(arg0, arg1, arg2) {\n const ret = arg0.set(arg1, arg2);\n return ret;\n };\n imports.wbg.__wbg_set_error_f6080078fa7badaa = function(arg0, arg1) {\n arg0.error = arg1;\n };\n imports.wbg.__wbg_set_height_6f8f8ef4cb40e496 = function(arg0, arg1) {\n arg0.height = arg1 >>> 0;\n };\n imports.wbg.__wbg_set_optimize_for_latency_6d5ac90adfa2b6c3 = function(arg0, arg1) {\n arg0.optimizeForLatency = arg1 !== 0;\n };\n imports.wbg.__wbg_set_output_0ebd7b0816c1747f = function(arg0, arg1) {\n arg0.output = arg1;\n };\n imports.wbg.__wbg_set_timestamp_8c6c0e81a6d92710 = function(arg0, arg1) {\n arg0.timestamp = arg1;\n };\n imports.wbg.__wbg_set_type_bce1bc8e77021fbd = function(arg0, arg1) {\n arg0.type = __wbindgen_enum_EncodedVideoChunkType[arg1];\n };\n imports.wbg.__wbg_set_width_7ff7a22c6e9f423e = function(arg0, arg1) {\n arg0.width = arg1 >>> 0;\n };\n imports.wbg.__wbg_shaderSource_8a7a30baeaf655d5 = function(arg0, arg1, arg2, arg3) {\n arg0.shaderSource(arg1, getStringFromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_769e6b65d6557335 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_60cf02db4de8e1c1 = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_08f5a74c69739274 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_a8924b26aa92d024 = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_texImage2D_bb9c87914f232f46 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n arg0.texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));\n }, arguments) };\n imports.wbg.__wbg_texParameteri_035e104616b395e0 = function(arg0, arg1, arg2, arg3) {\n arg0.texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);\n };\n imports.wbg.__wbg_then_429f7caf1026411d = function(arg0, arg1, arg2) {\n const ret = arg0.then(arg1, arg2);\n return ret;\n };\n imports.wbg.__wbg_then_4f95312d68691235 = function(arg0, arg1) {\n const ret = arg0.then(arg1);\n return ret;\n };\n imports.wbg.__wbg_uniform1f_058417475b9966c8 = function(arg0, arg1, arg2) {\n arg0.uniform1f(arg1, arg2);\n };\n imports.wbg.__wbg_uniform1i_e48736e68cd30ed1 = function(arg0, arg1, arg2) {\n arg0.uniform1i(arg1, arg2);\n };\n imports.wbg.__wbg_useProgram_142dd02d095f80f1 = function(arg0, arg1) {\n arg0.useProgram(arg1);\n };\n imports.wbg.__wbg_vertexAttribPointer_5c516f4c675103bf = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n arg0.vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6);\n };\n imports.wbg.__wbg_viewport_ceaa5c1a061b76df = function(arg0, arg1, arg2, arg3, arg4) {\n arg0.viewport(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_cast_5747feeebb73d96b = function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 65, function: Function { arguments: [NamedExternref(\"VideoFrame\")], shim_idx: 66, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h23f0d2e49ebcbedf, wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af);\n return ret;\n };\n imports.wbg.__wbindgen_cast_5d20a5358f99a210 = function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 75, function: Function { arguments: [Externref], shim_idx: 76, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__had5a6045a93392fa, wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4);\n return ret;\n };\n imports.wbg.__wbindgen_cast_cd07b1914aa3d62c = function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(F32)) -> NamedExternref(\"Float32Array\")`.\n const ret = getArrayF32FromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_cast_efaa74e24e38a7b5 = function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 65, function: Function { arguments: [Externref], shim_idx: 66, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h23f0d2e49ebcbedf, wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af);\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n };\n\n return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('avatar_engine_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/**\n * zeroweight-renderer — ZeroWeightRenderer\n *\n * Raw rendering engine wrapper. Framework-agnostic.\n * Handles WASM initialization, canvas setup, render loop, action loading,\n * and provides a clean API for playing actions.\n *\n * Usage (vanilla JS / CDN):\n * const renderer = new ZeroWeightRenderer();\n * await renderer.init(canvas, { payload: bundleData });\n * renderer.play('speaking');\n * renderer.play('wave_hand', 'listening');\n * renderer.destroy();\n */\n\nimport type {\n RendererConfig,\n RendererEvents,\n RendererState,\n ActionMetadata,\n} from \"./types\";\n\n// @ts-ignore — WASM engine module\nimport initWasm, { AvatarEngine } from \"./engine/avatar_engine.js\";\n\nexport class ZeroWeightRenderer {\n // Engine\n private engine: InstanceType<typeof AvatarEngine> | null = null;\n private canvas: HTMLCanvasElement | null = null;\n private container: HTMLElement | null = null;\n\n // Render loop\n private rafId: number | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n // State\n private _state: RendererState = \"idle\";\n private loadedActions = new Set<string>([\"listening\"]);\n private actionMetadata: Record<string, ActionMetadata> = {\n listening: { kind: \"looped\" },\n speaking: { kind: \"looped\" },\n };\n private _dimensions: { width: number; height: number } | null = null;\n\n // Event listeners\n private listeners: { [K in keyof RendererEvents]?: RendererEvents[K][] } = {};\n\n // Cancellation flag for async init\n private cancelled = false;\n\n // ─── Public API ────────────────────────────────────────────────\n\n /**\n * Initialize the renderer with a canvas and bundle config.\n *\n * @param canvas - The canvas element to render to.\n * If inside a container, the canvas will auto-resize to fill it.\n * @param config - Renderer configuration with bundle payload.\n * @returns A promise that resolves when the engine is ready.\n */\n async init(canvas: HTMLCanvasElement, config: RendererConfig): Promise<void> {\n this.cancelled = false;\n this.canvas = canvas;\n this.container = canvas.parentElement;\n this.setState(\"loading\");\n\n try {\n // Init WASM module\n await initWasm();\n if (this.cancelled) return;\n\n const engine = new AvatarEngine();\n this.engine = engine;\n\n // Detect mobile for downscaling\n const isMobile =\n config.forceMobile ??\n (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n ) ||\n window.innerWidth < 768);\n\n const scale = config.scale ?? (isMobile ? 0.5 : 1.0);\n\n // Init engine with bundle payload\n const remainingActionsMap = await engine.init(\n { payload: config.payload, scale },\n canvas\n );\n\n if (this.cancelled) return;\n\n // Read intrinsic dimensions\n const w = engine.video_width();\n const h = engine.video_height();\n if (w > 0 && h > 0) {\n this._dimensions = { width: w, height: h };\n this.emit(\"dimensions\", w, h);\n }\n\n // Setup resize observer\n this.setupResizeObserver();\n this.handleResize();\n\n // Start render loop\n this.startRenderLoop();\n\n // Mark as ready (listening action is loaded by init)\n this.setState(\"ready\");\n this.emit(\"ready\");\n\n // Load remaining actions in background\n await this.loadRemainingActions(remainingActionsMap);\n } catch (e) {\n console.error(\"[ZeroWeightRenderer] Init failed:\", e);\n this.setState(\"error\");\n this.emit(\"error\", e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n /**\n * Play an action on the avatar.\n *\n * @param actionId - The action to play (e.g. \"speaking\", \"wave_hand\").\n * @param fallbackAction - Optional fallback action to play after a oneshot.\n */\n play(actionId: string, fallbackAction?: string): void {\n if (!this.engine) {\n console.warn(\"[ZeroWeightRenderer] Engine not ready, cannot play:\", actionId);\n return;\n }\n\n try {\n if (fallbackAction) {\n this.engine.execute_action(actionId, fallbackAction);\n } else {\n this.engine.execute_action(actionId);\n }\n } catch (e) {\n console.error(`[ZeroWeightRenderer] Failed to play action \"${actionId}\":`, e);\n }\n }\n\n /**\n * Interrupt the current action.\n */\n interrupt(): void {\n try {\n this.engine?.interrupt?.();\n } catch (e) {\n console.error(\"[ZeroWeightRenderer] Interrupt failed:\", e);\n }\n }\n\n /**\n * Load a single action by its config.\n * Useful for lazy-loading actions after init.\n */\n async loadAction(id: string, config: any): Promise<void> {\n if (!this.engine) {\n throw new Error(\"Engine not initialized\");\n }\n\n const loaded = await this.engine.load_action(config);\n this.engine.add_action(id, loaded);\n this.loadedActions.add(id);\n\n if (config.kind) {\n this.actionMetadata[id] = { kind: config.kind };\n }\n }\n\n /**\n * Destroy the renderer and clean up all resources.\n */\n destroy(): void {\n this.cancelled = true;\n\n // Stop render loop\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n\n // Stop resize observer\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n this.engine = null;\n this.canvas = null;\n this.container = null;\n this.setState(\"idle\");\n }\n\n // ─── Getters ───────────────────────────────────────────────────\n\n get state(): RendererState {\n return this._state;\n }\n\n get dimensions(): { width: number; height: number } | null {\n return this._dimensions;\n }\n\n get isReady(): boolean {\n return this._state === \"ready\";\n }\n\n getLoadedActions(): Set<string> {\n return new Set(this.loadedActions);\n }\n\n getActionMetadata(): Record<string, ActionMetadata> {\n return { ...this.actionMetadata };\n }\n\n /**\n * Direct access to the underlying engine instance (advanced usage).\n */\n getEngine(): any {\n return this.engine;\n }\n\n // ─── Event Emitter ─────────────────────────────────────────────\n\n on<K extends keyof RendererEvents>(event: K, callback: RendererEvents[K]): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event]!.push(callback);\n }\n\n off<K extends keyof RendererEvents>(event: K, callback: RendererEvents[K]): void {\n const arr = this.listeners[event];\n if (arr) {\n this.listeners[event] = arr.filter((cb) => cb !== callback) as any;\n }\n }\n\n private emit<K extends keyof RendererEvents>(event: K, ...args: Parameters<RendererEvents[K]>): void {\n const arr = this.listeners[event];\n if (arr) {\n for (const cb of arr) {\n (cb as (...a: any[]) => void)(...args);\n }\n }\n }\n\n // ─── Internals ─────────────────────────────────────────────────\n\n private setState(state: RendererState): void {\n if (this._state === state) return;\n this._state = state;\n this.emit(\"stateChanged\", state);\n }\n\n private startRenderLoop(): void {\n const tick = (time: number) => {\n if (this.engine) {\n this.engine.tick(time);\n }\n this.rafId = requestAnimationFrame(tick);\n };\n this.rafId = requestAnimationFrame(tick);\n }\n\n private setupResizeObserver(): void {\n const target = this.container || this.canvas;\n if (!target) return;\n\n this.resizeObserver = new ResizeObserver(() => this.handleResize());\n this.resizeObserver.observe(target);\n }\n\n private handleResize(): void {\n const container = this.container || this.canvas?.parentElement;\n const canvas = this.canvas;\n const engine = this.engine;\n\n if (!container || !canvas || !engine) return;\n\n const dpr = Math.min(window.devicePixelRatio || 1, 2);\n const rect = container.getBoundingClientRect();\n const targetWidth = Math.floor(rect.width * dpr);\n const targetHeight = Math.floor(rect.height * dpr);\n\n if (canvas.width !== targetWidth || canvas.height !== targetHeight) {\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n engine.resize(targetWidth, targetHeight);\n }\n }\n\n private async loadRemainingActions(remainingActionsMap: any): Promise<void> {\n if (!remainingActionsMap || this.cancelled) return;\n\n const entries =\n remainingActionsMap instanceof Map\n ? Array.from(remainingActionsMap.entries())\n : Object.entries(remainingActionsMap || {});\n\n if (entries.length === 0) {\n this.emit(\"allActionsLoaded\");\n return;\n }\n\n // Register metadata early\n const newMetadata: Record<string, ActionMetadata> = {};\n for (const [id, config] of entries) {\n newMetadata[id as string] = { kind: (config as any).kind };\n }\n this.actionMetadata = { ...this.actionMetadata, ...newMetadata };\n\n // Load each action sequentially\n let remaining = entries.length;\n for (const [id, config] of entries) {\n if (this.cancelled) break;\n\n try {\n console.log(`[ZeroWeightRenderer] Loading action: ${id}`);\n const loaded = await this.engine!.load_action(config);\n if (this.cancelled) break;\n\n this.engine!.add_action(id as string, loaded);\n this.loadedActions.add(id as string);\n\n remaining--;\n this.emit(\"actionLoaded\", id as string, remaining);\n console.log(`[ZeroWeightRenderer] Action \"${id}\" loaded. ${remaining} remaining.`);\n } catch (err) {\n console.error(`[ZeroWeightRenderer] Failed to load action \"${id}\":`, err);\n }\n }\n\n if (!this.cancelled) {\n this.emit(\"allActionsLoaded\");\n console.log(\"[ZeroWeightRenderer] All actions loaded.\");\n }\n }\n}\n","/**\n * zeroweight-renderer — ActionQueue\n *\n * Centralized action dispatch + queue system.\n * ALL calls to the rendering engine go through this single coordinator.\n *\n * Key concepts:\n * - \"Turn\": The entire speaking episode. While a turn is active, non-speaking\n * actions are queued and only executed after the turn ends.\n * - \"Speech state\": Within a turn, the avatar can be \"speaking\" or \"pause\"\n * (natural breath/pause). Pauses change the avatar's visual pose but don't\n * drain the queue.\n * - \"Idle\": No active turn. Actions execute immediately.\n */\n\nimport type { ActionMetadata, ActionQueueEvents, SpeechState } from \"./types\";\n\n/** Function that actually executes an action on the engine. */\nexport type ActionExecutor = (actionId: string, fallbackAction?: string) => void;\n\nexport class ActionQueue {\n private executor: ActionExecutor;\n\n // State\n private turnActive = false;\n private speechState: SpeechState = \"idle\";\n private currentAction = \"listening\";\n private pendingQueue: string[] = [];\n private actionMetadata: Record<string, ActionMetadata> = {};\n\n // Pulse mechanism: re-send action to survive renderer's 5-frame (~200ms) transition window.\n // We pulse for 600ms total so that even if the first signals arrive DURING the transition\n // and get ignored, later pulses (at 250ms, 300ms, etc.) arrive AFTER it completes.\n private pulseTimer: ReturnType<typeof setInterval> | null = null;\n private pulseCount = 0;\n private static readonly PULSE_INTERVAL_MS = 50; // re-send every 50ms\n private static readonly PULSE_MAX_COUNT = 12; // 12 retries × 50ms = 600ms total coverage\n\n // Event listeners\n private listeners: { [K in keyof ActionQueueEvents]?: ActionQueueEvents[K][] } = {};\n\n constructor(executor: ActionExecutor) {\n this.executor = executor;\n }\n\n // ─── Public API ────────────────────────────────────────────────\n\n /**\n * Register action metadata so the queue knows which actions are looped vs oneshot.\n */\n setActionMetadata(metadata: Record<string, ActionMetadata>): void {\n this.actionMetadata = { ...this.actionMetadata, ...metadata };\n }\n\n /**\n * The SINGLE entry point for dispatching actions.\n * All action requests MUST go through this method.\n */\n dispatch(actionId: string): void {\n const isSpeechAction = this.isSpeechAction(actionId);\n\n if (isSpeechAction) {\n // Speech actions always execute immediately (they sync with audio)\n this.currentAction = actionId;\n this.executeOnEngine(actionId);\n return;\n }\n\n // Non-speech action\n if (this.turnActive) {\n // Queue it — will execute after the turn ends\n console.log(`[ActionQueue] Queuing action (turn active): ${actionId}`);\n this.pendingQueue.push(actionId);\n return;\n }\n\n // Idle — execute immediately\n this.currentAction = actionId;\n const kind = this.actionMetadata[actionId]?.kind;\n if (kind === \"looped\") {\n this.executeOnEngine(actionId);\n } else {\n // Oneshot: play once, then fall back to listening\n this.executeOnEngine(actionId, \"listening\");\n }\n }\n\n /**\n * Mark whether a speaking turn is active.\n * When a turn starts, speaking actions execute immediately and non-speech\n * actions are queued. When a turn ends, the queue is drained.\n */\n setTurnActive(active: boolean): void {\n const was = this.turnActive;\n this.turnActive = active;\n\n if (was !== active) {\n this.emit(\"turnChanged\", active);\n }\n\n if (active && !was) {\n // Turn just started — switch to speaking\n this.speechState = \"speaking\";\n this.emit(\"speechStateChanged\", \"speaking\");\n\n // Execute speaking action\n if (this.isSpeechAction(this.currentAction)) {\n this.executeOnEngine(this.currentAction);\n } else {\n this.executeOnEngine(\"speaking\");\n }\n } else if (!active && was) {\n // Turn just ended\n this.speechState = \"idle\";\n this.emit(\"speechStateChanged\", \"idle\");\n this.drainQueue();\n }\n }\n\n /**\n * Update the visual speech state within an active turn.\n * \"speaking\" = avatar is speaking\n * \"pause\" = natural pause, avatar goes to resting pose (but queue doesn't drain)\n */\n setSpeechState(state: SpeechState): void {\n if (this.speechState === state) return;\n\n this.speechState = state;\n this.emit(\"speechStateChanged\", state);\n\n if (!this.turnActive) return;\n\n if (state === \"speaking\") {\n // Resume speaking pose — PULSE to survive renderer transition\n if (this.isSpeechAction(this.currentAction)) {\n this.executeOnEngine(this.currentAction, undefined, true);\n } else {\n this.executeOnEngine(\"speaking\", undefined, true);\n }\n } else if (state === \"pause\") {\n // Show resting/listening pose during pause, but DON'T drain queue\n // NO PULSE — this is a soft visual change; pulsing 'listening' would\n // conflict with the upcoming 'speaking' resume signal\n this.stopPulse();\n this.executeOnEngine(\"listening\", undefined, false);\n }\n }\n\n /**\n * Force transition to listening and clear the queue.\n * Used on disconnect, audio loss, etc.\n */\n forceListening(): void {\n this.stopPulse();\n this.turnActive = false;\n this.speechState = \"idle\";\n this.pendingQueue = [];\n this.currentAction = \"listening\";\n this.executeOnEngine(\"listening\");\n this.emit(\"speechStateChanged\", \"idle\");\n }\n\n /**\n * Get current state for debugging/UI purposes.\n */\n getState() {\n return {\n turnActive: this.turnActive,\n speechState: this.speechState,\n currentAction: this.currentAction,\n queueLength: this.pendingQueue.length,\n queuedActions: [...this.pendingQueue],\n };\n }\n\n // ─── Event Emitter ─────────────────────────────────────────────\n\n on<K extends keyof ActionQueueEvents>(event: K, callback: ActionQueueEvents[K]): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event]!.push(callback);\n }\n\n off<K extends keyof ActionQueueEvents>(event: K, callback: ActionQueueEvents[K]): void {\n const arr = this.listeners[event];\n if (arr) {\n this.listeners[event] = arr.filter((cb) => cb !== callback) as any;\n }\n }\n\n private emit<K extends keyof ActionQueueEvents>(event: K, ...args: Parameters<ActionQueueEvents[K]>): void {\n const arr = this.listeners[event];\n if (arr) {\n for (const cb of arr) {\n (cb as (...a: any[]) => void)(...args);\n }\n }\n }\n\n // ─── Internals ─────────────────────────────────────────────────\n\n private isSpeechAction(actionId: string): boolean {\n return actionId.includes(\"speak\") || actionId === \"speaking\";\n }\n\n private executeOnEngine(actionId: string, fallback?: string, pulse: boolean = true): void {\n try {\n this.executor(actionId, fallback);\n this.emit(\"actionExecuted\", actionId, fallback);\n if (pulse) {\n // Start pulsing: re-send the action to survive the renderer's transition window\n this.startPulse(actionId, fallback);\n }\n } catch (e) {\n console.error(`[ActionQueue] Failed to execute action \"${actionId}\":`, e);\n }\n }\n\n /**\n * Pulse mechanism: re-sends the desired action multiple times at short intervals\n * to ensure the renderer catches it after its 5-frame (~200ms) transition window.\n * Duplicate triggers are idempotent on the renderer side — safe to call repeatedly.\n */\n private startPulse(actionId: string, fallback?: string): void {\n this.stopPulse();\n this.pulseCount = 0;\n\n this.pulseTimer = setInterval(() => {\n this.pulseCount++;\n if (this.pulseCount >= ActionQueue.PULSE_MAX_COUNT) {\n this.stopPulse();\n return;\n }\n try {\n this.executor(actionId, fallback);\n } catch (e) {\n // Silently ignore pulse errors\n }\n }, ActionQueue.PULSE_INTERVAL_MS);\n }\n\n private stopPulse(): void {\n if (this.pulseTimer !== null) {\n clearInterval(this.pulseTimer);\n this.pulseTimer = null;\n }\n this.pulseCount = 0;\n }\n\n /**\n * Drain queued actions after a turn ends. Each queued action plays as a\n * oneshot, then we return to listening.\n */\n private drainQueue(): void {\n if (this.pendingQueue.length === 0) {\n // No queued actions — just go to listening\n this.currentAction = \"listening\";\n this.executeOnEngine(\"listening\");\n this.emit(\"queueDrained\");\n return;\n }\n\n console.log(`[ActionQueue] Draining ${this.pendingQueue.length} queued action(s)`);\n\n // Execute all queued actions as chained oneshots\n // The last one falls back to \"listening\"\n const queue = [...this.pendingQueue];\n this.pendingQueue = [];\n\n // For simplicity, execute the first one now with \"listening\" as fallback.\n // The engine handles playing it once and then transitioning.\n // If there are multiple, we chain them via the fallback.\n const nextAction = queue.shift()!;\n this.currentAction = nextAction;\n\n const kind = this.actionMetadata[nextAction]?.kind;\n if (kind === \"looped\") {\n this.executeOnEngine(nextAction);\n } else {\n this.executeOnEngine(nextAction, \"listening\");\n }\n\n // Queue remaining actions back (they'll execute on next transition)\n // For now, we execute only the first and discard duplicates\n // since the engine plays one-shot-then-fallback.\n if (queue.length > 0) {\n // Store remaining for future drain cycles if needed\n this.pendingQueue = queue;\n }\n\n this.emit(\"queueDrained\");\n }\n}\n","/**\n * zeroweight-renderer — VoiceActivityDetector\n *\n * Amplitude-based VAD using Web Audio API with hysteresis to prevent\n * flickering between speaking/listening states during natural speech pauses.\n *\n * State machine:\n * IDLE ──(amplitude > threshold for N frames)──> SPEAKING\n * SPEAKING ──(amplitude < threshold for M frames)──> PAUSED (turn stays active)\n * PAUSED ──(amplitude > threshold for N frames)──> SPEAKING (resumed)\n * PAUSED ──(amplitude < threshold for L frames total)──> IDLE (turn ended)\n * SPEAKING ──(amplitude < threshold for L frames)──> IDLE (turn ended, skipped pause)\n *\n * \"Pause\" means the avatar can visually transition to a resting pose, but the\n * speaking turn is still active (action queue is NOT drained).\n * \"Turn end\" means the speaking turn is over and the action queue can drain.\n */\n\nimport type { VADConfig, VADEvents } from \"./types\";\n\ntype VADState = \"idle\" | \"speaking\" | \"paused\";\n\nconst DEFAULT_CONFIG: Required<VADConfig> = {\n threshold: 0.008,\n analyseIntervalMs: 30,\n speechStartFrames: 1, // instant start — 1 frame (~30ms)\n speechPauseFrames: 30, // ~900ms silence before visual pause (keep speaking through normal pauses)\n turnEndFrames: 50, // ~1500ms of silence before turn fully ends\n fftSize: 256,\n};\n\nexport class VoiceActivityDetector {\n private config: Required<VADConfig>;\n private state: VADState = \"idle\";\n\n // Web Audio\n private audioCtx: AudioContext | null = null;\n private analyser: AnalyserNode | null = null;\n private source: MediaStreamAudioSourceNode | null = null;\n private dataArray: Float32Array<ArrayBuffer> | null = null;\n\n // Analysis loop\n private intervalId: ReturnType<typeof setInterval> | null = null;\n\n // Hysteresis counters\n private aboveCount = 0;\n private belowCount = 0;\n\n // Event listeners\n private listeners: { [K in keyof VADEvents]?: VADEvents[K][] } = {};\n\n constructor(config?: VADConfig) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n // ─── Public API ────────────────────────────────────────────────\n\n /**\n * Start monitoring a MediaStreamTrack for voice activity.\n */\n start(track: MediaStreamTrack): void {\n this.stop();\n\n this.audioCtx = new AudioContext();\n this.analyser = this.audioCtx.createAnalyser();\n this.analyser.fftSize = this.config.fftSize;\n\n const stream = new MediaStream([track]);\n this.source = this.audioCtx.createMediaStreamSource(stream);\n this.source.connect(this.analyser);\n\n this.dataArray = new Float32Array(this.analyser.fftSize);\n this.state = \"idle\";\n this.aboveCount = 0;\n this.belowCount = 0;\n\n this.intervalId = setInterval(\n () => this.analyse(),\n this.config.analyseIntervalMs\n );\n }\n\n /**\n * Stop monitoring and clean up resources.\n */\n stop(): void {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n this.source?.disconnect();\n this.source = null;\n this.analyser = null;\n if (this.audioCtx && this.audioCtx.state !== \"closed\") {\n this.audioCtx.close().catch(() => {});\n }\n this.audioCtx = null;\n this.dataArray = null;\n\n // If we were in a speaking state, emit turn end\n if (this.state !== \"idle\") {\n this.state = \"idle\";\n this.emit(\"turnEnd\");\n }\n }\n\n /**\n * Force-end the current turn (e.g., when LiveKit state changes to non-speaking).\n */\n endTurn(): void {\n if (this.state !== \"idle\") {\n this.state = \"idle\";\n this.aboveCount = 0;\n this.belowCount = 0;\n this.emit(\"turnEnd\");\n }\n }\n\n /**\n * Get the current VAD state.\n */\n getState(): VADState {\n return this.state;\n }\n\n // ─── Event Emitter ─────────────────────────────────────────────\n\n on<K extends keyof VADEvents>(event: K, callback: VADEvents[K]): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event]!.push(callback);\n }\n\n off<K extends keyof VADEvents>(event: K, callback: VADEvents[K]): void {\n const arr = this.listeners[event];\n if (arr) {\n this.listeners[event] = arr.filter((cb) => cb !== callback) as any;\n }\n }\n\n private emit<K extends keyof VADEvents>(event: K, ...args: Parameters<VADEvents[K]>): void {\n const arr = this.listeners[event];\n if (arr) {\n for (const cb of arr) {\n (cb as (...a: any[]) => void)(...args);\n }\n }\n }\n\n // ─── Analysis Loop ─────────────────────────────────────────────\n\n private analyse(): void {\n if (!this.analyser || !this.dataArray) return;\n\n this.analyser.getFloatTimeDomainData(this.dataArray);\n\n // Compute RMS amplitude\n let sumSquares = 0;\n for (let i = 0; i < this.dataArray.length; i++) {\n sumSquares += this.dataArray[i] * this.dataArray[i];\n }\n const rms = Math.sqrt(sumSquares / this.dataArray.length);\n\n const isAbove = rms > this.config.threshold;\n\n if (isAbove) {\n this.aboveCount++;\n this.belowCount = 0;\n } else {\n this.belowCount++;\n this.aboveCount = 0;\n }\n\n switch (this.state) {\n case \"idle\":\n if (this.aboveCount >= this.config.speechStartFrames) {\n this.state = \"speaking\";\n this.emit(\"speechStart\");\n }\n break;\n\n case \"speaking\":\n if (this.belowCount >= this.config.turnEndFrames) {\n // Long silence → turn ended (skipped pause)\n this.state = \"idle\";\n this.emit(\"turnEnd\");\n } else if (this.belowCount >= this.config.speechPauseFrames) {\n // Short silence → paused (turn still active)\n this.state = \"paused\";\n this.emit(\"speechPause\");\n }\n break;\n\n case \"paused\":\n if (this.aboveCount >= this.config.speechStartFrames) {\n // Resumed speaking within the same turn\n this.state = \"speaking\";\n this.emit(\"speechResume\");\n } else if (this.belowCount >= this.config.turnEndFrames) {\n // Extended silence → turn over\n this.state = \"idle\";\n this.emit(\"turnEnd\");\n }\n break;\n }\n }\n}\n"],"names":["wasm","addToExternrefTable0","obj","idx","_assertClass","instance","klass","CLOSURE_DTORS","state","debugString","val","type","description","name","length","debug","i","builtInMatches","className","getArrayF32FromWasm0","ptr","len","getFloat32ArrayMemory0","getArrayU8FromWasm0","getUint8ArrayMemory0","cachedDataViewMemory0","getDataViewMemory0","cachedFloat32ArrayMemory0","getStringFromWasm0","decodeText","cachedUint8ArrayMemory0","handleError","f","args","e","isLikeNone","x","makeMutClosure","arg0","arg1","dtor","real","a","passStringToWasm0","arg","malloc","realloc","buf","cachedTextEncoder","WASM_VECTOR_LEN","mem","offset","code","view","ret","takeFromExternrefTable0","value","cachedTextDecoder","MAX_SAFARI_DECODE_BYTES","numBytesDecoded","wasm_bindgen__convert__closures_____invoke__h8997fabd395b76d4","arg2","wasm_bindgen__convert__closures_____invoke__h602b12bf539ac1af","wasm_bindgen__convert__closures_____invoke__h131abe5cef0cd0ec","arg3","__wbindgen_enum_EncodedVideoChunkType","AvatarEngineFinalization","LoadedActionFinalization","AvatarEngine","id","loaded","ptr0","len0","LoadedAction","ptr1","config_val","action_id","next_action_id","len1","canvas","now_ms","width","height","EXPECTED_RESPONSE_TYPES","__wbg_load","module","imports","bytes","__wbg_get_imports","v","arg4","result","state0","cb0","arg5","arg6","arg7","arg8","arg9","arg10","table","__wbg_finalize_init","__wbg_init","module_or_path","ZeroWeightRenderer","config","initWasm","engine","isMobile","scale","remainingActionsMap","w","h","actionId","fallbackAction","event","callback","arr","cb","tick","time","target","container","dpr","rect","targetWidth","targetHeight","entries","newMetadata","remaining","err","ActionQueue","executor","metadata","active","was","fallback","pulse","queue","nextAction","DEFAULT_CONFIG","VoiceActivityDetector","track","stream","sumSquares"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeroweight/renderer",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "type": "module",
5
5
  "description": "Universal avatar rendering engine — use via CDN <script> tag or ES module import.",
6
6
  "main": "dist/zeroweight-renderer.umd.js",