@objectifthunes/three-book 0.8.0 → 0.8.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.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as l from "three";
2
- class It {
2
+ class Dt {
3
3
  constructor() {
4
4
  this.m_PositionX = 0, this.m_PositionZ = 0, this.m_DirectionX = 0, this.m_DirectionZ = 0, this.m_EulerY = 0, this.m_Radius = 0, this._positionOut = new l.Vector3(), this._scratchRP1 = new l.Vector3(), this._scratchRP2 = new l.Vector3(), this._scratchRollClosest = new l.Vector3(), this._scratchRollEuler = new l.Vector3(), this._scratchOffsetRoll = new l.Vector3();
5
5
  }
@@ -78,11 +78,11 @@ class It {
78
78
  }
79
79
  // ── Value-type clone ──────────────────────────────────────────────────
80
80
  clone() {
81
- const t = new It();
81
+ const t = new Dt();
82
82
  return t.m_PositionX = this.m_PositionX, t.m_PositionZ = this.m_PositionZ, t.m_DirectionX = this.m_DirectionX, t.m_DirectionZ = this.m_DirectionZ, t.m_EulerY = this.m_EulerY, t.m_Radius = this.m_Radius, t;
83
83
  }
84
84
  }
85
- function vt(a, t, e, s, i = 1 / 0, n = 1 / 60) {
85
+ function Tt(a, t, e, s, i = 1 / 0, n = 1 / 60) {
86
86
  s = Math.max(s, 1e-4);
87
87
  const r = 2 / s, o = r * n, h = 1 / (1 + o + 0.48 * o * o + 0.235 * o * o * o);
88
88
  let u = a - t;
@@ -93,22 +93,22 @@ function vt(a, t, e, s, i = 1 / 0, n = 1 / 60) {
93
93
  let g = t + (u + f) * h;
94
94
  return c - a > 0 == g > c && (g = c, e = (g - c) / n), { value: g, velocity: e };
95
95
  }
96
- function Pe(a, t, e, s, i = 1 / 0, n = 1 / 60) {
97
- const r = vt(
96
+ function we(a, t, e, s, i = 1 / 0, n = 1 / 60) {
97
+ const r = Tt(
98
98
  a.x,
99
99
  t.x,
100
100
  e.x,
101
101
  s.x,
102
102
  i,
103
103
  n
104
- ), o = vt(
104
+ ), o = Tt(
105
105
  a.y,
106
106
  t.y,
107
107
  e.y,
108
108
  s.y,
109
109
  i,
110
110
  n
111
- ), h = vt(
111
+ ), h = Tt(
112
112
  a.z,
113
113
  t.z,
114
114
  e.z,
@@ -118,7 +118,7 @@ function Pe(a, t, e, s, i = 1 / 0, n = 1 / 60) {
118
118
  );
119
119
  return e.set(r.velocity, o.velocity, h.velocity), a.set(r.value, o.value, h.value);
120
120
  }
121
- function Zt(a, t, e) {
121
+ function Ot(a, t, e) {
122
122
  const s = t * t - 4 * a * e;
123
123
  if (s < 0)
124
124
  return { rootCount: 0, root0: 0, root1: 0 };
@@ -133,26 +133,26 @@ function Zt(a, t, e) {
133
133
  };
134
134
  }
135
135
  }
136
- const Xt = new l.Vector2();
137
- function Lt(a, t, e, s) {
138
- return Se(a, t, e) ? s.copy(a) : (Xt.set(a.x, t.y), Te(
139
- Xt,
136
+ const Zt = new l.Vector2();
137
+ function Xt(a, t, e, s) {
138
+ return Pe(a, t, e) ? s.copy(a) : (Zt.set(a.x, t.y), Se(
139
+ Zt,
140
140
  a,
141
141
  t,
142
142
  e,
143
143
  s
144
144
  ));
145
145
  }
146
- function Se(a, t, e) {
146
+ function Pe(a, t, e) {
147
147
  const s = a.x - t.x;
148
148
  let i = a.y - t.y;
149
149
  return i *= e.x / e.y, Math.sqrt(s * s + i * i) < e.x;
150
150
  }
151
- function Te(a, t, e, s, i) {
151
+ function Se(a, t, e, s, i) {
152
152
  const n = e.x, r = e.y, o = a.x, h = a.y, u = t.x, c = t.y, d = s.x, f = s.y, g = 1 / (d * d), m = 1 / (f * f);
153
153
  if (Math.abs(o - u) < 1e-5) {
154
154
  if (o >= n - d && o <= n + d) {
155
- const _ = Zt(
155
+ const _ = Ot(
156
156
  m,
157
157
  -2 * m * r,
158
158
  g * (o * o - 2 * n * o + n * n) + m * r * r - 1
@@ -165,58 +165,58 @@ function Te(a, t, e, s, i) {
165
165
  }
166
166
  }
167
167
  } else {
168
- const _ = (c - h) / (u - o), p = h - _ * o, M = p - r, C = Zt(
168
+ const _ = (c - h) / (u - o), p = h - _ * o, M = p - r, w = Ot(
169
169
  g + m * _ * _,
170
170
  2 * M * _ * m - 2 * n * g,
171
171
  n * n * g + M * M * m - 1
172
172
  );
173
- if (C.rootCount === 1)
174
- return i.set(C.root0, _ * C.root0 + p);
175
- if (C.rootCount === 2) {
176
- let y = C.root0, P = C.root1;
177
- return o < u && ([y, P] = [P, y]), i.set(P, _ * P + p);
173
+ if (w.rootCount === 1)
174
+ return i.set(w.root0, _ * w.root0 + p);
175
+ if (w.rootCount === 2) {
176
+ let C = w.root0, P = w.root1;
177
+ return o < u && ([C, P] = [P, C]), i.set(P, _ * P + p);
178
178
  }
179
179
  }
180
180
  return i.copy(a);
181
181
  }
182
- const kt = new l.Vector3(), Nt = new l.Vector3(), Ut = new l.Ray();
183
- function Et(a, t) {
184
- return kt.copy(a.origin).applyMatrix4(t), Nt.copy(a.origin).add(a.direction).applyMatrix4(t), Ut.set(kt, Nt.sub(kt).normalize()), Ut;
182
+ const vt = new l.Vector3(), Lt = new l.Vector3(), Nt = new l.Ray();
183
+ function Ut(a, t) {
184
+ return vt.copy(a.origin).applyMatrix4(t), Lt.copy(a.origin).add(a.direction).applyMatrix4(t), Nt.set(vt, Lt.sub(vt).normalize()), Nt;
185
185
  }
186
- function ve(a) {
186
+ function Te(a) {
187
187
  const t = a.x;
188
188
  a.set(-t, a.y, a.z + t, a.w);
189
189
  }
190
- function ke(a) {
190
+ function ve(a) {
191
191
  const t = a.y;
192
192
  a.set(a.x, -t, a.z, a.w + t);
193
193
  }
194
- var mt = /* @__PURE__ */ ((a) => (a[a.LeftToRight = 0] = "LeftToRight", a[a.RightToLeft = 1] = "RightToLeft", a[a.UpToDown = 2] = "UpToDown", a[a.DownToUp = 3] = "DownToUp", a))(mt || {});
195
- const ot = Math.PI / 180, ut = 180 / Math.PI;
194
+ var ut = /* @__PURE__ */ ((a) => (a[a.LeftToRight = 0] = "LeftToRight", a[a.RightToLeft = 1] = "RightToLeft", a[a.UpToDown = 2] = "UpToDown", a[a.DownToUp = 3] = "DownToUp", a))(ut || {});
195
+ const nt = Math.PI / 180, lt = 180 / Math.PI;
196
196
  function q(a, t, e) {
197
197
  return a < t ? t : a > e ? e : a;
198
198
  }
199
- function at(a) {
199
+ function ot(a) {
200
200
  return a < 0 ? 0 : a > 1 ? 1 : a;
201
201
  }
202
202
  function G(a, t, e) {
203
- return e = at(e), a + (t - a) * e;
203
+ return e = ot(e), a + (t - a) * e;
204
204
  }
205
- function Wt(a, t, e) {
205
+ function Et(a, t, e) {
206
206
  return a + (t - a) * e;
207
207
  }
208
- function ht(a, t, e) {
209
- return a !== t ? at((e - a) / (t - a)) : 0;
208
+ function at(a, t, e) {
209
+ return a !== t ? ot((e - a) / (t - a)) : 0;
210
210
  }
211
- var wt = /* @__PURE__ */ ((a) => (a[a.Surface = 0] = "Surface", a[a.Edge = 1] = "Edge", a))(wt || {});
212
- const be = 1192093e-13;
213
- function Gt(a, t, e) {
214
- return e = at((e - a) / (t - a)), e * e * (3 - 2 * e);
211
+ var Ct = /* @__PURE__ */ ((a) => (a[a.Surface = 0] = "Surface", a[a.Edge = 1] = "Edge", a))(Ct || {});
212
+ const ke = 1192093e-13;
213
+ function Wt(a, t, e) {
214
+ return e = ot((e - a) / (t - a)), e * e * (3 - 2 * e);
215
215
  }
216
- class Be {
216
+ class be {
217
217
  // ---- Constructor ----
218
218
  constructor(t, e, s, i) {
219
- this.m_UseBackContentForSides = !1, this.m_Prev = null, this.m_Next = null, this.m_NoHole = !1, this.m_Size = new l.Vector2(), this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Margin = 0, this.m_MeshDataType = 1, this.m_Cylinder = new It(), this.m_IsRolling = !1, this.m_IsAutoTurning = !1, this.m_WorldPlane = new l.Plane(), this.m_StartHandle = new l.Vector3(), this.m_CurrentHandle = new l.Vector3(), this.m_EndHandle = new l.Vector3(), this.m_PrevHandle = new l.Vector3(), this.m_HandleOffset = new l.Vector3(), this.m_HandleVelocity = new l.Vector3(), this.m_HandleVelocities = [], this.m_SubMeshCount = -1, this.m_MinTurningRadius = 0, this.m_TurningRadius = 0, this.m_FallDuration = 0, this.m_FallTime = 0.2, this.m_XTime = 0, this.m_ZTime = 0, this.m_IsTurning = !1, this.m_IsFalling = !1, this.m_IsFallingLeft = !1, this.m_isMeshChanged = !1, this.sizeXOffset = 0, this._ucStartHandle = new l.Vector3(), this._ucCurrentHandle = new l.Vector3(), this._ucHandleDir = new l.Vector3(), this._ucA = new l.Vector3(), this._ucB = new l.Vector3(), this._ucMid = new l.Vector3(), this._ucRollResult = new l.Vector3(), this._ucCylDir = new l.Vector3(), this._utV1 = new l.Vector3(), this._utV2 = new l.Vector3(), this._utV3 = new l.Vector3(), this._utV4 = new l.Vector3(), this._chP = new l.Vector3(), this._chA = new l.Vector3(), this._chC = new l.Vector3(), this._chEllipseCenter1 = new l.Vector2(), this._chEllipseCenter2 = new l.Vector2(), this._chEllipseSize1 = new l.Vector2(), this._chEllipseSize2 = new l.Vector2(), this._chP2 = new l.Vector2(), this._dirResult = new l.Vector3(), this._gdA = new l.Vector3(), this._gdB = new l.Vector3(), this._rlMatrix = new l.Matrix4(), this._rlPlane = new l.Plane(new l.Vector3(0, 1, 0), 0), this._rlTarget = new l.Vector3(), this._rlNormal = new l.Vector3(), this._utTarget = new l.Vector3(), this._ufSmoothTime = new l.Vector3(), this._umFrontST = new l.Vector4(), this._umBackST = new l.Vector4(), this._h2uResult = new l.Vector2(), this.m_IsCover = t, this.m_Book = s, this.m_Index = e, this.m_Renderer = i, this.m_Transform = i.transform;
219
+ this.m_UseBackContentForSides = !1, this.m_Prev = null, this.m_Next = null, this.m_NoHole = !1, this.m_Size = new l.Vector2(), this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Margin = 0, this.m_MeshDataType = 1, this.m_Cylinder = new Dt(), this.m_IsRolling = !1, this.m_IsAutoTurning = !1, this.m_WorldPlane = new l.Plane(), this.m_StartHandle = new l.Vector3(), this.m_CurrentHandle = new l.Vector3(), this.m_EndHandle = new l.Vector3(), this.m_PrevHandle = new l.Vector3(), this.m_HandleOffset = new l.Vector3(), this.m_HandleVelocity = new l.Vector3(), this.m_HandleVelocities = [], this.m_SubMeshCount = -1, this.m_MinTurningRadius = 0, this.m_TurningRadius = 0, this.m_FallDuration = 0, this.m_FallTime = 0.2, this.m_XTime = 0, this.m_ZTime = 0, this.m_IsTurning = !1, this.m_IsFalling = !1, this.m_IsFallingLeft = !1, this.m_isMeshChanged = !1, this.sizeXOffset = 0, this._ucStartHandle = new l.Vector3(), this._ucCurrentHandle = new l.Vector3(), this._ucHandleDir = new l.Vector3(), this._ucA = new l.Vector3(), this._ucB = new l.Vector3(), this._ucMid = new l.Vector3(), this._ucRollResult = new l.Vector3(), this._ucCylDir = new l.Vector3(), this._utV1 = new l.Vector3(), this._utV2 = new l.Vector3(), this._utV3 = new l.Vector3(), this._utV4 = new l.Vector3(), this._chP = new l.Vector3(), this._chA = new l.Vector3(), this._chC = new l.Vector3(), this._chEllipseCenter1 = new l.Vector2(), this._chEllipseCenter2 = new l.Vector2(), this._chEllipseSize1 = new l.Vector2(), this._chEllipseSize2 = new l.Vector2(), this._chP2 = new l.Vector2(), this._dirResult = new l.Vector3(), this._gdA = new l.Vector3(), this._gdB = new l.Vector3(), this._rlMatrix = new l.Matrix4(), this._rlPlane = new l.Plane(new l.Vector3(0, 1, 0), 0), this._rlTarget = new l.Vector3(), this._rlNormal = new l.Vector3(), this._utTarget = new l.Vector3(), this._ufSmoothTime = new l.Vector3(), this._umFrontST = new l.Vector4(), this._umBackST = new l.Vector4(), this._h2uResult = new l.Vector2(), this.m_IsCover = t, this.m_Book = s, this.m_Index = e, this.m_Renderer = i, this.m_Transform = i.transform;
220
220
  }
221
221
  // ---- Properties (mirrors C#) ----
222
222
  get isMeshChanged() {
@@ -256,7 +256,7 @@ class Be {
256
256
  return this.m_IsFalling || this.m_IsTurning ? this.m_Transform.scale.x === -1 ? 1 - this.m_ZTime : this.m_ZTime : this.m_Transform.scale.x === -1 ? 1 : 0;
257
257
  }
258
258
  get direction() {
259
- const e = this.zTime * 180 * ot, s = Math.cos(e), i = Math.sin(e);
259
+ const e = this.zTime * 180 * nt, s = Math.cos(e), i = Math.sin(e);
260
260
  return this._dirResult.set(-s, -i, 0);
261
261
  }
262
262
  get isTurning() {
@@ -333,8 +333,8 @@ class Be {
333
333
  this.m_TurningRadius = Math.max(this.m_Size.x * 50, this.m_MinTurningRadius);
334
334
  return;
335
335
  }
336
- let e = Math.max(this.m_Stiffness, 1 - at(t));
337
- e <= 0.5 ? this.m_TurningRadius = ht(0, 0.5, e) * this.m_Size.x / Math.PI : this.m_TurningRadius = this.m_Size.x / (Math.max(180 * (1 - ht(0.5, 1, e)), 5) * ot), this.m_TurningRadius = Math.max(
336
+ let e = Math.max(this.m_Stiffness, 1 - ot(t));
337
+ e <= 0.5 ? this.m_TurningRadius = at(0, 0.5, e) * this.m_Size.x / Math.PI : this.m_TurningRadius = this.m_Size.x / (Math.max(180 * (1 - at(0.5, 1, e)), 5) * nt), this.m_TurningRadius = Math.max(
338
338
  this.m_TurningRadius,
339
339
  this.m_MinTurningRadius
340
340
  );
@@ -342,7 +342,7 @@ class Be {
342
342
  startTurning(t) {
343
343
  var i, n;
344
344
  const e = t.clone();
345
- t = Et(
345
+ t = Ut(
346
346
  t,
347
347
  this._rlMatrix.copy(this.m_Transform.matrixWorld).invert()
348
348
  ), this.m_WorldPlane.setFromNormalAndCoplanarPoint(
@@ -395,14 +395,14 @@ class Be {
395
395
  var s, i;
396
396
  let e = !1;
397
397
  if (this.m_IsAutoTurning) {
398
- let n = at(this.m_FallTime / this.m_FallDuration);
399
- n = Gt(0, 1, n), n = Gt(0, 1, n), this.m_CurrentHandle.lerpVectors(
398
+ let n = ot(this.m_FallTime / this.m_FallDuration);
399
+ n = Wt(0, 1, n), n = Wt(0, 1, n), this.m_CurrentHandle.lerpVectors(
400
400
  this.m_StartHandle,
401
401
  this.m_EndHandle,
402
402
  this.m_IsFallingLeft ? n : 1 - n
403
- ), this.m_FallTime += t, e = Math.abs(n - 1) < be;
403
+ ), this.m_FallTime += t, e = Math.abs(n - 1) < ke;
404
404
  } else
405
- this._ufSmoothTime.set(this.m_FallTime, 0, this.m_FallTime * 0.75), Pe(
405
+ this._ufSmoothTime.set(this.m_FallTime, 0, this.m_FallTime * 0.75), we(
406
406
  this.m_CurrentHandle,
407
407
  this.m_EndHandle,
408
408
  this.m_HandleVelocity,
@@ -448,12 +448,12 @@ class Be {
448
448
  }
449
449
  hit2UV(t) {
450
450
  const e = this._h2uResult.set(
451
- ht(-this.sizeXOffset, this.m_Size.x, t.x),
451
+ at(-this.sizeXOffset, this.m_Size.x, t.x),
452
452
  t.z / this.m_Size.y
453
453
  );
454
454
  this.m_UVMargin.fixUV(e);
455
455
  const s = this.m_Book.direction;
456
- if (s === mt.UpToDown || s === mt.DownToUp) {
456
+ if (s === ut.UpToDown || s === ut.DownToUp) {
457
457
  const i = e.x;
458
458
  e.x = e.y, e.y = i, this.isOnRightStack && (e.y = 1 - e.y);
459
459
  } else
@@ -465,7 +465,7 @@ class Be {
465
465
  * Returns the local-space hit point, or null if no hit / out of bounds.
466
466
  */
467
467
  raycastLocal(t, e = !1) {
468
- t = Et(
468
+ t = Ut(
469
469
  t,
470
470
  this._rlMatrix.copy(this.m_Transform.matrixWorld).invert()
471
471
  ), this._rlPlane.set(this._rlPlane.normal.set(0, 1, 0), 0);
@@ -503,7 +503,7 @@ class Be {
503
503
  t === 1 ? this.m_MaterialData.materials1 : this.m_MaterialData.materials3
504
504
  ), this.m_SubMeshCount = t);
505
505
  const e = this._umFrontST.copy(this.m_FrontContent.textureST), s = this._umBackST.copy(this.m_BackContent.textureST);
506
- this.m_Book.direction > 1 ? ke(s) : ve(s);
506
+ this.m_Book.direction > 1 ? ve(s) : Te(s);
507
507
  const i = this.m_FrontContent.texture, n = this.m_BackContent.texture;
508
508
  if (t === 3) {
509
509
  let r = 0, o = 1;
@@ -559,13 +559,13 @@ class Be {
559
559
  this._utV3.set(s[1], 0, i[i.length - 1]);
560
560
  const o = this.rollPoint(this._utV3);
561
561
  this._utV4.set(s[2], 0, i[i.length - 1]);
562
- const h = this.rollPoint(this._utV4), u = r.x - n.x, c = r.y - n.y, d = h.x - o.x, f = h.y - o.y, g = Math.sqrt(u * u + c * c) || 1, m = Math.sqrt(d * d + f * f) || 1, _ = ut * Math.atan2(c / g, u / g), p = ut * Math.atan2(f / m, d / m), M = (_ + p) / 2;
562
+ const h = this.rollPoint(this._utV4), u = r.x - n.x, c = r.y - n.y, d = h.x - o.x, f = h.y - o.y, g = Math.sqrt(u * u + c * c) || 1, m = Math.sqrt(d * d + f * f) || 1, _ = lt * Math.atan2(c / g, u / g), p = lt * Math.atan2(f / m, d / m), M = (_ + p) / 2;
563
563
  this.m_ZTime = M / 180;
564
564
  } else
565
565
  this.m_XTime = 0, this.m_ZTime = 0;
566
566
  }
567
567
  findTime(t) {
568
- return t = this.rollPoint(t), ht(this.m_Size.x, -this.m_Size.x, t.x);
568
+ return t = this.rollPoint(t), at(this.m_Size.x, -this.m_Size.x, t.x);
569
569
  }
570
570
  clampHandle() {
571
571
  this.m_StartHandle.y = 0, this.m_CurrentHandle.y = 0;
@@ -578,7 +578,7 @@ class Be {
578
578
  ), d = this._chEllipseSize1.set(i, r), f = this._chEllipseSize2.set(n, o);
579
579
  t.x = q(t.x, -this.m_Size.x, this.m_Size.x);
580
580
  const g = this._chP2.set(t.x, t.z);
581
- Lt(g, u, d, g), Lt(g, c, f, g), this.m_CurrentHandle.set(g.x, 0, g.y);
581
+ Xt(g, u, d, g), Xt(g, c, f, g), this.m_CurrentHandle.set(g.x, 0, g.y);
582
582
  }
583
583
  updateCylinder() {
584
584
  const t = this._ucStartHandle.copy(this.m_StartHandle), e = this._ucCurrentHandle.copy(this.m_CurrentHandle), s = this._ucHandleDir.copy(t).sub(e).normalize();
@@ -599,17 +599,17 @@ class Be {
599
599
  }
600
600
  startAutoTurning(t, e, s, i) {
601
601
  var u, c;
602
- if (this.updateTurningRadius(s), this.m_PrevHandle.copy(this.m_CurrentHandle), this.m_IsRolling = !0, this.m_HandleOffset.set(0, 0, 0), t === wt.Surface) {
602
+ if (this.updateTurningRadius(s), this.m_PrevHandle.copy(this.m_CurrentHandle), this.m_IsRolling = !0, this.m_HandleOffset.set(0, 0, 0), t === Ct.Surface) {
603
603
  const d = this.m_Transform.scale;
604
604
  d.x *= -1;
605
605
  }
606
606
  this.switchMeshData(
607
607
  0
608
608
  /* Highpoly */
609
- ), (u = this.m_Prev) == null || u.trySwitchMeshData(1), (c = this.m_Next) == null || c.trySwitchMeshData(1), this.m_IsFallingLeft = t === wt.Edge, this.m_IsTurning = !1, this.m_IsFalling = !0, this.m_FallTime = 0, this.m_FallDuration = i;
609
+ ), (u = this.m_Prev) == null || u.trySwitchMeshData(1), (c = this.m_Next) == null || c.trySwitchMeshData(1), this.m_IsFallingLeft = t === Ct.Edge, this.m_IsTurning = !1, this.m_IsFalling = !0, this.m_FallTime = 0, this.m_FallDuration = i;
610
610
  const n = this.m_Size.x, r = this.m_Size.y;
611
611
  e = q(e, -0.99, 0.99);
612
- const o = Wt(0.5, 1, e), h = Wt(0.5, 0, e);
612
+ const o = Et(0.5, 1, e), h = Et(0.5, 0, e);
613
613
  this.m_StartHandle.set(n, 0, r * o), this.m_EndHandle.set(-n, 0, r * h), this.m_IsAutoTurning = !0;
614
614
  }
615
615
  // ---- Public getter for the cylinder (used by BookBound etc.) ----
@@ -617,7 +617,7 @@ class Be {
617
617
  return this.m_Cylinder;
618
618
  }
619
619
  }
620
- const dt = class dt {
620
+ const mt = class mt {
621
621
  constructor() {
622
622
  this.m_Left = 0, this.m_Right = 0, this.m_Down = 0, this.m_Up = 0;
623
623
  }
@@ -648,7 +648,7 @@ const dt = class dt {
648
648
  }
649
649
  // ── Helpers ───────────────────────────────────────────────────────────
650
650
  clamp(t) {
651
- return Math.max(dt.kMin, Math.min(t, dt.kMax));
651
+ return Math.max(mt.kMin, Math.min(t, mt.kMax));
652
652
  }
653
653
  // ── Transform ─────────────────────────────────────────────────────────
654
654
  /**
@@ -656,18 +656,18 @@ const dt = class dt {
656
656
  * book direction.
657
657
  */
658
658
  transform(t) {
659
- const e = new dt();
659
+ const e = new mt();
660
660
  switch (t) {
661
- case mt.LeftToRight:
661
+ case ut.LeftToRight:
662
662
  e.m_Left = this.m_Left, e.m_Right = this.m_Right, e.m_Down = this.m_Down, e.m_Up = this.m_Up;
663
663
  break;
664
- case mt.RightToLeft:
664
+ case ut.RightToLeft:
665
665
  e.m_Left = this.m_Right, e.m_Right = this.m_Left, e.m_Down = this.m_Down, e.m_Up = this.m_Up;
666
666
  break;
667
- case mt.UpToDown:
667
+ case ut.UpToDown:
668
668
  e.m_Left = this.m_Up, e.m_Right = this.m_Down, e.m_Down = this.m_Left, e.m_Up = this.m_Right;
669
669
  break;
670
- case mt.DownToUp:
670
+ case ut.DownToUp:
671
671
  default:
672
672
  e.m_Left = this.m_Down, e.m_Right = this.m_Up, e.m_Down = this.m_Left, e.m_Up = this.m_Right;
673
673
  break;
@@ -682,7 +682,7 @@ const dt = class dt {
682
682
  * Unity's `Mathf.InverseLerp(a, b, v)` = `(v - a) / (b - a)` clamped to [0,1].
683
683
  */
684
684
  fixUV(t) {
685
- return t.x = dt.inverseLerp(this.m_Left, 1 - this.m_Right, t.x), t.y = dt.inverseLerp(this.m_Down, 1 - this.m_Up, t.y), t;
685
+ return t.x = mt.inverseLerp(this.m_Left, 1 - this.m_Right, t.x), t.y = mt.inverseLerp(this.m_Down, 1 - this.m_Up, t.y), t;
686
686
  }
687
687
  static inverseLerp(t, e, s) {
688
688
  if (t === e) return 0;
@@ -691,15 +691,15 @@ const dt = class dt {
691
691
  }
692
692
  // ── Value-type clone ──────────────────────────────────────────────────
693
693
  clone() {
694
- const t = new dt();
694
+ const t = new mt();
695
695
  return t.m_Left = this.m_Left, t.m_Right = this.m_Right, t.m_Down = this.m_Down, t.m_Up = this.m_Up, t;
696
696
  }
697
697
  };
698
- dt.kMin = 0, dt.kMax = 0.25;
699
- let bt = dt;
700
- const ct = class ct {
698
+ mt.kMin = 0, mt.kMax = 0.25;
699
+ let kt = mt;
700
+ const ht = class ht {
701
701
  constructor(t) {
702
- this.m_Material = null, this.m_Color = new l.Color(1, 1, 1), this.m_Width = 0, this.m_Height = 0, this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Quality = 0, this.m_UVMargin = new bt(), this.margin = 0, this.bookDirection = mt.LeftToRight, this.color = (t == null ? void 0 : t.color) ?? new l.Color(1, 1, 1), this.width = (t == null ? void 0 : t.width) ?? ct.kMinSize * 2, this.height = (t == null ? void 0 : t.height) ?? ct.kMinSize * 2, this.thickness = (t == null ? void 0 : t.thickness) ?? ct.kMinThickness * 2, this.stiffness = (t == null ? void 0 : t.stiffness) ?? 0.1, this.rigid = (t == null ? void 0 : t.rigid) ?? !1, this.quality = (t == null ? void 0 : t.quality) ?? 3, (t == null ? void 0 : t.material) !== void 0 && (this.m_Material = t.material);
702
+ this.m_Material = null, this.m_Color = new l.Color(1, 1, 1), this.m_Width = 0, this.m_Height = 0, this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Quality = 0, this.m_UVMargin = new kt(), this.margin = 0, this.bookDirection = ut.LeftToRight, this.color = (t == null ? void 0 : t.color) ?? new l.Color(1, 1, 1), this.width = (t == null ? void 0 : t.width) ?? ht.kMinSize * 2, this.height = (t == null ? void 0 : t.height) ?? ht.kMinSize * 2, this.thickness = (t == null ? void 0 : t.thickness) ?? ht.kMinThickness * 2, this.stiffness = (t == null ? void 0 : t.stiffness) ?? 0.1, this.rigid = (t == null ? void 0 : t.rigid) ?? !1, this.quality = (t == null ? void 0 : t.quality) ?? 3, (t == null ? void 0 : t.material) !== void 0 && (this.m_Material = t.material);
703
703
  }
704
704
  // ── Properties ────────────────────────────────────────────────────────
705
705
  get material() {
@@ -718,19 +718,19 @@ const ct = class ct {
718
718
  return this.bookDirection > 1 ? this.m_Height : this.m_Width;
719
719
  }
720
720
  set width(t) {
721
- this.m_Width = Math.max(t, ct.kMinSize);
721
+ this.m_Width = Math.max(t, ht.kMinSize);
722
722
  }
723
723
  get height() {
724
724
  return this.bookDirection > 1 ? this.m_Width : this.m_Height;
725
725
  }
726
726
  set height(t) {
727
- this.m_Height = Math.max(t, ct.kMinSize);
727
+ this.m_Height = Math.max(t, ht.kMinSize);
728
728
  }
729
729
  get thickness() {
730
730
  return this.m_Thickness;
731
731
  }
732
732
  set thickness(t) {
733
- this.m_Thickness = Math.max(t, ct.kMinThickness);
733
+ this.m_Thickness = Math.max(t, ht.kMinThickness);
734
734
  }
735
735
  get stiffness() {
736
736
  return this.m_Stiffness;
@@ -749,8 +749,8 @@ const ct = class ct {
749
749
  }
750
750
  set quality(t) {
751
751
  this.m_Quality = Math.max(
752
- ct.kMinQuality,
753
- Math.min(t, ct.kMaxQuality)
752
+ ht.kMinQuality,
753
+ Math.min(t, ht.kMaxQuality)
754
754
  );
755
755
  }
756
756
  get uvMargin() {
@@ -763,9 +763,9 @@ const ct = class ct {
763
763
  return new l.Vector2(this.width, this.height);
764
764
  }
765
765
  };
766
- ct.kMinSize = 1, ct.kMinThickness = 1e-4, ct.kMinQuality = 1, ct.kMaxQuality = 5;
767
- let ft = ct;
768
- class qt {
766
+ ht.kMinSize = 1, ht.kMinThickness = 1e-4, ht.kMinQuality = 1, ht.kMaxQuality = 5;
767
+ let _t = ht;
768
+ class Gt {
769
769
  constructor(t) {
770
770
  this.m_Texture = null, this.m_TextureST = new l.Vector4(1, 1, 0, 0), this._cachedPropertyBlock = null, this._propertyBlockDirty = !0;
771
771
  const e = t.material ?? new l.MeshStandardMaterial();
@@ -803,7 +803,7 @@ class qt {
803
803
  this.m_Texture = t, this.m_TextureST.copy(e), this._propertyBlockDirty = !0;
804
804
  }
805
805
  }
806
- function jt(a, t, e, s = new l.Vector3()) {
806
+ function qt(a, t, e, s = new l.Vector3()) {
807
807
  let i = t.x - a.x, n = t.y - a.y, r = t.z - a.z, o = 1 / Math.sqrt(i * i + n * n + r * r);
808
808
  i *= o, n *= o, r *= o;
809
809
  let h = e.x - a.x, u = e.y - a.y, c = e.z - a.z;
@@ -811,7 +811,7 @@ function jt(a, t, e, s = new l.Vector3()) {
811
811
  const d = n * c - r * u, f = r * h - i * c, g = i * u - n * h;
812
812
  return o = 1 / Math.sqrt(d * d + f * f + g * g), s.set(d * o, f * o, g * o);
813
813
  }
814
- class _t {
814
+ class dt {
815
815
  constructor(t, e = !1, s = !1) {
816
816
  this.prev = null, this.next = null, this.index = 0, this.value = t, this.hole = e, this.seam = s;
817
817
  }
@@ -830,7 +830,7 @@ class _t {
830
830
  }
831
831
  // ── Factory helpers ───────────────────────────────────────────────────
832
832
  createNext(t, e = !1, s = !1) {
833
- const i = new _t(t, e, s);
833
+ const i = new dt(t, e, s);
834
834
  return i.prev = this, this.next = i, i;
835
835
  }
836
836
  // ── Insertion (sorted linked-list insert) ─────────────────────────────
@@ -862,21 +862,21 @@ class _t {
862
862
  t.push(this.hole), this.next !== null && this.next._getHolesRecursive(t);
863
863
  }
864
864
  }
865
- class At {
865
+ class It {
866
866
  constructor(t, e, s, i) {
867
867
  this.active = !0, this.prevIndex = t, this.index = e, this.nextIndex = s, this.time = i;
868
868
  }
869
869
  clone() {
870
- const t = new At(this.prevIndex, this.index, this.nextIndex, this.time);
870
+ const t = new It(this.prevIndex, this.index, this.nextIndex, this.time);
871
871
  return t.active = this.active, t;
872
872
  }
873
873
  }
874
- class Tt {
874
+ class St {
875
875
  constructor(t, e, s, i, n, r = !0) {
876
876
  this.startX = t, this.startZ = e, this.endX = s, this.endZ = i, this.flip = n, this.left = r;
877
877
  }
878
878
  clone() {
879
- return new Tt(
879
+ return new St(
880
880
  this.startX,
881
881
  this.startZ,
882
882
  this.endX,
@@ -886,38 +886,38 @@ class Tt {
886
886
  );
887
887
  }
888
888
  }
889
- class ce {
889
+ class he {
890
890
  constructor(t, e, s) {
891
891
  const i = t.size;
892
- this.leftNode = new _t(e.left * i.x, s, !0), this.rightNode = new _t((1 - e.right) * i.x, s, !0), this.downNode = new _t(e.down * i.y, s, !0), this.upNode = new _t((1 - e.up) * i.y, s, !0);
892
+ this.leftNode = new dt(e.left * i.x, s, !0), this.rightNode = new dt((1 - e.right) * i.x, s, !0), this.downNode = new dt(e.down * i.y, s, !0), this.upNode = new dt((1 - e.up) * i.y, s, !0);
893
893
  }
894
894
  insert(t, e, s, i) {
895
895
  t.insert(this.leftNode) && s.push(this.leftNode), t.insert(this.rightNode) && s.push(this.rightNode), e.insert(this.downNode) && i.push(this.downNode), e.insert(this.upNode) && i.push(this.upNode);
896
896
  }
897
897
  }
898
- function Mt(a, t) {
898
+ function xt(a, t) {
899
899
  for (const e of a) {
900
- const s = e.prevNoneSeam, i = e.nextNoneSeam, n = ht(s.value, i.value, e.value), r = new At(s.index, e.index, i.index, n);
900
+ const s = e.prevNoneSeam, i = e.nextNoneSeam, n = at(s.value, i.value, e.value), r = new It(s.index, e.index, i.index, n);
901
901
  t.push(r);
902
902
  }
903
903
  }
904
- function Bt(a, t, e, s, i) {
904
+ function bt(a, t, e, s, i) {
905
905
  for (const n of a)
906
906
  if (n.active)
907
907
  for (let r = 0; r < s; r++) {
908
908
  const o = n.prevIndex, h = n.nextIndex, u = t[r * e + o], c = t[r * e + h], d = t[r * e + n.index];
909
- i ? le(u, c, n.time, d) : d.copy(u).lerp(c, n.time);
909
+ i ? ce(u, c, n.time, d) : d.copy(u).lerp(c, n.time);
910
910
  }
911
911
  }
912
- function Rt(a, t, e, s, i) {
912
+ function Bt(a, t, e, s, i) {
913
913
  for (const n of a)
914
914
  if (n.active)
915
915
  for (let r = 0; r < e; r++) {
916
916
  const o = n.prevIndex, h = n.nextIndex, u = t[o * e + r], c = t[h * e + r], d = t[n.index * e + r];
917
- i ? le(u, c, n.time, d) : d.copy(u).lerp(c, n.time);
917
+ i ? ce(u, c, n.time, d) : d.copy(u).lerp(c, n.time);
918
918
  }
919
919
  }
920
- function le(a, t, e, s = new l.Vector3()) {
920
+ function ce(a, t, e, s = new l.Vector3()) {
921
921
  const i = Math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z), n = Math.sqrt(t.x * t.x + t.y * t.y + t.z * t.z);
922
922
  if (i === 0 || n === 0)
923
923
  return s.copy(a).lerp(t, e);
@@ -934,22 +934,22 @@ function le(a, t, e, s = new l.Vector3()) {
934
934
  (h * _ + d * p) * M
935
935
  );
936
936
  }
937
- function Ht(a, t, e, s, i) {
937
+ function At(a, t, e, s, i) {
938
938
  for (const n of a) {
939
939
  const r = (n.endX - n.startX + 1) * 2, o = (n.endZ - n.startZ + 1) * 2, h = e.length;
940
940
  for (let c = 0, d = n.endX - n.startX; c < d; c++) {
941
941
  const f = h + c * 2 + 0, g = h + c * 2 + 1, m = h + c * 2 + 2, _ = h + c * 2 + 3;
942
- n.flip ? Qt(t, f, g, m, _, r) : Yt(t, f, g, m, _, r);
942
+ n.flip ? Yt(t, f, g, m, _, r) : jt(t, f, g, m, _, r);
943
943
  }
944
944
  if (n.left)
945
945
  for (let c = 0, d = n.endZ - n.startZ; c < d; c++) {
946
946
  const f = h + c * 2 + 0 + r * 2, g = h + c * 2 + 1 + r * 2, m = h + c * 2 + 2 + r * 2, _ = h + c * 2 + 3 + r * 2;
947
- n.flip ? Qt(t, f, g, m, _, o) : Yt(t, f, g, m, _, o);
947
+ n.flip ? Yt(t, f, g, m, _, o) : jt(t, f, g, m, _, o);
948
948
  }
949
949
  else
950
950
  for (let c = 0, d = n.endZ - n.startZ; c < d; c++) {
951
951
  const f = h + c * 2 + 0 + r * 2 + o, g = h + c * 2 + 1 + r * 2 + o, m = h + c * 2 + 2 + r * 2 + o, _ = h + c * 2 + 3 + r * 2 + o;
952
- n.flip ? St(t, f, g, m, _) : Pt(t, f, g, m, _);
952
+ n.flip ? Pt(t, f, g, m, _) : wt(t, f, g, m, _);
953
953
  }
954
954
  const u = s * i;
955
955
  for (let c = n.startX; c <= n.endX; c++) {
@@ -970,7 +970,7 @@ function Ht(a, t, e, s, i) {
970
970
  }
971
971
  }
972
972
  }
973
- function ue(a, t, e, s, i) {
973
+ function le(a, t, e, s, i) {
974
974
  const n = s * i;
975
975
  let r = n * 2;
976
976
  const o = new l.Vector3();
@@ -993,50 +993,50 @@ function ue(a, t, e, s, i) {
993
993
  }
994
994
  }
995
995
  }
996
+ function jt(a, t, e, s, i, n) {
997
+ wt(a, t, e, s, i), t += n, e += n, s += n, i += n, wt(a, t, e, s, i);
998
+ }
996
999
  function Yt(a, t, e, s, i, n) {
997
1000
  Pt(a, t, e, s, i), t += n, e += n, s += n, i += n, Pt(a, t, e, s, i);
998
1001
  }
999
- function Qt(a, t, e, s, i, n) {
1000
- St(a, t, e, s, i), t += n, e += n, s += n, i += n, St(a, t, e, s, i);
1001
- }
1002
- function Ft(a, t, e, s, i, n, r) {
1003
- Pt(a, e, s, i, n), e += r, s += r, i += r, n += r, St(t, e, s, i, n);
1002
+ function Ht(a, t, e, s, i, n, r) {
1003
+ wt(a, e, s, i, n), e += r, s += r, i += r, n += r, Pt(t, e, s, i, n);
1004
1004
  }
1005
- function Ot(a, t, e, s, i, n) {
1005
+ function Ft(a, t, e, s, i, n) {
1006
1006
  const r = i.left * s.x, o = (1 - i.right) * s.x, h = i.down * s.y, u = (1 - i.up) * s.y, c = t.length, d = e.length;
1007
1007
  if (n > 1)
1008
1008
  for (let g = 0; g < d; g++)
1009
1009
  for (let m = 0; m < c; m++) {
1010
- const _ = ht(o, r, t[m]), p = ht(u, h, e[g]);
1010
+ const _ = at(o, r, t[m]), p = at(u, h, e[g]);
1011
1011
  a.push(new l.Vector2(p, _));
1012
1012
  }
1013
1013
  else
1014
1014
  for (let g = 0; g < d; g++)
1015
1015
  for (let m = 0; m < c; m++) {
1016
- const _ = ht(r, o, t[m]), p = ht(u, h, e[g]);
1016
+ const _ = at(r, o, t[m]), p = at(u, h, e[g]);
1017
1017
  a.push(new l.Vector2(_, p));
1018
1018
  }
1019
1019
  const f = a.length;
1020
1020
  for (let g = 0; g < f; g++)
1021
1021
  a.push(a[g].clone());
1022
1022
  }
1023
- function Pt(a, t, e, s, i) {
1023
+ function wt(a, t, e, s, i) {
1024
1024
  a.push(t), a.push(s), a.push(e), a.push(e), a.push(s), a.push(i);
1025
1025
  }
1026
- function St(a, t, e, s, i) {
1026
+ function Pt(a, t, e, s, i) {
1027
1027
  a.push(t), a.push(e), a.push(s), a.push(e), a.push(i), a.push(s);
1028
1028
  }
1029
- const ls = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1029
+ const cs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1030
1030
  __proto__: null,
1031
- addBorders: Ht,
1032
- addFrontAndBackFaces: Ft,
1033
- addFrontAndBackTexcoords: Ot,
1034
- seamNodesToSeams: Mt,
1035
- updateBorders: ue,
1036
- updateXSeams: Bt,
1037
- updateZSeams: Rt
1031
+ addBorders: At,
1032
+ addFrontAndBackFaces: Ht,
1033
+ addFrontAndBackTexcoords: Ft,
1034
+ seamNodesToSeams: xt,
1035
+ updateBorders: le,
1036
+ updateXSeams: bt,
1037
+ updateZSeams: Bt
1038
1038
  }, Symbol.toStringTag, { value: "Module" }));
1039
- class $t {
1039
+ class Qt {
1040
1040
  get geometry() {
1041
1041
  return this.m_Geometry;
1042
1042
  }
@@ -1112,17 +1112,17 @@ class $t {
1112
1112
  const t = this.m_BaseVertices, e = this.m_Vertices, s = this.m_Normals, i = this.m_Pattern.weights, n = this.m_Pattern.baseXArray.length, r = this.m_Pattern.baseZArray.length, o = this.m_Pattern.baseVertexCount, h = new l.Vector3(), u = new l.Vector3(), c = new l.Vector3();
1113
1113
  for (let m = 0; m < o; m++)
1114
1114
  s[m].set(0, 0, 0);
1115
- Bt(this.m_Pattern.xSeams, t, n, r, !1), Rt(this.m_Pattern.zSeams, t, n, r, !1);
1115
+ bt(this.m_Pattern.xSeams, t, n, r, !1), Bt(this.m_Pattern.zSeams, t, n, r, !1);
1116
1116
  for (let m = 0; m < r - 1; m++) {
1117
1117
  const _ = m + 1;
1118
1118
  for (let p = 0; p < n - 1; p++) {
1119
- const M = p + 1, C = m * n + p, y = m * n + M, P = _ * n + p, B = _ * n + M, D = t[C], H = t[y], z = t[P], E = t[B];
1120
- jt(D, z, H, h), jt(E, H, z, u), c.addVectors(h, u), s[C].add(c), s[y].add(c), s[P].add(c), s[B].add(c);
1119
+ const M = p + 1, w = m * n + p, C = m * n + M, P = _ * n + p, b = _ * n + M, A = t[w], Z = t[C], D = t[P], U = t[b];
1120
+ qt(A, D, Z, h), qt(U, Z, D, u), c.addVectors(h, u), s[w].add(c), s[C].add(c), s[P].add(c), s[b].add(c);
1121
1121
  }
1122
1122
  }
1123
1123
  for (let m = 0; m < o; m++)
1124
1124
  s[m].divideScalar(i[m]).normalize();
1125
- Bt(this.m_Pattern.xSeams, s, n, r, !0), Rt(this.m_Pattern.zSeams, s, n, r, !0);
1125
+ bt(this.m_Pattern.xSeams, s, n, r, !0), Bt(this.m_Pattern.zSeams, s, n, r, !0);
1126
1126
  const d = this.m_Pattern.thickness / 2;
1127
1127
  for (let m = 0; m < o; m++) {
1128
1128
  const _ = s[m];
@@ -1130,7 +1130,7 @@ class $t {
1130
1130
  const p = t[m];
1131
1131
  e[m].copy(p).addScaledVector(_, d), e[m + o].copy(p).addScaledVector(_, -d);
1132
1132
  }
1133
- ue(this.m_Pattern.borders, e, s, n, r);
1133
+ le(this.m_Pattern.borders, e, s, n, r);
1134
1134
  const f = this.m_Geometry.getAttribute(
1135
1135
  "position"
1136
1136
  ), g = this.m_Geometry.getAttribute(
@@ -1145,7 +1145,7 @@ class $t {
1145
1145
  f.needsUpdate = !0, g.needsUpdate = !0, this.m_Geometry.computeBoundingBox(), this.m_Geometry.computeBoundingSphere();
1146
1146
  }
1147
1147
  }
1148
- class Re {
1148
+ class Be {
1149
1149
  constructor() {
1150
1150
  this.m_UsedMeshs = [], this.m_FreeMeshs = [], this.m_Meshs = /* @__PURE__ */ new Set();
1151
1151
  }
@@ -1164,7 +1164,7 @@ class Re {
1164
1164
  this.m_Meshs.clear();
1165
1165
  }
1166
1166
  }
1167
- class Ve {
1167
+ class Re {
1168
1168
  constructor(t) {
1169
1169
  this.m_UsedRenderers = [], this.m_FreeRenderers = [], this.m_Renderers = /* @__PURE__ */ new Set(), this.m_Ids = [], this.m_Root = t;
1170
1170
  }
@@ -1173,7 +1173,7 @@ class Ve {
1173
1173
  }
1174
1174
  get(t) {
1175
1175
  let e;
1176
- return this.m_FreeRenderers.length > 0 ? (e = this.m_FreeRenderers.pop(), e.reset(t)) : (e = new De(this.m_Root, t), this.m_Renderers.add(e)), this.m_UsedRenderers.push(e), this.m_Ids.push(e.id), e;
1176
+ return this.m_FreeRenderers.length > 0 ? (e = this.m_FreeRenderers.pop(), e.reset(t)) : (e = new ze(this.m_Root, t), this.m_Renderers.add(e)), this.m_UsedRenderers.push(e), this.m_Ids.push(e.id), e;
1177
1177
  }
1178
1178
  recycle() {
1179
1179
  for (const t of this.m_UsedRenderers)
@@ -1193,10 +1193,10 @@ class Ve {
1193
1193
  return t;
1194
1194
  }
1195
1195
  }
1196
- let ze = 1;
1197
- class De {
1196
+ let Ve = 1;
1197
+ class ze {
1198
1198
  constructor(t, e) {
1199
- this.m_Visibility = !0, this.m_PropertyBlocks = /* @__PURE__ */ new Map(), this.m_MaterialTextures = /* @__PURE__ */ new Map(), this.m_Id = ze++, this.m_Object3D = new l.Object3D(), this.m_Object3D.name = e, this.m_Mesh = new l.Mesh(
1199
+ this.m_Visibility = !0, this.m_PropertyBlocks = /* @__PURE__ */ new Map(), this.m_MaterialTextures = /* @__PURE__ */ new Map(), this.m_Id = Ve++, this.m_Object3D = new l.Object3D(), this.m_Object3D.name = e, this.m_Mesh = new l.Mesh(
1200
1200
  new l.BufferGeometry(),
1201
1201
  new l.MeshStandardMaterial()
1202
1202
  ), this.m_Object3D.add(this.m_Mesh), t.add(this.m_Object3D);
@@ -1298,20 +1298,20 @@ class De {
1298
1298
  e.dispose();
1299
1299
  }
1300
1300
  }
1301
- class Ie {
1301
+ class De {
1302
1302
  constructor(t, e, s = !1) {
1303
- this.m_Stack = [], this.m_SharedData = null, this.m_MeshFactory = t, this.m_Pattern = e, (this.m_UseSharedData = s) && (this.m_SharedData = new $t(this.m_MeshFactory.get(), this.m_Pattern), this.m_SharedData.updateMesh());
1303
+ this.m_Stack = [], this.m_SharedData = null, this.m_MeshFactory = t, this.m_Pattern = e, (this.m_UseSharedData = s) && (this.m_SharedData = new Qt(this.m_MeshFactory.get(), this.m_Pattern), this.m_SharedData.updateMesh());
1304
1304
  }
1305
1305
  get() {
1306
- return this.m_UseSharedData ? this.m_SharedData : this.m_Stack.length > 0 ? this.m_Stack.pop() : new $t(this.m_MeshFactory.get(), this.m_Pattern);
1306
+ return this.m_UseSharedData ? this.m_SharedData : this.m_Stack.length > 0 ? this.m_Stack.pop() : new Qt(this.m_MeshFactory.get(), this.m_Pattern);
1307
1307
  }
1308
1308
  free(t) {
1309
1309
  if (this.m_UseSharedData) throw new Error("Not implemented");
1310
1310
  this.m_Stack.push(t);
1311
1311
  }
1312
1312
  }
1313
- var Vt = /* @__PURE__ */ ((a) => (a[a.Next = 0] = "Next", a[a.Back = 1] = "Back", a))(Vt || {}), Ae = /* @__PURE__ */ ((a) => (a[a.Constant = 0] = "Constant", a[a.RandomBetweenTwoConstants = 1] = "RandomBetweenTwoConstants", a[a.Curve = 2] = "Curve", a[a.RandomBetweenTwoCurves = 3] = "RandomBetweenTwoCurves", a))(Ae || {}), He = /* @__PURE__ */ ((a) => (a[a.PaperIndexTime = 0] = "PaperIndexTime", a[a.TurnIndexTime = 1] = "TurnIndexTime", a))(He || {});
1314
- class Fe {
1313
+ var Rt = /* @__PURE__ */ ((a) => (a[a.Next = 0] = "Next", a[a.Back = 1] = "Back", a))(Rt || {}), Ie = /* @__PURE__ */ ((a) => (a[a.Constant = 0] = "Constant", a[a.RandomBetweenTwoConstants = 1] = "RandomBetweenTwoConstants", a[a.Curve = 2] = "Curve", a[a.RandomBetweenTwoCurves = 3] = "RandomBetweenTwoCurves", a))(Ie || {}), Ae = /* @__PURE__ */ ((a) => (a[a.PaperIndexTime = 0] = "PaperIndexTime", a[a.TurnIndexTime = 1] = "TurnIndexTime", a))(Ae || {});
1314
+ class He {
1315
1315
  constructor(t) {
1316
1316
  this.keys = t ? t.map((e) => ({ time: e.time, value: e.value })) : [];
1317
1317
  }
@@ -1333,10 +1333,10 @@ class Fe {
1333
1333
  return e[s - 1].value;
1334
1334
  }
1335
1335
  }
1336
- function Kt(a, t) {
1336
+ function $t(a, t) {
1337
1337
  return a + Math.random() * (t - a);
1338
1338
  }
1339
- class gt {
1339
+ class ft {
1340
1340
  constructor(t, e) {
1341
1341
  this.m_Mode = 0, this.m_Constant = 0, this.m_ConstantMin = 0, this.m_ConstantMax = 0, this.m_Curve = null, this.m_CurveMin = null, this.m_CurveMax = null, this.m_CurveTimeMode = 0, t !== void 0 && (e === void 0 ? (this.m_Constant = t, this.m_ConstantMin = t, this.m_ConstantMax = t, this.m_Curve = null, this.m_CurveMin = null, this.m_CurveMax = null, this.m_Mode = 0, this.m_CurveTimeMode = 0) : (this.m_Constant = 0, this.m_ConstantMin = t, this.m_ConstantMax = e, this.m_Curve = null, this.m_CurveMin = null, this.m_CurveMax = null, this.m_Mode = 1, this.m_CurveTimeMode = 0));
1342
1342
  }
@@ -1391,12 +1391,12 @@ class gt {
1391
1391
  }
1392
1392
  /** A value based on a curve. */
1393
1393
  static fromCurve(t, e) {
1394
- const s = new gt();
1394
+ const s = new ft();
1395
1395
  return s.m_Constant = 0, s.m_ConstantMin = 0, s.m_ConstantMax = 0, s.m_Curve = t, s.m_CurveMin = null, s.m_CurveMax = null, s.m_Mode = 2, s.m_CurveTimeMode = e, s;
1396
1396
  }
1397
1397
  /** A random value generated between two curves. */
1398
1398
  static fromCurveRange(t, e, s) {
1399
- const i = new gt();
1399
+ const i = new ft();
1400
1400
  return i.m_Constant = 0, i.m_ConstantMin = 0, i.m_ConstantMax = 0, i.m_Curve = null, i.m_CurveMin = t, i.m_CurveMax = e, i.m_Mode = 3, i.m_CurveTimeMode = s, i;
1401
1401
  }
1402
1402
  // ── Internal API ────────────────────────────────────────────────────────
@@ -1404,12 +1404,12 @@ class gt {
1404
1404
  getValue(t, e) {
1405
1405
  if (this.m_Mode === 0) return this.m_Constant;
1406
1406
  if (this.m_Mode === 1)
1407
- return Kt(this.m_ConstantMin, this.m_ConstantMax);
1407
+ return $t(this.m_ConstantMin, this.m_ConstantMax);
1408
1408
  const s = this.m_CurveTimeMode === 0 ? t : e;
1409
1409
  if (this.m_Mode === 2)
1410
1410
  return this.m_Curve.evaluate(s);
1411
1411
  if (this.m_Mode === 3)
1412
- return Kt(
1412
+ return $t(
1413
1413
  this.m_CurveMin.evaluate(s),
1414
1414
  this.m_CurveMax.evaluate(s)
1415
1415
  );
@@ -1429,19 +1429,19 @@ class gt {
1429
1429
  }
1430
1430
  for (let h = 0; h < n; h++) {
1431
1431
  let u = i[h].time, c = i[h].value;
1432
- u = ht(r, o, u), c = q(c, e, s), i[h].time = u, i[h].value = c;
1432
+ u = at(r, o, u), c = q(c, e, s), i[h].time = u, i[h].value = c;
1433
1433
  }
1434
- return new Fe(i);
1434
+ return new He(i);
1435
1435
  }
1436
1436
  // ── Value-type clone ────────────────────────────────────────────────────
1437
1437
  clone() {
1438
- const t = new gt();
1438
+ const t = new ft();
1439
1439
  return t.m_Mode = this.m_Mode, t.m_Constant = this.m_Constant, t.m_ConstantMin = this.m_ConstantMin, t.m_ConstantMax = this.m_ConstantMax, t.m_Curve = this.m_Curve, t.m_CurveMin = this.m_CurveMin, t.m_CurveMax = this.m_CurveMax, t.m_CurveTimeMode = this.m_CurveTimeMode, t;
1440
1440
  }
1441
1441
  }
1442
1442
  const et = class et {
1443
1443
  constructor() {
1444
- this.m_Mode = wt.Surface, this.m_Twist = new gt(), this.m_Bend = new gt(1), this.m_Duration = new gt(0.5);
1444
+ this.m_Mode = Ct.Surface, this.m_Twist = new ft(), this.m_Bend = new ft(1), this.m_Duration = new ft(0.5);
1445
1445
  }
1446
1446
  // ── Properties ──────────────────────────────────────────────────────────
1447
1447
  get mode() {
@@ -1508,30 +1508,30 @@ const et = class et {
1508
1508
  }
1509
1509
  };
1510
1510
  et.kMinTwist = -1, et.kMaxTwist = 1, et.kMinBend = 0, et.kMaxBend = 1, et.kMinDuration = 0, et.kMaxDuration = 5;
1511
- let Jt = et;
1512
- class me extends Error {
1511
+ let Kt = et;
1512
+ class ue extends Error {
1513
1513
  constructor() {
1514
1514
  super(
1515
1515
  "The book's height exceeds the maximum limit. Please consider using thinner paper, increasing the width of the paper, or reducing the number of pages."
1516
1516
  );
1517
1517
  }
1518
1518
  }
1519
- const lt = class lt extends l.Group {
1519
+ const ct = class ct extends l.Group {
1520
1520
  // ── Constructor ────────────────────────────────────────────────────────
1521
1521
  constructor(t) {
1522
- super(), this.m_Content = null, this.m_Binding = null, this.m_InitialOpenProgress = 0, this.m_BuildOnAwake = !0, this.m_CastShadows = !0, this.m_AlignToGround = !1, this.m_HideBinder = !1, this.m_ReduceShadows = !1, this.m_ReduceSubMeshes = !1, this.m_ReduceOverdraw = !1, this.m_CoverPaperSetup = new ft({
1522
+ super(), this.m_Content = null, this.m_Binding = null, this.m_InitialOpenProgress = 0, this.m_BuildOnAwake = !0, this.m_CastShadows = !0, this.m_AlignToGround = !1, this.m_HideBinder = !1, this.m_ReduceShadows = !1, this.m_ReduceSubMeshes = !1, this.m_ReduceOverdraw = !1, this.m_CoverPaperSetup = new _t({
1523
1523
  color: new l.Color(1, 0, 0),
1524
1524
  width: 2.1,
1525
1525
  height: 3.1,
1526
1526
  thickness: 0.04,
1527
1527
  stiffness: 0.5
1528
- }), this.m_PagePaperSetup = new ft({
1528
+ }), this.m_PagePaperSetup = new _t({
1529
1529
  color: new l.Color(1, 1, 1),
1530
1530
  width: 2,
1531
1531
  height: 3,
1532
1532
  thickness: 0.02,
1533
1533
  stiffness: 0.2
1534
- }), this.m_Root = null, this.m_IsBuilt = !1, this.m_HasCover = !1, this.m_RendererFactory = null, this.m_MeshFactory = null, this.m_Bound = null, this.m_Papers = [], this.m_SelectedPaper = null, this.m_Direction = mt.LeftToRight, this.m_AutoTurnQueue = [], this.m_AutoTurnTimer = 0, this.m_AutoTurningEndTime = -1, this.m_CurrentTime = 0, this.m_CoverPaperCount = 0, this.m_PagePaperCount = 0, this.m_TotalThickness = 0, this.m_MinPaperWidth = 0, this.m_MinPaperHeight = 0, this.m_MinPaperThickness = 0, this.m_MaxPaperThickness = 0, this.m_RendererIds = [], this.m_WasIdle = !1, this.m_ContentDirty = !1, this.m_StructuralDirty = !1, this.m_AppliedDirection = void 0, this._frontPapersCache = null, t && (t.content && (this.m_Content = t.content), t.binding && (this.m_Binding = t.binding), t.initialOpenProgress !== void 0 && (this.m_InitialOpenProgress = l.MathUtils.clamp(t.initialOpenProgress, 0, 1)), t.buildOnAwake !== void 0 && (this.m_BuildOnAwake = t.buildOnAwake), t.castShadows !== void 0 && (this.m_CastShadows = t.castShadows), t.alignToGround !== void 0 && (this.m_AlignToGround = t.alignToGround), t.hideBinder !== void 0 && (this.m_HideBinder = t.hideBinder), t.reduceShadows !== void 0 && (this.m_ReduceShadows = t.reduceShadows), t.reduceSubMeshes !== void 0 && (this.m_ReduceSubMeshes = t.reduceSubMeshes), t.reduceOverdraw !== void 0 && (this.m_ReduceOverdraw = t.reduceOverdraw), t.coverPaperSetup && (this.m_CoverPaperSetup = new ft({
1534
+ }), this.m_Root = null, this.m_IsBuilt = !1, this.m_HasCover = !1, this.m_RendererFactory = null, this.m_MeshFactory = null, this.m_Bound = null, this.m_Papers = [], this.m_SelectedPaper = null, this.m_Direction = ut.LeftToRight, this.m_AutoTurnQueue = [], this.m_AutoTurnTimer = 0, this.m_AutoTurningEndTime = -1, this.m_CurrentTime = 0, this.m_CoverPaperCount = 0, this.m_PagePaperCount = 0, this.m_TotalThickness = 0, this.m_MinPaperWidth = 0, this.m_MinPaperHeight = 0, this.m_MinPaperThickness = 0, this.m_MaxPaperThickness = 0, this.m_RendererIds = [], this.m_WasIdle = !1, this.m_ContentDirty = !1, this.m_StructuralDirty = !1, this.m_AppliedDirection = void 0, this._frontPapersCache = null, t && (t.content && (this.m_Content = t.content), t.binding && (this.m_Binding = t.binding), t.initialOpenProgress !== void 0 && (this.m_InitialOpenProgress = l.MathUtils.clamp(t.initialOpenProgress, 0, 1)), t.buildOnAwake !== void 0 && (this.m_BuildOnAwake = t.buildOnAwake), t.castShadows !== void 0 && (this.m_CastShadows = t.castShadows), t.alignToGround !== void 0 && (this.m_AlignToGround = t.alignToGround), t.hideBinder !== void 0 && (this.m_HideBinder = t.hideBinder), t.reduceShadows !== void 0 && (this.m_ReduceShadows = t.reduceShadows), t.reduceSubMeshes !== void 0 && (this.m_ReduceSubMeshes = t.reduceSubMeshes), t.reduceOverdraw !== void 0 && (this.m_ReduceOverdraw = t.reduceOverdraw), t.coverPaperSetup && (this.m_CoverPaperSetup = new _t({
1535
1535
  color: t.coverPaperSetup.color ?? new l.Color(1, 0, 0),
1536
1536
  width: t.coverPaperSetup.width ?? 2.1,
1537
1537
  height: t.coverPaperSetup.height ?? 3.1,
@@ -1539,7 +1539,7 @@ const lt = class lt extends l.Group {
1539
1539
  stiffness: t.coverPaperSetup.stiffness ?? 0.5,
1540
1540
  rigid: t.coverPaperSetup.rigid ?? !1,
1541
1541
  material: t.coverPaperSetup.material ?? null
1542
- })), t.pagePaperSetup && (this.m_PagePaperSetup = new ft({
1542
+ })), t.pagePaperSetup && (this.m_PagePaperSetup = new _t({
1543
1543
  color: t.pagePaperSetup.color ?? new l.Color(1, 1, 1),
1544
1544
  width: t.pagePaperSetup.width ?? 2,
1545
1545
  height: t.pagePaperSetup.height ?? 3,
@@ -1547,10 +1547,10 @@ const lt = class lt extends l.Group {
1547
1547
  stiffness: t.pagePaperSetup.stiffness ?? 0.2,
1548
1548
  rigid: t.pagePaperSetup.rigid ?? !1,
1549
1549
  material: t.pagePaperSetup.material ?? null
1550
- }))), lt.s_Instances.add(this), lt.s_InstancesArray = null;
1550
+ }))), ct.s_Instances.add(this), ct.s_InstancesArray = null;
1551
1551
  }
1552
1552
  static get instances() {
1553
- return lt.s_InstancesArray === null && (lt.s_InstancesArray = [...lt.s_Instances]), lt.s_InstancesArray;
1553
+ return ct.s_InstancesArray === null && (ct.s_InstancesArray = [...ct.s_Instances]), ct.s_InstancesArray;
1554
1554
  }
1555
1555
  // ── Internal accessors ─────────────────────────────────────────────────
1556
1556
  get minPaperWidth() {
@@ -1616,7 +1616,7 @@ const lt = class lt extends l.Group {
1616
1616
  }
1617
1617
  set coverPaperSetup(t) {
1618
1618
  const e = this.m_CoverPaperSetup, s = t.width ?? e.width, i = t.height ?? e.height, n = t.thickness ?? e.thickness, r = t.stiffness ?? e.stiffness, o = t.rigid ?? e.rigid;
1619
- e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_CoverPaperSetup = new ft({
1619
+ e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_CoverPaperSetup = new _t({
1620
1620
  color: t.color ?? e.color,
1621
1621
  width: s,
1622
1622
  height: i,
@@ -1631,7 +1631,7 @@ const lt = class lt extends l.Group {
1631
1631
  }
1632
1632
  set pagePaperSetup(t) {
1633
1633
  const e = this.m_PagePaperSetup, s = t.width ?? e.width, i = t.height ?? e.height, n = t.thickness ?? e.thickness, r = t.stiffness ?? e.stiffness, o = t.rigid ?? e.rigid;
1634
- e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_PagePaperSetup = new ft({
1634
+ e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_PagePaperSetup = new _t({
1635
1635
  color: t.color ?? e.color,
1636
1636
  width: s,
1637
1637
  height: i,
@@ -1730,7 +1730,7 @@ const lt = class lt extends l.Group {
1730
1730
  }
1731
1731
  getActivePaperSideIndices(t) {
1732
1732
  if (t.clear(), !this.m_IsBuilt) return;
1733
- const e = this.m_Content.direction === mt.RightToLeft, s = this.m_Papers.length, i = (n, r) => {
1733
+ const e = this.m_Content.direction === ut.RightToLeft, s = this.m_Papers.length, i = (n, r) => {
1734
1734
  let o = n * 2;
1735
1735
  r && o++, e && (o = s * 2 - o - 1), t.add(o);
1736
1736
  };
@@ -1777,7 +1777,7 @@ const lt = class lt extends l.Group {
1777
1777
  startAutoTurning(t, e, s = 1, i = 0) {
1778
1778
  if (!this.m_IsBuilt) return !1;
1779
1779
  this.cancelPendingAutoTurns();
1780
- const n = typeof i == "number" ? new gt(i) : i;
1780
+ const n = typeof i == "number" ? new ft(i) : i;
1781
1781
  if (s = Math.min(s, this.getMaxAutoTurnCount(t)), s === 0) return !1;
1782
1782
  for (let r = 0; r < s && this.canAutoTurn(t); r++) {
1783
1783
  const o = r / (s - 1 || 1), h = this.getAutoTurnPaperIndexTime(t), u = r > 0 ? n.getValue(h, o) : 0, c = e.getModeValue(), d = e.getTwistValue(h, o), f = e.getBendValue(h, o), g = e.getDurationValue(h, o);
@@ -1809,7 +1809,7 @@ const lt = class lt extends l.Group {
1809
1809
  if (this.isTurning) return null;
1810
1810
  const e = this.getFrontPapers();
1811
1811
  if (e.length > 0) {
1812
- const s = t === Vt.Next, i = e[s ? e.length - 1 : 0];
1812
+ const s = t === Rt.Next, i = e[s ? e.length - 1 : 0];
1813
1813
  if (!i.isTurning && !i.isFalling && s === i.isOnRightStack)
1814
1814
  return i;
1815
1815
  }
@@ -1819,7 +1819,7 @@ const lt = class lt extends l.Group {
1819
1819
  const e = this.getAutoTurnPaper(t);
1820
1820
  if (e === null) return 0;
1821
1821
  let s = 1;
1822
- return t === Vt.Next ? s += this.m_Papers.length - e.index - 1 : s += e.index, s;
1822
+ return t === Rt.Next ? s += this.m_Papers.length - e.index - 1 : s += e.index, s;
1823
1823
  }
1824
1824
  canAutoTurn(t) {
1825
1825
  return this.getAutoTurnPaper(t) !== null;
@@ -1835,7 +1835,7 @@ const lt = class lt extends l.Group {
1835
1835
  */
1836
1836
  init() {
1837
1837
  var t;
1838
- lt.s_Instances.add(this), lt.s_InstancesArray = null, this.hardClear(), this.m_BuildOnAwake && (this.build(), this.m_ContentDirty = !1, this.m_StructuralDirty = !1, this.m_AppliedDirection = (t = this.m_Content) == null ? void 0 : t.direction);
1838
+ ct.s_Instances.add(this), ct.s_InstancesArray = null, this.hardClear(), this.m_BuildOnAwake && (this.build(), this.m_ContentDirty = !1, this.m_StructuralDirty = !1, this.m_AppliedDirection = (t = this.m_Content) == null ? void 0 : t.direction);
1839
1839
  }
1840
1840
  /**
1841
1841
  * Call every frame with delta time in seconds.
@@ -1872,29 +1872,29 @@ const lt = class lt extends l.Group {
1872
1872
  * it will never be garbage collected.
1873
1873
  */
1874
1874
  dispose() {
1875
- lt.s_Instances.delete(this), lt.s_InstancesArray = null, this.hardClear();
1875
+ ct.s_Instances.delete(this), ct.s_InstancesArray = null, this.hardClear();
1876
1876
  }
1877
1877
  // ── Build ─────────────────────────────────────────────────────────────
1878
1878
  build() {
1879
- var A;
1879
+ var F;
1880
1880
  if (this.clear(), this.m_Content === null || this.m_Content.isEmpty || this.m_Binding === null) return;
1881
- if (this.m_MeshFactory === null && (this.m_MeshFactory = new Re()), this.m_RendererFactory === null) {
1882
- const T = new l.Object3D();
1883
- T.name = "Root", this.add(T), this.m_Root = T, this.m_RendererFactory = new Ve(this.m_Root);
1881
+ if (this.m_MeshFactory === null && (this.m_MeshFactory = new Be()), this.m_RendererFactory === null) {
1882
+ const k = new l.Object3D();
1883
+ k.name = "Root", this.add(k), this.m_Root = k, this.m_RendererFactory = new Re(this.m_Root);
1884
1884
  }
1885
1885
  this.m_Direction = this.m_Content.direction;
1886
1886
  const t = this.m_Direction > 1 ? Math.PI / 2 : 0;
1887
1887
  this.m_Root.rotation.set(0, t, 0), this.m_CoverPaperSetup.bookDirection = this.m_Content.direction, this.m_PagePaperSetup.bookDirection = this.m_Content.direction, this.m_PagePaperSetup.height < this.m_CoverPaperSetup.height ? (this.m_CoverPaperSetup.margin = 0, this.m_PagePaperSetup.margin = (this.m_CoverPaperSetup.height - this.m_PagePaperSetup.height) / 2) : (this.m_CoverPaperSetup.margin = (this.m_PagePaperSetup.height - this.m_CoverPaperSetup.height) / 2, this.m_PagePaperSetup.margin = 0);
1888
- const e = new qt(this.m_CoverPaperSetup), s = new qt(this.m_PagePaperSetup);
1888
+ const e = new Gt(this.m_CoverPaperSetup), s = new Gt(this.m_PagePaperSetup);
1889
1889
  this.m_Content.init(this);
1890
1890
  let i = this.m_Content.coverContents, n = this.m_Content.pageContents, r = this.m_InitialOpenProgress;
1891
1891
  this.m_Content.direction % 2 !== 0 && (i = [...i].reverse(), n = [...n].reverse(), r = 1 - r), this.m_HasCover = i.length > 0, this.m_CoverPaperCount = Math.floor(i.length / 2), this.m_PagePaperCount = Math.floor(n.length / 2);
1892
1892
  const o = this.m_CoverPaperCount + this.m_PagePaperCount, h = Math.floor(i.length / 4);
1893
1893
  let u = 0, c = 0, d = 0;
1894
1894
  this.m_Papers = new Array(o);
1895
- for (let T = 0; T < o; T++) {
1896
- const b = this.m_HasCover && (T < h || T >= o - h), Q = this.m_RendererFactory.get("Paper"), F = this.m_Papers[T] = new Be(b, T, this, Q);
1897
- F.renderer.castShadows = this.m_CastShadows, T < Math.round(l.MathUtils.lerp(0, o, r)) && (F.transform.scale.set(-1, 1, 1), F.setTime(1)), b ? (F.setContentData(i[c++], i[c++], T > h), F.setMaterialData(e), F.setPaperSetup(this.m_CoverPaperSetup)) : (F.setContentData(n[u++], n[u++]), F.setMaterialData(s), F.setPaperSetup(this.m_PagePaperSetup)), d += F.thickness;
1895
+ for (let k = 0; k < o; k++) {
1896
+ const B = this.m_HasCover && (k < h || k >= o - h), Y = this.m_RendererFactory.get("Paper"), X = this.m_Papers[k] = new be(B, k, this, Y);
1897
+ X.renderer.castShadows = this.m_CastShadows, k < Math.round(l.MathUtils.lerp(0, o, r)) && (X.transform.scale.set(-1, 1, 1), X.setTime(1)), B ? (X.setContentData(i[c++], i[c++], k > h), X.setMaterialData(e), X.setPaperSetup(this.m_CoverPaperSetup)) : (X.setContentData(n[u++], n[u++]), X.setMaterialData(s), X.setPaperSetup(this.m_PagePaperSetup)), d += X.thickness;
1898
1898
  }
1899
1899
  this.m_TotalThickness = d;
1900
1900
  const f = this.m_Papers[0].thickness, g = this.m_Papers[Math.floor(o / 2)].thickness;
@@ -1908,16 +1908,16 @@ const lt = class lt extends l.Group {
1908
1908
  this.m_RendererFactory,
1909
1909
  this.m_MeshFactory
1910
1910
  ), this.m_Bound.binderRenderer.setVisibility(!this.m_HideBinder);
1911
- const C = this.m_ReduceOverdraw && n.length > 0, y = this.m_ReduceSubMeshes, P = this.createPaperMeshDataPool(this.m_PagePaperSetup, !0, y), B = C ? this.createPaperMeshDataPool(this.m_PagePaperSetup, !0, y, !0) : null, D = this.createPaperMeshDataPool(this.m_PagePaperSetup, !1), H = this.createPaperMeshDataPool(this.m_CoverPaperSetup, !0), z = this.createPaperMeshDataPool(this.m_CoverPaperSetup, !1), E = Math.floor(o / 2) - 1, W = E + 1, N = ((A = this.m_Bound) == null ? void 0 : A.bindingType) === "staple";
1912
- for (let T = 0; T < o; T++) {
1913
- const b = this.m_Papers[T];
1914
- T !== 0 && (b.prev = this.m_Papers[T - 1]), T !== o - 1 && (b.next = this.m_Papers[T + 1]), b.noHole = N && (T === E || T === W), b.isCover ? b.setMeshData(H.get(), null, z) : b.setMeshData(
1911
+ const w = this.m_ReduceOverdraw && n.length > 0, C = this.m_ReduceSubMeshes, P = this.createPaperMeshDataPool(this.m_PagePaperSetup, !0, C), b = w ? this.createPaperMeshDataPool(this.m_PagePaperSetup, !0, C, !0) : null, A = this.createPaperMeshDataPool(this.m_PagePaperSetup, !1), Z = this.createPaperMeshDataPool(this.m_CoverPaperSetup, !0), D = this.createPaperMeshDataPool(this.m_CoverPaperSetup, !1), U = Math.floor(o / 2) - 1, E = U + 1, N = ((F = this.m_Bound) == null ? void 0 : F.bindingType) === "staple";
1912
+ for (let k = 0; k < o; k++) {
1913
+ const B = this.m_Papers[k];
1914
+ k !== 0 && (B.prev = this.m_Papers[k - 1]), k !== o - 1 && (B.next = this.m_Papers[k + 1]), B.noHole = N && (k === U || k === E), B.isCover ? B.setMeshData(Z.get(), null, D) : B.setMeshData(
1915
1915
  P.get(),
1916
- (B == null ? void 0 : B.get()) ?? null,
1917
- D
1916
+ (b == null ? void 0 : b.get()) ?? null,
1917
+ A
1918
1918
  );
1919
1919
  }
1920
- this.m_IsBuilt = !0, this.m_RendererIds = this.m_RendererFactory.ids, this._frontPapersCache = null, this.update(0), this.m_CoverPaperSetup.bookDirection = mt.LeftToRight, this.m_PagePaperSetup.bookDirection = mt.LeftToRight;
1920
+ this.m_IsBuilt = !0, this.m_RendererIds = this.m_RendererFactory.ids, this._frontPapersCache = null, this.update(0), this.m_CoverPaperSetup.bookDirection = ut.LeftToRight, this.m_PagePaperSetup.bookDirection = ut.LeftToRight;
1921
1921
  }
1922
1922
  /**
1923
1923
  * Clears the built state of the book.
@@ -1942,7 +1942,7 @@ const lt = class lt extends l.Group {
1942
1942
  i,
1943
1943
  s
1944
1944
  );
1945
- return new Ie(
1945
+ return new De(
1946
1946
  this.m_MeshFactory,
1947
1947
  r,
1948
1948
  e && this.m_Bound.useSharedMeshDataForLowpoly
@@ -2031,15 +2031,15 @@ const lt = class lt extends l.Group {
2031
2031
  s.frontContent.setActive(t.has(s.frontContent)), s.backContent.setActive(t.has(s.backContent));
2032
2032
  }
2033
2033
  };
2034
- lt.s_Instances = /* @__PURE__ */ new Set(), lt.s_InstancesArray = null;
2035
- let zt = lt;
2036
- class de {
2034
+ ct.s_Instances = /* @__PURE__ */ new Set(), ct.s_InstancesArray = null;
2035
+ let Vt = ct;
2036
+ class me {
2037
2037
  constructor() {
2038
2038
  this.baseXArray = [], this.baseZArray = [], this.baseXOffset = 0, this.baseVertexCount = 0, this.xSeams = [], this.zSeams = [], this.xNoneSeamIndexes = [], this.borders = [], this.texcoords = [], this.weights = [], this.triangles = [], this.frontTriangles = [], this.backTriangles = [], this.borderTriangles = [], this.vertexCount = 0, this.subMeshCount = 0, this.size = new l.Vector2(), this.thickness = 0;
2039
2039
  }
2040
2040
  }
2041
- const _e = Object.freeze(new l.Vector4(1, 1, 0, 0));
2042
- class us {
2041
+ const de = Object.freeze(new l.Vector4(1, 1, 0, 0));
2042
+ class ls {
2043
2043
  constructor() {
2044
2044
  this.m_BookContent = null, this.m_IsActive = !1, this.onActiveChangedCallback = null;
2045
2045
  }
@@ -2050,7 +2050,7 @@ class us {
2050
2050
  return this.m_IsActive;
2051
2051
  }
2052
2052
  get textureST() {
2053
- return _e;
2053
+ return de;
2054
2054
  }
2055
2055
  get isShareable() {
2056
2056
  return !0;
@@ -2074,7 +2074,7 @@ class us {
2074
2074
  this.m_IsActive !== t && (this.m_IsActive = t, this.onActiveChanged(), (e = this.onActiveChangedCallback) == null || e.call(this));
2075
2075
  }
2076
2076
  }
2077
- class te {
2077
+ class Jt {
2078
2078
  constructor(t, e) {
2079
2079
  this.m_Texture = t, this.m_TextureST = e ?? new l.Vector4(1, 1, 0, 0);
2080
2080
  }
@@ -2082,7 +2082,7 @@ class te {
2082
2082
  return this.m_Texture;
2083
2083
  }
2084
2084
  get textureST() {
2085
- return this.m_Texture ? this.m_TextureST : _e;
2085
+ return this.m_Texture ? this.m_TextureST : de;
2086
2086
  }
2087
2087
  isPointOverUI(t) {
2088
2088
  return !1;
@@ -2092,9 +2092,9 @@ class te {
2092
2092
  setActive(t) {
2093
2093
  }
2094
2094
  }
2095
- class ms {
2095
+ class us {
2096
2096
  constructor() {
2097
- this.m_Direction = mt.LeftToRight, this.m_Covers = [null, null, null, null], this.m_Pages = [null, null, null, null, null, null, null, null], this.m_Book = null, this._cachedCovers = null, this._cachedPages = null;
2097
+ this.m_Direction = ut.LeftToRight, this.m_Covers = [null, null, null, null], this.m_Pages = [null, null, null, null, null, null, null, null], this.m_Book = null, this._cachedCovers = null, this._cachedPages = null;
2098
2098
  }
2099
2099
  get coverCount4() {
2100
2100
  return this.nextMultipleOf4(this.m_Covers.length);
@@ -2147,11 +2147,11 @@ class ms {
2147
2147
  getContent(t) {
2148
2148
  if (t !== null) {
2149
2149
  if (t instanceof l.Texture)
2150
- return new te(t);
2150
+ return new Jt(t);
2151
2151
  if (typeof t.init == "function")
2152
2152
  return t;
2153
2153
  }
2154
- return new te(null);
2154
+ return new Jt(null);
2155
2155
  }
2156
2156
  init(t) {
2157
2157
  this.m_Book = t, this._cachedCovers = null, this._cachedPages = null;
@@ -2199,14 +2199,14 @@ class ms {
2199
2199
  return !this.isCoverPaperSideIndex(t);
2200
2200
  }
2201
2201
  }
2202
- class ds {
2202
+ class ms {
2203
2203
  constructor(t, e) {
2204
2204
  this.enabled = !0, this.m_Raycaster = new l.Raycaster(), this.m_Mouse = new l.Vector2(), this.m_SelectedBook = null, this.m_IsPointerDown = !1, this.m_OnPointerDown = (s) => {
2205
2205
  var n;
2206
2206
  if (!this.enabled || s.button !== 0) return;
2207
2207
  this.m_IsPointerDown = !0;
2208
2208
  const i = this.m_GetRay(s);
2209
- for (const r of zt.instances)
2209
+ for (const r of Vt.instances)
2210
2210
  if (r.startTurning(i)) {
2211
2211
  this.m_SelectedBook = r, (n = this.onTurnStart) == null || n.call(this, r);
2212
2212
  break;
@@ -2226,9 +2226,9 @@ class ds {
2226
2226
  return this.m_Mouse.x = (t.clientX - e.left) / e.width * 2 - 1, this.m_Mouse.y = -((t.clientY - e.top) / e.height) * 2 + 1, this.m_Raycaster.setFromCamera(this.m_Mouse, this.m_Camera), this.m_Raycaster.ray;
2227
2227
  }
2228
2228
  }
2229
- class fe {
2229
+ class _e {
2230
2230
  }
2231
- class ge {
2231
+ class fe {
2232
2232
  constructor(t, e) {
2233
2233
  this.bindingType = "", this.m_Book = t, this.m_Root = e;
2234
2234
  }
@@ -2236,7 +2236,7 @@ class ge {
2236
2236
  dispose() {
2237
2237
  }
2238
2238
  }
2239
- function Dt(a, t, e, s) {
2239
+ function zt(a, t, e, s) {
2240
2240
  const i = 1 - s;
2241
2241
  return new l.Vector3(
2242
2242
  i * i * a.x + 2 * i * s * t.x + s * s * e.x,
@@ -2244,14 +2244,14 @@ function Dt(a, t, e, s) {
2244
2244
  i * i * a.z + 2 * i * s * t.z + s * s * e.z
2245
2245
  );
2246
2246
  }
2247
- function ee(a, t) {
2247
+ function te(a, t) {
2248
2248
  return a++, a === t ? 0 : a;
2249
2249
  }
2250
- function Oe(a, t) {
2250
+ function Fe(a, t) {
2251
2251
  return a === 0 ? t - 1 : a - 1;
2252
2252
  }
2253
- const Ze = 0.01, Xe = 0.1, Le = 0.04, Ne = 0.4, Ue = 2, Ee = 10, We = 0, Ge = 5;
2254
- function qe(a, t) {
2253
+ const Oe = 0.01, Ze = 0.1, Xe = 0.04, Le = 0.4, Ne = 2, Ue = 10, Ee = 0, We = 5;
2254
+ function Ge(a, t) {
2255
2255
  const e = a.clone().normalize();
2256
2256
  if (e.lengthSq() === 0) return new l.Quaternion();
2257
2257
  let s = new l.Vector3().crossVectors(t, e);
@@ -2263,7 +2263,7 @@ function qe(a, t) {
2263
2263
  const i = new l.Vector3().crossVectors(e, s).normalize(), n = new l.Matrix4().makeBasis(s, i, e);
2264
2264
  return new l.Quaternion().setFromRotationMatrix(n);
2265
2265
  }
2266
- class je {
2266
+ class qe {
2267
2267
  constructor() {
2268
2268
  this._material = null, this._color = new l.Color(1, 1, 1), this._thickness = 0.05, this._crown = 0.2, this._margin = 0.1, this._count = 4, this._quality = 3;
2269
2269
  }
@@ -2283,38 +2283,38 @@ class je {
2283
2283
  return this._thickness;
2284
2284
  }
2285
2285
  set thickness(t) {
2286
- this._thickness = q(t, Ze, Xe);
2286
+ this._thickness = q(t, Oe, Ze);
2287
2287
  }
2288
2288
  get margin() {
2289
2289
  return this._margin;
2290
2290
  }
2291
2291
  set margin(t) {
2292
- this._margin = at(t);
2292
+ this._margin = ot(t);
2293
2293
  }
2294
2294
  get crown() {
2295
2295
  return this._crown;
2296
2296
  }
2297
2297
  set crown(t) {
2298
- this._crown = q(t, Le, Ne);
2298
+ this._crown = q(t, Xe, Le);
2299
2299
  }
2300
2300
  get count() {
2301
2301
  return this._count;
2302
2302
  }
2303
2303
  set count(t) {
2304
- this._count = q(t, Ue, Ee);
2304
+ this._count = q(t, Ne, Ue);
2305
2305
  }
2306
2306
  get quality() {
2307
2307
  return this._quality;
2308
2308
  }
2309
2309
  set quality(t) {
2310
- this._quality = q(t, We, Ge);
2310
+ this._quality = q(t, Ee, We);
2311
2311
  }
2312
2312
  }
2313
- class Ye extends ge {
2313
+ class je extends fe {
2314
2314
  // ── Constructor ────────────────────────────────────────────────────────
2315
2315
  constructor(t, e, s, i, n) {
2316
2316
  if (super(s, i), this.bindingType = "staple", this.m_StapleMargin = 0, this.m_StapleThickness = 0, this.m_BindingRadius = 0, this.m_BindingMidSpace = 0, this.m_StackHeight = 0, this.m_BindingVertexCount = 0, this.useSharedMeshDataForLowpoly = !1, this._binderRendererAdapter = null, this.m_Quality = t, s.totalThickness * 1.25 > s.minPaperWidth)
2317
- throw new me();
2317
+ throw new ue();
2318
2318
  const r = this.m_Book.coverPaperSetup, o = this.m_Book.pagePaperSetup, h = new l.BufferGeometry();
2319
2319
  this.updateStapleMesh(e, h);
2320
2320
  const u = n ?? new l.MeshStandardMaterial({
@@ -2336,11 +2336,11 @@ class Ye extends ge {
2336
2336
  this.updateRootPosition();
2337
2337
  }
2338
2338
  get binderRenderer() {
2339
- return this._binderRendererAdapter || (this._binderRendererAdapter = new Qe(this.stapleMesh)), this._binderRendererAdapter;
2339
+ return this._binderRendererAdapter || (this._binderRendererAdapter = new Ye(this.stapleMesh)), this._binderRendererAdapter;
2340
2340
  }
2341
2341
  // ── updateStapleMesh ──────────────────────────────────────────────────
2342
2342
  updateStapleMesh(t, e) {
2343
- this.m_StapleThickness = t.thickness, this.m_StackHeight = this.m_Book.totalThickness, this.m_BindingMidSpace = this.m_StapleThickness * 1.75, this.m_BindingRadius = (this.m_StackHeight + this.m_BindingMidSpace) / 2 / Math.sin(45 * ot), this.m_StackHeight += this.m_BindingMidSpace;
2343
+ this.m_StapleThickness = t.thickness, this.m_StackHeight = this.m_Book.totalThickness, this.m_BindingMidSpace = this.m_StapleThickness * 1.75, this.m_BindingRadius = (this.m_StackHeight + this.m_BindingMidSpace) / 2 / Math.sin(45 * nt), this.m_StackHeight += this.m_BindingMidSpace;
2344
2344
  let s = t.crown;
2345
2345
  s = Math.max(s, this.m_StapleThickness * 4);
2346
2346
  const i = this.m_StapleThickness * 0.5, n = Math.max(
@@ -2355,91 +2355,91 @@ class Ye extends ge {
2355
2355
  const u = t.quality / 5, c = Math.floor(G(4, 20, u)), d = Math.floor(G(4, 10, u)), f = Math.floor(G(3, 10, u)), g = this.m_StapleThickness / 2, m = g * 2.5, _ = 0.9, p = g * 1;
2356
2356
  let M = s / 2 * _;
2357
2357
  M = Math.max(M, p * 2);
2358
- let C = 0;
2359
- C += this.m_Book.totalThickness / 2, C += g;
2360
- const y = -(this.m_Book.papers[0].thickness / 2 + g), P = [];
2358
+ let w = 0;
2359
+ w += this.m_Book.totalThickness / 2, w += g;
2360
+ const C = -(this.m_Book.papers[0].thickness / 2 + g), P = [];
2361
2361
  {
2362
- for (let U = 0; U < d; U++) {
2363
- const w = U / (d - 1), L = G(-90, -180, w) * ot, S = new l.Vector3(
2364
- p * Math.sin(L),
2362
+ for (let S = 0; S < d; S++) {
2363
+ const R = S / (d - 1), W = G(-90, -180, R) * nt, y = new l.Vector3(
2364
+ p * Math.sin(W),
2365
2365
  0,
2366
- p * Math.cos(L)
2366
+ p * Math.cos(W)
2367
2367
  );
2368
- S.x += p, S.z += p, S.x += y, P.push(S);
2368
+ y.x += p, y.z += p, y.x += C, P.push(y);
2369
2369
  }
2370
- const x = new l.Vector3(C, 0, 0), j = new l.Vector3(C + m * 0.75, 0, 0), R = new l.Vector3(C - g * 0.5, 0, M);
2371
- for (let U = 0; U < f; U++) {
2372
- const w = U / (f - 1), Z = Dt(x, j, R, w);
2373
- Z.x += y, P.push(Z);
2370
+ const x = new l.Vector3(w, 0, 0), j = new l.Vector3(w + m * 0.75, 0, 0), V = new l.Vector3(w - g * 0.5, 0, M);
2371
+ for (let S = 0; S < f; S++) {
2372
+ const R = S / (f - 1), O = zt(x, j, V, R);
2373
+ O.x += C, P.push(O);
2374
2374
  }
2375
2375
  P.reverse();
2376
2376
  }
2377
- const B = new Array(c);
2377
+ const b = new Array(c);
2378
2378
  for (let x = 0; x < c; x++) {
2379
- const R = (90 - x * (360 / c)) * ot;
2380
- B[x] = new l.Vector3(Math.cos(R), Math.sin(R), 0), B[x].x *= 0.75;
2379
+ const V = (90 - x * (360 / c)) * nt;
2380
+ b[x] = new l.Vector3(Math.cos(V), Math.sin(V), 0), b[x].x *= 0.75;
2381
2381
  }
2382
- const D = P.length, H = D * c, z = new Array(H * 2), E = new Array(H * 2), W = new Array(
2383
- (H * 2 - 1) * c * 2 * 3
2382
+ const A = P.length, Z = A * c, D = new Array(Z * 2), U = new Array(Z * 2), E = new Array(
2383
+ (Z * 2 - 1) * c * 2 * 3
2384
2384
  );
2385
- for (let x = 0; x < H * 2; x++)
2386
- z[x] = new l.Vector3(), E[x] = new l.Vector3();
2385
+ for (let x = 0; x < Z * 2; x++)
2386
+ D[x] = new l.Vector3(), U[x] = new l.Vector3();
2387
2387
  let N = 0;
2388
- for (let x = 0; x < D; x++) {
2389
- const j = P[Oe(x, D)], R = P[x], U = P[ee(x, D)];
2390
- let w;
2388
+ for (let x = 0; x < A; x++) {
2389
+ const j = P[Fe(x, A)], V = P[x], S = P[te(x, A)];
2390
+ let R;
2391
2391
  if (x === 0)
2392
- w = new l.Vector3(1, 0, -2).normalize();
2393
- else if (x === D - 1)
2394
- w = new l.Vector3(0, 0, 1);
2392
+ R = new l.Vector3(1, 0, -2).normalize();
2393
+ else if (x === A - 1)
2394
+ R = new l.Vector3(0, 0, 1);
2395
2395
  else {
2396
- const v = R.clone().sub(j).normalize(), I = U.clone().sub(R).normalize();
2397
- w = v.add(I).multiplyScalar(0.5);
2396
+ const T = V.clone().sub(j).normalize(), I = S.clone().sub(V).normalize();
2397
+ R = T.add(I).multiplyScalar(0.5);
2398
2398
  }
2399
- const Z = new l.Vector3(0, 1, 0), L = qe(w, Z), S = N;
2400
- let V = ht(0, f / 4, x);
2401
- V = G(0.1, 1, V), V = Math.sqrt(V);
2402
- for (let v = 0; v < c; v++) {
2403
- const I = B[v].clone().applyQuaternion(L).multiplyScalar(V), Y = R.clone().add(I.clone().multiplyScalar(g));
2404
- z[N] = Y, E[N] = I.clone();
2405
- const $ = R.clone().add(I.clone().multiplyScalar(g));
2406
- $.z = s - $.z;
2407
- const nt = S + c - v - 1, rt = H * 2 - nt - 1;
2408
- z[rt] = $, E[rt] = I.clone(), N++;
2399
+ const O = new l.Vector3(0, 1, 0), W = Ge(R, O), y = N;
2400
+ let L = at(0, f / 4, x);
2401
+ L = G(0.1, 1, L), L = Math.sqrt(L);
2402
+ for (let T = 0; T < c; T++) {
2403
+ const I = b[T].clone().applyQuaternion(W).multiplyScalar(L), tt = V.clone().add(I.clone().multiplyScalar(g));
2404
+ D[N] = tt, U[N] = I.clone();
2405
+ const K = V.clone().add(I.clone().multiplyScalar(g));
2406
+ K.z = s - K.z;
2407
+ const rt = y + c - T - 1, v = Z * 2 - rt - 1;
2408
+ D[v] = K, U[v] = I.clone(), N++;
2409
2409
  }
2410
2410
  }
2411
- let A = 0;
2412
- const T = P.length * 2;
2413
- for (let x = 0; x < T - 1; x++) {
2414
- const j = x * c, R = (x + 1) * c;
2415
- for (let U = 0; U < c; U++) {
2416
- const w = ee(U, c), Z = j + U, L = j + w, S = R + w, V = R + U;
2417
- W[A++] = Z, W[A++] = V, W[A++] = L, W[A++] = L, W[A++] = V, W[A++] = S;
2411
+ let F = 0;
2412
+ const k = P.length * 2;
2413
+ for (let x = 0; x < k - 1; x++) {
2414
+ const j = x * c, V = (x + 1) * c;
2415
+ for (let S = 0; S < c; S++) {
2416
+ const R = te(S, c), O = j + S, W = j + R, y = V + R, L = V + S;
2417
+ E[F++] = O, E[F++] = L, E[F++] = W, E[F++] = W, E[F++] = L, E[F++] = y;
2418
2418
  }
2419
2419
  }
2420
- const b = [...z], Q = [...E], F = [...W], tt = z.map((x) => x.clone()), J = [...W];
2420
+ const B = [...D], Y = [...U], X = [...E], J = D.map((x) => x.clone()), $ = [...E];
2421
2421
  for (let x = 0; x < o - 1; x++) {
2422
- const j = tt.length;
2423
- for (let R = 0; R < J.length; R++)
2424
- J[R] += j;
2425
- for (let R = 0; R < tt.length; R++)
2426
- tt[R].z += h + s;
2427
- b.push(...tt.map((R) => R.clone())), Q.push(...E.map((R) => R.clone())), F.push(...J);
2428
- }
2429
- const X = new Float32Array(b.length * 3), O = new Float32Array(Q.length * 3);
2430
- for (let x = 0; x < b.length; x++)
2431
- X[x * 3] = b[x].x, X[x * 3 + 1] = b[x].y, X[x * 3 + 2] = b[x].z, O[x * 3] = Q[x].x, O[x * 3 + 1] = Q[x].y, O[x * 3 + 2] = Q[x].z;
2422
+ const j = J.length;
2423
+ for (let V = 0; V < $.length; V++)
2424
+ $[V] += j;
2425
+ for (let V = 0; V < J.length; V++)
2426
+ J[V].z += h + s;
2427
+ B.push(...J.map((V) => V.clone())), Y.push(...U.map((V) => V.clone())), X.push(...$);
2428
+ }
2429
+ const H = new Float32Array(B.length * 3), z = new Float32Array(Y.length * 3);
2430
+ for (let x = 0; x < B.length; x++)
2431
+ H[x * 3] = B[x].x, H[x * 3 + 1] = B[x].y, H[x * 3 + 2] = B[x].z, z[x * 3] = Y[x].x, z[x * 3 + 1] = Y[x].y, z[x * 3 + 2] = Y[x].z;
2432
2432
  e.setAttribute(
2433
2433
  "position",
2434
- new l.BufferAttribute(X, 3)
2434
+ new l.BufferAttribute(H, 3)
2435
2435
  ), e.setAttribute(
2436
2436
  "normal",
2437
- new l.BufferAttribute(O, 3)
2438
- ), e.setIndex(F);
2437
+ new l.BufferAttribute(z, 3)
2438
+ ), e.setIndex(X);
2439
2439
  }
2440
2440
  // ── createPaperPattern ────────────────────────────────────────────────
2441
2441
  createPaperPattern(t, e, s, i, n, r) {
2442
- const o = new de();
2442
+ const o = new me();
2443
2443
  o.size = e, o.thickness = s;
2444
2444
  const h = this.m_BindingRadius;
2445
2445
  o.baseXOffset = -h;
@@ -2449,74 +2449,74 @@ class Ye extends ge {
2449
2449
  G(0, (e.x - h) / d, c)
2450
2450
  ), g = Math.floor(G(0, e.y / d, c));
2451
2451
  let m = 2 + f + 1 + u, _ = 2 + g;
2452
- const p = new _t(0);
2452
+ const p = new dt(0);
2453
2453
  let M = p;
2454
- const C = h / u;
2455
- let y = 0;
2456
- for (let S = 1; S < u + 1; S++)
2457
- M = M.createNext(y), y += C;
2454
+ const w = h / u;
2455
+ let C = 0;
2456
+ for (let y = 1; y < u + 1; y++)
2457
+ M = M.createNext(C), C += w;
2458
2458
  const P = (e.x - h) / (f + 1);
2459
- for (let S = u + 1; S < m; S++)
2460
- M = M.createNext(y), y += P;
2461
- const B = new _t(0);
2462
- let D = B;
2463
- const H = e.y / (_ - 1);
2464
- let z = 0;
2465
- for (let S = 0; S < _ - 1; S++)
2466
- z += H, D = D.createNext(z);
2467
- const E = [], W = [], N = i.clone();
2459
+ for (let y = u + 1; y < m; y++)
2460
+ M = M.createNext(C), C += P;
2461
+ const b = new dt(0);
2462
+ let A = b;
2463
+ const Z = e.y / (_ - 1);
2464
+ let D = 0;
2465
+ for (let y = 0; y < _ - 1; y++)
2466
+ D += Z, A = A.createNext(D);
2467
+ const U = [], E = [], N = i.clone();
2468
2468
  if (n) {
2469
- let S = 0;
2470
- this.m_Book.hasCover && (S = Math.floor(this.m_Book.coverPaperCount / 2));
2471
- const V = Math.max(0.01, s);
2472
- N.left = 0, N.right = (this.getPX(S + 1, s) - this.getPX(S, s) + V) / e.x, N.down = V / e.y, N.up = V / e.y;
2473
- }
2474
- const A = new ce(o, N, !1);
2475
- A.insert(p, B, E, W), p.updateIndex(0), B.updateIndex(0), Mt(E, o.xSeams), Mt(W, o.zSeams);
2476
- const T = this.m_BindingVertexCount + 2, b = new Array(T);
2477
- o.xNoneSeamIndexes = b, M = p;
2478
- for (let S = 0; S < T; S++) {
2479
- b[S] = M.index;
2469
+ let y = 0;
2470
+ this.m_Book.hasCover && (y = Math.floor(this.m_Book.coverPaperCount / 2));
2471
+ const L = Math.max(0.01, s);
2472
+ N.left = 0, N.right = (this.getPX(y + 1, s) - this.getPX(y, s) + L) / e.x, N.down = L / e.y, N.up = L / e.y;
2473
+ }
2474
+ const F = new he(o, N, !1);
2475
+ F.insert(p, b, U, E), p.updateIndex(0), b.updateIndex(0), xt(U, o.xSeams), xt(E, o.zSeams);
2476
+ const k = this.m_BindingVertexCount + 2, B = new Array(k);
2477
+ o.xNoneSeamIndexes = B, M = p;
2478
+ for (let y = 0; y < k; y++) {
2479
+ B[y] = M.index;
2480
2480
  do
2481
2481
  M = M.next;
2482
2482
  while (M.seam);
2483
2483
  }
2484
- const Q = p.getValues(), F = B.getValues();
2485
- m = Q.length, _ = F.length;
2486
- const tt = m * _, J = [], X = new Array(tt).fill(0), O = [], x = [], j = [], R = [];
2487
- Ot(
2488
- J,
2489
- Q,
2490
- F,
2484
+ const Y = p.getValues(), X = b.getValues();
2485
+ m = Y.length, _ = X.length;
2486
+ const J = m * _, $ = [], H = new Array(J).fill(0), z = [], x = [], j = [], V = [];
2487
+ Ft(
2488
+ $,
2489
+ Y,
2490
+ X,
2491
2491
  e,
2492
2492
  i,
2493
2493
  this.m_Book.direction
2494
2494
  );
2495
- const U = A.leftNode.index, w = A.downNode.index;
2496
- let Z = A.rightNode.index, L = A.upNode.index;
2497
- Z === 0 && (Z = m - 1), L === 0 && (L = _ - 1);
2498
- for (let S = 0; S < _ - 1; S++)
2499
- for (let V = 0; V < m - 1; V++) {
2500
- if (n && S >= w && S < L && V >= U && V < Z)
2495
+ const S = F.leftNode.index, R = F.downNode.index;
2496
+ let O = F.rightNode.index, W = F.upNode.index;
2497
+ O === 0 && (O = m - 1), W === 0 && (W = _ - 1);
2498
+ for (let y = 0; y < _ - 1; y++)
2499
+ for (let L = 0; L < m - 1; L++) {
2500
+ if (n && y >= R && y < W && L >= S && L < O)
2501
2501
  continue;
2502
- const v = S * m + V, I = S * m + (V + 1), Y = (S + 1) * m + V, $ = (S + 1) * m + (V + 1);
2503
- X[v] += 2, X[I] += 2, X[Y] += 2, X[$] += 2, Ft(
2504
- O,
2502
+ const T = y * m + L, I = y * m + (L + 1), tt = (y + 1) * m + L, K = (y + 1) * m + (L + 1);
2503
+ H[T] += 2, H[I] += 2, H[tt] += 2, H[K] += 2, Ht(
2504
+ z,
2505
2505
  x,
2506
- v,
2506
+ T,
2507
2507
  I,
2508
- Y,
2509
- $,
2510
- tt
2508
+ tt,
2509
+ K,
2510
+ J
2511
2511
  );
2512
2512
  }
2513
- if (R.push(new Tt(0, 0, m - 1, _ - 1, !1, !1)), Ht(R, j, J, m, _), o.baseXArray = Q, o.baseZArray = F, o.baseVertexCount = tt, o.vertexCount = J.length, o.texcoords = J, o.weights = X, r) {
2513
+ if (V.push(new St(0, 0, m - 1, _ - 1, !1, !1)), At(V, j, $, m, _), o.baseXArray = Y, o.baseZArray = X, o.baseVertexCount = J, o.vertexCount = $.length, o.texcoords = $, o.weights = H, r) {
2514
2514
  o.subMeshCount = 1;
2515
- const S = [];
2516
- S.push(...O), S.push(...j), S.push(...x), o.triangles = S;
2515
+ const y = [];
2516
+ y.push(...z), y.push(...j), y.push(...x), o.triangles = y;
2517
2517
  } else
2518
- o.subMeshCount = 3, o.frontTriangles = O, o.backTriangles = x, o.borderTriangles = j;
2519
- return o.borders = R, o;
2518
+ o.subMeshCount = 3, o.frontTriangles = z, o.backTriangles = x, o.borderTriangles = j;
2519
+ return o.borders = V, o;
2520
2520
  }
2521
2521
  // ── updateRootPosition ────────────────────────────────────────────────
2522
2522
  updateRootPosition() {
@@ -2529,46 +2529,46 @@ class Ye extends ge {
2529
2529
  const e = this.m_Book.papers, s = e.length;
2530
2530
  let i = 0;
2531
2531
  const n = e.length / 2 - 1, r = e.length / 2;
2532
- for (let y = 0; y < s; y++) {
2533
- const P = e[y];
2532
+ for (let C = 0; C < s; C++) {
2533
+ const P = e[C];
2534
2534
  P.updateTime();
2535
- const B = P.zTime, D = P.thickness;
2536
- i += B * D, y === n && (i += B * this.m_BindingMidSpace / 2), y === r && (i += B * this.m_BindingMidSpace / 2);
2535
+ const b = P.zTime, A = P.thickness;
2536
+ i += b * A, C === n && (i += b * this.m_BindingMidSpace / 2), C === r && (i += b * this.m_BindingMidSpace / 2);
2537
2537
  }
2538
2538
  let o = this.getStackHeight(t.index) - t.thickness / 2;
2539
2539
  const h = this.getStackZ(o), u = 180 + h;
2540
2540
  let c = t.isFlipped ? 1 : 0, d = G(h, u, c);
2541
- const f = d * ot, g = new l.Vector3(
2541
+ const f = d * nt, g = new l.Vector3(
2542
2542
  Math.cos(f) * this.m_BindingRadius,
2543
2543
  Math.sin(f) * this.m_BindingRadius,
2544
2544
  0
2545
2545
  );
2546
2546
  g.z = t.margin;
2547
- let m = e[Math.floor(s / 2)].size.x, _ = this.m_BindingMidSpace, p = Math.sqrt(m * m - _ * _), M = Math.asin(p / m) * ut - 90;
2547
+ let m = e[Math.floor(s / 2)].size.x, _ = this.m_BindingMidSpace, p = Math.sqrt(m * m - _ * _), M = Math.asin(p / m) * lt - 90;
2548
2548
  if (t.index < Math.floor(s / 2)) {
2549
- let y = 0;
2549
+ let C = 0;
2550
2550
  if (this.m_Book.alignToGround) {
2551
2551
  m = e[0].size.x;
2552
2552
  const P = this.m_StackHeight / 2;
2553
- _ = q(i, 0, P) - P, p = Math.sqrt(m * m - _ * _), y = (Math.asin(p / m) * ut - 90) * 2;
2553
+ _ = q(i, 0, P) - P, p = Math.sqrt(m * m - _ * _), C = (Math.asin(p / m) * lt - 90) * 2;
2554
2554
  }
2555
- d = G(M, -y, c);
2555
+ d = G(M, -C, c);
2556
2556
  } else {
2557
- let y = 0;
2557
+ let C = 0;
2558
2558
  if (this.m_Book.alignToGround) {
2559
2559
  m = e[0].size.x;
2560
2560
  const P = this.m_StackHeight / 2;
2561
- _ = P - q(i, P, P * 2), p = Math.sqrt(m * m - _ * _), y = (Math.asin(p / m) * ut - 90) * 2;
2561
+ _ = P - q(i, P, P * 2), p = Math.sqrt(m * m - _ * _), C = (Math.asin(p / m) * lt - 90) * 2;
2562
2562
  }
2563
- d = G(y, -M, c);
2563
+ d = G(C, -M, c);
2564
2564
  }
2565
2565
  t.transform.position.copy(g), t.transform.quaternion.setFromEuler(
2566
- new l.Euler(0, 0, d * ot)
2566
+ new l.Euler(0, 0, d * nt)
2567
2567
  );
2568
2568
  }
2569
2569
  // ── getPX (private helper) ───────────────────────────────────────────
2570
2570
  getPX(t, e) {
2571
- const s = this.getStackHeight(t) - e / 2, n = this.getStackZ(s) * ot;
2571
+ const s = this.getStackHeight(t) - e / 2, n = this.getStackZ(s) * nt;
2572
2572
  return Math.cos(n) * this.m_BindingRadius;
2573
2573
  }
2574
2574
  // ── updatePaperPosition ───────────────────────────────────────────────
@@ -2578,32 +2578,32 @@ class Ye extends ge {
2578
2578
  updatePaperPositionWithTh(t, e) {
2579
2579
  const s = this.m_Book.papers, i = s.length, n = this.getStackHeight(t.index) - t.thickness / 2, r = this.getStackZ(n + e), o = 180 + this.getStackZ(n + e - this.m_StackHeight);
2580
2580
  let h = t.zTime, u = G(r, o, h);
2581
- const c = u * ot, d = new l.Vector3(
2581
+ const c = u * nt, d = new l.Vector3(
2582
2582
  Math.cos(c) * this.m_BindingRadius,
2583
2583
  Math.sin(c) * this.m_BindingRadius,
2584
2584
  0
2585
2585
  );
2586
2586
  d.z = t.margin;
2587
- let f = s[Math.floor(i / 2)].size.x, g = this.m_BindingMidSpace, m = Math.sqrt(f * f - g * g), _ = Math.asin(m / f) * ut - 90;
2587
+ let f = s[Math.floor(i / 2)].size.x, g = this.m_BindingMidSpace, m = Math.sqrt(f * f - g * g), _ = Math.asin(m / f) * lt - 90;
2588
2588
  if (t.index < Math.floor(i / 2)) {
2589
2589
  let M = 0;
2590
2590
  if (this.m_Book.alignToGround) {
2591
2591
  f = s[0].size.x;
2592
- const C = this.m_StackHeight / 2;
2593
- g = q(e, 0, C) - C, m = Math.sqrt(f * f - g * g), M = (Math.asin(m / f) * ut - 90) * 2;
2592
+ const w = this.m_StackHeight / 2;
2593
+ g = q(e, 0, w) - w, m = Math.sqrt(f * f - g * g), M = (Math.asin(m / f) * lt - 90) * 2;
2594
2594
  }
2595
2595
  u = G(_, -M, h);
2596
2596
  } else {
2597
2597
  let M = 0;
2598
2598
  if (this.m_Book.alignToGround) {
2599
2599
  f = s[0].size.x;
2600
- const C = this.m_StackHeight / 2;
2601
- g = C - q(e, C, C * 2), m = Math.sqrt(f * f - g * g), M = (Math.asin(m / f) * ut - 90) * 2;
2600
+ const w = this.m_StackHeight / 2;
2601
+ g = w - q(e, w, w * 2), m = Math.sqrt(f * f - g * g), M = (Math.asin(m / f) * lt - 90) * 2;
2602
2602
  }
2603
2603
  u = G(M, -_, h);
2604
2604
  }
2605
2605
  t.transform.position.copy(d), t.transform.quaternion.setFromEuler(
2606
- new l.Euler(0, 0, u * ot)
2606
+ new l.Euler(0, 0, u * nt)
2607
2607
  );
2608
2608
  }
2609
2609
  // ── getStackHeight ────────────────────────────────────────────────────
@@ -2619,7 +2619,7 @@ class Ye extends ge {
2619
2619
  getStackZ(t) {
2620
2620
  t = q(t, 0, this.m_StackHeight);
2621
2621
  const e = t - this.m_StackHeight * 0.5;
2622
- return Math.asin(e / this.m_BindingRadius) * ut;
2622
+ return Math.asin(e / this.m_BindingRadius) * lt;
2623
2623
  }
2624
2624
  // ── onLateUpdate ──────────────────────────────────────────────────────
2625
2625
  /** Precompute cumulative th once instead of per-paper (O(n) instead of O(n²)). */
@@ -2649,38 +2649,38 @@ class Ye extends ge {
2649
2649
  let e = new l.Vector3(0, 0, 0), s = new l.Vector3(0, 0, 0), i = this.m_BindingRadius * 0.6;
2650
2650
  const n = this.m_StapleThickness * 0.5, r = t[0].thickness, o = this.m_Root.matrixWorld.clone(), h = t.length;
2651
2651
  for (let u = 0; u < h; u++) {
2652
- const c = t[u], d = c.transform, f = c.meshData.pattern, g = c.meshData.baseVertices, m = f.baseXArray, _ = f.baseZArray, p = m.length, M = _.length, C = this.m_BindingVertexCount + 1, y = c.thickness, P = f.xNoneSeamIndexes, B = d.position.clone();
2653
- let D = u, H = n;
2654
- u >= Math.floor(h / 2) && (D = h - u - 1, H *= -1);
2655
- const z = (r + y) * 0.5 + y * (D - 1), E = d.matrixWorld.clone().invert().multiply(o), W = D / (h / 2);
2656
- i = this.m_BindingRadius * G(0.45, 0.65, 1 - W);
2652
+ const c = t[u], d = c.transform, f = c.meshData.pattern, g = c.meshData.baseVertices, m = f.baseXArray, _ = f.baseZArray, p = m.length, M = _.length, w = this.m_BindingVertexCount + 1, C = c.thickness, P = f.xNoneSeamIndexes, b = d.position.clone();
2653
+ let A = u, Z = n;
2654
+ u >= Math.floor(h / 2) && (A = h - u - 1, Z *= -1);
2655
+ const D = (r + C) * 0.5 + C * (A - 1), U = d.matrixWorld.clone().invert().multiply(o), E = A / (h / 2);
2656
+ i = this.m_BindingRadius * G(0.45, 0.65, 1 - E);
2657
2657
  for (let N = 0; N < M; N++) {
2658
- const A = _[N], T = new l.Vector3(0, 0, B.z + A), b = B.clone();
2659
- b.z += A;
2660
- const Q = c.getDirection(A).multiplyScalar(i).add(b.clone());
2658
+ const F = _[N], k = new l.Vector3(0, 0, b.z + F), B = b.clone();
2659
+ B.z += F;
2660
+ const Y = c.getDirection(F).multiplyScalar(i).add(B.clone());
2661
2661
  if (u === 0 && N === 0) {
2662
- const O = t[h - 1], j = O.transform.position.clone().clone();
2663
- j.z += A;
2664
- const R = O.getDirection(A).multiplyScalar(i).add(j);
2665
- s = Q.clone().sub(R).normalize(), e = new l.Vector3(
2662
+ const z = t[h - 1], j = z.transform.position.clone().clone();
2663
+ j.z += F;
2664
+ const V = z.getDirection(F).multiplyScalar(i).add(j);
2665
+ s = Y.clone().sub(V).normalize(), e = new l.Vector3(
2666
2666
  -s.y,
2667
2667
  s.x,
2668
2668
  0
2669
2669
  ).normalize().negate();
2670
- const U = Math.atan2(e.y, e.x) * ut;
2671
- this.stapleMesh.rotation.set(0, 0, U * ot);
2670
+ const S = Math.atan2(e.y, e.x) * lt;
2671
+ this.stapleMesh.rotation.set(0, 0, S * nt);
2672
2672
  }
2673
- D > 0 && T.add(e.clone().multiplyScalar(z));
2674
- const F = N * p;
2675
- g[F] = T.clone().applyMatrix4(E), T.add(s.clone().multiplyScalar(H));
2676
- const tt = T.clone().applyMatrix4(E), J = Q.clone().applyMatrix4(E), X = b.clone().applyMatrix4(E);
2677
- g[F + P[1]] = tt;
2678
- for (let O = 2; O < C; O++) {
2679
- const x = ht(1, C, O);
2680
- g[F + P[O]] = Dt(
2681
- tt,
2673
+ A > 0 && k.add(e.clone().multiplyScalar(D));
2674
+ const X = N * p;
2675
+ g[X] = k.clone().applyMatrix4(U), k.add(s.clone().multiplyScalar(Z));
2676
+ const J = k.clone().applyMatrix4(U), $ = Y.clone().applyMatrix4(U), H = B.clone().applyMatrix4(U);
2677
+ g[X + P[1]] = J;
2678
+ for (let z = 2; z < w; z++) {
2679
+ const x = at(1, w, z);
2680
+ g[X + P[z]] = zt(
2682
2681
  J,
2683
- X,
2682
+ $,
2683
+ H,
2684
2684
  x
2685
2685
  );
2686
2686
  }
@@ -2714,7 +2714,7 @@ class Ye extends ge {
2714
2714
  this.stapleMesh.geometry.dispose(), this.stapleMesh.material instanceof l.Material && this.stapleMesh.material.dispose(), this.stapleMesh.parent && this.stapleMesh.parent.remove(this.stapleMesh);
2715
2715
  }
2716
2716
  }
2717
- class Qe {
2717
+ class Ye {
2718
2718
  constructor(t) {
2719
2719
  this.mesh = t;
2720
2720
  }
@@ -2738,12 +2738,12 @@ class Qe {
2738
2738
  return this.mesh;
2739
2739
  }
2740
2740
  }
2741
- class _s extends fe {
2741
+ class ds extends _e {
2742
2742
  constructor() {
2743
- super(...arguments), this.quality = 3, this.stapleSetup = new je();
2743
+ super(...arguments), this.quality = 3, this.stapleSetup = new qe();
2744
2744
  }
2745
2745
  createBound(t, e, s, i) {
2746
- return new Ye(
2746
+ return new je(
2747
2747
  this.quality,
2748
2748
  this.stapleSetup,
2749
2749
  t,
@@ -2751,8 +2751,8 @@ class _s extends fe {
2751
2751
  );
2752
2752
  }
2753
2753
  }
2754
- const $e = 5e-3, Ke = 0.2, Je = 0.02, ts = 0.5, es = 0, ss = 5;
2755
- class is {
2754
+ const Qe = 5e-3, $e = 0.2, Ke = 0.02, Je = 0.5, ts = 0, es = 5;
2755
+ class ss {
2756
2756
  constructor() {
2757
2757
  this._hingeGap = 0.03, this._glueFlexWidth = 0.12, this._spineColor = new l.Color(0.55, 0.15, 0.15), this._spineTexture = null, this._spineMaterial = null, this._quality = 3;
2758
2758
  }
@@ -2761,14 +2761,14 @@ class is {
2761
2761
  return this._hingeGap;
2762
2762
  }
2763
2763
  set hingeGap(t) {
2764
- this._hingeGap = q(t, $e, Ke);
2764
+ this._hingeGap = q(t, Qe, $e);
2765
2765
  }
2766
2766
  /** Width of the page gutter flex zone — glued pages never open flat. */
2767
2767
  get glueFlexWidth() {
2768
2768
  return this._glueFlexWidth;
2769
2769
  }
2770
2770
  set glueFlexWidth(t) {
2771
- this._glueFlexWidth = q(t, Je, ts);
2771
+ this._glueFlexWidth = q(t, Ke, Je);
2772
2772
  }
2773
2773
  get spineColor() {
2774
2774
  return this._spineColor;
@@ -2799,16 +2799,16 @@ class is {
2799
2799
  return this._quality;
2800
2800
  }
2801
2801
  set quality(t) {
2802
- this._quality = q(t, es, ss);
2802
+ this._quality = q(t, ts, es);
2803
2803
  }
2804
2804
  }
2805
- const ns = 30, se = 6, ie = 0, ne = 1, re = 2, oe = 3, Ct = 4, xt = 5;
2806
- class rs extends ge {
2805
+ const is = 30, ee = 6, se = 0, ie = 1, ne = 2, re = 3, yt = 4, pt = 5;
2806
+ class ns extends fe {
2807
2807
  constructor(t, e, s, i) {
2808
2808
  if (super(s, i), this.bindingType = "glued", this.m_StackHeight = 0, this.m_RadiusY = 0, this.m_GlueY = [], this.m_BindingVertexCount = 0, this.useSharedMeshDataForLowpoly = !1, this._binderRendererAdapter = null, this.m_CaseSlabSegments = 8, this.m_CaseLoopCount = 0, this.m_CaseRowCount = 0, this.m_CasePathCount = 0, this.m_CaseBoardColumnCount = 0, this.m_CaseMinY = 0, this.m_CaseMaterials = [], this.m_ClothMaterial = null, this.m_OwnsClothMaterial = !1, this.m_CaseZones = [], this.m_Quality = t, this.m_Setup = e, s.totalThickness * 1.25 > s.minPaperWidth)
2809
- throw new me();
2809
+ throw new ue();
2810
2810
  const n = this.m_Book.coverPaperSetup;
2811
- this.m_StackHeight = this.m_Book.totalThickness, this.m_RadiusY = this.m_StackHeight / 2 / Math.sin(ns * ot);
2811
+ this.m_StackHeight = this.m_Book.totalThickness, this.m_RadiusY = this.m_StackHeight / 2 / Math.sin(is * nt);
2812
2812
  const r = this.m_Book.papers;
2813
2813
  this.m_GlueY = new Array(r.length);
2814
2814
  for (let c = 0; c < r.length; c++) {
@@ -2825,7 +2825,7 @@ class rs extends ge {
2825
2825
  for (let c = 0; c < 5; c++)
2826
2826
  this.m_CaseMaterials.push(
2827
2827
  new l.MeshStandardMaterial({
2828
- color: c === Ct ? e.spineColor : n.color,
2828
+ color: c === yt ? e.spineColor : n.color,
2829
2829
  roughness: 0.8,
2830
2830
  metalness: 0,
2831
2831
  side: l.DoubleSide
@@ -2842,7 +2842,7 @@ class rs extends ge {
2842
2842
  this.m_Book.hasCover && (r[0].renderer.transform.visible = !1, r[r.length - 1].renderer.transform.visible = !1), this.m_Root.updateMatrixWorld(!0), this.refreshCaseMaterials(), this.updateCaseMesh(this.spineAngle()), this.updateRootPosition();
2843
2843
  }
2844
2844
  get binderRenderer() {
2845
- return this._binderRendererAdapter || (this._binderRendererAdapter = new os(this.spineMesh)), this._binderRendererAdapter;
2845
+ return this._binderRendererAdapter || (this._binderRendererAdapter = new rs(this.spineMesh)), this._binderRendererAdapter;
2846
2846
  }
2847
2847
  bindingWidthFor(t) {
2848
2848
  return t ? this.m_Setup.hingeGap + this.m_Book.coverPaperSetup.thickness : this.m_Setup.glueFlexWidth;
@@ -2856,29 +2856,29 @@ class rs extends ge {
2856
2856
  return this.m_StackHeight / 2 + this.m_Setup.hingeGap * 0.5;
2857
2857
  }
2858
2858
  createCaseGeometry() {
2859
- var P, B, D, H;
2859
+ var P, b, A, Z;
2860
2860
  this.m_CaseSlabSegments = Math.max(6, (this.m_Setup.quality + 1) * 4);
2861
- const t = this.m_CaseSlabSegments, e = se, s = this.m_Book.papers, i = (B = (P = s[0]) == null ? void 0 : P.meshData) == null ? void 0 : B.pattern, n = (H = (D = s[s.length - 1]) == null ? void 0 : D.meshData) == null ? void 0 : H.pattern;
2861
+ const t = this.m_CaseSlabSegments, e = ee, s = this.m_Book.papers, i = (b = (P = s[0]) == null ? void 0 : P.meshData) == null ? void 0 : b.pattern, n = (Z = (A = s[s.length - 1]) == null ? void 0 : A.meshData) == null ? void 0 : Z.pattern;
2862
2862
  if (!i || !n) return new l.BufferGeometry();
2863
2863
  const r = i.xNoneSeamIndexes[this.m_BindingVertexCount + 1], o = n.xNoneSeamIndexes[this.m_BindingVertexCount + 1], h = Math.max(
2864
2864
  i.baseXArray.length - r,
2865
2865
  n.baseXArray.length - o
2866
2866
  ), u = Math.max(i.baseZArray.length, n.baseZArray.length), c = t + 2 * e + 1, d = h * 2 + c, f = 2 * d;
2867
2867
  this.m_CaseLoopCount = f, this.m_CaseRowCount = u, this.m_CasePathCount = d, this.m_CaseBoardColumnCount = h;
2868
- const g = [], m = (z, E) => {
2869
- for (let W = 0; W < E; W++) g.push(z);
2868
+ const g = [], m = (D, U) => {
2869
+ for (let E = 0; E < U; E++) g.push(D);
2870
2870
  };
2871
- m(ne, h - 1), m(xt, c + 1), m(re, h - 1), m(xt, 1), m(oe, h - 1), m(xt, e + 1), m(Ct, t), m(xt, e + 1), m(ie, h - 1), m(xt, 1), this.m_CaseZones = g;
2872
- const _ = new l.BufferGeometry(), p = f * (u - 1), M = p * 6, C = p * 4 + f * 2;
2873
- _.setAttribute("position", new l.BufferAttribute(new Float32Array(C * 3), 3)), _.setAttribute("uv", new l.BufferAttribute(new Float32Array(C * 2), 2)), _.setIndex(new l.BufferAttribute(new Uint32Array(M + (f - 2) * 6), 1));
2874
- let y = 0;
2875
- for (let z = 1; z <= f; z++)
2876
- (z === f || g[z] !== g[y]) && (_.addGroup(
2877
- y * (u - 1) * 6,
2878
- (z - y) * (u - 1) * 6,
2879
- g[y]
2880
- ), y = z);
2881
- return _.addGroup(M, (f - 2) * 6, xt), _;
2871
+ m(ie, h - 1), m(pt, c + 1), m(ne, h - 1), m(pt, 1), m(re, h - 1), m(pt, e + 1), m(yt, t), m(pt, e + 1), m(se, h - 1), m(pt, 1), this.m_CaseZones = g;
2872
+ const _ = new l.BufferGeometry(), p = f * (u - 1), M = p * 6, w = p * 4 + f * 2;
2873
+ _.setAttribute("position", new l.BufferAttribute(new Float32Array(w * 3), 3)), _.setAttribute("uv", new l.BufferAttribute(new Float32Array(w * 2), 2)), _.setIndex(new l.BufferAttribute(new Uint32Array(M + (f - 2) * 6), 1));
2874
+ let C = 0;
2875
+ for (let D = 1; D <= f; D++)
2876
+ (D === f || g[D] !== g[C]) && (_.addGroup(
2877
+ C * (u - 1) * 6,
2878
+ (D - C) * (u - 1) * 6,
2879
+ g[C]
2880
+ ), C = D);
2881
+ return _.addGroup(M, (f - 2) * 6, pt), _;
2882
2882
  }
2883
2883
  /**
2884
2884
  * The case spine curve, manga-cover model: the two flat boards are joined
@@ -2893,8 +2893,8 @@ class rs extends ge {
2893
2893
  const t = this.m_Book.papers, s = this.m_Book.coverPaperSetup.thickness / 2, i = (m) => {
2894
2894
  const _ = m.getDirection(m.size.y / 2), p = new l.Vector2(_.x, _.y);
2895
2895
  p.lengthSq() < 1e-8 && p.set(-1, 0), p.normalize();
2896
- const M = new l.Vector2(m.transform.position.x, m.transform.position.y), C = m.size.x, y = this.bindingWidthFor(!0);
2897
- return { d: p, pivot: M, w: C, uOf: (B) => at((B.clone().sub(M).dot(p) * -1 + y) / (C + y)) };
2896
+ const M = new l.Vector2(m.transform.position.x, m.transform.position.y), w = m.size.x, C = this.bindingWidthFor(!0);
2897
+ return { d: p, pivot: M, w, uOf: (b) => ot((b.clone().sub(M).dot(p) * -1 + C) / (w + C)) };
2898
2898
  }, n = i(t[0]), r = i(t[t.length - 1]), o = (this.bindingWidthFor(!0) + s + 4e-3) / 0.75, h = n.pivot, u = n.pivot.clone().addScaledVector(n.d, o), c = r.pivot.clone().addScaledVector(r.d, o), d = r.pivot;
2899
2899
  return { F: n, B: r, half: s, cubic: (m) => {
2900
2900
  const _ = 1 - m;
@@ -2903,13 +2903,13 @@ class rs extends ge {
2903
2903
  _ * _ * _ * h.y + 3 * _ * _ * m * u.y + 3 * _ * m * m * c.y + m * m * m * d.y
2904
2904
  );
2905
2905
  }, normalAt: (m) => {
2906
- const _ = 1 - m, p = 3 * _ * _ * (u.x - h.x) + 6 * _ * m * (c.x - u.x) + 3 * m * m * (d.x - c.x), M = 3 * _ * _ * (u.y - h.y) + 6 * _ * m * (c.y - u.y) + 3 * m * m * (d.y - c.y), C = new l.Vector2(M, -p);
2907
- return C.lengthSq() < 1e-10 ? new l.Vector2(-1, 0) : C.normalize();
2906
+ const _ = 1 - m, p = 3 * _ * _ * (u.x - h.x) + 6 * _ * m * (c.x - u.x) + 3 * m * m * (d.x - c.x), M = 3 * _ * _ * (u.y - h.y) + 6 * _ * m * (c.y - u.y) + 3 * m * m * (d.y - c.y), w = new l.Vector2(M, -p);
2907
+ return w.lengthSq() < 1e-10 ? new l.Vector2(-1, 0) : w.normalize();
2908
2908
  } };
2909
2909
  }
2910
2910
  updateCaseMesh(t) {
2911
- var R, U;
2912
- const e = this.m_Book.papers, s = e[0], i = e[e.length - 1], n = (R = s == null ? void 0 : s.meshData) == null ? void 0 : R.pattern, r = (U = i == null ? void 0 : i.meshData) == null ? void 0 : U.pattern;
2911
+ var j, V;
2912
+ const e = this.m_Book.papers, s = e[0], i = e[e.length - 1], n = (j = s == null ? void 0 : s.meshData) == null ? void 0 : j.pattern, r = (V = i == null ? void 0 : i.meshData) == null ? void 0 : V.pattern;
2913
2913
  if (!n || !r) return;
2914
2914
  const o = n.xNoneSeamIndexes[this.m_BindingVertexCount + 1], h = r.xNoneSeamIndexes[this.m_BindingVertexCount + 1], u = Math.max(
2915
2915
  n.baseXArray.length - o,
@@ -2917,83 +2917,76 @@ class rs extends ge {
2917
2917
  ), c = Math.max(n.baseZArray.length, r.baseZArray.length);
2918
2918
  if (this.m_CaseRowCount !== c || this.m_CaseBoardColumnCount !== u) {
2919
2919
  this.m_CaseRowCount = 0;
2920
- const w = this.createCaseGeometry();
2920
+ const S = this.createCaseGeometry();
2921
2921
  if (this.m_CaseRowCount === 0) return;
2922
- this.spineMesh.geometry.dispose(), this.spineMesh.geometry = w;
2922
+ this.spineMesh.geometry.dispose(), this.spineMesh.geometry = S;
2923
2923
  }
2924
- const d = se, f = this.m_CaseSlabSegments, { F: g, B: m, half: _, cubic: p } = this.caseCurve(), M = f + 2 * d + 1, C = this.m_CaseRowCount, y = this.m_CasePathCount, P = this.m_CaseLoopCount, B = this.m_CaseBoardColumnCount, D = this.spineMesh.geometry, H = D.getAttribute("position"), z = D.getAttribute("uv"), E = this.m_CaseZones, W = this.spineMesh.matrixWorld.clone().invert().multiply(s.transform.matrixWorld), N = this.spineMesh.matrixWorld.clone().invert().multiply(i.transform.matrixWorld), A = (d + 1) / (M + 1), T = (d + f + 1) / (M + 1), b = new Array(C), Q = new Array(C), F = new l.Vector2(), tt = (w, Z, L, S, V, v) => {
2925
- const I = Z.baseXArray, Y = Z.baseZArray, $ = I.length, nt = G(I[L], I[$ - 1], S), rt = G(Y[0], Y[Y.length - 1], V);
2926
- let k = L;
2927
- for (; k < $ - 1 && I[k] < nt; ) k++;
2928
- const st = Math.max(L, k - 1), K = I[k] === I[st] ? 0 : ht(I[st], I[k], nt);
2924
+ const d = ee, f = this.m_CaseSlabSegments, { F: g, B: m, half: _, cubic: p } = this.caseCurve(), M = f + 2 * d + 1, w = this.m_CaseRowCount, C = this.m_CasePathCount, P = this.m_CaseLoopCount, b = this.m_CaseBoardColumnCount, A = this.spineMesh.geometry, Z = A.getAttribute("position"), D = A.getAttribute("uv"), U = this.m_CaseZones, E = this.spineMesh.matrixWorld.clone().invert().multiply(s.transform.matrixWorld), N = this.spineMesh.matrixWorld.clone().invert().multiply(i.transform.matrixWorld), F = (d + 1) / (M + 1), k = (d + f + 1) / (M + 1), B = new Array(w), Y = new Array(w), X = new l.Vector2(), J = (S, R, O, W, y, L) => {
2925
+ const T = R.baseXArray, I = R.baseZArray, tt = T.length, K = G(T[O], T[tt - 1], W), rt = G(I[0], I[I.length - 1], y);
2926
+ let v = O;
2927
+ for (; v < tt - 1 && T[v] < K; ) v++;
2928
+ const st = Math.max(O, v - 1), Q = T[v] === T[st] ? 0 : at(T[st], T[v], K);
2929
2929
  let it = 0;
2930
- for (; it < Y.length - 1 && Y[it] < rt; ) it++;
2931
- const pt = Math.max(0, it - 1), ye = Y[it] === Y[pt] ? 0 : ht(Y[pt], Y[it], rt), yt = w.meshData.baseVertices, Ce = yt[pt * $ + st].clone().lerp(yt[pt * $ + k], K), we = yt[it * $ + st].clone().lerp(yt[it * $ + k], K);
2932
- return Ce.lerp(we, ye).applyMatrix4(v);
2930
+ for (; it < I.length - 1 && I[it] < rt; ) it++;
2931
+ const gt = Math.max(0, it - 1), Me = I[it] === I[gt] ? 0 : at(I[gt], I[it], rt), Mt = S.meshData.baseVertices, ye = Mt[gt * tt + st].clone().lerp(Mt[gt * tt + v], Q), Ce = Mt[it * tt + st].clone().lerp(Mt[it * tt + v], Q);
2932
+ return ye.lerp(Ce, Me).applyMatrix4(L);
2933
2933
  };
2934
- let J = 0;
2935
- for (let w = 0; w < C; w++) {
2936
- const Z = [], L = [], S = w / Math.max(C - 1, 1);
2937
- for (let k = B - 1; k >= 0; k--) {
2938
- const st = k / Math.max(B - 1, 1);
2939
- Z.push(tt(s, n, o, st, S, W)), L.push(st);
2934
+ let $ = 0;
2935
+ for (let S = 0; S < w; S++) {
2936
+ const R = [], O = [], W = S / Math.max(w - 1, 1);
2937
+ for (let v = b - 1; v >= 0; v--) {
2938
+ const st = v / Math.max(b - 1, 1);
2939
+ R.push(J(s, n, o, st, W, E)), O.push(st);
2940
2940
  }
2941
- const V = Z[Z.length - 1], v = tt(i, r, h, 0, S, N), I = (V.z + v.z) * 0.5;
2942
- for (let k = 1; k <= M; k++) {
2943
- const st = k / (M + 1), K = p(st);
2944
- Z.push(new l.Vector3(K.x, K.y, I)), L.push(1 - at((st - A) / (T - A)));
2941
+ const y = R[R.length - 1], L = J(i, r, h, 0, W, N), T = (y.z + L.z) * 0.5;
2942
+ for (let v = 1; v <= M; v++) {
2943
+ const st = v / (M + 1), Q = p(st);
2944
+ R.push(new l.Vector3(Q.x, Q.y, T)), O.push(1 - ot((st - F) / (k - F)));
2945
2945
  }
2946
- for (let k = 0; k < B; k++) {
2947
- const st = k / Math.max(B - 1, 1);
2948
- Z.push(tt(i, r, h, st, S, N)), L.push(st);
2946
+ for (let v = 0; v < b; v++) {
2947
+ const st = v / Math.max(b - 1, 1);
2948
+ R.push(J(i, r, h, st, W, N)), O.push(st);
2949
2949
  }
2950
- const Y = new Array(y), $ = new Array(y);
2951
- for (let k = 0; k < y; k++) {
2952
- const st = Z[Math.max(k - 1, 0)], K = Z[Math.min(k + 1, y - 1)];
2953
- F.set(K.x - st.x, K.y - st.y), F.lengthSq() < 1e-10 && F.set(-1, 0), F.normalize();
2954
- const it = F.y, pt = -F.x;
2955
- Y[k] = Z[k].clone().add(new l.Vector3(it * _, pt * _, 0)), $[k] = Z[k].clone().add(new l.Vector3(-it * _, -pt * _, 0));
2950
+ const I = new Array(C), tt = new Array(C);
2951
+ for (let v = 0; v < C; v++) {
2952
+ const st = R[Math.max(v - 1, 0)], Q = R[Math.min(v + 1, C - 1)];
2953
+ X.set(Q.x - st.x, Q.y - st.y), X.lengthSq() < 1e-10 && X.set(-1, 0), X.normalize();
2954
+ const it = X.y, gt = -X.x;
2955
+ I[v] = R[v].clone().add(new l.Vector3(it * _, gt * _, 0)), tt[v] = R[v].clone().add(new l.Vector3(-it * _, -gt * _, 0));
2956
2956
  }
2957
- const nt = [], rt = [];
2958
- for (let k = 0; k < y; k++)
2959
- nt.push($[k]), rt.push(k < B ? 1 - L[k] : L[k]);
2960
- for (let k = y - 1; k >= 0; k--)
2961
- nt.push(Y[k]), rt.push(k >= y - B ? 1 - L[k] : L[k]);
2962
- b[w] = nt, Q[w] = rt;
2963
- for (const k of nt) J = Math.min(J, k.y);
2964
- }
2965
- this.m_CaseMinY = J;
2966
- let X = 0;
2967
- for (let w = 0; w < P; w++) {
2968
- const Z = (w + 1) % P, L = E[w], S = L === xt;
2969
- for (let V = 0; V < C - 1; V++) {
2970
- const v = b[V][w], I = b[V][Z], Y = b[V + 1][w], $ = b[V + 1][Z];
2971
- let nt = S ? 0 : Q[V][w], rt = S ? 1 : Q[V][Z];
2972
- !S && L !== Ct && (nt = at(nt), rt = at(rt));
2973
- const k = 1 - V / (C - 1), st = 1 - (V + 1) / (C - 1), K = (w * (C - 1) + V) * 4;
2974
- H.setXYZ(K, v.x, v.y, v.z), H.setXYZ(K + 1, I.x, I.y, I.z), H.setXYZ(K + 2, Y.x, Y.y, Y.z), H.setXYZ(K + 3, $.x, $.y, $.z), z.setXY(K, nt, k), z.setXY(K + 1, rt, k), z.setXY(K + 2, nt, st), z.setXY(K + 3, rt, st);
2975
- const it = D.getIndex();
2976
- it.setX(X++, K + 2), it.setX(X++, K + 1), it.setX(X++, K), it.setX(X++, K + 2), it.setX(X++, K + 3), it.setX(X++, K + 1);
2957
+ const K = [], rt = [];
2958
+ for (let v = 0; v < C; v++)
2959
+ K.push(tt[v]), rt.push(v < b ? 1 - O[v] : O[v]);
2960
+ for (let v = C - 1; v >= 0; v--)
2961
+ K.push(I[v]), rt.push(v >= C - b ? 1 - O[v] : O[v]);
2962
+ B[S] = K, Y[S] = rt;
2963
+ for (const v of K) $ = Math.min($, v.y);
2964
+ }
2965
+ this.m_CaseMinY = $;
2966
+ let H = 0;
2967
+ for (let S = 0; S < P; S++) {
2968
+ const R = (S + 1) % P, O = U[S], W = O === pt;
2969
+ for (let y = 0; y < w - 1; y++) {
2970
+ const L = B[y][S], T = B[y][R], I = B[y + 1][S], tt = B[y + 1][R];
2971
+ let K = W ? 0 : Y[y][S], rt = W ? 1 : Y[y][R];
2972
+ !W && O !== yt && (K = ot(K), rt = ot(rt));
2973
+ const v = 1 - y / (w - 1), st = 1 - (y + 1) / (w - 1), Q = (S * (w - 1) + y) * 4;
2974
+ Z.setXYZ(Q, L.x, L.y, L.z), Z.setXYZ(Q + 1, T.x, T.y, T.z), Z.setXYZ(Q + 2, I.x, I.y, I.z), Z.setXYZ(Q + 3, tt.x, tt.y, tt.z), D.setXY(Q, K, v), D.setXY(Q + 1, rt, v), D.setXY(Q + 2, K, st), D.setXY(Q + 3, rt, st);
2975
+ const it = A.getIndex();
2976
+ it.setX(H++, Q + 2), it.setX(H++, Q + 1), it.setX(H++, Q), it.setX(H++, Q + 2), it.setX(H++, Q + 3), it.setX(H++, Q + 1);
2977
2977
  }
2978
2978
  }
2979
- const O = P * (C - 1) * 4;
2980
- for (let w = 0; w < P; w++) {
2981
- const Z = b[0][w], L = b[C - 1][w];
2982
- H.setXYZ(O + w, Z.x, Z.y, Z.z), H.setXYZ(O + P + w, L.x, L.y, L.z), z.setXY(O + w, 0.5, 0.5), z.setXY(O + P + w, 0.5, 0.5);
2983
- }
2984
- const x = D.getIndex();
2985
- let j = [];
2986
- try {
2987
- j = l.ShapeUtils.triangulateShape(
2988
- b[0].map((w) => new l.Vector2(w.x, w.y)),
2989
- []
2990
- );
2991
- } catch {
2979
+ const z = P * (w - 1) * 4;
2980
+ for (let S = 0; S < P; S++) {
2981
+ const R = B[0][S], O = B[w - 1][S];
2982
+ Z.setXYZ(z + S, R.x, R.y, R.z), Z.setXYZ(z + P + S, O.x, O.y, O.z), D.setXY(z + S, 0.5, 0.5), D.setXY(z + P + S, 0.5, 0.5);
2983
+ }
2984
+ const x = A.getIndex();
2985
+ for (let S = 0; S < C - 1; S++) {
2986
+ const R = S, O = S + 1, W = P - 1 - S, y = P - 1 - O;
2987
+ x.setX(H++, z + R), x.setX(H++, z + O), x.setX(H++, z + y), x.setX(H++, z + R), x.setX(H++, z + y), x.setX(H++, z + W), x.setX(H++, z + P + R), x.setX(H++, z + P + y), x.setX(H++, z + P + O), x.setX(H++, z + P + R), x.setX(H++, z + P + W), x.setX(H++, z + P + y);
2992
2988
  }
2993
- for (const w of j)
2994
- x.setX(X++, O + w[2]), x.setX(X++, O + w[1]), x.setX(X++, O + w[0]), x.setX(X++, O + P + w[0]), x.setX(X++, O + P + w[1]), x.setX(X++, O + P + w[2]);
2995
- for (; X < x.count; ) x.setX(X++, 0);
2996
- H.needsUpdate = !0, z.needsUpdate = !0, x.needsUpdate = !0, D.computeVertexNormals(), D.computeBoundingBox(), D.computeBoundingSphere();
2989
+ Z.needsUpdate = !0, D.needsUpdate = !0, x.needsUpdate = !0, A.computeVertexNormals(), A.computeBoundingBox(), A.computeBoundingSphere();
2997
2990
  }
2998
2991
  /** Keeps the five zone materials pointed at the live content textures. */
2999
2992
  refreshCaseMaterials() {
@@ -3002,13 +2995,13 @@ class rs extends ge {
3002
2995
  const p = this.m_CaseMaterials[g];
3003
2996
  p && (m && _ && (m.repeat.set(_.x, _.y), m.offset.set(_.z, _.w)), p.map !== m && (p.map = m, p.color.set(m ? 16777215 : this.m_Book.coverPaperSetup.color.getHex()), p.needsUpdate = !0));
3004
2997
  };
3005
- this.m_Book.hasCover && (s(ie, ((n = t[0].frontContent) == null ? void 0 : n.texture) ?? null, (r = t[0].frontContent) == null ? void 0 : r.textureST), s(ne, ((o = t[0].backContent) == null ? void 0 : o.texture) ?? null, (h = t[0].backContent) == null ? void 0 : h.textureST), s(re, ((u = e.frontContent) == null ? void 0 : u.texture) ?? null, (c = e.frontContent) == null ? void 0 : c.textureST), s(oe, ((d = e.backContent) == null ? void 0 : d.texture) ?? null, (f = e.backContent) == null ? void 0 : f.textureST));
3006
- const i = this.m_CaseMaterials[Ct];
2998
+ this.m_Book.hasCover && (s(se, ((n = t[0].frontContent) == null ? void 0 : n.texture) ?? null, (r = t[0].frontContent) == null ? void 0 : r.textureST), s(ie, ((o = t[0].backContent) == null ? void 0 : o.texture) ?? null, (h = t[0].backContent) == null ? void 0 : h.textureST), s(ne, ((u = e.frontContent) == null ? void 0 : u.texture) ?? null, (c = e.frontContent) == null ? void 0 : c.textureST), s(re, ((d = e.backContent) == null ? void 0 : d.texture) ?? null, (f = e.backContent) == null ? void 0 : f.textureST));
2999
+ const i = this.m_CaseMaterials[yt];
3007
3000
  i && i.map !== this.m_Setup.spineTexture && (i.map = this.m_Setup.spineTexture, i.color.set(this.m_Setup.spineTexture ? 16777215 : this.m_Setup.spineColor.getHex()), i.needsUpdate = !0);
3008
3001
  }
3009
3002
  // ── createPaperPattern ────────────────────────────────────────────────
3010
3003
  createPaperPattern(t, e, s, i, n, r) {
3011
- const o = new de();
3004
+ const o = new me();
3012
3005
  o.size = e, o.thickness = s;
3013
3006
  const h = this.m_Book.coverPaperSetup.size, u = Math.abs(e.x - h.x) < 1e-6 && Math.abs(e.y - h.y) < 1e-6, c = this.bindingWidthFor(u);
3014
3007
  o.baseXOffset = -c;
@@ -3018,74 +3011,74 @@ class rs extends ge {
3018
3011
  G(0, (e.x - c) / g, f)
3019
3012
  ), _ = Math.floor(G(0, e.y / g, f));
3020
3013
  let p = 2 + m + 1 + d, M = 2 + _;
3021
- const C = new _t(0);
3022
- let y = C;
3014
+ const w = new dt(0);
3015
+ let C = w;
3023
3016
  const P = c / d;
3024
- let B = 0;
3025
- for (let v = 1; v < d + 1; v++)
3026
- y = y.createNext(B), B += P;
3027
- const D = (e.x - c) / (m + 1);
3028
- for (let v = d + 1; v < p; v++)
3029
- y = y.createNext(B), B += D;
3030
- const H = new _t(0);
3031
- let z = H;
3032
- const E = e.y / (M - 1);
3033
- let W = 0;
3034
- for (let v = 0; v < M - 1; v++)
3035
- W += E, z = z.createNext(W);
3036
- const N = [], A = [], T = i.clone();
3017
+ let b = 0;
3018
+ for (let T = 1; T < d + 1; T++)
3019
+ C = C.createNext(b), b += P;
3020
+ const A = (e.x - c) / (m + 1);
3021
+ for (let T = d + 1; T < p; T++)
3022
+ C = C.createNext(b), b += A;
3023
+ const Z = new dt(0);
3024
+ let D = Z;
3025
+ const U = e.y / (M - 1);
3026
+ let E = 0;
3027
+ for (let T = 0; T < M - 1; T++)
3028
+ E += U, D = D.createNext(E);
3029
+ const N = [], F = [], k = i.clone();
3037
3030
  if (n) {
3038
- let v = 0;
3039
- this.m_Book.hasCover && (v = Math.floor(this.m_Book.coverPaperCount / 2));
3031
+ let T = 0;
3032
+ this.m_Book.hasCover && (T = Math.floor(this.m_Book.coverPaperCount / 2));
3040
3033
  const I = Math.max(0.01, s);
3041
- T.left = 0, T.right = (this.getPX(v + 1, s) - this.getPX(v, s) + I) / e.x, T.down = I / e.y, T.up = I / e.y;
3042
- }
3043
- const b = new ce(o, T, !1);
3044
- b.insert(C, H, N, A), C.updateIndex(0), H.updateIndex(0), Mt(N, o.xSeams), Mt(A, o.zSeams);
3045
- const Q = this.m_BindingVertexCount + 2, F = new Array(Q);
3046
- o.xNoneSeamIndexes = F, y = C;
3047
- for (let v = 0; v < Q; v++) {
3048
- F[v] = y.index;
3034
+ k.left = 0, k.right = (this.getPX(T + 1, s) - this.getPX(T, s) + I) / e.x, k.down = I / e.y, k.up = I / e.y;
3035
+ }
3036
+ const B = new he(o, k, !1);
3037
+ B.insert(w, Z, N, F), w.updateIndex(0), Z.updateIndex(0), xt(N, o.xSeams), xt(F, o.zSeams);
3038
+ const Y = this.m_BindingVertexCount + 2, X = new Array(Y);
3039
+ o.xNoneSeamIndexes = X, C = w;
3040
+ for (let T = 0; T < Y; T++) {
3041
+ X[T] = C.index;
3049
3042
  do
3050
- y = y.next;
3051
- while (y.seam);
3052
- }
3053
- const tt = C.getValues(), J = H.getValues();
3054
- p = tt.length, M = J.length;
3055
- const X = p * M, O = [], x = new Array(X).fill(0), j = [], R = [], U = [], w = [];
3056
- Ot(
3057
- O,
3058
- tt,
3043
+ C = C.next;
3044
+ while (C.seam);
3045
+ }
3046
+ const J = w.getValues(), $ = Z.getValues();
3047
+ p = J.length, M = $.length;
3048
+ const H = p * M, z = [], x = new Array(H).fill(0), j = [], V = [], S = [], R = [];
3049
+ Ft(
3050
+ z,
3059
3051
  J,
3052
+ $,
3060
3053
  e,
3061
3054
  i,
3062
3055
  this.m_Book.direction
3063
3056
  );
3064
- const Z = b.leftNode.index, L = b.downNode.index;
3065
- let S = b.rightNode.index, V = b.upNode.index;
3066
- S === 0 && (S = p - 1), V === 0 && (V = M - 1);
3067
- for (let v = 0; v < M - 1; v++)
3057
+ const O = B.leftNode.index, W = B.downNode.index;
3058
+ let y = B.rightNode.index, L = B.upNode.index;
3059
+ y === 0 && (y = p - 1), L === 0 && (L = M - 1);
3060
+ for (let T = 0; T < M - 1; T++)
3068
3061
  for (let I = 0; I < p - 1; I++) {
3069
- if (n && v >= L && v < V && I >= Z && I < S)
3062
+ if (n && T >= W && T < L && I >= O && I < y)
3070
3063
  continue;
3071
- const Y = v * p + I, $ = v * p + (I + 1), nt = (v + 1) * p + I, rt = (v + 1) * p + (I + 1);
3072
- x[Y] += 2, x[$] += 2, x[nt] += 2, x[rt] += 2, Ft(
3064
+ const tt = T * p + I, K = T * p + (I + 1), rt = (T + 1) * p + I, v = (T + 1) * p + (I + 1);
3065
+ x[tt] += 2, x[K] += 2, x[rt] += 2, x[v] += 2, Ht(
3073
3066
  j,
3074
- R,
3075
- Y,
3076
- $,
3077
- nt,
3067
+ V,
3068
+ tt,
3069
+ K,
3078
3070
  rt,
3079
- X
3071
+ v,
3072
+ H
3080
3073
  );
3081
3074
  }
3082
- if (w.push(new Tt(0, 0, p - 1, M - 1, !1, !1)), Ht(w, U, O, p, M), o.baseXArray = tt, o.baseZArray = J, o.baseVertexCount = X, o.vertexCount = O.length, o.texcoords = O, o.weights = x, r) {
3075
+ if (R.push(new St(0, 0, p - 1, M - 1, !1, !1)), At(R, S, z, p, M), o.baseXArray = J, o.baseZArray = $, o.baseVertexCount = H, o.vertexCount = z.length, o.texcoords = z, o.weights = x, r) {
3083
3076
  o.subMeshCount = 1;
3084
- const v = [];
3085
- v.push(...j), v.push(...U), v.push(...R), o.triangles = v;
3077
+ const T = [];
3078
+ T.push(...j), T.push(...S), T.push(...V), o.triangles = T;
3086
3079
  } else
3087
- o.subMeshCount = 3, o.frontTriangles = j, o.backTriangles = R, o.borderTriangles = U;
3088
- return o.borders = w, o;
3080
+ o.subMeshCount = 3, o.frontTriangles = j, o.backTriangles = V, o.borderTriangles = S;
3081
+ return o.borders = R, o;
3089
3082
  }
3090
3083
  // ── Pivot placement ───────────────────────────────────────────────────
3091
3084
  /**
@@ -3095,10 +3088,10 @@ class rs extends ge {
3095
3088
  * lifts over the spine.
3096
3089
  */
3097
3090
  pivotAt(t, e, s, i, n, r) {
3098
- const o = this.bindingWidthFor(e), h = t * ot, u = G(
3099
- Math.cos(s * ot),
3100
- -Math.cos(i * ot),
3101
- at(n)
3091
+ const o = this.bindingWidthFor(e), h = t * nt, u = G(
3092
+ Math.cos(s * nt),
3093
+ -Math.cos(i * nt),
3094
+ ot(n)
3102
3095
  ), c = o * Math.cos(h) / Math.max(u, 1e-4);
3103
3096
  return r.set(q(c, -o, o), Math.sin(h) * this.m_RadiusY, 0), r;
3104
3097
  }
@@ -3109,7 +3102,7 @@ class rs extends ge {
3109
3102
  */
3110
3103
  spineAngle() {
3111
3104
  const { th: t, total: e } = this.computeThPages();
3112
- return Math.PI * at(t / e);
3105
+ return Math.PI * ot(t / e);
3113
3106
  }
3114
3107
  updateRootPosition() {
3115
3108
  const t = this.m_Book.papers, e = t[0].transform.position.y, s = t[t.length - 1].transform.position.y;
@@ -3123,7 +3116,7 @@ class rs extends ge {
3123
3116
  const s = this.getStackHeight(t.index) - t.thickness / 2, i = this.getStackZ(s), n = 180 + i, r = t.isFlipped ? 1 : 0, o = G(i, n, r), h = this.pivotAt(o, t.isCover, i, n, r, new l.Vector3());
3124
3117
  h.z = t.margin;
3125
3118
  const u = this.restRotation(t, r, 0);
3126
- t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u * ot));
3119
+ t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u * nt));
3127
3120
  }
3128
3121
  getPX(t, e) {
3129
3122
  const s = this.m_Book.hasCover && (t < Math.floor(this.m_Book.coverPaperCount / 2) || t >= this.m_Book.papers.length - Math.floor(this.m_Book.coverPaperCount / 2));
@@ -3136,7 +3129,7 @@ class rs extends ge {
3136
3129
  const s = this.getStackHeight(t.index) - t.thickness / 2, i = this.getStackZ(s + e), n = 180 + this.getStackZ(s + e - this.m_StackHeight), r = t.zTime, o = G(i, n, r), h = this.pivotAt(o, t.isCover, i, n, r, new l.Vector3());
3137
3130
  h.z = t.margin;
3138
3131
  const u = this.restRotation(t, r, e);
3139
- t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u * ot));
3132
+ t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u * nt));
3140
3133
  }
3141
3134
  /**
3142
3135
  * Resting plane rotation. A glued block has no fold gap, so resting papers
@@ -3149,14 +3142,14 @@ class rs extends ge {
3149
3142
  let o = 0;
3150
3143
  if (this.m_Book.alignToGround) {
3151
3144
  const h = i[0].size.x, u = this.m_StackHeight / 2, c = q(s, 0, u) - u, d = Math.sqrt(Math.max(h * h - c * c, 0));
3152
- o = (Math.asin(at(d / h)) * ut - 90) * 2;
3145
+ o = (Math.asin(ot(d / h)) * lt - 90) * 2;
3153
3146
  }
3154
3147
  return G(0, -o, e);
3155
3148
  }
3156
3149
  let r = 0;
3157
3150
  if (this.m_Book.alignToGround) {
3158
3151
  const o = i[0].size.x, h = this.m_StackHeight / 2, u = h - q(s, h, h * 2), c = Math.sqrt(Math.max(o * o - u * u, 0));
3159
- r = (Math.asin(at(c / o)) * ut - 90) * 2;
3152
+ r = (Math.asin(ot(c / o)) * lt - 90) * 2;
3160
3153
  }
3161
3154
  return G(r, 0, e);
3162
3155
  }
@@ -3171,7 +3164,7 @@ class rs extends ge {
3171
3164
  getStackZ(t) {
3172
3165
  t = q(t, 0, this.m_StackHeight);
3173
3166
  const e = t - this.m_StackHeight * 0.5;
3174
- return Math.asin(q(e / this.m_RadiusY, -1, 1)) * ut;
3167
+ return Math.asin(q(e / this.m_RadiusY, -1, 1)) * lt;
3175
3168
  }
3176
3169
  computeTh() {
3177
3170
  const t = this.m_Book.papers;
@@ -3212,32 +3205,32 @@ class rs extends ge {
3212
3205
  updateGlueVertices(t) {
3213
3206
  const e = this.m_Book.papers, s = e.length, i = this.m_Root.matrixWorld.clone(), n = Math.cos(t), r = Math.sin(t), { half: o, cubic: h, normalAt: u } = this.caseCurve();
3214
3207
  for (let c = 0; c < s; c++) {
3215
- const d = e[c], f = d.transform, g = d.meshData.pattern, m = d.meshData.baseVertices, _ = g.baseZArray, p = g.baseXArray.length, M = _.length, C = this.m_BindingVertexCount + 1, y = g.xNoneSeamIndexes, P = f.position.clone();
3216
- let B, D, H, z;
3208
+ const d = e[c], f = d.transform, g = d.meshData.pattern, m = d.meshData.baseVertices, _ = g.baseZArray, p = g.baseXArray.length, M = _.length, w = this.m_BindingVertexCount + 1, C = g.xNoneSeamIndexes, P = f.position.clone();
3209
+ let b, A, Z, D;
3217
3210
  if (d.isCover) {
3218
- const T = c < Math.floor(s / 2) ? this.spineHalf : -this.spineHalf;
3219
- B = -T * r, D = T * n, H = -n, z = -r;
3211
+ const k = c < Math.floor(s / 2) ? this.spineHalf : -this.spineHalf;
3212
+ b = -k * r, A = k * n, Z = -n, D = -r;
3220
3213
  } else {
3221
- const A = at(0.5 - this.m_GlueY[c] / this.m_StackHeight), T = h(A), b = u(A);
3222
- B = T.x - b.x * o, D = T.y - b.y * o, H = b.x, z = b.y;
3214
+ const F = ot(0.5 - this.m_GlueY[c] / this.m_StackHeight), k = h(F), B = u(F);
3215
+ b = k.x - B.x * o, A = k.y - B.y * o, Z = B.x, D = B.y;
3223
3216
  }
3224
- const E = this.bindingWidthFor(d.isCover) * 0.6, W = Math.min(0.01, this.m_Book.coverPaperSetup.thickness * 0.5), N = f.matrixWorld.clone().invert().multiply(i);
3225
- for (let A = 0; A < M; A++) {
3226
- const T = _[A], b = new l.Vector3(
3227
- B + H * W,
3228
- D + z * W,
3229
- P.z + T
3230
- ), Q = new l.Vector3(B, D, P.z + T), F = P.clone();
3231
- F.z += T;
3232
- const tt = d.getDirection(T).multiplyScalar(E).add(F.clone()), J = A * p, X = b.applyMatrix4(N), O = Q.clone().applyMatrix4(N), x = tt.clone().applyMatrix4(N), j = F.clone().applyMatrix4(N);
3233
- m[J] = X, m[J + y[1]] = O;
3234
- for (let R = 2; R < C; R++) {
3235
- const U = ht(1, C, R);
3236
- m[J + y[R]] = Dt(
3237
- O,
3217
+ const U = this.bindingWidthFor(d.isCover) * 0.6, E = Math.min(0.01, this.m_Book.coverPaperSetup.thickness * 0.5), N = f.matrixWorld.clone().invert().multiply(i);
3218
+ for (let F = 0; F < M; F++) {
3219
+ const k = _[F], B = new l.Vector3(
3220
+ b + Z * E,
3221
+ A + D * E,
3222
+ P.z + k
3223
+ ), Y = new l.Vector3(b, A, P.z + k), X = P.clone();
3224
+ X.z += k;
3225
+ const J = d.getDirection(k).multiplyScalar(U).add(X.clone()), $ = F * p, H = B.applyMatrix4(N), z = Y.clone().applyMatrix4(N), x = J.clone().applyMatrix4(N), j = X.clone().applyMatrix4(N);
3226
+ m[$] = H, m[$ + C[1]] = z;
3227
+ for (let V = 2; V < w; V++) {
3228
+ const S = at(1, w, V);
3229
+ m[$ + C[V]] = zt(
3230
+ z,
3238
3231
  x,
3239
3232
  j,
3240
- U
3233
+ S
3241
3234
  );
3242
3235
  }
3243
3236
  }
@@ -3264,7 +3257,7 @@ class rs extends ge {
3264
3257
  this.m_Book.hasCover && t.length > 0 && (t[0].renderer.transform.visible = !0, t[t.length - 1].renderer.transform.visible = !0);
3265
3258
  }
3266
3259
  }
3267
- class os {
3260
+ class rs {
3268
3261
  constructor(t) {
3269
3262
  this.mesh = t;
3270
3263
  }
@@ -3288,15 +3281,15 @@ class os {
3288
3281
  return this.mesh;
3289
3282
  }
3290
3283
  }
3291
- class fs extends fe {
3284
+ class _s extends _e {
3292
3285
  constructor() {
3293
- super(...arguments), this.quality = 3, this.setup = new is();
3286
+ super(...arguments), this.quality = 3, this.setup = new ss();
3294
3287
  }
3295
3288
  createBound(t, e, s, i) {
3296
- return new rs(this.quality, this.setup, t, e);
3289
+ return new ns(this.quality, this.setup, t, e);
3297
3290
  }
3298
3291
  }
3299
- class pe {
3292
+ class ge {
3300
3293
  constructor(t) {
3301
3294
  this.x = (t == null ? void 0 : t.x) ?? 0, this.y = (t == null ? void 0 : t.y) ?? 0, this.width = (t == null ? void 0 : t.width) ?? 0, this.text = (t == null ? void 0 : t.text) ?? "", this.fontFamily = (t == null ? void 0 : t.fontFamily) ?? "Georgia", this.fontSize = (t == null ? void 0 : t.fontSize) ?? 24, this.fontWeight = (t == null ? void 0 : t.fontWeight) ?? "normal", this.fontStyle = (t == null ? void 0 : t.fontStyle) ?? "normal", this.color = (t == null ? void 0 : t.color) ?? "#222", this.lineHeight = (t == null ? void 0 : t.lineHeight) ?? 1.4, this.textAlign = (t == null ? void 0 : t.textAlign) ?? "left", this.opacity = (t == null ? void 0 : t.opacity) ?? 1, this.shadowColor = (t == null ? void 0 : t.shadowColor) ?? "", this.shadowBlur = (t == null ? void 0 : t.shadowBlur) ?? 0, this.shadowOffsetX = (t == null ? void 0 : t.shadowOffsetX) ?? 0, this.shadowOffsetY = (t == null ? void 0 : t.shadowOffsetY) ?? 0, this.textTransform = (t == null ? void 0 : t.textTransform) ?? "none", this.textDecoration = (t == null ? void 0 : t.textDecoration) ?? "none", this.background = (t == null ? void 0 : t.background) ?? "", this.backgroundPadding = (t == null ? void 0 : t.backgroundPadding) ?? 0, this.maxLines = (t == null ? void 0 : t.maxLines) ?? 0, this.height = (t == null ? void 0 : t.height) ?? 0, this.verticalAlign = (t == null ? void 0 : t.verticalAlign) ?? "top", this.rotation = (t == null ? void 0 : t.rotation) ?? 0;
3302
3295
  }
@@ -3405,21 +3398,21 @@ class pe {
3405
3398
  t.restore();
3406
3399
  }
3407
3400
  }
3408
- function as(a) {
3401
+ function os(a) {
3409
3402
  return a.map instanceof l.Texture;
3410
3403
  }
3411
- function xe(a, t) {
3404
+ function pe(a, t) {
3412
3405
  a.traverse((e) => {
3413
3406
  if (!e.isMesh) return;
3414
3407
  const s = e, i = Array.isArray(s.material) ? s.material : [s.material];
3415
3408
  for (const n of i)
3416
- as(n) && n.map.image === t && (n.map.needsUpdate = !0);
3409
+ os(n) && n.map.image === t && (n.map.needsUpdate = !0);
3417
3410
  });
3418
3411
  }
3419
- function Me(a, t) {
3412
+ function xe(a, t) {
3420
3413
  t.x !== void 0 && (a.x = t.x), t.y !== void 0 && (a.y = t.y), t.width !== void 0 && (a.width = t.width), t.text !== void 0 && (a.text = t.text), t.fontFamily !== void 0 && (a.fontFamily = t.fontFamily), t.fontSize !== void 0 && (a.fontSize = t.fontSize), t.fontWeight !== void 0 && (a.fontWeight = t.fontWeight), t.fontStyle !== void 0 && (a.fontStyle = t.fontStyle), t.color !== void 0 && (a.color = t.color), t.lineHeight !== void 0 && (a.lineHeight = t.lineHeight), t.textAlign !== void 0 && (a.textAlign = t.textAlign), t.opacity !== void 0 && (a.opacity = t.opacity), t.shadowColor !== void 0 && (a.shadowColor = t.shadowColor), t.shadowBlur !== void 0 && (a.shadowBlur = t.shadowBlur), t.shadowOffsetX !== void 0 && (a.shadowOffsetX = t.shadowOffsetX), t.shadowOffsetY !== void 0 && (a.shadowOffsetY = t.shadowOffsetY), t.textTransform !== void 0 && (a.textTransform = t.textTransform), t.textDecoration !== void 0 && (a.textDecoration = t.textDecoration), t.background !== void 0 && (a.background = t.background), t.backgroundPadding !== void 0 && (a.backgroundPadding = t.backgroundPadding), t.maxLines !== void 0 && (a.maxLines = t.maxLines), t.height !== void 0 && (a.height = t.height), t.verticalAlign !== void 0 && (a.verticalAlign = t.verticalAlign), t.rotation !== void 0 && (a.rotation = t.rotation);
3421
3414
  }
3422
- class gs {
3415
+ class fs {
3423
3416
  constructor(t) {
3424
3417
  this.texts = [], this._textureST = new l.Vector4(1, 1, 0, 0), this._dirty = !0;
3425
3418
  const e = (t == null ? void 0 : t.width) ?? 512, s = (t == null ? void 0 : t.height) ?? 512;
@@ -3447,7 +3440,7 @@ class gs {
3447
3440
  }
3448
3441
  // ── Text API ─────────────────────────────────────────────────────────────
3449
3442
  addText(t) {
3450
- const e = new pe(t);
3443
+ const e = new ge(t);
3451
3444
  return this.texts.push(e), this._dirty = !0, e;
3452
3445
  }
3453
3446
  removeText(t) {
@@ -3457,7 +3450,7 @@ class gs {
3457
3450
  /** Update a text block by index. Only provided fields are changed. */
3458
3451
  updateText(t, e) {
3459
3452
  const s = this.texts[t];
3460
- s && (Me(s, e), this._dirty = !0);
3453
+ s && (xe(s, e), this._dirty = !0);
3461
3454
  }
3462
3455
  // ── Per-frame update ─────────────────────────────────────────────────────
3463
3456
  /**
@@ -3481,7 +3474,7 @@ class gs {
3481
3474
  * source image is this overlay's canvas.
3482
3475
  */
3483
3476
  syncMaterials(t) {
3484
- xe(t, this.canvas);
3477
+ pe(t, this.canvas);
3485
3478
  }
3486
3479
  // ── IPageContent ─────────────────────────────────────────────────────────
3487
3480
  isPointOverUI(t) {
@@ -3495,7 +3488,7 @@ class gs {
3495
3488
  this._texture.dispose(), this.canvas.width = 0, this.canvas.height = 0;
3496
3489
  }
3497
3490
  }
3498
- class ae {
3491
+ class oe {
3499
3492
  constructor(t, e) {
3500
3493
  this._spread = t, this._textureST = e === "left" ? new l.Vector4(0.5, 1, 0, 0) : new l.Vector4(0.5, 1, 0.5, 0);
3501
3494
  }
@@ -3513,18 +3506,18 @@ class ae {
3513
3506
  setActive(t) {
3514
3507
  }
3515
3508
  }
3516
- function ps(a) {
3509
+ function gs(a) {
3517
3510
  const t = [];
3518
3511
  for (let e = 1; e + 1 < a; e += 2)
3519
3512
  t.push(e);
3520
3513
  return t;
3521
3514
  }
3522
- class xs {
3515
+ class ps {
3523
3516
  constructor(t) {
3524
3517
  this.texts = [], this._dirty = !0, this.pageWidth = (t == null ? void 0 : t.pageWidth) ?? 512, this.pageHeight = (t == null ? void 0 : t.pageHeight) ?? 512, this.canvas = document.createElement("canvas"), this.canvas.width = this.pageWidth * 2, this.canvas.height = this.pageHeight;
3525
3518
  const e = this.canvas.getContext("2d");
3526
3519
  if (!e) throw new Error("SpreadContent: could not get 2D context");
3527
- this.ctx = e, this._source = (t == null ? void 0 : t.source) ?? null, this._texture = new l.CanvasTexture(this.canvas), this._texture.colorSpace = l.SRGBColorSpace, this.left = new ae(this, "left"), this.right = new ae(this, "right");
3520
+ this.ctx = e, this._source = (t == null ? void 0 : t.source) ?? null, this._texture = new l.CanvasTexture(this.canvas), this._texture.colorSpace = l.SRGBColorSpace, this.left = new oe(this, "left"), this.right = new oe(this, "right");
3528
3521
  }
3529
3522
  get texture() {
3530
3523
  return this._texture;
@@ -3542,7 +3535,7 @@ class xs {
3542
3535
  }
3543
3536
  // ── Text API ─────────────────────────────────────────────────────────────
3544
3537
  addText(t) {
3545
- const e = new pe(t);
3538
+ const e = new ge(t);
3546
3539
  return this.texts.push(e), this._dirty = !0, e;
3547
3540
  }
3548
3541
  removeText(t) {
@@ -3552,7 +3545,7 @@ class xs {
3552
3545
  /** Update a text block by index. Only provided fields are changed. */
3553
3546
  updateText(t, e) {
3554
3547
  const s = this.texts[t];
3555
- s && (Me(s, e), this._dirty = !0);
3548
+ s && (xe(s, e), this._dirty = !0);
3556
3549
  }
3557
3550
  // ── Per-frame update ─────────────────────────────────────────────────────
3558
3551
  /**
@@ -3575,15 +3568,15 @@ class xs {
3575
3568
  * source image is this spread's canvas.
3576
3569
  */
3577
3570
  syncMaterials(t) {
3578
- xe(t, this.canvas);
3571
+ pe(t, this.canvas);
3579
3572
  }
3580
3573
  // ── Lifecycle ────────────────────────────────────────────────────────────
3581
3574
  dispose() {
3582
3575
  this._texture.dispose(), this.canvas.width = 0, this.canvas.height = 0;
3583
3576
  }
3584
3577
  }
3585
- const he = 256;
3586
- function hs(a, t, e, s, i, n, r) {
3578
+ const ae = 256;
3579
+ function as(a, t, e, s, i, n, r) {
3587
3580
  const o = t.naturalWidth || t.width, h = t.naturalHeight || t.height;
3588
3581
  if (o <= 0 || h <= 0) return;
3589
3582
  if (r === "fill") {
@@ -3593,7 +3586,7 @@ function hs(a, t, e, s, i, n, r) {
3593
3586
  const u = r === "contain" ? Math.min(i / o, n / h) : Math.max(i / o, n / h), c = o * u, d = h * u;
3594
3587
  a.drawImage(t, e + (i - c) * 0.5, s + (n - d) * 0.5, c, d);
3595
3588
  }
3596
- function Ms(a, t, e, s, i) {
3589
+ function xs(a, t, e, s, i) {
3597
3590
  const n = i ? 0 : Math.round(Math.min(t, e) * 0.11), r = n, o = n, h = t - n * 2, u = e - n * 2, c = a.naturalWidth || a.width, d = a.naturalHeight || a.height;
3598
3591
  if (s === "fill" || c <= 0 || d <= 0)
3599
3592
  return { x: r, y: o, width: h, height: u };
@@ -3605,8 +3598,8 @@ function Ms(a, t, e, s, i) {
3605
3598
  height: m
3606
3599
  };
3607
3600
  }
3608
- function cs(a, t, e, s, i, n, r, o) {
3609
- const h = n ? Math.round(n * he) : 512, u = r ? Math.round(r * he) : 512, c = document.createElement("canvas");
3601
+ function hs(a, t, e, s, i, n, r, o) {
3602
+ const h = n ? Math.round(n * ae) : 512, u = r ? Math.round(r * ae) : 512, c = document.createElement("canvas");
3610
3603
  c.width = h, c.height = u;
3611
3604
  const d = c.getContext("2d");
3612
3605
  if (d.fillStyle = a, d.fillRect(0, 0, h, u), e)
@@ -3614,7 +3607,7 @@ function cs(a, t, e, s, i, n, r, o) {
3614
3607
  d.drawImage(e, o.x, o.y, o.width, o.height);
3615
3608
  else {
3616
3609
  const f = i ? 0 : Math.round(Math.min(h, u) * 0.11);
3617
- hs(d, e, f, f, h - f * 2, u - f * 2, s);
3610
+ as(d, e, f, f, h - f * 2, u - f * 2, s);
3618
3611
  }
3619
3612
  else {
3620
3613
  d.fillStyle = "#333";
@@ -3623,11 +3616,11 @@ function cs(a, t, e, s, i, n, r, o) {
3623
3616
  }
3624
3617
  return c;
3625
3618
  }
3626
- function ys(a, t, e, s, i, n, r, o) {
3627
- const h = cs(a, t, e, s, i, n, r, o), u = new l.CanvasTexture(h);
3619
+ function Ms(a, t, e, s, i, n, r, o) {
3620
+ const h = hs(a, t, e, s, i, n, r, o), u = new l.CanvasTexture(h);
3628
3621
  return u.colorSpace = l.SRGBColorSpace, u;
3629
3622
  }
3630
- async function Cs(a) {
3623
+ async function ys(a) {
3631
3624
  if (!a) return null;
3632
3625
  const t = URL.createObjectURL(a), e = new Image();
3633
3626
  e.decoding = "async", e.src = t;
@@ -3640,52 +3633,52 @@ async function Cs(a) {
3640
3633
  }
3641
3634
  }
3642
3635
  export {
3643
- Fe as AnimationCurve,
3644
- Vt as AutoTurnDirection,
3645
- wt as AutoTurnMode,
3646
- gt as AutoTurnSetting,
3647
- He as AutoTurnSettingCurveTimeMode,
3648
- Ae as AutoTurnSettingMode,
3649
- Jt as AutoTurnSettings,
3650
- zt as Book,
3651
- fe as BookBinding,
3652
- ge as BookBound,
3653
- ms as BookContent,
3654
- mt as BookDirection,
3655
- me as BookHeightException,
3656
- ds as BookPointerInteraction,
3657
- De as BookRenderer,
3658
- It as Cylinder,
3659
- fs as GluedBookBinding,
3660
- rs as GluedBookBound,
3661
- is as GluedSetup,
3662
- Re as MeshFactory,
3663
- he as PX_PER_UNIT,
3664
- us as PageContent,
3665
- Be as Paper,
3666
- Tt as PaperBorder,
3667
- qt as PaperMaterialData,
3668
- $t as PaperMeshData,
3669
- Ie as PaperMeshDataPool,
3670
- ls as PaperMeshUtility,
3671
- _t as PaperNode,
3672
- ce as PaperNodeMargin,
3673
- de as PaperPattern,
3674
- At as PaperSeam,
3675
- ft as PaperSetup,
3676
- bt as PaperUVMargin,
3677
- Ve as RendererFactory,
3678
- xs as SpreadContent,
3679
- te as SpritePageContent2,
3680
- _s as StapleBookBinding,
3681
- Ye as StapleBookBound,
3682
- je as StapleSetup,
3683
- pe as TextBlock,
3684
- gs as TextOverlayContent,
3685
- Ms as computeDefaultImageRect,
3686
- cs as createPageCanvas,
3687
- ys as createPageTexture,
3688
- hs as drawImageWithFit,
3689
- ps as getSpreadPairs,
3690
- Cs as loadImage
3636
+ He as AnimationCurve,
3637
+ Rt as AutoTurnDirection,
3638
+ Ct as AutoTurnMode,
3639
+ ft as AutoTurnSetting,
3640
+ Ae as AutoTurnSettingCurveTimeMode,
3641
+ Ie as AutoTurnSettingMode,
3642
+ Kt as AutoTurnSettings,
3643
+ Vt as Book,
3644
+ _e as BookBinding,
3645
+ fe as BookBound,
3646
+ us as BookContent,
3647
+ ut as BookDirection,
3648
+ ue as BookHeightException,
3649
+ ms as BookPointerInteraction,
3650
+ ze as BookRenderer,
3651
+ Dt as Cylinder,
3652
+ _s as GluedBookBinding,
3653
+ ns as GluedBookBound,
3654
+ ss as GluedSetup,
3655
+ Be as MeshFactory,
3656
+ ae as PX_PER_UNIT,
3657
+ ls as PageContent,
3658
+ be as Paper,
3659
+ St as PaperBorder,
3660
+ Gt as PaperMaterialData,
3661
+ Qt as PaperMeshData,
3662
+ De as PaperMeshDataPool,
3663
+ cs as PaperMeshUtility,
3664
+ dt as PaperNode,
3665
+ he as PaperNodeMargin,
3666
+ me as PaperPattern,
3667
+ It as PaperSeam,
3668
+ _t as PaperSetup,
3669
+ kt as PaperUVMargin,
3670
+ Re as RendererFactory,
3671
+ ps as SpreadContent,
3672
+ Jt as SpritePageContent2,
3673
+ ds as StapleBookBinding,
3674
+ je as StapleBookBound,
3675
+ qe as StapleSetup,
3676
+ ge as TextBlock,
3677
+ fs as TextOverlayContent,
3678
+ xs as computeDefaultImageRect,
3679
+ hs as createPageCanvas,
3680
+ Ms as createPageTexture,
3681
+ as as drawImageWithFit,
3682
+ gs as getSpreadPairs,
3683
+ ys as loadImage
3691
3684
  };