textmode.js 0.3.0 → 0.3.1

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,15 +1,15 @@
1
- var ct = Object.defineProperty;
2
- var lt = (h, t, e) => t in h ? ct(h, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : h[t] = e;
3
- var a = (h, t, e) => lt(h, typeof t != "symbol" ? t + "" : t, e);
4
- class U extends Error {
1
+ var ft = Object.defineProperty;
2
+ var dt = (a, t, e) => t in a ? ft(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e;
3
+ var h = (a, t, e) => dt(a, typeof t != "symbol" ? t + "" : t, e);
4
+ class F extends Error {
5
5
  constructor(t, e = {}) {
6
- super(U.i(t, e)), this.name = "TextmodeError";
6
+ super(F.i(t, e)), this.name = "TextmodeError";
7
7
  }
8
8
  static i(t, e) {
9
9
  return `${t}${e && Object.keys(e).length > 0 ? `
10
10
 
11
11
  📋 Context:` + Object.entries(e).map(([i, s]) => `
12
- - ${i}: ${U.o(s)}`).join("") : ""}
12
+ - ${i}: ${F.o(s)}`).join("") : ""}
13
13
 
14
14
  ${"↓".repeat(24)}
15
15
  `;
@@ -19,94 +19,94 @@ ${"↓".repeat(24)}
19
19
  if (t === void 0) return "undefined";
20
20
  if (typeof t == "string") return `"${t}"`;
21
21
  if (typeof t == "number" || typeof t == "boolean") return t + "";
22
- if (Array.isArray(t)) return t.length === 0 ? "[]" : t.length <= 5 ? `[${t.map((e) => U.o(e)).join(", ")}]` : `[${t.slice(0, 3).map((e) => U.o(e)).join(", ")}, ... +${t.length - 3} more]`;
22
+ if (Array.isArray(t)) return t.length === 0 ? "[]" : t.length <= 5 ? `[${t.map((e) => F.o(e)).join(", ")}]` : `[${t.slice(0, 3).map((e) => F.o(e)).join(", ")}, ... +${t.length - 3} more]`;
23
23
  if (typeof t == "object") {
24
24
  const e = Object.keys(t);
25
- return e.length === 0 ? "{}" : e.length <= 3 ? `{ ${e.map((i) => `${i}: ${U.o(t[i])}`).join(", ")} }` : `{ ${e.slice(0, 2).map((i) => `${i}: ${U.o(t[i])}`).join(", ")}, ... +${e.length - 2} more }`;
25
+ return e.length === 0 ? "{}" : e.length <= 3 ? `{ ${e.map((i) => `${i}: ${F.o(t[i])}`).join(", ")} }` : `{ ${e.slice(0, 2).map((i) => `${i}: ${F.o(t[i])}`).join(", ")}, ... +${e.length - 2} more }`;
26
26
  }
27
27
  return t + "";
28
28
  }
29
29
  }
30
- var ut = ((h) => (h[h.SILENT = 0] = "SILENT", h[h.WARNING = 1] = "WARNING", h[h.ERROR = 2] = "ERROR", h[h.THROW = 3] = "THROW", h))(ut || {});
31
- const D = class D {
30
+ var gt = ((a) => (a[a.SILENT = 0] = "SILENT", a[a.WARNING = 1] = "WARNING", a[a.ERROR = 2] = "ERROR", a[a.THROW = 3] = "THROW", a))(gt || {});
31
+ const G = class G {
32
32
  constructor() {
33
- a(this, "u", { globalLevel: 3 });
33
+ h(this, "u", { globalLevel: 3 });
34
34
  }
35
- static m() {
36
- return D.l || (D.l = new D()), D.l;
35
+ static _() {
36
+ return G.l || (G.l = new G()), G.l;
37
37
  }
38
- _(t, e) {
38
+ m(t, e) {
39
39
  const i = "%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.", s = "color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";
40
40
  switch (this.u.globalLevel) {
41
41
  case 0:
42
42
  return !1;
43
43
  case 1:
44
- return console.group(i, s), console.warn(U.i(t, e)), console.groupEnd(), !1;
44
+ return console.group(i, s), console.warn(F.i(t, e)), console.groupEnd(), !1;
45
45
  case 2:
46
- return console.group(i, s), console.error(U.i(t, e)), console.groupEnd(), !1;
46
+ return console.group(i, s), console.error(F.i(t, e)), console.groupEnd(), !1;
47
47
  default:
48
- throw new U(t, e);
48
+ throw new F(t, e);
49
49
  }
50
50
  }
51
51
  v(t, e, i) {
52
- return !!t || (this._(e, i), !1);
52
+ return !!t || (this.m(e, i), !1);
53
53
  }
54
- A(t) {
54
+ C(t) {
55
55
  this.u.globalLevel = t;
56
56
  }
57
57
  };
58
- a(D, "l", null);
59
- let K = D;
60
- const G = K.m(), ot = /* @__PURE__ */ new WeakMap();
61
- function H(h, t) {
62
- ot.set(h, t);
58
+ h(G, "l", null);
59
+ let K = G;
60
+ const N = K._(), ot = /* @__PURE__ */ new WeakMap();
61
+ function k(a, t) {
62
+ ot.set(a, t);
63
63
  }
64
- function k(h) {
65
- return ot.get(h);
64
+ function H(a) {
65
+ return ot.get(a);
66
66
  }
67
67
  class ht {
68
68
  constructor() {
69
- a(this, "C", 1);
70
- a(this, "$", 0);
71
- a(this, "U", 0);
72
- a(this, "M", 0);
73
- a(this, "F", [0, 0, 0]);
74
- a(this, "R", [1, 1, 1, 1]);
75
- a(this, "P", [0, 0, 0, 1]);
76
- a(this, "S", !1);
77
- a(this, "G", !1);
78
- a(this, "D", !1);
79
- a(this, "L", [0, 0]);
80
- a(this, "O", [0, 0, 0, 1]);
81
- a(this, "k", []);
69
+ h(this, "A", 1);
70
+ h(this, "M", 0);
71
+ h(this, "$", 0);
72
+ h(this, "U", 0);
73
+ h(this, "F", [0, 0, 0]);
74
+ h(this, "R", [1, 1, 1, 1]);
75
+ h(this, "P", [0, 0, 0, 1]);
76
+ h(this, "S", !1);
77
+ h(this, "D", !1);
78
+ h(this, "k", !1);
79
+ h(this, "G", [0, 0]);
80
+ h(this, "L", [0, 0, 0, 1]);
81
+ h(this, "O", []);
82
82
  }
83
83
  H() {
84
- this.k.push({ I: this.C, N: this.$, X: this.U, W: this.M, L: [...this.L], V: this.S, K: this.G, D: this.D, j: [...this.F], Y: [...this.R], q: [...this.P] });
84
+ this.O.push({ I: this.A, N: this.M, X: this.$, W: this.U, G: [...this.G], V: this.S, j: this.D, k: this.k, K: [...this.F], Y: [...this.R], q: [...this.P] });
85
85
  }
86
86
  Z() {
87
- const t = this.k.pop();
88
- t ? (this.C = t.I, this.$ = t.N, this.U = t.X, this.M = t.W, this.L = t.L, this.S = t.V, this.G = t.K, this.D = t.D, this.F = t.j, this.R = t.Y, this.P = t.q) : console.warn("pop() called without matching push()");
87
+ const t = this.O.pop();
88
+ t ? (this.A = t.I, this.M = t.N, this.$ = t.X, this.U = t.W, this.G = t.G, this.S = t.V, this.D = t.j, this.k = t.k, this.F = t.K, this.R = t.Y, this.P = t.q) : console.warn("pop() called without matching push()");
89
89
  }
90
90
  J(t) {
91
- t.I = this.C, t.N = this.$, t.X = this.U, t.W = this.M, t.j[0] = this.F[0], t.j[1] = this.F[1], t.j[2] = this.F[2], t.Y[0] = this.R[0], t.Y[1] = this.R[1], t.Y[2] = this.R[2], t.Y[3] = this.R[3], t.q[0] = this.P[0], t.q[1] = this.P[1], t.q[2] = this.P[2], t.q[3] = this.P[3], t.V = this.S, t.K = this.G, t.D = this.D, t.L[0] = this.L[0], t.L[1] = this.L[1];
91
+ t.I = this.A, t.N = this.M, t.X = this.$, t.W = this.U, t.K[0] = this.F[0], t.K[1] = this.F[1], t.K[2] = this.F[2], t.Y[0] = this.R[0], t.Y[1] = this.R[1], t.Y[2] = this.R[2], t.Y[3] = this.R[3], t.q[0] = this.P[0], t.q[1] = this.P[1], t.q[2] = this.P[2], t.q[3] = this.P[3], t.V = this.S, t.j = this.D, t.k = this.k, t.G[0] = this.G[0], t.G[1] = this.G[1];
92
92
  }
93
93
  get lineWeight() {
94
- return this.C;
94
+ return this.A;
95
95
  }
96
96
  get canvasBackgroundColor() {
97
- return this.O;
97
+ return this.L;
98
98
  }
99
99
  tt(t) {
100
- this.C = Math.abs(t);
100
+ this.A = Math.abs(t);
101
101
  }
102
102
  et(t) {
103
- this.$ = t;
103
+ this.M = t;
104
104
  }
105
105
  st(t) {
106
- this.U = t;
106
+ this.$ = t;
107
107
  }
108
108
  it(t) {
109
- this.M = t;
109
+ this.U = t;
110
110
  }
111
111
  rt(t) {
112
112
  this.F = t;
@@ -121,75 +121,75 @@ class ht {
121
121
  this.S = t;
122
122
  }
123
123
  ct(t) {
124
- this.G = t;
124
+ this.D = t;
125
125
  }
126
126
  lt(t) {
127
- this.D = t;
127
+ this.k = t;
128
128
  }
129
129
  ut(t) {
130
130
  const e = 255 * t / 360, i = Math.floor(e) / 255, s = Math.round(e - Math.floor(e));
131
- this.L = [i, s];
131
+ this.G = [i, s];
132
132
  }
133
133
  ft(t, e, i, s) {
134
- this.O = [t / 255, e / 255, i / 255, s / 255];
134
+ this.L = [t / 255, e / 255, i / 255, s / 255];
135
135
  }
136
136
  }
137
137
  class q {
138
138
  constructor(t, e, i = e, s = 1, r = {}, n = null, o = !1) {
139
- a(this, "dt");
140
- a(this, "gt");
141
- a(this, "u");
142
- a(this, "_t", null);
143
- a(this, "vt");
144
- a(this, "yt");
145
- a(this, "At", []);
146
- a(this, "wt");
147
- a(this, "Ct", null);
148
- a(this, "bt", []);
149
- a(this, "xt", null);
150
- a(this, "$t", !1);
151
- a(this, "Mt", null);
152
- this.dt = e, this.gt = i, this.u = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...r }, this.vt = t, this.wt = Math.min(Math.max(1, s), 8), this.xt = n, this.$t = !!o, this.Mt = this.$t ? new ht() : null;
139
+ h(this, "dt");
140
+ h(this, "_t");
141
+ h(this, "u");
142
+ h(this, "gt", null);
143
+ h(this, "vt");
144
+ h(this, "wt");
145
+ h(this, "yt", []);
146
+ h(this, "Ct");
147
+ h(this, "At", null);
148
+ h(this, "bt", []);
149
+ h(this, "xt", null);
150
+ h(this, "Mt", !1);
151
+ h(this, "$t", null);
152
+ this.dt = e, this._t = i, this.u = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...r }, this.vt = t, this.Ct = Math.min(Math.max(1, s), 8), this.xt = n, this.Mt = !!o, this.$t = this.Mt ? new ht() : null;
153
153
  const c = t.getParameter(t.MAX_DRAW_BUFFERS), l = t.getParameter(t.MAX_COLOR_ATTACHMENTS);
154
- this.wt = Math.min(this.wt, c, l), this.yt = t.createFramebuffer(), this.Ft(), this.Rt(), this.bt = Array(this.wt).fill(null);
154
+ this.Ct = Math.min(this.Ct, c, l), this.wt = t.createFramebuffer(), this.Ft(), this.Tt(), this.bt = Array(this.Ct).fill(null);
155
155
  }
156
156
  Ft() {
157
157
  const t = this.vt, e = this.u.filter === "linear" ? t.LINEAR : t.NEAREST, i = this.u.wrap === "repeat" ? t.REPEAT : t.CLAMP_TO_EDGE, s = this.u.type === "float" ? t.FLOAT : t.UNSIGNED_BYTE;
158
- for (let r = 0; r < this.wt; r++) {
158
+ for (let r = 0; r < this.Ct; r++) {
159
159
  const n = t.createTexture();
160
- t.bindTexture(t.TEXTURE_2D, n), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, e), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, e), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, i), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, i), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, this.dt, this.gt, 0, t.RGBA, s, null), this.At.push(n);
160
+ t.bindTexture(t.TEXTURE_2D, n), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, e), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, e), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, i), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, i), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, this.dt, this._t, 0, t.RGBA, s, null), this.yt.push(n);
161
161
  }
162
162
  t.bindTexture(t.TEXTURE_2D, null);
163
163
  }
164
- Rt() {
164
+ Tt() {
165
165
  const t = this.vt;
166
- if (t.bindFramebuffer(t.FRAMEBUFFER, this.yt), this.wt === 1) t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.At[0], 0);
166
+ if (t.bindFramebuffer(t.FRAMEBUFFER, this.wt), this.Ct === 1) t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, this.yt[0], 0);
167
167
  else {
168
168
  const i = [];
169
- for (let s = 0; s < this.wt; s++) {
169
+ for (let s = 0; s < this.Ct; s++) {
170
170
  const r = t.COLOR_ATTACHMENT0 + s;
171
- t.framebufferTexture2D(t.FRAMEBUFFER, r, t.TEXTURE_2D, this.At[s], 0), i.push(r);
171
+ t.framebufferTexture2D(t.FRAMEBUFFER, r, t.TEXTURE_2D, this.yt[s], 0), i.push(r);
172
172
  }
173
173
  t.drawBuffers(i);
174
174
  }
175
175
  const e = t.checkFramebufferStatus(t.FRAMEBUFFER);
176
176
  e !== t.FRAMEBUFFER_COMPLETE && console.error("GLFramebuffer is not complete:", e), t.bindFramebuffer(t.FRAMEBUFFER, null);
177
177
  }
178
- zt(t) {
178
+ Rt(t) {
179
179
  const e = this.vt;
180
- e.bindTexture(e.TEXTURE_2D, this.At[0]), e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL, 1), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t), e.bindTexture(e.TEXTURE_2D, null);
180
+ e.bindTexture(e.TEXTURE_2D, this.yt[0]), e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL, 1), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t), e.bindTexture(e.TEXTURE_2D, null);
181
181
  }
182
182
  resize(t, e) {
183
- this.dt = t, this.gt = e, this._t = null, this.bt = Array(this.wt).fill(null);
183
+ this.dt = t, this._t = e, this.gt = null, this.bt = Array(this.Ct).fill(null);
184
184
  const i = this.vt, s = this.u.type === "float" ? i.FLOAT : i.UNSIGNED_BYTE;
185
- for (const r of this.At) i.bindTexture(i.TEXTURE_2D, r), i.texImage2D(i.TEXTURE_2D, 0, i.RGBA, this.dt, this.gt, 0, i.RGBA, s, null);
185
+ for (const r of this.yt) i.bindTexture(i.TEXTURE_2D, r), i.texImage2D(i.TEXTURE_2D, 0, i.RGBA, this.dt, this._t, 0, i.RGBA, s, null);
186
186
  i.bindTexture(i.TEXTURE_2D, null);
187
187
  }
188
- Pt(t) {
188
+ zt(t) {
189
189
  const e = this.vt, i = this.bt[t];
190
190
  if (i) return i;
191
- const s = this.dt, r = this.gt, n = new Uint8Array(s * r * 4), o = e.getParameter(e.READ_FRAMEBUFFER_BINDING);
192
- e.bindFramebuffer(e.READ_FRAMEBUFFER, this.yt), e.readBuffer(e.COLOR_ATTACHMENT0 + t), e.readPixels(0, 0, s, r, e.RGBA, e.UNSIGNED_BYTE, n), e.bindFramebuffer(e.READ_FRAMEBUFFER, o);
191
+ const s = this.dt, r = this._t, n = new Uint8Array(s * r * 4), o = e.getParameter(e.READ_FRAMEBUFFER_BINDING);
192
+ e.bindFramebuffer(e.READ_FRAMEBUFFER, this.wt), e.readBuffer(e.COLOR_ATTACHMENT0 + t), e.readPixels(0, 0, s, r, e.RGBA, e.UNSIGNED_BYTE, n), e.bindFramebuffer(e.READ_FRAMEBUFFER, o);
193
193
  const c = 4 * s, l = new Uint8Array(n.length);
194
194
  for (let u = 0; u < r; u++) {
195
195
  const f = (r - 1 - u) * c, g = u * c;
@@ -201,56 +201,56 @@ class q {
201
201
  var e, i, s, r;
202
202
  const t = this.vt;
203
203
  if (this.xt) {
204
- const n = ((i = (e = this.xt).Tt) == null ? void 0 : i.call(e)) ?? null;
205
- n && this.xt.St(n), this.$t && this.Mt && ((r = (s = this.xt).Et) == null || r.call(s, this.Mt));
204
+ const n = ((i = (e = this.xt).Pt) == null ? void 0 : i.call(e)) ?? null;
205
+ n && this.xt.St(n), this.Mt && this.$t && ((r = (s = this.xt).Et) == null || r.call(s, this.$t));
206
206
  }
207
- this.Ct = { framebuffer: t.getParameter(t.FRAMEBUFFER_BINDING), viewport: t.getParameter(t.VIEWPORT) }, t.bindFramebuffer(t.FRAMEBUFFER, this.yt), this.bt = Array(this.wt).fill(null);
208
- for (let n = 0; n < this.wt; n++) t.clearBufferfv(t.COLOR, n, new Float32Array([0, 0, 0, 0]));
209
- t.viewport(0, 0, this.dt, this.gt), H(t, [0, 0, this.dt, this.gt]);
207
+ this.At = { framebuffer: t.getParameter(t.FRAMEBUFFER_BINDING), viewport: t.getParameter(t.VIEWPORT) }, t.bindFramebuffer(t.FRAMEBUFFER, this.wt), this.bt = Array(this.Ct).fill(null);
208
+ for (let n = 0; n < this.Ct; n++) t.clearBufferfv(t.COLOR, n, new Float32Array([0, 0, 0, 0]));
209
+ t.viewport(0, 0, this.dt, this._t), k(t, [0, 0, this.dt, this._t]);
210
210
  }
211
211
  end() {
212
212
  var e, i, s, r;
213
- if (!this.Ct) return;
213
+ if (!this.At) return;
214
214
  const t = this.vt;
215
215
  if (this.xt) {
216
- const n = ((i = (e = this.xt).Tt) == null ? void 0 : i.call(e)) ?? null;
216
+ const n = ((i = (e = this.xt).Pt) == null ? void 0 : i.call(e)) ?? null;
217
217
  n && this.xt.St(n);
218
218
  }
219
- t.bindFramebuffer(t.FRAMEBUFFER, this.Ct.framebuffer), t.viewport(...this.Ct.viewport), H(t, this.Ct.viewport), this.Ct = null, this.xt && this.$t && this.Mt && ((r = (s = this.xt).Bt) == null || r.call(s));
219
+ t.bindFramebuffer(t.FRAMEBUFFER, this.At.framebuffer), t.viewport(...this.At.viewport), k(t, this.At.viewport), this.At = null, this.xt && this.Mt && this.$t && ((r = (s = this.xt).Dt) == null || r.call(s));
220
220
  }
221
- Gt() {
221
+ kt() {
222
222
  const t = this.vt;
223
- t.deleteFramebuffer(this.yt);
224
- for (const e of this.At) t.deleteTexture(e);
223
+ t.deleteFramebuffer(this.wt);
224
+ for (const e of this.yt) t.deleteTexture(e);
225
225
  }
226
226
  get width() {
227
227
  return this.dt;
228
228
  }
229
229
  get height() {
230
- return this.gt;
230
+ return this._t;
231
231
  }
232
232
  get textures() {
233
- return [...this.At];
233
+ return [...this.yt];
234
234
  }
235
235
  }
236
- class I {
236
+ class _ {
237
237
  constructor(t, e, i) {
238
- a(this, "vt");
239
- a(this, "Dt");
240
- a(this, "Lt", /* @__PURE__ */ new Map());
241
- a(this, "Ot", /* @__PURE__ */ new Map());
242
- a(this, "kt", 0);
243
- this.vt = t, this.Dt = this.Ht(e, i), this.It();
238
+ h(this, "vt");
239
+ h(this, "Bt");
240
+ h(this, "Gt", /* @__PURE__ */ new Map());
241
+ h(this, "Lt", /* @__PURE__ */ new Map());
242
+ h(this, "Ot", 0);
243
+ this.vt = t, this.Bt = this.Ht(e, i), this.It();
244
244
  }
245
245
  It() {
246
- const t = this.vt.getProgramParameter(this.Dt, this.vt.ACTIVE_UNIFORMS);
246
+ const t = this.vt.getProgramParameter(this.Bt, this.vt.ACTIVE_UNIFORMS);
247
247
  for (let e = 0; e < t; e++) {
248
- const i = this.vt.getActiveUniform(this.Dt, e);
248
+ const i = this.vt.getActiveUniform(this.Bt, e);
249
249
  if (i) {
250
- const s = this.vt.getUniformLocation(this.Dt, i.name);
251
- if (s && (this.Lt.set(i.name, s), this.Ot.set(i.name, { type: i.type, size: i.size }), i.size > 1)) {
250
+ const s = this.vt.getUniformLocation(this.Bt, i.name);
251
+ if (s && (this.Gt.set(i.name, s), this.Lt.set(i.name, { type: i.type, size: i.size }), i.size > 1)) {
252
252
  const r = i.name.replace(/\[.*\]$/, "");
253
- this.Lt.has(r) || (this.Lt.set(r, s), this.Ot.set(r, { type: i.type, size: i.size }));
253
+ this.Gt.has(r) || (this.Gt.set(r, s), this.Lt.set(r, { type: i.type, size: i.size }));
254
254
  }
255
255
  }
256
256
  }
@@ -272,30 +272,30 @@ class I {
272
272
  return i;
273
273
  }
274
274
  Xt() {
275
- this.vt.useProgram(this.Dt), this.Wt();
275
+ this.vt.useProgram(this.Bt), this.Wt();
276
276
  }
277
277
  Wt() {
278
- this.kt = 0;
278
+ this.Ot = 0;
279
279
  }
280
280
  Vt(t) {
281
- for (const [e, i] of Object.entries(t)) this.Kt(e, i);
281
+ for (const [e, i] of Object.entries(t)) this.jt(e, i);
282
282
  }
283
- jt(t) {
284
- return this.Lt.has(t);
283
+ Kt(t) {
284
+ return this.Gt.has(t);
285
285
  }
286
286
  Yt(t) {
287
- return this.Ot.get(t) || null;
287
+ return this.Lt.get(t) || null;
288
288
  }
289
289
  qt() {
290
290
  const t = [];
291
- for (const [e, i] of this.Ot.entries()) t.push({ name: e, ...i });
291
+ for (const [e, i] of this.Lt.entries()) t.push({ name: e, ...i });
292
292
  return t;
293
293
  }
294
- Kt(t, e) {
294
+ jt(t, e) {
295
295
  var c;
296
- const i = this.Lt.get(t);
296
+ const i = this.Gt.get(t);
297
297
  if (!i) return;
298
- const s = this.Ot.get(t);
298
+ const s = this.Lt.get(t);
299
299
  if (!s) return void console.warn(`No type information found for uniform '${t}'`);
300
300
  const { type: r, size: n } = s, o = this.vt;
301
301
  if (typeof e == "number") switch (r) {
@@ -353,33 +353,33 @@ class I {
353
353
  } else console.warn(`Unsupported uniform type for '${t}':`, typeof e);
354
354
  }
355
355
  Zt() {
356
- return this.kt++;
356
+ return this.Ot++;
357
357
  }
358
358
  get Qt() {
359
- return this.Dt;
359
+ return this.Bt;
360
360
  }
361
- Gt() {
362
- this.vt.deleteProgram(this.Dt);
361
+ kt() {
362
+ this.vt.deleteProgram(this.Bt);
363
363
  }
364
364
  }
365
- const W = `#version 300 es
366
- in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float U9;uniform vec2 Uy;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 A(float B){float C=sin(B),D=cos(B);return mat3(1,0,0,0,D,-C,0,C,D);}mat3 E(float B){float C=sin(B),D=cos(B);return mat3(D,0,C,0,1,0,-C,0,D);}mat3 F(float B){float C=sin(B),D=cos(B);return mat3(D,-C,0,C,D,0,0,0,1);}vec2 G(float H,vec2 I,vec2 J,vec2 K,vec2 L){float M=1.-H,N=M*M,O=H*H;return N*M*I+3.*N*H*J+3.*M*O*K+O*H*L;}vec2 P(float H,vec2 I,vec2 J,vec2 K,vec2 L){float M=1.-H,N=M*M,O=H*H;return-3.*N*I+3.*N*J-6.*M*H*J+6.*M*H*K-3.*O*K+3.*O*L;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 Q;bool R=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool S=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(R){float H=a_position.x;vec2 T=G(H,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 U=P(H,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float V=length(U);U=V>0.?U/V:vec2(1,0);Q=T+vec2(-U.y,U.x)*a_position.y*a_instanceSize.y;}else if(S){float C=a_instanceArcAngles.x,W=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;W=mod(W,6.28318530718);if(W<0.)W+=6.28318530718;float X=C-W;if(X<=0.)X+=6.28318530718;float Y=C-a_position.x*X;vec2 Z=vec2(cos(Y),sin(Y))*a_position.y;Q=Z*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{Q=a_position*a_instanceSize+a_instancePosition;}vec2 a=(Q/Uy)*2.-1.;a.y=-a.y;if(length(a_instanceGlobalRotation)>0.){vec3 b=vec3(a-a_instanceRotationCenter,0);b.x*=U9;if(a_instanceGlobalRotation.x!=0.)b=A(-a_instanceGlobalRotation.x)*b;if(a_instanceGlobalRotation.y!=0.)b=E(-a_instanceGlobalRotation.y)*b;if(a_instanceGlobalRotation.z!=0.)b=F(-a_instanceGlobalRotation.z)*b;b.x/=U9;a=b.xy+a_instanceRotationCenter;}gl_Position=vec4(a,0,1);}`, at = "attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.,1.);}";
367
- class ft {
365
+ const X = `#version 300 es
366
+ in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float U9;uniform vec2 Uw;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 A(float B){float C=sin(B),D=cos(B);return mat3(1,0,0,0,D,-C,0,C,D);}mat3 E(float B){float C=sin(B),D=cos(B);return mat3(D,0,C,0,1,0,-C,0,D);}mat3 F(float B){float C=sin(B),D=cos(B);return mat3(D,-C,0,C,D,0,0,0,1);}vec2 G(float H,vec2 I,vec2 J,vec2 K,vec2 L){float M=1.-H,N=M*M,O=H*H;return N*M*I+3.*N*H*J+3.*M*O*K+O*H*L;}vec2 P(float H,vec2 I,vec2 J,vec2 K,vec2 L){float M=1.-H,N=M*M,O=H*H;return-3.*N*I+3.*N*J-6.*M*H*J+6.*M*H*K-3.*O*K+3.*O*L;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 Q;bool R=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool S=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(R){float H=a_position.x;vec2 T=G(H,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 U=P(H,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float V=length(U);U=V>0.?U/V:vec2(1,0);Q=T+vec2(-U.y,U.x)*a_position.y*a_instanceSize.y;}else if(S){float C=a_instanceArcAngles.x,W=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;W=mod(W,6.28318530718);if(W<0.)W+=6.28318530718;float X=C-W;if(X<=0.)X+=6.28318530718;float Y=C-a_position.x*X;vec2 Z=vec2(cos(Y),sin(Y))*a_position.y;Q=Z*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{Q=a_position*a_instanceSize+a_instancePosition;}vec2 a=(Q/Uw)*2.-1.;a.y=-a.y;if(length(a_instanceGlobalRotation)>0.){vec3 b=vec3(a-a_instanceRotationCenter,0);b.x*=U9;if(a_instanceGlobalRotation.x!=0.)b=A(-a_instanceGlobalRotation.x)*b;if(a_instanceGlobalRotation.y!=0.)b=E(-a_instanceGlobalRotation.y)*b;if(a_instanceGlobalRotation.z!=0.)b=F(-a_instanceGlobalRotation.z)*b;b.x/=U9;a=b.xy+a_instanceRotationCenter;}gl_Position=vec4(a,0,1);}`, at = "attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.,1.);}";
367
+ class pt {
368
368
  constructor(t) {
369
- a(this, "vt");
370
- a(this, "Jt");
371
- a(this, "te");
372
- a(this, "ee");
373
- a(this, "se");
374
- this.vt = t, this.te = new I(this.vt, W, `#version 300 es
375
- precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.,1.);o_transform=vec4(v_transform,1.);}`), this.Jt = new I(this.vt, W, `#version 300 es
376
- precision highp float;in vec2 v_uv;uniform sampler2D Ue;uniform sampler2D Uf;uniform sampler2D Ug;uniform sampler2D Uh;uniform sampler2D Ui;uniform vec2 Uj;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 A=vec2(v_uv.x,1.-v_uv.y);vec2 B=A*Uj;vec2 C=(floor(B)+0.5f)/Uj;vec4 D=texture(Ue,C);vec4 E=texture(Uf,C);if(E.a==0.){discard;}vec4 F=texture(Ug,C);vec4 G=texture(Uh,C);vec4 H=texture(Ui,C);o_character=D;o_primaryColor=E;o_secondaryColor=F;o_rotation=G;o_transform=H;}`), this.ee = new I(this.vt, at, "precision mediump float;uniform sampler2D U0;uniform vec2 U1;uniform sampler2D U3;uniform sampler2D U4;uniform sampler2D U5;uniform sampler2D U2;uniform sampler2D U6;uniform vec2 U7;uniform vec2 U8;mat2 A(float B){float C=sin(B);float D=cos(B);return mat2(D,-C,C,D);}void main(){vec2 E=gl_FragCoord.xy/U8;vec2 F=E*U7;vec2 G=floor(F);vec2 H=(G+0.5)/U7;vec4 I=texture2D(U3,H);vec4 J=texture2D(U4,H);vec4 K=texture2D(U5,H);bool L=K.r>0.5;bool M=K.g>0.5;bool N=K.b>0.5;vec4 O=texture2D(U2,H);int P=int(O.r*255.+0.5)+int(O.g*255.+0.5)*256;int Q=int(mod(float(P),U1.x));int R=P/int(U1.x);float S=(U1.y-1.)-float(R);vec2 T=vec2(float(Q),S)/U1;vec4 U=texture2D(U6,H);float V=U.r*255.+U.g;float W=-(V*360./255.)*0.017453292;vec2 X=fract(F)-0.5;if(M)X.x=-X.x;if(N)X.y=-X.y;X=A(W)*X+0.5;vec2 Y=1./U1;vec2 Z=T+X*Y;vec2 a=T+Y;if(any(lessThan(Z,T))||any(greaterThan(Z,a))){gl_FragColor=L?I:J;return;}vec4 b=texture2D(U0,Z);if(L)b.rgb=1.-b.rgb;gl_FragColor=mix(J,I,b);}"), this.se = new I(this.vt, W, `#version 300 es
377
- precision highp float;in vec2 v_uv;uniform sampler2D Uk;uniform bool Ul;uniform bool Um;uniform bool Un;uniform vec2 Uo;uniform bool Up;uniform vec3 Uq;uniform bool Ur;uniform vec3 Us;uniform vec4 Ut;uniform int Uu;uniform vec3 Uv[64];layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;float A(vec3 B){return dot(B,vec3(0.299f,0.587f,0.114f));}void main(){vec2 C=vec2(v_uv.x,1.0f-v_uv.y);vec4 D=texture(Uk,C);float E=A(D.rgb);if(Uu>0){float F=float(Uu);float G=clamp(E*(F-1.0f),0.0f,F-1.0f);int H=int(floor(G+0.5f));vec3 I=Uv[H];o_character=vec4(I,1.0f);}else{o_character=vec4(E,0.0f,0.0f,1.0f);}vec3 J=D.rgb;vec3 K=Up?Uq:J;vec3 L=Ur?Us:J;float M=1.0f;float N=1.0f;if(D.a<0.01f){K=Ut.rgb;L=Ut.rgb;}o_primaryColor=vec4(K,M);o_secondaryColor=vec4(L,N);o_rotation=vec4(Uo.xy,0.0f,1.0f);o_transform=vec4(float(Ul),float(Um),float(Un),1.0f);}`);
369
+ h(this, "vt");
370
+ h(this, "Jt");
371
+ h(this, "te");
372
+ h(this, "ee");
373
+ h(this, "se");
374
+ this.vt = t, this.te = new _(this.vt, X, `#version 300 es
375
+ precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.,1.);o_transform=vec4(v_transform,1.);}`), this.Jt = new _(this.vt, X, `#version 300 es
376
+ precision highp float;in vec2 v_uv;uniform sampler2D Ue;uniform sampler2D Uf;uniform sampler2D Ug;uniform sampler2D Uh;uniform sampler2D Ui;uniform vec2 Uj;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 A=vec2(v_uv.x,1.-v_uv.y);vec2 B=A*Uj;vec2 C=(floor(B)+0.5f)/Uj;vec4 D=texture(Ue,C);vec4 E=texture(Uf,C);if(E.a==0.){discard;}vec4 F=texture(Ug,C);vec4 G=texture(Uh,C);vec4 H=texture(Ui,C);o_character=D;o_primaryColor=E;o_secondaryColor=F;o_rotation=G;o_transform=H;}`), this.ee = new _(this.vt, at, "precision mediump float;uniform sampler2D U0;uniform vec2 U1;uniform sampler2D U3;uniform sampler2D U4;uniform sampler2D U5;uniform sampler2D U2;uniform sampler2D U6;uniform vec2 U7;uniform vec2 U8;mat2 A(float B){float C=sin(B);float D=cos(B);return mat2(D,-C,C,D);}void main(){vec2 E=gl_FragCoord.xy/U8;vec2 F=E*U7;vec2 G=floor(F);vec2 H=(G+0.5)/U7;vec4 I=texture2D(U3,H);vec4 J=texture2D(U4,H);vec4 K=texture2D(U5,H);bool L=K.r>0.5;bool M=K.g>0.5;bool N=K.b>0.5;vec4 O=texture2D(U2,H);int P=int(O.r*255.+0.5)+int(O.g*255.+0.5)*256;int Q=int(mod(float(P),U1.x));int R=P/int(U1.x);float S=(U1.y-1.)-float(R);vec2 T=vec2(float(Q),S)/U1;vec4 U=texture2D(U6,H);float V=U.r*255.+U.g;float W=-(V*360./255.)*0.017453292;vec2 X=fract(F)-0.5;if(M)X.x=-X.x;if(N)X.y=-X.y;X=A(W)*X+0.5;vec2 Y=1./U1;vec2 Z=T+X*Y;vec2 a=T+Y;if(any(lessThan(Z,T))||any(greaterThan(Z,a))){gl_FragColor=L?I:J;return;}vec4 b=texture2D(U0,Z);if(L)b.rgb=1.-b.rgb;gl_FragColor=mix(J,I,b);}"), this.se = new _(this.vt, X, `#version 300 es
377
+ precision highp float;in vec2 v_uv;uniform sampler2D Uk;uniform bool Ul;uniform bool Um;uniform bool Un;uniform vec2 Uo;uniform bool Up;uniform vec4 Uq;uniform bool Ur;uniform vec4 Us;uniform vec4 Ut;uniform int Uu;uniform vec3 Uv[64];layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;float A(vec3 B){return dot(B,vec3(0.299f,0.587f,0.114f));}void main(){vec2 C=vec2(v_uv.x,1.0f-v_uv.y);vec4 D=texture(Uk,C);float E=A(D.rgb);if(Uu>0){float F=float(Uu);float G=clamp(E*(F-1.0f),0.0f,F-1.0f);int H=int(floor(G+0.5f));vec3 I=Uv[H];o_character=vec4(I,1.0f);}else{o_character=vec4(E,0.0f,0.0f,1.0f);}vec4 J=Up?Uq:D;vec4 K=Ur?Us:D;if(D.a<0.01f){J=Ut;K=Ut;}else{}o_primaryColor=vec4(J);o_secondaryColor=vec4(K);o_rotation=vec4(Uo.xy,0.0f,1.0f);o_transform=vec4(float(Ul),float(Um),float(Un),1.0f);}`);
378
378
  }
379
379
  ie() {
380
380
  return this.Jt;
381
381
  }
382
- Tt() {
382
+ Pt() {
383
383
  return this.te;
384
384
  }
385
385
  re() {
@@ -389,26 +389,26 @@ precision highp float;in vec2 v_uv;uniform sampler2D Uk;uniform bool Ul;uniform
389
389
  return this.se;
390
390
  }
391
391
  oe(t) {
392
- return new I(this.vt, W, t);
392
+ return new _(this.vt, X, t);
393
393
  }
394
- ae(t, e) {
395
- return new I(this.vt, t, e);
394
+ he(t, e) {
395
+ return new _(this.vt, t, e);
396
396
  }
397
- Gt() {
398
- this.Jt.Gt(), this.te.Gt(), this.ee.Gt(), this.se.Gt();
397
+ kt() {
398
+ this.Jt.kt(), this.te.kt(), this.ee.kt(), this.se.kt();
399
399
  }
400
400
  }
401
- var y = ((h) => (h.RECTANGLE = "rectangle", h.LINE = "line", h.ELLIPSE = "ellipse", h.ARC = "arc", h.TRIANGLE = "triangle", h.BEZIER_CURVE = "bezier_curve", h.CUSTOM = "custom", h))(y || {});
402
- class dt {
401
+ var E = ((a) => (a.RECTANGLE = "rectangle", a.LINE = "line", a.ELLIPSE = "ellipse", a.ARC = "arc", a.TRIANGLE = "triangle", a.BEZIER_CURVE = "bezier_curve", a.CUSTOM = "custom", a))(E || {});
402
+ class mt {
403
403
  constructor(t) {
404
- a(this, "vt");
405
- a(this, "he", /* @__PURE__ */ new Map());
404
+ h(this, "vt");
405
+ h(this, "ae", /* @__PURE__ */ new Map());
406
406
  this.vt = t;
407
407
  }
408
408
  ce(t, e, i, s) {
409
409
  const r = this.vt;
410
- let n = this.he.get(t);
411
- n || (n = /* @__PURE__ */ new Map(), this.he.set(t, n));
410
+ let n = this.ae.get(t);
411
+ n || (n = /* @__PURE__ */ new Map(), this.ae.set(t, n));
412
412
  let o = n.get(e) || null;
413
413
  if (!o) {
414
414
  o = r.createVertexArray(), n.set(e, o), r.bindVertexArray(o), r.bindBuffer(r.ARRAY_BUFFER, s);
@@ -422,35 +422,35 @@ class dt {
422
422
  pe() {
423
423
  this.vt.bindVertexArray(null);
424
424
  }
425
- Gt() {
426
- for (const [, t] of this.he) for (const [, e] of t) e && this.vt.deleteVertexArray(e);
425
+ kt() {
426
+ for (const [, t] of this.ae) for (const [, e] of t) e && this.vt.deleteVertexArray(e);
427
427
  }
428
428
  }
429
- class gt {
429
+ class vt {
430
430
  constructor(t, e) {
431
- a(this, "me");
432
- a(this, "vt");
433
- a(this, "xt");
434
- a(this, "ge", null);
435
- a(this, "_e", null);
436
- this.vt = t, this.me = new dt(t), this.xt = e;
431
+ h(this, "_e");
432
+ h(this, "vt");
433
+ h(this, "xt");
434
+ h(this, "me", null);
435
+ h(this, "ge", null);
436
+ this.vt = t, this._e = new mt(t), this.xt = e;
437
437
  }
438
438
  ve(t, e, i) {
439
- const { shader: s } = t, r = k(this.vt) || this.vt.getParameter(this.vt.VIEWPORT);
440
- s.Vt({ U9: r[2] / r[3], Uy: [r[2], r[3]] });
439
+ const { shader: s } = t, r = H(this.vt) || this.vt.getParameter(this.vt.VIEWPORT);
440
+ s.Vt({ U9: r[2] / r[3], Uw: [r[2], r[3]] });
441
441
  const n = (l) => {
442
- if (!l || !l.ye()) return;
442
+ if (!l || !l.we()) return;
443
443
  const u = l.unitGeometry, f = l.unitBuffer;
444
444
  try {
445
- this.me.ce(s.Qt, l.type + "", u, f), l.batch.Ae(s), l.batch.we(u.Ce, u.be);
445
+ this._e.ce(s.Qt, l.type + "", u, f), l.batch.ye(s), l.batch.Ce(u.Ae, u.be);
446
446
  } finally {
447
- l.batch.xe(s), this.me.pe(), l.$e();
447
+ l.batch.xe(s), this._e.pe(), l.Me();
448
448
  }
449
449
  };
450
450
  let o = null, c = null;
451
451
  for (const l of e) {
452
- if (l.type === y.CUSTOM) {
453
- c && (n(c), o = null, c = null), this.Me(t, l.params, l.state, i.get(y.RECTANGLE));
452
+ if (l.type === E.CUSTOM) {
453
+ c && (n(c), o = null, c = null), this.$e(t, l.params, l.state, i.get(E.RECTANGLE));
454
454
  continue;
455
455
  }
456
456
  o !== null && l.type !== o && (n(c), o = null, c = null);
@@ -459,74 +459,74 @@ class gt {
459
459
  }
460
460
  n(c);
461
461
  }
462
- Me(t, e, i, s) {
463
- const { x: r, y: n, width: o, height: c, shader: l, uniforms: u } = e, f = this.Re(Math.max(1, Math.floor(o)), Math.max(1, Math.floor(c)));
464
- f.begin(), this.ze(s, l, u, 0, 0, f.width, f.height, {}), f.end();
465
- const g = this.Pe(), v = { Ue: f.textures[0], Uf: f.textures[1], Ug: f.textures[2], Uh: f.textures[3], Ui: f.textures[4], Uj: [f.width, f.height] };
466
- this.ze(s, g, v, Math.floor(r), Math.floor(n), Math.max(1, Math.floor(o)), Math.max(1, Math.floor(c)), i), t.shader.Xt();
462
+ $e(t, e, i, s) {
463
+ const { x: r, y: n, width: o, height: c, shader: l, uniforms: u } = e, f = this.Te(Math.max(1, Math.floor(o)), Math.max(1, Math.floor(c)));
464
+ f.begin(), this.Re(s, l, u, 0, 0, f.width, f.height, {}), f.end();
465
+ const g = this.ze(), v = { Ue: f.textures[0], Uf: f.textures[1], Ug: f.textures[2], Uh: f.textures[3], Ui: f.textures[4], Uj: [f.width, f.height] };
466
+ this.Re(s, g, v, Math.floor(r), Math.floor(n), Math.max(1, Math.floor(o)), Math.max(1, Math.floor(c)), i), t.shader.Xt();
467
467
  }
468
- ze(t, e, i, s, r, n, o, c) {
468
+ Re(t, e, i, s, r, n, o, c) {
469
469
  e.Xt(), e.Vt(i);
470
470
  const l = this.vt.getParameter(this.vt.VIEWPORT);
471
- if (e.Vt({ U9: l[2] / l[3], Uy: [l[2], l[3]] }), t.$e(), t.Fe({ x: s, y: r, width: n, height: o }, c), t.ye()) {
471
+ if (e.Vt({ U9: l[2] / l[3], Uw: [l[2], l[3]] }), t.Me(), t.Fe({ x: s, y: r, width: n, height: o }, c), t.we()) {
472
472
  const u = t.unitGeometry, f = t.unitBuffer;
473
473
  try {
474
- this.me.ce(e.Qt, t.type + "", u, f), t.batch.Ae(e), t.batch.we(u.Ce, u.be);
474
+ this._e.ce(e.Qt, t.type + "", u, f), t.batch.ye(e), t.batch.Ce(u.Ae, u.be);
475
475
  } finally {
476
- t.batch.xe(e), this.me.pe(), t.$e();
476
+ t.batch.xe(e), this._e.pe(), t.Me();
477
477
  }
478
478
  }
479
479
  }
480
- Pe() {
480
+ ze() {
481
481
  return this.xt.ie();
482
482
  }
483
- Re(t, e) {
484
- return this.ge && this._e && this._e.w === t && this._e.h === e || (this.ge && this.ge.Gt(), this.ge = new q(this.vt, t, e, 5), this._e = { w: t, h: e }), this.ge;
483
+ Te(t, e) {
484
+ return this.me && this.ge && this.ge.w === t && this.ge.h === e || (this.me && this.me.kt(), this.me = new q(this.vt, t, e, 5), this.ge = { w: t, h: e }), this.me;
485
485
  }
486
- Gt() {
487
- this.me.Gt(), this.ge && this.ge.Gt();
486
+ kt() {
487
+ this._e.kt(), this.me && this.me.kt();
488
488
  }
489
489
  }
490
- class pt {
490
+ class At {
491
491
  constructor() {
492
- a(this, "Te", []);
493
- a(this, "Se", 1);
494
- a(this, "Ee", 0);
495
- }
496
- Be(t) {
497
- if (this.Ee >= this.Te.length) {
498
- const i = { id: this.Se++, type: t, params: {}, state: { I: 1, N: 0, X: 0, W: 0, j: [0, 0, 0], Y: [1, 1, 1, 1], q: [0, 0, 0, 1], V: !1, K: !1, D: !1, L: [0, 0] } };
499
- this.Te.push(i);
492
+ h(this, "Pe", []);
493
+ h(this, "Se", 1);
494
+ h(this, "Ee", 0);
495
+ }
496
+ De(t) {
497
+ if (this.Ee >= this.Pe.length) {
498
+ const i = { id: this.Se++, type: t, params: {}, state: { I: 1, N: 0, X: 0, W: 0, K: [0, 0, 0], Y: [1, 1, 1, 1], q: [0, 0, 0, 1], V: !1, j: !1, k: !1, G: [0, 0] } };
499
+ this.Pe.push(i);
500
500
  }
501
- const e = this.Te[this.Ee];
501
+ const e = this.Pe[this.Ee];
502
502
  return e.id = this.Se++, e.type = t, this.Ee++, e;
503
503
  }
504
- Ge(t, e, i, s, r) {
505
- const n = this.Be(y.RECTANGLE);
504
+ ke(t, e, i, s, r) {
505
+ const n = this.De(E.RECTANGLE);
506
506
  return n.params.x = t, n.params.y = e, n.params.width = i, n.params.height = s, r.J(n.state), n.id;
507
507
  }
508
- De(t, e, i, s, r, n, o) {
509
- const c = this.Be(y.CUSTOM);
508
+ Be(t, e, i, s, r, n, o) {
509
+ const c = this.De(E.CUSTOM);
510
510
  return c.params.x = t, c.params.y = e, c.params.width = i, c.params.height = s, c.params.shader = r, c.params.uniforms = n, o.J(c.state), c.id;
511
511
  }
512
- Le(t, e, i, s, r, n) {
513
- const o = this.Be(y.LINE);
512
+ Ge(t, e, i, s, r, n) {
513
+ const o = this.De(E.LINE);
514
514
  return o.params.x1 = t, o.params.y1 = e, o.params.x2 = i, o.params.y2 = s, o.params.thickness = r, n.J(o.state), o.id;
515
515
  }
516
- Oe(t, e, i, s, r) {
517
- const n = this.Be(y.ELLIPSE);
516
+ Le(t, e, i, s, r) {
517
+ const n = this.De(E.ELLIPSE);
518
518
  return n.params.x = t, n.params.y = e, n.params.width = i, n.params.height = s, r.J(n.state), n.id;
519
519
  }
520
- ke(t, e, i, s, r, n, o) {
521
- const c = this.Be(y.ARC);
520
+ Oe(t, e, i, s, r, n, o) {
521
+ const c = this.De(E.ARC);
522
522
  return c.params.x = t, c.params.y = e, c.params.width = i, c.params.height = s, c.params.start = r, c.params.stop = n, o.J(c.state), c.id;
523
523
  }
524
524
  He(t, e, i, s, r, n, o) {
525
- const c = this.Be(y.TRIANGLE);
525
+ const c = this.De(E.TRIANGLE);
526
526
  return c.params.x1 = t, c.params.y1 = e, c.params.x2 = i, c.params.y2 = s, c.params.x3 = r, c.params.y3 = n, o.J(c.state), c.id;
527
527
  }
528
528
  Ie(t, e, i, s, r, n, o, c, l, u) {
529
- const f = this.Be(y.BEZIER_CURVE);
529
+ const f = this.De(E.BEZIER_CURVE);
530
530
  return f.params.x1 = t, f.params.y1 = e, f.params.cp1x = i, f.params.cp1y = s, f.params.cp2x = r, f.params.cp2y = n, f.params.x2 = o, f.params.y2 = c, f.params.thickness = l, u.J(f.state), f.id;
531
531
  }
532
532
  get length() {
@@ -540,43 +540,43 @@ class pt {
540
540
  }
541
541
  [Symbol.iterator]() {
542
542
  let t = 0;
543
- const e = this.Ee, i = this.Te;
543
+ const e = this.Ee, i = this.Pe;
544
544
  return { next: () => t < e ? { value: i[t++], done: !1 } : { value: void 0, done: !0 } };
545
545
  }
546
546
  }
547
- const P = class P {
547
+ const M = class M {
548
548
  static Xe(t, e, i = 0) {
549
549
  var n, o, c, l, u, f, g, v, m, d;
550
- const s = e || new Float32Array(P.FLOATS_PER_INSTANCE);
550
+ const s = e || new Float32Array(M.FLOATS_PER_INSTANCE);
551
551
  let r = i;
552
- return s[r++] = t.le[0], s[r++] = t.le[1], s[r++] = t.Ee[0], s[r++] = t.Ee[1], s[r++] = t.j[0], s[r++] = t.j[1], s[r++] = t.j[2], s[r++] = t.Y[0], s[r++] = t.Y[1], s[r++] = t.Y[2], s[r++] = t.Y[3], s[r++] = t.q[0], s[r++] = t.q[1], s[r++] = t.q[2], s[r++] = t.q[3], s[r++] = t.L[0], s[r++] = t.L[1], s[r++] = t.We[0], s[r++] = t.We[1], s[r++] = t.We[2], s[r++] = t.N, s[r++] = t.X, s[r++] = t.W, s[r++] = t.Ve[0], s[r++] = t.Ve[1], s[r++] = ((n = t.Ke) == null ? void 0 : n[0]) || 0, s[r++] = ((o = t.Ke) == null ? void 0 : o[1]) || 0, s[r++] = ((c = t.je) == null ? void 0 : c[0]) || 0, s[r++] = ((l = t.je) == null ? void 0 : l[1]) || 0, s[r++] = ((u = t.Ye) == null ? void 0 : u[0]) || 0, s[r++] = ((f = t.Ye) == null ? void 0 : f[1]) || 0, s[r++] = ((g = t.qe) == null ? void 0 : g[0]) || 0, s[r++] = ((v = t.qe) == null ? void 0 : v[1]) || 0, s[r++] = ((m = t.Ze) == null ? void 0 : m[0]) || 0, s[r++] = ((d = t.Ze) == null ? void 0 : d[1]) || 0, s;
552
+ return s[r++] = t.le[0], s[r++] = t.le[1], s[r++] = t.Ee[0], s[r++] = t.Ee[1], s[r++] = t.K[0], s[r++] = t.K[1], s[r++] = t.K[2], s[r++] = t.Y[0], s[r++] = t.Y[1], s[r++] = t.Y[2], s[r++] = t.Y[3], s[r++] = t.q[0], s[r++] = t.q[1], s[r++] = t.q[2], s[r++] = t.q[3], s[r++] = t.G[0], s[r++] = t.G[1], s[r++] = t.We[0], s[r++] = t.We[1], s[r++] = t.We[2], s[r++] = t.N, s[r++] = t.X, s[r++] = t.W, s[r++] = t.Ve[0], s[r++] = t.Ve[1], s[r++] = ((n = t.je) == null ? void 0 : n[0]) || 0, s[r++] = ((o = t.je) == null ? void 0 : o[1]) || 0, s[r++] = ((c = t.Ke) == null ? void 0 : c[0]) || 0, s[r++] = ((l = t.Ke) == null ? void 0 : l[1]) || 0, s[r++] = ((u = t.Ye) == null ? void 0 : u[0]) || 0, s[r++] = ((f = t.Ye) == null ? void 0 : f[1]) || 0, s[r++] = ((g = t.qe) == null ? void 0 : g[0]) || 0, s[r++] = ((v = t.qe) == null ? void 0 : v[1]) || 0, s[r++] = ((m = t.Ze) == null ? void 0 : m[0]) || 0, s[r++] = ((d = t.Ze) == null ? void 0 : d[1]) || 0, s;
553
553
  }
554
554
  static Qe(t) {
555
- const e = t.length * P.FLOATS_PER_INSTANCE, i = new Float32Array(e);
555
+ const e = t.length * M.FLOATS_PER_INSTANCE, i = new Float32Array(e);
556
556
  for (let s = 0; s < t.length; s++) {
557
- const r = s * P.FLOATS_PER_INSTANCE;
558
- P.Xe(t[s], i, r);
557
+ const r = s * M.FLOATS_PER_INSTANCE;
558
+ M.Xe(t[s], i, r);
559
559
  }
560
560
  return i;
561
561
  }
562
562
  };
563
- a(P, "BYTES_PER_INSTANCE", 140), a(P, "FLOATS_PER_INSTANCE", 35);
564
- let M = P;
565
- const T = class T {
563
+ h(M, "BYTES_PER_INSTANCE", 140), h(M, "FLOATS_PER_INSTANCE", 35);
564
+ let S = M;
565
+ const R = class R {
566
566
  };
567
- a(T, "STRIDE", M.BYTES_PER_INSTANCE), a(T, "ATTRIBUTES", { a_instancePosition: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 0, divisor: 1 }, a_instanceSize: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 8, divisor: 1 }, a_instanceCharacter: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 16, divisor: 1 }, a_instancePrimaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 28, divisor: 1 }, a_instanceSecondaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 44, divisor: 1 }, a_instanceRotation: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 60, divisor: 1 }, a_instanceTransform: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 68, divisor: 1 }, a_instanceGlobalRotation: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 80, divisor: 1 }, a_instanceRotationCenter: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 92, divisor: 1 }, a_instanceArcAngles: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 100, divisor: 1 }, a_instanceBezierCP1: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 108, divisor: 1 }, a_instanceBezierCP2: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 116, divisor: 1 }, a_instanceBezierStart: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 124, divisor: 1 }, a_instanceBezierEnd: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: T.STRIDE, offset: 132, divisor: 1 } });
568
- let Y = T;
569
- class mt {
567
+ h(R, "STRIDE", S.BYTES_PER_INSTANCE), h(R, "ATTRIBUTES", { a_instancePosition: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 0, divisor: 1 }, a_instanceSize: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 8, divisor: 1 }, a_instanceCharacter: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 16, divisor: 1 }, a_instancePrimaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 28, divisor: 1 }, a_instanceSecondaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 44, divisor: 1 }, a_instanceRotation: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 60, divisor: 1 }, a_instanceTransform: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 68, divisor: 1 }, a_instanceGlobalRotation: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 80, divisor: 1 }, a_instanceRotationCenter: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 92, divisor: 1 }, a_instanceArcAngles: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 100, divisor: 1 }, a_instanceBezierCP1: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 108, divisor: 1 }, a_instanceBezierCP2: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 116, divisor: 1 }, a_instanceBezierStart: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 124, divisor: 1 }, a_instanceBezierEnd: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: R.STRIDE, offset: 132, divisor: 1 } });
568
+ let W = R;
569
+ class yt {
570
570
  constructor(t, e = 1e3, i = 1.5) {
571
- a(this, "vt");
572
- a(this, "Je", []);
573
- a(this, "ts");
574
- a(this, "es");
575
- a(this, "ss", null);
576
- a(this, "rs", !0);
577
- a(this, "ns", 0);
578
- a(this, "hs", /* @__PURE__ */ new Map());
579
- a(this, "cs", null);
571
+ h(this, "vt");
572
+ h(this, "Je", []);
573
+ h(this, "ts");
574
+ h(this, "es");
575
+ h(this, "ss", null);
576
+ h(this, "rs", !0);
577
+ h(this, "ns", 0);
578
+ h(this, "hs", /* @__PURE__ */ new Map());
579
+ h(this, "cs", null);
580
580
  this.vt = t, this.ts = e, this.es = i, this.ls();
581
581
  }
582
582
  Fe(t) {
@@ -600,14 +600,14 @@ class mt {
600
600
  ls() {
601
601
  const t = this.vt;
602
602
  this.ss && t.deleteBuffer(this.ss), this.ss = t.createBuffer();
603
- const e = this.ts * M.BYTES_PER_INSTANCE;
603
+ const e = this.ts * S.BYTES_PER_INSTANCE;
604
604
  t.bindBuffer(t.ARRAY_BUFFER, this.ss), t.bufferData(t.ARRAY_BUFFER, e, t.DYNAMIC_DRAW), t.bindBuffer(t.ARRAY_BUFFER, null), this.rs = !0, this.ns = 0;
605
605
  }
606
606
  fs() {
607
607
  if (!this.rs || this.Je.length === 0) return;
608
608
  const t = this.vt, e = this.Je.length;
609
- this.us(e), (!this.cs || this.cs.length < e * M.FLOATS_PER_INSTANCE) && (this.cs = new Float32Array(e * M.FLOATS_PER_INSTANCE));
610
- const i = M.Qe(this.Je);
609
+ this.us(e), (!this.cs || this.cs.length < e * S.FLOATS_PER_INSTANCE) && (this.cs = new Float32Array(e * S.FLOATS_PER_INSTANCE));
610
+ const i = S.Qe(this.Je);
611
611
  t.bindBuffer(t.ARRAY_BUFFER, this.ss), e <= this.ns ? t.bufferSubData(t.ARRAY_BUFFER, 0, i) : t.bufferData(t.ARRAY_BUFFER, i, t.DYNAMIC_DRAW), t.bindBuffer(t.ARRAY_BUFFER, null), this.rs = !1, this.ns = e;
612
612
  }
613
613
  ds(t) {
@@ -615,7 +615,7 @@ class mt {
615
615
  if (!e) {
616
616
  e = /* @__PURE__ */ new Map();
617
617
  const i = this.vt;
618
- for (const s in Y.ATTRIBUTES) {
618
+ for (const s in W.ATTRIBUTES) {
619
619
  const r = i.getAttribLocation(t, s);
620
620
  r !== -1 && e.set(s, r);
621
621
  }
@@ -623,14 +623,14 @@ class mt {
623
623
  }
624
624
  return e;
625
625
  }
626
- Ae(t) {
626
+ ye(t) {
627
627
  if (!this.ss || this.Je.length === 0) return;
628
628
  const e = this.vt, i = t.Qt;
629
629
  this.fs();
630
630
  const s = this.ds(i);
631
631
  e.bindBuffer(e.ARRAY_BUFFER, this.ss);
632
632
  for (const [r, n] of s) {
633
- const o = Y.ATTRIBUTES[r];
633
+ const o = W.ATTRIBUTES[r];
634
634
  o && (e.enableVertexAttribArray(n), e.vertexAttribPointer(n, o.size, o.type, o.normalized, o.stride, o.offset), e.vertexAttribDivisor(n, o.divisor));
635
635
  }
636
636
  }
@@ -638,30 +638,30 @@ class mt {
638
638
  const e = this.vt, i = this.ds(t.Qt);
639
639
  for (const [, s] of i) e.disableVertexAttribArray(s), e.vertexAttribDivisor(s, 0);
640
640
  }
641
- we(t, e) {
641
+ Ce(t, e) {
642
642
  this.Je.length !== 0 && this.vt.drawArraysInstanced(t, 0, e, this.Je.length);
643
643
  }
644
- Gt() {
644
+ kt() {
645
645
  this.ss && this.vt.deleteBuffer(this.ss);
646
646
  }
647
647
  }
648
- class _ {
648
+ class D {
649
649
  constructor(t, e, i, s) {
650
- a(this, "vt");
651
- a(this, "ps");
652
- a(this, "gs");
653
- a(this, "_s");
654
- a(this, "vs", null);
655
- this.vt = t, this.ps = e, this.gs = i, this._s = s;
650
+ h(this, "vt");
651
+ h(this, "ps");
652
+ h(this, "_s");
653
+ h(this, "gs");
654
+ h(this, "vs", null);
655
+ this.vt = t, this.ps = e, this._s = i, this.gs = s;
656
656
  const r = this.vt.createBuffer();
657
657
  if (!r) throw Error("Failed to create unit geometry buffer");
658
- this.vt.bindBuffer(this.vt.ARRAY_BUFFER, r), this.vt.bufferData(this.vt.ARRAY_BUFFER, this._s.As, this.vt.STATIC_DRAW), this.vt.bindBuffer(this.vt.ARRAY_BUFFER, null), this.vs = r;
658
+ this.vt.bindBuffer(this.vt.ARRAY_BUFFER, r), this.vt.bufferData(this.vt.ARRAY_BUFFER, this.gs.ws, this.vt.STATIC_DRAW), this.vt.bindBuffer(this.vt.ARRAY_BUFFER, null), this.vs = r;
659
659
  }
660
660
  get type() {
661
- return this.gs;
661
+ return this._s;
662
662
  }
663
663
  get unitGeometry() {
664
- return this._s;
664
+ return this.gs;
665
665
  }
666
666
  get unitBuffer() {
667
667
  return this.vs;
@@ -669,149 +669,149 @@ class _ {
669
669
  get batch() {
670
670
  return this.ps;
671
671
  }
672
- $e() {
672
+ Me() {
673
673
  this.ps.clear();
674
674
  }
675
- ye() {
675
+ we() {
676
676
  return !this.ps.isEmpty;
677
677
  }
678
- Gt() {
679
- this.ps.Gt(), this.vt.deleteBuffer(this.vs);
678
+ kt() {
679
+ this.ps.kt(), this.vt.deleteBuffer(this.vs);
680
680
  }
681
- ws(t, e, i, s, r) {
682
- const n = this.Cs(t, e, i, s, r.N || 0, r.X || 0, r.W || 0);
683
- return { le: [t, e], Ee: [i, s], j: r.j || [0, 0, 0], Y: r.Y || [1, 1, 1, 1], q: r.q || [0, 0, 0, 1], L: r.L || [0, 0], We: [r.D ? 1 : 0, r.V ? 1 : 0, r.K ? 1 : 0], N: n.radiansX, X: n.radiansY, W: n.radiansZ, Ve: [n.centerX, n.centerY] };
681
+ Cs(t, e, i, s, r) {
682
+ const n = this.As(t, e, i, s, r.N || 0, r.X || 0, r.W || 0);
683
+ return { le: [t, e], Ee: [i, s], K: r.K || [0, 0, 0], Y: r.Y || [1, 1, 1, 1], q: r.q || [0, 0, 0, 1], G: r.G || [0, 0], We: [r.k ? 1 : 0, r.V ? 1 : 0, r.j ? 1 : 0], N: n.radiansX, X: n.radiansY, W: n.radiansZ, Ve: [n.centerX, n.centerY] };
684
684
  }
685
685
  bs(t, e) {
686
- const i = k(this.vt) || [0, 0, this.vt.canvas.width, this.vt.canvas.height];
686
+ const i = H(this.vt) || [0, 0, this.vt.canvas.width, this.vt.canvas.height];
687
687
  return { nx: t / i[2] * 2 - 1, ny: 1 - e / i[3] * 2 };
688
688
  }
689
- $s(t, e, i) {
689
+ Ms(t, e, i) {
690
690
  const s = this.bs(e, i);
691
691
  t.Ve = [s.nx, s.ny];
692
692
  }
693
- Cs(t, e, i, s, r, n, o) {
694
- const c = k(this.vt) || [0, 0, this.vt.canvas.width, this.vt.canvas.height], l = c[2], u = c[3];
693
+ As(t, e, i, s, r, n, o) {
694
+ const c = H(this.vt) || [0, 0, this.vt.canvas.width, this.vt.canvas.height], l = c[2], u = c[3];
695
695
  return { centerX: (t + i / 2) / l * 2 - 1, centerY: 1 - (e + s / 2) / u * 2, radiansX: -r * Math.PI / 180, radiansY: -n * Math.PI / 180, radiansZ: -o * Math.PI / 180, aspectRatio: l / u };
696
696
  }
697
697
  }
698
- const vt = { As: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1]), be: 6, Ce: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
699
- class At extends _ {
698
+ const xt = { ws: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1]), be: 6, Ae: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
699
+ class Et extends D {
700
700
  constructor(t, e) {
701
- super(t, e, y.RECTANGLE, vt);
701
+ super(t, e, E.RECTANGLE, xt);
702
702
  }
703
703
  Fe(t, e) {
704
- const i = this.ws(t.x, t.y, t.width, t.height, e);
704
+ const i = this.Cs(t.x, t.y, t.width, t.height, e);
705
705
  return this.ps.Fe(i);
706
706
  }
707
707
  }
708
- const xt = { As: new Float32Array([0, -0.5, 0, 0, 1, -0.5, 1, 0, 0, 0.5, 0, 1, 0, 0.5, 0, 1, 1, -0.5, 1, 0, 1, 0.5, 1, 1]), be: 6, Ce: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
709
- class Et extends _ {
708
+ const wt = { ws: new Float32Array([0, -0.5, 0, 0, 1, -0.5, 1, 0, 0, 0.5, 0, 1, 0, 0.5, 0, 1, 1, -0.5, 1, 0, 1, 0.5, 1, 1]), be: 6, Ae: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
709
+ class Tt extends D {
710
710
  constructor(t, e) {
711
- super(t, e, y.LINE, xt);
711
+ super(t, e, E.LINE, wt);
712
712
  }
713
713
  Fe(t, e) {
714
- const i = t.x2 - t.x1, s = t.y2 - t.y1, r = Math.hypot(i, s), n = t.thickness || e.I || 1, o = t.x1 + i / 2, c = t.y1 + s / 2, l = o - r / 2, u = c, f = this.ws(l, u, r, n, e);
715
- return this.$s(f, o, c), this.ps.Fe(f);
714
+ const i = t.x2 - t.x1, s = t.y2 - t.y1, r = Math.hypot(i, s), n = t.thickness || e.I || 1, o = t.x1 + i / 2, c = t.y1 + s / 2, l = o - r / 2, u = c, f = this.Cs(l, u, r, n, e);
715
+ return this.Ms(f, o, c), this.ps.Fe(f);
716
716
  }
717
717
  }
718
- const yt = { As: function(h = 32) {
719
- const t = [], e = 2 * Math.PI / h;
720
- for (let i = 0; i < h; i++) {
721
- const s = i * e, r = (i + 1) % h * e, n = Math.cos(s), o = Math.sin(s), c = 0.5 * (n + 1), l = 0.5 * (o + 1), u = Math.cos(r), f = Math.sin(r), g = 0.5 * (u + 1), v = 0.5 * (f + 1);
718
+ const bt = { ws: function(a = 32) {
719
+ const t = [], e = 2 * Math.PI / a;
720
+ for (let i = 0; i < a; i++) {
721
+ const s = i * e, r = (i + 1) % a * e, n = Math.cos(s), o = Math.sin(s), c = 0.5 * (n + 1), l = 0.5 * (o + 1), u = Math.cos(r), f = Math.sin(r), g = 0.5 * (u + 1), v = 0.5 * (f + 1);
722
722
  t.push(0, 0, 0.5, 0.5, n, o, c, l, u, f, g, v);
723
723
  }
724
724
  return new Float32Array(t);
725
- }(32), be: 96, Ce: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
726
- class wt extends _ {
725
+ }(32), be: 96, Ae: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
726
+ class Rt extends D {
727
727
  constructor(t, e) {
728
- super(t, e, y.ELLIPSE, yt);
728
+ super(t, e, E.ELLIPSE, bt);
729
729
  }
730
730
  Fe(t, e) {
731
- const i = this.ws(t.x, t.y, t.width, t.height, e);
732
- return this.$s(i, t.x, t.y), this.ps.Fe(i);
731
+ const i = this.Cs(t.x, t.y, t.width, t.height, e);
732
+ return this.Ms(i, t.x, t.y), this.ps.Fe(i);
733
733
  }
734
734
  }
735
- let bt = { As: function(h) {
735
+ let Ct = { ws: function(a) {
736
736
  const t = [];
737
- for (let e = 0; e < h; e++) {
738
- const i = e / h, s = (e + 1) / h;
737
+ for (let e = 0; e < a; e++) {
738
+ const i = e / a, s = (e + 1) / a;
739
739
  t.push(i, 0, i, 0, i, 1, i, 1, s, 1, s, 1);
740
740
  }
741
741
  return new Float32Array(t);
742
- }(32), be: 96, Ce: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
743
- class Rt extends _ {
742
+ }(32), be: 96, Ae: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
743
+ class Ft extends D {
744
744
  constructor(t, e) {
745
- super(t, e, y.ARC, bt);
745
+ super(t, e, E.ARC, Ct);
746
746
  }
747
747
  Fe(t, e) {
748
- const i = t.x - t.width / 2, s = t.y - t.height / 2, r = t.start * Math.PI / 180, n = t.stop * Math.PI / 180, o = this.ws(i, s, t.width, t.height, e);
749
- return this.$s(o, t.x, t.y), o.Ke = [r, n], this.ps.Fe(o);
748
+ const i = t.x - t.width / 2, s = t.y - t.height / 2, r = t.start * Math.PI / 180, n = t.stop * Math.PI / 180, o = this.Cs(i, s, t.width, t.height, e);
749
+ return this.Ms(o, t.x, t.y), o.je = [r, n], this.ps.Fe(o);
750
750
  }
751
751
  }
752
- const Tt = { As: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0.5, 1, 0.5, 1]), be: 3, Ce: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
753
- class Ct extends _ {
752
+ const Ut = { ws: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0.5, 1, 0.5, 1]), be: 3, Ae: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
753
+ class Pt extends D {
754
754
  constructor(t, e) {
755
- super(t, e, y.TRIANGLE, Tt);
755
+ super(t, e, E.TRIANGLE, Ut);
756
756
  }
757
757
  Fe(t, e) {
758
- const i = Math.min(t.x1, t.x2, t.x3), s = Math.max(t.x1, t.x2, t.x3), r = Math.min(t.y1, t.y2, t.y3), n = s - i, o = Math.max(t.y1, t.y2, t.y3) - r, c = this.ws(i, r, n, o, e), l = i + 0.5 * n, u = r + o * (1 / 3);
759
- return this.$s(c, l, u), this.ps.Fe(c);
758
+ const i = Math.min(t.x1, t.x2, t.x3), s = Math.max(t.x1, t.x2, t.x3), r = Math.min(t.y1, t.y2, t.y3), n = s - i, o = Math.max(t.y1, t.y2, t.y3) - r, c = this.Cs(i, r, n, o, e), l = i + 0.5 * n, u = r + o * (1 / 3);
759
+ return this.Ms(c, l, u), this.ps.Fe(c);
760
760
  }
761
761
  }
762
- function et(h, t, e, i, s) {
763
- const r = 1 - h, n = r * r, o = h * h;
764
- return n * r * t + 3 * n * h * e + 3 * r * o * i + o * h * s;
762
+ function et(a, t, e, i, s) {
763
+ const r = 1 - a, n = r * r, o = a * a;
764
+ return n * r * t + 3 * n * a * e + 3 * r * o * i + o * a * s;
765
765
  }
766
- const Ut = { As: function(h = 16) {
766
+ const Lt = { ws: function(a = 16) {
767
767
  const t = [];
768
- for (let e = 0; e < h; e++) {
769
- const i = e / h, s = (e + 1) / h;
768
+ for (let e = 0; e < a; e++) {
769
+ const i = e / a, s = (e + 1) / a;
770
770
  t.push(i, -0.5, i, 0), t.push(s, -0.5, s, 0), t.push(i, 0.5, i, 1), t.push(i, 0.5, i, 1), t.push(s, -0.5, s, 0), t.push(s, 0.5, s, 1);
771
771
  }
772
772
  return new Float32Array(t);
773
- }(16), be: 96, Ce: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
774
- class Ft extends _ {
773
+ }(16), be: 96, Ae: WebGL2RenderingContext.TRIANGLES, fe: 16, ue: { le: { size: 2, offset: 0 }, de: { size: 2, offset: 8 } } };
774
+ class Mt extends D {
775
775
  constructor(t, e) {
776
- super(t, e, y.BEZIER_CURVE, Ut);
776
+ super(t, e, E.BEZIER_CURVE, Lt);
777
777
  }
778
778
  Fe(t, e) {
779
- const i = e.I || 1, s = et(0.5, t.x1, t.cp1x, t.cp2x, t.x2), r = et(0.5, t.y1, t.cp1y, t.cp2y, t.y2), n = this.ws(0, 0, 1, i, e);
780
- return this.$s(n, s, r), n.qe = [t.x1, t.y1], n.je = [t.cp1x, t.cp1y], n.Ye = [t.cp2x, t.cp2y], n.Ze = [t.x2, t.y2], this.ps.Fe(n);
779
+ const i = e.I || 1, s = et(0.5, t.x1, t.cp1x, t.cp2x, t.x2), r = et(0.5, t.y1, t.cp1y, t.cp2y, t.y2), n = this.Cs(0, 0, 1, i, e);
780
+ return this.Ms(n, s, r), n.qe = [t.x1, t.y1], n.Ke = [t.cp1x, t.cp1y], n.Ye = [t.cp2x, t.cp2y], n.Ze = [t.x2, t.y2], this.ps.Fe(n);
781
781
  }
782
782
  }
783
783
  class Bt {
784
784
  constructor(t) {
785
- a(this, "vt");
786
- a(this, "Ms", null);
787
- a(this, "Fs");
788
- a(this, "Rs", null);
789
- a(this, "zs", {});
790
- a(this, "Ps", null);
791
- a(this, "Ts", /* @__PURE__ */ new Map());
792
- a(this, "Ss");
793
- a(this, "Es");
794
- a(this, "Bs");
795
- a(this, "k", []);
796
- this.vt = t, this.Fs = new ft(t), this.Bs = new ht(), this.Ss = new gt(t, this), this.Es = new pt(), this.Ps = t.createBuffer(), H(this.vt, [0, 0, this.vt.canvas.width, this.vt.canvas.height]);
797
- }
798
- Gs(t) {
799
- let e = this.Ts.get(t);
785
+ h(this, "vt");
786
+ h(this, "$s", null);
787
+ h(this, "Fs");
788
+ h(this, "Ts", null);
789
+ h(this, "Rs", {});
790
+ h(this, "zs", null);
791
+ h(this, "Ps", /* @__PURE__ */ new Map());
792
+ h(this, "Ss");
793
+ h(this, "Es");
794
+ h(this, "Ds");
795
+ h(this, "O", []);
796
+ this.vt = t, this.Fs = new pt(t), this.Ds = new ht(), this.Ss = new vt(t, this), this.Es = new At(), this.zs = t.createBuffer(), k(this.vt, [0, 0, this.vt.canvas.width, this.vt.canvas.height]);
797
+ }
798
+ ks(t) {
799
+ let e = this.Ps.get(t);
800
800
  if (e) return e;
801
- const i = new mt(this.vt);
802
- return e = (0, { [y.RECTANGLE]: () => new At(this.vt, i), [y.LINE]: () => new Et(this.vt, i), [y.ELLIPSE]: () => new wt(this.vt, i), [y.ARC]: () => new Rt(this.vt, i), [y.TRIANGLE]: () => new Ct(this.vt, i), [y.BEZIER_CURVE]: () => new Ft(this.vt, i) }[t])(), this.Ts.set(t, e), e;
801
+ const i = new yt(this.vt);
802
+ return e = (0, { [E.RECTANGLE]: () => new Et(this.vt, i), [E.LINE]: () => new Tt(this.vt, i), [E.ELLIPSE]: () => new Rt(this.vt, i), [E.ARC]: () => new Ft(this.vt, i), [E.TRIANGLE]: () => new Pt(this.vt, i), [E.BEZIER_CURVE]: () => new Mt(this.vt, i) }[t])(), this.Ps.set(t, e), e;
803
803
  }
804
- Ds(t) {
805
- this.Ms !== t && (this.Ms = t, t.Xt());
804
+ Bs(t) {
805
+ this.$s !== t && (this.$s = t, t.Xt());
806
806
  }
807
- ae(t, e) {
808
- return this.Fs.ae(t, e);
807
+ he(t, e) {
808
+ return this.Fs.he(t, e);
809
809
  }
810
810
  ie() {
811
811
  return this.Fs.ie();
812
812
  }
813
- Tt() {
814
- return this.Fs.Tt();
813
+ Pt() {
814
+ return this.Fs.Pt();
815
815
  }
816
816
  re() {
817
817
  return this.Fs.re();
@@ -819,128 +819,128 @@ class Bt {
819
819
  ne() {
820
820
  return this.Fs.ne();
821
821
  }
822
- Ls(t) {
823
- this.Rs = t, t && (this.zs = {});
822
+ Gs(t) {
823
+ this.Ts = t, t && (this.Rs = {});
824
824
  }
825
- Kt(t, e) {
826
- this.zs[t] = e;
825
+ jt(t, e) {
826
+ this.Rs[t] = e;
827
827
  }
828
- Os(t) {
829
- Object.assign(this.zs, t);
828
+ Ls(t) {
829
+ Object.assign(this.Rs, t);
830
830
  }
831
831
  oe(t) {
832
832
  return this.Fs.oe(t);
833
833
  }
834
- ks(t, e, i, s, r) {
834
+ Os(t, e, i, s, r) {
835
835
  const n = this.ie(), o = { Ue: t.textures[0], Uf: t.textures[1], Ug: t.textures[2], Uh: t.textures[3], Ui: t.textures[4], Uj: [t.width, t.height] };
836
- this.Es.De(e, i, s, r, n, o, this.Bs);
836
+ this.Es.Be(e, i, s, r, n, o, this.Ds);
837
837
  }
838
838
  Hs(t, e, i, s, r) {
839
839
  const n = this.ne(), o = t.Is(), c = { Uk: o.texture, Ul: !!o.invert, Um: !!o.flipX, Un: !!o.flipY, Uo: o.charRotation, Up: o.charColorFixed, Uq: o.charColor, Ur: o.cellColorFixed, Us: o.cellColor, Ut: o.backgroundColor, Uu: o.charCount, Uv: o.charList };
840
- this.Es.De(e, i, s, r, n, c, this.Bs);
840
+ this.Es.Be(e, i, s, r, n, c, this.Ds);
841
841
  }
842
842
  Ns(t, e, i, s) {
843
843
  var d;
844
844
  const r = this.vt, n = r.canvas.width, o = r.canvas.height, c = t / n * 2 - 1, l = (t + i) / n * 2 - 1, u = 1 - e / o * 2, f = 1 - (e + s) / o * 2, g = new Float32Array([c, f, l, f, c, u, l, f, l, u, c, u]);
845
- r.bindBuffer(r.ARRAY_BUFFER, this.Ps), r.bufferData(r.ARRAY_BUFFER, g, r.DYNAMIC_DRAW);
846
- const v = ((d = this.Ms) == null ? void 0 : d.Qt) || r.getParameter(r.CURRENT_PROGRAM), m = v ? r.getAttribLocation(v, "a_position") : -1;
845
+ r.bindBuffer(r.ARRAY_BUFFER, this.zs), r.bufferData(r.ARRAY_BUFFER, g, r.DYNAMIC_DRAW);
846
+ const v = ((d = this.$s) == null ? void 0 : d.Qt) || r.getParameter(r.CURRENT_PROGRAM), m = v ? r.getAttribLocation(v, "a_position") : -1;
847
847
  m !== -1 && (r.enableVertexAttribArray(m), r.vertexAttribPointer(m, 2, r.FLOAT, !1, 8, 0)), r.drawArrays(r.TRIANGLES, 0, 6), m !== -1 && r.disableVertexAttribArray(m);
848
848
  }
849
849
  Xs(t, e, i, s) {
850
- this.Rs ? (this.Es.De(t, e, i, s, this.Rs, { ...this.zs }, this.Bs), this.Rs = null, this.zs = {}) : this.Es.Ge(t, e, i, s, this.Bs);
850
+ this.Ts ? (this.Es.Be(t, e, i, s, this.Ts, { ...this.Rs }, this.Ds), this.Ts = null, this.Rs = {}) : this.Es.ke(t, e, i, s, this.Ds);
851
851
  }
852
852
  Ws(t, e, i, s) {
853
- this.Es.Le(t, e, i, s, this.Bs.lineWeight, this.Bs);
853
+ this.Es.Ge(t, e, i, s, this.Ds.lineWeight, this.Ds);
854
854
  }
855
855
  Vs(t, e, i, s) {
856
- this.Es.Oe(t, e, i, s, this.Bs);
856
+ this.Es.Le(t, e, i, s, this.Ds);
857
857
  }
858
- Ks(t, e, i, s, r, n) {
859
- this.Es.He(t, e, i, s, r, n, this.Bs);
858
+ js(t, e, i, s, r, n) {
859
+ this.Es.He(t, e, i, s, r, n, this.Ds);
860
860
  }
861
- js(t, e, i, s, r, n, o, c) {
862
- const l = this.Bs.lineWeight;
863
- this.Es.Ie(t, e, i, s, r, n, o, c, l, this.Bs);
861
+ Ks(t, e, i, s, r, n, o, c) {
862
+ const l = this.Ds.lineWeight;
863
+ this.Es.Ie(t, e, i, s, r, n, o, c, l, this.Ds);
864
864
  }
865
865
  Ys(t, e, i = 1, s = {}) {
866
866
  return new q(this.vt, t, e, i, s, this, !0);
867
867
  }
868
868
  qs(t, e, i, s, r, n) {
869
- this.Es.ke(t, e, i, s, r, n, this.Bs);
869
+ this.Es.Oe(t, e, i, s, r, n, this.Ds);
870
870
  }
871
871
  Zs(t, e = t, i = t, s = 255) {
872
- this.state.ft(t, e, i, s), this.Ne(t / 255, e / 255, i / 255, s / 255);
872
+ this.Ds.ft(t, e, i, s), this.Ne(t / 255, e / 255, i / 255, s / 255);
873
873
  }
874
874
  Ne(t = 0, e = 0, i = 0, s = 0) {
875
875
  this.vt.clearColor(t, e, i, s), this.vt.clear(this.vt.COLOR_BUFFER_BIT);
876
876
  }
877
877
  Qs() {
878
- this.vt.viewport(0, 0, this.vt.canvas.width, this.vt.canvas.height), H(this.vt, [0, 0, this.vt.canvas.width, this.vt.canvas.height]);
878
+ this.vt.viewport(0, 0, this.vt.canvas.width, this.vt.canvas.height), k(this.vt, [0, 0, this.vt.canvas.width, this.vt.canvas.height]);
879
879
  }
880
880
  get context() {
881
881
  return this.vt;
882
882
  }
883
883
  get state() {
884
- return this.Bs;
884
+ return this.Ds;
885
885
  }
886
886
  Et(t) {
887
- this.k.push(this.Bs), this.Bs = t;
887
+ this.O.push(this.Ds), this.Ds = t;
888
888
  }
889
- Bt() {
890
- const t = this.k.pop();
891
- t && (this.Bs = t);
889
+ Dt() {
890
+ const t = this.O.pop();
891
+ t && (this.Ds = t);
892
892
  }
893
893
  St(t) {
894
- const e = t, i = k(this.vt) ?? this.vt.getParameter(this.vt.VIEWPORT), s = { shader: e, gl: this.vt, viewport: i };
895
- this.Ds(e);
894
+ const e = t, i = H(this.vt) ?? this.vt.getParameter(this.vt.VIEWPORT), s = { shader: e, gl: this.vt, viewport: i };
895
+ this.Bs(e);
896
896
  const r = /* @__PURE__ */ new Set();
897
- for (const n of this.Es) n.type === y.CUSTOM ? r.add(y.RECTANGLE) : r.add(n.type);
898
- for (const n of r) n !== y.CUSTOM && this.Gs(n);
899
- this.Ss.ve(s, this.Es, this.Ts), this.Es.Ne();
897
+ for (const n of this.Es) n.type === E.CUSTOM ? r.add(E.RECTANGLE) : r.add(n.type);
898
+ for (const n of r) n !== E.CUSTOM && this.ks(n);
899
+ this.Ss.ve(s, this.Es, this.Ps), this.Es.Ne();
900
900
  }
901
- Gt() {
902
- this.vt.deleteBuffer(this.Ps), this.Es.Ne();
903
- for (const t of this.Ts.values()) t.Gt();
904
- this.Fs.Gt(), this.Ss.Gt();
901
+ kt() {
902
+ this.vt.deleteBuffer(this.zs), this.Es.Ne();
903
+ for (const t of this.Ps.values()) t.kt();
904
+ this.Fs.kt(), this.Ss.kt();
905
905
  }
906
906
  }
907
- const w = { readShort: (h, t) => (w.t.uint16[0] = h[t] << 8 | h[t + 1], w.t.int16[0]), readUshort: (h, t) => h[t] << 8 | h[t + 1], readUshorts(h, t, e) {
907
+ const w = { readShort: (a, t) => (w.t.uint16[0] = a[t] << 8 | a[t + 1], w.t.int16[0]), readUshort: (a, t) => a[t] << 8 | a[t + 1], readUshorts(a, t, e) {
908
908
  const i = [];
909
- for (let s = 0; s < e; s++) i.push(w.readUshort(h, t + 2 * s));
909
+ for (let s = 0; s < e; s++) i.push(w.readUshort(a, t + 2 * s));
910
910
  return i;
911
- }, readUint(h, t) {
911
+ }, readUint(a, t) {
912
912
  const e = w.t.uint8;
913
- return e[3] = h[t], e[2] = h[t + 1], e[1] = h[t + 2], e[0] = h[t + 3], w.t.uint32[0];
914
- }, readASCII(h, t, e) {
913
+ return e[3] = a[t], e[2] = a[t + 1], e[1] = a[t + 2], e[0] = a[t + 3], w.t.uint32[0];
914
+ }, readASCII(a, t, e) {
915
915
  let i = "";
916
- for (let s = 0; s < e; s++) i += String.fromCharCode(h[t + s]);
916
+ for (let s = 0; s < e; s++) i += String.fromCharCode(a[t + s]);
917
917
  return i;
918
- }, writeUshort(h, t, e) {
919
- h[t] = e >>> 8 & 255, h[t + 1] = 255 & e;
920
- }, writeUint(h, t, e) {
921
- h[t] = e >>> 24 & 255, h[t + 1] = e >>> 16 & 255, h[t + 2] = e >>> 8 & 255, h[t + 3] = 255 & e;
922
- }, writeASCII(h, t, e) {
923
- for (let i = 0; i < e.length; i++) h[t + i] = 255 & e.charCodeAt(i);
918
+ }, writeUshort(a, t, e) {
919
+ a[t] = e >>> 8 & 255, a[t + 1] = 255 & e;
920
+ }, writeUint(a, t, e) {
921
+ a[t] = e >>> 24 & 255, a[t + 1] = e >>> 16 & 255, a[t + 2] = e >>> 8 & 255, a[t + 3] = 255 & e;
922
+ }, writeASCII(a, t, e) {
923
+ for (let i = 0; i < e.length; i++) a[t + i] = 255 & e.charCodeAt(i);
924
924
  }, t: (() => {
925
- const h = new ArrayBuffer(8);
926
- return { uint8: new Uint8Array(h), int16: new Int16Array(h), uint16: new Uint16Array(h), uint32: new Uint32Array(h) };
925
+ const a = new ArrayBuffer(8);
926
+ return { uint8: new Uint8Array(a), int16: new Int16Array(a), uint16: new Uint16Array(a), uint32: new Uint32Array(a) };
927
927
  })() };
928
- function X(h) {
929
- return h + 3 & -4;
928
+ function Y(a) {
929
+ return a + 3 & -4;
930
930
  }
931
- function V(h, t, e) {
931
+ function j(a, t, e) {
932
932
  const i = t + e;
933
933
  let s = 0;
934
934
  const r = w.t;
935
- for (let n = t; n < i; n += 4) r.uint8[3] = h[n] || 0, r.uint8[2] = h[n + 1] || 0, r.uint8[1] = h[n + 2] || 0, r.uint8[0] = h[n + 3] || 0, s = s + (r.uint32[0] >>> 0) >>> 0;
935
+ for (let n = t; n < i; n += 4) r.uint8[3] = a[n] || 0, r.uint8[2] = a[n + 1] || 0, r.uint8[1] = a[n + 2] || 0, r.uint8[0] = a[n + 3] || 0, s = s + (r.uint32[0] >>> 0) >>> 0;
936
936
  return s >>> 0;
937
937
  }
938
- class Lt {
938
+ class Gt {
939
939
  constructor(t) {
940
- a(this, "b");
941
- a(this, "p", 0);
942
- a(this, "bitbuf", 0);
943
- a(this, "bitcnt", 0);
940
+ h(this, "b");
941
+ h(this, "p", 0);
942
+ h(this, "bitbuf", 0);
943
+ h(this, "bitcnt", 0);
944
944
  this.b = t;
945
945
  }
946
946
  readBits(t) {
@@ -958,30 +958,30 @@ class Lt {
958
958
  return this.p;
959
959
  }
960
960
  }
961
- function N(h) {
961
+ function I(a) {
962
962
  let t = 32, e = 0;
963
- for (const o of h) o && (o < t && (t = o), o > e && (e = o));
963
+ for (const o of a) o && (o < t && (t = o), o > e && (e = o));
964
964
  if (e === 0) return { min: 0, max: 0, table: /* @__PURE__ */ new Map() };
965
965
  const i = new Uint32Array(e + 1);
966
- for (const o of h) o && i[o]++;
966
+ for (const o of a) o && i[o]++;
967
967
  const s = new Uint32Array(e + 1);
968
968
  let r = 0;
969
969
  i[0] = 0;
970
970
  for (let o = 1; o <= e; o++) r = r + i[o - 1] << 1, s[o] = r;
971
971
  const n = /* @__PURE__ */ new Map();
972
- for (let o = 0; o < h.length; o++) {
973
- const c = h[o];
972
+ for (let o = 0; o < a.length; o++) {
973
+ const c = a[o];
974
974
  if (!c) continue;
975
975
  const l = s[c]++;
976
976
  let u = n.get(c);
977
- u || (u = [], n.set(c, u)), u[Pt(l, c)] = o;
977
+ u || (u = [], n.set(c, u)), u[St(l, c)] = o;
978
978
  }
979
979
  return { min: t, max: e, table: n };
980
980
  }
981
- function j(h, t) {
981
+ function V(a, t) {
982
982
  let e = 0;
983
983
  for (let i = 1; i <= t.max; i++) {
984
- e |= h.readBits(1) << i - 1;
984
+ e |= a.readBits(1) << i - 1;
985
985
  const s = t.table.get(i);
986
986
  if (s && e < s.length) {
987
987
  const r = s[e];
@@ -990,14 +990,14 @@ function j(h, t) {
990
990
  }
991
991
  throw Error("Invalid Huffman code");
992
992
  }
993
- function Pt(h, t) {
993
+ function St(a, t) {
994
994
  let e = 0;
995
- for (let i = 0; i < t; i++) e = e << 1 | 1 & h, h >>>= 1;
995
+ for (let i = 0; i < t; i++) e = e << 1 | 1 & a, a >>>= 1;
996
996
  return e >>> 0;
997
997
  }
998
- function St(h) {
999
- if (h.length < 2) throw Error("ZLIB data too short");
1000
- const t = h[0], e = h[1];
998
+ function _t(a) {
999
+ if (a.length < 2) throw Error("ZLIB data too short");
1000
+ const t = a[0], e = a[1];
1001
1001
  if ((15 & t) != 8) throw Error("Unsupported ZLIB compression method");
1002
1002
  if (((t << 8) + e) % 31 != 0) throw Error("Bad ZLIB header check");
1003
1003
  let i = 2;
@@ -1024,72 +1024,72 @@ function St(h) {
1024
1024
  for (let A = 144; A <= 255; A++) d[A] = 9;
1025
1025
  for (let A = 256; A <= 279; A++) d[A] = 7;
1026
1026
  for (let A = 280; A <= 287; A++) d[A] = 8;
1027
- v = N(d), m = N(Array(32).fill(5));
1027
+ v = I(d), m = I(Array(32).fill(5));
1028
1028
  } else {
1029
- const d = r.readBits(5) + 257, A = r.readBits(5) + 1, p = r.readBits(4) + 4, E = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], x = Array(19).fill(0);
1030
- for (let F = 0; F < p; F++) x[E[F]] = r.readBits(3);
1031
- const C = N(x), b = [];
1032
- for (; b.length < d + A; ) {
1033
- const F = j(r, C);
1034
- if (F <= 15) b.push(F);
1035
- else if (F === 16) {
1036
- const O = r.readBits(2) + 3, S = b[b.length - 1] || 0;
1037
- for (let tt = 0; tt < O; tt++) b.push(S);
1038
- } else if (F === 17) {
1029
+ const d = r.readBits(5) + 257, A = r.readBits(5) + 1, p = r.readBits(4) + 4, x = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], y = Array(19).fill(0);
1030
+ for (let U = 0; U < p; U++) y[x[U]] = r.readBits(3);
1031
+ const C = I(y), T = [];
1032
+ for (; T.length < d + A; ) {
1033
+ const U = V(r, C);
1034
+ if (U <= 15) T.push(U);
1035
+ else if (U === 16) {
1036
+ const O = r.readBits(2) + 3, B = T[T.length - 1] || 0;
1037
+ for (let tt = 0; tt < O; tt++) T.push(B);
1038
+ } else if (U === 17) {
1039
1039
  const O = r.readBits(3) + 3;
1040
- for (let S = 0; S < O; S++) b.push(0);
1040
+ for (let B = 0; B < O; B++) T.push(0);
1041
1041
  } else {
1042
- if (F !== 18) throw Error("Invalid code length symbol");
1042
+ if (U !== 18) throw Error("Invalid code length symbol");
1043
1043
  {
1044
1044
  const O = r.readBits(7) + 11;
1045
- for (let S = 0; S < O; S++) b.push(0);
1045
+ for (let B = 0; B < O; B++) T.push(0);
1046
1046
  }
1047
1047
  }
1048
1048
  }
1049
- const R = b.slice(0, d), B = b.slice(d, d + A);
1050
- v = N(R), m = N(B);
1049
+ const b = T.slice(0, d), P = T.slice(d, d + A);
1050
+ v = I(b), m = I(P);
1051
1051
  }
1052
1052
  for (; ; ) {
1053
- const d = j(r, v);
1053
+ const d = V(r, v);
1054
1054
  if (d < 256) n.push(d);
1055
1055
  else {
1056
1056
  if (d === 256) break;
1057
1057
  if (d > 256 && d < 286) {
1058
1058
  const A = d - 257;
1059
1059
  let p = o[A];
1060
- const E = c[A];
1061
- E && (p += r.readBits(E));
1062
- const x = j(r, m);
1063
- if (x >= 30) throw Error("Invalid distance symbol");
1064
- let C = l[x];
1065
- const b = u[x];
1066
- b && (C += r.readBits(b));
1067
- const R = n.length - C;
1068
- if (R < 0) throw Error("Invalid distance");
1069
- for (let B = 0; B < p; B++) n.push(n[R + B] || 0);
1060
+ const x = c[A];
1061
+ x && (p += r.readBits(x));
1062
+ const y = V(r, m);
1063
+ if (y >= 30) throw Error("Invalid distance symbol");
1064
+ let C = l[y];
1065
+ const T = u[y];
1066
+ T && (C += r.readBits(T));
1067
+ const b = n.length - C;
1068
+ if (b < 0) throw Error("Invalid distance");
1069
+ for (let P = 0; P < p; P++) n.push(n[b + P] || 0);
1070
1070
  } else if (d === 286 || d === 287) throw Error("Reserved length symbol");
1071
1071
  }
1072
1072
  }
1073
1073
  }
1074
1074
  }
1075
1075
  }
1076
- }(new Lt(h.subarray(i)), s), new Uint8Array(s);
1076
+ }(new Gt(a.subarray(i)), s), new Uint8Array(s);
1077
1077
  }
1078
- function Dt(h) {
1079
- const t = w, e = new Uint8Array(h);
1078
+ function Dt(a) {
1079
+ const t = w, e = new Uint8Array(a);
1080
1080
  if (t.readASCII(e, 0, 4) !== "wOFF") throw Error("Invalid WOFF signature");
1081
1081
  const i = t.readUint(e, 4), s = t.readUshort(e, 12), r = t.readUint(e, 16), n = [];
1082
1082
  let o = 44;
1083
1083
  for (let p = 0; p < s; p++) {
1084
- const E = t.readASCII(e, o, 4), x = t.readUint(e, o + 4), C = t.readUint(e, o + 8), b = t.readUint(e, o + 12), R = t.readUint(e, o + 16);
1085
- n.push({ tag: E, offset: x, compLength: C, origLength: b, checksum: R }), o += 20;
1084
+ const x = t.readASCII(e, o, 4), y = t.readUint(e, o + 4), C = t.readUint(e, o + 8), T = t.readUint(e, o + 12), b = t.readUint(e, o + 16);
1085
+ n.push({ tag: x, offset: y, compLength: C, origLength: T, checksum: b }), o += 20;
1086
1086
  }
1087
1087
  for (const p of n) {
1088
- const E = new Uint8Array(e.buffer, p.offset, p.compLength);
1089
- if (p.compLength === p.origLength) p.data = new Uint8Array(E);
1090
- else if (p.data = St(E), p.data.length !== p.origLength) if (p.data.length < p.origLength) {
1091
- const x = new Uint8Array(p.origLength);
1092
- x.set(p.data), p.data = x;
1088
+ const x = new Uint8Array(e.buffer, p.offset, p.compLength);
1089
+ if (p.compLength === p.origLength) p.data = new Uint8Array(x);
1090
+ else if (p.data = _t(x), p.data.length !== p.origLength) if (p.data.length < p.origLength) {
1091
+ const y = new Uint8Array(p.origLength);
1092
+ y.set(p.data), p.data = y;
1093
1093
  } else p.data = p.data.subarray(0, p.origLength);
1094
1094
  }
1095
1095
  const c = s;
@@ -1098,120 +1098,120 @@ function Dt(h) {
1098
1098
  const f = 16 * l, g = 16 * c - f;
1099
1099
  let v = 12 + 16 * c;
1100
1100
  const m = {};
1101
- for (const p of n) m[p.tag] = v, v = X(v + p.data.length);
1101
+ for (const p of n) m[p.tag] = v, v = Y(v + p.data.length);
1102
1102
  const d = new Uint8Array(Math.max(r || 0, v));
1103
1103
  t.writeUint(d, 0, i), t.writeUshort(d, 4, c), t.writeUshort(d, 6, f), t.writeUshort(d, 8, u), t.writeUshort(d, 10, g);
1104
1104
  let A = 12;
1105
1105
  for (const p of n) {
1106
1106
  t.writeASCII(d, A, p.tag), A += 4;
1107
- let E = p.data;
1108
- if (p.tag === "head" && E.length >= 12) {
1109
- const x = new Uint8Array(E);
1110
- t.writeUint(x, 8, 0);
1111
- const C = V(x, 0, X(x.length));
1107
+ let x = p.data;
1108
+ if (p.tag === "head" && x.length >= 12) {
1109
+ const y = new Uint8Array(x);
1110
+ t.writeUint(y, 8, 0);
1111
+ const C = j(y, 0, Y(y.length));
1112
1112
  t.writeUint(d, A, C), A += 4;
1113
1113
  } else {
1114
- const x = V(E, 0, X(E.length));
1115
- t.writeUint(d, A, x), A += 4;
1114
+ const y = j(x, 0, Y(x.length));
1115
+ t.writeUint(d, A, y), A += 4;
1116
1116
  }
1117
1117
  t.writeUint(d, A, m[p.tag]), A += 4, t.writeUint(d, A, p.data.length), A += 4;
1118
1118
  }
1119
1119
  for (const p of n) {
1120
- const E = m[p.tag];
1121
- d.set(p.data, E);
1120
+ const x = m[p.tag];
1121
+ d.set(p.data, x);
1122
1122
  }
1123
1123
  if (n.find((p) => p.tag === "head")) {
1124
- const p = m.head, E = function(x, C) {
1125
- const b = w, R = C + 8, B = [x[R], x[R + 1], x[R + 2], x[R + 3]];
1126
- b.writeUint(x, R, 0);
1127
- const F = 2981146554 - (V(x, 0, X(x.length)) >>> 0) >>> 0;
1128
- return x[R] = B[0], x[R + 1] = B[1], x[R + 2] = B[2], x[R + 3] = B[3], F >>> 0;
1124
+ const p = m.head, x = function(y, C) {
1125
+ const T = w, b = C + 8, P = [y[b], y[b + 1], y[b + 2], y[b + 3]];
1126
+ T.writeUint(y, b, 0);
1127
+ const U = 2981146554 - (j(y, 0, Y(y.length)) >>> 0) >>> 0;
1128
+ return y[b] = P[0], y[b + 1] = P[1], y[b + 2] = P[2], y[b + 3] = P[3], U >>> 0;
1129
1129
  }(d, p);
1130
- t.writeUint(d, p + 8, E);
1130
+ t.writeUint(d, p + 8, x);
1131
1131
  }
1132
1132
  return d.buffer;
1133
1133
  }
1134
- const Mt = { parseTab(h, t, e) {
1134
+ const Ot = { parseTab(a, t, e) {
1135
1135
  const i = { tables: [], ids: {}, off: t };
1136
- h = new Uint8Array(h.buffer, t, e), t = 0;
1137
- const s = w, r = s.readUshort, n = r(h, t += 2);
1136
+ a = new Uint8Array(a.buffer, t, e), t = 0;
1137
+ const s = w, r = s.readUshort, n = r(a, t += 2);
1138
1138
  t += 2;
1139
1139
  const o = [];
1140
1140
  for (let c = 0; c < n; c++) {
1141
- const l = r(h, t), u = r(h, t += 2);
1141
+ const l = r(a, t), u = r(a, t += 2);
1142
1142
  t += 2;
1143
- const f = s.readUint(h, t);
1143
+ const f = s.readUint(a, t);
1144
1144
  t += 4;
1145
1145
  const g = `p${l}e${u}`;
1146
1146
  let v = o.indexOf(f);
1147
1147
  if (v === -1) {
1148
1148
  let m;
1149
1149
  v = i.tables.length, o.push(f);
1150
- const d = r(h, f);
1151
- m = d === 4 ? this.parse4(h, f) : d === 12 ? this.parse12(h, f) : { format: d }, i.tables.push(m);
1150
+ const d = r(a, f);
1151
+ m = d === 4 ? this.parse4(a, f) : d === 12 ? this.parse12(a, f) : { format: d }, i.tables.push(m);
1152
1152
  }
1153
1153
  i.ids[g] = v;
1154
1154
  }
1155
1155
  return i;
1156
- }, parse4(h, t) {
1157
- const e = w, i = e.readUshort, s = e.readUshorts, r = t, n = i(h, t += 2);
1156
+ }, parse4(a, t) {
1157
+ const e = w, i = e.readUshort, s = e.readUshorts, r = t, n = i(a, t += 2);
1158
1158
  t += 2;
1159
- const o = i(h, t += 2) >>> 1, c = { format: 4, searchRange: i(h, t += 2), entrySelector: 0, rangeShift: 0, endCount: [], startCount: [], idDelta: [], idRangeOffset: [], glyphIdArray: [] };
1160
- t += 2, c.entrySelector = i(h, t), t += 2, c.rangeShift = i(h, t), t += 2, c.endCount = s(h, t, o), t += 2 * o, t += 2, c.startCount = s(h, t, o), t += 2 * o;
1161
- for (let l = 0; l < o; l++) c.idDelta.push(e.readShort(h, t)), t += 2;
1162
- return c.idRangeOffset = s(h, t, o), t += 2 * o, c.glyphIdArray = s(h, t, r + n - t >> 1), c;
1163
- }, parse12(h, t) {
1159
+ const o = i(a, t += 2) >>> 1, c = { format: 4, searchRange: i(a, t += 2), entrySelector: 0, rangeShift: 0, endCount: [], startCount: [], idDelta: [], idRangeOffset: [], glyphIdArray: [] };
1160
+ t += 2, c.entrySelector = i(a, t), t += 2, c.rangeShift = i(a, t), t += 2, c.endCount = s(a, t, o), t += 2 * o, t += 2, c.startCount = s(a, t, o), t += 2 * o;
1161
+ for (let l = 0; l < o; l++) c.idDelta.push(e.readShort(a, t)), t += 2;
1162
+ return c.idRangeOffset = s(a, t, o), t += 2 * o, c.glyphIdArray = s(a, t, r + n - t >> 1), c;
1163
+ }, parse12(a, t) {
1164
1164
  const e = w.readUint;
1165
- e(h, t += 4), e(h, t += 4);
1166
- const i = e(h, t += 4);
1165
+ e(a, t += 4), e(a, t += 4);
1166
+ const i = e(a, t += 4);
1167
1167
  t += 4;
1168
1168
  const s = new Uint32Array(3 * i);
1169
- for (let r = 0; r < 3 * i; r += 3) s[r] = e(h, t + (r << 2)), s[r + 1] = e(h, t + (r << 2) + 4), s[r + 2] = e(h, t + (r << 2) + 8);
1169
+ for (let r = 0; r < 3 * i; r += 3) s[r] = e(a, t + (r << 2)), s[r + 1] = e(a, t + (r << 2) + 4), s[r + 2] = e(a, t + (r << 2) + 8);
1170
1170
  return { format: 12, groups: s };
1171
- } }, It = { parseTab(h, t, e) {
1171
+ } }, It = { parseTab(a, t, e) {
1172
1172
  const i = w;
1173
1173
  t += 18;
1174
- const s = i.readUshort(h, t);
1174
+ const s = i.readUshort(a, t);
1175
1175
  t += 2, t += 16;
1176
- const r = i.readShort(h, t);
1176
+ const r = i.readShort(a, t);
1177
1177
  t += 2;
1178
- const n = i.readShort(h, t);
1178
+ const n = i.readShort(a, t);
1179
1179
  t += 2;
1180
- const o = i.readShort(h, t);
1180
+ const o = i.readShort(a, t);
1181
1181
  t += 2;
1182
- const c = i.readShort(h, t);
1183
- return t += 2, t += 6, { unitsPerEm: s, xMin: r, yMin: n, xMax: o, yMax: c, indexToLocFormat: i.readShort(h, t) };
1184
- } }, _t = { parseTab(h, t, e) {
1182
+ const c = i.readShort(a, t);
1183
+ return t += 2, t += 6, { unitsPerEm: s, xMin: r, yMin: n, xMax: o, yMax: c, indexToLocFormat: i.readShort(a, t) };
1184
+ } }, Nt = { parseTab(a, t, e) {
1185
1185
  const i = w;
1186
1186
  t += 4;
1187
1187
  const s = ["ascender", "descender", "lineGap", "advanceWidthMax", "minLeftSideBearing", "minRightSideBearing", "xMaxExtent", "caretSlopeRise", "caretSlopeRun", "caretOffset", "res0", "res1", "res2", "res3", "metricDataFormat", "numberOfHMetrics"], r = {};
1188
1188
  for (let n = 0; n < s.length; n++) {
1189
1189
  const o = s[n], c = o === "advanceWidthMax" || o === "numberOfHMetrics" ? i.readUshort : i.readShort;
1190
- r[o] = c(h, t + 2 * n);
1190
+ r[o] = c(a, t + 2 * n);
1191
1191
  }
1192
1192
  return r;
1193
- } }, Ot = { parseTab(h, t, e, i) {
1193
+ } }, zt = { parseTab(a, t, e, i) {
1194
1194
  const s = w, r = [], n = [], o = i.maxp.numGlyphs, c = i.hhea.numberOfHMetrics;
1195
1195
  let l = 0, u = 0, f = 0;
1196
- for (; f < c; ) l = s.readUshort(h, t + (f << 2)), u = s.readShort(h, t + (f << 2) + 2), r.push(l), n.push(u), f++;
1196
+ for (; f < c; ) l = s.readUshort(a, t + (f << 2)), u = s.readShort(a, t + (f << 2) + 2), r.push(l), n.push(u), f++;
1197
1197
  for (; f < o; ) r.push(l), n.push(u), f++;
1198
1198
  return { aWidth: r, lsBearing: n };
1199
- } }, it = { cmap: Mt, head: It, hhea: _t, maxp: { parseTab(h, t, e) {
1199
+ } }, it = { cmap: Ot, head: It, hhea: Nt, maxp: { parseTab(a, t, e) {
1200
1200
  const i = w;
1201
- return i.readUint(h, t), t += 4, { numGlyphs: i.readUshort(h, t) };
1202
- } }, hmtx: Ot, loca: { parseTab(h, t, e, i) {
1201
+ return i.readUint(a, t), t += 4, { numGlyphs: i.readUshort(a, t) };
1202
+ } }, hmtx: zt, loca: { parseTab(a, t, e, i) {
1203
1203
  const s = w, r = [], n = i.head.indexToLocFormat, o = i.maxp.numGlyphs + 1;
1204
- if (n === 0) for (let c = 0; c < o; c++) r.push(s.readUshort(h, t + (c << 1)) << 1);
1205
- else if (n === 1) for (let c = 0; c < o; c++) r.push(s.readUint(h, t + (c << 2)));
1204
+ if (n === 0) for (let c = 0; c < o; c++) r.push(s.readUshort(a, t + (c << 1)) << 1);
1205
+ else if (n === 1) for (let c = 0; c < o; c++) r.push(s.readUint(a, t + (c << 2)));
1206
1206
  return r;
1207
- } }, glyf: { parseTab(h, t, e, i) {
1207
+ } }, glyf: { parseTab(a, t, e, i) {
1208
1208
  const s = [], r = i.maxp.numGlyphs;
1209
1209
  for (let n = 0; n < r; n++) s.push(null);
1210
1210
  return s;
1211
- }, Js(h, t) {
1212
- const e = w, i = h.ti, s = h.loca;
1211
+ }, Js(a, t) {
1212
+ const e = w, i = a.ti, s = a.loca;
1213
1213
  if (s[t] === s[t + 1]) return null;
1214
- const r = L.findTable(i, "glyf", h.ei);
1214
+ const r = L.findTable(i, "glyf", a.ei);
1215
1215
  if (!r) return null;
1216
1216
  let n = r[0] + s[t];
1217
1217
  const o = {};
@@ -1246,9 +1246,9 @@ const Mt = { parseTab(h, t, e) {
1246
1246
  for (let g = 0; g < l; g++) u += o.xs[g], f += o.ys[g], o.xs[g] = u, o.ys[g] = f;
1247
1247
  } else o.parts = [], o.endPts = [], o.flags = [], o.xs = [], o.ys = [];
1248
1248
  return o;
1249
- } } }, L = { parse(h) {
1250
- const t = new Uint8Array(h), e = w.readASCII(t, 0, 4);
1251
- if (e === "wOFF") h = Dt(h);
1249
+ } } }, L = { parse(a) {
1250
+ const t = new Uint8Array(a), e = w.readASCII(t, 0, 4);
1251
+ if (e === "wOFF") a = Dt(a);
1252
1252
  else if (e === "wOF2") throw Error("WOFF2 is not supported in this build (Brotli + WOFF2 transforms required)");
1253
1253
  return [((i, s, r, n) => {
1254
1254
  const o = it, c = { ti: i, si: s, ei: r };
@@ -1261,20 +1261,20 @@ const Mt = { parseTab(h, t, e) {
1261
1261
  }
1262
1262
  }
1263
1263
  return c;
1264
- })(new Uint8Array(h), 0, 0, {})];
1265
- }, findTable(h, t, e) {
1266
- const i = w, s = i.readUshort(h, e + 4);
1264
+ })(new Uint8Array(a), 0, 0, {})];
1265
+ }, findTable(a, t, e) {
1266
+ const i = w, s = i.readUshort(a, e + 4);
1267
1267
  let r = e + 12;
1268
1268
  for (let n = 0; n < s; n++) {
1269
- const o = i.readASCII(h, r, 4);
1270
- i.readUint(h, r + 4);
1271
- const c = i.readUint(h, r + 8), l = i.readUint(h, r + 12);
1269
+ const o = i.readASCII(a, r, 4);
1270
+ i.readUint(a, r + 4);
1271
+ const c = i.readUint(a, r + 8), l = i.readUint(a, r + 12);
1272
1272
  if (o === t) return [c, l];
1273
1273
  r += 16;
1274
1274
  }
1275
1275
  return null;
1276
1276
  }, T: it, B: w };
1277
- class Nt {
1277
+ class Xt {
1278
1278
  ii(t) {
1279
1279
  var i;
1280
1280
  const e = [];
@@ -1289,7 +1289,7 @@ class Nt {
1289
1289
  }), [...new Set(e)]) : [];
1290
1290
  }
1291
1291
  oi(t) {
1292
- return t.filter((e) => this.ai(e));
1292
+ return t.filter((e) => this.hi(e));
1293
1293
  }
1294
1294
  ri(t) {
1295
1295
  const e = [];
@@ -1298,7 +1298,7 @@ class Nt {
1298
1298
  const s = t.startCount[i], r = t.endCount[i];
1299
1299
  if (s !== 65535 || r !== 65535) {
1300
1300
  for (let n = s; n <= r; n++)
1301
- if (this.hi(t, n, i) > 0) try {
1301
+ if (this.ai(t, n, i) > 0) try {
1302
1302
  const o = String.fromCodePoint(n);
1303
1303
  e.push(o);
1304
1304
  } catch {
@@ -1321,7 +1321,7 @@ class Nt {
1321
1321
  }
1322
1322
  return e;
1323
1323
  }
1324
- hi(t, e, i) {
1324
+ ai(t, e, i) {
1325
1325
  if (t.idRangeOffset[i] === 0) return e + t.idDelta[i] & 65535;
1326
1326
  {
1327
1327
  const s = t.idRangeOffset[i] / 2 + (e - t.startCount[i]) - (t.startCount.length - i);
@@ -1332,15 +1332,15 @@ class Nt {
1332
1332
  }
1333
1333
  return 0;
1334
1334
  }
1335
- ai(t) {
1335
+ hi(t) {
1336
1336
  const e = t.codePointAt(0) || 0;
1337
1337
  return !(e >= 0 && e <= 31 && e !== 9 && e !== 10 && e !== 13 || e >= 127 && e <= 159);
1338
1338
  }
1339
1339
  }
1340
1340
  class Z {
1341
1341
  constructor() {
1342
- a(this, "ci", /* @__PURE__ */ new Map());
1343
- a(this, "li", /* @__PURE__ */ new Map());
1342
+ h(this, "ci", /* @__PURE__ */ new Map());
1343
+ h(this, "li", /* @__PURE__ */ new Map());
1344
1344
  }
1345
1345
  ui(t, e) {
1346
1346
  const i = `${this.fi(t)}_${e}`;
@@ -1351,19 +1351,19 @@ class Z {
1351
1351
  for (const n of s.tables) if (n.format === 4 ? r = this.di(e, n) : n.format === 12 && (r = this.pi(e, n)), r > 0) break;
1352
1352
  return this.ci.set(i, r), r;
1353
1353
  }
1354
- mi(t, e) {
1354
+ _i(t, e) {
1355
1355
  const i = e.codePointAt(0);
1356
1356
  return i === void 0 ? 0 : this.ui(t, i);
1357
1357
  }
1358
- gi(t, e) {
1358
+ mi(t, e) {
1359
1359
  const i = t.hmtx;
1360
1360
  return i && i.aWidth && i.aWidth.length !== 0 ? e < i.aWidth.length ? i.aWidth[e] : i.aWidth[i.aWidth.length - 1] : 0;
1361
1361
  }
1362
- _i(t, e) {
1362
+ gi(t, e) {
1363
1363
  const i = e / t.head.unitsPerEm, s = t.hhea.ascender * i, r = t.hhea.descender * i, n = t.hhea.lineGap * i;
1364
1364
  return { ascender: s, descender: r, lineGap: n, lineHeight: s - r + n, unitsPerEm: t.head.unitsPerEm, scale: i };
1365
1365
  }
1366
- yi() {
1366
+ wi() {
1367
1367
  this.ci.clear(), this.li.clear();
1368
1368
  }
1369
1369
  fi(t) {
@@ -1396,34 +1396,34 @@ class Z {
1396
1396
  return 0;
1397
1397
  }
1398
1398
  }
1399
- class Gt {
1399
+ class Yt {
1400
1400
  constructor(t) {
1401
- a(this, "Ai");
1402
- a(this, "wi");
1403
- a(this, "xt");
1404
- a(this, "Ci");
1405
- this.xt = t, this.Ci = new Z(), this.Ai = document.createElement("canvas"), this.wi = this.Ai.getContext("2d", { willReadFrequently: !0, alpha: !1 });
1401
+ h(this, "yi");
1402
+ h(this, "Ci");
1403
+ h(this, "xt");
1404
+ h(this, "Ai");
1405
+ this.xt = t, this.Ai = new Z(), this.yi = document.createElement("canvas"), this.Ci = this.yi.getContext("2d", { willReadFrequently: !0, alpha: !0 });
1406
1406
  }
1407
1407
  createTextureAtlas(t, e, i, s) {
1408
1408
  const r = t.length, n = Math.ceil(Math.sqrt(r)), o = Math.ceil(r / n), c = e.width * n, l = e.height * o, u = typeof s == "object" ? s : null;
1409
1409
  this.bi(c, l), this.xi(t, e, n, i, u);
1410
1410
  const f = this.xt.Ys(c, l, 1, { filter: "nearest" });
1411
- return f.zt(this.Ai), { framebuffer: f, columns: n, rows: o };
1411
+ return f.Rt(this.yi), { framebuffer: f, columns: n, rows: o };
1412
1412
  }
1413
1413
  bi(t, e) {
1414
- this.Ai.width = t, this.Ai.height = e, this.Ai.style.width = t + "px", this.Ai.style.height = t + "px", this.wi.imageSmoothingEnabled = !1, this.Ai.style.imageRendering = "pixelated", this.wi.fillStyle = "black", this.wi.fillRect(0, 0, t, e), this.wi.textBaseline = "top", this.wi.textAlign = "left", this.wi.fillStyle = "white";
1414
+ this.yi.width = t, this.yi.height = e, this.yi.style.width = t + "px", this.yi.style.height = e + "px", this.Ci.imageSmoothingEnabled = !1, this.yi.style.imageRendering = "pixelated", this.Ci.clearRect(0, 0, t, e), this.Ci.textBaseline = "top", this.Ci.textAlign = "left", this.Ci.fillStyle = "white";
1415
1415
  }
1416
1416
  xi(t, e, i, s, r) {
1417
1417
  const n = s / r.head.unitsPerEm;
1418
1418
  for (let o = 0; o < t.length; o++) {
1419
- const c = o % i, l = Math.floor(o / i), u = t[o].character, f = this.$i(r, u);
1419
+ const c = o % i, l = Math.floor(o / i), u = t[o].character, f = this.Mi(r, u);
1420
1420
  if (!f) continue;
1421
- const g = u.codePointAt(0) || 0, v = this.Ci.ui(r, g), m = this.Mi(r, v) * n, d = c * e.width, A = l * e.height, p = d + 0.5 * e.width, E = A + 0.5 * e.height, x = Math.round(p - 0.5 * e.width), C = Math.round(E - 0.5 * s), b = x + 0.5 * (e.width - m), R = C + r.hhea.ascender * n;
1422
- this.Fi(f, b, R, n);
1421
+ const g = u.codePointAt(0) || 0, v = this.Ai.ui(r, g), m = this.$i(r, v) * n, d = c * e.width, A = l * e.height, p = d + 0.5 * e.width, x = A + 0.5 * e.height, y = Math.round(p - 0.5 * e.width), C = Math.round(x - 0.5 * s), T = y + 0.5 * (e.width - m), b = C + r.hhea.ascender * n;
1422
+ this.Fi(f, T, b, n);
1423
1423
  }
1424
1424
  }
1425
- $i(t, e) {
1426
- const i = e.codePointAt(0) || 0, s = this.Ci.ui(t, i);
1425
+ Mi(t, e) {
1426
+ const i = e.codePointAt(0) || 0, s = this.Ai.ui(t, i);
1427
1427
  if (s === 0) return null;
1428
1428
  if (t.glyf && t.glyf[s] !== null) return t.glyf[s];
1429
1429
  if (L && L.T && L.T.glyf) {
@@ -1432,7 +1432,7 @@ class Gt {
1432
1432
  }
1433
1433
  return null;
1434
1434
  }
1435
- Mi(t, e) {
1435
+ $i(t, e) {
1436
1436
  const i = t.hmtx;
1437
1437
  return i && i.aWidth ? e < i.aWidth.length ? i.aWidth[e] : i.aWidth[i.aWidth.length - 1] : 0;
1438
1438
  }
@@ -1440,187 +1440,187 @@ class Gt {
1440
1440
  if (!t || !t.xs || t.noc === 0) return;
1441
1441
  const { xs: r, ys: n, endPts: o, flags: c } = t;
1442
1442
  if (!(r && n && o && c)) return;
1443
- this.wi.beginPath();
1443
+ this.Ci.beginPath();
1444
1444
  let l = 0;
1445
1445
  for (let u = 0; u < o.length; u++) {
1446
1446
  const f = o[u];
1447
1447
  if (!(f < l)) {
1448
1448
  if (f >= l) {
1449
1449
  const g = e + r[l] * s, v = i - n[l] * s;
1450
- this.wi.moveTo(g, v);
1450
+ this.Ci.moveTo(g, v);
1451
1451
  let m = l + 1;
1452
1452
  for (; m <= f; )
1453
1453
  if (1 & c[m]) {
1454
1454
  const d = e + r[m] * s, A = i - n[m] * s;
1455
- this.wi.lineTo(d, A), m++;
1455
+ this.Ci.lineTo(d, A), m++;
1456
1456
  } else {
1457
1457
  const d = e + r[m] * s, A = i - n[m] * s;
1458
1458
  let p = m + 1 > f ? l : m + 1;
1459
1459
  if (1 & c[p]) {
1460
- const E = e + r[p] * s, x = i - n[p] * s;
1461
- this.wi.quadraticCurveTo(d, A, E, x), m = p + 1;
1460
+ const x = e + r[p] * s, y = i - n[p] * s;
1461
+ this.Ci.quadraticCurveTo(d, A, x, y), m = p + 1;
1462
1462
  } else {
1463
- const E = (d + (e + r[p] * s)) / 2, x = (A + (i - n[p] * s)) / 2;
1464
- this.wi.quadraticCurveTo(d, A, E, x), m = p;
1463
+ const x = (d + (e + r[p] * s)) / 2, y = (A + (i - n[p] * s)) / 2;
1464
+ this.Ci.quadraticCurveTo(d, A, x, y), m = p;
1465
1465
  }
1466
1466
  }
1467
- this.wi.closePath();
1467
+ this.Ci.closePath();
1468
1468
  }
1469
1469
  l = f + 1;
1470
1470
  }
1471
1471
  }
1472
- this.wi.fill();
1472
+ this.Ci.fill();
1473
1473
  }
1474
1474
  }
1475
- class zt {
1475
+ class kt {
1476
1476
  constructor() {
1477
- a(this, "Ri");
1478
- this.Ri = new Z();
1477
+ h(this, "Ti");
1478
+ this.Ti = new Z();
1479
1479
  }
1480
- zi(t, e, i) {
1480
+ Ri(t, e, i) {
1481
1481
  let s = 0;
1482
- const r = this.Ri._i(i, e), n = r.lineHeight;
1482
+ const r = this.Ti.gi(i, e), n = r.lineHeight;
1483
1483
  for (const o of t) {
1484
- const c = this.Ri.mi(i, o);
1484
+ const c = this.Ti._i(i, o);
1485
1485
  if (c === 0) continue;
1486
- const l = this.Ri.gi(i, c) * r.scale;
1486
+ const l = this.Ti.mi(i, c) * r.scale;
1487
1487
  s = Math.max(s, l);
1488
1488
  }
1489
1489
  return { width: Math.ceil(s), height: Math.ceil(n) };
1490
1490
  }
1491
- yi() {
1492
- this.Ri.yi();
1491
+ wi() {
1492
+ this.Ti.wi();
1493
1493
  }
1494
1494
  }
1495
- class Wt {
1495
+ class Ht {
1496
1496
  constructor() {
1497
- a(this, "Ci");
1498
- this.Ci = new Z();
1497
+ h(this, "Ai");
1498
+ this.Ai = new Z();
1499
1499
  }
1500
1500
  createCharacterObjects(t, e) {
1501
1501
  return t.map((i, s) => {
1502
- const r = i.codePointAt(0) || 0, n = this.Pi(s);
1502
+ const r = i.codePointAt(0) || 0, n = this.zi(s);
1503
1503
  let o = 0;
1504
1504
  if (e.hmtx && e.hmtx.aWidth) {
1505
- const c = this.Ci.ui(e, r);
1505
+ const c = this.Ai.ui(e, r);
1506
1506
  c > 0 && e.hmtx.aWidth[c] !== void 0 && (o = e.hmtx.aWidth[c]);
1507
1507
  }
1508
1508
  return { character: i, unicode: r, color: n, advanceWidth: o };
1509
1509
  });
1510
1510
  }
1511
- Pi(t) {
1511
+ zi(t) {
1512
1512
  return [t % 256 / 255, Math.floor(t / 256) % 256 / 255, Math.floor(t / 65536) % 256 / 255];
1513
1513
  }
1514
- Ti(t, e) {
1515
- if (!G.v(typeof t == "string", "Character must be a string.", { method: "getCharacterColor", providedValue: t })) return [0, 0, 0];
1514
+ Pi(t, e) {
1515
+ if (!N.v(typeof t == "string", "Character must be a string.", { method: "getCharacterColor", providedValue: t })) return [0, 0, 0];
1516
1516
  const i = e.find((s) => s.character === t);
1517
1517
  return i ? i.color : [0, 0, 0];
1518
1518
  }
1519
1519
  Si(t, e) {
1520
- return G.v(typeof t == "string" && t.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: t }) ? Array.from(t).map((i) => this.Ti(i, e) || [0, 0, 0]) : [[0, 0, 0]];
1520
+ return N.v(typeof t == "string" && t.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: t }) ? Array.from(t).map((i) => this.Pi(i, e) || [0, 0, 0]) : [[0, 0, 0]];
1521
1521
  }
1522
1522
  }
1523
- class Xt {
1523
+ class Wt {
1524
1524
  constructor(t, e = 16) {
1525
- a(this, "Ei");
1526
- a(this, "Bi", []);
1527
- a(this, "Gi");
1528
- a(this, "Di", 16);
1529
- a(this, "Li", 0);
1530
- a(this, "Oi", 0);
1531
- a(this, "ki", { width: 0, height: 0 });
1532
- a(this, "Hi");
1533
- a(this, "Ii");
1534
- a(this, "Ni");
1535
- a(this, "Xi");
1536
- a(this, "Wi");
1537
- this.Di = e, this.Ii = new Nt(), this.Ni = new Gt(t), this.Xi = new zt(), this.Wi = new Wt();
1525
+ h(this, "Ei");
1526
+ h(this, "Di", []);
1527
+ h(this, "ki");
1528
+ h(this, "Bi", 16);
1529
+ h(this, "Gi", 0);
1530
+ h(this, "Li", 0);
1531
+ h(this, "Oi", { width: 0, height: 0 });
1532
+ h(this, "Hi");
1533
+ h(this, "Ii");
1534
+ h(this, "Ni");
1535
+ h(this, "Xi");
1536
+ h(this, "Wi");
1537
+ this.Bi = e, this.Ii = new Xt(), this.Ni = new Yt(t), this.Xi = new kt(), this.Wi = new Ht();
1538
1538
  }
1539
1539
  async Vi(t) {
1540
1540
  let e;
1541
1541
  if (t) {
1542
1542
  const i = await fetch(t);
1543
- if (!i.ok) throw new U(`Failed to load font file: ${i.status} ${i.statusText}`);
1543
+ if (!i.ok) throw new F(`Failed to load font file: ${i.status} ${i.statusText}`);
1544
1544
  e = await i.arrayBuffer();
1545
1545
  } else
1546
1546
  e = await (await fetch("data:font/woff;base64,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")).arrayBuffer();
1547
- await this.Ki(e), this.Ei = L.parse(e)[0], await this.ji();
1547
+ await this.ji(e), this.Ei = L.parse(e)[0], await this.Ki();
1548
1548
  }
1549
1549
  Yi(t) {
1550
- if (t === void 0) return this.Di;
1551
- this.Di = t, this.ki = this.Xi.zi(this.Bi.map((i) => i.character), this.Di, this.Ei);
1552
- const e = this.Ni.createTextureAtlas(this.Bi, this.ki, this.Di, this.Ei);
1553
- this.Gi = e.framebuffer, this.Li = e.columns, this.Oi = e.rows;
1550
+ if (t === void 0) return this.Bi;
1551
+ this.Bi = t, this.Oi = this.Xi.Ri(this.Di.map((i) => i.character), this.Bi, this.Ei);
1552
+ const e = this.Ni.createTextureAtlas(this.Di, this.Oi, this.Bi, this.Ei);
1553
+ this.ki = e.framebuffer, this.Gi = e.columns, this.Li = e.rows;
1554
1554
  }
1555
1555
  async qi(t) {
1556
1556
  try {
1557
1557
  const e = await fetch(t);
1558
- if (!e.ok) throw new U(`Failed to load font file: ${e.status} ${e.statusText}`);
1558
+ if (!e.ok) throw new F(`Failed to load font file: ${e.status} ${e.statusText}`);
1559
1559
  const i = await e.arrayBuffer();
1560
- await this.Ki(i);
1560
+ await this.ji(i);
1561
1561
  const s = L.parse(i);
1562
1562
  if (!s || s.length === 0) throw Error("Failed to parse font file");
1563
- this.Ei = s[0], await this.ji();
1563
+ this.Ei = s[0], await this.Ki();
1564
1564
  } catch (e) {
1565
- throw new U("Failed to load font: " + (e instanceof Error ? e.message : "Unknown error"), e);
1565
+ throw new F("Failed to load font: " + (e instanceof Error ? e.message : "Unknown error"), e);
1566
1566
  }
1567
1567
  }
1568
- async Ki(t) {
1568
+ async ji(t) {
1569
1569
  const e = Date.now();
1570
1570
  this.Hi = new FontFace("CustomFont_" + e, t), await this.Hi.load(), document.fonts.add(this.Hi);
1571
1571
  }
1572
- async ji() {
1572
+ async Ki() {
1573
1573
  const t = this.Ii.ii(this.Ei), e = this.Ii.oi(t);
1574
- this.Bi = this.Wi.createCharacterObjects(e, this.Ei), this.ki = this.Xi.zi(e, this.Di, this.Ei);
1575
- const i = this.Ni.createTextureAtlas(this.Bi, this.ki, this.Di, this.Ei);
1576
- this.Gi = i.framebuffer, this.Li = i.columns, this.Oi = i.rows;
1574
+ this.Di = this.Wi.createCharacterObjects(e, this.Ei), this.Oi = this.Xi.Ri(e, this.Bi, this.Ei);
1575
+ const i = this.Ni.createTextureAtlas(this.Di, this.Oi, this.Bi, this.Ei);
1576
+ this.ki = i.framebuffer, this.Gi = i.columns, this.Li = i.rows;
1577
1577
  }
1578
- Ti(t) {
1579
- return this.Wi.Ti(t, this.Bi);
1578
+ Pi(t) {
1579
+ return this.Wi.Pi(t, this.Di);
1580
1580
  }
1581
1581
  Si(t) {
1582
- return this.Wi.Si(t, this.Bi);
1582
+ return this.Wi.Si(t, this.Di);
1583
1583
  }
1584
- Gt() {
1585
- this.Gi.Gt(), document.fonts.delete(this.Hi);
1584
+ kt() {
1585
+ this.ki.kt(), document.fonts.delete(this.Hi);
1586
1586
  }
1587
1587
  get fontFramebuffer() {
1588
- return this.Gi;
1588
+ return this.ki;
1589
1589
  }
1590
1590
  get characters() {
1591
- return this.Bi;
1591
+ return this.Di;
1592
1592
  }
1593
1593
  get textureColumns() {
1594
- return this.Li;
1594
+ return this.Gi;
1595
1595
  }
1596
1596
  get textureRows() {
1597
- return this.Oi;
1597
+ return this.Li;
1598
1598
  }
1599
1599
  get maxGlyphDimensions() {
1600
- return this.ki;
1600
+ return this.Oi;
1601
1601
  }
1602
1602
  get fontSize() {
1603
- return this.Di;
1603
+ return this.Bi;
1604
1604
  }
1605
1605
  get font() {
1606
1606
  return this.Ei;
1607
1607
  }
1608
1608
  }
1609
- class Ht {
1609
+ class jt {
1610
1610
  constructor(t, e, i) {
1611
- a(this, "Zi");
1612
- a(this, "Qi");
1613
- a(this, "dt");
1614
- a(this, "gt");
1615
- a(this, "Ji");
1616
- a(this, "tr");
1617
- a(this, "er");
1618
- a(this, "sr");
1619
- a(this, "ir");
1611
+ h(this, "Zi");
1612
+ h(this, "Qi");
1613
+ h(this, "dt");
1614
+ h(this, "_t");
1615
+ h(this, "Ji");
1616
+ h(this, "tr");
1617
+ h(this, "er");
1618
+ h(this, "sr");
1619
+ h(this, "ir");
1620
1620
  this.er = t, this.sr = e, this.ir = i, this.rr();
1621
1621
  }
1622
1622
  rr() {
1623
- this.Zi = Math.floor(this.er.width / this.sr), this.Qi = Math.floor(this.er.height / this.ir), this.dt = this.Zi * this.sr, this.gt = this.Qi * this.ir, this.Ji = Math.floor((this.er.width - this.dt) / 2), this.tr = Math.floor((this.er.height - this.gt) / 2);
1623
+ this.Zi = Math.floor(this.er.width / this.sr), this.Qi = Math.floor(this.er.height / this.ir), this.dt = this.Zi * this.sr, this._t = this.Qi * this.ir, this.Ji = Math.floor((this.er.width - this.dt) / 2), this.tr = Math.floor((this.er.height - this._t) / 2);
1624
1624
  }
1625
1625
  nr(t, e) {
1626
1626
  this.sr = t, this.ir = e, this.rr();
@@ -1641,7 +1641,7 @@ class Ht {
1641
1641
  return this.dt;
1642
1642
  }
1643
1643
  get height() {
1644
- return this.gt;
1644
+ return this._t;
1645
1645
  }
1646
1646
  get offsetX() {
1647
1647
  return this.Ji;
@@ -1650,14 +1650,14 @@ class Ht {
1650
1650
  return this.tr;
1651
1651
  }
1652
1652
  }
1653
- class kt {
1653
+ class Vt {
1654
1654
  constructor(t = {}) {
1655
- a(this, "er");
1656
- a(this, "ar", null);
1657
- a(this, "hr", !1);
1658
- a(this, "cr");
1659
- a(this, "lr");
1660
- this.hr = t.overlay ?? !1, this.hr && t.canvas ? (this.ar = t.canvas, this.er = this.ur(), this.lr = !0, this.dr()) : t.canvas ? (this.er = t.canvas, this.lr = !1) : (this.er = this.pr(t.width, t.height), this.lr = !0), this.er.style.imageRendering = "pixelated";
1655
+ h(this, "er");
1656
+ h(this, "hr", null);
1657
+ h(this, "ar", !1);
1658
+ h(this, "cr");
1659
+ h(this, "lr");
1660
+ this.ar = t.overlay ?? !1, this.ar && t.canvas ? (this.hr = t.canvas, this.er = this.ur(), this.lr = !0, this.dr()) : t.canvas ? (this.er = t.canvas, this.lr = !1) : (this.er = this.pr(t.width, t.height), this.lr = !0), this.er.style.imageRendering = "pixelated";
1661
1661
  }
1662
1662
  pr(t, e) {
1663
1663
  const i = document.createElement("canvas");
@@ -1666,51 +1666,51 @@ class kt {
1666
1666
  ur() {
1667
1667
  const t = document.createElement("canvas");
1668
1668
  t.className = "textmodeCanvas", t.style.imageRendering = "pixelated";
1669
- const e = this.ar.getBoundingClientRect();
1669
+ const e = this.hr.getBoundingClientRect();
1670
1670
  let i = Math.round(e.width), s = Math.round(e.height);
1671
- if (this.ar instanceof HTMLVideoElement) {
1672
- const o = this.ar;
1671
+ if (this.hr instanceof HTMLVideoElement) {
1672
+ const o = this.hr;
1673
1673
  (i === 0 || s === 0) && o.videoWidth > 0 && o.videoHeight > 0 && (i = o.videoWidth, s = o.videoHeight);
1674
1674
  }
1675
1675
  t.width = i, t.height = s, t.style.position = "absolute", t.style.pointerEvents = "none";
1676
- const r = window.getComputedStyle(this.ar);
1676
+ const r = window.getComputedStyle(this.hr);
1677
1677
  let n = parseInt(r.zIndex || "0", 10);
1678
1678
  return isNaN(n) && (n = 0), t.style.zIndex = "" + (n + 1), t;
1679
1679
  }
1680
1680
  dr() {
1681
1681
  var t;
1682
- this.mr(), (t = this.ar.parentNode) == null || t.insertBefore(this.er, this.ar.nextSibling), window.ResizeObserver && (this.cr = new ResizeObserver(() => {
1683
- this.gr();
1684
- }), this.cr.observe(this.ar)), window.addEventListener("resize", () => {
1685
- this.gr();
1682
+ this._r(), (t = this.hr.parentNode) == null || t.insertBefore(this.er, this.hr.nextSibling), window.ResizeObserver && (this.cr = new ResizeObserver(() => {
1683
+ this.mr();
1684
+ }), this.cr.observe(this.hr)), window.addEventListener("resize", () => {
1685
+ this.mr();
1686
1686
  });
1687
1687
  }
1688
- mr() {
1689
- if (!this.ar) return;
1690
- const t = this.ar.getBoundingClientRect();
1691
- let e = this.ar.offsetParent;
1688
+ _r() {
1689
+ if (!this.hr) return;
1690
+ const t = this.hr.getBoundingClientRect();
1691
+ let e = this.hr.offsetParent;
1692
1692
  if (e && e !== document.body) {
1693
1693
  const i = e.getBoundingClientRect();
1694
1694
  this.er.style.top = t.top - i.top + "px", this.er.style.left = t.left - i.left + "px";
1695
1695
  } else this.er.style.top = t.top + window.scrollY + "px", this.er.style.left = t.left + window.scrollX + "px";
1696
1696
  }
1697
- gr(t, e) {
1698
- if (this.hr) {
1699
- const i = this.ar.getBoundingClientRect();
1697
+ mr(t, e) {
1698
+ if (this.ar) {
1699
+ const i = this.hr.getBoundingClientRect();
1700
1700
  let s = Math.round(i.width), r = Math.round(i.height);
1701
- if (this.ar instanceof HTMLVideoElement) {
1702
- const n = this.ar;
1701
+ if (this.hr instanceof HTMLVideoElement) {
1702
+ const n = this.hr;
1703
1703
  (s === 0 || r === 0) && n.videoWidth > 0 && n.videoHeight > 0 && (s = n.videoWidth, r = n.videoHeight);
1704
1704
  }
1705
- this.er.width = s, this.er.height = r, this.mr();
1705
+ this.er.width = s, this.er.height = r, this._r();
1706
1706
  } else this.er.width = t ?? this.er.width, this.er.height = e ?? this.er.height;
1707
1707
  }
1708
- _r() {
1708
+ gr() {
1709
1709
  const t = this.er.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
1710
- if (!t) throw new U("`textmode.js` requires WebGL2 support.");
1710
+ if (!t) throw new F("`textmode.js` requires WebGL2 support.");
1711
1711
  return t;
1712
1712
  }
1713
- Gt() {
1713
+ kt() {
1714
1714
  this.cr && this.cr.disconnect();
1715
1715
  const t = this.er.getContext("webgl") || this.er.getContext("webgl2");
1716
1716
  if (t) {
@@ -1723,7 +1723,7 @@ class kt {
1723
1723
  return this.er;
1724
1724
  }
1725
1725
  get targetCanvas() {
1726
- return this.ar;
1726
+ return this.hr;
1727
1727
  }
1728
1728
  get width() {
1729
1729
  return this.er.width;
@@ -1734,65 +1734,65 @@ class kt {
1734
1734
  }
1735
1735
  class z {
1736
1736
  constructor(t, e, i, s) {
1737
- a(this, "vr");
1738
- a(this, "dt");
1739
- a(this, "gt");
1740
- a(this, "vt");
1741
- a(this, "D", 0);
1742
- a(this, "V", 0);
1743
- a(this, "K", 0);
1744
- a(this, "L", [0, 0]);
1745
- a(this, "yr", "sampled");
1746
- a(this, "Ar", "fixed");
1747
- a(this, "Y", [1, 1, 1]);
1748
- a(this, "q", [0, 0, 0]);
1749
- a(this, "wr", [0, 0, 0, 1]);
1750
- a(this, "Cr", [[0.1, 0, 0]]);
1751
- a(this, "br");
1752
- this.vt = t, this.vr = e, this.dt = i, this.gt = s;
1753
- }
1754
- Gt() {
1737
+ h(this, "vr");
1738
+ h(this, "dt");
1739
+ h(this, "_t");
1740
+ h(this, "vt");
1741
+ h(this, "k", 0);
1742
+ h(this, "V", 0);
1743
+ h(this, "j", 0);
1744
+ h(this, "G", [0, 0]);
1745
+ h(this, "wr", "sampled");
1746
+ h(this, "yr", "fixed");
1747
+ h(this, "Y", [1, 1, 1, 1]);
1748
+ h(this, "q", [0, 0, 0, 1]);
1749
+ h(this, "Cr", [0, 0, 0, 1]);
1750
+ h(this, "Ar", [[0.1, 0, 0]]);
1751
+ h(this, "br");
1752
+ this.vt = t, this.vr = e, this.dt = i, this._t = s;
1753
+ }
1754
+ kt() {
1755
1755
  this.vt.deleteTexture(this.vr);
1756
1756
  }
1757
- $r(t) {
1757
+ Mr(t) {
1758
1758
  return typeof t == "boolean" ? t ? 1 : 0 : (t == null ? 0 : Number(t)) > 0 ? 1 : 0;
1759
1759
  }
1760
1760
  invert(t = !0) {
1761
- return this.D = this.$r(t), this;
1761
+ return this.k = this.Mr(t), this;
1762
1762
  }
1763
1763
  flipX(t = !0) {
1764
- return this.V = this.$r(t), this;
1764
+ return this.V = this.Mr(t), this;
1765
1765
  }
1766
1766
  flipY(t = !0) {
1767
- return this.K = this.$r(t), this;
1767
+ return this.j = this.Mr(t), this;
1768
1768
  }
1769
1769
  charRotation(t) {
1770
1770
  const e = 255 * t / 360, i = Math.floor(e) / 255, s = Math.round(e - Math.floor(e));
1771
- return this.L = [i, s], this;
1771
+ return this.G = [i, s], this;
1772
1772
  }
1773
1773
  Is() {
1774
- return { texture: this.vr, invert: this.D, flipX: this.V, flipY: this.K, charRotation: this.L, charColorFixed: this.yr === "fixed", charColor: this.Y, cellColorFixed: this.Ar === "fixed", cellColor: this.q, backgroundColor: this.wr, charCount: this.Cr.length, charList: this.Cr };
1774
+ return { texture: this.vr, invert: this.k, flipX: this.V, flipY: this.j, charRotation: this.G, charColorFixed: this.wr === "fixed", charColor: this.Y, cellColorFixed: this.yr === "fixed", cellColor: this.q, backgroundColor: this.Cr, charCount: this.Ar.length, charList: this.Ar };
1775
1775
  }
1776
1776
  charColorMode(t) {
1777
- return this.yr = t, this;
1777
+ return this.wr = t, this;
1778
1778
  }
1779
1779
  cellColorMode(t) {
1780
- return this.Ar = t, this;
1780
+ return this.yr = t, this;
1781
1781
  }
1782
- charColor(t, e, i) {
1783
- return this.Y = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255], this;
1782
+ charColor(t, e, i, s) {
1783
+ return this.Y = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255, (s ?? 255) / 255], this;
1784
1784
  }
1785
- cellColor(t, e, i) {
1786
- return this.q = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255], this;
1785
+ cellColor(t, e, i, s) {
1786
+ return this.q = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255, (s ?? 255) / 255], this;
1787
1787
  }
1788
1788
  background(t, e, i, s) {
1789
- return this.wr = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255, (s ?? 255) / 255], this;
1789
+ return this.Cr = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255, (s ?? 255) / 255], this;
1790
1790
  }
1791
1791
  characters(t) {
1792
1792
  const e = this.br(t).filter((i) => Array.isArray(i)).slice(0, 64);
1793
- return this.Cr = e, this;
1793
+ return this.Ar = e, this;
1794
1794
  }
1795
- static Mr(t, e, i) {
1795
+ static $r(t, e, i) {
1796
1796
  const s = t.context, r = s.createTexture();
1797
1797
  s.bindTexture(s.TEXTURE_2D, r), s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL, 1), s.texParameteri(s.TEXTURE_2D, s.TEXTURE_MIN_FILTER, s.NEAREST), s.texParameteri(s.TEXTURE_2D, s.TEXTURE_MAG_FILTER, s.NEAREST), s.texParameteri(s.TEXTURE_2D, s.TEXTURE_WRAP_S, s.CLAMP_TO_EDGE), s.texParameteri(s.TEXTURE_2D, s.TEXTURE_WRAP_T, s.CLAMP_TO_EDGE), s.texImage2D(s.TEXTURE_2D, 0, s.RGBA, s.RGBA, s.UNSIGNED_BYTE, e), s.bindTexture(s.TEXTURE_2D, null);
1798
1798
  const n = e.naturalWidth ?? e.width ?? e.videoWidth ?? 0, o = e.naturalHeight ?? e.height ?? e.videoHeight ?? 0, c = new z(s, r, n, o);
@@ -1805,58 +1805,58 @@ class z {
1805
1805
  return this.dt;
1806
1806
  }
1807
1807
  get height() {
1808
- return this.gt;
1808
+ return this._t;
1809
1809
  }
1810
1810
  }
1811
- class Yt {
1811
+ class Kt {
1812
1812
  constructor(t = 60) {
1813
- a(this, "Fr");
1814
- a(this, "Rr");
1815
- a(this, "zr", null);
1816
- a(this, "Pr", 0);
1817
- a(this, "Tr", !0);
1818
- a(this, "Sr", 0);
1819
- a(this, "Er", 0);
1820
- a(this, "Br", []);
1821
- a(this, "Gr", 10);
1822
- a(this, "Dr", 0);
1823
- this.Fr = t, this.Rr = 1e3 / t;
1813
+ h(this, "Fr");
1814
+ h(this, "Tr");
1815
+ h(this, "Rr", null);
1816
+ h(this, "zr", 0);
1817
+ h(this, "Pr", !0);
1818
+ h(this, "Sr", 0);
1819
+ h(this, "Er", 0);
1820
+ h(this, "Dr", []);
1821
+ h(this, "kr", 10);
1822
+ h(this, "Br", 0);
1823
+ this.Fr = t, this.Tr = 1e3 / t;
1824
1824
  }
1825
1825
  start(t) {
1826
- if (!this.Tr) return;
1827
- this.Pr = performance.now();
1826
+ if (!this.Pr) return;
1827
+ this.zr = performance.now();
1828
1828
  const e = (i) => {
1829
- if (!this.Tr) return void (this.zr = null);
1830
- const s = i - this.Pr;
1831
- s >= this.Rr && (t(), this.Pr = i - s % this.Rr), this.Tr && (this.zr = requestAnimationFrame(e));
1829
+ if (!this.Pr) return void (this.Rr = null);
1830
+ const s = i - this.zr;
1831
+ s >= this.Tr && (t(), this.zr = i - s % this.Tr), this.Pr && (this.Rr = requestAnimationFrame(e));
1832
1832
  };
1833
- this.zr = requestAnimationFrame(e);
1833
+ this.Rr = requestAnimationFrame(e);
1834
1834
  }
1835
1835
  stop() {
1836
- this.zr && (cancelAnimationFrame(this.zr), this.zr = null);
1836
+ this.Rr && (cancelAnimationFrame(this.Rr), this.Rr = null);
1837
1837
  }
1838
1838
  pause() {
1839
- this.Tr && (this.Tr = !1, this.stop());
1839
+ this.Pr && (this.Pr = !1, this.stop());
1840
1840
  }
1841
1841
  resume(t) {
1842
- this.Tr || (this.Tr = !0, this.start(t));
1842
+ this.Pr || (this.Pr = !0, this.start(t));
1843
1843
  }
1844
1844
  frameRate(t, e) {
1845
1845
  if (t === void 0) return this.Sr;
1846
- this.Fr = t, this.Rr = 1e3 / t, this.Tr && e && (this.stop(), this.start(e));
1846
+ this.Fr = t, this.Tr = 1e3 / t, this.Pr && e && (this.stop(), this.start(e));
1847
1847
  }
1848
1848
  measureFrameRate() {
1849
1849
  const t = performance.now();
1850
1850
  if (this.Er > 0) {
1851
1851
  const e = t - this.Er;
1852
- this.Br.push(e), this.Br.length > this.Gr && this.Br.shift();
1853
- const i = this.Br.reduce((s, r) => s + r, 0) / this.Br.length;
1852
+ this.Dr.push(e), this.Dr.length > this.kr && this.Dr.shift();
1853
+ const i = this.Dr.reduce((s, r) => s + r, 0) / this.Dr.length;
1854
1854
  this.Sr = 1e3 / i;
1855
1855
  }
1856
1856
  this.Er = t;
1857
1857
  }
1858
1858
  get isLooping() {
1859
- return this.Tr;
1859
+ return this.Pr;
1860
1860
  }
1861
1861
  get frameRateLimit() {
1862
1862
  return this.Fr;
@@ -1865,201 +1865,433 @@ class Yt {
1865
1865
  return this.Sr;
1866
1866
  }
1867
1867
  get frameCount() {
1868
- return this.Dr;
1868
+ return this.Br;
1869
1869
  }
1870
1870
  set frameCount(t) {
1871
- this.Dr = t;
1871
+ this.Br = t;
1872
1872
  }
1873
1873
  incrementFrame() {
1874
- this.Dr++;
1874
+ this.Br++;
1875
1875
  }
1876
1876
  resetFrameCount() {
1877
- this.Dr = 0;
1877
+ this.Br = 0;
1878
1878
  }
1879
1879
  }
1880
- class Vt {
1880
+ class ct {
1881
+ constructor(t) {
1882
+ h(this, "er");
1883
+ h(this, "Gr");
1884
+ h(this, "Lr", { x: -1, y: -1 });
1885
+ h(this, "Or", { x: -1, y: -1 });
1886
+ h(this, "Hr", null);
1887
+ h(this, "Ir", 0);
1888
+ h(this, "Nr");
1889
+ h(this, "Xr");
1890
+ h(this, "Wr");
1891
+ h(this, "Vr");
1892
+ h(this, "jr");
1893
+ h(this, "Kr");
1894
+ h(this, "Yr", !1);
1895
+ h(this, "qr");
1896
+ h(this, "Zr");
1897
+ h(this, "Qr");
1898
+ h(this, "Jr");
1899
+ h(this, "tn");
1900
+ this.er = t;
1901
+ }
1902
+ en(t) {
1903
+ const e = performance.now() + Math.max(0, t);
1904
+ e > this.Ir && (this.Ir = e);
1905
+ }
1906
+ sn() {
1907
+ return performance.now() < this.Ir;
1908
+ }
1909
+ rn(t) {
1910
+ const e = this.er.canvas;
1911
+ e.style.cursor = t == null || t === "" ? "" : t;
1912
+ }
1913
+ Vi(t) {
1914
+ this.Gr = t, this.nn();
1915
+ }
1916
+ hn() {
1917
+ if (this.Yr) return;
1918
+ const t = this.er.canvas;
1919
+ this.Nr = (e) => {
1920
+ this.an(e), this.cn(e);
1921
+ }, this.Xr = () => {
1922
+ this.Or = { ...this.Lr }, this.Lr.x = -1, this.Lr.y = -1, this.Hr = null;
1923
+ }, this.Wr = (e) => {
1924
+ this.an(e), this.ln(e);
1925
+ }, this.Vr = (e) => {
1926
+ this.an(e), this.un(e);
1927
+ }, this.jr = (e) => {
1928
+ this.an(e), this.fn(e);
1929
+ }, this.Kr = (e) => {
1930
+ this.an(e), this.dn(e);
1931
+ }, t.addEventListener("mousemove", this.Nr, { passive: !0 }), t.addEventListener("mouseleave", this.Xr, { passive: !0 }), t.addEventListener("mousedown", this.Wr, { passive: !0 }), t.addEventListener("mouseup", this.Vr, { passive: !0 }), t.addEventListener("click", this.jr, { passive: !0 }), t.addEventListener("wheel", this.Kr, { passive: !1 }), this.Yr = !0;
1932
+ }
1933
+ pn() {
1934
+ if (!this.Yr) return;
1935
+ const t = this.er.canvas;
1936
+ t.removeEventListener("mousemove", this.Nr), t.removeEventListener("mouseleave", this.Xr), t.removeEventListener("mousedown", this.Wr), t.removeEventListener("mouseup", this.Vr), t.removeEventListener("click", this.jr), t.removeEventListener("wheel", this.Kr), this.Yr = !1;
1937
+ }
1938
+ nn() {
1939
+ if (this.Yr) try {
1940
+ if (this.Hr) {
1941
+ const t = new MouseEvent("mousemove", { clientX: this.Hr.x, clientY: this.Hr.y, bubbles: !1, cancelable: !1 });
1942
+ this.an(t);
1943
+ } else this.Lr.x !== -1 && this.Lr.y !== -1 && (this.Lr.x >= this.Gr.cols || this.Lr.y >= this.Gr.rows) && (this.Lr.x = -1, this.Lr.y = -1);
1944
+ } catch {
1945
+ this.Lr.x = -1, this.Lr.y = -1;
1946
+ }
1947
+ }
1948
+ _n(t) {
1949
+ this.qr = t;
1950
+ }
1951
+ mn(t) {
1952
+ this.Zr = t;
1953
+ }
1954
+ gn(t) {
1955
+ this.Qr = t;
1956
+ }
1957
+ vn(t) {
1958
+ this.Jr = t;
1959
+ }
1960
+ wn(t) {
1961
+ this.tn = t;
1962
+ }
1963
+ yn() {
1964
+ return { x: this.Lr.x, y: this.Lr.y };
1965
+ }
1966
+ cn(t) {
1967
+ if (this.Jr && !this.sn()) {
1968
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, originalEvent: t };
1969
+ this.Jr(e);
1970
+ }
1971
+ }
1972
+ ln(t) {
1973
+ if (this.Zr && !this.sn()) {
1974
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, button: t.button, originalEvent: t };
1975
+ this.Zr(e);
1976
+ }
1977
+ }
1978
+ un(t) {
1979
+ if (this.Qr && !this.sn()) {
1980
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, button: t.button, originalEvent: t };
1981
+ this.Qr(e);
1982
+ }
1983
+ }
1984
+ fn(t) {
1985
+ if (this.qr && !this.sn()) {
1986
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, button: t.button, originalEvent: t };
1987
+ this.qr(e);
1988
+ }
1989
+ }
1990
+ dn(t) {
1991
+ if (this.tn && !this.sn()) {
1992
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, delta: { x: t.deltaX, y: t.deltaY }, originalEvent: t };
1993
+ this.tn(e);
1994
+ }
1995
+ }
1996
+ an(t) {
1997
+ const e = this.er.canvas;
1998
+ this.Or = { ...this.Lr }, this.Hr = { x: t.clientX, y: t.clientY };
1999
+ const i = e.getBoundingClientRect(), s = t.clientX - i.left, r = t.clientY - i.top, n = e.width / i.width, o = r * (e.height / i.height), c = s * n - this.Gr.offsetX, l = o - this.Gr.offsetY, u = Math.floor(c / this.Gr.cellWidth), f = Math.floor(l / this.Gr.cellHeight);
2000
+ u >= 0 && u < this.Gr.cols && f >= 0 && f < this.Gr.rows ? (this.Lr.x = u, this.Lr.y = f) : (this.Lr.x = -1, this.Lr.y = -1);
2001
+ }
2002
+ }
2003
+ const qt = Object.freeze(Object.defineProperty({ __proto__: null, MouseManager: ct }, Symbol.toStringTag, { value: "Module" }));
2004
+ class lt {
1881
2005
  constructor() {
1882
- a(this, "Lr", /* @__PURE__ */ new Map());
1883
- a(this, "Or", null);
1884
- a(this, "kr", null);
1885
- a(this, "Hr");
1886
- a(this, "Ir");
1887
- a(this, "Nr", !1);
1888
- a(this, "Xr");
1889
- a(this, "Wr");
1890
- a(this, "Vr", { ArrowUp: "UP_ARROW", ArrowDown: "DOWN_ARROW", ArrowLeft: "LEFT_ARROW", ArrowRight: "RIGHT_ARROW", F1: "F1", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", F10: "F10", F11: "F11", F12: "F12", Enter: "ENTER", Return: "RETURN", Tab: "TAB", Escape: "ESCAPE", Backspace: "BACKSPACE", Delete: "DELETE", Insert: "INSERT", Home: "HOME", End: "END", PageUp: "PAGE_UP", PageDown: "PAGE_DOWN", Shift: "SHIFT", Control: "CONTROL", Alt: "ALT", Meta: "META", " ": "SPACE" });
1891
- }
1892
- Kr() {
1893
- this.Nr || (this.Hr = (t) => {
1894
- this.jr(t);
1895
- }, this.Ir = (t) => {
1896
- this.Yr(t);
1897
- }, window.addEventListener("keydown", this.Hr, { passive: !1 }), window.addEventListener("keyup", this.Ir, { passive: !1 }), this.Nr = !0);
1898
- }
1899
- qr() {
1900
- this.Nr && (window.removeEventListener("keydown", this.Hr), window.removeEventListener("keyup", this.Ir), this.Nr = !1, this.Lr.clear(), this.Or = null, this.kr = null);
1901
- }
1902
- Zr(t) {
1903
- this.Xr = t;
1904
- }
1905
- Qr(t) {
1906
- this.Wr = t;
1907
- }
1908
- Jr(t) {
1909
- const e = this.tn(t), i = this.Lr.get(t) || this.Lr.get(e);
2006
+ h(this, "Cn", /* @__PURE__ */ new Map());
2007
+ h(this, "An", null);
2008
+ h(this, "bn", null);
2009
+ h(this, "xn");
2010
+ h(this, "Mn");
2011
+ h(this, "Yr", !1);
2012
+ h(this, "$n");
2013
+ h(this, "Fn");
2014
+ h(this, "Tn", { ArrowUp: "UP_ARROW", ArrowDown: "DOWN_ARROW", ArrowLeft: "LEFT_ARROW", ArrowRight: "RIGHT_ARROW", F1: "F1", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", F10: "F10", F11: "F11", F12: "F12", Enter: "ENTER", Return: "RETURN", Tab: "TAB", Escape: "ESCAPE", Backspace: "BACKSPACE", Delete: "DELETE", Insert: "INSERT", Home: "HOME", End: "END", PageUp: "PAGE_UP", PageDown: "PAGE_DOWN", Shift: "SHIFT", Control: "CONTROL", Alt: "ALT", Meta: "META", " ": "SPACE" });
2015
+ }
2016
+ hn() {
2017
+ this.Yr || (this.xn = (t) => {
2018
+ this.Rn(t);
2019
+ }, this.Mn = (t) => {
2020
+ this.zn(t);
2021
+ }, window.addEventListener("keydown", this.xn, { passive: !1 }), window.addEventListener("keyup", this.Mn, { passive: !1 }), this.Yr = !0);
2022
+ }
2023
+ pn() {
2024
+ this.Yr && (window.removeEventListener("keydown", this.xn), window.removeEventListener("keyup", this.Mn), this.Yr = !1, this.Cn.clear(), this.An = null, this.bn = null);
2025
+ }
2026
+ mn(t) {
2027
+ this.$n = t;
2028
+ }
2029
+ gn(t) {
2030
+ this.Fn = t;
2031
+ }
2032
+ Pn(t) {
2033
+ const e = this.Sn(t), i = this.Cn.get(t) || this.Cn.get(e);
1910
2034
  return (i == null ? void 0 : i.isPressed) || !1;
1911
2035
  }
1912
- en() {
1913
- return this.Or;
2036
+ En() {
2037
+ return this.An;
1914
2038
  }
1915
- sn() {
1916
- return this.kr;
2039
+ Dn() {
2040
+ return this.bn;
1917
2041
  }
1918
- rn() {
2042
+ kn() {
1919
2043
  const t = [];
1920
- for (const [e, i] of this.Lr) i.isPressed && t.push(e);
2044
+ for (const [e, i] of this.Cn) i.isPressed && t.push(e);
1921
2045
  return t;
1922
2046
  }
1923
- nn() {
1924
- return { ctrl: this.Jr("Control"), shift: this.Jr("Shift"), alt: this.Jr("Alt"), meta: this.Jr("Meta") };
2047
+ Bn() {
2048
+ return { ctrl: this.Pn("Control"), shift: this.Pn("Shift"), alt: this.Pn("Alt"), meta: this.Pn("Meta") };
1925
2049
  }
1926
- an() {
1927
- this.Lr.clear(), this.Or = null, this.kr = null;
2050
+ Gn() {
2051
+ this.Cn.clear(), this.An = null, this.bn = null;
1928
2052
  }
1929
- jr(t) {
2053
+ Rn(t) {
1930
2054
  const e = t.key, i = Date.now();
1931
- this.Lr.has(e) || this.Lr.set(e, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
1932
- const s = this.Lr.get(e);
1933
- if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = i, this.Or = e, this.Xr)) {
2055
+ this.Cn.has(e) || this.Cn.set(e, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
2056
+ const s = this.Cn.get(e);
2057
+ if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = i, this.An = e, this.$n)) {
1934
2058
  const r = { key: e, keyCode: t.keyCode, ctrlKey: t.ctrlKey, shiftKey: t.shiftKey, altKey: t.altKey, metaKey: t.metaKey, isPressed: !0, originalEvent: t };
1935
- this.Xr(r);
2059
+ this.$n(r);
1936
2060
  }
1937
2061
  }
1938
- Yr(t) {
2062
+ zn(t) {
1939
2063
  const e = t.key, i = Date.now();
1940
- this.Lr.has(e) || this.Lr.set(e, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
1941
- const s = this.Lr.get(e);
1942
- if (s.isPressed = !1, s.lastReleaseTime = i, this.kr = e, this.Wr) {
2064
+ this.Cn.has(e) || this.Cn.set(e, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
2065
+ const s = this.Cn.get(e);
2066
+ if (s.isPressed = !1, s.lastReleaseTime = i, this.bn = e, this.Fn) {
1943
2067
  const r = { key: e, keyCode: t.keyCode, ctrlKey: t.ctrlKey, shiftKey: t.shiftKey, altKey: t.altKey, metaKey: t.metaKey, isPressed: !1, originalEvent: t };
1944
- this.Wr(r);
2068
+ this.Fn(r);
1945
2069
  }
1946
2070
  }
1947
- tn(t) {
1948
- return this.Vr[t] || t.toLowerCase();
2071
+ Sn(t) {
2072
+ return this.Tn[t] || t.toLowerCase();
1949
2073
  }
1950
2074
  }
1951
- class jt {
1952
- constructor(t) {
1953
- a(this, "er");
1954
- a(this, "hn");
1955
- a(this, "cn", { x: -1, y: -1 });
1956
- a(this, "ln", { x: -1, y: -1 });
1957
- a(this, "un", null);
1958
- a(this, "fn");
1959
- a(this, "dn");
1960
- a(this, "pn");
1961
- a(this, "mn");
1962
- a(this, "gn");
1963
- a(this, "_n");
1964
- a(this, "Nr", !1);
1965
- a(this, "vn");
1966
- a(this, "yn");
1967
- a(this, "An");
1968
- a(this, "wn");
1969
- a(this, "Cn");
1970
- this.er = t;
2075
+ const Zt = Object.freeze(Object.defineProperty({ __proto__: null, KeyboardManager: lt }, Symbol.toStringTag, { value: "Module" }));
2076
+ class ut {
2077
+ constructor(t, e) {
2078
+ h(this, "er");
2079
+ h(this, "Ln");
2080
+ h(this, "Gr");
2081
+ h(this, "On", /* @__PURE__ */ new Map());
2082
+ h(this, "Hn", /* @__PURE__ */ new Map());
2083
+ h(this, "In", /* @__PURE__ */ new Map());
2084
+ h(this, "Nn", null);
2085
+ h(this, "Xn");
2086
+ h(this, "Wn");
2087
+ h(this, "Vn");
2088
+ h(this, "jn");
2089
+ h(this, "Kn");
2090
+ h(this, "Yn");
2091
+ h(this, "Yr", !1);
2092
+ h(this, "qn");
2093
+ h(this, "Zn");
2094
+ h(this, "Qn");
2095
+ h(this, "Jn");
2096
+ h(this, "eo");
2097
+ h(this, "so");
2098
+ h(this, "io");
2099
+ h(this, "ro");
2100
+ h(this, "no");
2101
+ h(this, "oo");
2102
+ h(this, "ho", 320);
2103
+ h(this, "ao", 350);
2104
+ h(this, "co", 10);
2105
+ h(this, "lo", 550);
2106
+ h(this, "uo", 14);
2107
+ h(this, "fo", 48);
2108
+ h(this, "do", 650);
2109
+ h(this, "po", 0.02);
2110
+ h(this, "_o", 2);
2111
+ h(this, "mo", 600);
2112
+ h(this, "vo", 0);
2113
+ h(this, "wo", null);
2114
+ this.er = t, this.Ln = e;
2115
+ const i = this.er.canvas;
2116
+ this.Xn = i.style.touchAction, this.Wn = i.style.userSelect, i.style.touchAction || (i.style.touchAction = "none"), i.style.userSelect || (i.style.userSelect = "none");
1971
2117
  }
1972
2118
  Vi(t) {
1973
- this.hn = t, this.bn();
2119
+ this.Gr = t, this.yo();
1974
2120
  }
1975
- Kr() {
1976
- if (this.Nr) return;
2121
+ hn() {
2122
+ if (this.Yr) return;
1977
2123
  const t = this.er.canvas;
1978
- this.fn = (e) => {
1979
- this.xn(e), this.$n(e);
1980
- }, this.dn = () => {
1981
- this.ln = { ...this.cn }, this.cn.x = -1, this.cn.y = -1, this.un = null;
1982
- }, this.pn = (e) => {
1983
- this.xn(e), this.Mn(e);
1984
- }, this.mn = (e) => {
1985
- this.xn(e), this.Fn(e);
1986
- }, this.gn = (e) => {
1987
- this.xn(e), this.Rn(e);
1988
- }, this._n = (e) => {
1989
- this.xn(e), this.zn(e);
1990
- }, t.addEventListener("mousemove", this.fn, { passive: !0 }), t.addEventListener("mouseleave", this.dn, { passive: !0 }), t.addEventListener("mousedown", this.pn, { passive: !0 }), t.addEventListener("mouseup", this.mn, { passive: !0 }), t.addEventListener("click", this.gn, { passive: !0 }), t.addEventListener("wheel", this._n, { passive: !1 }), this.Nr = !0;
1991
- }
1992
- qr() {
1993
- if (!this.Nr) return;
2124
+ this.Vn = (e) => {
2125
+ this.Co(e);
2126
+ }, this.jn = (e) => {
2127
+ this.Ao(e);
2128
+ }, this.Kn = (e) => {
2129
+ this.bo(e);
2130
+ }, this.Yn = (e) => {
2131
+ this.xo(e);
2132
+ }, t.addEventListener("touchstart", this.Vn, { passive: !1 }), t.addEventListener("touchmove", this.jn, { passive: !1 }), t.addEventListener("touchend", this.Kn, { passive: !1 }), t.addEventListener("touchcancel", this.Yn, { passive: !1 }), this.Yr = !0;
2133
+ }
2134
+ pn() {
2135
+ if (!this.Yr) return;
1994
2136
  const t = this.er.canvas;
1995
- t.removeEventListener("mousemove", this.fn), t.removeEventListener("mouseleave", this.dn), t.removeEventListener("mousedown", this.pn), t.removeEventListener("mouseup", this.mn), t.removeEventListener("click", this.gn), t.removeEventListener("wheel", this._n), this.Nr = !1;
1996
- }
1997
- bn() {
1998
- if (this.Nr) try {
1999
- if (this.un) {
2000
- const t = new MouseEvent("mousemove", { clientX: this.un.x, clientY: this.un.y, bubbles: !1, cancelable: !1 });
2001
- this.xn(t);
2002
- } else this.cn.x !== -1 && this.cn.y !== -1 && (this.cn.x >= this.hn.cols || this.cn.y >= this.hn.rows) && (this.cn.x = -1, this.cn.y = -1);
2003
- } catch {
2004
- this.cn.x = -1, this.cn.y = -1;
2137
+ t.removeEventListener("touchstart", this.Vn), t.removeEventListener("touchmove", this.jn), t.removeEventListener("touchend", this.Kn), t.removeEventListener("touchcancel", this.Yn), this.Yr = !1, this.Nn = null, this.On.clear(), this.Hn.clear(), this.In.forEach((e) => {
2138
+ e.longPressTimer !== null && window.clearTimeout(e.longPressTimer);
2139
+ }), this.In.clear(), this.wo = null, this.vo = 0, t.style.touchAction = this.Xn, t.style.userSelect = this.Wn;
2140
+ }
2141
+ yo() {
2142
+ if (!this.Gr || this.On.size === 0) return;
2143
+ const t = /* @__PURE__ */ new Map();
2144
+ for (const e of this.On.values()) {
2145
+ const i = this.Mo(e.clientX, e.clientY, e.id, e);
2146
+ t.set(e.id, i);
2005
2147
  }
2148
+ this.On = t;
2006
2149
  }
2007
- Pn(t) {
2008
- this.vn = t;
2009
- }
2010
- Zr(t) {
2011
- this.yn = t;
2150
+ $o() {
2151
+ return Array.from(this.On.values()).map((t) => ({ ...t }));
2012
2152
  }
2013
- Qr(t) {
2014
- this.An = t;
2153
+ Fo(t) {
2154
+ this.qn = t;
2015
2155
  }
2016
- Tn(t) {
2017
- this.wn = t;
2156
+ vn(t) {
2157
+ this.Zn = t;
2018
2158
  }
2019
- Sn(t) {
2020
- this.Cn = t;
2159
+ To(t) {
2160
+ this.Qn = t;
2021
2161
  }
2022
- En() {
2023
- return { x: this.cn.x, y: this.cn.y };
2162
+ Ro(t) {
2163
+ this.Jn = t;
2024
2164
  }
2025
- $n(t) {
2026
- if (this.wn) {
2027
- const e = { position: { ...this.cn }, previousPosition: { ...this.ln }, originalEvent: t };
2028
- this.wn(e);
2165
+ zo(t) {
2166
+ this.eo = t;
2167
+ }
2168
+ Po(t) {
2169
+ this.so = t;
2170
+ }
2171
+ So(t) {
2172
+ this.io = t;
2173
+ }
2174
+ Eo(t) {
2175
+ this.ro = t;
2176
+ }
2177
+ Do(t) {
2178
+ this.no = t;
2179
+ }
2180
+ ko(t) {
2181
+ this.oo = t;
2182
+ }
2183
+ Co(t) {
2184
+ var s;
2185
+ if (!this.Gr) return;
2186
+ t.preventDefault(), (s = this.Ln) == null || s.en(this.mo);
2187
+ const e = performance.now(), i = this.Bo(t.changedTouches);
2188
+ for (const r of i) {
2189
+ const n = this.On.get(r.id);
2190
+ n && this.Hn.set(r.id, this.Go(n)), this.On.set(r.id, r);
2191
+ const o = { id: r.id, startPosition: r, lastPosition: r, startTime: e, lastTime: e, longPressTimer: null, longPressFired: !1 };
2192
+ this.io && (o.longPressTimer = window.setTimeout(() => {
2193
+ const c = this.On.get(r.id);
2194
+ c && (o.longPressFired = !0, this.io({ touch: this.Go(c), duration: performance.now() - o.startTime, originalEvent: t }));
2195
+ }, this.lo)), this.In.set(r.id, o), this.qn && this.qn(this.Lo(r, t, void 0, e));
2029
2196
  }
2197
+ this.On.size === 2 && this.Oo();
2030
2198
  }
2031
- Mn(t) {
2032
- if (this.yn) {
2033
- const e = { position: { ...this.cn }, previousPosition: { ...this.ln }, button: t.button, originalEvent: t };
2034
- this.yn(e);
2199
+ Ao(t) {
2200
+ var s;
2201
+ if (!this.Gr) return;
2202
+ t.preventDefault(), (s = this.Ln) == null || s.en(this.mo);
2203
+ const e = performance.now(), i = this.Bo(t.changedTouches);
2204
+ for (const r of i) {
2205
+ const n = this.On.get(r.id), o = n ? this.Go(n) : void 0;
2206
+ o && this.Hn.set(r.id, o), this.On.set(r.id, r);
2207
+ const c = this.In.get(r.id);
2208
+ c && (c.lastPosition = r, c.lastTime = e, o) && this.Ho(o, r, !0) > this.uo && c.longPressTimer !== null && (window.clearTimeout(c.longPressTimer), c.longPressTimer = null), this.Zn && this.Zn(this.Lo(r, t, o, e));
2209
+ }
2210
+ this.On.size === 2 ? this.Io(t) : this.Nn = null;
2211
+ }
2212
+ bo(t) {
2213
+ if (!this.Gr) return;
2214
+ t.preventDefault();
2215
+ const e = performance.now(), i = this.Bo(t.changedTouches);
2216
+ for (const s of i) {
2217
+ const r = this.On.get(s.id), n = r ? this.Go(r) : void 0, o = this.In.get(s.id);
2218
+ o && o.longPressTimer !== null && (window.clearTimeout(o.longPressTimer), o.longPressTimer = null), this.Qn && this.Qn(this.Lo(s, t, n, e)), o && this.No(o, t), this.In.delete(s.id), this.Hn.delete(s.id), this.On.delete(s.id);
2035
2219
  }
2220
+ this.On.size < 2 && (this.Nn = null);
2036
2221
  }
2037
- Fn(t) {
2038
- if (this.An) {
2039
- const e = { position: { ...this.cn }, previousPosition: { ...this.ln }, button: t.button, originalEvent: t };
2040
- this.An(e);
2222
+ xo(t) {
2223
+ if (!this.Gr) return;
2224
+ t.preventDefault();
2225
+ const e = performance.now(), i = this.Bo(t.changedTouches);
2226
+ for (const s of i) {
2227
+ const r = this.On.get(s.id), n = r ? this.Go(r) : void 0, o = this.In.get(s.id);
2228
+ o && o.longPressTimer !== null && (window.clearTimeout(o.longPressTimer), o.longPressTimer = null), this.Jn && this.Jn(this.Lo(s, t, n, e)), this.In.delete(s.id), this.Hn.delete(s.id), this.On.delete(s.id);
2041
2229
  }
2230
+ this.On.size < 2 && (this.Nn = null);
2042
2231
  }
2043
- Rn(t) {
2044
- if (this.vn) {
2045
- const e = { position: { ...this.cn }, previousPosition: { ...this.ln }, button: t.button, originalEvent: t };
2046
- this.vn(e);
2232
+ Bo(t) {
2233
+ const e = [];
2234
+ for (let i = 0; i < t.length; i += 1) {
2235
+ const s = t.item(i);
2236
+ s && e.push(this.Xo(s));
2047
2237
  }
2238
+ return e;
2048
2239
  }
2049
- zn(t) {
2050
- if (this.Cn) {
2051
- const e = { position: { ...this.cn }, previousPosition: { ...this.ln }, delta: { x: t.deltaX, y: t.deltaY }, originalEvent: t };
2052
- this.Cn(e);
2240
+ Xo(t) {
2241
+ return this.Mo(t.clientX, t.clientY, t.identifier, { id: t.identifier, x: -1, y: -1, clientX: t.clientX, clientY: t.clientY, pressure: t.force, radiusX: t.radiusX, radiusY: t.radiusY, rotationAngle: t.rotationAngle });
2242
+ }
2243
+ Mo(t, e, i, s) {
2244
+ const r = this.er.canvas, n = r.getBoundingClientRect(), o = t - n.left, c = e - n.top, l = r.width / n.width, u = c * (r.height / n.height), f = o * l - this.Gr.offsetX, g = u - this.Gr.offsetY, v = Math.floor(f / this.Gr.cellWidth), m = Math.floor(g / this.Gr.cellHeight), d = v >= 0 && v < this.Gr.cols && m >= 0 && m < this.Gr.rows;
2245
+ return { id: i, x: d ? v : -1, y: d ? m : -1, clientX: t, clientY: e, pressure: s.pressure, radiusX: s.radiusX, radiusY: s.radiusY, rotationAngle: s.rotationAngle };
2246
+ }
2247
+ Lo(t, e, i, s) {
2248
+ const r = this.In.get(t.id), n = Array.from(this.Hn.values()).map((l) => this.Go(l)), o = Array.from(this.On.values()).map((l) => this.Go(l)), c = this.Bo(e.changedTouches);
2249
+ return { touch: this.Go(t), previousTouch: i ? this.Go(i) : void 0, touches: o, previousTouches: n, changedTouches: c, deltaTime: r ? s - r.lastTime : 0, originalEvent: e };
2250
+ }
2251
+ Oo() {
2252
+ if (this.On.size !== 2) return void (this.Nn = null);
2253
+ const t = Array.from(this.On.values()), [e, i] = t, s = this.Ho(e, i, !1), r = this.Wo(e, i);
2254
+ this.Nn = { ids: [e.id, i.id], initialDistance: Math.max(s, 1e-4), initialAngle: r, lastScale: 1, lastRotation: 0 };
2255
+ }
2256
+ Io(t) {
2257
+ if (this.Nn || this.Oo(), !this.Nn) return;
2258
+ const [e, i] = this.Nn.ids, s = this.On.get(e), r = this.On.get(i);
2259
+ if (!s || !r) return;
2260
+ const n = this.Ho(s, r, !1) / this.Nn.initialDistance, o = n - this.Nn.lastScale;
2261
+ this.no && Math.abs(o) > this.po && (this.no({ touches: [this.Go(s), this.Go(r)], scale: n, deltaScale: o, center: this.Vo(s, r), originalEvent: t }), this.Nn.lastScale = n);
2262
+ let c = this.Wo(s, r) - this.Nn.initialAngle;
2263
+ c = (c + 180) % 360 - 180;
2264
+ const l = c - this.Nn.lastRotation;
2265
+ this.oo && Math.abs(l) > this._o && (this.oo({ touches: [this.Go(s), this.Go(r)], rotation: c, deltaRotation: l, center: this.Vo(s, r), originalEvent: t }), this.Nn.lastRotation = c);
2266
+ }
2267
+ Vo(t, e) {
2268
+ const i = (t.clientX + e.clientX) / 2, s = (t.clientY + e.clientY) / 2, r = this.Mo(i, s, -1, { id: -1, x: -1, y: -1, clientX: i, clientY: s });
2269
+ return { x: r.x, y: r.y };
2270
+ }
2271
+ No(t, e) {
2272
+ const i = performance.now(), s = i - t.startTime, r = this.Ho(t.startPosition, t.lastPosition, !0);
2273
+ if (!t.longPressFired && s <= this.ho && r <= this.co)
2274
+ this.jo(t.lastPosition, i) && this.so ? this.so({ touch: this.Go(t.lastPosition), taps: 2, originalEvent: e }) : this.eo && this.eo({ touch: this.Go(t.lastPosition), taps: 1, originalEvent: e });
2275
+ else if (!t.longPressFired && s <= this.do && r >= this.fo) {
2276
+ const n = { x: t.lastPosition.clientX - t.startPosition.clientX, y: t.lastPosition.clientY - t.startPosition.clientY }, o = Math.max(Math.hypot(n.x, n.y), 1e-4), c = { x: n.x / o, y: n.y / o }, l = { x: n.x / s, y: n.y / s };
2277
+ this.ro && this.ro({ touch: this.Go(t.lastPosition), direction: c, distance: o, velocity: l, originalEvent: e });
2053
2278
  }
2279
+ this.vo = i, this.wo = this.Go(t.lastPosition);
2054
2280
  }
2055
- xn(t) {
2056
- const e = this.er.canvas;
2057
- this.ln = { ...this.cn }, this.un = { x: t.clientX, y: t.clientY };
2058
- const i = e.getBoundingClientRect(), s = t.clientX - i.left, r = t.clientY - i.top, n = e.width / i.width, o = r * (e.height / i.height), c = s * n - this.hn.offsetX, l = o - this.hn.offsetY, u = Math.floor(c / this.hn.cellWidth), f = Math.floor(l / this.hn.cellHeight);
2059
- u >= 0 && u < this.hn.cols && f >= 0 && f < this.hn.rows ? (this.cn.x = u, this.cn.y = f) : (this.cn.x = -1, this.cn.y = -1);
2281
+ jo(t, e) {
2282
+ return !this.wo || e - this.vo > this.ao ? !1 : this.Ho(t, this.wo, !0) <= this.co;
2283
+ }
2284
+ Go(t) {
2285
+ return { ...t };
2286
+ }
2287
+ Ho(t, e, i) {
2288
+ return i ? Math.hypot(t.clientX - e.clientX, t.clientY - e.clientY) : Math.hypot(t.x - e.x, t.y - e.y);
2289
+ }
2290
+ Wo(t, e) {
2291
+ return 180 * Math.atan2(e.clientY - t.clientY, e.clientX - t.clientX) / Math.PI;
2060
2292
  }
2061
2293
  }
2062
- const Kt = (h) => class extends h {
2294
+ const Jt = Object.freeze(Object.defineProperty({ __proto__: null, TouchManager: ut }, Symbol.toStringTag, { value: "Module" })), $t = (a) => class extends a {
2063
2295
  rotate(t = 0, e = 0, i = 0) {
2064
2296
  this.xt.state.et(t), this.xt.state.st(e), this.xt.state.it(i);
2065
2297
  }
@@ -2094,13 +2326,13 @@ const Kt = (h) => class extends h {
2094
2326
  this.xt.Zs(t, e, i, s);
2095
2327
  }
2096
2328
  char(t) {
2097
- this.xt.state.rt(this.Ei.Ti(t));
2329
+ this.xt.state.rt(this.Ei.Pi(t));
2098
2330
  }
2099
- charColor(t, e, i) {
2100
- this.xt.state.nt(t, e, i);
2331
+ charColor(t, e, i, s = 255) {
2332
+ this.xt.state.nt(t, e, i, s);
2101
2333
  }
2102
- cellColor(t, e, i) {
2103
- this.xt.state.ot(t, e, i);
2334
+ cellColor(t, e, i, s = 255) {
2335
+ this.xt.state.ot(t, e, i, s);
2104
2336
  }
2105
2337
  flipX(t) {
2106
2338
  this.xt.state.ht(t);
@@ -2121,22 +2353,22 @@ const Kt = (h) => class extends h {
2121
2353
  this.xt.Vs(t, e, i / 2, s / 2);
2122
2354
  }
2123
2355
  triangle(t, e, i, s, r, n) {
2124
- this.xt.Ks(t, e, i, s, r, n);
2356
+ this.xt.js(t, e, i, s, r, n);
2125
2357
  }
2126
2358
  bezierCurve(t, e, i, s, r, n, o, c) {
2127
- this.xt.js(t, e, i, s, r, n, o, c);
2359
+ this.xt.Ks(t, e, i, s, r, n, o, c);
2128
2360
  }
2129
2361
  arc(t, e, i, s, r, n) {
2130
2362
  this.xt.qs(t, e, i, s, r, n);
2131
2363
  }
2132
2364
  shader(t) {
2133
- this.xt.Ls(t);
2365
+ this.xt.Gs(t);
2134
2366
  }
2135
2367
  setUniform(t, e) {
2136
- this.xt.Kt(t, e);
2368
+ this.xt.jt(t, e);
2137
2369
  }
2138
2370
  setUniforms(t) {
2139
- this.xt.Os(t);
2371
+ this.xt.Ls(t);
2140
2372
  }
2141
2373
  createFilterShader(t) {
2142
2374
  return this.xt.oe(t);
@@ -2147,86 +2379,86 @@ const Kt = (h) => class extends h {
2147
2379
  image(t, e, i, s, r) {
2148
2380
  if (t.textures) {
2149
2381
  const n = t;
2150
- this.xt.ks(n, e, i, s ?? n.width, r ?? n.height);
2382
+ this.xt.Os(n, e, i, s ?? n.width, r ?? n.height);
2151
2383
  } else {
2152
2384
  const n = t;
2153
- this.xt.Hs(n, e, i, s ?? Math.floor(this.hn.cols / 2), r ?? Math.floor(this.hn.rows / 2));
2385
+ this.xt.Hs(n, e, i, s ?? Math.floor(this.Gr.cols / 2), r ?? Math.floor(this.Gr.rows / 2));
2154
2386
  }
2155
2387
  }
2156
2388
  async loadImage(t) {
2157
- if (typeof t != "string") return z.Mr(this.xt, t, (s) => this.Ei.Si(s));
2389
+ if (typeof t != "string") return z.$r(this.xt, t, (s) => this.Ei.Si(s));
2158
2390
  const e = t, i = await new Promise((s, r) => {
2159
2391
  const n = new Image();
2160
2392
  n.crossOrigin = "anonymous", n.onload = () => s(n), n.onerror = (o) => r(o), n.src = e;
2161
2393
  });
2162
- return z.Mr(this.xt, i, (s) => this.Ei.Si(s));
2394
+ return z.$r(this.xt, i, (s) => this.Ei.Si(s));
2163
2395
  }
2164
2396
  };
2165
- class $ {
2166
- Bn(t) {
2167
- const e = t.Pt(0), i = t.Pt(1), s = t.Pt(2), r = t.Pt(3);
2168
- return { characterPixels: e, primaryColorPixels: i, secondaryColorPixels: s, transformPixels: t.Pt(4), rotationPixels: r };
2397
+ class J {
2398
+ Ko(t) {
2399
+ const e = t.zt(0), i = t.zt(1), s = t.zt(2), r = t.zt(3);
2400
+ return { characterPixels: e, primaryColorPixels: i, secondaryColorPixels: s, transformPixels: t.zt(4), rotationPixels: r };
2169
2401
  }
2170
- Gn(t, e) {
2402
+ Yo(t, e) {
2171
2403
  return t[e] + (t[e + 1] << 8);
2172
2404
  }
2173
- Dn(t, e) {
2405
+ qo(t, e) {
2174
2406
  return { r: t[e], g: t[e + 1], b: t[e + 2], a: t[e + 3] };
2175
2407
  }
2176
2408
  }
2177
- class J {
2178
- Ln(t, e) {
2409
+ class $ {
2410
+ Zo(t, e) {
2179
2411
  return new Blob([t], { type: e });
2180
2412
  }
2181
- On(t, e, i) {
2413
+ Qo(t, e, i) {
2182
2414
  try {
2183
- const s = this.Ln(t, i), r = URL.createObjectURL(s), n = document.createElement("a");
2415
+ const s = this.Zo(t, i), r = URL.createObjectURL(s), n = document.createElement("a");
2184
2416
  n.href = r, n.download = e, n.style.display = "none", n.rel = "noopener", document.body.appendChild(n), n.click(), document.body.removeChild(n), URL.revokeObjectURL(r);
2185
2417
  } catch (s) {
2186
2418
  console.error("Failed to download file:", s);
2187
2419
  }
2188
2420
  }
2189
- kn() {
2421
+ Jo() {
2190
2422
  return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
2191
2423
  }
2192
- Hn() {
2424
+ th() {
2193
2425
  const t = /* @__PURE__ */ new Date();
2194
2426
  return { date: t.toISOString().split("T")[0], time: t.toTimeString().split(" ")[0].replace(/:/g, "-") };
2195
2427
  }
2196
- In(t) {
2428
+ eh(t) {
2197
2429
  return t.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
2198
2430
  }
2199
- Nn() {
2200
- return "textmode-export-" + this.kn();
2431
+ sh() {
2432
+ return "textmode-export-" + this.Jo();
2201
2433
  }
2202
2434
  }
2203
- class qt extends $ {
2204
- Xn(t, e, i) {
2435
+ class Qt extends J {
2436
+ ih(t, e, i) {
2205
2437
  const s = t[i] === 255, r = t[i + 1] === 255, n = t[i + 2] === 255, o = e[i], c = e[i + 1];
2206
2438
  return { isInverted: s, flipHorizontal: r, flipVertical: n, rotation: Math.round(360 * (o + c / 255) / 255 * 100) / 100 };
2207
2439
  }
2208
- Wn(t, e, i) {
2440
+ rh(t, e, i) {
2209
2441
  return { x: t, y: e, cellX: t * i.cellWidth, cellY: e * i.cellHeight };
2210
2442
  }
2211
- Vn(t, e) {
2443
+ nh(t, e) {
2212
2444
  const i = [];
2213
2445
  let s = 0;
2214
2446
  for (let r = 0; r < e.rows; r++) for (let n = 0; n < e.cols; n++) {
2215
- const o = 4 * s, c = this.Gn(t.characterPixels, o);
2216
- let l = this.Dn(t.primaryColorPixels, o), u = this.Dn(t.secondaryColorPixels, o);
2217
- const f = this.Xn(t.transformPixels, t.rotationPixels, o);
2447
+ const o = 4 * s, c = this.Yo(t.characterPixels, o);
2448
+ let l = this.qo(t.primaryColorPixels, o), u = this.qo(t.secondaryColorPixels, o);
2449
+ const f = this.ih(t.transformPixels, t.rotationPixels, o);
2218
2450
  if (f.isInverted) {
2219
2451
  const v = l;
2220
2452
  l = u, u = v;
2221
2453
  }
2222
- const g = this.Wn(n, r, e);
2454
+ const g = this.rh(n, r, e);
2223
2455
  i.push({ charIndex: c, primaryColor: l, secondaryColor: u, transform: f, position: g }), s++;
2224
2456
  }
2225
2457
  return i;
2226
2458
  }
2227
2459
  }
2228
- class Zt {
2229
- Kn(t, e) {
2460
+ class te {
2461
+ oh(t, e) {
2230
2462
  const i = t.cmap;
2231
2463
  for (const s of i.tables) if (s.format === 4) {
2232
2464
  const r = s;
@@ -2249,11 +2481,11 @@ class Zt {
2249
2481
  }
2250
2482
  return 0;
2251
2483
  }
2252
- jn(t, e, i, s, r) {
2484
+ hh(t, e, i, s, r) {
2253
2485
  const n = r / t.head.unitsPerEm;
2254
- return { getBoundingBox: () => ({ x1: i + e.xMin * n, y1: s + -e.yMax * n, x2: i + e.xMax * n, y2: s + -e.yMin * n }), toSVG: () => this.Yn(e, i, s, n) };
2486
+ return { getBoundingBox: () => ({ x1: i + e.xMin * n, y1: s + -e.yMax * n, x2: i + e.xMax * n, y2: s + -e.yMin * n }), toSVG: () => this.ah(e, i, s, n) };
2255
2487
  }
2256
- Yn(t, e, i, s) {
2488
+ ah(t, e, i, s) {
2257
2489
  if (!t || !t.xs) return "";
2258
2490
  const { xs: r, ys: n, endPts: o, flags: c } = t;
2259
2491
  if (!(r && n && o && c)) return "";
@@ -2271,13 +2503,13 @@ class Zt {
2271
2503
  l += `L${A.toFixed(2)},${p.toFixed(2)}`, d++;
2272
2504
  } else {
2273
2505
  const A = e + r[d] * s, p = i - n[d] * s;
2274
- let E = d + 1 > g ? u : d + 1;
2275
- if (1 & c[E]) {
2276
- const x = e + r[E] * s, C = i - n[E] * s;
2277
- l += `Q${A.toFixed(2)},${p.toFixed(2)} ${x.toFixed(2)},${C.toFixed(2)}`, d = E + 1;
2506
+ let x = d + 1 > g ? u : d + 1;
2507
+ if (1 & c[x]) {
2508
+ const y = e + r[x] * s, C = i - n[x] * s;
2509
+ l += `Q${A.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${C.toFixed(2)}`, d = x + 1;
2278
2510
  } else {
2279
- const x = (A + (e + r[E] * s)) / 2, C = (p + (i - n[E] * s)) / 2;
2280
- l += `Q${A.toFixed(2)},${p.toFixed(2)} ${x.toFixed(2)},${C.toFixed(2)}`, d = E;
2511
+ const y = (A + (e + r[x] * s)) / 2, C = (p + (i - n[x] * s)) / 2;
2512
+ l += `Q${A.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${C.toFixed(2)}`, d = x;
2281
2513
  }
2282
2514
  }
2283
2515
  l += "Z";
@@ -2287,34 +2519,34 @@ class Zt {
2287
2519
  }
2288
2520
  return l;
2289
2521
  }
2290
- qn(t, e, i, s, r) {
2291
- const n = t.codePointAt(0) || 0, o = this.Kn(e, n);
2522
+ uh(t, e, i, s, r) {
2523
+ const n = t.codePointAt(0) || 0, o = this.oh(e, n);
2292
2524
  let c = null;
2293
- return e.glyf && e.glyf[o] !== null ? c = e.glyf[o] : (c = L.T.glyf.Js(e, o), e.glyf[o] = c), this.jn(e, c, i, s, r);
2525
+ return e.glyf && e.glyf[o] !== null ? c = e.glyf[o] : (c = L.T.glyf.Js(e, o), e.glyf[o] = c), this.hh(e, c, i, s, r);
2294
2526
  }
2295
- Zn(t, e, i, s, r, n, o, c) {
2527
+ fh(t, e, i, s, r, n, o, c) {
2296
2528
  const l = i + (r - c * (o / e.head.unitsPerEm)) / 2, u = s + (n + 0.7 * o) / 2;
2297
- return this.qn(t, e, l, u, o).toSVG() || null;
2529
+ return this.uh(t, e, l, u, o).toSVG() || null;
2298
2530
  }
2299
2531
  }
2300
- class $t {
2532
+ class ee {
2301
2533
  constructor() {
2302
- a(this, "Qn");
2303
- this.Qn = new Zt();
2534
+ h(this, "dh");
2535
+ this.dh = new te();
2304
2536
  }
2305
- Jn(t) {
2537
+ ph(t) {
2306
2538
  const { width: e, height: i } = t;
2307
2539
  return `<?xml version="1.0" encoding="UTF-8"?><svg width="${e}" height="${i}" viewBox="0 0 ${e} ${i}" xmlns="http://www.w3.org/2000/svg"><title>textmode.js sketch</title>`;
2308
2540
  }
2309
- eo() {
2541
+ _h() {
2310
2542
  return "</g></svg>";
2311
2543
  }
2312
- so(t, e) {
2544
+ mh(t, e) {
2313
2545
  if (!e.includeBackgroundRectangles) return "";
2314
2546
  const [i, s, r, n] = e.backgroundColor;
2315
2547
  return `<rect width="${t.width}" height="${t.height}" fill="rgba(${i},${s},${r},${n / 255})"/>`;
2316
2548
  }
2317
- io(t, e) {
2549
+ gh(t, e) {
2318
2550
  const { transform: i, position: s } = t;
2319
2551
  if (!i.flipHorizontal && !i.flipVertical && !i.rotation) return "";
2320
2552
  const r = s.cellX + e.cellWidth / 2, n = s.cellY + e.cellHeight / 2, o = [];
@@ -2324,76 +2556,76 @@ class $t {
2324
2556
  }
2325
2557
  return i.rotation && o.push(`rotate(${i.rotation} ${r} ${n})`), ` transform="${o.join(" ")}"`;
2326
2558
  }
2327
- ro(t, e, i) {
2559
+ wh(t, e, i) {
2328
2560
  if (!i.includeBackgroundRectangles || t.secondaryColor.a === 0) return "";
2329
2561
  const { position: s } = t, { r, g: n, b: o, a: c } = t.secondaryColor, l = `rgba(${r},${n},${o},${c / 255})`;
2330
2562
  return i.drawMode === "stroke" ? `<rect x="${s.cellX}" y="${s.cellY}" width="${e.cellWidth}" height="${e.cellHeight}" stroke="${l}" fill="none" stroke-width="${i.strokeWidth}"/>` : `<rect x="${s.cellX}" y="${s.cellY}" width="${e.cellWidth}" height="${e.cellHeight}" fill="${l}"/>`;
2331
2563
  }
2332
- qn(t, e, i, s) {
2564
+ uh(t, e, i, s) {
2333
2565
  const r = i.characters[t.charIndex];
2334
2566
  if (!r) return "";
2335
- const n = this.Qn.Zn(r.character, i.font, t.position.cellX, t.position.cellY, e.cellWidth, e.cellHeight, i.fontSize, r.advanceWidth);
2567
+ const n = this.dh.fh(r.character, i.font, t.position.cellX, t.position.cellY, e.cellWidth, e.cellHeight, i.fontSize, r.advanceWidth);
2336
2568
  if (!n) return "";
2337
2569
  const { r: o, g: c, b: l, a: u } = t.primaryColor, f = `rgba(${o},${c},${l},${u / 255})`;
2338
2570
  return s.drawMode === "stroke" ? `<path d="${n}" stroke="${f}" stroke-width="${s.strokeWidth}" fill="none"/>` : `<path d="${n}" fill="${f}"/>`;
2339
2571
  }
2340
- no(t, e, i, s) {
2341
- const r = [], n = this.ro(t, e, s);
2572
+ yh(t, e, i, s) {
2573
+ const r = [], n = this.wh(t, e, s);
2342
2574
  n && r.push(n);
2343
- const o = this.qn(t, e, i, s);
2575
+ const o = this.uh(t, e, i, s);
2344
2576
  if (o) {
2345
- const c = this.io(t, e);
2577
+ const c = this.gh(t, e);
2346
2578
  r.push(c ? `<g${c}>${o}</g>` : o);
2347
2579
  }
2348
2580
  return r.join("");
2349
2581
  }
2350
- oo(t, e, i, s) {
2351
- const r = [this.Jn(e), this.so(e, s), '<g id="ascii-cells">'];
2352
- for (const n of t) r.push(this.no(n, e, i, s));
2353
- return r.push(this.eo()), r.join("");
2582
+ Ch(t, e, i, s) {
2583
+ const r = [this.ph(e), this.mh(e, s), '<g id="ascii-cells">'];
2584
+ for (const n of t) r.push(this.yh(n, e, i, s));
2585
+ return r.push(this._h()), r.join("");
2354
2586
  }
2355
- ao(t) {
2587
+ Ah(t) {
2356
2588
  return t.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\s+/g, " ").replace(/> </g, "><");
2357
2589
  }
2358
2590
  }
2359
- class Jt extends J {
2360
- ho(t) {
2361
- return this.Ln(t, "image/svg+xml;charset=utf-8");
2591
+ class ie extends $ {
2592
+ bh(t) {
2593
+ return this.Zo(t, "image/svg+xml;charset=utf-8");
2362
2594
  }
2363
- co(t, e) {
2364
- this.On(t, this.In(e) + ".svg", "image/svg+xml;charset=utf-8");
2595
+ xh(t, e) {
2596
+ this.Qo(t, this.eh(e) + ".svg", "image/svg+xml;charset=utf-8");
2365
2597
  }
2366
- lo(t, e) {
2367
- this.co(t, e || this.Nn());
2598
+ Mh(t, e) {
2599
+ this.xh(t, e || this.sh());
2368
2600
  }
2369
2601
  }
2370
2602
  class st {
2371
2603
  constructor() {
2372
- a(this, "uo");
2373
- a(this, "fo");
2374
- a(this, "do");
2375
- this.uo = new qt(), this.fo = new $t(), this.do = new Jt();
2604
+ h(this, "$h");
2605
+ h(this, "Fh");
2606
+ h(this, "Th");
2607
+ this.$h = new Qt(), this.Fh = new ee(), this.Th = new ie();
2376
2608
  }
2377
- po(t) {
2378
- return { includeBackgroundRectangles: t.includeBackgroundRectangles ?? !0, drawMode: t.drawMode ?? "fill", strokeWidth: t.strokeWidth ?? 1, backgroundColor: t.backgroundColor ?? [0, 0, 0, 0], filename: t.filename || this.do.Nn() };
2609
+ Rh(t) {
2610
+ return { includeBackgroundRectangles: t.includeBackgroundRectangles ?? !0, drawMode: t.drawMode ?? "fill", strokeWidth: t.strokeWidth ?? 1, backgroundColor: t.backgroundColor ?? [0, 0, 0, 0], filename: t.filename || this.Th.sh() };
2379
2611
  }
2380
- mo(t, e = {}) {
2381
- const i = this.uo.Vn(this.uo.Bn(t.pipeline), t.grid), s = this.fo.oo(i, t.grid, t.font, this.po(e));
2382
- return this.fo.ao(s);
2612
+ zh(t, e = {}) {
2613
+ const i = this.$h.nh(this.$h.Ko(t.pipeline), t.grid), s = this.Fh.Ch(i, t.grid, t.font, this.Rh(e));
2614
+ return this.Fh.Ah(s);
2383
2615
  }
2384
- lo(t, e = {}) {
2385
- this.do.lo(this.mo(t, e), e.filename);
2616
+ Mh(t, e = {}) {
2617
+ this.Th.Mh(this.zh(t, e), e.filename);
2386
2618
  }
2387
2619
  }
2388
- class Qt extends $ {
2389
- _o(t, e, i, s = " ") {
2620
+ class se extends J {
2621
+ Ph(t, e, i, s = " ") {
2390
2622
  var o;
2391
2623
  const r = [];
2392
2624
  let n = 0;
2393
2625
  for (let c = 0; c < e.rows; c++) {
2394
2626
  const l = [];
2395
2627
  for (let u = 0; u < e.cols; u++) {
2396
- const f = 4 * n, g = this.Gn(t.characterPixels, f), v = ((o = i.characters[g]) == null ? void 0 : o.character) || s;
2628
+ const f = 4 * n, g = this.Yo(t.characterPixels, f), v = ((o = i.characters[g]) == null ? void 0 : o.character) || s;
2397
2629
  l.push(v), n++;
2398
2630
  }
2399
2631
  r.push(l);
@@ -2401,8 +2633,8 @@ class Qt extends $ {
2401
2633
  return r;
2402
2634
  }
2403
2635
  }
2404
- class te {
2405
- vo(t, e) {
2636
+ class re {
2637
+ Sh(t, e) {
2406
2638
  const i = [];
2407
2639
  for (const r of t) {
2408
2640
  let n = r.join("");
@@ -2414,56 +2646,56 @@ class te {
2414
2646
  return i.join(s);
2415
2647
  }
2416
2648
  }
2417
- class ee extends J {
2418
- yo(t, e) {
2419
- const i = this.Ao(e);
2420
- this.On(t, i, "text/plain;charset=utf-8");
2649
+ class ne extends $ {
2650
+ Eh(t, e) {
2651
+ const i = this.Dh(e);
2652
+ this.Qo(t, i, "text/plain;charset=utf-8");
2421
2653
  }
2422
- Ao(t) {
2423
- let e = this.In(t);
2424
- return e === ".txt" || e.length <= 4 ? this.Nn() : e;
2654
+ Dh(t) {
2655
+ let e = this.eh(t);
2656
+ return e === ".txt" || e.length <= 4 ? this.sh() : e;
2425
2657
  }
2426
2658
  }
2427
2659
  class rt {
2428
2660
  constructor() {
2429
- a(this, "uo");
2430
- a(this, "fo");
2431
- a(this, "do");
2432
- this.uo = new Qt(), this.fo = new te(), this.do = new ee();
2661
+ h(this, "$h");
2662
+ h(this, "Fh");
2663
+ h(this, "Th");
2664
+ this.$h = new se(), this.Fh = new re(), this.Th = new ne();
2433
2665
  }
2434
- po(t) {
2435
- return { preserveTrailingSpaces: t.preserveTrailingSpaces ?? !1, lineEnding: t.lineEnding ?? "lf", emptyCharacter: t.emptyCharacter ?? " ", filename: t.filename || this.do.Nn() };
2666
+ Rh(t) {
2667
+ return { preserveTrailingSpaces: t.preserveTrailingSpaces ?? !1, lineEnding: t.lineEnding ?? "lf", emptyCharacter: t.emptyCharacter ?? " ", filename: t.filename || this.Th.sh() };
2436
2668
  }
2437
- wo(t, e = {}) {
2438
- const i = this.po(e), s = this.uo._o(this.uo.Bn(t.pipeline), t.grid, t.font, i.emptyCharacter);
2439
- return this.fo.vo(s, i);
2669
+ kh(t, e = {}) {
2670
+ const i = this.Rh(e), s = this.$h.Ph(this.$h.Ko(t.pipeline), t.grid, t.font, i.emptyCharacter);
2671
+ return this.Fh.Sh(s, i);
2440
2672
  }
2441
- yo(t, e = {}) {
2442
- this.do.yo(this.wo(t, e), e.filename);
2673
+ Eh(t, e = {}) {
2674
+ this.Th.Eh(this.kh(t, e), e.filename);
2443
2675
  }
2444
2676
  }
2445
- class ie extends $ {
2446
- Co(t, e = 1, i = "transparent") {
2677
+ class oe extends J {
2678
+ Bh(t, e = 1, i = "transparent") {
2447
2679
  const s = t.canvas;
2448
2680
  if (e === 1 && i === "transparent") return s;
2449
2681
  const r = document.createElement("canvas"), n = r.getContext("2d"), o = Math.round(s.width * e), c = Math.round(s.height * e);
2450
2682
  return r.width = o, r.height = c, i !== "transparent" && (n.fillStyle = i, n.fillRect(0, 0, o, c)), n.imageSmoothingEnabled = !1, n.drawImage(s, 0, 0, s.width, s.height, 0, 0, o, c), r;
2451
2683
  }
2452
2684
  }
2453
- class se {
2454
- bo(t, e) {
2455
- const i = this.xo(e.format);
2685
+ class he {
2686
+ Gh(t, e) {
2687
+ const i = this.Lh(e.format);
2456
2688
  return e.format === "png" ? t.toDataURL(i) : t.toDataURL(i, e.quality);
2457
2689
  }
2458
- async $o(t, e) {
2690
+ async Oh(t, e) {
2459
2691
  return new Promise((i, s) => {
2460
- const r = this.xo(e.format), n = (o) => {
2692
+ const r = this.Lh(e.format), n = (o) => {
2461
2693
  o ? i(o) : s(Error(`Failed to generate ${e.format.toUpperCase()} blob`));
2462
2694
  };
2463
2695
  e.format === "png" ? t.toBlob(n, r) : t.toBlob(n, r, e.quality);
2464
2696
  });
2465
2697
  }
2466
- xo(t) {
2698
+ Lh(t) {
2467
2699
  switch (t) {
2468
2700
  case "png":
2469
2701
  return "image/png";
@@ -2476,12 +2708,12 @@ class se {
2476
2708
  }
2477
2709
  }
2478
2710
  }
2479
- const re = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, nt = { png: ".png", jpg: ".jpg", webp: ".webp" };
2480
- class ne extends J {
2481
- Mo(t, e, i) {
2482
- this.Fo(t, this.In(e) + nt[i]);
2711
+ const ae = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, nt = { png: ".png", jpg: ".jpg", webp: ".webp" };
2712
+ class ce extends $ {
2713
+ Hh(t, e, i) {
2714
+ this.Ih(t, this.eh(e) + nt[i]);
2483
2715
  }
2484
- Fo(t, e) {
2716
+ Ih(t, e) {
2485
2717
  const i = URL.createObjectURL(t);
2486
2718
  try {
2487
2719
  const s = document.createElement("a");
@@ -2490,223 +2722,264 @@ class ne extends J {
2490
2722
  URL.revokeObjectURL(i);
2491
2723
  }
2492
2724
  }
2493
- Ro(t) {
2494
- return t in re && t in nt;
2725
+ Nh(t) {
2726
+ return t in ae && t in nt;
2495
2727
  }
2496
2728
  }
2497
- class oe {
2729
+ class le {
2498
2730
  constructor() {
2499
- a(this, "uo");
2500
- a(this, "fo");
2501
- a(this, "do");
2502
- this.uo = new ie(), this.fo = new se(), this.do = new ne();
2731
+ h(this, "$h");
2732
+ h(this, "Fh");
2733
+ h(this, "Th");
2734
+ this.$h = new oe(), this.Fh = new he(), this.Th = new ce();
2503
2735
  }
2504
- po(t) {
2505
- return { format: t.format ?? "png", quality: t.quality ?? 1, scale: t.scale ?? 1, backgroundColor: t.backgroundColor ?? "transparent", filename: t.filename || this.do.Nn() };
2736
+ Rh(t) {
2737
+ return { format: t.format ?? "png", quality: t.quality ?? 1, scale: t.scale ?? 1, backgroundColor: t.backgroundColor ?? "transparent", filename: t.filename || this.Th.sh() };
2506
2738
  }
2507
- zo(t) {
2508
- if (!this.do.Ro(t.format)) throw Error(`Saving '${t.format}' files is not supported`);
2739
+ Xh(t) {
2740
+ if (!this.Th.Nh(t.format)) throw Error(`Saving '${t.format}' files is not supported`);
2509
2741
  if (t.quality < 0 || t.quality > 1) throw Error("Image quality must be between 0.0 and 1.0");
2510
2742
  if (t.scale <= 0) throw Error("Scale factor must be greater than 0");
2511
2743
  t.format === "jpg" && t.backgroundColor === "transparent" && (t.backgroundColor = "black");
2512
2744
  }
2513
- async $o(t, e) {
2514
- if (e.scale === 1 && e.backgroundColor === "transparent") return await this.fo.$o(t.canvas, e);
2515
- const i = this.uo.Co(t, e.scale, e.backgroundColor);
2516
- return await this.fo.$o(i, e);
2745
+ async Oh(t, e) {
2746
+ if (e.scale === 1 && e.backgroundColor === "transparent") return await this.Fh.Oh(t.canvas, e);
2747
+ const i = this.$h.Bh(t, e.scale, e.backgroundColor);
2748
+ return await this.Fh.Oh(i, e);
2517
2749
  }
2518
- async Mo(t, e = {}) {
2519
- const i = this.po(e);
2520
- this.zo(i);
2521
- const s = await this.$o(t, i);
2522
- this.do.Mo(s, i.filename, i.format);
2750
+ async Hh(t, e = {}) {
2751
+ const i = this.Rh(e);
2752
+ this.Xh(i);
2753
+ const s = await this.Oh(t, i);
2754
+ this.Th.Hh(s, i.filename, i.format);
2523
2755
  }
2524
2756
  }
2525
- const he = (h) => class extends h {
2526
- Po() {
2527
- this.xt.St(this.To);
2757
+ const ue = (a) => class extends a {
2758
+ Wh() {
2759
+ this.xt.St(this.Vh);
2528
2760
  }
2529
2761
  toString(t = {}) {
2530
- return this.Po(), new rt().wo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2762
+ return this.Wh(), new rt().kh({ pipeline: this.jh, grid: this.Gr, font: this.Ei }, t);
2531
2763
  }
2532
2764
  saveStrings(t = {}) {
2533
- this.Po(), new rt().yo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2765
+ this.Wh(), new rt().Eh({ pipeline: this.jh, grid: this.Gr, font: this.Ei }, t);
2534
2766
  }
2535
2767
  toSVG(t = {}) {
2536
- return this.Po(), new st().mo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2768
+ return this.Wh(), new st().zh({ pipeline: this.jh, grid: this.Gr, font: this.Ei }, t);
2537
2769
  }
2538
2770
  saveSVG(t = {}) {
2539
- this.Po(), new st().lo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2771
+ this.Wh(), new st().Mh({ pipeline: this.jh, grid: this.Gr, font: this.Ei }, t);
2540
2772
  }
2541
2773
  async saveCanvas(t = {}) {
2542
- await new oe().Mo(this.er, t);
2774
+ await new le().Hh(this.er, t);
2543
2775
  }
2544
- }, ae = (h) => class extends h {
2776
+ }, fe = (a) => class extends a {
2545
2777
  async loadFont(t) {
2546
2778
  return this.Ei.qi(t).then(() => {
2547
2779
  const e = this.Ei.maxGlyphDimensions;
2548
- this.hn.nr(e.width, e.height), this.So.resize(this.hn.cols, this.hn.rows), this.xt.Qs(), this.Eo.bn();
2780
+ this.Gr.nr(e.width, e.height), this.jh.resize(this.Gr.cols, this.Gr.rows), this.xt.Qs(), this.Ln.nn();
2549
2781
  });
2550
2782
  }
2551
2783
  fontSize(t) {
2552
- if (!G.v(typeof t == "number" && t > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: t }) || this.Ei.fontSize === t) return;
2784
+ if (!N.v(typeof t == "number" && t > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: t }) || this.Ei.fontSize === t) return;
2553
2785
  this.Ei.Yi(t);
2554
2786
  const e = this.Ei.maxGlyphDimensions;
2555
- this.hn.nr(e.width, e.height), this.So.resize(this.hn.cols, this.hn.rows), this.xt.Qs(), this.Eo.bn();
2787
+ this.Gr.nr(e.width, e.height), this.jh.resize(this.Gr.cols, this.Gr.rows), this.xt.Qs(), this.Ln.nn();
2556
2788
  }
2557
2789
  glyphColor(t) {
2558
- return this.Ei.Ti(t);
2790
+ return this.Ei.Pi(t);
2559
2791
  }
2560
2792
  glyphColors(t) {
2561
2793
  return this.Ei.Si(t);
2562
2794
  }
2563
- }, ce = (h) => class extends h {
2795
+ }, de = (a) => class extends a {
2564
2796
  get frameCount() {
2565
- return this.Bo.frameCount;
2797
+ return this.Kh.frameCount;
2566
2798
  }
2567
2799
  set frameCount(t) {
2568
- this.Bo.frameCount = t;
2800
+ this.Kh.frameCount = t;
2569
2801
  }
2570
2802
  frameRate(t) {
2571
- return t === void 0 ? this.Bo.currentFrameRate : this.Bo.frameRate(t, () => this.Go());
2803
+ return t === void 0 ? this.Kh.currentFrameRate : this.Kh.frameRate(t, () => this.Yh());
2572
2804
  }
2573
2805
  noLoop() {
2574
- this.Bo.pause();
2806
+ this.Kh.pause();
2575
2807
  }
2576
2808
  loop() {
2577
- this.Bo.resume(() => this.Go());
2809
+ this.Kh.resume(() => this.Yh());
2578
2810
  }
2579
2811
  redraw(t = 1) {
2580
- if (G.v(typeof t == "number" && t > 0 && Number.isInteger(t), "Redraw count must be a positive integer.", { method: "redraw", providedValue: t })) for (let e = 0; e < t; e++) this.Go();
2812
+ if (N.v(typeof t == "number" && t > 0 && Number.isInteger(t), "Redraw count must be a positive integer.", { method: "redraw", providedValue: t })) for (let e = 0; e < t; e++) this.Yh();
2581
2813
  }
2582
2814
  isLooping() {
2583
- return this.Bo.isLooping;
2815
+ return this.Kh.isLooping;
2584
2816
  }
2585
- }, le = (h) => class extends h {
2817
+ }, ge = (a) => class extends a {
2586
2818
  constructor(...t) {
2587
2819
  super(...t);
2588
2820
  }
2589
2821
  mouseClicked(t) {
2590
- this.Eo.Pn(t);
2822
+ this.Ln._n(t);
2591
2823
  }
2592
2824
  mousePressed(t) {
2593
- this.Eo.Zr(t);
2825
+ this.Ln.mn(t);
2594
2826
  }
2595
2827
  mouseReleased(t) {
2596
- this.Eo.Qr(t);
2828
+ this.Ln.gn(t);
2597
2829
  }
2598
2830
  mouseMoved(t) {
2599
- this.Eo.Tn(t);
2831
+ this.Ln.vn(t);
2600
2832
  }
2601
2833
  mouseScrolled(t) {
2602
- this.Eo.Sn(t);
2834
+ this.Ln.wn(t);
2603
2835
  }
2604
2836
  get mouse() {
2605
- return this.Eo.En();
2837
+ return this.Ln.yn();
2838
+ }
2839
+ cursor(t) {
2840
+ this.Ln.rn(t);
2841
+ }
2842
+ }, pe = (a) => class extends a {
2843
+ constructor(...t) {
2844
+ super(...t);
2845
+ }
2846
+ touchStarted(t) {
2847
+ this.qh.Fo(t);
2848
+ }
2849
+ touchMoved(t) {
2850
+ this.qh.vn(t);
2851
+ }
2852
+ touchEnded(t) {
2853
+ this.qh.To(t);
2854
+ }
2855
+ touchCancelled(t) {
2856
+ this.qh.Ro(t);
2857
+ }
2858
+ tap(t) {
2859
+ this.qh.zo(t);
2860
+ }
2861
+ doubleTap(t) {
2862
+ this.qh.Po(t);
2863
+ }
2864
+ longPress(t) {
2865
+ this.qh.So(t);
2866
+ }
2867
+ swipe(t) {
2868
+ this.qh.Eo(t);
2869
+ }
2870
+ pinch(t) {
2871
+ this.qh.Do(t);
2872
+ }
2873
+ rotateGesture(t) {
2874
+ this.qh.ko(t);
2875
+ }
2876
+ get touches() {
2877
+ return this.qh.$o();
2606
2878
  }
2607
- }, ue = (h) => class extends h {
2879
+ }, me = (a) => class extends a {
2608
2880
  constructor(...t) {
2609
2881
  super(...t);
2610
2882
  }
2611
2883
  keyPressed(t) {
2612
- this.Do.Zr(t);
2884
+ this.Zh.mn(t);
2613
2885
  }
2614
2886
  keyReleased(t) {
2615
- this.Do.Qr(t);
2887
+ this.Zh.gn(t);
2616
2888
  }
2617
2889
  isKeyPressed(t) {
2618
- return this.Do.Jr(t);
2890
+ return this.Zh.Pn(t);
2619
2891
  }
2620
2892
  get lastKeyPressed() {
2621
- return this.Do.en();
2893
+ return this.Zh.En();
2622
2894
  }
2623
2895
  get lastKeyReleased() {
2624
- return this.Do.sn();
2896
+ return this.Zh.Dn();
2625
2897
  }
2626
2898
  get pressedKeys() {
2627
- return this.Do.rn();
2899
+ return this.Zh.kn();
2628
2900
  }
2629
2901
  get modifierState() {
2630
- return this.Do.nn();
2902
+ return this.Zh.Bn();
2631
2903
  }
2632
2904
  };
2633
- class fe {
2905
+ class ve {
2634
2906
  constructor() {
2635
- a(this, "xt");
2636
- a(this, "Ei");
2637
- a(this, "er");
2638
- a(this, "hn");
2639
- a(this, "Bo");
2640
- a(this, "Eo");
2641
- a(this, "Do");
2642
- a(this, "To");
2643
- a(this, "So");
2644
- a(this, "Lo");
2645
- a(this, "Oo");
2646
- a(this, "ko");
2647
- }
2648
- Go() {
2907
+ h(this, "xt");
2908
+ h(this, "Ei");
2909
+ h(this, "er");
2910
+ h(this, "Gr");
2911
+ h(this, "Kh");
2912
+ h(this, "Ln");
2913
+ h(this, "qh");
2914
+ h(this, "Zh");
2915
+ h(this, "Vh");
2916
+ h(this, "jh");
2917
+ h(this, "Qh");
2918
+ h(this, "Jh");
2919
+ h(this, "ta");
2920
+ }
2921
+ Yh() {
2649
2922
  }
2650
2923
  }
2651
- class de extends function(e, ...i) {
2924
+ class Ae extends function(e, ...i) {
2652
2925
  return i.reduce((s, r) => r(s), e);
2653
- }(fe, Kt, he, ae, ce, le, ue) {
2926
+ }(ve, $t, ue, fe, de, ge, pe, me) {
2654
2927
  constructor(e = {}) {
2655
2928
  super();
2656
- a(this, "Ho", !1);
2657
- a(this, "Io", () => {
2929
+ h(this, "ea", !1);
2930
+ h(this, "sa", () => {
2658
2931
  });
2659
- a(this, "No", () => {
2932
+ h(this, "ia", () => {
2660
2933
  });
2661
- a(this, "Xo", () => {
2934
+ h(this, "ra", () => {
2662
2935
  });
2663
- a(this, "Wo");
2664
- a(this, "cr");
2665
- a(this, "hr", !1);
2666
- a(this, "Vo");
2667
- this.hr = e.overlay ?? !1, this.er = new kt(e), this.xt = new Bt(this.er._r()), this.Ei = new Xt(this.xt, e.fontSize ?? 16), this.Bo = new Yt(e.frameRate ?? 60), this.Eo = new jt(this.er), this.Do = new Vt(), this.To = this.xt.Tt(), this.Lo = this.xt.re(), this.Ko(e);
2936
+ h(this, "na");
2937
+ h(this, "cr");
2938
+ h(this, "ar", !1);
2939
+ h(this, "oa");
2940
+ this.ar = e.overlay ?? !1, this.er = new Vt(e), this.xt = new Bt(this.er.gr()), this.Ei = new Wt(this.xt, e.fontSize ?? 16), this.Kh = new Kt(e.frameRate ?? 60), this.Ln = new ct(this.er), this.qh = new ut(this.er, this.Ln), this.Zh = new lt(), this.Vh = this.xt.Pt(), this.Qh = this.xt.re(), this.ha(e);
2668
2941
  }
2669
- async Ko(e) {
2942
+ async ha(e) {
2670
2943
  await this.Ei.Vi(e.fontSource);
2671
2944
  const i = this.Ei.maxGlyphDimensions;
2672
- this.hn = new Ht(this.er.canvas, i.width, i.height), this.Eo.Vi(this.hn), this.So = this.xt.Ys(this.hn.cols, this.hn.rows, 5), this.Oo = this.xt.Ys(this.hn.width, this.hn.height, 1), this.hr && (this.Vo = z.Mr(this.xt, this.er.targetCanvas, (s) => this.Ei.Si(s))), this.ko = this.xt.ae(at, "precision mediump float;uniform sampler2D Ua;uniform vec2 Ub;uniform vec2 Uc;uniform vec2 Ud;void main(){vec2 A=gl_FragCoord.xy-Uc;vec2 B=A*(Ub/Ud);vec2 C=(floor(B)+0.5)/Ub;gl_FragColor=texture2D(Ua,C);}"), this.jo(), this.Io(), this.Bo.start(() => this.Go());
2673
- }
2674
- jo() {
2675
- this.Wo = () => {
2676
- this.hr && this.resizeCanvas(this.er.targetCanvas.width, this.er.targetCanvas.height), this.Xo();
2677
- }, window.addEventListener("resize", this.Wo), this.Eo.Kr(), this.Do.Kr(), window.addEventListener("blur", () => {
2678
- this.Do.an();
2679
- }), window.ResizeObserver && this.hr && (this.cr = new ResizeObserver(() => {
2945
+ this.Gr = new jt(this.er.canvas, i.width, i.height), this.Ln.Vi(this.Gr), this.qh.Vi(this.Gr), this.jh = this.xt.Ys(this.Gr.cols, this.Gr.rows, 5), this.Jh = this.xt.Ys(this.Gr.width, this.Gr.height, 1), this.ar && (this.oa = z.$r(this.xt, this.er.targetCanvas, (s) => this.Ei.Si(s))), this.ta = this.xt.he(at, "precision mediump float;uniform sampler2D Ua;uniform vec2 Ub;uniform vec2 Uc;uniform vec2 Ud;void main(){vec2 A=gl_FragCoord.xy-Uc;vec2 B=A*(Ub/Ud);vec2 C=(floor(B)+0.5)/Ub;gl_FragColor=texture2D(Ua,C);}"), this.aa(), this.sa(), this.Kh.start(() => this.Yh());
2946
+ }
2947
+ aa() {
2948
+ this.na = () => {
2949
+ this.ar && this.resizeCanvas(this.er.targetCanvas.width, this.er.targetCanvas.height), this.ra();
2950
+ }, window.addEventListener("resize", this.na), this.Ln.hn(), this.qh.hn(), this.Zh.hn(), window.addEventListener("blur", () => {
2951
+ this.Zh.Gn();
2952
+ }), window.ResizeObserver && this.ar && (this.cr = new ResizeObserver(() => {
2680
2953
  this.resizeCanvas(this.er.targetCanvas.width, this.er.targetCanvas.height);
2681
2954
  }), this.cr.observe(this.er.targetCanvas));
2682
2955
  }
2683
- Go() {
2684
- if (this.Bo.measureFrameRate(), this.Bo.incrementFrame(), this.Ho) return;
2685
- if (this.hr) {
2956
+ Yh() {
2957
+ if (this.Kh.measureFrameRate(), this.Kh.incrementFrame(), this.ea) return;
2958
+ if (this.ar) {
2686
2959
  const i = this.xt.context;
2687
- i.bindTexture(i.TEXTURE_2D, this.Vo.texture), i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, 1), i.texImage2D(i.TEXTURE_2D, 0, i.RGBA, i.RGBA, i.UNSIGNED_BYTE, this.er.targetCanvas), i.bindTexture(i.TEXTURE_2D, null);
2960
+ i.bindTexture(i.TEXTURE_2D, this.oa.texture), i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, 1), i.texImage2D(i.TEXTURE_2D, 0, i.RGBA, i.RGBA, i.UNSIGNED_BYTE, this.er.targetCanvas), i.bindTexture(i.TEXTURE_2D, null);
2688
2961
  }
2689
- this.So.begin(), this.xt.Ds(this.To), this.No(), this.xt.St(this.To), this.So.end(), this.Oo.begin(), this.xt.Ds(this.Lo), this.Lo.Vt({ U0: this.Ei.fontFramebuffer, U1: [this.Ei.textureColumns, this.Ei.textureRows], U2: this.So.textures[0], U3: this.So.textures[1], U4: this.So.textures[2], U5: this.So.textures[4], U6: this.So.textures[3], U7: [this.hn.cols, this.hn.rows], U8: [this.Oo.width, this.Oo.height], U9: this.Oo.width / this.Oo.height }), this.xt.Ns(0, 0, this.er.width, this.er.height), this.Oo.end();
2962
+ this.jh.begin(), this.xt.Bs(this.Vh), this.ia(), this.xt.St(this.Vh), this.jh.end(), this.Jh.begin(), this.xt.Bs(this.Qh), this.Qh.Vt({ U0: this.Ei.fontFramebuffer, U1: [this.Ei.textureColumns, this.Ei.textureRows], U2: this.jh.textures[0], U3: this.jh.textures[1], U4: this.jh.textures[2], U5: this.jh.textures[4], U6: this.jh.textures[3], U7: [this.Gr.cols, this.Gr.rows], U8: [this.Jh.width, this.Jh.height], U9: this.Jh.width / this.Jh.height }), this.xt.Ns(0, 0, this.er.width, this.er.height), this.Jh.end();
2690
2963
  const e = this.xt.state.canvasBackgroundColor;
2691
- this.xt.Ne(e[0], e[1], e[2], e[3]), this.xt.Ds(this.ko), this.ko.Vt({ Ua: this.Oo.textures[0], Ub: [this.Oo.width, this.Oo.height], Uc: [this.hn.offsetX, this.hn.offsetY], Ud: [this.hn.width, this.hn.height] }), this.xt.Ns(this.hn.offsetX, this.hn.offsetY, this.hn.width, this.hn.height);
2964
+ this.xt.Ne(e[0], e[1], e[2], e[3]), this.xt.Bs(this.ta), this.ta.Vt({ Ua: this.Jh.textures[0], Ub: [this.Jh.width, this.Jh.height], Uc: [this.Gr.offsetX, this.Gr.offsetY], Ud: [this.Gr.width, this.Gr.height] }), this.xt.Ns(this.Gr.offsetX, this.Gr.offsetY, this.Gr.width, this.Gr.height);
2692
2965
  }
2693
2966
  setup(e) {
2694
- this.Io = e;
2967
+ this.sa = e;
2695
2968
  }
2696
2969
  draw(e) {
2697
- this.No = e;
2970
+ this.ia = e;
2698
2971
  }
2699
2972
  windowResized(e) {
2700
- this.Xo = e;
2973
+ this.ra = e;
2701
2974
  }
2702
2975
  resizeCanvas(e, i) {
2703
- this.er.gr(e, i), this.hn.rr(), this.So.resize(this.hn.cols, this.hn.rows), this.Oo.resize(this.hn.width, this.hn.height), this.xt.Qs(), this.Eo.bn(), this.Go();
2976
+ this.er.mr(e, i), this.Gr.rr(), this.jh.resize(this.Gr.cols, this.Gr.rows), this.Jh.resize(this.Gr.width, this.Gr.height), this.xt.Qs(), this.Ln.nn(), this.qh.yo(), this.Yh();
2704
2977
  }
2705
2978
  destroy() {
2706
- this.Ho || (this.Bo.stop(), window.removeEventListener("resize", this.Wo), this.Eo.qr(), this.Do.qr(), this.Ei.Gt(), this.xt.Gt(), this.Oo.Gt(), this.ko.Gt(), this.Vo && this.Vo.Gt(), this.Ho = !0);
2979
+ this.ea || (this.Kh.stop(), window.removeEventListener("resize", this.na), this.Ln.pn(), this.qh.pn(), this.Zh.pn(), this.Ei.kt(), this.xt.kt(), this.Jh.kt(), this.ta.kt(), this.oa && this.oa.kt(), this.ea = !0);
2707
2980
  }
2708
2981
  get grid() {
2709
- return this.hn;
2982
+ return this.Gr;
2710
2983
  }
2711
2984
  get font() {
2712
2985
  return this.Ei;
@@ -2721,37 +2994,38 @@ class de extends function(e, ...i) {
2721
2994
  return this.er.canvas;
2722
2995
  }
2723
2996
  get isDisposed() {
2724
- return this.Ho;
2997
+ return this.ea;
2725
2998
  }
2726
2999
  get overlay() {
2727
- return this.Vo;
3000
+ return this.oa;
2728
3001
  }
2729
3002
  }
2730
3003
  class Q {
2731
3004
  constructor() {
2732
3005
  }
2733
3006
  static create(t = {}) {
2734
- return new de(t);
3007
+ return new Ae(t);
2735
3008
  }
2736
3009
  static setErrorLevel(t) {
2737
- G.A(t);
3010
+ N.C(t);
2738
3011
  }
2739
3012
  static get version() {
2740
- return "0.3.0";
3013
+ return "0.3.1";
2741
3014
  }
2742
3015
  }
2743
- const pe = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), me = Q.create, ve = Q.setErrorLevel, Ae = Q.version;
3016
+ const xe = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), Ee = Object.freeze(Object.defineProperty({ __proto__: null, keyboard: Zt, mouse: qt, touch: Jt }, Symbol.toStringTag, { value: "Module" })), we = Q.create, Te = Q.setErrorLevel, be = Q.version;
2744
3017
  export {
2745
- kt as TextmodeCanvas,
2746
- ut as TextmodeErrorLevel,
2747
- Xt as TextmodeFont,
3018
+ Vt as TextmodeCanvas,
3019
+ gt as TextmodeErrorLevel,
3020
+ Wt as TextmodeFont,
2748
3021
  q as TextmodeFramebuffer,
2749
- Ht as TextmodeGrid,
3022
+ jt as TextmodeGrid,
2750
3023
  z as TextmodeImage,
2751
- de as Textmodifier,
2752
- me as create,
2753
- pe as export,
2754
- ve as setErrorLevel,
3024
+ Ae as Textmodifier,
3025
+ we as create,
3026
+ xe as export,
3027
+ Ee as input,
3028
+ Te as setErrorLevel,
2755
3029
  Q as textmode,
2756
- Ae as version
3030
+ be as version
2757
3031
  };