@grida/canvas-wasm 0.0.40 → 0.0.41

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.
Binary file
package/dist/index.d.mts CHANGED
@@ -86,6 +86,13 @@ declare namespace createGridaCanvas {
86
86
  x: number,
87
87
  y: number
88
88
  ): void;
89
+ _register_font(
90
+ state: GridaCanvasWebGlApplicationPtr,
91
+ family_ptr: number,
92
+ family_len: number,
93
+ data_ptr: number,
94
+ data_len: number
95
+ ): void;
89
96
  _set_main_camera_transform(
90
97
  state: GridaCanvasWebGlApplicationPtr,
91
98
  a: number,
@@ -241,6 +248,16 @@ declare class Grida2D {
241
248
  * @deprecated - test use only
242
249
  */
243
250
  loadBenchmarkScene(cols: number, rows: number): void;
251
+ /**
252
+ * Register a font with the renderer.
253
+ *
254
+ * The wasm module cannot fetch font files directly from the network, so the
255
+ * host environment must fetch the font bytes and pass them here.
256
+ *
257
+ * @param family - CSS font-family name for the typeface.
258
+ * @param data - Raw font file bytes (e.g. TTF/OTF).
259
+ */
260
+ registerFont(family: string, data: Uint8Array): void;
244
261
  /**
245
262
  * Tick the application clock.
246
263
  * bind this to requestAnimationFrame loop or similar
package/dist/index.d.ts CHANGED
@@ -86,6 +86,13 @@ declare namespace createGridaCanvas {
86
86
  x: number,
87
87
  y: number
88
88
  ): void;
89
+ _register_font(
90
+ state: GridaCanvasWebGlApplicationPtr,
91
+ family_ptr: number,
92
+ family_len: number,
93
+ data_ptr: number,
94
+ data_len: number
95
+ ): void;
89
96
  _set_main_camera_transform(
90
97
  state: GridaCanvasWebGlApplicationPtr,
91
98
  a: number,
@@ -241,6 +248,16 @@ declare class Grida2D {
241
248
  * @deprecated - test use only
242
249
  */
243
250
  loadBenchmarkScene(cols: number, rows: number): void;
251
+ /**
252
+ * Register a font with the renderer.
253
+ *
254
+ * The wasm module cannot fetch font files directly from the network, so the
255
+ * host environment must fetch the font bytes and pass them here.
256
+ *
257
+ * @param family - CSS font-family name for the typeface.
258
+ * @param data - Raw font file bytes (e.g. TTF/OTF).
259
+ */
260
+ registerFont(family: string, data: Uint8Array): void;
244
261
  /**
245
262
  * Tick the application clock.
246
263
  * bind this to requestAnimationFrame loop or similar
package/dist/index.js CHANGED
@@ -908,6 +908,9 @@ var require_grida_canvas_wasm = __commonJS({
908
908
  }
909
909
  return size;
910
910
  }, write(stream, buffer, offset, length, position, canOwn) {
911
+ if (buffer.buffer === HEAP8.buffer) {
912
+ canOwn = false;
913
+ }
911
914
  if (!length) return 0;
912
915
  var node = stream.node;
913
916
  node.timestamp = Date.now();
@@ -4766,9 +4769,34 @@ var require_grida_canvas_wasm = __commonJS({
4766
4769
  }
4767
4770
  return requestAnimationFrame(tick);
4768
4771
  };
4772
+ var getHeapMax = () => 2147483648;
4773
+ var growMemory = (size) => {
4774
+ var b = wasmMemory.buffer;
4775
+ var pages = (size - b.byteLength + 65535) / 65536;
4776
+ try {
4777
+ wasmMemory.grow(pages);
4778
+ updateMemoryViews();
4779
+ return 1;
4780
+ } catch (e) {
4781
+ }
4782
+ };
4769
4783
  var _emscripten_resize_heap = (requestedSize) => {
4770
4784
  var oldSize = HEAPU8.length;
4771
4785
  requestedSize >>>= 0;
4786
+ var maxHeapSize = getHeapMax();
4787
+ if (requestedSize > maxHeapSize) {
4788
+ return false;
4789
+ }
4790
+ var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;
4791
+ for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
4792
+ var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
4793
+ overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
4794
+ var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
4795
+ var replacement = growMemory(newSize);
4796
+ if (replacement) {
4797
+ return true;
4798
+ }
4799
+ }
4772
4800
  return false;
4773
4801
  };
4774
4802
  var ENV = {};
@@ -5104,7 +5132,7 @@ var require_grida_canvas_wasm = __commonJS({
5104
5132
  for (var i = 0; i < 288; ++i) {
5105
5133
  miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i);
5106
5134
  }
5107
- var wasmImports = { v: ___cxa_begin_catch, y: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, m: ___cxa_find_matching_catch_3, z: ___cxa_find_matching_catch_4, U: ___cxa_rethrow, t: ___cxa_throw, pb: ___cxa_uncaught_exceptions, d: ___resumeException, X: ___syscall_fcntl64, xb: ___syscall_fstat64, tb: ___syscall_getcwd, zb: ___syscall_ioctl, ub: ___syscall_lstat64, vb: ___syscall_newfstatat, W: ___syscall_openat, wb: ___syscall_stat64, Db: __abort_js, Ab: __emscripten_get_now_is_monotonic, Cb: __emscripten_memcpy_js, qb: __emscripten_throw_longjmp, jb: __gmtime_js, hb: __mmap_js, ib: __munmap_js, sb: __tzset_js, Bb: _emscripten_date_now, N: _emscripten_get_now, Bf: _emscripten_glActiveTexture, Cf: _emscripten_glAttachShader, ee: _emscripten_glBeginQuery, _d: _emscripten_glBeginQueryEXT, Ic: _emscripten_glBeginTransformFeedback, Df: _emscripten_glBindAttribLocation, Ef: _emscripten_glBindBuffer, Fc: _emscripten_glBindBufferBase, Gc: _emscripten_glBindBufferRange, Ce: _emscripten_glBindFramebuffer, De: _emscripten_glBindRenderbuffer, ke: _emscripten_glBindSampler, Ff: _emscripten_glBindTexture, Wb: _emscripten_glBindTransformFeedback, Ye: _emscripten_glBindVertexArray, $e: _emscripten_glBindVertexArrayOES, Gf: _emscripten_glBlendColor, Hf: _emscripten_glBlendEquation, Md: _emscripten_glBlendEquationSeparate, If: _emscripten_glBlendFunc, Ld: _emscripten_glBlendFuncSeparate, we: _emscripten_glBlitFramebuffer, Jf: _emscripten_glBufferData, Kf: _emscripten_glBufferSubData, Ee: _emscripten_glCheckFramebufferStatus, Lf: _emscripten_glClear, jc: _emscripten_glClearBufferfi, kc: _emscripten_glClearBufferfv, mc: _emscripten_glClearBufferiv, lc: _emscripten_glClearBufferuiv, Mf: _emscripten_glClearColor, Kd: _emscripten_glClearDepthf, Nf: _emscripten_glClearStencil, te: _emscripten_glClientWaitSync, Of: _emscripten_glColorMask, Pf: _emscripten_glCompileShader, Qf: _emscripten_glCompressedTexImage2D, Uc: _emscripten_glCompressedTexImage3D, Rf: _emscripten_glCompressedTexSubImage2D, Tc: _emscripten_glCompressedTexSubImage3D, ve: _emscripten_glCopyBufferSubData, Jd: _emscripten_glCopyTexImage2D, Sf: _emscripten_glCopyTexSubImage2D, Vc: _emscripten_glCopyTexSubImage3D, Tf: _emscripten_glCreateProgram, Uf: _emscripten_glCreateShader, Vf: _emscripten_glCullFace, Wf: _emscripten_glDeleteBuffers, Fe: _emscripten_glDeleteFramebuffers, Xf: _emscripten_glDeleteProgram, fe: _emscripten_glDeleteQueries, $d: _emscripten_glDeleteQueriesEXT, Ge: _emscripten_glDeleteRenderbuffers, le: _emscripten_glDeleteSamplers, da: _emscripten_glDeleteShader, ue: _emscripten_glDeleteSync, ea: _emscripten_glDeleteTextures, Vb: _emscripten_glDeleteTransformFeedbacks, Ze: _emscripten_glDeleteVertexArrays, af: _emscripten_glDeleteVertexArraysOES, Id: _emscripten_glDepthFunc, fa: _emscripten_glDepthMask, Hd: _emscripten_glDepthRangef, Gd: _emscripten_glDetachShader, ga: _emscripten_glDisable, ha: _emscripten_glDisableVertexAttribArray, ia: _emscripten_glDrawArrays, We: _emscripten_glDrawArraysInstanced, Pd: _emscripten_glDrawArraysInstancedANGLE, Ib: _emscripten_glDrawArraysInstancedARB, Te: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, $c: _emscripten_glDrawArraysInstancedEXT, Jb: _emscripten_glDrawArraysInstancedNV, Re: _emscripten_glDrawBuffers, Yc: _emscripten_glDrawBuffersEXT, Qd: _emscripten_glDrawBuffersWEBGL, ja: _emscripten_glDrawElements, Xe: _emscripten_glDrawElementsInstanced, Od: _emscripten_glDrawElementsInstancedANGLE, Gb: _emscripten_glDrawElementsInstancedARB, Ue: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Hb: _emscripten_glDrawElementsInstancedEXT, _c: _emscripten_glDrawElementsInstancedNV, Le: _emscripten_glDrawRangeElements, ka: _emscripten_glEnable, la: _emscripten_glEnableVertexAttribArray, ge: _emscripten_glEndQuery, ae: _emscripten_glEndQueryEXT, Hc: _emscripten_glEndTransformFeedback, qe: _emscripten_glFenceSync, ma: _emscripten_glFinish, na: _emscripten_glFlush, He: _emscripten_glFramebufferRenderbuffer, Ie: _emscripten_glFramebufferTexture2D, Lc: _emscripten_glFramebufferTextureLayer, oa: _emscripten_glFrontFace, pa: _emscripten_glGenBuffers, Je: _emscripten_glGenFramebuffers, he: _emscripten_glGenQueries, be: _emscripten_glGenQueriesEXT, Ke: _emscripten_glGenRenderbuffers, me: _emscripten_glGenSamplers, qa: _emscripten_glGenTextures, Ub: _emscripten_glGenTransformFeedbacks, Ve: _emscripten_glGenVertexArrays, bf: _emscripten_glGenVertexArraysOES, ye: _emscripten_glGenerateMipmap, Fd: _emscripten_glGetActiveAttrib, Ed: _emscripten_glGetActiveUniform, ec: _emscripten_glGetActiveUniformBlockName, fc: _emscripten_glGetActiveUniformBlockiv, hc: _emscripten_glGetActiveUniformsiv, Cd: _emscripten_glGetAttachedShaders, Bd: _emscripten_glGetAttribLocation, Ad: _emscripten_glGetBooleanv, $b: _emscripten_glGetBufferParameteri64v, ra: _emscripten_glGetBufferParameteriv, sa: _emscripten_glGetError, ta: _emscripten_glGetFloatv, vc: _emscripten_glGetFragDataLocation, ze: _emscripten_glGetFramebufferAttachmentParameteriv, ac: _emscripten_glGetInteger64i_v, cc: _emscripten_glGetInteger64v, Jc: _emscripten_glGetIntegeri_v, ua: _emscripten_glGetIntegerv, Mb: _emscripten_glGetInternalformativ, Qb: _emscripten_glGetProgramBinary, va: _emscripten_glGetProgramInfoLog, wa: _emscripten_glGetProgramiv, Xd: _emscripten_glGetQueryObjecti64vEXT, Sd: _emscripten_glGetQueryObjectivEXT, Yd: _emscripten_glGetQueryObjectui64vEXT, ie: _emscripten_glGetQueryObjectuiv, ce: _emscripten_glGetQueryObjectuivEXT, je: _emscripten_glGetQueryiv, de: _emscripten_glGetQueryivEXT, Ae: _emscripten_glGetRenderbufferParameteriv, Xb: _emscripten_glGetSamplerParameterfv, Yb: _emscripten_glGetSamplerParameteriv, xa: _emscripten_glGetShaderInfoLog, Ud: _emscripten_glGetShaderPrecisionFormat, zd: _emscripten_glGetShaderSource, ya: _emscripten_glGetShaderiv, za: _emscripten_glGetString, _e: _emscripten_glGetStringi, bc: _emscripten_glGetSynciv, yd: _emscripten_glGetTexParameterfv, xd: _emscripten_glGetTexParameteriv, Dc: _emscripten_glGetTransformFeedbackVarying, gc: _emscripten_glGetUniformBlockIndex, ic: _emscripten_glGetUniformIndices, Aa: _emscripten_glGetUniformLocation, wd: _emscripten_glGetUniformfv, vd: _emscripten_glGetUniformiv, wc: _emscripten_glGetUniformuiv, Cc: _emscripten_glGetVertexAttribIiv, Bc: _emscripten_glGetVertexAttribIuiv, sd: _emscripten_glGetVertexAttribPointerv, ud: _emscripten_glGetVertexAttribfv, td: _emscripten_glGetVertexAttribiv, rd: _emscripten_glHint, Vd: _emscripten_glInvalidateFramebuffer, Wd: _emscripten_glInvalidateSubFramebuffer, qd: _emscripten_glIsBuffer, pd: _emscripten_glIsEnabled, od: _emscripten_glIsFramebuffer, nd: _emscripten_glIsProgram, Sc: _emscripten_glIsQuery, Td: _emscripten_glIsQueryEXT, md: _emscripten_glIsRenderbuffer, _b: _emscripten_glIsSampler, ld: _emscripten_glIsShader, re: _emscripten_glIsSync, Ba: _emscripten_glIsTexture, Tb: _emscripten_glIsTransformFeedback, Kc: _emscripten_glIsVertexArray, Rd: _emscripten_glIsVertexArrayOES, Ca: _emscripten_glLineWidth, Da: _emscripten_glLinkProgram, Pe: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Qe: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Sb: _emscripten_glPauseTransformFeedback, Ea: _emscripten_glPixelStorei, kd: _emscripten_glPolygonOffset, Pb: _emscripten_glProgramBinary, Ob: _emscripten_glProgramParameteri, Zd: _emscripten_glQueryCounterEXT, Se: _emscripten_glReadBuffer, Fa: _emscripten_glReadPixels, jd: _emscripten_glReleaseShaderCompiler, Be: _emscripten_glRenderbufferStorage, xe: _emscripten_glRenderbufferStorageMultisample, Rb: _emscripten_glResumeTransformFeedback, hd: _emscripten_glSampleCoverage, ne: _emscripten_glSamplerParameterf, Zb: _emscripten_glSamplerParameterfv, oe: _emscripten_glSamplerParameteri, pe: _emscripten_glSamplerParameteriv, Ga: _emscripten_glScissor, gd: _emscripten_glShaderBinary, Ha: _emscripten_glShaderSource, Ia: _emscripten_glStencilFunc, Ja: _emscripten_glStencilFuncSeparate, Ka: _emscripten_glStencilMask, La: _emscripten_glStencilMaskSeparate, Ma: _emscripten_glStencilOp, Na: _emscripten_glStencilOpSeparate, Oa: _emscripten_glTexImage2D, Xc: _emscripten_glTexImage3D, Pa: _emscripten_glTexParameterf, Qa: _emscripten_glTexParameterfv, Ra: _emscripten_glTexParameteri, Sa: _emscripten_glTexParameteriv, Me: _emscripten_glTexStorage2D, Nb: _emscripten_glTexStorage3D, Ta: _emscripten_glTexSubImage2D, Wc: _emscripten_glTexSubImage3D, Ec: _emscripten_glTransformFeedbackVaryings, Ua: _emscripten_glUniform1f, Va: _emscripten_glUniform1fv, xf: _emscripten_glUniform1i, yf: _emscripten_glUniform1iv, uc: _emscripten_glUniform1ui, qc: _emscripten_glUniform1uiv, zf: _emscripten_glUniform2f, Af: _emscripten_glUniform2fv, wf: _emscripten_glUniform2i, vf: _emscripten_glUniform2iv, tc: _emscripten_glUniform2ui, pc: _emscripten_glUniform2uiv, uf: _emscripten_glUniform3f, tf: _emscripten_glUniform3fv, sf: _emscripten_glUniform3i, rf: _emscripten_glUniform3iv, sc: _emscripten_glUniform3ui, oc: _emscripten_glUniform3uiv, qf: _emscripten_glUniform4f, pf: _emscripten_glUniform4fv, cf: _emscripten_glUniform4i, df: _emscripten_glUniform4iv, rc: _emscripten_glUniform4ui, nc: _emscripten_glUniform4uiv, dc: _emscripten_glUniformBlockBinding, ef: _emscripten_glUniformMatrix2fv, Rc: _emscripten_glUniformMatrix2x3fv, Pc: _emscripten_glUniformMatrix2x4fv, ff: _emscripten_glUniformMatrix3fv, Qc: _emscripten_glUniformMatrix3x2fv, Nc: _emscripten_glUniformMatrix3x4fv, gf: _emscripten_glUniformMatrix4fv, Oc: _emscripten_glUniformMatrix4x2fv, Mc: _emscripten_glUniformMatrix4x3fv, hf: _emscripten_glUseProgram, fd: _emscripten_glValidateProgram, jf: _emscripten_glVertexAttrib1f, ed: _emscripten_glVertexAttrib1fv, dd: _emscripten_glVertexAttrib2f, kf: _emscripten_glVertexAttrib2fv, cd: _emscripten_glVertexAttrib3f, lf: _emscripten_glVertexAttrib3fv, bd: _emscripten_glVertexAttrib4f, mf: _emscripten_glVertexAttrib4fv, Ne: _emscripten_glVertexAttribDivisor, Nd: _emscripten_glVertexAttribDivisorANGLE, Kb: _emscripten_glVertexAttribDivisorARB, ad: _emscripten_glVertexAttribDivisorEXT, Lb: _emscripten_glVertexAttribDivisorNV, Ac: _emscripten_glVertexAttribI4i, yc: _emscripten_glVertexAttribI4iv, zc: _emscripten_glVertexAttribI4ui, xc: _emscripten_glVertexAttribI4uiv, Oe: _emscripten_glVertexAttribIPointer, nf: _emscripten_glVertexAttribPointer, of: _emscripten_glViewport, se: _emscripten_glWaitSync, Zc: _emscripten_request_animation_frame_loop, rb: _emscripten_resize_heap, Eb: _environ_get, Fb: _environ_sizes_get, Ya: _exit, O: _fd_close, fb: _fd_pread, yb: _fd_read, kb: _fd_seek, M: _fd_write, R: _getentropy, Wa: _glGetIntegerv, P: _glGetString, Xa: _glGetStringi, S: invoke_diii, _a: invoke_fi, ab: invoke_fif, T: invoke_fiii, bb: invoke_fiiiif, o: invoke_i, gb: invoke_if, cb: invoke_iffiiiiiiii, e: invoke_ii, w: invoke_iif, f: invoke_iii, $a: invoke_iiif, g: invoke_iiii, $: invoke_iiiiff, j: invoke_iiiii, ob: invoke_iiiiid, F: invoke_iiiiii, q: invoke_iiiiiii, H: invoke_iiiiiiii, Q: invoke_iiiiiiiiii, Z: invoke_iiiiiiiiiii, L: invoke_iiiiiiiiiiii, eb: invoke_j, mb: invoke_jii, db: invoke_jiiii, n: invoke_v, b: invoke_vi, ca: invoke_vid, C: invoke_vif, E: invoke_viff, B: invoke_vifff, s: invoke_vifffff, Y: invoke_viffffffffffffffffffff, c: invoke_vii, G: invoke_viif, V: invoke_viiff, x: invoke_viifff, _: invoke_viiffff, Dd: invoke_viiffiii, r: invoke_viifii, h: invoke_viii, J: invoke_viiif, ba: invoke_viiifi, u: invoke_viiifif, i: invoke_viiii, k: invoke_viiiii, l: invoke_viiiiii, aa: invoke_viiiiiiff, p: invoke_viiiiiii, D: invoke_viiiiiiii, Za: invoke_viiiiiiiii, A: invoke_viiiiiiiiii, id: invoke_viiiiiiiiiii, K: invoke_viiiiiiiiiiiiiii, lb: invoke_viiji, I: _llvm_eh_typeid_for, nb: _strftime_l };
5135
+ var wasmImports = { v: ___cxa_begin_catch, y: ___cxa_end_catch, a: ___cxa_find_matching_catch_2, l: ___cxa_find_matching_catch_3, C: ___cxa_find_matching_catch_4, V: ___cxa_rethrow, u: ___cxa_throw, pb: ___cxa_uncaught_exceptions, d: ___resumeException, Y: ___syscall_fcntl64, xb: ___syscall_fstat64, tb: ___syscall_getcwd, zb: ___syscall_ioctl, ub: ___syscall_lstat64, vb: ___syscall_newfstatat, X: ___syscall_openat, wb: ___syscall_stat64, Db: __abort_js, Ab: __emscripten_get_now_is_monotonic, Cb: __emscripten_memcpy_js, qb: __emscripten_throw_longjmp, jb: __gmtime_js, hb: __mmap_js, ib: __munmap_js, sb: __tzset_js, Bb: _emscripten_date_now, M: _emscripten_get_now, Bf: _emscripten_glActiveTexture, Cf: _emscripten_glAttachShader, ee: _emscripten_glBeginQuery, _d: _emscripten_glBeginQueryEXT, Jc: _emscripten_glBeginTransformFeedback, Df: _emscripten_glBindAttribLocation, Ef: _emscripten_glBindBuffer, Gc: _emscripten_glBindBufferBase, Hc: _emscripten_glBindBufferRange, Ce: _emscripten_glBindFramebuffer, De: _emscripten_glBindRenderbuffer, ke: _emscripten_glBindSampler, Ff: _emscripten_glBindTexture, Xb: _emscripten_glBindTransformFeedback, Ye: _emscripten_glBindVertexArray, $e: _emscripten_glBindVertexArrayOES, Gf: _emscripten_glBlendColor, Hf: _emscripten_glBlendEquation, Ld: _emscripten_glBlendEquationSeparate, If: _emscripten_glBlendFunc, Kd: _emscripten_glBlendFuncSeparate, we: _emscripten_glBlitFramebuffer, Jf: _emscripten_glBufferData, Kf: _emscripten_glBufferSubData, Ee: _emscripten_glCheckFramebufferStatus, Lf: _emscripten_glClear, kc: _emscripten_glClearBufferfi, lc: _emscripten_glClearBufferfv, nc: _emscripten_glClearBufferiv, mc: _emscripten_glClearBufferuiv, Mf: _emscripten_glClearColor, Jd: _emscripten_glClearDepthf, Nf: _emscripten_glClearStencil, te: _emscripten_glClientWaitSync, Of: _emscripten_glColorMask, Pf: _emscripten_glCompileShader, Qf: _emscripten_glCompressedTexImage2D, Vc: _emscripten_glCompressedTexImage3D, Rf: _emscripten_glCompressedTexSubImage2D, Uc: _emscripten_glCompressedTexSubImage3D, ve: _emscripten_glCopyBufferSubData, Id: _emscripten_glCopyTexImage2D, Sf: _emscripten_glCopyTexSubImage2D, Wc: _emscripten_glCopyTexSubImage3D, Tf: _emscripten_glCreateProgram, Uf: _emscripten_glCreateShader, Vf: _emscripten_glCullFace, Wf: _emscripten_glDeleteBuffers, Fe: _emscripten_glDeleteFramebuffers, Xf: _emscripten_glDeleteProgram, fe: _emscripten_glDeleteQueries, $d: _emscripten_glDeleteQueriesEXT, Ge: _emscripten_glDeleteRenderbuffers, le: _emscripten_glDeleteSamplers, da: _emscripten_glDeleteShader, ue: _emscripten_glDeleteSync, ea: _emscripten_glDeleteTextures, Wb: _emscripten_glDeleteTransformFeedbacks, Ze: _emscripten_glDeleteVertexArrays, af: _emscripten_glDeleteVertexArraysOES, Hd: _emscripten_glDepthFunc, fa: _emscripten_glDepthMask, Gd: _emscripten_glDepthRangef, Fd: _emscripten_glDetachShader, ga: _emscripten_glDisable, ha: _emscripten_glDisableVertexAttribArray, ia: _emscripten_glDrawArrays, We: _emscripten_glDrawArraysInstanced, Pd: _emscripten_glDrawArraysInstancedANGLE, Ib: _emscripten_glDrawArraysInstancedARB, Te: _emscripten_glDrawArraysInstancedBaseInstanceWEBGL, $c: _emscripten_glDrawArraysInstancedEXT, Kb: _emscripten_glDrawArraysInstancedNV, Re: _emscripten_glDrawBuffers, Zc: _emscripten_glDrawBuffersEXT, Qd: _emscripten_glDrawBuffersWEBGL, ja: _emscripten_glDrawElements, Xe: _emscripten_glDrawElementsInstanced, Od: _emscripten_glDrawElementsInstancedANGLE, Gb: _emscripten_glDrawElementsInstancedARB, Ue: _emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Hb: _emscripten_glDrawElementsInstancedEXT, _c: _emscripten_glDrawElementsInstancedNV, Le: _emscripten_glDrawRangeElements, ka: _emscripten_glEnable, la: _emscripten_glEnableVertexAttribArray, ge: _emscripten_glEndQuery, ae: _emscripten_glEndQueryEXT, Ic: _emscripten_glEndTransformFeedback, qe: _emscripten_glFenceSync, ma: _emscripten_glFinish, na: _emscripten_glFlush, He: _emscripten_glFramebufferRenderbuffer, Ie: _emscripten_glFramebufferTexture2D, Mc: _emscripten_glFramebufferTextureLayer, oa: _emscripten_glFrontFace, pa: _emscripten_glGenBuffers, Je: _emscripten_glGenFramebuffers, he: _emscripten_glGenQueries, be: _emscripten_glGenQueriesEXT, Ke: _emscripten_glGenRenderbuffers, me: _emscripten_glGenSamplers, qa: _emscripten_glGenTextures, Vb: _emscripten_glGenTransformFeedbacks, Ve: _emscripten_glGenVertexArrays, bf: _emscripten_glGenVertexArraysOES, ye: _emscripten_glGenerateMipmap, Ed: _emscripten_glGetActiveAttrib, Dd: _emscripten_glGetActiveUniform, fc: _emscripten_glGetActiveUniformBlockName, gc: _emscripten_glGetActiveUniformBlockiv, ic: _emscripten_glGetActiveUniformsiv, Cd: _emscripten_glGetAttachedShaders, Bd: _emscripten_glGetAttribLocation, Ad: _emscripten_glGetBooleanv, ac: _emscripten_glGetBufferParameteri64v, ra: _emscripten_glGetBufferParameteriv, sa: _emscripten_glGetError, ta: _emscripten_glGetFloatv, wc: _emscripten_glGetFragDataLocation, ze: _emscripten_glGetFramebufferAttachmentParameteriv, bc: _emscripten_glGetInteger64i_v, dc: _emscripten_glGetInteger64v, Kc: _emscripten_glGetIntegeri_v, ua: _emscripten_glGetIntegerv, Nb: _emscripten_glGetInternalformativ, Rb: _emscripten_glGetProgramBinary, va: _emscripten_glGetProgramInfoLog, wa: _emscripten_glGetProgramiv, Xd: _emscripten_glGetQueryObjecti64vEXT, Sd: _emscripten_glGetQueryObjectivEXT, Yd: _emscripten_glGetQueryObjectui64vEXT, ie: _emscripten_glGetQueryObjectuiv, ce: _emscripten_glGetQueryObjectuivEXT, je: _emscripten_glGetQueryiv, de: _emscripten_glGetQueryivEXT, Ae: _emscripten_glGetRenderbufferParameteriv, Yb: _emscripten_glGetSamplerParameterfv, Zb: _emscripten_glGetSamplerParameteriv, xa: _emscripten_glGetShaderInfoLog, Ud: _emscripten_glGetShaderPrecisionFormat, zd: _emscripten_glGetShaderSource, ya: _emscripten_glGetShaderiv, za: _emscripten_glGetString, _e: _emscripten_glGetStringi, cc: _emscripten_glGetSynciv, yd: _emscripten_glGetTexParameterfv, xd: _emscripten_glGetTexParameteriv, Ec: _emscripten_glGetTransformFeedbackVarying, hc: _emscripten_glGetUniformBlockIndex, jc: _emscripten_glGetUniformIndices, Aa: _emscripten_glGetUniformLocation, wd: _emscripten_glGetUniformfv, vd: _emscripten_glGetUniformiv, xc: _emscripten_glGetUniformuiv, Dc: _emscripten_glGetVertexAttribIiv, Cc: _emscripten_glGetVertexAttribIuiv, sd: _emscripten_glGetVertexAttribPointerv, ud: _emscripten_glGetVertexAttribfv, td: _emscripten_glGetVertexAttribiv, rd: _emscripten_glHint, Vd: _emscripten_glInvalidateFramebuffer, Wd: _emscripten_glInvalidateSubFramebuffer, qd: _emscripten_glIsBuffer, pd: _emscripten_glIsEnabled, od: _emscripten_glIsFramebuffer, nd: _emscripten_glIsProgram, Tc: _emscripten_glIsQuery, Td: _emscripten_glIsQueryEXT, md: _emscripten_glIsRenderbuffer, $b: _emscripten_glIsSampler, ld: _emscripten_glIsShader, re: _emscripten_glIsSync, Ba: _emscripten_glIsTexture, Ub: _emscripten_glIsTransformFeedback, Lc: _emscripten_glIsVertexArray, Rd: _emscripten_glIsVertexArrayOES, Ca: _emscripten_glLineWidth, Da: _emscripten_glLinkProgram, Pe: _emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL, Qe: _emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL, Tb: _emscripten_glPauseTransformFeedback, Ea: _emscripten_glPixelStorei, kd: _emscripten_glPolygonOffset, Qb: _emscripten_glProgramBinary, Pb: _emscripten_glProgramParameteri, Zd: _emscripten_glQueryCounterEXT, Se: _emscripten_glReadBuffer, Fa: _emscripten_glReadPixels, jd: _emscripten_glReleaseShaderCompiler, Be: _emscripten_glRenderbufferStorage, xe: _emscripten_glRenderbufferStorageMultisample, Sb: _emscripten_glResumeTransformFeedback, hd: _emscripten_glSampleCoverage, ne: _emscripten_glSamplerParameterf, _b: _emscripten_glSamplerParameterfv, oe: _emscripten_glSamplerParameteri, pe: _emscripten_glSamplerParameteriv, Ga: _emscripten_glScissor, gd: _emscripten_glShaderBinary, Ha: _emscripten_glShaderSource, Ia: _emscripten_glStencilFunc, Ja: _emscripten_glStencilFuncSeparate, Ka: _emscripten_glStencilMask, La: _emscripten_glStencilMaskSeparate, Ma: _emscripten_glStencilOp, Na: _emscripten_glStencilOpSeparate, Oa: _emscripten_glTexImage2D, Yc: _emscripten_glTexImage3D, Pa: _emscripten_glTexParameterf, Qa: _emscripten_glTexParameterfv, Ra: _emscripten_glTexParameteri, Sa: _emscripten_glTexParameteriv, Me: _emscripten_glTexStorage2D, Ob: _emscripten_glTexStorage3D, Ta: _emscripten_glTexSubImage2D, Xc: _emscripten_glTexSubImage3D, Fc: _emscripten_glTransformFeedbackVaryings, Ua: _emscripten_glUniform1f, Va: _emscripten_glUniform1fv, xf: _emscripten_glUniform1i, yf: _emscripten_glUniform1iv, vc: _emscripten_glUniform1ui, rc: _emscripten_glUniform1uiv, zf: _emscripten_glUniform2f, Af: _emscripten_glUniform2fv, wf: _emscripten_glUniform2i, vf: _emscripten_glUniform2iv, uc: _emscripten_glUniform2ui, qc: _emscripten_glUniform2uiv, uf: _emscripten_glUniform3f, tf: _emscripten_glUniform3fv, sf: _emscripten_glUniform3i, rf: _emscripten_glUniform3iv, tc: _emscripten_glUniform3ui, pc: _emscripten_glUniform3uiv, qf: _emscripten_glUniform4f, pf: _emscripten_glUniform4fv, cf: _emscripten_glUniform4i, df: _emscripten_glUniform4iv, sc: _emscripten_glUniform4ui, oc: _emscripten_glUniform4uiv, ec: _emscripten_glUniformBlockBinding, ef: _emscripten_glUniformMatrix2fv, Sc: _emscripten_glUniformMatrix2x3fv, Qc: _emscripten_glUniformMatrix2x4fv, ff: _emscripten_glUniformMatrix3fv, Rc: _emscripten_glUniformMatrix3x2fv, Oc: _emscripten_glUniformMatrix3x4fv, gf: _emscripten_glUniformMatrix4fv, Pc: _emscripten_glUniformMatrix4x2fv, Nc: _emscripten_glUniformMatrix4x3fv, hf: _emscripten_glUseProgram, fd: _emscripten_glValidateProgram, jf: _emscripten_glVertexAttrib1f, ed: _emscripten_glVertexAttrib1fv, dd: _emscripten_glVertexAttrib2f, kf: _emscripten_glVertexAttrib2fv, cd: _emscripten_glVertexAttrib3f, lf: _emscripten_glVertexAttrib3fv, bd: _emscripten_glVertexAttrib4f, mf: _emscripten_glVertexAttrib4fv, Ne: _emscripten_glVertexAttribDivisor, Md: _emscripten_glVertexAttribDivisorANGLE, Lb: _emscripten_glVertexAttribDivisorARB, ad: _emscripten_glVertexAttribDivisorEXT, Mb: _emscripten_glVertexAttribDivisorNV, Bc: _emscripten_glVertexAttribI4i, zc: _emscripten_glVertexAttribI4iv, Ac: _emscripten_glVertexAttribI4ui, yc: _emscripten_glVertexAttribI4uiv, Oe: _emscripten_glVertexAttribIPointer, nf: _emscripten_glVertexAttribPointer, of: _emscripten_glViewport, se: _emscripten_glWaitSync, bb: _emscripten_request_animation_frame_loop, rb: _emscripten_resize_heap, Eb: _environ_get, Fb: _environ_sizes_get, Ya: _exit, O: _fd_close, gb: _fd_pread, yb: _fd_read, kb: _fd_seek, L: _fd_write, R: _getentropy, Wa: _glGetIntegerv, P: _glGetString, Xa: _glGetStringi, T: invoke_diii, Jb: invoke_fi, _a: invoke_fif, U: invoke_fiii, $a: invoke_fiiiif, o: invoke_i, id: invoke_if, ab: invoke_iffiiiiiiii, e: invoke_ii, w: invoke_iif, f: invoke_iii, Nd: invoke_iiif, g: invoke_iiii, _: invoke_iiiiff, j: invoke_iiiii, ob: invoke_iiiiid, F: invoke_iiiiii, q: invoke_iiiiiii, H: invoke_iiiiiiii, Q: invoke_iiiiiiiiii, $: invoke_iiiiiiiiiii, K: invoke_iiiiiiiiiiii, fb: invoke_j, mb: invoke_jii, eb: invoke_jiiii, n: invoke_v, b: invoke_vi, ca: invoke_vid, B: invoke_vif, E: invoke_viff, A: invoke_vifff, s: invoke_vifffff, ba: invoke_viffffffffffffffffffff, c: invoke_vii, G: invoke_viif, W: invoke_viiff, x: invoke_viifff, Z: invoke_viiffff, db: invoke_viiffiii, r: invoke_viifii, h: invoke_viii, I: invoke_viiif, aa: invoke_viiifi, t: invoke_viiifif, i: invoke_viiii, m: invoke_viiiii, k: invoke_viiiiii, S: invoke_viiiiiiff, p: invoke_viiiiiii, D: invoke_viiiiiiii, Za: invoke_viiiiiiiii, z: invoke_viiiiiiiiii, cb: invoke_viiiiiiiiiii, J: invoke_viiiiiiiiiiiiiii, lb: invoke_viiji, N: _llvm_eh_typeid_for, nb: _strftime_l };
5108
5136
  var wasmExports = createWasm();
5109
5137
  var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["Zf"])();
5110
5138
  var _allocate = Module["_allocate"] = (a0) => (_allocate = Module["_allocate"] = wasmExports["$f"])(a0);
@@ -5117,43 +5145,44 @@ var require_grida_canvas_wasm = __commonJS({
5117
5145
  var _load_dummy_scene = Module["_load_dummy_scene"] = (a0) => (_load_dummy_scene = Module["_load_dummy_scene"] = wasmExports["gg"])(a0);
5118
5146
  var _load_benchmark_scene = Module["_load_benchmark_scene"] = (a0, a1, a2) => (_load_benchmark_scene = Module["_load_benchmark_scene"] = wasmExports["hg"])(a0, a1, a2);
5119
5147
  var _pointer_move = Module["_pointer_move"] = (a0, a1, a2) => (_pointer_move = Module["_pointer_move"] = wasmExports["ig"])(a0, a1, a2);
5120
- var _command = Module["_command"] = (a0, a1, a2, a3) => (_command = Module["_command"] = wasmExports["jg"])(a0, a1, a2, a3);
5121
- var _set_main_camera_transform = Module["_set_main_camera_transform"] = (a0, a1, a2, a3, a4, a5, a6) => (_set_main_camera_transform = Module["_set_main_camera_transform"] = wasmExports["kg"])(a0, a1, a2, a3, a4, a5, a6);
5122
- var _get_node_id_from_point = Module["_get_node_id_from_point"] = (a0, a1, a2) => (_get_node_id_from_point = Module["_get_node_id_from_point"] = wasmExports["lg"])(a0, a1, a2);
5123
- var _get_node_ids_from_point = Module["_get_node_ids_from_point"] = (a0, a1, a2) => (_get_node_ids_from_point = Module["_get_node_ids_from_point"] = wasmExports["mg"])(a0, a1, a2);
5124
- var _get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = (a0, a1, a2, a3, a4) => (_get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = wasmExports["ng"])(a0, a1, a2, a3, a4);
5125
- var _get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = (a0, a1, a2) => (_get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = wasmExports["og"])(a0, a1, a2);
5126
- var _export_node_as = Module["_export_node_as"] = (a0, a1, a2, a3, a4) => (_export_node_as = Module["_export_node_as"] = wasmExports["pg"])(a0, a1, a2, a3, a4);
5127
- var _set_debug = Module["_set_debug"] = (a0, a1) => (_set_debug = Module["_set_debug"] = wasmExports["qg"])(a0, a1);
5128
- var _toggle_debug = Module["_toggle_debug"] = (a0) => (_toggle_debug = Module["_toggle_debug"] = wasmExports["rg"])(a0);
5129
- var _set_verbose = Module["_set_verbose"] = (a0, a1) => (_set_verbose = Module["_set_verbose"] = wasmExports["sg"])(a0, a1);
5130
- var _devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = (a0, a1) => (_devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = wasmExports["tg"])(a0, a1);
5131
- var _highlight_strokes = Module["_highlight_strokes"] = (a0, a1, a2) => (_highlight_strokes = Module["_highlight_strokes"] = wasmExports["ug"])(a0, a1, a2);
5132
- var _devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = (a0, a1) => (_devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = wasmExports["vg"])(a0, a1);
5133
- var _runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = (a0, a1) => (_runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = wasmExports["wg"])(a0, a1);
5134
- var _devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = (a0, a1) => (_devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = wasmExports["xg"])(a0, a1);
5135
- var _devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = (a0, a1) => (_devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = wasmExports["yg"])(a0, a1);
5136
- var _devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = (a0, a1) => (_devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = wasmExports["zg"])(a0, a1);
5137
- var _main = Module["_main"] = (a0, a1) => (_main = Module["_main"] = wasmExports["Ag"])(a0, a1);
5138
- var _malloc = (a0) => (_malloc = wasmExports["Bg"])(a0);
5148
+ var _register_font = Module["_register_font"] = (a0, a1, a2, a3, a4) => (_register_font = Module["_register_font"] = wasmExports["jg"])(a0, a1, a2, a3, a4);
5149
+ var _command = Module["_command"] = (a0, a1, a2, a3) => (_command = Module["_command"] = wasmExports["kg"])(a0, a1, a2, a3);
5150
+ var _set_main_camera_transform = Module["_set_main_camera_transform"] = (a0, a1, a2, a3, a4, a5, a6) => (_set_main_camera_transform = Module["_set_main_camera_transform"] = wasmExports["lg"])(a0, a1, a2, a3, a4, a5, a6);
5151
+ var _get_node_id_from_point = Module["_get_node_id_from_point"] = (a0, a1, a2) => (_get_node_id_from_point = Module["_get_node_id_from_point"] = wasmExports["mg"])(a0, a1, a2);
5152
+ var _get_node_ids_from_point = Module["_get_node_ids_from_point"] = (a0, a1, a2) => (_get_node_ids_from_point = Module["_get_node_ids_from_point"] = wasmExports["ng"])(a0, a1, a2);
5153
+ var _get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = (a0, a1, a2, a3, a4) => (_get_node_ids_from_envelope = Module["_get_node_ids_from_envelope"] = wasmExports["og"])(a0, a1, a2, a3, a4);
5154
+ var _get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = (a0, a1, a2) => (_get_node_absolute_bounding_box = Module["_get_node_absolute_bounding_box"] = wasmExports["pg"])(a0, a1, a2);
5155
+ var _export_node_as = Module["_export_node_as"] = (a0, a1, a2, a3, a4) => (_export_node_as = Module["_export_node_as"] = wasmExports["qg"])(a0, a1, a2, a3, a4);
5156
+ var _set_debug = Module["_set_debug"] = (a0, a1) => (_set_debug = Module["_set_debug"] = wasmExports["rg"])(a0, a1);
5157
+ var _toggle_debug = Module["_toggle_debug"] = (a0) => (_toggle_debug = Module["_toggle_debug"] = wasmExports["sg"])(a0);
5158
+ var _set_verbose = Module["_set_verbose"] = (a0, a1) => (_set_verbose = Module["_set_verbose"] = wasmExports["tg"])(a0, a1);
5159
+ var _devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = (a0, a1) => (_devtools_rendering_set_show_ruler = Module["_devtools_rendering_set_show_ruler"] = wasmExports["ug"])(a0, a1);
5160
+ var _highlight_strokes = Module["_highlight_strokes"] = (a0, a1, a2) => (_highlight_strokes = Module["_highlight_strokes"] = wasmExports["vg"])(a0, a1, a2);
5161
+ var _devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = (a0, a1) => (_devtools_rendering_set_show_tiles = Module["_devtools_rendering_set_show_tiles"] = wasmExports["wg"])(a0, a1);
5162
+ var _runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = (a0, a1) => (_runtime_renderer_set_cache_tile = Module["_runtime_renderer_set_cache_tile"] = wasmExports["xg"])(a0, a1);
5163
+ var _devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = (a0, a1) => (_devtools_rendering_set_show_fps_meter = Module["_devtools_rendering_set_show_fps_meter"] = wasmExports["yg"])(a0, a1);
5164
+ var _devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = (a0, a1) => (_devtools_rendering_set_show_stats = Module["_devtools_rendering_set_show_stats"] = wasmExports["zg"])(a0, a1);
5165
+ var _devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = (a0, a1) => (_devtools_rendering_set_show_hit_testing = Module["_devtools_rendering_set_show_hit_testing"] = wasmExports["Ag"])(a0, a1);
5166
+ var _main = Module["_main"] = (a0, a1) => (_main = Module["_main"] = wasmExports["Bg"])(a0, a1);
5167
+ var _malloc = (a0) => (_malloc = wasmExports["Cg"])(a0);
5139
5168
  var _htonl = (a0) => (_htonl = wasmExports["htonl"])(a0);
5140
5169
  var _htons = (a0) => (_htons = wasmExports["htons"])(a0);
5141
- var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports["Cg"])(a0, a1);
5170
+ var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports["Dg"])(a0, a1);
5142
5171
  var _ntohs = (a0) => (_ntohs = wasmExports["ntohs"])(a0);
5143
- var _setThrew = (a0, a1) => (_setThrew = wasmExports["Dg"])(a0, a1);
5144
- var __emscripten_tempret_set = (a0) => (__emscripten_tempret_set = wasmExports["Eg"])(a0);
5145
- var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports["Fg"])(a0);
5146
- var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports["Gg"])(a0);
5147
- var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["Hg"])();
5172
+ var _setThrew = (a0, a1) => (_setThrew = wasmExports["Eg"])(a0, a1);
5173
+ var __emscripten_tempret_set = (a0) => (__emscripten_tempret_set = wasmExports["Fg"])(a0);
5174
+ var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports["Gg"])(a0);
5175
+ var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports["Hg"])(a0);
5176
+ var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["Ig"])();
5148
5177
  var ___cxa_free_exception = (a0) => (___cxa_free_exception = wasmExports["__cxa_free_exception"])(a0);
5149
- var ___cxa_decrement_exception_refcount = (a0) => (___cxa_decrement_exception_refcount = wasmExports["Ig"])(a0);
5150
- var ___cxa_increment_exception_refcount = (a0) => (___cxa_increment_exception_refcount = wasmExports["Jg"])(a0);
5151
- var ___cxa_can_catch = (a0, a1, a2) => (___cxa_can_catch = wasmExports["Kg"])(a0, a1, a2);
5152
- var ___cxa_is_pointer_type = (a0) => (___cxa_is_pointer_type = wasmExports["Lg"])(a0);
5153
- var dynCall_jii = Module["dynCall_jii"] = (a0, a1, a2) => (dynCall_jii = Module["dynCall_jii"] = wasmExports["Mg"])(a0, a1, a2);
5154
- var dynCall_viiji = Module["dynCall_viiji"] = (a0, a1, a2, a3, a4, a5) => (dynCall_viiji = Module["dynCall_viiji"] = wasmExports["Ng"])(a0, a1, a2, a3, a4, a5);
5155
- var dynCall_j = Module["dynCall_j"] = (a0) => (dynCall_j = Module["dynCall_j"] = wasmExports["Og"])(a0);
5156
- var dynCall_jiiii = Module["dynCall_jiiii"] = (a0, a1, a2, a3, a4) => (dynCall_jiiii = Module["dynCall_jiiii"] = wasmExports["Pg"])(a0, a1, a2, a3, a4);
5178
+ var ___cxa_decrement_exception_refcount = (a0) => (___cxa_decrement_exception_refcount = wasmExports["Jg"])(a0);
5179
+ var ___cxa_increment_exception_refcount = (a0) => (___cxa_increment_exception_refcount = wasmExports["Kg"])(a0);
5180
+ var ___cxa_can_catch = (a0, a1, a2) => (___cxa_can_catch = wasmExports["Lg"])(a0, a1, a2);
5181
+ var ___cxa_is_pointer_type = (a0) => (___cxa_is_pointer_type = wasmExports["Mg"])(a0);
5182
+ var dynCall_jii = Module["dynCall_jii"] = (a0, a1, a2) => (dynCall_jii = Module["dynCall_jii"] = wasmExports["Ng"])(a0, a1, a2);
5183
+ var dynCall_viiji = Module["dynCall_viiji"] = (a0, a1, a2, a3, a4, a5) => (dynCall_viiji = Module["dynCall_viiji"] = wasmExports["Og"])(a0, a1, a2, a3, a4, a5);
5184
+ var dynCall_j = Module["dynCall_j"] = (a0) => (dynCall_j = Module["dynCall_j"] = wasmExports["Pg"])(a0);
5185
+ var dynCall_jiiii = Module["dynCall_jiiii"] = (a0, a1, a2, a3, a4) => (dynCall_jiiii = Module["dynCall_jiiii"] = wasmExports["Qg"])(a0, a1, a2, a3, a4);
5157
5186
  function invoke_iiii(index, a1, a2, a3) {
5158
5187
  var sp = stackSave();
5159
5188
  try {
@@ -5184,50 +5213,50 @@ var require_grida_canvas_wasm = __commonJS({
5184
5213
  _setThrew(1, 0);
5185
5214
  }
5186
5215
  }
5187
- function invoke_vii(index, a1, a2) {
5216
+ function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {
5188
5217
  var sp = stackSave();
5189
5218
  try {
5190
- getWasmTableEntry(index)(a1, a2);
5219
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5191
5220
  } catch (e) {
5192
5221
  stackRestore(sp);
5193
5222
  if (e !== e + 0) throw e;
5194
5223
  _setThrew(1, 0);
5195
5224
  }
5196
5225
  }
5197
- function invoke_viii(index, a1, a2, a3) {
5226
+ function invoke_vii(index, a1, a2) {
5198
5227
  var sp = stackSave();
5199
5228
  try {
5200
- getWasmTableEntry(index)(a1, a2, a3);
5229
+ getWasmTableEntry(index)(a1, a2);
5201
5230
  } catch (e) {
5202
5231
  stackRestore(sp);
5203
5232
  if (e !== e + 0) throw e;
5204
5233
  _setThrew(1, 0);
5205
5234
  }
5206
5235
  }
5207
- function invoke_ii(index, a1) {
5236
+ function invoke_iii(index, a1, a2) {
5208
5237
  var sp = stackSave();
5209
5238
  try {
5210
- return getWasmTableEntry(index)(a1);
5239
+ return getWasmTableEntry(index)(a1, a2);
5211
5240
  } catch (e) {
5212
5241
  stackRestore(sp);
5213
5242
  if (e !== e + 0) throw e;
5214
5243
  _setThrew(1, 0);
5215
5244
  }
5216
5245
  }
5217
- function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {
5246
+ function invoke_ii(index, a1) {
5218
5247
  var sp = stackSave();
5219
5248
  try {
5220
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5249
+ return getWasmTableEntry(index)(a1);
5221
5250
  } catch (e) {
5222
5251
  stackRestore(sp);
5223
5252
  if (e !== e + 0) throw e;
5224
5253
  _setThrew(1, 0);
5225
5254
  }
5226
5255
  }
5227
- function invoke_iii(index, a1, a2) {
5256
+ function invoke_viii(index, a1, a2, a3) {
5228
5257
  var sp = stackSave();
5229
5258
  try {
5230
- return getWasmTableEntry(index)(a1, a2);
5259
+ getWasmTableEntry(index)(a1, a2, a3);
5231
5260
  } catch (e) {
5232
5261
  stackRestore(sp);
5233
5262
  if (e !== e + 0) throw e;
@@ -5284,70 +5313,70 @@ var require_grida_canvas_wasm = __commonJS({
5284
5313
  _setThrew(1, 0);
5285
5314
  }
5286
5315
  }
5287
- function invoke_vifffff(index, a1, a2, a3, a4, a5, a6) {
5316
+ function invoke_i(index) {
5288
5317
  var sp = stackSave();
5289
5318
  try {
5290
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5319
+ return getWasmTableEntry(index)();
5291
5320
  } catch (e) {
5292
5321
  stackRestore(sp);
5293
5322
  if (e !== e + 0) throw e;
5294
5323
  _setThrew(1, 0);
5295
5324
  }
5296
5325
  }
5297
- function invoke_viiifif(index, a1, a2, a3, a4, a5, a6) {
5326
+ function invoke_v(index) {
5298
5327
  var sp = stackSave();
5299
5328
  try {
5300
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5329
+ getWasmTableEntry(index)();
5301
5330
  } catch (e) {
5302
5331
  stackRestore(sp);
5303
5332
  if (e !== e + 0) throw e;
5304
5333
  _setThrew(1, 0);
5305
5334
  }
5306
5335
  }
5307
- function invoke_viif(index, a1, a2, a3) {
5336
+ function invoke_iif(index, a1, a2) {
5308
5337
  var sp = stackSave();
5309
5338
  try {
5310
- getWasmTableEntry(index)(a1, a2, a3);
5339
+ return getWasmTableEntry(index)(a1, a2);
5311
5340
  } catch (e) {
5312
5341
  stackRestore(sp);
5313
5342
  if (e !== e + 0) throw e;
5314
5343
  _setThrew(1, 0);
5315
5344
  }
5316
5345
  }
5317
- function invoke_i(index) {
5346
+ function invoke_viffffffffffffffffffff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {
5318
5347
  var sp = stackSave();
5319
5348
  try {
5320
- return getWasmTableEntry(index)();
5349
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
5321
5350
  } catch (e) {
5322
5351
  stackRestore(sp);
5323
5352
  if (e !== e + 0) throw e;
5324
5353
  _setThrew(1, 0);
5325
5354
  }
5326
5355
  }
5327
- function invoke_iif(index, a1, a2) {
5356
+ function invoke_viif(index, a1, a2, a3) {
5328
5357
  var sp = stackSave();
5329
5358
  try {
5330
- return getWasmTableEntry(index)(a1, a2);
5359
+ getWasmTableEntry(index)(a1, a2, a3);
5331
5360
  } catch (e) {
5332
5361
  stackRestore(sp);
5333
5362
  if (e !== e + 0) throw e;
5334
5363
  _setThrew(1, 0);
5335
5364
  }
5336
5365
  }
5337
- function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5366
+ function invoke_iiif(index, a1, a2, a3) {
5338
5367
  var sp = stackSave();
5339
5368
  try {
5340
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5369
+ return getWasmTableEntry(index)(a1, a2, a3);
5341
5370
  } catch (e) {
5342
5371
  stackRestore(sp);
5343
5372
  if (e !== e + 0) throw e;
5344
5373
  _setThrew(1, 0);
5345
5374
  }
5346
5375
  }
5347
- function invoke_v(index) {
5376
+ function invoke_viiifi(index, a1, a2, a3, a4, a5) {
5348
5377
  var sp = stackSave();
5349
5378
  try {
5350
- getWasmTableEntry(index)();
5379
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5351
5380
  } catch (e) {
5352
5381
  stackRestore(sp);
5353
5382
  if (e !== e + 0) throw e;
@@ -5364,30 +5393,30 @@ var require_grida_canvas_wasm = __commonJS({
5364
5393
  _setThrew(1, 0);
5365
5394
  }
5366
5395
  }
5367
- function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5396
+ function invoke_if(index, a1) {
5368
5397
  var sp = stackSave();
5369
5398
  try {
5370
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5399
+ return getWasmTableEntry(index)(a1);
5371
5400
  } catch (e) {
5372
5401
  stackRestore(sp);
5373
5402
  if (e !== e + 0) throw e;
5374
5403
  _setThrew(1, 0);
5375
5404
  }
5376
5405
  }
5377
- function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5406
+ function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5378
5407
  var sp = stackSave();
5379
5408
  try {
5380
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5409
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5381
5410
  } catch (e) {
5382
5411
  stackRestore(sp);
5383
5412
  if (e !== e + 0) throw e;
5384
5413
  _setThrew(1, 0);
5385
5414
  }
5386
5415
  }
5387
- function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5416
+ function invoke_vif(index, a1, a2) {
5388
5417
  var sp = stackSave();
5389
5418
  try {
5390
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5419
+ getWasmTableEntry(index)(a1, a2);
5391
5420
  } catch (e) {
5392
5421
  stackRestore(sp);
5393
5422
  if (e !== e + 0) throw e;
@@ -5424,30 +5453,30 @@ var require_grida_canvas_wasm = __commonJS({
5424
5453
  _setThrew(1, 0);
5425
5454
  }
5426
5455
  }
5427
- function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5456
+ function invoke_vifff(index, a1, a2, a3, a4) {
5428
5457
  var sp = stackSave();
5429
5458
  try {
5430
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5459
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5431
5460
  } catch (e) {
5432
5461
  stackRestore(sp);
5433
5462
  if (e !== e + 0) throw e;
5434
5463
  _setThrew(1, 0);
5435
5464
  }
5436
5465
  }
5437
- function invoke_vif(index, a1, a2) {
5466
+ function invoke_viifff(index, a1, a2, a3, a4, a5) {
5438
5467
  var sp = stackSave();
5439
5468
  try {
5440
- getWasmTableEntry(index)(a1, a2);
5469
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5441
5470
  } catch (e) {
5442
5471
  stackRestore(sp);
5443
5472
  if (e !== e + 0) throw e;
5444
5473
  _setThrew(1, 0);
5445
5474
  }
5446
5475
  }
5447
- function invoke_viffffffffffffffffffff(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {
5476
+ function invoke_fi(index, a1) {
5448
5477
  var sp = stackSave();
5449
5478
  try {
5450
- getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21);
5479
+ return getWasmTableEntry(index)(a1);
5451
5480
  } catch (e) {
5452
5481
  stackRestore(sp);
5453
5482
  if (e !== e + 0) throw e;
@@ -5464,7 +5493,7 @@ var require_grida_canvas_wasm = __commonJS({
5464
5493
  _setThrew(1, 0);
5465
5494
  }
5466
5495
  }
5467
- function invoke_vifff(index, a1, a2, a3, a4) {
5496
+ function invoke_viiff(index, a1, a2, a3, a4) {
5468
5497
  var sp = stackSave();
5469
5498
  try {
5470
5499
  getWasmTableEntry(index)(a1, a2, a3, a4);
@@ -5474,90 +5503,90 @@ var require_grida_canvas_wasm = __commonJS({
5474
5503
  _setThrew(1, 0);
5475
5504
  }
5476
5505
  }
5477
- function invoke_viiff(index, a1, a2, a3, a4) {
5506
+ function invoke_vifffff(index, a1, a2, a3, a4, a5, a6) {
5478
5507
  var sp = stackSave();
5479
5508
  try {
5480
- getWasmTableEntry(index)(a1, a2, a3, a4);
5509
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5481
5510
  } catch (e) {
5482
5511
  stackRestore(sp);
5483
5512
  if (e !== e + 0) throw e;
5484
5513
  _setThrew(1, 0);
5485
5514
  }
5486
5515
  }
5487
- function invoke_viifff(index, a1, a2, a3, a4, a5) {
5516
+ function invoke_viiifif(index, a1, a2, a3, a4, a5, a6) {
5488
5517
  var sp = stackSave();
5489
5518
  try {
5490
- getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5519
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6);
5491
5520
  } catch (e) {
5492
5521
  stackRestore(sp);
5493
5522
  if (e !== e + 0) throw e;
5494
5523
  _setThrew(1, 0);
5495
5524
  }
5496
5525
  }
5497
- function invoke_if(index, a1) {
5526
+ function invoke_viiffiii(index, a1, a2, a3, a4, a5, a6, a7) {
5498
5527
  var sp = stackSave();
5499
5528
  try {
5500
- return getWasmTableEntry(index)(a1);
5529
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7);
5501
5530
  } catch (e) {
5502
5531
  stackRestore(sp);
5503
5532
  if (e !== e + 0) throw e;
5504
5533
  _setThrew(1, 0);
5505
5534
  }
5506
5535
  }
5507
- function invoke_viiif(index, a1, a2, a3, a4) {
5536
+ function invoke_viiiiiiff(index, a1, a2, a3, a4, a5, a6, a7, a8) {
5508
5537
  var sp = stackSave();
5509
5538
  try {
5510
- getWasmTableEntry(index)(a1, a2, a3, a4);
5539
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8);
5511
5540
  } catch (e) {
5512
5541
  stackRestore(sp);
5513
5542
  if (e !== e + 0) throw e;
5514
5543
  _setThrew(1, 0);
5515
5544
  }
5516
5545
  }
5517
- function invoke_iffiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5546
+ function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
5518
5547
  var sp = stackSave();
5519
5548
  try {
5520
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5549
+ getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
5521
5550
  } catch (e) {
5522
5551
  stackRestore(sp);
5523
5552
  if (e !== e + 0) throw e;
5524
5553
  _setThrew(1, 0);
5525
5554
  }
5526
5555
  }
5527
- function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5556
+ function invoke_viiif(index, a1, a2, a3, a4) {
5528
5557
  var sp = stackSave();
5529
5558
  try {
5530
- return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5559
+ getWasmTableEntry(index)(a1, a2, a3, a4);
5531
5560
  } catch (e) {
5532
5561
  stackRestore(sp);
5533
5562
  if (e !== e + 0) throw e;
5534
5563
  _setThrew(1, 0);
5535
5564
  }
5536
5565
  }
5537
- function invoke_fif(index, a1, a2) {
5566
+ function invoke_iffiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
5538
5567
  var sp = stackSave();
5539
5568
  try {
5540
- return getWasmTableEntry(index)(a1, a2);
5569
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
5541
5570
  } catch (e) {
5542
5571
  stackRestore(sp);
5543
5572
  if (e !== e + 0) throw e;
5544
5573
  _setThrew(1, 0);
5545
5574
  }
5546
5575
  }
5547
- function invoke_iiif(index, a1, a2, a3) {
5576
+ function invoke_fiiiif(index, a1, a2, a3, a4, a5) {
5548
5577
  var sp = stackSave();
5549
5578
  try {
5550
- return getWasmTableEntry(index)(a1, a2, a3);
5579
+ return getWasmTableEntry(index)(a1, a2, a3, a4, a5);
5551
5580
  } catch (e) {
5552
5581
  stackRestore(sp);
5553
5582
  if (e !== e + 0) throw e;
5554
5583
  _setThrew(1, 0);
5555
5584
  }
5556
5585
  }
5557
- function invoke_fi(index, a1) {
5586
+ function invoke_fif(index, a1, a2) {
5558
5587
  var sp = stackSave();
5559
5588
  try {
5560
- return getWasmTableEntry(index)(a1);
5589
+ return getWasmTableEntry(index)(a1, a2);
5561
5590
  } catch (e) {
5562
5591
  stackRestore(sp);
5563
5592
  if (e !== e + 0) throw e;
@@ -5794,7 +5823,7 @@ module.exports = __toCommonJS(index_exports);
5794
5823
  var import_grida_canvas_wasm = __toESM(require_grida_canvas_wasm());
5795
5824
 
5796
5825
  // package.json
5797
- var version = "0.0.39";
5826
+ var version = "0.0.40";
5798
5827
 
5799
5828
  // lib/index.ts
5800
5829
  async function init(opts) {
@@ -5896,6 +5925,24 @@ var Grida2D = class {
5896
5925
  loadBenchmarkScene(cols, rows) {
5897
5926
  this.module._load_benchmark_scene(this.appptr, cols, rows);
5898
5927
  }
5928
+ /**
5929
+ * Register a font with the renderer.
5930
+ *
5931
+ * The wasm module cannot fetch font files directly from the network, so the
5932
+ * host environment must fetch the font bytes and pass them here.
5933
+ *
5934
+ * @param family - CSS font-family name for the typeface.
5935
+ * @param data - Raw font file bytes (e.g. TTF/OTF).
5936
+ */
5937
+ registerFont(family, data) {
5938
+ const [fptr, flen] = this._alloc_string(family);
5939
+ const len = data.length;
5940
+ const ptr = this.module._allocate(len);
5941
+ this.module.HEAPU8.set(data, ptr);
5942
+ this.module._register_font(this.appptr, fptr, flen - 1, ptr, len);
5943
+ this.module._deallocate(fptr, flen);
5944
+ this.module._deallocate(ptr, len);
5945
+ }
5899
5946
  /**
5900
5947
  * Tick the application clock.
5901
5948
  * bind this to requestAnimationFrame loop or similar