textmode.js 0.3.0 → 0.3.2-beta.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 ht = Object.defineProperty;
2
+ var at = (a, t, e) => t in a ? ht(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e;
3
+ var h = (a, t, e) => at(a, typeof t != "symbol" ? t + "" : t, e);
4
+ class C extends Error {
5
5
  constructor(t, e = {}) {
6
- super(U.i(t, e)), this.name = "TextmodeError";
6
+ super(C.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}: ${C.o(s)}`).join("") : ""}
13
13
 
14
14
  ${"↓".repeat(24)}
15
15
  `;
@@ -19,76 +19,76 @@ ${"↓".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) => C.o(e)).join(", ")}]` : `[${t.slice(0, 3).map((e) => C.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}: ${C.o(t[i])}`).join(", ")} }` : `{ ${e.slice(0, 2).map((i) => `${i}: ${C.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 ct = ((a) => (a[a.SILENT = 0] = "SILENT", a[a.WARNING = 1] = "WARNING", a[a.ERROR = 2] = "ERROR", a[a.THROW = 3] = "THROW", a))(ct || {});
31
+ const _ = class _ {
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 _.l || (_.l = new _()), _.l;
37
37
  }
38
- _(t, e) {
38
+ v(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(C.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(C.i(t, e)), console.groupEnd(), !1;
47
47
  default:
48
- throw new U(t, e);
48
+ throw new C(t, e);
49
49
  }
50
50
  }
51
- v(t, e, i) {
52
- return !!t || (this._(e, i), !1);
51
+ m(t, e, i) {
52
+ return !!t || (this.v(e, i), !1);
53
53
  }
54
54
  A(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(_, "l", null);
59
+ let q = _;
60
+ const N = q._(), et = /* @__PURE__ */ new WeakMap();
61
+ function W(a, t) {
62
+ et.set(a, t);
63
63
  }
64
- function k(h) {
65
- return ot.get(h);
64
+ function H(a) {
65
+ return et.get(a);
66
66
  }
67
- class ht {
67
+ class it {
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, "C", 1);
70
+ h(this, "M", 0);
71
+ h(this, "U", 0);
72
+ h(this, "F", 0);
73
+ h(this, "R", [0, 0, 0]);
74
+ h(this, "P", [1, 1, 1, 1]);
75
+ h(this, "S", [0, 0, 0, 1]);
76
+ h(this, "$", !1);
77
+ h(this, "D", !1);
78
+ h(this, "k", !1);
79
+ h(this, "L", [0, 0]);
80
+ h(this, "O", [0, 0, 0, 1]);
81
+ h(this, "G", []);
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.G.push({ I: this.C, N: this.M, X: this.U, W: this.F, L: [...this.L], K: this.$, Y: this.D, k: this.k, j: [...this.R], V: [...this.P], q: [...this.S] });
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.G.pop();
88
+ t ? (this.C = t.I, this.M = t.N, this.U = t.X, this.F = t.W, this.L = t.L, this.$ = t.K, this.D = t.Y, this.k = t.k, this.R = t.j, this.P = t.V, this.S = 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.C, t.N = this.M, t.X = this.U, t.W = this.F, t.j[0] = this.R[0], t.j[1] = this.R[1], t.j[2] = this.R[2], t.V[0] = this.P[0], t.V[1] = this.P[1], t.V[2] = this.P[2], t.V[3] = this.P[3], t.q[0] = this.S[0], t.q[1] = this.S[1], t.q[2] = this.S[2], t.q[3] = this.S[3], t.K = this.$, t.Y = this.D, t.k = this.k, t.L[0] = this.L[0], t.L[1] = this.L[1];
92
92
  }
93
93
  get lineWeight() {
94
94
  return this.C;
@@ -99,32 +99,32 @@ class ht {
99
99
  tt(t) {
100
100
  this.C = Math.abs(t);
101
101
  }
102
- et(t) {
103
- this.$ = t;
104
- }
105
102
  st(t) {
103
+ this.M = t;
104
+ }
105
+ et(t) {
106
106
  this.U = t;
107
107
  }
108
108
  it(t) {
109
- this.M = t;
109
+ this.F = t;
110
110
  }
111
111
  rt(t) {
112
- this.F = t;
112
+ this.R = t;
113
113
  }
114
114
  nt(t, e, i, s = 255) {
115
- this.R = [t / 255, e / 255, i / 255, s / 255];
115
+ this.P = [t / 255, e / 255, i / 255, s / 255];
116
116
  }
117
117
  ot(t, e, i, s = 255) {
118
- this.P = [t / 255, e / 255, i / 255, s / 255];
118
+ this.S = [t / 255, e / 255, i / 255, s / 255];
119
119
  }
120
120
  ht(t) {
121
- this.S = t;
121
+ this.$ = 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));
@@ -134,170 +134,170 @@ class ht {
134
134
  this.O = [t / 255, e / 255, i / 255, s / 255];
135
135
  }
136
136
  }
137
- class q {
137
+ class K {
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, "vt", null);
143
+ h(this, "gt");
144
+ h(this, "At");
145
+ h(this, "yt", []);
146
+ h(this, "Ct");
147
+ h(this, "wt", null);
148
+ h(this, "bt", []);
149
+ h(this, "xt", null);
150
+ h(this, "Mt", !1);
151
+ h(this, "Ft", null);
152
+ this.dt = e, this._t = i, this.u = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...r }, this.gt = t, this.Ct = Math.min(Math.max(1, s), 8), this.xt = n, this.Mt = !!o, this.Ft = this.Mt ? new it() : 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.At = t.createFramebuffer(), this.zt(), this.Rt(), this.bt = Array(this.Ct).fill(null);
155
155
  }
156
- Ft() {
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++) {
156
+ zt() {
157
+ const t = this.gt, 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.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
164
  Rt() {
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);
165
+ const t = this.gt;
166
+ if (t.bindFramebuffer(t.FRAMEBUFFER, this.At), 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) {
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);
178
+ Tt(t) {
179
+ const e = this.gt;
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);
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);
183
+ this.dt = t, this._t = e, this.vt = null, this.bt = Array(this.Ct).fill(null);
184
+ const i = this.gt, s = this.u.type === "float" ? i.FLOAT : i.UNSIGNED_BYTE;
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) {
189
- const e = this.vt, i = this.bt[t];
188
+ readPixels(t) {
189
+ const e = this.gt, 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.At), 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
- for (let u = 0; u < r; u++) {
195
- const f = (r - 1 - u) * c, g = u * c;
196
- l.set(n.subarray(f, f + c), g);
194
+ for (let f = 0; f < r; f++) {
195
+ const u = (r - 1 - f) * c, m = f * c;
196
+ l.set(n.subarray(u, u + c), m);
197
197
  }
198
198
  return this.bt[t] = l, l;
199
199
  }
200
200
  begin() {
201
201
  var e, i, s, r;
202
- const t = this.vt;
202
+ const t = this.gt;
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.Ft && ((r = (s = this.xt).Et) == null || r.call(s, this.Ft));
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.wt = { framebuffer: t.getParameter(t.FRAMEBUFFER_BINDING), viewport: t.getParameter(t.VIEWPORT) }, t.bindFramebuffer(t.FRAMEBUFFER, this.At), 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), W(t, [0, 0, this.dt, this._t]);
210
210
  }
211
211
  end() {
212
212
  var e, i, s, r;
213
- if (!this.Ct) return;
214
- const t = this.vt;
213
+ if (!this.wt) return;
214
+ const t = this.gt;
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.wt.framebuffer), t.viewport(...this.wt.viewport), W(t, this.wt.viewport), this.wt = null, this.xt && this.Mt && this.Ft && ((r = (s = this.xt).$t) == null || r.call(s));
220
220
  }
221
- Gt() {
222
- const t = this.vt;
223
- t.deleteFramebuffer(this.yt);
224
- for (const e of this.At) t.deleteTexture(e);
221
+ Dt() {
222
+ const t = this.gt;
223
+ t.deleteFramebuffer(this.At);
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 O {
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();
244
- }
245
- It() {
246
- const t = this.vt.getProgramParameter(this.Dt, this.vt.ACTIVE_UNIFORMS);
238
+ h(this, "gt");
239
+ h(this, "kt");
240
+ h(this, "Bt", /* @__PURE__ */ new Map());
241
+ h(this, "Lt", /* @__PURE__ */ new Map());
242
+ h(this, "Ot", 0);
243
+ this.gt = t, this.kt = this.Gt(e, i), this.Ht();
244
+ }
245
+ Ht() {
246
+ const t = this.gt.getProgramParameter(this.kt, this.gt.ACTIVE_UNIFORMS);
247
247
  for (let e = 0; e < t; e++) {
248
- const i = this.vt.getActiveUniform(this.Dt, e);
248
+ const i = this.gt.getActiveUniform(this.kt, 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.gt.getUniformLocation(this.kt, i.name);
251
+ if (s && (this.Bt.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.Bt.has(r) || (this.Bt.set(r, s), this.Lt.set(r, { type: i.type, size: i.size }));
254
254
  }
255
255
  }
256
256
  }
257
257
  }
258
- Ht(t, e) {
259
- const i = this.Nt(this.vt.VERTEX_SHADER, t), s = this.Nt(this.vt.FRAGMENT_SHADER, e), r = this.vt.createProgram();
260
- if (this.vt.attachShader(r, i), this.vt.attachShader(r, s), this.vt.linkProgram(r), !this.vt.getProgramParameter(r, this.vt.LINK_STATUS)) {
261
- const n = this.vt.getProgramInfoLog(r);
258
+ Gt(t, e) {
259
+ const i = this.It(this.gt.VERTEX_SHADER, t), s = this.It(this.gt.FRAGMENT_SHADER, e), r = this.gt.createProgram();
260
+ if (this.gt.attachShader(r, i), this.gt.attachShader(r, s), this.gt.linkProgram(r), !this.gt.getProgramParameter(r, this.gt.LINK_STATUS)) {
261
+ const n = this.gt.getProgramInfoLog(r);
262
262
  throw Error("Shader program link error: " + n);
263
263
  }
264
- return this.vt.deleteShader(i), this.vt.deleteShader(s), r;
264
+ return this.gt.deleteShader(i), this.gt.deleteShader(s), r;
265
265
  }
266
- Nt(t, e) {
267
- const i = this.vt.createShader(t);
268
- if (this.vt.shaderSource(i, e), this.vt.compileShader(i), !this.vt.getShaderParameter(i, this.vt.COMPILE_STATUS)) {
269
- const s = this.vt.getShaderInfoLog(i);
270
- throw this.vt.deleteShader(i), Error("Shader compilation error: " + s);
266
+ It(t, e) {
267
+ const i = this.gt.createShader(t);
268
+ if (this.gt.shaderSource(i, e), this.gt.compileShader(i), !this.gt.getShaderParameter(i, this.gt.COMPILE_STATUS)) {
269
+ const s = this.gt.getShaderInfoLog(i);
270
+ throw this.gt.deleteShader(i), Error("Shader compilation error: " + s);
271
271
  }
272
272
  return i;
273
273
  }
274
- Xt() {
275
- this.vt.useProgram(this.Dt), this.Wt();
274
+ Nt() {
275
+ this.gt.useProgram(this.kt), this.Xt();
276
276
  }
277
- Wt() {
278
- this.kt = 0;
277
+ Xt() {
278
+ this.Ot = 0;
279
279
  }
280
- Vt(t) {
280
+ Wt(t) {
281
281
  for (const [e, i] of Object.entries(t)) this.Kt(e, i);
282
282
  }
283
- jt(t) {
284
- return this.Lt.has(t);
285
- }
286
283
  Yt(t) {
287
- return this.Ot.get(t) || null;
284
+ return this.Bt.has(t);
288
285
  }
289
- qt() {
286
+ jt(t) {
287
+ return this.Lt.get(t) || null;
288
+ }
289
+ Vt() {
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
294
  Kt(t, e) {
295
295
  var c;
296
- const i = this.Lt.get(t);
296
+ const i = this.Bt.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
- const { type: r, size: n } = s, o = this.vt;
300
+ const { type: r, size: n } = s, o = this.gt;
301
301
  if (typeof e == "number") switch (r) {
302
302
  case o.INT:
303
303
  case o.BOOL:
@@ -311,16 +311,16 @@ class I {
311
311
  }
312
312
  else if (typeof e == "boolean") o.uniform1i(i, e ? 1 : 0);
313
313
  else if (Array.isArray(e)) if (Array.isArray(e[0])) {
314
- const l = e, u = ((c = l[0]) == null ? void 0 : c.length) || 0, f = l.flat();
314
+ const l = e, f = ((c = l[0]) == null ? void 0 : c.length) || 0, u = l.flat();
315
315
  switch (r) {
316
316
  case o.FLOAT_VEC2:
317
- u === 2 ? o.uniform2fv(i, f) : console.warn(`Vector length mismatch for '${t}': expected 2, got ${u}`);
317
+ f === 2 ? o.uniform2fv(i, u) : console.warn(`Vector length mismatch for '${t}': expected 2, got ${f}`);
318
318
  break;
319
319
  case o.FLOAT_VEC3:
320
- u === 3 ? o.uniform3fv(i, f) : console.warn(`Vector length mismatch for '${t}': expected 3, got ${u}`);
320
+ f === 3 ? o.uniform3fv(i, u) : console.warn(`Vector length mismatch for '${t}': expected 3, got ${f}`);
321
321
  break;
322
322
  case o.FLOAT_VEC4:
323
- u === 4 ? o.uniform4fv(i, f) : console.warn(`Vector length mismatch for '${t}': expected 4, got ${u}`);
323
+ f === 4 ? o.uniform4fv(i, u) : console.warn(`Vector length mismatch for '${t}': expected 4, got ${f}`);
324
324
  break;
325
325
  default:
326
326
  console.warn(`Unsupported uniform type for vector array '${t}': ${r}`);
@@ -345,602 +345,602 @@ class I {
345
345
  console.warn(`Unsupported uniform type for array '${t}': ${r}`);
346
346
  }
347
347
  else if (e instanceof WebGLTexture) {
348
- const l = this.Zt();
348
+ const l = this.qt();
349
349
  o.uniform1i(i, l), o.activeTexture(o.TEXTURE0 + l), o.bindTexture(o.TEXTURE_2D, e);
350
- } else if (e instanceof q) {
351
- const l = this.Zt();
350
+ } else if (e instanceof K) {
351
+ const l = this.qt();
352
352
  o.uniform1i(i, l), o.activeTexture(o.TEXTURE0 + l), o.bindTexture(o.TEXTURE_2D, e.textures[0]);
353
353
  } else console.warn(`Unsupported uniform type for '${t}':`, typeof e);
354
354
  }
355
- Zt() {
356
- return this.kt++;
355
+ qt() {
356
+ return this.Ot++;
357
357
  }
358
- get Qt() {
359
- return this.Dt;
358
+ get Zt() {
359
+ return this.kt;
360
360
  }
361
- Gt() {
362
- this.vt.deleteProgram(this.Dt);
361
+ Dt() {
362
+ this.gt.deleteProgram(this.kt);
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);}`, st = "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 lt {
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);}`);
378
- }
379
- ie() {
369
+ h(this, "gt");
370
+ h(this, "Qt");
371
+ h(this, "Jt");
372
+ h(this, "ts");
373
+ h(this, "ss");
374
+ this.gt = t, this.Jt = new O(this.gt, 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.Qt = new O(this.gt, 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.ts = new O(this.gt, st, "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.ss = new O(this.gt, 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
+ }
379
+ es() {
380
+ return this.Qt;
381
+ }
382
+ Pt() {
380
383
  return this.Jt;
381
384
  }
382
- Tt() {
383
- return this.te;
384
- }
385
- re() {
386
- return this.ee;
385
+ rs() {
386
+ return this.ts;
387
387
  }
388
- ne() {
389
- return this.se;
388
+ ns() {
389
+ return this.ss;
390
390
  }
391
- oe(t) {
392
- return new I(this.vt, W, t);
391
+ hs(t) {
392
+ return new O(this.gt, X, t);
393
393
  }
394
- ae(t, e) {
395
- return new I(this.vt, t, e);
394
+ cs(t, e) {
395
+ return new O(this.gt, t, e);
396
396
  }
397
- Gt() {
398
- this.Jt.Gt(), this.te.Gt(), this.ee.Gt(), this.se.Gt();
397
+ Dt() {
398
+ this.Qt.Dt(), this.Jt.Dt(), this.ts.Dt(), this.ss.Dt();
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 ut {
403
403
  constructor(t) {
404
- a(this, "vt");
405
- a(this, "he", /* @__PURE__ */ new Map());
406
- this.vt = t;
407
- }
408
- ce(t, e, i, s) {
409
- const r = this.vt;
410
- let n = this.he.get(t);
411
- n || (n = /* @__PURE__ */ new Map(), this.he.set(t, n));
404
+ h(this, "gt");
405
+ h(this, "ls", /* @__PURE__ */ new Map());
406
+ this.gt = t;
407
+ }
408
+ us(t, e, i, s) {
409
+ const r = this.gt;
410
+ let n = this.ls.get(t);
411
+ n || (n = /* @__PURE__ */ new Map(), this.ls.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);
415
415
  const c = r.getAttribLocation(t, "a_position");
416
- c !== -1 && (r.enableVertexAttribArray(c), r.vertexAttribPointer(c, i.ue.le.size, r.FLOAT, !1, i.fe, i.ue.le.offset), r.vertexAttribDivisor(c, 0));
416
+ c !== -1 && (r.enableVertexAttribArray(c), r.vertexAttribPointer(c, i.ds.fs.size, r.FLOAT, !1, i._s, i.ds.fs.offset), r.vertexAttribDivisor(c, 0));
417
417
  const l = r.getAttribLocation(t, "a_texCoord");
418
- l !== -1 && (r.enableVertexAttribArray(l), r.vertexAttribPointer(l, i.ue.de.size, r.FLOAT, !1, i.fe, i.ue.de.offset), r.vertexAttribDivisor(l, 0));
418
+ l !== -1 && (r.enableVertexAttribArray(l), r.vertexAttribPointer(l, i.ds.ps.size, r.FLOAT, !1, i._s, i.ds.ps.offset), r.vertexAttribDivisor(l, 0));
419
419
  }
420
420
  r.bindVertexArray(o);
421
421
  }
422
- pe() {
423
- this.vt.bindVertexArray(null);
422
+ vs() {
423
+ this.gt.bindVertexArray(null);
424
424
  }
425
- Gt() {
426
- for (const [, t] of this.he) for (const [, e] of t) e && this.vt.deleteVertexArray(e);
425
+ Dt() {
426
+ for (const [, t] of this.ls) for (const [, e] of t) e && this.gt.deleteVertexArray(e);
427
427
  }
428
428
  }
429
- class gt {
429
+ class ft {
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;
437
- }
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]] });
431
+ h(this, "gs");
432
+ h(this, "gt");
433
+ h(this, "xt");
434
+ h(this, "As", null);
435
+ h(this, "Cs", null);
436
+ this.gt = t, this.gs = new ut(t), this.xt = e;
437
+ }
438
+ ws(t, e, i) {
439
+ const { shader: s } = t, r = H(this.gt) || this.gt.getParameter(this.gt.VIEWPORT);
440
+ s.Wt({ U9: r[2] / r[3], Uw: [r[2], r[3]] });
441
441
  const n = (l) => {
442
- if (!l || !l.ye()) return;
443
- const u = l.unitGeometry, f = l.unitBuffer;
442
+ if (!l || !l.bs()) return;
443
+ const f = l.unitGeometry, u = 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.gs.us(s.Zt, l.type + "", f, u), l.batch.Ms(s), l.batch.Fs(f.zs, f.Rs);
446
446
  } finally {
447
- l.batch.xe(s), this.me.pe(), l.$e();
447
+ l.batch.Ts(s), this.gs.vs(), l.Ps();
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.Ss(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);
457
- let u = c;
458
- u && l.type === o || (u = i.get(l.type) || null, c = u, o = l.type), u && u.Fe(l.params, l.state);
457
+ let f = c;
458
+ f && l.type === o || (f = i.get(l.type) || null, c = f, o = l.type), f && f.Es(l.params, l.state);
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();
467
- }
468
- ze(t, e, i, s, r, n, o, c) {
469
- e.Xt(), e.Vt(i);
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()) {
472
- const u = t.unitGeometry, f = t.unitBuffer;
462
+ Ss(t, e, i, s) {
463
+ const { x: r, y: n, width: o, height: c, shader: l, uniforms: f } = e, u = this.$s(Math.max(1, Math.floor(o)), Math.max(1, Math.floor(c)));
464
+ u.begin(), this.Ds(s, l, f, 0, 0, u.width, u.height, {}), u.end();
465
+ const m = this.ks(), p = { Ue: u.textures[0], Uf: u.textures[1], Ug: u.textures[2], Uh: u.textures[3], Ui: u.textures[4], Uj: [u.width, u.height] };
466
+ this.Ds(s, m, p, Math.floor(r), Math.floor(n), Math.max(1, Math.floor(o)), Math.max(1, Math.floor(c)), i), t.shader.Nt();
467
+ }
468
+ Ds(t, e, i, s, r, n, o, c) {
469
+ e.Nt(), e.Wt(i);
470
+ const l = this.gt.getParameter(this.gt.VIEWPORT);
471
+ if (e.Wt({ U9: l[2] / l[3], Uw: [l[2], l[3]] }), t.Ps(), t.Es({ x: s, y: r, width: n, height: o }, c), t.bs()) {
472
+ const f = t.unitGeometry, u = 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.gs.us(e.Zt, t.type + "", f, u), t.batch.Ms(e), t.batch.Fs(f.zs, f.Rs);
475
475
  } finally {
476
- t.batch.xe(e), this.me.pe(), t.$e();
476
+ t.batch.Ts(e), this.gs.vs(), t.Ps();
477
477
  }
478
478
  }
479
479
  }
480
- Pe() {
481
- return this.xt.ie();
480
+ ks() {
481
+ return this.xt.es();
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
+ $s(t, e) {
484
+ return this.As && this.Cs && this.Cs.w === t && this.Cs.h === e || (this.As && this.As.Dt(), this.As = new K(this.gt, t, e, 5), this.Cs = { w: t, h: e }), this.As;
485
485
  }
486
- Gt() {
487
- this.me.Gt(), this.ge && this.ge.Gt();
486
+ Dt() {
487
+ this.gs.Dt(), this.As && this.As.Dt();
488
488
  }
489
489
  }
490
- class pt {
490
+ class dt {
491
491
  constructor() {
492
- a(this, "Te", []);
493
- a(this, "Se", 1);
494
- a(this, "Ee", 0);
492
+ h(this, "Bs", []);
493
+ h(this, "Ls", 1);
494
+ h(this, "Os", 0);
495
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);
496
+ Gs(t) {
497
+ if (this.Os >= this.Bs.length) {
498
+ const i = { id: this.Ls++, type: t, params: {}, state: { I: 1, N: 0, X: 0, W: 0, j: [0, 0, 0], V: [1, 1, 1, 1], q: [0, 0, 0, 1], K: !1, Y: !1, k: !1, L: [0, 0] } };
499
+ this.Bs.push(i);
500
500
  }
501
- const e = this.Te[this.Ee];
502
- return e.id = this.Se++, e.type = t, this.Ee++, e;
501
+ const e = this.Bs[this.Os];
502
+ return e.id = this.Ls++, e.type = t, this.Os++, e;
503
503
  }
504
- Ge(t, e, i, s, r) {
505
- const n = this.Be(y.RECTANGLE);
504
+ Hs(t, e, i, s, r) {
505
+ const n = this.Gs(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
+ Is(t, e, i, s, r, n, o) {
509
+ const c = this.Gs(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
+ Ns(t, e, i, s, r, n) {
513
+ const o = this.Gs(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
+ Xs(t, e, i, s, r) {
517
+ const n = this.Gs(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
+ Ws(t, e, i, s, r, n, o) {
521
+ const c = this.Gs(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
- He(t, e, i, s, r, n, o) {
525
- const c = this.Be(y.TRIANGLE);
524
+ Ks(t, e, i, s, r, n, o) {
525
+ const c = this.Gs(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
- Ie(t, e, i, s, r, n, o, c, l, u) {
529
- const f = this.Be(y.BEZIER_CURVE);
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;
528
+ Ys(t, e, i, s, r, n, o, c, l, f) {
529
+ const u = this.Gs(E.BEZIER_CURVE);
530
+ return u.params.x1 = t, u.params.y1 = e, u.params.cp1x = i, u.params.cp1y = s, u.params.cp2x = r, u.params.cp2y = n, u.params.x2 = o, u.params.y2 = c, u.params.thickness = l, f.J(u.state), u.id;
531
531
  }
532
532
  get length() {
533
- return this.Ee;
533
+ return this.Os;
534
534
  }
535
535
  get isEmpty() {
536
- return this.Ee === 0;
536
+ return this.Os === 0;
537
537
  }
538
- Ne() {
539
- this.Ee = 0;
538
+ js() {
539
+ this.Os = 0;
540
540
  }
541
541
  [Symbol.iterator]() {
542
542
  let t = 0;
543
- const e = this.Ee, i = this.Te;
543
+ const e = this.Os, i = this.Bs;
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 {
548
- static Xe(t, e, i = 0) {
549
- var n, o, c, l, u, f, g, v, m, d;
550
- const s = e || new Float32Array(P.FLOATS_PER_INSTANCE);
547
+ const L = class L {
548
+ static Vs(t, e, i = 0) {
549
+ var n, o, c, l, f, u, m, p, g, d;
550
+ const s = e || new Float32Array(L.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.fs[0], s[r++] = t.fs[1], s[r++] = t.Os[0], s[r++] = t.Os[1], s[r++] = t.j[0], s[r++] = t.j[1], s[r++] = t.j[2], s[r++] = t.V[0], s[r++] = t.V[1], s[r++] = t.V[2], s[r++] = t.V[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.qs[0], s[r++] = t.qs[1], s[r++] = t.qs[2], s[r++] = t.N, s[r++] = t.X, s[r++] = t.W, s[r++] = t.Zs[0], s[r++] = t.Zs[1], s[r++] = ((n = t.Qs) == null ? void 0 : n[0]) || 0, s[r++] = ((o = t.Qs) == null ? void 0 : o[1]) || 0, s[r++] = ((c = t.Js) == null ? void 0 : c[0]) || 0, s[r++] = ((l = t.Js) == null ? void 0 : l[1]) || 0, s[r++] = ((f = t.te) == null ? void 0 : f[0]) || 0, s[r++] = ((u = t.te) == null ? void 0 : u[1]) || 0, s[r++] = ((m = t.se) == null ? void 0 : m[0]) || 0, s[r++] = ((p = t.se) == null ? void 0 : p[1]) || 0, s[r++] = ((g = t.ee) == null ? void 0 : g[0]) || 0, s[r++] = ((d = t.ee) == null ? void 0 : d[1]) || 0, s;
553
553
  }
554
- static Qe(t) {
555
- const e = t.length * P.FLOATS_PER_INSTANCE, i = new Float32Array(e);
554
+ static ie(t) {
555
+ const e = t.length * L.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 * L.FLOATS_PER_INSTANCE;
558
+ L.Vs(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(L, "BYTES_PER_INSTANCE", 140), h(L, "FLOATS_PER_INSTANCE", 35);
564
+ let D = L;
565
+ const b = class b {
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(b, "STRIDE", D.BYTES_PER_INSTANCE), h(b, "ATTRIBUTES", { a_instancePosition: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 0, divisor: 1 }, a_instanceSize: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 8, divisor: 1 }, a_instanceCharacter: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 16, divisor: 1 }, a_instancePrimaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 28, divisor: 1 }, a_instanceSecondaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 44, divisor: 1 }, a_instanceRotation: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 60, divisor: 1 }, a_instanceTransform: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 68, divisor: 1 }, a_instanceGlobalRotation: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 80, divisor: 1 }, a_instanceRotationCenter: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 92, divisor: 1 }, a_instanceArcAngles: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 100, divisor: 1 }, a_instanceBezierCP1: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 108, divisor: 1 }, a_instanceBezierCP2: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 116, divisor: 1 }, a_instanceBezierStart: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 124, divisor: 1 }, a_instanceBezierEnd: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: b.STRIDE, offset: 132, divisor: 1 } });
568
+ let j = b;
569
+ class gt {
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);
580
- this.vt = t, this.ts = e, this.es = i, this.ls();
581
- }
582
- Fe(t) {
583
- const e = this.Je.length;
584
- return this.Je.push(t), this.rs = !0, e;
571
+ h(this, "gt");
572
+ h(this, "re", []);
573
+ h(this, "ne");
574
+ h(this, "oe");
575
+ h(this, "he", null);
576
+ h(this, "ae", !0);
577
+ h(this, "ce", 0);
578
+ h(this, "le", /* @__PURE__ */ new Map());
579
+ h(this, "ue", null);
580
+ this.gt = t, this.ne = e, this.oe = i, this.fe();
581
+ }
582
+ Es(t) {
583
+ const e = this.re.length;
584
+ return this.re.push(t), this.ae = !0, e;
585
585
  }
586
586
  get count() {
587
- return this.Je.length;
587
+ return this.re.length;
588
588
  }
589
589
  get isEmpty() {
590
- return this.Je.length === 0;
590
+ return this.re.length === 0;
591
591
  }
592
592
  clear() {
593
- this.Je.length = 0, this.rs = !0;
594
- }
595
- us(t) {
596
- if (t <= this.ts) return;
597
- const e = Math.ceil(t * this.es);
598
- this.ts = e, this.ls();
599
- }
600
- ls() {
601
- const t = this.vt;
602
- this.ss && t.deleteBuffer(this.ss), this.ss = t.createBuffer();
603
- const e = this.ts * M.BYTES_PER_INSTANCE;
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
- }
606
- fs() {
607
- if (!this.rs || this.Je.length === 0) return;
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);
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
- }
613
- ds(t) {
614
- let e = this.hs.get(t);
593
+ this.re.length = 0, this.ae = !0;
594
+ }
595
+ de(t) {
596
+ if (t <= this.ne) return;
597
+ const e = Math.ceil(t * this.oe);
598
+ this.ne = e, this.fe();
599
+ }
600
+ fe() {
601
+ const t = this.gt;
602
+ this.he && t.deleteBuffer(this.he), this.he = t.createBuffer();
603
+ const e = this.ne * D.BYTES_PER_INSTANCE;
604
+ t.bindBuffer(t.ARRAY_BUFFER, this.he), t.bufferData(t.ARRAY_BUFFER, e, t.DYNAMIC_DRAW), t.bindBuffer(t.ARRAY_BUFFER, null), this.ae = !0, this.ce = 0;
605
+ }
606
+ _e() {
607
+ if (!this.ae || this.re.length === 0) return;
608
+ const t = this.gt, e = this.re.length;
609
+ this.de(e), (!this.ue || this.ue.length < e * D.FLOATS_PER_INSTANCE) && (this.ue = new Float32Array(e * D.FLOATS_PER_INSTANCE));
610
+ const i = D.ie(this.re);
611
+ t.bindBuffer(t.ARRAY_BUFFER, this.he), e <= this.ce ? t.bufferSubData(t.ARRAY_BUFFER, 0, i) : t.bufferData(t.ARRAY_BUFFER, i, t.DYNAMIC_DRAW), t.bindBuffer(t.ARRAY_BUFFER, null), this.ae = !1, this.ce = e;
612
+ }
613
+ pe(t) {
614
+ let e = this.le.get(t);
615
615
  if (!e) {
616
616
  e = /* @__PURE__ */ new Map();
617
- const i = this.vt;
618
- for (const s in Y.ATTRIBUTES) {
617
+ const i = this.gt;
618
+ for (const s in j.ATTRIBUTES) {
619
619
  const r = i.getAttribLocation(t, s);
620
620
  r !== -1 && e.set(s, r);
621
621
  }
622
- this.hs.set(t, e);
622
+ this.le.set(t, e);
623
623
  }
624
624
  return e;
625
625
  }
626
- Ae(t) {
627
- if (!this.ss || this.Je.length === 0) return;
628
- const e = this.vt, i = t.Qt;
629
- this.fs();
630
- const s = this.ds(i);
631
- e.bindBuffer(e.ARRAY_BUFFER, this.ss);
626
+ Ms(t) {
627
+ if (!this.he || this.re.length === 0) return;
628
+ const e = this.gt, i = t.Zt;
629
+ this._e();
630
+ const s = this.pe(i);
631
+ e.bindBuffer(e.ARRAY_BUFFER, this.he);
632
632
  for (const [r, n] of s) {
633
- const o = Y.ATTRIBUTES[r];
633
+ const o = j.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
  }
637
- xe(t) {
638
- const e = this.vt, i = this.ds(t.Qt);
637
+ Ts(t) {
638
+ const e = this.gt, i = this.pe(t.Zt);
639
639
  for (const [, s] of i) e.disableVertexAttribArray(s), e.vertexAttribDivisor(s, 0);
640
640
  }
641
- we(t, e) {
642
- this.Je.length !== 0 && this.vt.drawArraysInstanced(t, 0, e, this.Je.length);
641
+ Fs(t, e) {
642
+ this.re.length !== 0 && this.gt.drawArraysInstanced(t, 0, e, this.re.length);
643
643
  }
644
- Gt() {
645
- this.ss && this.vt.deleteBuffer(this.ss);
644
+ Dt() {
645
+ this.he && this.gt.deleteBuffer(this.he);
646
646
  }
647
647
  }
648
- class _ {
648
+ class S {
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;
656
- const r = this.vt.createBuffer();
650
+ h(this, "gt");
651
+ h(this, "ve");
652
+ h(this, "me");
653
+ h(this, "ge");
654
+ h(this, "Ae", null);
655
+ this.gt = t, this.ve = e, this.me = i, this.ge = s;
656
+ const r = this.gt.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.gt.bindBuffer(this.gt.ARRAY_BUFFER, r), this.gt.bufferData(this.gt.ARRAY_BUFFER, this.ge.ye, this.gt.STATIC_DRAW), this.gt.bindBuffer(this.gt.ARRAY_BUFFER, null), this.Ae = r;
659
659
  }
660
660
  get type() {
661
- return this.gs;
661
+ return this.me;
662
662
  }
663
663
  get unitGeometry() {
664
- return this._s;
664
+ return this.ge;
665
665
  }
666
666
  get unitBuffer() {
667
- return this.vs;
667
+ return this.Ae;
668
668
  }
669
669
  get batch() {
670
- return this.ps;
670
+ return this.ve;
671
671
  }
672
- $e() {
673
- this.ps.clear();
672
+ Ps() {
673
+ this.ve.clear();
674
674
  }
675
- ye() {
676
- return !this.ps.isEmpty;
675
+ bs() {
676
+ return !this.ve.isEmpty;
677
677
  }
678
- Gt() {
679
- this.ps.Gt(), this.vt.deleteBuffer(this.vs);
678
+ Dt() {
679
+ this.ve.Dt(), this.gt.deleteBuffer(this.Ae);
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
+ Ce(t, e, i, s, r) {
682
+ const n = this.we(t, e, i, s, r.N || 0, r.X || 0, r.W || 0);
683
+ return { fs: [t, e], Os: [i, s], j: r.j || [0, 0, 0], V: r.V || [1, 1, 1, 1], q: r.q || [0, 0, 0, 1], L: r.L || [0, 0], qs: [r.k ? 1 : 0, r.K ? 1 : 0, r.Y ? 1 : 0], N: n.radiansX, X: n.radiansY, W: n.radiansZ, Zs: [n.centerX, n.centerY] };
684
684
  }
685
- bs(t, e) {
686
- const i = k(this.vt) || [0, 0, this.vt.canvas.width, this.vt.canvas.height];
685
+ be(t, e) {
686
+ const i = H(this.gt) || [0, 0, this.gt.canvas.width, this.gt.canvas.height];
687
687
  return { nx: t / i[2] * 2 - 1, ny: 1 - e / i[3] * 2 };
688
688
  }
689
- $s(t, e, i) {
690
- const s = this.bs(e, i);
691
- t.Ve = [s.nx, s.ny];
689
+ xe(t, e, i) {
690
+ const s = this.be(e, i);
691
+ t.Zs = [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];
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 };
693
+ we(t, e, i, s, r, n, o) {
694
+ const c = H(this.gt) || [0, 0, this.gt.canvas.width, this.gt.canvas.height], l = c[2], f = c[3];
695
+ return { centerX: (t + i / 2) / l * 2 - 1, centerY: 1 - (e + s / 2) / f * 2, radiansX: -r * Math.PI / 180, radiansY: -n * Math.PI / 180, radiansZ: -o * Math.PI / 180, aspectRatio: l / f };
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 mt = { ye: 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]), Rs: 6, zs: WebGL2RenderingContext.TRIANGLES, _s: 16, ds: { fs: { size: 2, offset: 0 }, ps: { size: 2, offset: 8 } } };
699
+ class At extends S {
700
700
  constructor(t, e) {
701
- super(t, e, y.RECTANGLE, vt);
701
+ super(t, e, E.RECTANGLE, mt);
702
702
  }
703
- Fe(t, e) {
704
- const i = this.ws(t.x, t.y, t.width, t.height, e);
705
- return this.ps.Fe(i);
703
+ Es(t, e) {
704
+ const i = this.Ce(t.x, t.y, t.width, t.height, e);
705
+ return this.ve.Es(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 pt = { ye: 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]), Rs: 6, zs: WebGL2RenderingContext.TRIANGLES, _s: 16, ds: { fs: { size: 2, offset: 0 }, ps: { size: 2, offset: 8 } } };
709
+ class vt extends S {
710
710
  constructor(t, e) {
711
- super(t, e, y.LINE, xt);
711
+ super(t, e, E.LINE, pt);
712
712
  }
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);
713
+ Es(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, f = c, u = this.Ce(l, f, r, n, e);
715
+ return this.xe(u, o, c), this.ve.Es(u);
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);
722
- t.push(0, 0, 0.5, 0.5, n, o, c, l, u, f, g, v);
718
+ const yt = { ye: 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), f = Math.cos(r), u = Math.sin(r), m = 0.5 * (f + 1), p = 0.5 * (u + 1);
722
+ t.push(0, 0, 0.5, 0.5, n, o, c, l, f, u, m, p);
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), Rs: 96, zs: WebGL2RenderingContext.TRIANGLES, _s: 16, ds: { fs: { size: 2, offset: 0 }, ps: { size: 2, offset: 8 } } };
726
+ class Et extends S {
727
727
  constructor(t, e) {
728
- super(t, e, y.ELLIPSE, yt);
728
+ super(t, e, E.ELLIPSE, yt);
729
729
  }
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);
730
+ Es(t, e) {
731
+ const i = this.Ce(t.x, t.y, t.width, t.height, e);
732
+ return this.xe(i, t.x, t.y), this.ve.Es(i);
733
733
  }
734
734
  }
735
- let bt = { As: function(h) {
735
+ let xt = { ye: 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), Rs: 96, zs: WebGL2RenderingContext.TRIANGLES, _s: 16, ds: { fs: { size: 2, offset: 0 }, ps: { size: 2, offset: 8 } } };
743
+ class wt extends S {
744
744
  constructor(t, e) {
745
- super(t, e, y.ARC, bt);
745
+ super(t, e, E.ARC, xt);
746
746
  }
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);
747
+ Es(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.Ce(i, s, t.width, t.height, e);
749
+ return this.xe(o, t.x, t.y), o.Qs = [r, n], this.ve.Es(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 Tt = { ye: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0.5, 1, 0.5, 1]), Rs: 3, zs: WebGL2RenderingContext.TRIANGLES, _s: 16, ds: { fs: { size: 2, offset: 0 }, ps: { size: 2, offset: 8 } } };
753
+ class Rt extends S {
754
754
  constructor(t, e) {
755
- super(t, e, y.TRIANGLE, Tt);
755
+ super(t, e, E.TRIANGLE, Tt);
756
756
  }
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);
757
+ Es(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.Ce(i, r, n, o, e), l = i + 0.5 * n, f = r + o * (1 / 3);
759
+ return this.xe(c, l, f), this.ve.Es(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 $(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 bt = { ye: 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), Rs: 96, zs: WebGL2RenderingContext.TRIANGLES, _s: 16, ds: { fs: { size: 2, offset: 0 }, ps: { size: 2, offset: 8 } } };
774
+ class Ct extends S {
775
775
  constructor(t, e) {
776
- super(t, e, y.BEZIER_CURVE, Ut);
776
+ super(t, e, E.BEZIER_CURVE, bt);
777
777
  }
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);
778
+ Es(t, e) {
779
+ const i = e.I || 1, s = $(0.5, t.x1, t.cp1x, t.cp2x, t.x2), r = $(0.5, t.y1, t.cp1y, t.cp2y, t.y2), n = this.Ce(0, 0, 1, i, e);
780
+ return this.xe(n, s, r), n.se = [t.x1, t.y1], n.Js = [t.cp1x, t.cp1y], n.te = [t.cp2x, t.cp2y], n.ee = [t.x2, t.y2], this.ve.Es(n);
781
781
  }
782
782
  }
783
- class Bt {
783
+ class Ut {
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, "gt");
786
+ h(this, "Me", null);
787
+ h(this, "Fe");
788
+ h(this, "ze", null);
789
+ h(this, "Re", {});
790
+ h(this, "Te", null);
791
+ h(this, "Pe", /* @__PURE__ */ new Map());
792
+ h(this, "Se");
793
+ h(this, "Ee");
794
+ h(this, "$e");
795
+ h(this, "G", []);
796
+ this.gt = t, this.Fe = new lt(t), this.$e = new it(), this.Se = new ft(t, this), this.Ee = new dt(), this.Te = t.createBuffer(), W(this.gt, [0, 0, this.gt.canvas.width, this.gt.canvas.height]);
797
+ }
798
+ De(t) {
799
+ let e = this.Pe.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 gt(this.gt);
802
+ return e = (0, { [E.RECTANGLE]: () => new At(this.gt, i), [E.LINE]: () => new vt(this.gt, i), [E.ELLIPSE]: () => new Et(this.gt, i), [E.ARC]: () => new wt(this.gt, i), [E.TRIANGLE]: () => new Rt(this.gt, i), [E.BEZIER_CURVE]: () => new Ct(this.gt, i) }[t])(), this.Pe.set(t, e), e;
803
803
  }
804
- Ds(t) {
805
- this.Ms !== t && (this.Ms = t, t.Xt());
804
+ ke(t) {
805
+ this.Me !== t && (this.Me = t, t.Nt());
806
806
  }
807
- ae(t, e) {
808
- return this.Fs.ae(t, e);
807
+ cs(t, e) {
808
+ return this.Fe.cs(t, e);
809
809
  }
810
- ie() {
811
- return this.Fs.ie();
810
+ es() {
811
+ return this.Fe.es();
812
812
  }
813
- Tt() {
814
- return this.Fs.Tt();
813
+ Pt() {
814
+ return this.Fe.Pt();
815
815
  }
816
- re() {
817
- return this.Fs.re();
816
+ rs() {
817
+ return this.Fe.rs();
818
818
  }
819
- ne() {
820
- return this.Fs.ne();
819
+ ns() {
820
+ return this.Fe.ns();
821
821
  }
822
- Ls(t) {
823
- this.Rs = t, t && (this.zs = {});
822
+ Be(t) {
823
+ this.ze = t, t && (this.Re = {});
824
824
  }
825
825
  Kt(t, e) {
826
- this.zs[t] = e;
826
+ this.Re[t] = e;
827
827
  }
828
- Os(t) {
829
- Object.assign(this.zs, t);
828
+ Le(t) {
829
+ Object.assign(this.Re, t);
830
830
  }
831
- oe(t) {
832
- return this.Fs.oe(t);
831
+ hs(t) {
832
+ return this.Fe.hs(t);
833
833
  }
834
- ks(t, e, i, s, r) {
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);
834
+ Oe(t, e, i, s, r) {
835
+ const n = this.es(), 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.Ee.Is(e, i, s, r, n, o, this.$e);
837
837
  }
838
- Hs(t, e, i, s, r) {
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);
838
+ Ge(t, e, i, s, r) {
839
+ const n = this.ns(), o = t.He(), 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.Ee.Is(e, i, s, r, n, c, this.$e);
841
841
  }
842
- Ns(t, e, i, s) {
842
+ Ie(t, e, i, s) {
843
843
  var d;
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;
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);
844
+ const r = this.gt, n = r.canvas.width, o = r.canvas.height, c = t / n * 2 - 1, l = (t + i) / n * 2 - 1, f = 1 - e / o * 2, u = 1 - (e + s) / o * 2, m = new Float32Array([c, u, l, u, c, f, l, u, l, f, c, f]);
845
+ r.bindBuffer(r.ARRAY_BUFFER, this.Te), r.bufferData(r.ARRAY_BUFFER, m, r.DYNAMIC_DRAW);
846
+ const p = ((d = this.Me) == null ? void 0 : d.Zt) || r.getParameter(r.CURRENT_PROGRAM), g = p ? r.getAttribLocation(p, "a_position") : -1;
847
+ g !== -1 && (r.enableVertexAttribArray(g), r.vertexAttribPointer(g, 2, r.FLOAT, !1, 8, 0)), r.drawArrays(r.TRIANGLES, 0, 6), g !== -1 && r.disableVertexAttribArray(g);
848
848
  }
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);
849
+ Ne(t, e, i, s) {
850
+ this.ze ? (this.Ee.Is(t, e, i, s, this.ze, { ...this.Re }, this.$e), this.ze = null, this.Re = {}) : this.Ee.Hs(t, e, i, s, this.$e);
851
851
  }
852
- Ws(t, e, i, s) {
853
- this.Es.Le(t, e, i, s, this.Bs.lineWeight, this.Bs);
852
+ Xe(t, e, i, s) {
853
+ this.Ee.Ns(t, e, i, s, this.$e.lineWeight, this.$e);
854
854
  }
855
- Vs(t, e, i, s) {
856
- this.Es.Oe(t, e, i, s, this.Bs);
855
+ We(t, e, i, s) {
856
+ this.Ee.Xs(t, e, i, s, this.$e);
857
857
  }
858
- Ks(t, e, i, s, r, n) {
859
- this.Es.He(t, e, i, s, r, n, this.Bs);
858
+ Ke(t, e, i, s, r, n) {
859
+ this.Ee.Ks(t, e, i, s, r, n, this.$e);
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
+ Ye(t, e, i, s, r, n, o, c) {
862
+ const l = this.$e.lineWeight;
863
+ this.Ee.Ys(t, e, i, s, r, n, o, c, l, this.$e);
864
864
  }
865
- Ys(t, e, i = 1, s = {}) {
866
- return new q(this.vt, t, e, i, s, this, !0);
865
+ je(t, e, i = 1, s = {}) {
866
+ return new K(this.gt, t, e, i, s, this, !0);
867
867
  }
868
- qs(t, e, i, s, r, n) {
869
- this.Es.ke(t, e, i, s, r, n, this.Bs);
868
+ Ve(t, e, i, s, r, n) {
869
+ this.Ee.Ws(t, e, i, s, r, n, this.$e);
870
870
  }
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);
871
+ qe(t, e = t, i = t, s = 255) {
872
+ this.$e.ft(t, e, i, s), this.js(t / 255, e / 255, i / 255, s / 255);
873
873
  }
874
- Ne(t = 0, e = 0, i = 0, s = 0) {
875
- this.vt.clearColor(t, e, i, s), this.vt.clear(this.vt.COLOR_BUFFER_BIT);
874
+ js(t = 0, e = 0, i = 0, s = 0) {
875
+ this.gt.clearColor(t, e, i, s), this.gt.clear(this.gt.COLOR_BUFFER_BIT);
876
876
  }
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]);
877
+ Ze() {
878
+ this.gt.viewport(0, 0, this.gt.canvas.width, this.gt.canvas.height), W(this.gt, [0, 0, this.gt.canvas.width, this.gt.canvas.height]);
879
879
  }
880
880
  get context() {
881
- return this.vt;
881
+ return this.gt;
882
882
  }
883
883
  get state() {
884
- return this.Bs;
884
+ return this.$e;
885
885
  }
886
886
  Et(t) {
887
- this.k.push(this.Bs), this.Bs = t;
887
+ this.G.push(this.$e), this.$e = t;
888
888
  }
889
- Bt() {
890
- const t = this.k.pop();
891
- t && (this.Bs = t);
889
+ $t() {
890
+ const t = this.G.pop();
891
+ t && (this.$e = 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.gt) ?? this.gt.getParameter(this.gt.VIEWPORT), s = { shader: e, gl: this.gt, viewport: i };
895
+ this.ke(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.Ee) n.type === E.CUSTOM ? r.add(E.RECTANGLE) : r.add(n.type);
898
+ for (const n of r) n !== E.CUSTOM && this.De(n);
899
+ this.Se.ws(s, this.Ee, this.Pe), this.Ee.js();
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
+ Dt() {
902
+ this.gt.deleteBuffer(this.Te), this.Ee.js();
903
+ for (const t of this.Pe.values()) t.Dt();
904
+ this.Fe.Dt(), this.Se.Dt();
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 k(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 Bt {
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 z(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
- let u = n.get(c);
977
- u || (u = [], n.set(c, u)), u[Pt(l, c)] = o;
976
+ let f = n.get(c);
977
+ f || (f = [], n.set(c, f)), f[Ft(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,308 +990,308 @@ function j(h, t) {
990
990
  }
991
991
  throw Error("Invalid Huffman code");
992
992
  }
993
- function Pt(h, t) {
993
+ function Ft(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 Lt(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;
1004
1004
  32 & e && (i += 4);
1005
1005
  const s = [];
1006
1006
  return function(r, n) {
1007
- const o = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258], c = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], l = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], u = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
1008
- let f = 0;
1009
- for (; !f; ) {
1010
- f = r.readBits(1);
1011
- const g = r.readBits(2);
1012
- if (g === 0) {
1007
+ const o = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258], c = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], l = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], f = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
1008
+ let u = 0;
1009
+ for (; !u; ) {
1010
+ u = r.readBits(1);
1011
+ const m = r.readBits(2);
1012
+ if (m === 0) {
1013
1013
  r.alignToByte();
1014
- const v = r.readBits(16);
1015
- if ((65535 & (65535 ^ v)) !== r.readBits(16)) throw Error("DEFLATE uncompressed LEN/NLEN mismatch");
1016
- for (let m = 0; m < v; m++) n.push(r.readBits(8));
1014
+ const p = r.readBits(16);
1015
+ if ((65535 & (65535 ^ p)) !== r.readBits(16)) throw Error("DEFLATE uncompressed LEN/NLEN mismatch");
1016
+ for (let g = 0; g < p; g++) n.push(r.readBits(8));
1017
1017
  } else {
1018
- if (g !== 1 && g !== 2) throw Error("Unsupported DEFLATE type");
1018
+ if (m !== 1 && m !== 2) throw Error("Unsupported DEFLATE type");
1019
1019
  {
1020
- let v, m;
1021
- if (g === 1) {
1020
+ let p, g;
1021
+ if (m === 1) {
1022
1022
  const d = Array(288).fill(0);
1023
- for (let A = 0; A <= 143; A++) d[A] = 8;
1024
- for (let A = 144; A <= 255; A++) d[A] = 9;
1025
- for (let A = 256; A <= 279; A++) d[A] = 7;
1026
- for (let A = 280; A <= 287; A++) d[A] = 8;
1027
- v = N(d), m = N(Array(32).fill(5));
1023
+ for (let v = 0; v <= 143; v++) d[v] = 8;
1024
+ for (let v = 144; v <= 255; v++) d[v] = 9;
1025
+ for (let v = 256; v <= 279; v++) d[v] = 7;
1026
+ for (let v = 280; v <= 287; v++) d[v] = 8;
1027
+ p = z(d), g = z(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) {
1039
- const O = r.readBits(3) + 3;
1040
- for (let S = 0; S < O; S++) b.push(0);
1029
+ const d = r.readBits(5) + 257, v = r.readBits(5) + 1, A = 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 B = 0; B < A; B++) y[x[B]] = r.readBits(3);
1031
+ const U = z(y), T = [];
1032
+ for (; T.length < d + v; ) {
1033
+ const B = V(r, U);
1034
+ if (B <= 15) T.push(B);
1035
+ else if (B === 16) {
1036
+ const I = r.readBits(2) + 3, M = T[T.length - 1] || 0;
1037
+ for (let J = 0; J < I; J++) T.push(M);
1038
+ } else if (B === 17) {
1039
+ const I = r.readBits(3) + 3;
1040
+ for (let M = 0; M < I; M++) T.push(0);
1041
1041
  } else {
1042
- if (F !== 18) throw Error("Invalid code length symbol");
1042
+ if (B !== 18) throw Error("Invalid code length symbol");
1043
1043
  {
1044
- const O = r.readBits(7) + 11;
1045
- for (let S = 0; S < O; S++) b.push(0);
1044
+ const I = r.readBits(7) + 11;
1045
+ for (let M = 0; M < I; M++) 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 R = T.slice(0, d), F = T.slice(d, d + v);
1050
+ p = z(R), g = z(F);
1051
1051
  }
1052
1052
  for (; ; ) {
1053
- const d = j(r, v);
1053
+ const d = V(r, p);
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
- const A = d - 257;
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;
1058
+ const v = d - 257;
1059
+ let A = o[v];
1060
+ const x = c[v];
1061
+ x && (A += r.readBits(x));
1062
+ const y = V(r, g);
1063
+ if (y >= 30) throw Error("Invalid distance symbol");
1064
+ let U = l[y];
1065
+ const T = f[y];
1066
+ T && (U += r.readBits(T));
1067
+ const R = n.length - U;
1068
1068
  if (R < 0) throw Error("Invalid distance");
1069
- for (let B = 0; B < p; B++) n.push(n[R + B] || 0);
1069
+ for (let F = 0; F < A; F++) n.push(n[R + F] || 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 Bt(a.subarray(i)), s), new Uint8Array(s);
1077
1077
  }
1078
- function Dt(h) {
1079
- const t = w, e = new Uint8Array(h);
1078
+ function Pt(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
- 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;
1086
- }
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;
1093
- } else p.data = p.data.subarray(0, p.origLength);
1083
+ for (let A = 0; A < s; A++) {
1084
+ const x = t.readASCII(e, o, 4), y = t.readUint(e, o + 4), U = t.readUint(e, o + 8), T = t.readUint(e, o + 12), R = t.readUint(e, o + 16);
1085
+ n.push({ tag: x, offset: y, compLength: U, origLength: T, checksum: R }), o += 20;
1086
+ }
1087
+ for (const A of n) {
1088
+ const x = new Uint8Array(e.buffer, A.offset, A.compLength);
1089
+ if (A.compLength === A.origLength) A.data = new Uint8Array(x);
1090
+ else if (A.data = Lt(x), A.data.length !== A.origLength) if (A.data.length < A.origLength) {
1091
+ const y = new Uint8Array(A.origLength);
1092
+ y.set(A.data), A.data = y;
1093
+ } else A.data = A.data.subarray(0, A.origLength);
1094
1094
  }
1095
1095
  const c = s;
1096
- let l = 1, u = 0;
1097
- for (; l << 1 <= c; ) l <<= 1, u++;
1098
- const f = 16 * l, g = 16 * c - f;
1099
- let v = 12 + 16 * c;
1100
- const m = {};
1101
- for (const p of n) m[p.tag] = v, v = X(v + p.data.length);
1102
- const d = new Uint8Array(Math.max(r || 0, v));
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
- let A = 12;
1105
- for (const p of n) {
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));
1112
- t.writeUint(d, A, C), A += 4;
1096
+ let l = 1, f = 0;
1097
+ for (; l << 1 <= c; ) l <<= 1, f++;
1098
+ const u = 16 * l, m = 16 * c - u;
1099
+ let p = 12 + 16 * c;
1100
+ const g = {};
1101
+ for (const A of n) g[A.tag] = p, p = Y(p + A.data.length);
1102
+ const d = new Uint8Array(Math.max(r || 0, p));
1103
+ t.writeUint(d, 0, i), t.writeUshort(d, 4, c), t.writeUshort(d, 6, u), t.writeUshort(d, 8, f), t.writeUshort(d, 10, m);
1104
+ let v = 12;
1105
+ for (const A of n) {
1106
+ t.writeASCII(d, v, A.tag), v += 4;
1107
+ let x = A.data;
1108
+ if (A.tag === "head" && x.length >= 12) {
1109
+ const y = new Uint8Array(x);
1110
+ t.writeUint(y, 8, 0);
1111
+ const U = k(y, 0, Y(y.length));
1112
+ t.writeUint(d, v, U), v += 4;
1113
1113
  } else {
1114
- const x = V(E, 0, X(E.length));
1115
- t.writeUint(d, A, x), A += 4;
1114
+ const y = k(x, 0, Y(x.length));
1115
+ t.writeUint(d, v, y), v += 4;
1116
1116
  }
1117
- t.writeUint(d, A, m[p.tag]), A += 4, t.writeUint(d, A, p.data.length), A += 4;
1117
+ t.writeUint(d, v, g[A.tag]), v += 4, t.writeUint(d, v, A.data.length), v += 4;
1118
1118
  }
1119
- for (const p of n) {
1120
- const E = m[p.tag];
1121
- d.set(p.data, E);
1119
+ for (const A of n) {
1120
+ const x = g[A.tag];
1121
+ d.set(A.data, x);
1122
1122
  }
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;
1129
- }(d, p);
1130
- t.writeUint(d, p + 8, E);
1123
+ if (n.find((A) => A.tag === "head")) {
1124
+ const A = g.head, x = function(y, U) {
1125
+ const T = w, R = U + 8, F = [y[R], y[R + 1], y[R + 2], y[R + 3]];
1126
+ T.writeUint(y, R, 0);
1127
+ const B = 2981146554 - (k(y, 0, Y(y.length)) >>> 0) >>> 0;
1128
+ return y[R] = F[0], y[R + 1] = F[1], y[R + 2] = F[2], y[R + 3] = F[3], B >>> 0;
1129
+ }(d, A);
1130
+ t.writeUint(d, A + 8, x);
1131
1131
  }
1132
1132
  return d.buffer;
1133
1133
  }
1134
- const Mt = { parseTab(h, t, e) {
1134
+ const Mt = { 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), f = r(a, t += 2);
1142
1142
  t += 2;
1143
- const f = s.readUint(h, t);
1143
+ const u = s.readUint(a, t);
1144
1144
  t += 4;
1145
- const g = `p${l}e${u}`;
1146
- let v = o.indexOf(f);
1147
- if (v === -1) {
1148
- let m;
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);
1145
+ const m = `p${l}e${f}`;
1146
+ let p = o.indexOf(u);
1147
+ if (p === -1) {
1148
+ let g;
1149
+ p = i.tables.length, o.push(u);
1150
+ const d = r(a, u);
1151
+ g = d === 4 ? this.parse4(a, u) : d === 12 ? this.parse12(a, u) : { format: d }, i.tables.push(g);
1152
1152
  }
1153
- i.ids[g] = v;
1153
+ i.ids[m] = p;
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
+ } }, _t = { 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
+ } }, Dt = { 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
+ } }, Ot = { parseTab(a, t, e, i) {
1194
1194
  const s = w, r = [], n = [], o = i.maxp.numGlyphs, c = i.hhea.numberOfHMetrics;
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++;
1197
- for (; f < o; ) r.push(l), n.push(u), f++;
1195
+ let l = 0, f = 0, u = 0;
1196
+ for (; u < c; ) l = s.readUshort(a, t + (u << 2)), f = s.readShort(a, t + (u << 2) + 2), r.push(l), n.push(f), u++;
1197
+ for (; u < o; ) r.push(l), n.push(f), u++;
1198
1198
  return { aWidth: r, lsBearing: n };
1199
- } }, it = { cmap: Mt, head: It, hhea: _t, maxp: { parseTab(h, t, e) {
1199
+ } }, tt = { cmap: Mt, head: _t, hhea: Dt, 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: Ot, 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
+ }, Qe(a, t) {
1212
+ const e = w, i = a.Je, 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 = P.findTable(i, "glyf", a.ti);
1215
1215
  if (!r) return null;
1216
1216
  let n = r[0] + s[t];
1217
1217
  const o = {};
1218
1218
  if (o.noc = e.readShort(i, n), n += 2, o.xMin = e.readShort(i, n), n += 2, o.yMin = e.readShort(i, n), n += 2, o.xMax = e.readShort(i, n), n += 2, o.yMax = e.readShort(i, n), n += 2, o.xMin >= o.xMax || o.yMin >= o.yMax) return null;
1219
1219
  if (o.noc > 0) {
1220
1220
  o.endPts = [];
1221
- for (let g = 0; g < o.noc; g++) o.endPts.push(e.readUshort(i, n)), n += 2;
1221
+ for (let m = 0; m < o.noc; m++) o.endPts.push(e.readUshort(i, n)), n += 2;
1222
1222
  const c = e.readUshort(i, n);
1223
1223
  if (n += 2, i.length - n < c) return null;
1224
1224
  n += c;
1225
1225
  const l = o.endPts[o.noc - 1] + 1;
1226
1226
  o.flags = [];
1227
- for (let g = 0; g < l; g++) {
1228
- const v = i[n];
1229
- if (n++, o.flags.push(v), 8 & v) {
1230
- const m = i[n];
1227
+ for (let m = 0; m < l; m++) {
1228
+ const p = i[n];
1229
+ if (n++, o.flags.push(p), 8 & p) {
1230
+ const g = i[n];
1231
1231
  n++;
1232
- for (let d = 0; d < m; d++) o.flags.push(v), g++;
1232
+ for (let d = 0; d < g; d++) o.flags.push(p), m++;
1233
1233
  }
1234
1234
  }
1235
1235
  o.xs = [];
1236
- for (let g = 0; g < l; g++) {
1237
- const v = o.flags[g], m = !!(16 & v);
1238
- 2 & v ? (o.xs.push(m ? i[n] : -i[n]), n++) : m ? o.xs.push(0) : (o.xs.push(e.readShort(i, n)), n += 2);
1236
+ for (let m = 0; m < l; m++) {
1237
+ const p = o.flags[m], g = !!(16 & p);
1238
+ 2 & p ? (o.xs.push(g ? i[n] : -i[n]), n++) : g ? o.xs.push(0) : (o.xs.push(e.readShort(i, n)), n += 2);
1239
1239
  }
1240
1240
  o.ys = [];
1241
- for (let g = 0; g < l; g++) {
1242
- const v = o.flags[g], m = !!(32 & v);
1243
- 4 & v ? (o.ys.push(m ? i[n] : -i[n]), n++) : m ? o.ys.push(0) : (o.ys.push(e.readShort(i, n)), n += 2);
1241
+ for (let m = 0; m < l; m++) {
1242
+ const p = o.flags[m], g = !!(32 & p);
1243
+ 4 & p ? (o.ys.push(g ? i[n] : -i[n]), n++) : g ? o.ys.push(0) : (o.ys.push(e.readShort(i, n)), n += 2);
1244
1244
  }
1245
- let u = 0, f = 0;
1246
- for (let g = 0; g < l; g++) u += o.xs[g], f += o.ys[g], o.xs[g] = u, o.ys[g] = f;
1245
+ let f = 0, u = 0;
1246
+ for (let m = 0; m < l; m++) f += o.xs[m], u += o.ys[m], o.xs[m] = f, o.ys[m] = u;
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
+ } } }, P = { parse(a) {
1250
+ const t = new Uint8Array(a), e = w.readASCII(t, 0, 4);
1251
+ if (e === "wOFF") a = Pt(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
- const o = it, c = { ti: i, si: s, ei: r };
1254
+ const o = tt, c = { Je: i, si: s, ti: r };
1255
1255
  for (const l in o) {
1256
- const u = l, f = L.findTable(i, u, r);
1257
- if (f) {
1258
- const [g, v] = f;
1259
- let m = n[g];
1260
- m == null && (m = o[u].parseTab(i, g, v, c), n[g] = m), c[u] = m;
1256
+ const f = l, u = P.findTable(i, f, r);
1257
+ if (u) {
1258
+ const [m, p] = u;
1259
+ let g = n[m];
1260
+ g == null && (g = o[f].parseTab(i, m, p, c), n[m] = g), c[f] = g;
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
- }, T: it, B: w };
1277
- class Nt {
1278
- ii(t) {
1276
+ }, T: tt, B: w };
1277
+ class St {
1278
+ ei(t) {
1279
1279
  var i;
1280
1280
  const e = [];
1281
1281
  return (i = t.cmap) != null && i.tables ? (t.cmap.tables.forEach((s) => {
1282
1282
  if (s.format === 4) {
1283
- const r = this.ri(s);
1283
+ const r = this.ii(s);
1284
1284
  e.push(...r);
1285
1285
  } else if (s.format === 12) {
1286
- const r = this.ni(s);
1286
+ const r = this.ri(s);
1287
1287
  e.push(...r);
1288
1288
  }
1289
1289
  }), [...new Set(e)]) : [];
1290
1290
  }
1291
- oi(t) {
1292
- return t.filter((e) => this.ai(e));
1291
+ ni(t) {
1292
+ return t.filter((e) => this.oi(e));
1293
1293
  }
1294
- ri(t) {
1294
+ ii(t) {
1295
1295
  const e = [];
1296
1296
  if (!(t.startCount && t.endCount && t.idRangeOffset && t.idDelta)) return e;
1297
1297
  for (let i = 0; i < t.startCount.length; i++) {
@@ -1307,7 +1307,7 @@ class Nt {
1307
1307
  }
1308
1308
  return e;
1309
1309
  }
1310
- ni(t) {
1310
+ ri(t) {
1311
1311
  const e = [];
1312
1312
  if (!t.groups) return e;
1313
1313
  for (let i = 0; i < t.groups.length; i += 3) {
@@ -1332,44 +1332,44 @@ class Nt {
1332
1332
  }
1333
1333
  return 0;
1334
1334
  }
1335
- ai(t) {
1335
+ oi(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, "ai", /* @__PURE__ */ new Map());
1343
+ h(this, "ci", /* @__PURE__ */ new Map());
1344
1344
  }
1345
- ui(t, e) {
1346
- const i = `${this.fi(t)}_${e}`;
1347
- if (this.ci.has(i)) return this.ci.get(i);
1345
+ li(t, e) {
1346
+ const i = `${this.ui(t)}_${e}`;
1347
+ if (this.ai.has(i)) return this.ai.get(i);
1348
1348
  const s = t.cmap;
1349
- if (!s || !s.tables) return this.ci.set(i, 0), 0;
1349
+ if (!s || !s.tables) return this.ai.set(i, 0), 0;
1350
1350
  let r = 0;
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
- return this.ci.set(i, r), r;
1351
+ for (const n of s.tables) if (n.format === 4 ? r = this.fi(e, n) : n.format === 12 && (r = this.di(e, n)), r > 0) break;
1352
+ return this.ai.set(i, r), r;
1353
1353
  }
1354
- mi(t, e) {
1354
+ _i(t, e) {
1355
1355
  const i = e.codePointAt(0);
1356
- return i === void 0 ? 0 : this.ui(t, i);
1356
+ return i === void 0 ? 0 : this.li(t, i);
1357
1357
  }
1358
- gi(t, e) {
1358
+ pi(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
+ mi(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() {
1367
- this.ci.clear(), this.li.clear();
1366
+ gi() {
1367
+ this.ai.clear(), this.ci.clear();
1368
1368
  }
1369
- fi(t) {
1370
- return `${t.ei}_${t.ti.length}`;
1369
+ ui(t) {
1370
+ return `${t.ti}_${t.Je.length}`;
1371
1371
  }
1372
- di(t, e) {
1372
+ fi(t, e) {
1373
1373
  const i = e.endCount.length;
1374
1374
  let s = -1;
1375
1375
  for (let r = 0; r < i; r++) if (t <= e.endCount[r]) {
@@ -1387,7 +1387,7 @@ class Z {
1387
1387
  }
1388
1388
  return 0;
1389
1389
  }
1390
- pi(t, e) {
1390
+ di(t, e) {
1391
1391
  const i = e.groups.length / 3;
1392
1392
  for (let s = 0; s < i; s++) {
1393
1393
  const r = e.groups[3 * s], n = e.groups[3 * s + 1], o = e.groups[3 * s + 2];
@@ -1396,38 +1396,38 @@ class Z {
1396
1396
  return 0;
1397
1397
  }
1398
1398
  }
1399
- class Gt {
1399
+ class It {
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, "Ai");
1402
+ h(this, "yi");
1403
+ h(this, "xt");
1404
+ h(this, "Ci");
1405
+ this.xt = t, this.Ci = new Z(), this.Ai = document.createElement("canvas"), this.yi = this.Ai.getContext("2d", { willReadFrequently: !0, alpha: !0 });
1406
1406
  }
1407
1407
  createTextureAtlas(t, e, i, s) {
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
- this.bi(c, l), this.xi(t, e, n, i, u);
1410
- const f = this.xt.Ys(c, l, 1, { filter: "nearest" });
1411
- return f.zt(this.Ai), { framebuffer: f, columns: n, rows: o };
1408
+ const r = t.length, n = Math.ceil(Math.sqrt(r)), o = Math.ceil(r / n), c = e.width * n, l = e.height * o, f = typeof s == "object" ? s : null;
1409
+ this.wi(c, l), this.bi(t, e, n, i, f);
1410
+ const u = this.xt.je(c, l, 1, { filter: "nearest" });
1411
+ return u.Tt(this.Ai), { framebuffer: u, columns: n, rows: o };
1412
1412
  }
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";
1413
+ wi(t, e) {
1414
+ this.Ai.width = t, this.Ai.height = e, this.Ai.style.width = t + "px", this.Ai.style.height = e + "px", this.yi.imageSmoothingEnabled = !1, this.Ai.style.imageRendering = "pixelated", this.yi.clearRect(0, 0, t, e), this.yi.textBaseline = "top", this.yi.textAlign = "left", this.yi.fillStyle = "white";
1415
1415
  }
1416
- xi(t, e, i, s, r) {
1416
+ bi(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);
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);
1419
+ const c = o % i, l = Math.floor(o / i), f = t[o].character, u = this.xi(r, f);
1420
+ if (!u) continue;
1421
+ const m = f.codePointAt(0) || 0, p = this.Ci.li(r, m), g = this.Mi(r, p) * n, d = c * e.width, v = l * e.height, A = d + 0.5 * e.width, x = v + 0.5 * e.height, y = Math.round(A - 0.5 * e.width), U = Math.round(x - 0.5 * s), T = y + 0.5 * (e.width - g), R = U + r.hhea.ascender * n;
1422
+ this.Fi(u, T, R, n);
1423
1423
  }
1424
1424
  }
1425
- $i(t, e) {
1426
- const i = e.codePointAt(0) || 0, s = this.Ci.ui(t, i);
1425
+ xi(t, e) {
1426
+ const i = e.codePointAt(0) || 0, s = this.Ci.li(t, i);
1427
1427
  if (s === 0) return null;
1428
1428
  if (t.glyf && t.glyf[s] !== null) return t.glyf[s];
1429
- if (L && L.T && L.T.glyf) {
1430
- const r = L.T.glyf.Js(t, s);
1429
+ if (P && P.T && P.T.glyf) {
1430
+ const r = P.T.glyf.Qe(t, s);
1431
1431
  return t.glyf && r && (t.glyf[s] = r), r;
1432
1432
  }
1433
1433
  return null;
@@ -1440,423 +1440,423 @@ 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.yi.beginPath();
1444
1444
  let l = 0;
1445
- for (let u = 0; u < o.length; u++) {
1446
- const f = o[u];
1447
- if (!(f < l)) {
1448
- if (f >= l) {
1449
- const g = e + r[l] * s, v = i - n[l] * s;
1450
- this.wi.moveTo(g, v);
1451
- let m = l + 1;
1452
- for (; m <= f; )
1453
- if (1 & c[m]) {
1454
- const d = e + r[m] * s, A = i - n[m] * s;
1455
- this.wi.lineTo(d, A), m++;
1445
+ for (let f = 0; f < o.length; f++) {
1446
+ const u = o[f];
1447
+ if (!(u < l)) {
1448
+ if (u >= l) {
1449
+ const m = e + r[l] * s, p = i - n[l] * s;
1450
+ this.yi.moveTo(m, p);
1451
+ let g = l + 1;
1452
+ for (; g <= u; )
1453
+ if (1 & c[g]) {
1454
+ const d = e + r[g] * s, v = i - n[g] * s;
1455
+ this.yi.lineTo(d, v), g++;
1456
1456
  } else {
1457
- const d = e + r[m] * s, A = i - n[m] * s;
1458
- let p = m + 1 > f ? l : m + 1;
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;
1457
+ const d = e + r[g] * s, v = i - n[g] * s;
1458
+ let A = g + 1 > u ? l : g + 1;
1459
+ if (1 & c[A]) {
1460
+ const x = e + r[A] * s, y = i - n[A] * s;
1461
+ this.yi.quadraticCurveTo(d, v, x, y), g = A + 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[A] * s)) / 2, y = (v + (i - n[A] * s)) / 2;
1464
+ this.yi.quadraticCurveTo(d, v, x, y), g = A;
1465
1465
  }
1466
1466
  }
1467
- this.wi.closePath();
1467
+ this.yi.closePath();
1468
1468
  }
1469
- l = f + 1;
1469
+ l = u + 1;
1470
1470
  }
1471
1471
  }
1472
- this.wi.fill();
1472
+ this.yi.fill();
1473
1473
  }
1474
1474
  }
1475
1475
  class zt {
1476
1476
  constructor() {
1477
- a(this, "Ri");
1478
- this.Ri = new Z();
1477
+ h(this, "zi");
1478
+ this.zi = 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.zi.mi(i, e), n = r.lineHeight;
1483
1483
  for (const o of t) {
1484
- const c = this.Ri.mi(i, o);
1484
+ const c = this.zi._i(i, o);
1485
1485
  if (c === 0) continue;
1486
- const l = this.Ri.gi(i, c) * r.scale;
1486
+ const l = this.zi.pi(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
+ gi() {
1492
+ this.zi.gi();
1493
1493
  }
1494
1494
  }
1495
- class Wt {
1495
+ class Nt {
1496
1496
  constructor() {
1497
- a(this, "Ci");
1497
+ h(this, "Ci");
1498
1498
  this.Ci = 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.Ti(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.Ci.li(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
+ Ti(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.m(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.m(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 Gt {
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();
1538
- }
1539
- async Vi(t) {
1525
+ h(this, "Ei");
1526
+ h(this, "$i", []);
1527
+ h(this, "Di");
1528
+ h(this, "ki", 16);
1529
+ h(this, "Bi", 0);
1530
+ h(this, "Li", 0);
1531
+ h(this, "Oi", { width: 0, height: 0 });
1532
+ h(this, "Gi");
1533
+ h(this, "Hi");
1534
+ h(this, "Ii");
1535
+ h(this, "Ni");
1536
+ h(this, "Xi");
1537
+ this.ki = e, this.Hi = new St(), this.Ii = new It(t), this.Ni = new zt(), this.Xi = new Nt();
1538
+ }
1539
+ async Wi(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 C(`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,d09GRgABAAAAABbwAAoAAAAAfywAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABjbWFwAAAA9AAAAbsAAAkgIO8lSWdseWYAAAKwAAAOfgAAaLS4ctN0aGVhZAAAETAAAAAsAAAAOCi8/PVoaGVhAAARXAAAABkAAAAkCwEFAmhtdHgAABF4AAAAhQAABAQEAIOAbG9jYQAAEgAAAAKUAAAECAAy54BtYXhwAAAUlAAAABgAAAAgASIAgm5hbWUAABSsAAAB5wAAA6RWz85KT1MvMgAAFpQAAABFAAAAYM+QEyRwb3N0AAAW3AAAABQAAAAgAGkANHja7dRPSFRRFMfx38wdXblw4cJC7M0bz60gWlULGUFctWgR0UIQQkmDyn27kpAQaaEO2jhWJuafiQFtcDJtSqGhiFZtot5x3jzEVQQhlRJcOb0khiRc1+J94R64uw8cOADCAJT/avwZAiIpRCK3/P999KAS9biOSUxhBhlksYjnWMFrvME7vMca1vEF37ANAwkNqYRKqkk1rdLqscqpVVVQryzbils3rJnocHTWPmgfso/ap+0OuysWjlXHogQKUxVVUw3VUh010DE6QXHqph7qpT66TQmaoAxlaZnyVKC39FHHdbNu0e36or6kr4r4TgsTu75HmEcOy76vUPaVsIFNbOHHX74F3/fyD9+A7ztg1//2de76rH18Z8u+AXqwx/dBN5Z9XfqKiKzLqqzIC8nLkixKThZkXuZkVh7KuNyTuzImKRmVO1KxU7ETMtvmu/lqPptPxjOuKXo3vcveYQ+l2lKlO+Im3H632z3vnis+KaaLKc7zM87yHGc4zdM8zkke5H6+xp3cwRe4jVv5DLdwE5/ik3ycj3Cdk3eWnKfOmDPqJJ3hX9sOCvpPC65QcIWCgv5pPwGY9ak7AHja3V07ryQ5FT62axjQaDWsVmiCFQJpA4QINiAgICDYgICAgICAgICAgICAgIAA//AuF9Xlsn2etqv67iIY6apv3+6yj31e33nYA95FiD4uAAHeA7jyLzoA2Paf/Lp/Dun5W8x/Be/AxyCfO79fnj+e25/ZZzlewcM+3wIhwpfwE/Sc9e8YDyLU1ycF5XUD+to+L98O/An8VKQj0lnOtYdM776OJ71fTVC8//N1rLKDGsXl863OjSl5/iyIUu0HjJ+d+uO3rX3rXd33d/DjfR0/h6/n1iK5kWf36Hf2AxpVa6zU7ZLTnt3Q3wN7+tK6MVcBjUP/3vj56diHuT3YxVbKSvl9FdJHeFE4jfmJn2DSSOS9fuJ27SH7umuoL3oLWGOLxh3f2b8bnn/5Ql8n5SEYFD33q/0lKXxwjQfDOZtGgyEz+W8X5txl2zVb9MXO2S8HfD3ncbHousP6WPV2i/R7C+c06HK5ye/lfdl3Bj5Q2qitaLYhgLQWZY+fr/65A9Ly1r10jI783HOffJWZJ6ee8uuB0nmMXeSqWvRz5Dx/tiWf7H0OF+1DuK7vhy4ffP8An/doofqbQNXTqmlNT1c0v4/Eqpy29eBMLHty0PKZoCMW6VqRlDXNwvbD4RW2MYfyjNdXV3LaJuEdKgXcHvX2nHiz27RxHmC9w/qn0AbS+mJbSeX8pO1zlbbogPK7zJxAs3iFtrV8W/LHsHVZvxJ6Rlt7gum1nvjpnHNO4gFJqaoBWOKFVwKqAangorb2j5KKvG5N31O1ownZdhcZH7FuT9nznoxRv4ylrbfvzA9D88GO8uGDtgN0/1O09ntFlv3YhbIf/ml3/dPGqvi6rCMw6jNd53PM07BnK2eCJXmnzxrruI8ObOuxmZ/dxbd5nS77U7I/xaMdLm5/DXzuLLcwXlOLIVQ0an722pou6raGnpp/QYiwR0V5nwDL0Gk/f2TSUalIGOkSvfNAcVNCesV9a2q675FtsVAk4c5GPEfZT27XVqT9PmpxXtVn0577KO3MGrkXs+xKkHZk6EMUS440uO01t+Ark8yGYYjtsleqoPQksLuF0kOd/7TtbZ3XvNalNRNLqK+90fEDTAfy1FWWOBcT9fkTmrExe+viDNccYF+JqHeIbyBtlYxhStbmSc8DSX9/rICoXkkGSMfEJR7QsYAjNlhgn6iNS7T0AtakNnvaJ+W1TeQdeIxHaHtXaMtU+GP3CL5v+2RqHfc5JC6k9DJ6HhFaHHfu9Lc1Z5HlB5JWNOc8NupiUSlpa/7NIx0W0Ra10YcOVWnDfqhodmgI1CM5nrJS1DYKlMmyeAmoZaLrQnmNSRxAV7qZ0u0sr2Q8WbzUrRivE200nZ+x371Yj+idQH+bsOAFD16woZXuheBJI85UYyA+Ht17bJsTKLHHG+tuQpJX/AGX4eu2lq+vh8gQPgaLUpk1h7fcb1SJ4LEnGb+rdUHRHw96riVV36L5EgdqHNByqCTy82hnkrSSk3k5KTNWnJZ/buTlOvQngiceAkd4OHPz0K+tdOmGUYwJht2kcuBEntSRPOmZfyc40tFqD40IQeb2goGZvKIVzW4G5DMcQ4qOY3zVRzpmo1sMg+U1VemumtLofjFeCcxqJIUnM2vJuQeCHiOOwx4ss7pF6u+PtXxmZApbjCti22JtA+hVxUw7z6Xs2sSzMkeklSLPfwalYkjjt/0bHye4gKkXeaig5MpILVRiAd1vCrtP5Aj5uaN2PF1zxrE7koOgaY2PPL9FkccCKlprUZGr+zr0tw56iCvwGBTs+MFFxVbWeTaCQTj2WCBM1NnoWNxOBpBZU8f00hPsFDr+15wPevNsJG4IN+OGwKyWzKnW8S/GDUHZOd+44SsvbDvCuhYUTQSaQSFeWtoR4Xc833VimVzRvgm58QwZFQTthQ+awgQTeuVI7gLrF638Yixi+ot4RVZ5niDPFxBediyXNj++jUWDgkU3Zc96fDKwv4iiylyA4nalMkLX9C1hf24DNNkZyNDkflOPF4BqwdYbv1vLG9VX03W96PVKiCq+A01i5utY2d9YfSMP0qvQ7eFQUHSKvNfpCl21nqNafqf1UQksqfVe1PEPPNiJpY81iZoP119ZTUHojdpseMYqec5zr/2Jgo695rmycZWzSgOpXzMpbFrHu1Zmq/xA8pX3cgEQZU1/YzaexuQbXIoxF9THdaEzz9VaE5fgNVIPR/sIS8fQyipam9JXqHdOtPEIRllqzP7Ewh9063Z2IYH+GiLNUPFXJIcEM4RYc7bEkjwQL4/1fx+aHL8/62Of5vo3y+p92QX2fh18zrNFcPX9sfZAdBDZu8vxCM4clX31Qr9RrLPkDDDau8v8LZRar2N8lSOj1NGsLJeBZam1TIuwpzwepL3CJAvyANsPnj3BAzsD3a5X6ydEaZUSs50b7g2JrYcyG2lRL+xl+jD+Gfod33w82P0FTuYREa3c70CRS82XCtxIueJHXuIMB6tMt+x7lf7m5U4tyK9L3smuLrxqDxYPI30rYzk2h2NzgPXqAvPrQdqUxvdWF2zVwDrHCq0RoI0Hcrzcn9D8BMxYEMszZBzooqa/jsTxSeTthXTm9FC2n+pYEh8uVqyL9436quMD6pnK7njZM6msy4uYsunVquBSi4clVn8gblYc96TFyF04ll2oqCB300cDIbPxrZoqXZ1DHWvNh2irrNxstSaZYa2VB333tOr9mRcx7ETmXKmSFz6GkidstKjZFE8qIX26eG8KoS/b9uij9GFOiwFIVj5NyErT8rZGstdmD4lc4/xaNevd1uwOPCLX7Ems2TTc81MrUVmzyqdOr1v1PCPat9jmQfUYJEEbzNCSse4DevSYCIXal+bDCC3I2+EeTFKd7ltnFNN0sGLIfRcGfSWKD0BPANWTQIqcNtsaAON/1A/BeywPGhybs2ZEA1sH9FbgDMpTQx5L5k4fN/RR8lBHvif2ftB7oa8isVdrdWDxp/Hp6N8MsdUgqdS0M12EZrhC7TpJZZLZOZelRdeDUyffq3s6xPhztK4Xd9h6f4pIieNu4lI/jEN1XEMjbafK6lry/jkOYedyVMyp2vaHGlM8zBjCkdi28NdrNldgLa/a0orYtN6OwoMh7vPAsxb9eNTDrOdJBWuXsb6En8Evb5yTrJw1Y1XTHnmCFNtPkhHnuN+8QwHGi3JUJf4zeaTJsBpFdnik5V4fZq510ifEHMf7M55f2fteR1DJ73gzf4vyO42Or3Z5mZcWdlY6wb3sRvd0olKfGeaCWm5yGEtDwzLH6yPS95wmcVb2BBrYzig5tGb7Bvb5fkyfvW2nRhlxF3cyz8qGOF//eVLXq7P4oQTop9UASTKPr91h1zu5wu753DbqtXUO8pOT6wzdnQfWn2X3Csr5ktxP4FUmlBHHPThBO0mQ6wTFVxbM5mPCeXWP7ha4YDf8BdvAeaGd/XntlgHlW2eMFAR2CBPYAQzPrGeVy1ieYCOQdtpXGZyss4F2rkr5W8tJh06NTd/HGi+1vbiPN6JTeSfP5k0ihAhRQwgad9wQ1dhoKAntU87DfZy/K8SuEsPg82VQRU5xUGU+ZVrp8SMYtOHiwFC+Z1jLG2dqRuhAw01cZ2qeXBk/ROjaAS1TIuKHVp+Fi5YMrHqqahlY3YbJ0E/N2uUTq/0Cvt717Vfwa/gNfAO/hd/B7+EP8Ef4E/wZ/gJ/hb/B3+Ef8E/4F/z7nla+5T+Afp1wHdQRH/F/+/lF6VrSbuP4v/18VHMVmm7q6TX/Czha0mxJrf+YyNyOfRcYeKSap3+b8UufB8GnJSdec6Iu+toF6nHkaeZxvJ5h4PVgj3ILMz5teArdxnr8/PPoCXqiuvR91zoh2pvS8b0SqUD1FLPubHPaK9Q5lU+GzwI3PgfCOsB9NORgqm5OqfVxLMd1L9+A/s2s+0/0a93MTd3NNRHapruGQLnhZTSzpBMuYFNaz7N5RffPo/MnV2zac3wfRX6Vng0As1cTmE5M38U0eS+H0rvZxXtg6460jlQTZ3Snxw+pO9TKz+mOB5vffTs6umGj+UjMb3/QKfndvlP47UsVAO9Drzo11h+T/rF09Po0st98jHsKh31Ruj2UnbYWLuEd/pM9wOwpZ+KqccfWNZsc4F6c3jtf2ou7Ca6akqXRPThzsadua+/4hq7vgmn6uqux6bXw6AjnLMJbXMM5Ixwi8mR2rc3AOfg2nrs4zZlnDFaChbCtk/bwilwMfBxc0iMYy0MX40x2o/ft9D2Znn9Kl+3MO90HUb747jnzjpyCKVeTuij6DllsctyiUzXN0dgE9We1yK54WBffFqtew9TXpbYfy7dILWH/SXxmqeg4zlvRsZfIbuFnic0SHfRtfj4vsaVq532jl/QpYBykzpe/jec7n1uOmhuETi2xzM5vfy01xQC0vkp6PiKpDd07x6qcUc719K0A1YZjpvLivftqNpzxV/tDtXPTWFrbaowzXj+czsG+nmMt/bQspzj7fnvxeeuG4O/s/Xe412VW3+5VuPT+EV97/r++14Gc3ZvQRHrXMz91IrWHZ4FnK7WOVGjJPfAO3R0BczdLKuevQd5LPVsXd/X8PK6Ll2jK0/NM7P4V1PuI51FvsEMV+KhV4T2+22IQF85a0FlLWXs/IHTOX1B5CGCeEDh6V2ZiTK+eee/dnNjOa2xXz2zndd7sq+XYEZ/Gx/exoK5PoOceWNdnef9W9KCT9EYXqkrPxuhC9GA7faMXpHef1smLTDe1qaDY1N4ozLI4fqsHlwpf+3Cu9F1E/Z4AajG3V8430/6bCdq8QQs9b4OqJyQa1+6BACWaTPI8zrROa//7QGJ19U4tHeTTtePNqu3PnVhXJFSjzZFz4eo3Ndqidi/O6J5Z7X+VsS3cYki51T35Iv+merFeuGe69cbJM3Jq1Fn4kUA5rze4o9CRs22iy5jMsYLMS8g5/wOjbDW/AAB42mNgZGBgAOIzT9tXxvPbfGVgYGEAgZokCXVkmgUizsHABFLNwAAACJYG1HjaY2BkYGBhAAEIyc7AwMiAAhgZAQHPABQAAAB42r1TwRaAIAgD88P59PRA0hxUlw578mBDQOwi0i+oDUzb7nC/xyKH8SuwHH/jSx83jnE745c1RO44G9E1WTE14AQtYvKO6PN6BXRW5EONgCazSS4VXiere+sp7F7cQeSp7Pe2YkaxN7fVFhg/8z/1hfnfaBXnZ8k7wNzp/y13+wRWwErCAAAAeNpl0ylUVVEUBuCtoiKgoiIzAjIIMj9mZBZYMsmMjwcuBhEIBoPBYDAYDAaDwWA0GAwGgsFgMBgMBoPBYDAYDAaDweBnlrX+9e6955x/2oeI//664HbEgTL4HnHwZ8Sh1/AlIm0W3kUc3oN9+BFxJBva4E3E0SvwLCIdR/qniGO98Coiw3vG04hMv5n/fj9GZBUD3iz8xx9FnMiBJxEn0+E+/IrIppNt/VQzvITfEadH4HnEmUG4BV8jchaBn7NZgCMXdy7uXGfzeMjjKZ/PfBwF9hTYU/AhotC5QtpFtIt4K7oLnyOK6RXTKP4TUcJDCe5zNXAHcJTiKOWxlEZZPeAo00U5b+XyltM9vw24KvBWyFzpTOWLiCr5qu6BPdV0qx+Cni+sAc4a3mvw1nqu/RZxsRJkrEsDWeo2wAzq8dY/iGgwpwbfGvTdaA6NOmnUb5PnpiTY00S3SXfN/DU/BustdFrMq8VagqcE/YReEjK3+t4qayuPbTTbdNH2PqJdL+06a5e33VoHjg7vHdY7cXTK2ekedPHWha+b5279ddPo1ndPPuDrkbkH3yX5e/XXy3OvzH34+sy132+//P14B/AO6GuA3qBOB3U6hH/It2Haw2Y2rI9hHV6WdcSsR6eAl1GZx3Qwpr9xcxv3PqGDCbyTvE3KM+muT+lwypkpe6bNaZqfaX6v8j7D8wyNGbwzbyNmdTMrzxxfc9bndDFn5vM8zds37x4smMeCHhf5WTKHJb0uuc/L/C7bs4zrGr2kO5m0ntRZkv8VfazIkvI9RSelg5ReUrKvOrvqHq7p4Lr5retx3fcN/5Mb+Dfs25RpE/8mji0etqzfwLHteZufmzrZobfj/K5ednna0/fe/l+Pca7seNpjYGRgYGRkaGBQYAABJgY0AAAP+ACmeNp1ksFO20AQhv8NgRJaUApSy61LDxVc4uAjNxoJReoNKdCrYy8hZb1rrTcIuPMKfaY+QM899RH6AP3tDJEKqlcefzvzz/xrywD21ScoLK9N3ktW5E3hDl6hL7zG7HvhLrMfhNfxGonwBjUnwj2uz8JbzH4R3sZbPArvIMV34T28wQ+6qG6Puz5+Civyb+EOO/4Ir6GvOsJdaLUrvI53KhXeoGYs3MOu+iq8hai+CW/jo/olvIOiA+E97HeKw/xIp8M0nYQ6O/MunpvZwmbhafv01JK/MKGee6ePB8N/JCFzN6dO+8o4bee5cbnRM+NMyKyuFqHytdHR3MXSF0ZfNQOn93rVORoNm4l64ua3NMjsdYxVfZIkeTBZZC73ZeldPfBhllSLKR0KX2ZzlzyY4BO2JmNjrdeXPtjiAIfIcQTNbz/knWKCgBoZzuDhEHEOgxkWsMyFF9Xne/1Mf8Fdo5i3dY1jDOjz/ymB0eEGp63ao2J/Q5YT8pabqOnQsGn1lvuKjoHRc05Tj4x3jCUzRZu5Wp1winvGl54jruHqjI3C0fVW3qDxuWZ/pEvNPzjhylkxrETR5fQoW09HzYDPwJMm7emm8g5Fq8nIjpWHdronLV0TjJmxXJ4nuGwnWPYcAH8BoeumrAB42mNgYmFgnMDAysDCxMDEAAIQGoiNGc6A+CwMENDAwNDNwFDwGMpliHT00WNwYFBQy4aogJCMgSCSGcJTYGAAAEBYBpIAAAB42mNgZoCANAZjIMnIgAYADecAng==")).arrayBuffer();
1547
- await this.Ki(e), this.Ei = L.parse(e)[0], await this.ji();
1547
+ await this.Ki(e), this.Ei = P.parse(e)[0], await this.Yi();
1548
1548
  }
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;
1549
+ ji(t) {
1550
+ if (t === void 0) return this.ki;
1551
+ this.ki = t, this.Oi = this.Ni.Ri(this.$i.map((i) => i.character), this.ki, this.Ei);
1552
+ const e = this.Ii.createTextureAtlas(this.$i, this.Oi, this.ki, this.Ei);
1553
+ this.Di = e.framebuffer, this.Bi = e.columns, this.Li = e.rows;
1554
1554
  }
1555
- async qi(t) {
1555
+ async Vi(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 C(`Failed to load font file: ${e.status} ${e.statusText}`);
1559
1559
  const i = await e.arrayBuffer();
1560
1560
  await this.Ki(i);
1561
- const s = L.parse(i);
1561
+ const s = P.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.Yi();
1564
1564
  } catch (e) {
1565
- throw new U("Failed to load font: " + (e instanceof Error ? e.message : "Unknown error"), e);
1565
+ throw new C("Failed to load font: " + (e instanceof Error ? e.message : "Unknown error"), e);
1566
1566
  }
1567
1567
  }
1568
1568
  async Ki(t) {
1569
1569
  const e = Date.now();
1570
- this.Hi = new FontFace("CustomFont_" + e, t), await this.Hi.load(), document.fonts.add(this.Hi);
1570
+ this.Gi = new FontFace("CustomFont_" + e, t), await this.Gi.load(), document.fonts.add(this.Gi);
1571
1571
  }
1572
- async ji() {
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;
1572
+ async Yi() {
1573
+ const t = this.Hi.ei(this.Ei), e = this.Hi.ni(t);
1574
+ this.$i = this.Xi.createCharacterObjects(e, this.Ei), this.Oi = this.Ni.Ri(e, this.ki, this.Ei);
1575
+ const i = this.Ii.createTextureAtlas(this.$i, this.Oi, this.ki, this.Ei);
1576
+ this.Di = i.framebuffer, this.Bi = 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.Xi.Pi(t, this.$i);
1580
1580
  }
1581
1581
  Si(t) {
1582
- return this.Wi.Si(t, this.Bi);
1582
+ return this.Xi.Si(t, this.$i);
1583
1583
  }
1584
- Gt() {
1585
- this.Gi.Gt(), document.fonts.delete(this.Hi);
1584
+ Dt() {
1585
+ this.Di.Dt(), document.fonts.delete(this.Gi);
1586
1586
  }
1587
1587
  get fontFramebuffer() {
1588
- return this.Gi;
1588
+ return this.Di;
1589
1589
  }
1590
1590
  get characters() {
1591
- return this.Bi;
1591
+ return this.$i;
1592
1592
  }
1593
1593
  get textureColumns() {
1594
- return this.Li;
1594
+ return this.Bi;
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.ki;
1604
1604
  }
1605
1605
  get font() {
1606
1606
  return this.Ei;
1607
1607
  }
1608
1608
  }
1609
- class Ht {
1609
+ class Xt {
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");
1620
- this.er = t, this.sr = e, this.ir = i, this.rr();
1621
- }
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);
1624
- }
1625
- nr(t, e) {
1626
- this.sr = t, this.ir = e, this.rr();
1611
+ h(this, "qi");
1612
+ h(this, "Zi");
1613
+ h(this, "dt");
1614
+ h(this, "_t");
1615
+ h(this, "Qi");
1616
+ h(this, "Ji");
1617
+ h(this, "tr");
1618
+ h(this, "sr");
1619
+ h(this, "er");
1620
+ this.tr = t, this.sr = e, this.er = i, this.ir();
1621
+ }
1622
+ ir() {
1623
+ this.qi = Math.floor(this.tr.width / this.sr), this.Zi = Math.floor(this.tr.height / this.er), this.dt = this.qi * this.sr, this._t = this.Zi * this.er, this.Qi = Math.floor((this.tr.width - this.dt) / 2), this.Ji = Math.floor((this.tr.height - this._t) / 2);
1624
+ }
1625
+ rr(t, e) {
1626
+ this.sr = t, this.er = e, this.ir();
1627
1627
  }
1628
1628
  get cellWidth() {
1629
1629
  return this.sr;
1630
1630
  }
1631
1631
  get cellHeight() {
1632
- return this.ir;
1632
+ return this.er;
1633
1633
  }
1634
1634
  get cols() {
1635
- return this.Zi;
1635
+ return this.qi;
1636
1636
  }
1637
1637
  get rows() {
1638
- return this.Qi;
1638
+ return this.Zi;
1639
1639
  }
1640
1640
  get width() {
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
- return this.Ji;
1647
+ return this.Qi;
1648
1648
  }
1649
1649
  get offsetY() {
1650
- return this.tr;
1650
+ return this.Ji;
1651
1651
  }
1652
1652
  }
1653
- class kt {
1653
+ class Yt {
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";
1661
- }
1662
- pr(t, e) {
1655
+ h(this, "tr");
1656
+ h(this, "nr", null);
1657
+ h(this, "hr", !1);
1658
+ h(this, "ar");
1659
+ h(this, "cr");
1660
+ this.hr = t.overlay ?? !1, this.hr && t.canvas ? (this.nr = t.canvas, this.tr = this.lr(), this.cr = !0, this.ur()) : t.canvas ? (this.tr = t.canvas, this.cr = !1) : (this.tr = this.dr(t.width, t.height), this.cr = !0), this.tr.style.imageRendering = "pixelated";
1661
+ }
1662
+ dr(t, e) {
1663
1663
  const i = document.createElement("canvas");
1664
1664
  return i.className = "textmodeCanvas", i.style.imageRendering = "pixelated", i.width = t || 800, i.height = e || 600, document.body.appendChild(i), i;
1665
1665
  }
1666
- ur() {
1666
+ lr() {
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.nr.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.nr instanceof HTMLVideoElement) {
1672
+ const o = this.nr;
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.nr);
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
- dr() {
1680
+ ur() {
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.nr.parentNode) == null || t.insertBefore(this.tr, this.nr.nextSibling), window.ResizeObserver && (this.ar = new ResizeObserver(() => {
1683
+ this.pr();
1684
+ }), this.ar.observe(this.nr)), window.addEventListener("resize", () => {
1685
+ this.pr();
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.nr) return;
1690
+ const t = this.nr.getBoundingClientRect();
1691
+ let e = this.nr.offsetParent;
1692
1692
  if (e && e !== document.body) {
1693
1693
  const i = e.getBoundingClientRect();
1694
- this.er.style.top = t.top - i.top + "px", this.er.style.left = t.left - i.left + "px";
1695
- } else this.er.style.top = t.top + window.scrollY + "px", this.er.style.left = t.left + window.scrollX + "px";
1694
+ this.tr.style.top = t.top - i.top + "px", this.tr.style.left = t.left - i.left + "px";
1695
+ } else this.tr.style.top = t.top + window.scrollY + "px", this.tr.style.left = t.left + window.scrollX + "px";
1696
1696
  }
1697
- gr(t, e) {
1697
+ pr(t, e) {
1698
1698
  if (this.hr) {
1699
- const i = this.ar.getBoundingClientRect();
1699
+ const i = this.nr.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.nr instanceof HTMLVideoElement) {
1702
+ const n = this.nr;
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();
1706
- } else this.er.width = t ?? this.er.width, this.er.height = e ?? this.er.height;
1705
+ this.tr.width = s, this.tr.height = r, this._r();
1706
+ } else this.tr.width = t ?? this.tr.width, this.tr.height = e ?? this.tr.height;
1707
1707
  }
1708
- _r() {
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.");
1708
+ vr() {
1709
+ const t = this.tr.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
1710
+ if (!t) throw new C("`textmode.js` requires WebGL2 support.");
1711
1711
  return t;
1712
1712
  }
1713
- Gt() {
1714
- this.cr && this.cr.disconnect();
1715
- const t = this.er.getContext("webgl") || this.er.getContext("webgl2");
1713
+ Dt() {
1714
+ this.ar && this.ar.disconnect();
1715
+ const t = this.tr.getContext("webgl") || this.tr.getContext("webgl2");
1716
1716
  if (t) {
1717
1717
  const e = t.getExtension("WEBGL_lose_context");
1718
1718
  e && e.loseContext();
1719
1719
  }
1720
- this.lr && this.er.parentNode && this.er.parentNode.removeChild(this.er);
1720
+ this.cr && this.tr.parentNode && this.tr.parentNode.removeChild(this.tr);
1721
1721
  }
1722
1722
  get canvas() {
1723
- return this.er;
1723
+ return this.tr;
1724
1724
  }
1725
1725
  get targetCanvas() {
1726
- return this.ar;
1726
+ return this.nr;
1727
1727
  }
1728
1728
  get width() {
1729
- return this.er.width;
1729
+ return this.tr.width;
1730
1730
  }
1731
1731
  get height() {
1732
- return this.er.height;
1732
+ return this.tr.height;
1733
1733
  }
1734
1734
  }
1735
- class z {
1735
+ class G {
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() {
1755
- this.vt.deleteTexture(this.vr);
1756
- }
1757
- $r(t) {
1737
+ h(this, "mr");
1738
+ h(this, "dt");
1739
+ h(this, "_t");
1740
+ h(this, "gt");
1741
+ h(this, "k", 0);
1742
+ h(this, "K", 0);
1743
+ h(this, "Y", 0);
1744
+ h(this, "L", [0, 0]);
1745
+ h(this, "gr", "sampled");
1746
+ h(this, "Ar", "fixed");
1747
+ h(this, "V", [1, 1, 1, 1]);
1748
+ h(this, "q", [0, 0, 0, 1]);
1749
+ h(this, "yr", [0, 0, 0, 1]);
1750
+ h(this, "Cr", [[0.1, 0, 0]]);
1751
+ h(this, "wr");
1752
+ this.gt = t, this.mr = e, this.dt = i, this._t = s;
1753
+ }
1754
+ Dt() {
1755
+ this.gt.deleteTexture(this.mr);
1756
+ }
1757
+ br(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.br(t), this;
1762
1762
  }
1763
1763
  flipX(t = !0) {
1764
- return this.V = this.$r(t), this;
1764
+ return this.K = this.br(t), this;
1765
1765
  }
1766
1766
  flipY(t = !0) {
1767
- return this.K = this.$r(t), this;
1767
+ return this.Y = this.br(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
1771
  return this.L = [i, s], this;
1772
1772
  }
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 };
1773
+ He() {
1774
+ return { texture: this.mr, invert: this.k, flipX: this.K, flipY: this.Y, charRotation: this.L, charColorFixed: this.gr === "fixed", charColor: this.V, cellColorFixed: this.Ar === "fixed", cellColor: this.q, backgroundColor: this.yr, charCount: this.Cr.length, charList: this.Cr };
1775
1775
  }
1776
1776
  charColorMode(t) {
1777
- return this.yr = t, this;
1777
+ return this.gr = t, this;
1778
1778
  }
1779
1779
  cellColorMode(t) {
1780
1780
  return this.Ar = 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.V = [(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.yr = [(t ?? 0) / 255, (e ?? t ?? 0) / 255, (i ?? t ?? 0) / 255, (s ?? 255) / 255], this;
1790
1790
  }
1791
1791
  characters(t) {
1792
- const e = this.br(t).filter((i) => Array.isArray(i)).slice(0, 64);
1792
+ const e = this.wr(t).filter((i) => Array.isArray(i)).slice(0, 64);
1793
1793
  return this.Cr = e, this;
1794
1794
  }
1795
1795
  static Mr(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
- const n = e.naturalWidth ?? e.width ?? e.videoWidth ?? 0, o = e.naturalHeight ?? e.height ?? e.videoHeight ?? 0, c = new z(s, r, n, o);
1799
- return c.br = i, c;
1798
+ const n = e.naturalWidth ?? e.width ?? e.videoWidth ?? 0, o = e.naturalHeight ?? e.height ?? e.videoHeight ?? 0, c = new G(s, r, n, o);
1799
+ return c.wr = i, c;
1800
1800
  }
1801
1801
  get texture() {
1802
- return this.vr;
1802
+ return this.mr;
1803
1803
  }
1804
1804
  get width() {
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 Wt {
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, "zr");
1815
+ h(this, "Rr", null);
1816
+ h(this, "Tr", 0);
1817
+ h(this, "Pr", !0);
1818
+ h(this, "Sr", 0);
1819
+ h(this, "Er", 0);
1820
+ h(this, "$r", []);
1821
+ h(this, "Dr", 10);
1822
+ h(this, "kr", 0);
1823
+ this.Fr = t, this.zr = 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.Tr = 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.Tr;
1831
+ s >= this.zr && (t(), this.Tr = i - s % this.zr), 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.zr = 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.$r.push(e), this.$r.length > this.Dr && this.$r.shift();
1853
+ const i = this.$r.reduce((s, r) => s + r, 0) / this.$r.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,209 +1865,441 @@ class Yt {
1865
1865
  return this.Sr;
1866
1866
  }
1867
1867
  get frameCount() {
1868
- return this.Dr;
1868
+ return this.kr;
1869
1869
  }
1870
1870
  set frameCount(t) {
1871
- this.Dr = t;
1871
+ this.kr = t;
1872
1872
  }
1873
1873
  incrementFrame() {
1874
- this.Dr++;
1874
+ this.kr++;
1875
1875
  }
1876
1876
  resetFrameCount() {
1877
- this.Dr = 0;
1877
+ this.kr = 0;
1878
1878
  }
1879
1879
  }
1880
- class Vt {
1881
- 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);
1910
- return (i == null ? void 0 : i.isPressed) || !1;
1880
+ class rt {
1881
+ constructor(t) {
1882
+ h(this, "tr");
1883
+ h(this, "Br");
1884
+ h(this, "Lr", { x: -1, y: -1 });
1885
+ h(this, "Or", { x: -1, y: -1 });
1886
+ h(this, "Gr", null);
1887
+ h(this, "Hr", 0);
1888
+ h(this, "Ir");
1889
+ h(this, "Nr");
1890
+ h(this, "Xr");
1891
+ h(this, "Wr");
1892
+ h(this, "Kr");
1893
+ h(this, "Yr");
1894
+ h(this, "jr", !1);
1895
+ h(this, "Vr");
1896
+ h(this, "qr");
1897
+ h(this, "Zr");
1898
+ h(this, "Qr");
1899
+ h(this, "Jr");
1900
+ this.tr = t;
1911
1901
  }
1912
- en() {
1913
- return this.Or;
1902
+ tn(t) {
1903
+ const e = performance.now() + Math.max(0, t);
1904
+ e > this.Hr && (this.Hr = e);
1914
1905
  }
1915
1906
  sn() {
1916
- return this.kr;
1907
+ return performance.now() < this.Hr;
1908
+ }
1909
+ en(t) {
1910
+ const e = this.tr.canvas;
1911
+ e.style.cursor = t == null || t === "" ? "" : t;
1912
+ }
1913
+ Wi(t) {
1914
+ this.Br = t, this.rn();
1915
+ }
1916
+ nn() {
1917
+ if (this.jr) return;
1918
+ const t = this.tr.canvas;
1919
+ this.Ir = (e) => {
1920
+ this.hn(e), this.an(e);
1921
+ }, this.Nr = () => {
1922
+ this.Or = { ...this.Lr }, this.Lr.x = -1, this.Lr.y = -1, this.Gr = null;
1923
+ }, this.Xr = (e) => {
1924
+ this.hn(e), this.cn(e);
1925
+ }, this.Wr = (e) => {
1926
+ this.hn(e), this.ln(e);
1927
+ }, this.Kr = (e) => {
1928
+ this.hn(e), this.un(e);
1929
+ }, this.Yr = (e) => {
1930
+ this.hn(e), this.fn(e);
1931
+ }, t.addEventListener("mousemove", this.Ir, { passive: !0 }), t.addEventListener("mouseleave", this.Nr, { passive: !0 }), t.addEventListener("mousedown", this.Xr, { passive: !0 }), t.addEventListener("mouseup", this.Wr, { passive: !0 }), t.addEventListener("click", this.Kr, { passive: !0 }), t.addEventListener("wheel", this.Yr, { passive: !1 }), this.jr = !0;
1932
+ }
1933
+ dn() {
1934
+ if (!this.jr) return;
1935
+ const t = this.tr.canvas;
1936
+ t.removeEventListener("mousemove", this.Ir), t.removeEventListener("mouseleave", this.Nr), t.removeEventListener("mousedown", this.Xr), t.removeEventListener("mouseup", this.Wr), t.removeEventListener("click", this.Kr), t.removeEventListener("wheel", this.Yr), this.jr = !1;
1917
1937
  }
1918
1938
  rn() {
1939
+ if (this.jr) try {
1940
+ if (this.Gr) {
1941
+ const t = new MouseEvent("mousemove", { clientX: this.Gr.x, clientY: this.Gr.y, bubbles: !1, cancelable: !1 });
1942
+ this.hn(t);
1943
+ } else this.Lr.x !== -1 && this.Lr.y !== -1 && (this.Lr.x >= this.Br.cols || this.Lr.y >= this.Br.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.Vr = t;
1950
+ }
1951
+ pn(t) {
1952
+ this.qr = t;
1953
+ }
1954
+ vn(t) {
1955
+ this.Zr = t;
1956
+ }
1957
+ mn(t) {
1958
+ this.Qr = t;
1959
+ }
1960
+ gn(t) {
1961
+ this.Jr = t;
1962
+ }
1963
+ An() {
1964
+ return { x: this.Lr.x, y: this.Lr.y };
1965
+ }
1966
+ an(t) {
1967
+ if (this.Qr && !this.sn()) {
1968
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, originalEvent: t };
1969
+ this.Qr(e);
1970
+ }
1971
+ }
1972
+ cn(t) {
1973
+ if (this.qr && !this.sn()) {
1974
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, button: t.button, originalEvent: t };
1975
+ this.qr(e);
1976
+ }
1977
+ }
1978
+ ln(t) {
1979
+ if (this.Zr && !this.sn()) {
1980
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, button: t.button, originalEvent: t };
1981
+ this.Zr(e);
1982
+ }
1983
+ }
1984
+ un(t) {
1985
+ if (this.Vr && !this.sn()) {
1986
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, button: t.button, originalEvent: t };
1987
+ this.Vr(e);
1988
+ }
1989
+ }
1990
+ fn(t) {
1991
+ if (this.Jr && !this.sn()) {
1992
+ const e = { position: { ...this.Lr }, previousPosition: { ...this.Or }, delta: { x: t.deltaX, y: t.deltaY }, originalEvent: t };
1993
+ this.Jr(e);
1994
+ }
1995
+ }
1996
+ hn(t) {
1997
+ const e = this.tr.canvas;
1998
+ this.Or = { ...this.Lr }, this.Gr = { 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.Br.offsetX, l = o - this.Br.offsetY, f = Math.floor(c / this.Br.cellWidth), u = Math.floor(l / this.Br.cellHeight);
2000
+ f >= 0 && f < this.Br.cols && u >= 0 && u < this.Br.rows ? (this.Lr.x = f, this.Lr.y = u) : (this.Lr.x = -1, this.Lr.y = -1);
2001
+ }
2002
+ }
2003
+ const Ht = Object.freeze(Object.defineProperty({ __proto__: null, MouseManager: rt }, Symbol.toStringTag, { value: "Module" }));
2004
+ class nt {
2005
+ constructor() {
2006
+ h(this, "yn", /* @__PURE__ */ new Map());
2007
+ h(this, "Cn", null);
2008
+ h(this, "wn", null);
2009
+ h(this, "bn");
2010
+ h(this, "xn");
2011
+ h(this, "jr", !1);
2012
+ h(this, "Mn");
2013
+ h(this, "Fn");
2014
+ h(this, "zn", { 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
+ nn() {
2017
+ this.jr || (this.bn = (t) => {
2018
+ this.Rn(t);
2019
+ }, this.xn = (t) => {
2020
+ this.Tn(t);
2021
+ }, window.addEventListener("keydown", this.bn, { passive: !1 }), window.addEventListener("keyup", this.xn, { passive: !1 }), this.jr = !0);
2022
+ }
2023
+ dn() {
2024
+ this.jr && (window.removeEventListener("keydown", this.bn), window.removeEventListener("keyup", this.xn), this.jr = !1, this.yn.clear(), this.Cn = null, this.wn = null);
2025
+ }
2026
+ pn(t) {
2027
+ this.Mn = t;
2028
+ }
2029
+ vn(t) {
2030
+ this.Fn = t;
2031
+ }
2032
+ Pn(t) {
2033
+ const e = this.Sn(t), i = this.yn.get(t) || this.yn.get(e);
2034
+ return (i == null ? void 0 : i.isPressed) || !1;
2035
+ }
2036
+ En() {
2037
+ return this.Cn;
2038
+ }
2039
+ $n() {
2040
+ return this.wn;
2041
+ }
2042
+ Dn() {
1919
2043
  const t = [];
1920
- for (const [e, i] of this.Lr) i.isPressed && t.push(e);
2044
+ for (const [e, i] of this.yn) 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
+ kn() {
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
+ Bn() {
2051
+ this.yn.clear(), this.Cn = null, this.wn = 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.yn.has(e) || this.yn.set(e, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
2056
+ const s = this.yn.get(e);
2057
+ if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = i, this.Cn = e, this.Mn)) {
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.Mn(r);
1936
2060
  }
1937
2061
  }
1938
- Yr(t) {
2062
+ Tn(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.yn.has(e) || this.yn.set(e, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
2065
+ const s = this.yn.get(e);
2066
+ if (s.isPressed = !1, s.lastReleaseTime = i, this.wn = 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.zn[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;
1971
- }
1972
- Vi(t) {
1973
- this.hn = t, this.bn();
1974
- }
1975
- Kr() {
1976
- if (this.Nr) return;
1977
- 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;
1994
- 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;
2005
- }
2006
- }
2007
- Pn(t) {
2008
- this.vn = t;
2075
+ const jt = Object.freeze(Object.defineProperty({ __proto__: null, KeyboardManager: nt }, Symbol.toStringTag, { value: "Module" }));
2076
+ class ot {
2077
+ constructor(t, e) {
2078
+ h(this, "tr");
2079
+ h(this, "Ln");
2080
+ h(this, "Br");
2081
+ h(this, "On", /* @__PURE__ */ new Map());
2082
+ h(this, "Gn", /* @__PURE__ */ new Map());
2083
+ h(this, "Hn", /* @__PURE__ */ new Map());
2084
+ h(this, "In", null);
2085
+ h(this, "Nn");
2086
+ h(this, "Xn");
2087
+ h(this, "Wn");
2088
+ h(this, "Kn");
2089
+ h(this, "Yn");
2090
+ h(this, "jn");
2091
+ h(this, "jr", !1);
2092
+ h(this, "Vn");
2093
+ h(this, "qn");
2094
+ h(this, "Zn");
2095
+ h(this, "Qn");
2096
+ h(this, "Jn");
2097
+ h(this, "so");
2098
+ h(this, "eo");
2099
+ h(this, "io");
2100
+ h(this, "ro");
2101
+ h(this, "no");
2102
+ h(this, "oo", 320);
2103
+ h(this, "ho", 350);
2104
+ h(this, "ao", 10);
2105
+ h(this, "co", 550);
2106
+ h(this, "lo", 14);
2107
+ h(this, "uo", 48);
2108
+ h(this, "fo", 650);
2109
+ h(this, "do", 0.02);
2110
+ h(this, "_o", 2);
2111
+ h(this, "po", 600);
2112
+ h(this, "vo", 0);
2113
+ h(this, "mo", null);
2114
+ this.tr = t, this.Ln = e;
2115
+ const i = this.tr.canvas;
2116
+ this.Nn = i.style.touchAction, this.Xn = i.style.userSelect, i.style.touchAction || (i.style.touchAction = "none"), i.style.userSelect || (i.style.userSelect = "none");
2117
+ }
2118
+ Wi(t) {
2119
+ this.Br = t, this.Ao();
2009
2120
  }
2010
- Zr(t) {
2011
- this.yn = t;
2121
+ nn() {
2122
+ if (this.jr) return;
2123
+ const t = this.tr.canvas;
2124
+ this.Wn = (e) => {
2125
+ this.yo(e);
2126
+ }, this.Kn = (e) => {
2127
+ this.Co(e);
2128
+ }, this.Yn = (e) => {
2129
+ this.wo(e);
2130
+ }, this.jn = (e) => {
2131
+ this.bo(e);
2132
+ }, t.addEventListener("touchstart", this.Wn, { passive: !1 }), t.addEventListener("touchmove", this.Kn, { passive: !1 }), t.addEventListener("touchend", this.Yn, { passive: !1 }), t.addEventListener("touchcancel", this.jn, { passive: !1 }), this.jr = !0;
2133
+ }
2134
+ dn() {
2135
+ if (!this.jr) return;
2136
+ const t = this.tr.canvas;
2137
+ t.removeEventListener("touchstart", this.Wn), t.removeEventListener("touchmove", this.Kn), t.removeEventListener("touchend", this.Yn), t.removeEventListener("touchcancel", this.jn), this.jr = !1, this.In = null, this.On.clear(), this.Gn.clear(), this.Hn.forEach((e) => {
2138
+ e.longPressTimer !== null && window.clearTimeout(e.longPressTimer);
2139
+ }), this.Hn.clear(), this.mo = null, this.vo = 0, t.style.touchAction = this.Nn, t.style.userSelect = this.Xn;
2140
+ }
2141
+ Ao() {
2142
+ if (!this.Br || this.On.size === 0) return;
2143
+ const t = /* @__PURE__ */ new Map();
2144
+ for (const e of this.On.values()) {
2145
+ const i = this.xo(e.clientX, e.clientY, e.id, e);
2146
+ t.set(e.id, i);
2147
+ }
2148
+ this.On = t;
2012
2149
  }
2013
- Qr(t) {
2014
- this.An = t;
2150
+ Mo() {
2151
+ return Array.from(this.On.values()).map((t) => ({ ...t }));
2015
2152
  }
2016
- Tn(t) {
2017
- this.wn = t;
2153
+ Fo(t) {
2154
+ this.Vn = t;
2018
2155
  }
2019
- Sn(t) {
2020
- this.Cn = t;
2156
+ mn(t) {
2157
+ this.qn = t;
2021
2158
  }
2022
- En() {
2023
- return { x: this.cn.x, y: this.cn.y };
2159
+ zo(t) {
2160
+ this.Zn = t;
2024
2161
  }
2025
- $n(t) {
2026
- if (this.wn) {
2027
- const e = { position: { ...this.cn }, previousPosition: { ...this.ln }, originalEvent: t };
2028
- this.wn(e);
2162
+ Ro(t) {
2163
+ this.Qn = t;
2164
+ }
2165
+ To(t) {
2166
+ this.Jn = t;
2167
+ }
2168
+ Po(t) {
2169
+ this.so = t;
2170
+ }
2171
+ So(t) {
2172
+ this.eo = t;
2173
+ }
2174
+ Eo(t) {
2175
+ this.io = t;
2176
+ }
2177
+ $o(t) {
2178
+ this.ro = t;
2179
+ }
2180
+ Do(t) {
2181
+ this.no = t;
2182
+ }
2183
+ yo(t) {
2184
+ var s;
2185
+ if (!this.Br) return;
2186
+ t.preventDefault(), (s = this.Ln) == null || s.tn(this.po);
2187
+ const e = performance.now(), i = this.ko(t.changedTouches);
2188
+ for (const r of i) {
2189
+ const n = this.On.get(r.id);
2190
+ n && this.Gn.set(r.id, this.Bo(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.eo && (o.longPressTimer = window.setTimeout(() => {
2193
+ const c = this.On.get(r.id);
2194
+ c && (o.longPressFired = !0, this.eo({ touch: this.Bo(c), duration: performance.now() - o.startTime, originalEvent: t }));
2195
+ }, this.co)), this.Hn.set(r.id, o), this.Vn && this.Vn(this.Lo(r, t, void 0, e));
2029
2196
  }
2030
- }
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);
2197
+ this.On.size === 2 && this.Oo();
2198
+ }
2199
+ Co(t) {
2200
+ var s;
2201
+ if (!this.Br) return;
2202
+ t.preventDefault(), (s = this.Ln) == null || s.tn(this.po);
2203
+ const e = performance.now(), i = this.ko(t.changedTouches);
2204
+ for (const r of i) {
2205
+ const n = this.On.get(r.id), o = n ? this.Bo(n) : void 0;
2206
+ o && this.Gn.set(r.id, o), this.On.set(r.id, r);
2207
+ const c = this.Hn.get(r.id);
2208
+ c && (c.lastPosition = r, c.lastTime = e, o) && this.Go(o, r, !0) > this.lo && c.longPressTimer !== null && (window.clearTimeout(c.longPressTimer), c.longPressTimer = null), this.qn && this.qn(this.Lo(r, t, o, e));
2035
2209
  }
2036
- }
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);
2210
+ this.On.size === 2 ? this.Ho(t) : this.In = null;
2211
+ }
2212
+ wo(t) {
2213
+ if (!this.Br) return;
2214
+ t.preventDefault();
2215
+ const e = performance.now(), i = this.ko(t.changedTouches);
2216
+ for (const s of i) {
2217
+ const r = this.On.get(s.id), n = r ? this.Bo(r) : void 0, o = this.Hn.get(s.id);
2218
+ o && o.longPressTimer !== null && (window.clearTimeout(o.longPressTimer), o.longPressTimer = null), this.Zn && this.Zn(this.Lo(s, t, n, e)), o && this.Io(o, t), this.Hn.delete(s.id), this.Gn.delete(s.id), this.On.delete(s.id);
2041
2219
  }
2220
+ this.On.size < 2 && (this.In = null);
2221
+ }
2222
+ bo(t) {
2223
+ if (!this.Br) return;
2224
+ t.preventDefault();
2225
+ const e = performance.now(), i = this.ko(t.changedTouches);
2226
+ for (const s of i) {
2227
+ const r = this.On.get(s.id), n = r ? this.Bo(r) : void 0, o = this.Hn.get(s.id);
2228
+ o && o.longPressTimer !== null && (window.clearTimeout(o.longPressTimer), o.longPressTimer = null), this.Qn && this.Qn(this.Lo(s, t, n, e)), this.Hn.delete(s.id), this.Gn.delete(s.id), this.On.delete(s.id);
2229
+ }
2230
+ this.On.size < 2 && (this.In = 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
+ ko(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.No(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
+ No(t) {
2241
+ return this.xo(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
+ xo(t, e, i, s) {
2244
+ const r = this.tr.canvas, n = r.getBoundingClientRect(), o = t - n.left, c = e - n.top, l = r.width / n.width, f = c * (r.height / n.height), u = o * l - this.Br.offsetX, m = f - this.Br.offsetY, p = Math.floor(u / this.Br.cellWidth), g = Math.floor(m / this.Br.cellHeight), d = p >= 0 && p < this.Br.cols && g >= 0 && g < this.Br.rows;
2245
+ return { id: i, x: d ? p : -1, y: d ? g : -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.Hn.get(t.id), n = Array.from(this.Gn.values()).map((l) => this.Bo(l)), o = Array.from(this.On.values()).map((l) => this.Bo(l)), c = this.ko(e.changedTouches);
2249
+ return { touch: this.Bo(t), previousTouch: i ? this.Bo(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.In = null);
2253
+ const t = Array.from(this.On.values()), [e, i] = t, s = this.Go(e, i, !1), r = this.Xo(e, i);
2254
+ this.In = { ids: [e.id, i.id], initialDistance: Math.max(s, 1e-4), initialAngle: r, lastScale: 1, lastRotation: 0 };
2255
+ }
2256
+ Ho(t) {
2257
+ if (this.In || this.Oo(), !this.In) return;
2258
+ const [e, i] = this.In.ids, s = this.On.get(e), r = this.On.get(i);
2259
+ if (!s || !r) return;
2260
+ const n = this.Go(s, r, !1) / this.In.initialDistance, o = n - this.In.lastScale;
2261
+ this.ro && Math.abs(o) > this.do && (this.ro({ touches: [this.Bo(s), this.Bo(r)], scale: n, deltaScale: o, center: this.Wo(s, r), originalEvent: t }), this.In.lastScale = n);
2262
+ let c = this.Xo(s, r) - this.In.initialAngle;
2263
+ c = (c + 180) % 360 - 180;
2264
+ const l = c - this.In.lastRotation;
2265
+ this.no && Math.abs(l) > this._o && (this.no({ touches: [this.Bo(s), this.Bo(r)], rotation: c, deltaRotation: l, center: this.Wo(s, r), originalEvent: t }), this.In.lastRotation = c);
2266
+ }
2267
+ Wo(t, e) {
2268
+ const i = (t.clientX + e.clientX) / 2, s = (t.clientY + e.clientY) / 2, r = this.xo(i, s, -1, { id: -1, x: -1, y: -1, clientX: i, clientY: s });
2269
+ return { x: r.x, y: r.y };
2270
+ }
2271
+ Io(t, e) {
2272
+ const i = performance.now(), s = i - t.startTime, r = this.Go(t.startPosition, t.lastPosition, !0);
2273
+ if (!t.longPressFired && s <= this.oo && r <= this.ao)
2274
+ this.Ko(t.lastPosition, i) && this.so ? this.so({ touch: this.Bo(t.lastPosition), taps: 2, originalEvent: e }) : this.Jn && this.Jn({ touch: this.Bo(t.lastPosition), taps: 1, originalEvent: e });
2275
+ else if (!t.longPressFired && s <= this.fo && r >= this.uo) {
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.io && this.io({ touch: this.Bo(t.lastPosition), direction: c, distance: o, velocity: l, originalEvent: e });
2053
2278
  }
2279
+ this.vo = i, this.mo = this.Bo(t.lastPosition);
2280
+ }
2281
+ Ko(t, e) {
2282
+ return !this.mo || e - this.vo > this.ho ? !1 : this.Go(t, this.mo, !0) <= this.ao;
2054
2283
  }
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);
2284
+ Bo(t) {
2285
+ return { ...t };
2286
+ }
2287
+ Go(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
+ Xo(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 kt = Object.freeze(Object.defineProperty({ __proto__: null, TouchManager: ot }, Symbol.toStringTag, { value: "Module" })), Vt = (a) => class extends a {
2063
2295
  rotate(t = 0, e = 0, i = 0) {
2064
- this.xt.state.et(t), this.xt.state.st(e), this.xt.state.it(i);
2296
+ this.xt.state.st(t), this.xt.state.et(e), this.xt.state.it(i);
2065
2297
  }
2066
2298
  rotateX(t) {
2067
- this.xt.state.et(t);
2299
+ this.xt.state.st(t);
2068
2300
  }
2069
2301
  rotateY(t) {
2070
- this.xt.state.st(t);
2302
+ this.xt.state.et(t);
2071
2303
  }
2072
2304
  rotateZ(t) {
2073
2305
  this.xt.state.it(t);
@@ -2079,28 +2311,28 @@ const Kt = (h) => class extends h {
2079
2311
  this.xt.state.Z();
2080
2312
  }
2081
2313
  rect(t, e, i = 1, s = 1) {
2082
- this.xt.Xs(t, e, i, s);
2314
+ this.xt.Ne(t, e, i, s);
2083
2315
  }
2084
2316
  point(t, e) {
2085
- this.xt.Xs(t, e, 1, 1);
2317
+ this.xt.Ne(t, e, 1, 1);
2086
2318
  }
2087
2319
  line(t, e, i, s) {
2088
- this.xt.Ws(t, e, i, s);
2320
+ this.xt.Xe(t, e, i, s);
2089
2321
  }
2090
2322
  lineWeight(t) {
2091
2323
  this.xt.state.tt(t);
2092
2324
  }
2093
2325
  background(t, e = t, i = t, s = 255) {
2094
- this.xt.Zs(t, e, i, s);
2326
+ this.xt.qe(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);
@@ -2115,643 +2347,330 @@ const Kt = (h) => class extends h {
2115
2347
  this.xt.state.lt(t);
2116
2348
  }
2117
2349
  clear() {
2118
- this.xt.Zs(0, 0, 0, 0);
2350
+ this.xt.qe(0, 0, 0, 0);
2119
2351
  }
2120
2352
  ellipse(t, e, i, s) {
2121
- this.xt.Vs(t, e, i / 2, s / 2);
2353
+ this.xt.We(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.Ke(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.Ye(t, e, i, s, r, n, o, c);
2128
2360
  }
2129
2361
  arc(t, e, i, s, r, n) {
2130
- this.xt.qs(t, e, i, s, r, n);
2362
+ this.xt.Ve(t, e, i, s, r, n);
2131
2363
  }
2132
2364
  shader(t) {
2133
- this.xt.Ls(t);
2365
+ this.xt.Be(t);
2134
2366
  }
2135
2367
  setUniform(t, e) {
2136
2368
  this.xt.Kt(t, e);
2137
2369
  }
2138
2370
  setUniforms(t) {
2139
- this.xt.Os(t);
2371
+ this.xt.Le(t);
2140
2372
  }
2141
2373
  createFilterShader(t) {
2142
- return this.xt.oe(t);
2374
+ return this.xt.hs(t);
2143
2375
  }
2144
2376
  createFramebuffer(t) {
2145
- return this.xt.Ys(t.width, t.height, 5, { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte" });
2377
+ return this.xt.je(t.width, t.height, 5, { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte" });
2146
2378
  }
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.Oe(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.Ge(n, e, i, s ?? Math.floor(this.Br.cols / 2), r ?? Math.floor(this.Br.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 G.Mr(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));
2163
- }
2164
- };
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 };
2169
- }
2170
- Gn(t, e) {
2171
- return t[e] + (t[e + 1] << 8);
2172
- }
2173
- Dn(t, e) {
2174
- return { r: t[e], g: t[e + 1], b: t[e + 2], a: t[e + 3] };
2175
- }
2176
- }
2177
- class J {
2178
- Ln(t, e) {
2179
- return new Blob([t], { type: e });
2180
- }
2181
- On(t, e, i) {
2182
- try {
2183
- const s = this.Ln(t, i), r = URL.createObjectURL(s), n = document.createElement("a");
2184
- 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
- } catch (s) {
2186
- console.error("Failed to download file:", s);
2187
- }
2188
- }
2189
- kn() {
2190
- return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
2191
- }
2192
- Hn() {
2193
- const t = /* @__PURE__ */ new Date();
2194
- return { date: t.toISOString().split("T")[0], time: t.toTimeString().split(" ")[0].replace(/:/g, "-") };
2195
- }
2196
- In(t) {
2197
- return t.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
2198
- }
2199
- Nn() {
2200
- return "textmode-export-" + this.kn();
2201
- }
2202
- }
2203
- class qt extends $ {
2204
- Xn(t, e, i) {
2205
- const s = t[i] === 255, r = t[i + 1] === 255, n = t[i + 2] === 255, o = e[i], c = e[i + 1];
2206
- return { isInverted: s, flipHorizontal: r, flipVertical: n, rotation: Math.round(360 * (o + c / 255) / 255 * 100) / 100 };
2207
- }
2208
- Wn(t, e, i) {
2209
- return { x: t, y: e, cellX: t * i.cellWidth, cellY: e * i.cellHeight };
2210
- }
2211
- Vn(t, e) {
2212
- const i = [];
2213
- let s = 0;
2214
- 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);
2218
- if (f.isInverted) {
2219
- const v = l;
2220
- l = u, u = v;
2221
- }
2222
- const g = this.Wn(n, r, e);
2223
- i.push({ charIndex: c, primaryColor: l, secondaryColor: u, transform: f, position: g }), s++;
2224
- }
2225
- return i;
2226
- }
2227
- }
2228
- class Zt {
2229
- Kn(t, e) {
2230
- const i = t.cmap;
2231
- for (const s of i.tables) if (s.format === 4) {
2232
- const r = s;
2233
- for (let n = 0; n < r.startCount.length; n++) if (e >= r.startCount[n] && e <= r.endCount[n]) {
2234
- if (r.idRangeOffset[n] === 0) return e + r.idDelta[n] & 65535;
2235
- {
2236
- const o = r.idRangeOffset[n] / 2 + (e - r.startCount[n]) - (r.startCount.length - n);
2237
- if (o >= 0 && o < r.glyphIdArray.length) {
2238
- const c = r.glyphIdArray[o];
2239
- if (c !== 0) return c + r.idDelta[n] & 65535;
2240
- }
2241
- }
2242
- }
2243
- } else if (s.format === 12) {
2244
- const r = s;
2245
- for (let n = 0; n < r.groups.length; n += 3) {
2246
- const o = r.groups[n], c = r.groups[n + 1], l = r.groups[n + 2];
2247
- if (e >= o && e <= c) return l + (e - o);
2248
- }
2249
- }
2250
- return 0;
2251
- }
2252
- jn(t, e, i, s, r) {
2253
- 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) };
2255
- }
2256
- Yn(t, e, i, s) {
2257
- if (!t || !t.xs) return "";
2258
- const { xs: r, ys: n, endPts: o, flags: c } = t;
2259
- if (!(r && n && o && c)) return "";
2260
- let l = "", u = 0;
2261
- for (let f = 0; f < o.length; f++) {
2262
- const g = o[f];
2263
- if (!(g < u)) {
2264
- if (g >= u) {
2265
- const v = e + r[u] * s, m = i - n[u] * s;
2266
- l += `M${v.toFixed(2)},${m.toFixed(2)}`;
2267
- let d = u + 1;
2268
- for (; d <= g; )
2269
- if (1 & c[d]) {
2270
- const A = e + r[d] * s, p = i - n[d] * s;
2271
- l += `L${A.toFixed(2)},${p.toFixed(2)}`, d++;
2272
- } else {
2273
- 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;
2278
- } 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;
2281
- }
2282
- }
2283
- l += "Z";
2284
- }
2285
- u = g + 1;
2286
- }
2287
- }
2288
- return l;
2289
- }
2290
- qn(t, e, i, s, r) {
2291
- const n = t.codePointAt(0) || 0, o = this.Kn(e, n);
2292
- 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);
2294
- }
2295
- Zn(t, e, i, s, r, n, o, c) {
2296
- 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;
2298
- }
2299
- }
2300
- class $t {
2301
- constructor() {
2302
- a(this, "Qn");
2303
- this.Qn = new Zt();
2304
- }
2305
- Jn(t) {
2306
- const { width: e, height: i } = t;
2307
- 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
- }
2309
- eo() {
2310
- return "</g></svg>";
2311
- }
2312
- so(t, e) {
2313
- if (!e.includeBackgroundRectangles) return "";
2314
- const [i, s, r, n] = e.backgroundColor;
2315
- return `<rect width="${t.width}" height="${t.height}" fill="rgba(${i},${s},${r},${n / 255})"/>`;
2316
- }
2317
- io(t, e) {
2318
- const { transform: i, position: s } = t;
2319
- if (!i.flipHorizontal && !i.flipVertical && !i.rotation) return "";
2320
- const r = s.cellX + e.cellWidth / 2, n = s.cellY + e.cellHeight / 2, o = [];
2321
- if (i.flipHorizontal || i.flipVertical) {
2322
- const c = i.flipHorizontal ? -1 : 1, l = i.flipVertical ? -1 : 1;
2323
- o.push(`translate(${r} ${n})scale(${c} ${l})translate(${-r} ${-n})`);
2324
- }
2325
- return i.rotation && o.push(`rotate(${i.rotation} ${r} ${n})`), ` transform="${o.join(" ")}"`;
2326
- }
2327
- ro(t, e, i) {
2328
- if (!i.includeBackgroundRectangles || t.secondaryColor.a === 0) return "";
2329
- const { position: s } = t, { r, g: n, b: o, a: c } = t.secondaryColor, l = `rgba(${r},${n},${o},${c / 255})`;
2330
- 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
- }
2332
- qn(t, e, i, s) {
2333
- const r = i.characters[t.charIndex];
2334
- 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);
2336
- if (!n) return "";
2337
- const { r: o, g: c, b: l, a: u } = t.primaryColor, f = `rgba(${o},${c},${l},${u / 255})`;
2338
- return s.drawMode === "stroke" ? `<path d="${n}" stroke="${f}" stroke-width="${s.strokeWidth}" fill="none"/>` : `<path d="${n}" fill="${f}"/>`;
2339
- }
2340
- no(t, e, i, s) {
2341
- const r = [], n = this.ro(t, e, s);
2342
- n && r.push(n);
2343
- const o = this.qn(t, e, i, s);
2344
- if (o) {
2345
- const c = this.io(t, e);
2346
- r.push(c ? `<g${c}>${o}</g>` : o);
2347
- }
2348
- return r.join("");
2349
- }
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("");
2354
- }
2355
- ao(t) {
2356
- return t.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\s+/g, " ").replace(/> </g, "><");
2357
- }
2358
- }
2359
- class Jt extends J {
2360
- ho(t) {
2361
- return this.Ln(t, "image/svg+xml;charset=utf-8");
2394
+ return G.Mr(this.xt, i, (s) => this.Ei.Si(s));
2362
2395
  }
2363
- co(t, e) {
2364
- this.On(t, this.In(e) + ".svg", "image/svg+xml;charset=utf-8");
2365
- }
2366
- lo(t, e) {
2367
- this.co(t, e || this.Nn());
2368
- }
2369
- }
2370
- class st {
2371
- 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();
2376
- }
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() };
2379
- }
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);
2383
- }
2384
- lo(t, e = {}) {
2385
- this.do.lo(this.mo(t, e), e.filename);
2386
- }
2387
- }
2388
- class Qt extends $ {
2389
- _o(t, e, i, s = " ") {
2390
- var o;
2391
- const r = [];
2392
- let n = 0;
2393
- for (let c = 0; c < e.rows; c++) {
2394
- const l = [];
2395
- 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;
2397
- l.push(v), n++;
2398
- }
2399
- r.push(l);
2400
- }
2401
- return r;
2402
- }
2403
- }
2404
- class te {
2405
- vo(t, e) {
2406
- const i = [];
2407
- for (const r of t) {
2408
- let n = r.join("");
2409
- e.preserveTrailingSpaces || (n = n.replace(/\s+$/, "")), i.push(n);
2410
- }
2411
- const s = e.lineEnding === "crlf" ? `\r
2412
- ` : `
2413
- `;
2414
- return i.join(s);
2415
- }
2416
- }
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");
2421
- }
2422
- Ao(t) {
2423
- let e = this.In(t);
2424
- return e === ".txt" || e.length <= 4 ? this.Nn() : e;
2425
- }
2426
- }
2427
- class rt {
2428
- 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();
2433
- }
2434
- po(t) {
2435
- return { preserveTrailingSpaces: t.preserveTrailingSpaces ?? !1, lineEnding: t.lineEnding ?? "lf", emptyCharacter: t.emptyCharacter ?? " ", filename: t.filename || this.do.Nn() };
2436
- }
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);
2440
- }
2441
- yo(t, e = {}) {
2442
- this.do.yo(this.wo(t, e), e.filename);
2443
- }
2444
- }
2445
- class ie extends $ {
2446
- Co(t, e = 1, i = "transparent") {
2447
- const s = t.canvas;
2448
- if (e === 1 && i === "transparent") return s;
2449
- const r = document.createElement("canvas"), n = r.getContext("2d"), o = Math.round(s.width * e), c = Math.round(s.height * e);
2450
- 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
- }
2452
- }
2453
- class se {
2454
- bo(t, e) {
2455
- const i = this.xo(e.format);
2456
- return e.format === "png" ? t.toDataURL(i) : t.toDataURL(i, e.quality);
2457
- }
2458
- async $o(t, e) {
2459
- return new Promise((i, s) => {
2460
- const r = this.xo(e.format), n = (o) => {
2461
- o ? i(o) : s(Error(`Failed to generate ${e.format.toUpperCase()} blob`));
2462
- };
2463
- e.format === "png" ? t.toBlob(n, r) : t.toBlob(n, r, e.quality);
2464
- });
2465
- }
2466
- xo(t) {
2467
- switch (t) {
2468
- case "png":
2469
- return "image/png";
2470
- case "jpg":
2471
- return "image/jpeg";
2472
- case "webp":
2473
- return "image/webp";
2474
- default:
2475
- throw Error("Unsupported image format: " + t);
2476
- }
2477
- }
2478
- }
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]);
2483
- }
2484
- Fo(t, e) {
2485
- const i = URL.createObjectURL(t);
2486
- try {
2487
- const s = document.createElement("a");
2488
- s.href = i, s.download = e, s.style.display = "none", s.rel = "noopener", document.body.appendChild(s), s.click(), document.body.removeChild(s);
2489
- } finally {
2490
- URL.revokeObjectURL(i);
2491
- }
2492
- }
2493
- Ro(t) {
2494
- return t in re && t in nt;
2495
- }
2496
- }
2497
- class oe {
2498
- 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();
2503
- }
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() };
2506
- }
2507
- zo(t) {
2508
- if (!this.do.Ro(t.format)) throw Error(`Saving '${t.format}' files is not supported`);
2509
- if (t.quality < 0 || t.quality > 1) throw Error("Image quality must be between 0.0 and 1.0");
2510
- if (t.scale <= 0) throw Error("Scale factor must be greater than 0");
2511
- t.format === "jpg" && t.backgroundColor === "transparent" && (t.backgroundColor = "black");
2512
- }
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);
2517
- }
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);
2523
- }
2524
- }
2525
- const he = (h) => class extends h {
2526
- Po() {
2527
- this.xt.St(this.To);
2528
- }
2529
- toString(t = {}) {
2530
- return this.Po(), new rt().wo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2531
- }
2532
- saveStrings(t = {}) {
2533
- this.Po(), new rt().yo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2534
- }
2535
- toSVG(t = {}) {
2536
- return this.Po(), new st().mo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2537
- }
2538
- saveSVG(t = {}) {
2539
- this.Po(), new st().lo({ pipeline: this.So, grid: this.hn, font: this.Ei }, t);
2540
- }
2541
- async saveCanvas(t = {}) {
2542
- await new oe().Mo(this.er, t);
2543
- }
2544
- }, ae = (h) => class extends h {
2396
+ }, qt = (a) => class extends a {
2545
2397
  async loadFont(t) {
2546
- return this.Ei.qi(t).then(() => {
2398
+ return this.Ei.Vi(t).then(() => {
2547
2399
  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();
2400
+ this.Br.rr(e.width, e.height), this.Yo.resize(this.Br.cols, this.Br.rows), this.xt.Ze(), this.Ln.rn();
2549
2401
  });
2550
2402
  }
2551
2403
  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;
2553
- this.Ei.Yi(t);
2404
+ if (!N.m(typeof t == "number" && t > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: t }) || this.Ei.fontSize === t) return;
2405
+ this.Ei.ji(t);
2554
2406
  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();
2407
+ this.Br.rr(e.width, e.height), this.Yo.resize(this.Br.cols, this.Br.rows), this.xt.Ze(), this.Ln.rn();
2556
2408
  }
2557
2409
  glyphColor(t) {
2558
- return this.Ei.Ti(t);
2410
+ return this.Ei.Pi(t);
2559
2411
  }
2560
2412
  glyphColors(t) {
2561
2413
  return this.Ei.Si(t);
2562
2414
  }
2563
- }, ce = (h) => class extends h {
2415
+ }, Kt = (a) => class extends a {
2564
2416
  get frameCount() {
2565
- return this.Bo.frameCount;
2417
+ return this.jo.frameCount;
2566
2418
  }
2567
2419
  set frameCount(t) {
2568
- this.Bo.frameCount = t;
2420
+ this.jo.frameCount = t;
2569
2421
  }
2570
2422
  frameRate(t) {
2571
- return t === void 0 ? this.Bo.currentFrameRate : this.Bo.frameRate(t, () => this.Go());
2423
+ return t === void 0 ? this.jo.currentFrameRate : this.jo.frameRate(t, () => this.Vo());
2572
2424
  }
2573
2425
  noLoop() {
2574
- this.Bo.pause();
2426
+ this.jo.pause();
2575
2427
  }
2576
2428
  loop() {
2577
- this.Bo.resume(() => this.Go());
2429
+ this.jo.resume(() => this.Vo());
2578
2430
  }
2579
2431
  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();
2432
+ if (N.m(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.Vo();
2581
2433
  }
2582
2434
  isLooping() {
2583
- return this.Bo.isLooping;
2435
+ return this.jo.isLooping;
2584
2436
  }
2585
- }, le = (h) => class extends h {
2437
+ }, Zt = (a) => class extends a {
2586
2438
  constructor(...t) {
2587
2439
  super(...t);
2588
2440
  }
2589
2441
  mouseClicked(t) {
2590
- this.Eo.Pn(t);
2442
+ this.Ln._n(t);
2591
2443
  }
2592
2444
  mousePressed(t) {
2593
- this.Eo.Zr(t);
2445
+ this.Ln.pn(t);
2594
2446
  }
2595
2447
  mouseReleased(t) {
2596
- this.Eo.Qr(t);
2448
+ this.Ln.vn(t);
2597
2449
  }
2598
2450
  mouseMoved(t) {
2599
- this.Eo.Tn(t);
2451
+ this.Ln.mn(t);
2600
2452
  }
2601
2453
  mouseScrolled(t) {
2602
- this.Eo.Sn(t);
2454
+ this.Ln.gn(t);
2603
2455
  }
2604
2456
  get mouse() {
2605
- return this.Eo.En();
2457
+ return this.Ln.An();
2458
+ }
2459
+ cursor(t) {
2460
+ this.Ln.en(t);
2606
2461
  }
2607
- }, ue = (h) => class extends h {
2462
+ }, Qt = (a) => class extends a {
2463
+ constructor(...t) {
2464
+ super(...t);
2465
+ }
2466
+ touchStarted(t) {
2467
+ this.qo.Fo(t);
2468
+ }
2469
+ touchMoved(t) {
2470
+ this.qo.mn(t);
2471
+ }
2472
+ touchEnded(t) {
2473
+ this.qo.zo(t);
2474
+ }
2475
+ touchCancelled(t) {
2476
+ this.qo.Ro(t);
2477
+ }
2478
+ tap(t) {
2479
+ this.qo.To(t);
2480
+ }
2481
+ doubleTap(t) {
2482
+ this.qo.Po(t);
2483
+ }
2484
+ longPress(t) {
2485
+ this.qo.So(t);
2486
+ }
2487
+ swipe(t) {
2488
+ this.qo.Eo(t);
2489
+ }
2490
+ pinch(t) {
2491
+ this.qo.$o(t);
2492
+ }
2493
+ rotateGesture(t) {
2494
+ this.qo.Do(t);
2495
+ }
2496
+ get touches() {
2497
+ return this.qo.Mo();
2498
+ }
2499
+ }, Jt = (a) => class extends a {
2608
2500
  constructor(...t) {
2609
2501
  super(...t);
2610
2502
  }
2611
2503
  keyPressed(t) {
2612
- this.Do.Zr(t);
2504
+ this.Zo.pn(t);
2613
2505
  }
2614
2506
  keyReleased(t) {
2615
- this.Do.Qr(t);
2507
+ this.Zo.vn(t);
2616
2508
  }
2617
2509
  isKeyPressed(t) {
2618
- return this.Do.Jr(t);
2510
+ return this.Zo.Pn(t);
2619
2511
  }
2620
2512
  get lastKeyPressed() {
2621
- return this.Do.en();
2513
+ return this.Zo.En();
2622
2514
  }
2623
2515
  get lastKeyReleased() {
2624
- return this.Do.sn();
2516
+ return this.Zo.$n();
2625
2517
  }
2626
2518
  get pressedKeys() {
2627
- return this.Do.rn();
2519
+ return this.Zo.Dn();
2628
2520
  }
2629
2521
  get modifierState() {
2630
- return this.Do.nn();
2522
+ return this.Zo.kn();
2631
2523
  }
2632
2524
  };
2633
- class fe {
2525
+ class $t {
2634
2526
  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() {
2527
+ h(this, "xt");
2528
+ h(this, "Ei");
2529
+ h(this, "tr");
2530
+ h(this, "Br");
2531
+ h(this, "jo");
2532
+ h(this, "Ln");
2533
+ h(this, "qo");
2534
+ h(this, "Zo");
2535
+ h(this, "Qo");
2536
+ h(this, "Yo");
2537
+ h(this, "Jo");
2538
+ h(this, "th");
2539
+ h(this, "sh");
2540
+ }
2541
+ Vo() {
2649
2542
  }
2650
2543
  }
2651
- class de extends function(e, ...i) {
2544
+ class te extends function(e, ...i) {
2652
2545
  return i.reduce((s, r) => r(s), e);
2653
- }(fe, Kt, he, ae, ce, le, ue) {
2546
+ }($t, Vt, qt, Kt, Zt, Qt, Jt) {
2654
2547
  constructor(e = {}) {
2548
+ var i;
2655
2549
  super();
2656
- a(this, "Ho", !1);
2657
- a(this, "Io", () => {
2550
+ h(this, "eh", /* @__PURE__ */ new Map());
2551
+ h(this, "ih");
2552
+ h(this, "rh", !1);
2553
+ h(this, "nh", !1);
2554
+ h(this, "oh", () => {
2658
2555
  });
2659
- a(this, "No", () => {
2556
+ h(this, "hh", () => {
2660
2557
  });
2661
- a(this, "Xo", () => {
2558
+ h(this, "ah", () => {
2662
2559
  });
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);
2668
- }
2669
- async Ko(e) {
2670
- await this.Ei.Vi(e.fontSource);
2560
+ h(this, "uh");
2561
+ h(this, "ar");
2562
+ h(this, "hr", !1);
2563
+ h(this, "fh");
2564
+ this.ih = ((i = e.plugins) == null ? void 0 : i.slice()) ?? [], this.hr = e.overlay ?? !1, this.tr = new Yt(e), this.xt = new Ut(this.tr.vr()), this.Ei = new Gt(this.xt, e.fontSize ?? 16), this.jo = new Wt(e.frameRate ?? 60), this.Ln = new rt(this.tr), this.qo = new ot(this.tr, this.Ln), this.Zo = new nt(), this.Qo = this.xt.Pt(), this.Jo = this.xt.rs(), this.dh(e);
2565
+ }
2566
+ async dh(e) {
2567
+ await this.Ei.Wi(e.fontSource);
2671
2568
  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(() => {
2680
- this.resizeCanvas(this.er.targetCanvas.width, this.er.targetCanvas.height);
2681
- }), this.cr.observe(this.er.targetCanvas));
2682
- }
2683
- Go() {
2684
- if (this.Bo.measureFrameRate(), this.Bo.incrementFrame(), this.Ho) return;
2569
+ this.Br = new Xt(this.tr.canvas, i.width, i.height), this.Ln.Wi(this.Br), this.qo.Wi(this.Br), this.Yo = this.xt.je(this.Br.cols, this.Br.rows, 5), this.th = this.xt.je(this.Br.width, this.Br.height, 1), this.hr && (this.fh = G.Mr(this.xt, this.tr.targetCanvas, (s) => this.Ei.Si(s))), this.sh = this.xt.cs(st, "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._h(), await this.ph(this.ih), this.ih = [], this.rh = !0, this.oh(), this.jo.start(() => this.Vo());
2570
+ }
2571
+ async ph(e) {
2572
+ if (e.length) for (const i of e) this.eh.has(i.name) ? console.warn(`[textmode.js] Plugin "${i.name}" is already installed.`) : (await i.install(this, this.mh()), this.eh.set(i.name, i));
2573
+ }
2574
+ async gh(e) {
2575
+ const i = this.eh.get(e);
2576
+ i && (i.uninstall && await i.uninstall(this, this.mh()), this.eh.delete(e));
2577
+ }
2578
+ async use(e) {
2579
+ return this.rh ? await this.ph([e]) : this.ih.push(e), this;
2580
+ }
2581
+ async unuse(e) {
2582
+ return this.rh ? (await this.gh(e), this) : (this.ih = this.ih.filter((i) => i.name !== e), this);
2583
+ }
2584
+ hasPlugin(e) {
2585
+ return this.rh ? this.eh.has(e) : this.ih.some((i) => i.name === e) || this.eh.has(e);
2586
+ }
2587
+ mh() {
2588
+ return { renderer: this.xt, font: this.Ei, grid: this.Br, canvas: this.tr, drawFramebuffer: this.Yo, asciiFramebuffer: this.th, flushDrawCommands: () => {
2589
+ this.xt.St(this.Qo);
2590
+ } };
2591
+ }
2592
+ _h() {
2593
+ this.uh = () => {
2594
+ this.hr && this.resizeCanvas(this.tr.targetCanvas.width, this.tr.targetCanvas.height), this.ah();
2595
+ }, window.addEventListener("resize", this.uh), this.Ln.nn(), this.qo.nn(), this.Zo.nn(), window.addEventListener("blur", () => {
2596
+ this.Zo.Bn();
2597
+ }), window.ResizeObserver && this.hr && (this.ar = new ResizeObserver(() => {
2598
+ this.resizeCanvas(this.tr.targetCanvas.width, this.tr.targetCanvas.height);
2599
+ }), this.ar.observe(this.tr.targetCanvas));
2600
+ }
2601
+ Vo() {
2602
+ if (this.jo.measureFrameRate(), this.jo.incrementFrame(), this.nh) return;
2685
2603
  if (this.hr) {
2686
2604
  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);
2605
+ i.bindTexture(i.TEXTURE_2D, this.fh.texture), i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, 1), i.texImage2D(i.TEXTURE_2D, 0, i.RGBA, i.RGBA, i.UNSIGNED_BYTE, this.tr.targetCanvas), i.bindTexture(i.TEXTURE_2D, null);
2688
2606
  }
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();
2607
+ this.Yo.begin(), this.xt.ke(this.Qo), this.hh(), this.xt.St(this.Qo), this.Yo.end(), this.th.begin(), this.xt.ke(this.Jo), this.Jo.Wt({ U0: this.Ei.fontFramebuffer, U1: [this.Ei.textureColumns, this.Ei.textureRows], U2: this.Yo.textures[0], U3: this.Yo.textures[1], U4: this.Yo.textures[2], U5: this.Yo.textures[4], U6: this.Yo.textures[3], U7: [this.Br.cols, this.Br.rows], U8: [this.th.width, this.th.height], U9: this.th.width / this.th.height }), this.xt.Ie(0, 0, this.tr.width, this.tr.height), this.th.end();
2690
2608
  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);
2609
+ this.xt.js(e[0], e[1], e[2], e[3]), this.xt.ke(this.sh), this.sh.Wt({ Ua: this.th.textures[0], Ub: [this.th.width, this.th.height], Uc: [this.Br.offsetX, this.Br.offsetY], Ud: [this.Br.width, this.Br.height] }), this.xt.Ie(this.Br.offsetX, this.Br.offsetY, this.Br.width, this.Br.height);
2692
2610
  }
2693
2611
  setup(e) {
2694
- this.Io = e;
2612
+ this.oh = e;
2695
2613
  }
2696
2614
  draw(e) {
2697
- this.No = e;
2615
+ this.hh = e;
2698
2616
  }
2699
2617
  windowResized(e) {
2700
- this.Xo = e;
2618
+ this.ah = e;
2701
2619
  }
2702
2620
  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();
2621
+ this.tr.pr(e, i), this.Br.ir(), this.Yo.resize(this.Br.cols, this.Br.rows), this.th.resize(this.Br.width, this.Br.height), this.xt.Ze(), this.Ln.rn(), this.qo.Ao(), this.Vo();
2704
2622
  }
2705
2623
  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);
2624
+ this.nh || (this.jo.stop(), window.removeEventListener("resize", this.uh), this.Ln.dn(), this.qo.dn(), this.Zo.dn(), this.Ei.Dt(), this.xt.Dt(), this.th.Dt(), this.sh.Dt(), this.fh && this.fh.Dt(), this.nh = !0);
2707
2625
  }
2708
2626
  get grid() {
2709
- return this.hn;
2627
+ return this.Br;
2710
2628
  }
2711
2629
  get font() {
2712
2630
  return this.Ei;
2713
2631
  }
2714
2632
  get width() {
2715
- return this.er.width;
2633
+ return this.tr.width;
2716
2634
  }
2717
2635
  get height() {
2718
- return this.er.height;
2636
+ return this.tr.height;
2719
2637
  }
2720
2638
  get canvas() {
2721
- return this.er.canvas;
2639
+ return this.tr.canvas;
2722
2640
  }
2723
2641
  get isDisposed() {
2724
- return this.Ho;
2642
+ return this.nh;
2725
2643
  }
2726
2644
  get overlay() {
2727
- return this.Vo;
2645
+ return this.fh;
2728
2646
  }
2729
2647
  }
2730
2648
  class Q {
2731
2649
  constructor() {
2732
2650
  }
2733
2651
  static create(t = {}) {
2734
- return new de(t);
2652
+ return new te(t);
2735
2653
  }
2736
2654
  static setErrorLevel(t) {
2737
- G.A(t);
2655
+ N.A(t);
2738
2656
  }
2739
2657
  static get version() {
2740
- return "0.3.0";
2658
+ return "0.3.2-beta.1";
2741
2659
  }
2742
2660
  }
2743
- const pe = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), me = Q.create, ve = Q.setErrorLevel, Ae = Q.version;
2661
+ const ie = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), se = Object.freeze(Object.defineProperty({ __proto__: null, keyboard: jt, mouse: Ht, touch: kt }, Symbol.toStringTag, { value: "Module" })), re = Q.create, ne = Q.setErrorLevel, oe = Q.version;
2744
2662
  export {
2745
- kt as TextmodeCanvas,
2746
- ut as TextmodeErrorLevel,
2747
- Xt as TextmodeFont,
2748
- q as TextmodeFramebuffer,
2749
- Ht as TextmodeGrid,
2750
- z as TextmodeImage,
2751
- de as Textmodifier,
2752
- me as create,
2753
- pe as export,
2754
- ve as setErrorLevel,
2663
+ Yt as TextmodeCanvas,
2664
+ ct as TextmodeErrorLevel,
2665
+ Gt as TextmodeFont,
2666
+ K as TextmodeFramebuffer,
2667
+ Xt as TextmodeGrid,
2668
+ G as TextmodeImage,
2669
+ te as Textmodifier,
2670
+ re as create,
2671
+ ie as export,
2672
+ se as input,
2673
+ ne as setErrorLevel,
2755
2674
  Q as textmode,
2756
- Ae as version
2675
+ oe as version
2757
2676
  };