manim-web 0.31.0 → 0.32.0

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.
@@ -47011,7 +47011,7 @@ var pE = class e {
47011
47011
  if (this.isHeadless) throw Error("export() is not available in headless mode. Create a Scene with a container for rendering and exporting.");
47012
47012
  let n = e.slice(e.lastIndexOf(".")).toLowerCase(), r;
47013
47013
  if (n === ".gif") {
47014
- let { GifExporter: n } = await Promise.resolve().then(() => IW);
47014
+ let { GifExporter: n } = await Promise.resolve().then(() => qW);
47015
47015
  r = await new n(this, {
47016
47016
  fps: t?.fps,
47017
47017
  quality: t?.quality,
@@ -47023,7 +47023,7 @@ var pE = class e {
47023
47023
  workers: t?.workers
47024
47024
  }).exportTimeline(t?.duration), n.download(r, e);
47025
47025
  } else if (n === ".webm" || n === ".mp4" || n === ".mov") {
47026
- let { VideoExporter: i } = await Promise.resolve().then(() => BW), a = n === ".mp4" ? "mp4" : n === ".mov" ? "mov" : "webm";
47026
+ let { VideoExporter: i } = await Promise.resolve().then(() => ZW), a = n === ".mp4" ? "mp4" : n === ".mov" ? "mov" : "webm";
47027
47027
  r = await new i(this, {
47028
47028
  fps: t?.fps,
47029
47029
  quality: t?.quality,
@@ -81600,11 +81600,239 @@ function jW(e, t) {
81600
81600
  return new AW(e, t);
81601
81601
  }
81602
81602
  //#endregion
81603
+ //#region src/interaction/GamepadInput.ts
81604
+ var MW = {
81605
+ A: 0,
81606
+ B: 1,
81607
+ X: 2,
81608
+ Y: 3,
81609
+ LB: 4,
81610
+ RB: 5,
81611
+ LT: 6,
81612
+ RT: 7,
81613
+ select: 8,
81614
+ start: 9,
81615
+ L3: 10,
81616
+ R3: 11,
81617
+ dpadUp: 12,
81618
+ dpadDown: 13,
81619
+ dpadLeft: 14,
81620
+ dpadRight: 15,
81621
+ guide: 16
81622
+ }, NW = {
81623
+ leftX: 0,
81624
+ leftY: 1,
81625
+ rightX: 2,
81626
+ rightY: 3
81627
+ }, PW = {
81628
+ cross: "A",
81629
+ circle: "B",
81630
+ square: "X",
81631
+ triangle: "Y",
81632
+ l1: "LB",
81633
+ r1: "RB",
81634
+ l2: "LT",
81635
+ r2: "RT",
81636
+ back: "select",
81637
+ view: "select",
81638
+ menu: "start",
81639
+ home: "guide",
81640
+ up: "dpadUp",
81641
+ down: "dpadDown",
81642
+ left: "dpadLeft",
81643
+ right: "dpadRight"
81644
+ }, FW = Object.fromEntries(Object.entries(MW).map(([e, t]) => [e.toLowerCase(), t]));
81645
+ function IW(e) {
81646
+ if (typeof e == "number") return e;
81647
+ let t = e.toLowerCase(), n = PW[t];
81648
+ return n ? MW[n] : FW[t] ?? -1;
81649
+ }
81650
+ function LW(e) {
81651
+ return e || (typeof navigator < "u" && typeof navigator.getGamepads == "function" ? () => navigator.getGamepads() : null);
81652
+ }
81653
+ function RW(e) {
81654
+ return e || (typeof window < "u" && typeof window.addEventListener == "function" ? window : null);
81655
+ }
81656
+ function zW() {
81657
+ return LW() !== null;
81658
+ }
81659
+ var BW = class {
81660
+ _getGamepads;
81661
+ _eventTarget;
81662
+ _gamepadIndex;
81663
+ _deadzone;
81664
+ _down = /* @__PURE__ */ new Set();
81665
+ _pressed = /* @__PURE__ */ new Set();
81666
+ _released = /* @__PURE__ */ new Set();
81667
+ _axes = [];
81668
+ _buttonValues = [];
81669
+ _downCallbacks = /* @__PURE__ */ new Map();
81670
+ _upCallbacks = /* @__PURE__ */ new Map();
81671
+ _enabled = !1;
81672
+ _onConnect;
81673
+ _onDisconnect;
81674
+ constructor(e = {}, t, n) {
81675
+ this._getGamepads = LW(t), this._eventTarget = RW(n), this._gamepadIndex = e.gamepadIndex, this._deadzone = e.deadzone ?? .1, this._onConnect = this._handleConnect.bind(this), this._onDisconnect = this._handleDisconnect.bind(this), (e.autoEnable ?? !0) && this.enable();
81676
+ }
81677
+ get isEnabled() {
81678
+ return this._enabled;
81679
+ }
81680
+ get hasSource() {
81681
+ return this._getGamepads !== null;
81682
+ }
81683
+ get hasTarget() {
81684
+ return this._eventTarget !== null;
81685
+ }
81686
+ enable() {
81687
+ this._enabled ||= (this._eventTarget && (this._eventTarget.addEventListener("gamepadconnected", this._onConnect), this._eventTarget.addEventListener("gamepaddisconnected", this._onDisconnect)), !0);
81688
+ }
81689
+ disable() {
81690
+ this._eventTarget && (this._eventTarget.removeEventListener("gamepadconnected", this._onConnect), this._eventTarget.removeEventListener("gamepaddisconnected", this._onDisconnect)), this._enabled = !1, this.clear();
81691
+ }
81692
+ dispose() {
81693
+ this.disable(), this._downCallbacks.clear(), this._upCallbacks.clear();
81694
+ }
81695
+ clear() {
81696
+ this._down.clear(), this._pressed.clear(), this._released.clear(), this._axes = [], this._buttonValues = [];
81697
+ }
81698
+ poll() {
81699
+ this._pressed.clear(), this._released.clear();
81700
+ let e = this._readActivePad();
81701
+ if (!e) {
81702
+ this._releaseAll(), this._axes = [], this._buttonValues = [];
81703
+ return;
81704
+ }
81705
+ let t = e.buttons;
81706
+ for (let n = 0; n < t.length; n += 1) {
81707
+ let r = t[n]?.pressed ?? !1, i = this._down.has(n);
81708
+ r && !i ? (this._down.add(n), this._pressed.add(n), this._emit(this._downCallbacks, n, e)) : !r && i && (this._down.delete(n), this._released.add(n), this._emit(this._upCallbacks, n, e));
81709
+ }
81710
+ for (let n of [...this._down]) n >= t.length && (this._down.delete(n), this._released.add(n), this._emit(this._upCallbacks, n, e));
81711
+ this._axes = [...e.axes], this._buttonValues = t.map((e) => e?.value ?? 0);
81712
+ }
81713
+ update(e = 0) {
81714
+ this.poll();
81715
+ }
81716
+ isButtonDown(e) {
81717
+ let t = IW(e);
81718
+ return t >= 0 && this._down.has(t);
81719
+ }
81720
+ anyButtonDown() {
81721
+ return this._down.size > 0;
81722
+ }
81723
+ wasButtonPressed(e) {
81724
+ let t = IW(e);
81725
+ return t >= 0 && this._pressed.has(t);
81726
+ }
81727
+ wasButtonReleased(e) {
81728
+ let t = IW(e);
81729
+ return t >= 0 && this._released.has(t);
81730
+ }
81731
+ getButtonValue(e) {
81732
+ let t = IW(e);
81733
+ return t < 0 ? 0 : this._buttonValues[t] ?? 0;
81734
+ }
81735
+ getAxis(e, t = this._deadzone) {
81736
+ return this._applyDeadzone(this._axes[e] ?? 0, t);
81737
+ }
81738
+ getLeftStick() {
81739
+ return [this.getAxis(NW.leftX), 0 - this.getAxis(NW.leftY)];
81740
+ }
81741
+ getRightStick() {
81742
+ return [this.getAxis(NW.rightX), 0 - this.getAxis(NW.rightY)];
81743
+ }
81744
+ getDirectionVector() {
81745
+ let e = !!this.isButtonDown("dpadRight") - +!!this.isButtonDown("dpadLeft"), t = !!this.isButtonDown("dpadUp") - +!!this.isButtonDown("dpadDown");
81746
+ if (e !== 0 || t !== 0) return VW(e, t);
81747
+ let [n, r] = this.getLeftStick();
81748
+ return VW(n, r);
81749
+ }
81750
+ getConnectedGamepads() {
81751
+ if (!this._getGamepads) return [];
81752
+ try {
81753
+ return [...this._getGamepads()].filter((e) => e != null && (e.connected ?? !0));
81754
+ } catch {
81755
+ return [];
81756
+ }
81757
+ }
81758
+ onButtonDown(e, t) {
81759
+ return this._addCallback(this._downCallbacks, e, t);
81760
+ }
81761
+ onButtonUp(e, t) {
81762
+ return this._addCallback(this._upCallbacks, e, t);
81763
+ }
81764
+ bindBool(e, t, n) {
81765
+ let r = this.onButtonDown(n, () => e.setInput(t, !0)), i = this.onButtonUp(n, () => e.setInput(t, !1));
81766
+ return () => {
81767
+ r(), i();
81768
+ };
81769
+ }
81770
+ bindTrigger(e, t, n) {
81771
+ return this.onButtonDown(n, () => e.fire(t));
81772
+ }
81773
+ bindValue(e, t, n) {
81774
+ let r = n.releasedValue ?? 0, i = this.onButtonDown(t, () => e.setValue(n.heldValue)), a = this.onButtonUp(t, () => e.setValue(r));
81775
+ return () => {
81776
+ i(), a();
81777
+ };
81778
+ }
81779
+ _readActivePad() {
81780
+ if (!this._getGamepads) return null;
81781
+ let e;
81782
+ try {
81783
+ e = this._getGamepads() ?? [];
81784
+ } catch {
81785
+ return null;
81786
+ }
81787
+ if (this._gamepadIndex != null) return e[this._gamepadIndex] ?? null;
81788
+ for (let t of e) if (t && (t.connected ?? !0)) return t;
81789
+ return null;
81790
+ }
81791
+ _releaseAll() {
81792
+ if (this._down.size !== 0) {
81793
+ for (let e of [...this._down]) this._released.add(e), this._emit(this._upCallbacks, e, null);
81794
+ this._down.clear();
81795
+ }
81796
+ }
81797
+ _applyDeadzone(e, t) {
81798
+ return Math.abs(e) < t ? 0 : e;
81799
+ }
81800
+ _addCallback(e, t, n) {
81801
+ let r = this._callbackKey(t), i = e.get(r) ?? /* @__PURE__ */ new Set();
81802
+ return i.add(n), e.set(r, i), () => {
81803
+ i.delete(n), i.size === 0 && e.delete(r);
81804
+ };
81805
+ }
81806
+ _callbackKey(e) {
81807
+ if (e === "any") return "any";
81808
+ let t = IW(e);
81809
+ return t < 0 && qf.warn(`[manim-web] GamepadInput: unknown button "${String(e)}".`), t;
81810
+ }
81811
+ _emit(e, t, n) {
81812
+ e.get(t)?.forEach((e) => e(t, n)), e.get("any")?.forEach((e) => e(t, n));
81813
+ }
81814
+ _handleConnect(e) {
81815
+ let t = e.gamepad;
81816
+ qf.info(`[manim-web] GamepadInput: gamepad connected (index ${t?.index ?? "?"}).`);
81817
+ }
81818
+ _handleDisconnect(e) {
81819
+ let t = e.gamepad;
81820
+ qf.info(`[manim-web] GamepadInput: gamepad disconnected (index ${t?.index ?? "?"}).`);
81821
+ }
81822
+ };
81823
+ function VW(e, t) {
81824
+ let n = Math.hypot(e, t);
81825
+ return n === 0 ? [0, 0] : [e / n, t / n];
81826
+ }
81827
+ function HW(e, t, n) {
81828
+ return new BW(e, t, n);
81829
+ }
81830
+ //#endregion
81603
81831
  //#region src/interaction/PanZoomControls.ts
81604
- function MW(e, t, n) {
81832
+ function UW(e, t, n) {
81605
81833
  return Math.max(t, Math.min(n, e));
81606
81834
  }
81607
- var NW = class {
81835
+ var WW = class {
81608
81836
  _camera;
81609
81837
  _domElement;
81610
81838
  _options;
@@ -81656,7 +81884,7 @@ var NW = class {
81656
81884
  if (!this._enabled || !this._options.enableZoom) return;
81657
81885
  let t = this._eventToNdc(e.clientX, e.clientY);
81658
81886
  if (!t) return;
81659
- let n = this._worldAt(t.x, t.y), r = this._options.invertZoom ? -e.deltaY : e.deltaY, i = Math.exp(r * this._options.zoomSpeed), a = this._baseFrameWidth / this._options.maxZoom, o = this._baseFrameWidth / this._options.minZoom, s = MW(this._camera.frameWidth * i, a, o) / this._camera.frameWidth;
81887
+ let n = this._worldAt(t.x, t.y), r = this._options.invertZoom ? -e.deltaY : e.deltaY, i = Math.exp(r * this._options.zoomSpeed), a = this._baseFrameWidth / this._options.maxZoom, o = this._baseFrameWidth / this._options.minZoom, s = UW(this._camera.frameWidth * i, a, o) / this._camera.frameWidth;
81660
81888
  if (s === 1) return;
81661
81889
  this._camera.frameWidth = this._camera.frameWidth * s, this._camera.frameHeight = this._camera.frameHeight * s;
81662
81890
  let c = n.x - t.x * this._camera.frameWidth / 2, l = n.y - t.y * this._camera.frameHeight / 2;
@@ -81705,12 +81933,12 @@ var NW = class {
81705
81933
  this._options.onChange?.();
81706
81934
  }
81707
81935
  };
81708
- function PW(e, t, n) {
81709
- return new NW(e, t, n);
81936
+ function GW(e, t, n) {
81937
+ return new WW(e, t, n);
81710
81938
  }
81711
81939
  //#endregion
81712
81940
  //#region node_modules/gif.js/dist/gif.js
81713
- var FW = /* @__PURE__ */ r(((e, t) => {
81941
+ var KW = /* @__PURE__ */ r(((e, t) => {
81714
81942
  (function(n) {
81715
81943
  if (typeof e == "object" && t !== void 0) t.exports = n();
81716
81944
  else if (typeof define == "function" && define.amd) define([], n);
@@ -81964,10 +82192,10 @@ var FW = /* @__PURE__ */ r(((e, t) => {
81964
82192
  }]
81965
82193
  }, {}, [3])(3);
81966
82194
  });
81967
- })), IW = /* @__PURE__ */ t({
81968
- GifExporter: () => RW,
81969
- createGifExporter: () => zW
81970
- }), LW = /* @__PURE__ */ e(FW(), 1), RW = class e {
82195
+ })), qW = /* @__PURE__ */ t({
82196
+ GifExporter: () => YW,
82197
+ createGifExporter: () => XW
82198
+ }), JW = /* @__PURE__ */ e(KW(), 1), YW = class e {
81971
82199
  _scene;
81972
82200
  _options;
81973
82201
  constructor(e, t) {
@@ -81985,7 +82213,7 @@ var FW = /* @__PURE__ */ r(((e, t) => {
81985
82213
  };
81986
82214
  }
81987
82215
  async exportTimeline(e) {
81988
- let t = (e || this._options.duration || this._getTimelineDuration()) ?? 5, n = Math.ceil(t * this._options.fps), r = Math.round(1e3 / this._options.fps), i = await this._createWorkerBlobUrl(), a = new LW.default({
82216
+ let t = (e || this._options.duration || this._getTimelineDuration()) ?? 5, n = Math.ceil(t * this._options.fps), r = Math.round(1e3 / this._options.fps), i = await this._createWorkerBlobUrl(), a = new JW.default({
81989
82217
  workers: this._options.workers,
81990
82218
  quality: this._options.quality,
81991
82219
  width: this._options.width,
@@ -82044,15 +82272,15 @@ var FW = /* @__PURE__ */ r(((e, t) => {
82044
82272
  e.download(r, t);
82045
82273
  }
82046
82274
  };
82047
- function zW(e, t) {
82048
- return new RW(e, t);
82275
+ function XW(e, t) {
82276
+ return new YW(e, t);
82049
82277
  }
82050
82278
  //#endregion
82051
82279
  //#region src/export/VideoExporter.ts
82052
- var BW = /* @__PURE__ */ t({
82053
- VideoExporter: () => VW,
82054
- createVideoExporter: () => HW
82055
- }), VW = class e {
82280
+ var ZW = /* @__PURE__ */ t({
82281
+ VideoExporter: () => QW,
82282
+ createVideoExporter: () => $W
82283
+ }), QW = class e {
82056
82284
  _scene;
82057
82285
  _options;
82058
82286
  _mediaRecorder = null;
@@ -82144,26 +82372,26 @@ var BW = /* @__PURE__ */ t({
82144
82372
  return { ...this._options };
82145
82373
  }
82146
82374
  };
82147
- function HW(e, t) {
82148
- return new VW(e, t);
82375
+ function $W(e, t) {
82376
+ return new QW(e, t);
82149
82377
  }
82150
82378
  //#endregion
82151
82379
  //#region src/export/alphaBackground.ts
82152
- var UW = "Transparent export needs a WebGL context created with an alpha channel. Create the Scene with { alpha: true } (or backgroundOpacity < 1) so the canvas carries a real alpha channel to export.", WW = "Transparent export needs access to the WebGL renderer, but the scene did not expose one.";
82153
- function GW(e) {
82380
+ var eG = "Transparent export needs a WebGL context created with an alpha channel. Create the Scene with { alpha: true } (or backgroundOpacity < 1) so the canvas carries a real alpha channel to export.", tG = "Transparent export needs access to the WebGL renderer, but the scene did not expose one.";
82381
+ function nG(e) {
82154
82382
  let t = e.renderer;
82155
82383
  return !t || typeof t.getThreeRenderer != "function" ? null : t.getThreeRenderer() ?? null;
82156
82384
  }
82157
- function KW(e) {
82385
+ function rG(e) {
82158
82386
  return e.getContext().getContextAttributes()?.alpha === !0;
82159
82387
  }
82160
- function qW(e) {
82161
- let t = GW(e);
82162
- if (!t) throw Error(WW);
82163
- if (!KW(t)) throw Error(UW);
82388
+ function iG(e) {
82389
+ let t = nG(e);
82390
+ if (!t) throw Error(tG);
82391
+ if (!rG(t)) throw Error(eG);
82164
82392
  return t;
82165
82393
  }
82166
- async function JW(e, t) {
82394
+ async function aG(e, t) {
82167
82395
  let n = e.getClearAlpha();
82168
82396
  e.setClearAlpha(0);
82169
82397
  try {
@@ -82174,7 +82402,7 @@ async function JW(e, t) {
82174
82402
  }
82175
82403
  //#endregion
82176
82404
  //#region src/export/FrameExporter.ts
82177
- function YW(e, t, n) {
82405
+ function oG(e, t, n) {
82178
82406
  return new Promise((r, i) => {
82179
82407
  if (typeof e.toBlob == "function") {
82180
82408
  e.toBlob((e) => {
@@ -82183,22 +82411,22 @@ function YW(e, t, n) {
82183
82411
  return;
82184
82412
  }
82185
82413
  try {
82186
- r(XW(e.toDataURL(t, n)));
82414
+ r(sG(e.toDataURL(t, n)));
82187
82415
  } catch (e) {
82188
82416
  i(e instanceof Error ? e : Error(String(e)));
82189
82417
  }
82190
82418
  });
82191
82419
  }
82192
- function XW(e) {
82420
+ function sG(e) {
82193
82421
  let [t, n] = e.split(","), r = t.match(/data:([^;]+)/), i = r ? r[1] : "image/png", a = atob(n), o = new Uint8Array(a.length);
82194
82422
  for (let e = 0; e < a.length; e++) o[e] = a.charCodeAt(e);
82195
82423
  return new Blob([o], { type: i });
82196
82424
  }
82197
- async function ZW(e, t) {
82425
+ async function cG(e, t) {
82198
82426
  let n = t?.type ?? "image/png";
82199
- return t?.transparent ? JW(qW(e), () => (QW(e, t?.time), YW(e.getCanvas(), n, t?.quality))) : (t?.time !== void 0 && e.seek(t.time), YW(e.getCanvas(), n, t?.quality));
82427
+ return t?.transparent ? aG(iG(e), () => (lG(e, t?.time), oG(e.getCanvas(), n, t?.quality))) : (t?.time !== void 0 && e.seek(t.time), oG(e.getCanvas(), n, t?.quality));
82200
82428
  }
82201
- function QW(e, t) {
82429
+ function lG(e, t) {
82202
82430
  if (t !== void 0) {
82203
82431
  e.seek(t);
82204
82432
  return;
@@ -82209,29 +82437,29 @@ function QW(e, t) {
82209
82437
  }
82210
82438
  throw Error("Transparent single-frame export needs either a `time` to seek to, or a scene with a render() method, so the frame is re-rendered with a transparent background.");
82211
82439
  }
82212
- async function $W(e, t) {
82440
+ async function uG(e, t) {
82213
82441
  let n = t.fps, r = t.from ?? 0, i = t.to ?? e.getTimelineDuration() ?? 5, a = t.type ?? "image/png", o = t.onProgress ?? (() => {}), s = Math.max(0, i - r), c = Math.ceil(s * n), l = 1 / n, u = async () => {
82214
82442
  let n = [];
82215
82443
  for (let i = 0; i < c; i++) {
82216
82444
  let s = r + i * l;
82217
82445
  e.seek(s);
82218
82446
  let u = e.getCanvas();
82219
- n.push(await YW(u, a, t.quality)), o((i + 1) / c);
82447
+ n.push(await oG(u, a, t.quality)), o((i + 1) / c);
82220
82448
  }
82221
82449
  return n;
82222
82450
  };
82223
- return t.transparent ? JW(qW(e), u) : u();
82451
+ return t.transparent ? aG(iG(e), u) : u();
82224
82452
  }
82225
- function eG(e, t) {
82453
+ function dG(e, t) {
82226
82454
  let n = URL.createObjectURL(e), r = document.createElement("a");
82227
82455
  r.href = n, r.download = t, document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(n);
82228
82456
  }
82229
- async function tG(e, t = "frame.png", n) {
82230
- eG(await ZW(e, n), t);
82457
+ async function fG(e, t = "frame.png", n) {
82458
+ dG(await cG(e, n), t);
82231
82459
  }
82232
82460
  //#endregion
82233
82461
  //#region src/export/WebCodecsExporter.ts
82234
- var nG = {
82462
+ var pG = {
82235
82463
  avc: {
82236
82464
  encoderCodec: "avc1.42001f",
82237
82465
  mp4Codec: "avc",
@@ -82252,7 +82480,7 @@ var nG = {
82252
82480
  mp4Codec: "av1",
82253
82481
  webmCodec: "V_AV1"
82254
82482
  }
82255
- }, rG = class e {
82483
+ }, mG = class e {
82256
82484
  _scene;
82257
82485
  _options;
82258
82486
  constructor(e, t) {
@@ -82276,8 +82504,8 @@ var nG = {
82276
82504
  }
82277
82505
  async export() {
82278
82506
  if (!e.isSupported()) throw Error("WebCodecs VideoEncoder is not available in this environment. Use VideoExporter (MediaRecorder) instead to export video.");
82279
- let t = this._options, n = t.duration || this._scene.getTimelineDuration() || 5, r = Math.ceil(n * t.fps), i = nG[t.codec], a = null;
82280
- t.alpha && (this._assertAlphaCodec(), a = qW(this._scene), await this._assertAlphaEncodeSupport(i));
82507
+ let t = this._options, n = t.duration || this._scene.getTimelineDuration() || 5, r = Math.ceil(n * t.fps), i = pG[t.codec], a = null;
82508
+ t.alpha && (this._assertAlphaCodec(), a = iG(this._scene), await this._assertAlphaEncodeSupport(i));
82281
82509
  let o = await this._createMuxer(i), s = new window.VideoEncoder({
82282
82510
  output: (e, t) => o.addVideoChunk(e, t),
82283
82511
  error: (e) => qf.error("WebCodecs encoder error:", e)
@@ -82301,7 +82529,7 @@ var nG = {
82301
82529
  s.encode(i, { keyFrame: e % t.keyFrameInterval === 0 }), i.close(), t.onProgress(r === 0 ? 1 : (e + 1) / r);
82302
82530
  }
82303
82531
  };
82304
- return a ? await JW(a, d) : d(), await s.flush(), s.close(), o.finalize();
82532
+ return a ? await aG(a, d) : d(), await s.flush(), s.close(), o.finalize();
82305
82533
  }
82306
82534
  _assertAlphaCodec() {
82307
82535
  let e = this._options;
@@ -82357,30 +82585,30 @@ var nG = {
82357
82585
  return { ...this._options };
82358
82586
  }
82359
82587
  };
82360
- function iG(e, t) {
82361
- return new rG(e, t);
82588
+ function hG(e, t) {
82589
+ return new mG(e, t);
82362
82590
  }
82363
82591
  //#endregion
82364
82592
  //#region src/export/chooseExporter.ts
82365
- function aG(e = rG.isSupported()) {
82593
+ function gG(e = mG.isSupported()) {
82366
82594
  return e ? "webcodecs" : "mediarecorder";
82367
82595
  }
82368
82596
  //#endregion
82369
82597
  //#region src/export/SvgExporter.ts
82370
- var oG = 3;
82371
- function sG(e, t) {
82598
+ var _G = 3;
82599
+ function vG(e, t) {
82372
82600
  if (!Number.isFinite(e)) return "0";
82373
82601
  let n = Number(e.toFixed(t));
82374
82602
  return String(Object.is(n, -0) ? 0 : n);
82375
82603
  }
82376
- function cG(e) {
82604
+ function yG(e) {
82377
82605
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
82378
82606
  }
82379
- function lG(e, t, n) {
82607
+ function bG(e, t, n) {
82380
82608
  let r = e.position.x, i = e.position.y, a = e.frameWidth || 1, o = e.frameHeight || 1;
82381
82609
  return (e) => [(e[0] - r) / a * t + t / 2, n / 2 - (e[1] - i) / o * n];
82382
82610
  }
82383
- function uG(e, t) {
82611
+ function xG(e, t) {
82384
82612
  if (!t || t.length <= 1) return [e];
82385
82613
  let n = [], r = 0;
82386
82614
  for (let i of t) {
@@ -82389,11 +82617,11 @@ function uG(e, t) {
82389
82617
  }
82390
82618
  return r === e.length ? n : [e];
82391
82619
  }
82392
- function dG(e, t, n) {
82620
+ function SG(e, t, n) {
82393
82621
  if (e.length < 4) return null;
82394
82622
  let r = (e) => {
82395
82623
  let [r, i] = t(e);
82396
- return `${sG(r, n)} ${sG(i, n)}`;
82624
+ return `${vG(r, n)} ${vG(i, n)}`;
82397
82625
  }, i = [`M ${r(e[0])}`], a = Math.floor((e.length - 1) / 3);
82398
82626
  for (let t = 0; t < a; t++) {
82399
82627
  let n = e[3 * t + 1], a = e[3 * t + 2], o = e[3 * t + 3];
@@ -82401,65 +82629,65 @@ function dG(e, t, n) {
82401
82629
  }
82402
82630
  return jm(e) && i.push("Z"), i.join(" ");
82403
82631
  }
82404
- function fG(e) {
82632
+ function CG(e) {
82405
82633
  return e.style.fillColor ?? e.color;
82406
82634
  }
82407
- function pG(e, t, n, r) {
82635
+ function wG(e, t, n, r) {
82408
82636
  let i = e.getPoints();
82409
82637
  if (i.length < 4) return null;
82410
- let a = uG(i, e.getEffectiveSubpathLengths()), o = [];
82638
+ let a = xG(i, e.getEffectiveSubpathLengths()), o = [];
82411
82639
  for (let e of a) {
82412
- let n = dG(e, t, r);
82640
+ let n = SG(e, t, r);
82413
82641
  n && o.push(n);
82414
82642
  }
82415
82643
  if (o.length === 0) return null;
82416
82644
  let s = e.fillOpacity > 0, c = e.strokeWidth > 0;
82417
82645
  if (!s && !c) return null;
82418
82646
  let l = [`d="${o.join(" ")}"`];
82419
- return s ? (l.push(`fill="${cG(fG(e))}"`), l.push("fill-rule=\"nonzero\""), e.fillOpacity < 1 && l.push(`fill-opacity="${sG(e.fillOpacity, r)}"`)) : l.push("fill=\"none\""), c && (l.push(`stroke="${cG(e.color)}"`), l.push(`stroke-width="${sG(e.strokeWidth * n, r)}"`), l.push("stroke-linejoin=\"round\""), l.push("stroke-linecap=\"round\""), e.opacity < 1 && l.push(`stroke-opacity="${sG(e.opacity, r)}"`)), `<path ${l.join(" ")} />`;
82647
+ return s ? (l.push(`fill="${yG(CG(e))}"`), l.push("fill-rule=\"nonzero\""), e.fillOpacity < 1 && l.push(`fill-opacity="${vG(e.fillOpacity, r)}"`)) : l.push("fill=\"none\""), c && (l.push(`stroke="${yG(e.color)}"`), l.push(`stroke-width="${vG(e.strokeWidth * n, r)}"`), l.push("stroke-linejoin=\"round\""), l.push("stroke-linecap=\"round\""), e.opacity < 1 && l.push(`stroke-opacity="${vG(e.opacity, r)}"`)), `<path ${l.join(" ")} />`;
82420
82648
  }
82421
- function mG(e) {
82649
+ function TG(e) {
82422
82650
  return e instanceof z && e.getPoints().length >= 4;
82423
82651
  }
82424
- function hG(e, t) {
82425
- let n = t?.precision ?? oG, r = e.getWidth(), i = e.getHeight(), a = e.camera, o = lG(a, r, i), s = .01 * r / (a.frameWidth || 1), c = [];
82652
+ function EG(e, t) {
82653
+ let n = t?.precision ?? _G, r = e.getWidth(), i = e.getHeight(), a = e.camera, o = bG(a, r, i), s = .01 * r / (a.frameWidth || 1), c = [];
82426
82654
  for (let t of e.mobjects) {
82427
82655
  let e = [];
82428
82656
  for (let r of t.getFamily()) {
82429
- if (!mG(r)) continue;
82430
- let t = pG(r, o, s, n);
82657
+ if (!TG(r)) continue;
82658
+ let t = wG(r, o, s, n);
82431
82659
  t && e.push(t);
82432
82660
  }
82433
82661
  if (e.length === 0) continue;
82434
- let r = t.userId ? ` data-mobject-id="${cG(t.userId)}"` : "";
82662
+ let r = t.userId ? ` data-mobject-id="${yG(t.userId)}"` : "";
82435
82663
  c.push(` <g${r}>\n ${e.join("\n ")}\n </g>`);
82436
82664
  }
82437
- let l = sG(r, n), u = sG(i, n);
82438
- return `${`<svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${u}" viewBox="0 0 ${l} ${u}">`}${t?.background ? `\n <rect x="0" y="0" width="${l}" height="${u}" fill="${cG(t.background)}" />` : ""}${c.length > 0 ? `\n${c.join("\n")}\n` : "\n"}</svg>`;
82665
+ let l = vG(r, n), u = vG(i, n);
82666
+ return `${`<svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${u}" viewBox="0 0 ${l} ${u}">`}${t?.background ? `\n <rect x="0" y="0" width="${l}" height="${u}" fill="${yG(t.background)}" />` : ""}${c.length > 0 ? `\n${c.join("\n")}\n` : "\n"}</svg>`;
82439
82667
  }
82440
- function gG(e, t) {
82441
- let n = hG(e, t);
82668
+ function DG(e, t) {
82669
+ let n = EG(e, t);
82442
82670
  return new Blob([n], { type: "image/svg+xml" });
82443
82671
  }
82444
- function _G(e, t = "scene.svg", n) {
82672
+ function OG(e, t = "scene.svg", n) {
82445
82673
  if (typeof document > "u") throw Error("exportAndDownloadSVG requires a DOM (document is undefined)");
82446
- eG(gG(e, n), t);
82674
+ dG(DG(e, n), t);
82447
82675
  }
82448
82676
  //#endregion
82449
82677
  //#region src/export/SlideDeckExporter.ts
82450
- var vG = "PNG";
82451
- function yG(e, t) {
82678
+ var kG = "PNG";
82679
+ function AG(e, t) {
82452
82680
  return e.seek(t), {
82453
82681
  dataUrl: e.getCanvas().toDataURL("image/png"),
82454
82682
  width: e.getWidth(),
82455
82683
  height: e.getHeight()
82456
82684
  };
82457
82685
  }
82458
- async function bG(e) {
82686
+ async function jG(e) {
82459
82687
  let { jsPDF: t } = await import("./jspdf.es.min-CvMJL6nS.js");
82460
82688
  return new t(e);
82461
82689
  }
82462
- function xG(e, t, n, r) {
82690
+ function MG(e, t, n, r) {
82463
82691
  let i = e > 0 ? e : 1, a = t > 0 ? t : 1, o = Math.min(n / i, r / a), s = i * o, c = a * o;
82464
82692
  return {
82465
82693
  x: (n - s) / 2,
@@ -82468,33 +82696,33 @@ function xG(e, t, n, r) {
82468
82696
  h: c
82469
82697
  };
82470
82698
  }
82471
- function SG(e, t) {
82699
+ function NG(e, t) {
82472
82700
  return t === "first" ? e.startTime : e.endTime;
82473
82701
  }
82474
- async function CG(e, t) {
82702
+ async function PG(e, t) {
82475
82703
  let n = e.timeline.getSlides();
82476
82704
  if (n.length === 0) return null;
82477
- let r = t?.still ?? "last", i = t?.orientation ?? "landscape", a = t?.pageSize ?? "a4", o = t?.unit ?? "pt", s = t?.imageFormat ?? vG, c = t?.background, l = t?.captureSlide ?? yG, u = t?.pdfFactory ?? bG, d = t?.onProgress ?? (() => {}), f = await u({
82705
+ let r = t?.still ?? "last", i = t?.orientation ?? "landscape", a = t?.pageSize ?? "a4", o = t?.unit ?? "pt", s = t?.imageFormat ?? kG, c = t?.background, l = t?.captureSlide ?? AG, u = t?.pdfFactory ?? jG, d = t?.onProgress ?? (() => {}), f = await u({
82478
82706
  orientation: i,
82479
82707
  unit: o,
82480
82708
  format: a
82481
82709
  }), p = f.internal.pageSize.getWidth(), m = f.internal.pageSize.getHeight();
82482
82710
  for (let t = 0; t < n.length; t++) {
82483
82711
  t > 0 && f.addPage(a, i), c && (f.setFillColor(c[0], c[1], c[2]), f.rect(0, 0, p, m, "F"));
82484
- let o = await l(e.scene, SG(n[t], r)), u = xG(o.width, o.height, p, m);
82712
+ let o = await l(e.scene, NG(n[t], r)), u = MG(o.width, o.height, p, m);
82485
82713
  f.addImage(o.dataUrl, s, u.x, u.y, u.w, u.h), d((t + 1) / n.length);
82486
82714
  }
82487
82715
  return f.output("blob");
82488
82716
  }
82489
- async function wG(e, t = "slides.pdf", n) {
82717
+ async function FG(e, t = "slides.pdf", n) {
82490
82718
  if (typeof document > "u") {
82491
82719
  qf.warn("exportAndDownloadSlidesToPDF: no DOM available, skipping download.");
82492
82720
  return;
82493
82721
  }
82494
- let r = await CG(e, n);
82495
- r && eG(r, t);
82722
+ let r = await PG(e, n);
82723
+ r && dG(r, t);
82496
82724
  }
82497
- async function TG() {
82725
+ async function IG() {
82498
82726
  let e;
82499
82727
  try {
82500
82728
  e = await import(
@@ -82506,14 +82734,14 @@ async function TG() {
82506
82734
  }
82507
82735
  return new (e.default ?? e)();
82508
82736
  }
82509
- async function EG(e, t) {
82737
+ async function LG(e, t) {
82510
82738
  let n = e.timeline.getSlides();
82511
82739
  if (n.length === 0) return null;
82512
- let r = t?.still ?? "last", i = t?.slideWidth ?? 13.333, a = t?.slideHeight ?? 7.5, o = t?.background, s = t?.captureSlide ?? yG, c = t?.pptxFactory ?? TG, l = t?.onProgress ?? (() => {}), u = await c();
82740
+ let r = t?.still ?? "last", i = t?.slideWidth ?? 13.333, a = t?.slideHeight ?? 7.5, o = t?.background, s = t?.captureSlide ?? AG, c = t?.pptxFactory ?? IG, l = t?.onProgress ?? (() => {}), u = await c();
82513
82741
  for (let t = 0; t < n.length; t++) {
82514
82742
  let c = u.addSlide();
82515
82743
  o && (c.background = { color: o });
82516
- let d = await s(e.scene, SG(n[t], r));
82744
+ let d = await s(e.scene, NG(n[t], r));
82517
82745
  c.addImage({
82518
82746
  data: d.dataUrl,
82519
82747
  x: 0,
@@ -82531,7 +82759,7 @@ async function EG(e, t) {
82531
82759
  }
82532
82760
  //#endregion
82533
82761
  //#region src/player/ExportSettingsUI.ts
82534
- var DG = [
82762
+ var RG = [
82535
82763
  {
82536
82764
  id: "current",
82537
82765
  label: "Current",
@@ -82568,11 +82796,11 @@ var DG = [
82568
82796
  width: 3840,
82569
82797
  height: 2160
82570
82798
  }
82571
- ], OG = [
82799
+ ], zG = [
82572
82800
  24,
82573
82801
  30,
82574
82802
  60
82575
- ], kG = [
82803
+ ], BG = [
82576
82804
  {
82577
82805
  id: "low",
82578
82806
  label: "Low",
@@ -82588,12 +82816,12 @@ var DG = [
82588
82816
  label: "High",
82589
82817
  value: .9
82590
82818
  }
82591
- ], AG = 1e7;
82592
- function jG(e) {
82593
- return Math.round(Math.max(0, Math.min(1, e)) * AG);
82819
+ ], VG = 1e7;
82820
+ function HG(e) {
82821
+ return Math.round(Math.max(0, Math.min(1, e)) * VG);
82594
82822
  }
82595
- function MG(e, t, n) {
82596
- let r = DG.find((t) => t.id === e);
82823
+ function UG(e, t, n) {
82824
+ let r = RG.find((t) => t.id === e);
82597
82825
  return !r || r.width === null || r.height === null ? {
82598
82826
  width: t,
82599
82827
  height: n
@@ -82602,7 +82830,7 @@ function MG(e, t, n) {
82602
82830
  height: r.height
82603
82831
  };
82604
82832
  }
82605
- var NG = class {
82833
+ var WG = class {
82606
82834
  _element;
82607
82835
  _fpsSelect;
82608
82836
  _resolutionSelect;
@@ -82615,22 +82843,22 @@ var NG = class {
82615
82843
  display: "flex",
82616
82844
  flexDirection: "column",
82617
82845
  gap: "6px"
82618
- }), this._element.setAttribute("data-export-settings", ""), this._fpsSelect = this._buildSelect("FPS", OG.map((e) => ({
82846
+ }), this._element.setAttribute("data-export-settings", ""), this._fpsSelect = this._buildSelect("FPS", zG.map((e) => ({
82619
82847
  value: String(e),
82620
82848
  label: `${e} fps`
82621
- })), String(this._nearestFps(e.fps))), this._resolutionSelect = this._buildSelect("Resolution", DG.map((e) => ({
82849
+ })), String(this._nearestFps(e.fps))), this._resolutionSelect = this._buildSelect("Resolution", RG.map((e) => ({
82622
82850
  value: e.id,
82623
82851
  label: e.label
82624
- })), "current"), this._qualitySelect = this._buildSelect("Quality", kG.map((e) => ({
82852
+ })), "current"), this._qualitySelect = this._buildSelect("Quality", BG.map((e) => ({
82625
82853
  value: String(e.value),
82626
82854
  label: e.label
82627
- })), String(kG[kG.length - 1].value));
82855
+ })), String(BG[BG.length - 1].value));
82628
82856
  }
82629
82857
  get element() {
82630
82858
  return this._element;
82631
82859
  }
82632
82860
  getSettings() {
82633
- let e = parseInt(this._fpsSelect.value, 10), { width: t, height: n } = MG(this._resolutionSelect.value, this._defaults.width, this._defaults.height);
82861
+ let e = parseInt(this._fpsSelect.value, 10), { width: t, height: n } = UG(this._resolutionSelect.value, this._defaults.width, this._defaults.height);
82634
82862
  return {
82635
82863
  fps: e,
82636
82864
  width: t,
@@ -82639,7 +82867,7 @@ var NG = class {
82639
82867
  };
82640
82868
  }
82641
82869
  _nearestFps(e) {
82642
- return OG.reduce((t, n) => Math.abs(n - e) < Math.abs(t - e) ? n : t);
82870
+ return zG.reduce((t, n) => Math.abs(n - e) < Math.abs(t - e) ? n : t);
82643
82871
  }
82644
82872
  _buildSelect(e, t, n) {
82645
82873
  let r = document.createElement("label");
@@ -82670,7 +82898,7 @@ var NG = class {
82670
82898
  }
82671
82899
  return a.value = n, a.addEventListener("click", (e) => e.stopPropagation()), r.appendChild(i), r.appendChild(a), this._element.appendChild(r), a;
82672
82900
  }
82673
- }, PG = class {
82901
+ }, GG = class {
82674
82902
  _container;
82675
82903
  _bar;
82676
82904
  _playBtn;
@@ -82706,19 +82934,19 @@ var NG = class {
82706
82934
  this._container = e, this._callbacks = t, this._autoHideMs = n.autoHideMs ?? 2500, this._exportControls = n.exportControls ?? !1, getComputedStyle(e).position === "static" && (e.style.position = "relative"), e.style.overflow = "hidden", this._bar = this._createBar(), this._playBtn = this._createPlayBtn(), this._prevBtn = this._createNavBtn("prev"), this._nextBtn = this._createNavBtn("next");
82707
82935
  let r = this._createProgressBar();
82708
82936
  this._progressWrap = r.wrap, this._progressFill = r.fill, this._segmentMarkers = r.markers, this._timeDisplay = this._createTimeDisplay(), this._speedSelect = this._createSpeedSelect(), this._fullscreenBtn = this._createFullscreenBtn(), this._slidesBtn = this._createSlidesBtn(), this._exportBtn = this._createExportBtn();
82709
- let i = FG("div", {
82937
+ let i = KG("div", {
82710
82938
  display: "flex",
82711
82939
  alignItems: "center",
82712
82940
  gap: "4px"
82713
82941
  });
82714
82942
  i.appendChild(this._prevBtn), i.appendChild(this._playBtn), i.appendChild(this._nextBtn);
82715
- let a = FG("div", {
82943
+ let a = KG("div", {
82716
82944
  display: "flex",
82717
82945
  alignItems: "center",
82718
82946
  gap: "8px"
82719
82947
  });
82720
82948
  a.appendChild(this._timeDisplay), a.appendChild(this._speedSelect), a.appendChild(this._slidesBtn), a.appendChild(this._exportBtnWrapper), a.appendChild(this._fullscreenBtn), this._bar.appendChild(this._progressWrap);
82721
- let o = FG("div", {
82949
+ let o = KG("div", {
82722
82950
  display: "flex",
82723
82951
  alignItems: "center",
82724
82952
  justifyContent: "space-between",
@@ -82733,10 +82961,10 @@ var NG = class {
82733
82961
  let n = e / t * 100;
82734
82962
  this._progressFill.style.width = `${n}%`;
82735
82963
  }
82736
- this._timeDisplay.textContent = `${LG(e)} / ${LG(t)}`;
82964
+ this._timeDisplay.textContent = `${JG(e)} / ${JG(t)}`;
82737
82965
  }
82738
82966
  setPlaying(e, t = !1) {
82739
- this._isPlaying = e, t ? (this._playBtn.innerHTML = BG, this._playBtn.title = "Replay (Space)") : (this._playBtn.innerHTML = e ? zG : RG, this._playBtn.title = e ? "Pause (Space)" : "Play (Space)"), e && this._scheduleHide();
82967
+ this._isPlaying = e, t ? (this._playBtn.innerHTML = ZG, this._playBtn.title = "Replay (Space)") : (this._playBtn.innerHTML = e ? XG : YG, this._playBtn.title = e ? "Pause (Space)" : "Play (Space)"), e && this._scheduleHide();
82740
82968
  }
82741
82969
  setSlidesMode(e) {
82742
82970
  this._slidesActive = e, this._slidesBtn.style.opacity = e ? "1" : "0.4", this._slidesBtn.style.background = e ? "rgba(74,158,255,0.25)" : "none", this._slidesBtn.title = `Slides mode ${e ? "on" : "off"} (S)`;
@@ -82746,7 +82974,7 @@ var NG = class {
82746
82974
  let t = e.getSlides(), n = e.getDuration();
82747
82975
  if (!(n <= 0)) for (let e of t) {
82748
82976
  if (e.index === 0) continue;
82749
- let t = FG("div", {
82977
+ let t = KG("div", {
82750
82978
  position: "absolute",
82751
82979
  left: `${e.startTime / n * 100}%`,
82752
82980
  top: "50%",
@@ -82761,7 +82989,7 @@ var NG = class {
82761
82989
  }
82762
82990
  }
82763
82991
  _createBar() {
82764
- let e = FG("div", {
82992
+ let e = KG("div", {
82765
82993
  position: "absolute",
82766
82994
  bottom: "0",
82767
82995
  left: "0",
@@ -82779,21 +83007,21 @@ var NG = class {
82779
83007
  }
82780
83008
  _createPlayBtn() {
82781
83009
  let e = document.createElement("button");
82782
- return e.innerHTML = RG, e.title = "Play (Space)", IG(e, "36px", "36px"), e.addEventListener("click", () => this._callbacks.onPlayPause()), e;
83010
+ return e.innerHTML = YG, e.title = "Play (Space)", qG(e, "36px", "36px"), e.addEventListener("click", () => this._callbacks.onPlayPause()), e;
82783
83011
  }
82784
83012
  _createNavBtn(e) {
82785
83013
  let t = document.createElement("button");
82786
- return t.innerHTML = e === "prev" ? VG : HG, t.title = e === "prev" ? "Previous (Left arrow)" : "Next (Right arrow)", IG(t, "28px", "28px"), t.addEventListener("click", () => {
83014
+ return t.innerHTML = e === "prev" ? QG : $G, t.title = e === "prev" ? "Previous (Left arrow)" : "Next (Right arrow)", qG(t, "28px", "28px"), t.addEventListener("click", () => {
82787
83015
  e === "prev" ? this._callbacks.onPrev() : this._callbacks.onNext();
82788
83016
  }), t;
82789
83017
  }
82790
83018
  _createProgressBar() {
82791
- let e = FG("div", {
83019
+ let e = KG("div", {
82792
83020
  position: "relative",
82793
83021
  height: "16px",
82794
83022
  padding: "6px 12px",
82795
83023
  cursor: "pointer"
82796
- }), t = FG("div", {
83024
+ }), t = KG("div", {
82797
83025
  position: "absolute",
82798
83026
  left: "12px",
82799
83027
  right: "12px",
@@ -82803,14 +83031,14 @@ var NG = class {
82803
83031
  background: "rgba(255,255,255,0.2)",
82804
83032
  borderRadius: "2px",
82805
83033
  overflow: "visible"
82806
- }), n = FG("div", {
83034
+ }), n = KG("div", {
82807
83035
  width: "0%",
82808
83036
  height: "100%",
82809
83037
  background: "#4a9eff",
82810
83038
  borderRadius: "2px",
82811
83039
  transition: "none",
82812
83040
  position: "relative"
82813
- }), r = FG("div", {
83041
+ }), r = KG("div", {
82814
83042
  position: "absolute",
82815
83043
  right: "-5px",
82816
83044
  top: "50%",
@@ -82823,7 +83051,7 @@ var NG = class {
82823
83051
  transition: "transform 0.1s"
82824
83052
  });
82825
83053
  n.appendChild(r);
82826
- let i = FG("div", {
83054
+ let i = KG("div", {
82827
83055
  width: "0%",
82828
83056
  height: "100%",
82829
83057
  background: "rgba(255,255,255,0.1)",
@@ -82832,7 +83060,7 @@ var NG = class {
82832
83060
  top: "0",
82833
83061
  left: "0",
82834
83062
  pointerEvents: "none"
82835
- }), a = FG("div", {
83063
+ }), a = KG("div", {
82836
83064
  position: "absolute",
82837
83065
  top: "0",
82838
83066
  left: "0",
@@ -82857,7 +83085,7 @@ var NG = class {
82857
83085
  };
82858
83086
  }
82859
83087
  _createTimeDisplay() {
82860
- let e = FG("span", {
83088
+ let e = KG("span", {
82861
83089
  fontFamily: "\"SF Mono\", Monaco, Consolas, monospace",
82862
83090
  fontSize: "12px",
82863
83091
  opacity: "0.8",
@@ -82899,16 +83127,16 @@ var NG = class {
82899
83127
  }), e;
82900
83128
  }
82901
83129
  _createExportBtn() {
82902
- let e = FG("div", {
83130
+ let e = KG("div", {
82903
83131
  position: "relative",
82904
83132
  display: "inline-block"
82905
83133
  }), t = document.createElement("button");
82906
- return t.innerHTML = UG, t.title = "Export animation", IG(t, "28px", "28px"), t.addEventListener("click", (e) => {
83134
+ return t.innerHTML = eK, t.title = "Export animation", qG(t, "28px", "28px"), t.addEventListener("click", (e) => {
82907
83135
  e.stopPropagation(), this._exportMenu ? this._closeExportMenu() : this._showExportMenu();
82908
83136
  }), e.appendChild(t), this._exportBtnWrapper = e, t;
82909
83137
  }
82910
83138
  _showExportMenu() {
82911
- let e = this._exportBtn.getBoundingClientRect(), t = FG("div", {
83139
+ let e = this._exportBtn.getBoundingClientRect(), t = KG("div", {
82912
83140
  position: "fixed",
82913
83141
  top: "0",
82914
83142
  left: "0",
@@ -82919,7 +83147,7 @@ var NG = class {
82919
83147
  t.setAttribute("data-player-bar", ""), t.addEventListener("mousedown", (e) => {
82920
83148
  e.stopPropagation(), e.preventDefault(), this._closeExportMenu();
82921
83149
  });
82922
- let n = FG("div", {
83150
+ let n = KG("div", {
82923
83151
  position: "fixed",
82924
83152
  bottom: `${window.innerHeight - e.top + 6}px`,
82925
83153
  left: `${e.left - 60}px`,
@@ -82940,7 +83168,7 @@ var NG = class {
82940
83168
  height: 1080,
82941
83169
  fps: 60
82942
83170
  };
82943
- this._exportPanel = new NG(e), n.appendChild(this._exportPanel.element);
83171
+ this._exportPanel = new WG(e), n.appendChild(this._exportPanel.element);
82944
83172
  }
82945
83173
  for (let e of [
82946
83174
  {
@@ -82959,7 +83187,7 @@ var NG = class {
82959
83187
  desc: "Video file"
82960
83188
  }
82961
83189
  ]) {
82962
- let t = FG("div", {
83190
+ let t = KG("div", {
82963
83191
  padding: "8px 14px",
82964
83192
  cursor: "pointer",
82965
83193
  fontSize: "13px",
@@ -82984,7 +83212,7 @@ var NG = class {
82984
83212
  this._exportMenu && (this._exportMenuBackdrop?.remove(), this._exportMenuBackdrop = null, this._exportMenu.remove(), this._exportMenu = null, this._exportPanel = null);
82985
83213
  }
82986
83214
  setExportProgress(e) {
82987
- if (e === null) this._exportBtn.innerHTML = UG, this._exportBtn.disabled = !1, this._exportBtn.title = "Export animation";
83215
+ if (e === null) this._exportBtn.innerHTML = eK, this._exportBtn.disabled = !1, this._exportBtn.title = "Export animation";
82988
83216
  else {
82989
83217
  let t = Math.round(e * 100);
82990
83218
  this._exportBtn.innerHTML = `<span style="font-size:10px;font-weight:600">${t}%</span>`, this._exportBtn.disabled = !0, this._exportBtn.title = `Exporting... ${t}%`;
@@ -82992,7 +83220,7 @@ var NG = class {
82992
83220
  }
82993
83221
  _createSlidesBtn() {
82994
83222
  let e = document.createElement("button");
82995
- return e.innerHTML = WG, e.title = "Slides mode off (S)", IG(e, "28px", "28px"), e.style.opacity = "0.4", e.addEventListener("click", () => {
83223
+ return e.innerHTML = tK, e.title = "Slides mode off (S)", qG(e, "28px", "28px"), e.style.opacity = "0.4", e.addEventListener("click", () => {
82996
83224
  this._slidesActive = !this._slidesActive, this.setSlidesMode(this._slidesActive), this._callbacks.onSlidesToggle(this._slidesActive);
82997
83225
  }), e.addEventListener("mouseenter", () => {
82998
83226
  e.style.background = this._slidesActive ? "rgba(74,158,255,0.35)" : "rgba(255,255,255,0.15)";
@@ -83002,7 +83230,7 @@ var NG = class {
83002
83230
  }
83003
83231
  _createFullscreenBtn() {
83004
83232
  let e = document.createElement("button");
83005
- return e.innerHTML = GG, e.title = "Fullscreen (F)", IG(e, "28px", "28px"), e.addEventListener("click", () => this._callbacks.onFullscreen()), e;
83233
+ return e.innerHTML = nK, e.title = "Fullscreen (F)", qG(e, "28px", "28px"), e.addEventListener("click", () => this._callbacks.onFullscreen()), e;
83006
83234
  }
83007
83235
  _showControls() {
83008
83236
  this._isVisible ||= (this._bar.style.opacity = "1", this._bar.style.transform = "translateY(0)", !0), this._scheduleHide();
@@ -83057,11 +83285,11 @@ var NG = class {
83057
83285
  this._hideTimeout && clearTimeout(this._hideTimeout), this._container.removeEventListener("mousemove", this._onMouseMove), this._container.removeEventListener("mouseleave", this._onMouseLeave), this._progressWrap.removeEventListener("mousedown", this._onProgressDown), document.removeEventListener("mousemove", this._onProgressMove), document.removeEventListener("mouseup", this._onProgressUp), this._bar.remove();
83058
83286
  }
83059
83287
  };
83060
- function FG(e, t) {
83288
+ function KG(e, t) {
83061
83289
  let n = document.createElement(e);
83062
83290
  return Object.assign(n.style, t), n;
83063
83291
  }
83064
- function IG(e, t, n) {
83292
+ function qG(e, t, n) {
83065
83293
  Object.assign(e.style, {
83066
83294
  width: t,
83067
83295
  height: n,
@@ -83082,11 +83310,11 @@ function IG(e, t, n) {
83082
83310
  e.style.background = "none";
83083
83311
  });
83084
83312
  }
83085
- function LG(e) {
83313
+ function JG(e) {
83086
83314
  let t = Math.floor(e / 60), n = Math.floor(e % 60);
83087
83315
  return `${t}:${String(n).padStart(2, "0")}`;
83088
83316
  }
83089
- var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><path d=\"M5 3l10 6-10 6V3z\"/></svg>", zG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><rect x=\"4\" y=\"3\" width=\"3.5\" height=\"12\" rx=\"0.5\"/><rect x=\"10.5\" y=\"3\" width=\"3.5\" height=\"12\" rx=\"0.5\"/></svg>", BG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><path d=\"M9 3a6 6 0 1 0 6 6h-2a4 4 0 1 1-4-4v3l4-3.5L9 1v2z\"/></svg>", VG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"2\" y=\"3\" width=\"2\" height=\"10\"/><path d=\"M14 3L6 8l8 5V3z\"/></svg>", HG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"12\" y=\"3\" width=\"2\" height=\"10\"/><path d=\"M2 3l8 5-8 5V3z\"/></svg>", UG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><path d=\"M8 1L8 10M8 10L5 7M8 10L11 7\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M3 12v1h10v-1\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\"/></svg>", WG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"1\" y=\"2\" width=\"14\" height=\"10\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/><path d=\"M5 14h6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/><path d=\"M6 6l5 3-5 3V6z\"/></svg>", GG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><path d=\"M2 2h4v2H4v2H2V2zm8 0h4v4h-2V4h-2V2zM2 10h2v2h2v2H2v-4zm10 2h-2v2h4v-4h-2v2z\"/></svg>", KG = class {
83317
+ var YG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><path d=\"M5 3l10 6-10 6V3z\"/></svg>", XG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><rect x=\"4\" y=\"3\" width=\"3.5\" height=\"12\" rx=\"0.5\"/><rect x=\"10.5\" y=\"3\" width=\"3.5\" height=\"12\" rx=\"0.5\"/></svg>", ZG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><path d=\"M9 3a6 6 0 1 0 6 6h-2a4 4 0 1 1-4-4v3l4-3.5L9 1v2z\"/></svg>", QG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"2\" y=\"3\" width=\"2\" height=\"10\"/><path d=\"M14 3L6 8l8 5V3z\"/></svg>", $G = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"12\" y=\"3\" width=\"2\" height=\"10\"/><path d=\"M2 3l8 5-8 5V3z\"/></svg>", eK = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><path d=\"M8 1L8 10M8 10L5 7M8 10L11 7\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M3 12v1h10v-1\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\"/></svg>", tK = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"1\" y=\"2\" width=\"14\" height=\"10\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/><path d=\"M5 14h6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/><path d=\"M6 6l5 3-5 3V6z\"/></svg>", nK = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><path d=\"M2 2h4v2H4v2H2V2zm8 0h4v4h-2V4h-2V2zM2 10h2v2h2v2H2v-4zm10 2h-2v2h4v-4h-2v2z\"/></svg>", rK = class {
83090
83318
  _container;
83091
83319
  _callbacks;
83092
83320
  _onKeyDown;
@@ -83116,7 +83344,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83116
83344
  dispose() {
83117
83345
  this._container.removeEventListener("keydown", this._onKeyDown);
83118
83346
  }
83119
- }, qG = class {
83347
+ }, iK = class {
83120
83348
  _realScene;
83121
83349
  _masterTimeline;
83122
83350
  constructor(e, t) {
@@ -83153,7 +83381,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83153
83381
  for (let n of e) t.push(n), n instanceof HT && t.push(...this._collectAll(n.animations));
83154
83382
  return t;
83155
83383
  }
83156
- }, JG = [
83384
+ }, aK = [
83157
83385
  "mousedown",
83158
83386
  "mousemove",
83159
83387
  "mouseup",
@@ -83161,7 +83389,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83161
83389
  "touchstart",
83162
83390
  "touchmove",
83163
83391
  "touchend"
83164
- ], YG = class {
83392
+ ], oK = class {
83165
83393
  _target;
83166
83394
  _scene;
83167
83395
  _isIdle;
@@ -83180,13 +83408,13 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83180
83408
  }
83181
83409
  attach() {
83182
83410
  if (!this._attached) {
83183
- for (let e of JG) this._target.addEventListener(e, this._onEvent);
83411
+ for (let e of aK) this._target.addEventListener(e, this._onEvent);
83184
83412
  this._attached = !0;
83185
83413
  }
83186
83414
  }
83187
83415
  dispose() {
83188
83416
  if (this._attached) {
83189
- for (let e of JG) this._target.removeEventListener(e, this._onEvent);
83417
+ for (let e of aK) this._target.removeEventListener(e, this._onEvent);
83190
83418
  this._attached = !1, this._renderScheduled = !1;
83191
83419
  }
83192
83420
  }
@@ -83198,7 +83426,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83198
83426
  this._renderScheduled = !1, !(!this._attached || !this._isIdle()) && (this._scene.render(), this._renderCount++);
83199
83427
  }));
83200
83428
  }
83201
- }, XG = class {
83429
+ }, sK = class {
83202
83430
  _scene;
83203
83431
  _masterTimeline;
83204
83432
  _ui;
@@ -83221,7 +83449,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83221
83449
  _origHeight = 0;
83222
83450
  _onFullscreenChange;
83223
83451
  constructor(e, t = {}) {
83224
- this._container = e, this._loop = t.loop ?? !1, this._autoPlay = t.autoPlay ?? !1, this._slidesMode = t.slidesMode ?? !1, this._interactiveSlides = t.interactiveSlides ?? !1, this._exportControls = t.exportControls ?? !1, this._exportFps = t.targetFps ?? 60, this._scene = new pE(e, t), this._masterTimeline = new bB(), this._ui = new PG(e, {
83452
+ this._container = e, this._loop = t.loop ?? !1, this._autoPlay = t.autoPlay ?? !1, this._slidesMode = t.slidesMode ?? !1, this._interactiveSlides = t.interactiveSlides ?? !1, this._exportControls = t.exportControls ?? !1, this._exportFps = t.targetFps ?? 60, this._scene = new pE(e, t), this._masterTimeline = new bB(), this._ui = new GG(e, {
83225
83453
  onPlayPause: () => this.togglePlayPause(),
83226
83454
  onSeek: (e) => this.seek(e),
83227
83455
  onPrev: () => this.prevSegment(),
@@ -83238,7 +83466,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83238
83466
  }, {
83239
83467
  autoHideMs: t.autoHideMs,
83240
83468
  exportControls: this._exportControls
83241
- }), this._ui.setSlidesMode(this._slidesMode), this._ui.enableScrollScrub(() => this._masterTimeline.getCurrentTime()), this._controller = new KG(e, {
83469
+ }), this._ui.setSlidesMode(this._slidesMode), this._ui.enableScrollScrub(() => this._masterTimeline.getCurrentTime()), this._controller = new rK(e, {
83242
83470
  onPlayPause: () => this.togglePlayPause(),
83243
83471
  onPrev: () => this.prevSegment(),
83244
83472
  onNext: () => this.nextSegment(),
@@ -83252,10 +83480,10 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83252
83480
  }, document.addEventListener("fullscreenchange", this._onFullscreenChange), this._interactiveSlides && this._enableSlideInteraction();
83253
83481
  }
83254
83482
  _enableSlideInteraction() {
83255
- this._slideInteraction || (this._slideInteraction = new YG(this._container, this._scene, () => !this._isPlaying), this._slideInteraction.attach());
83483
+ this._slideInteraction || (this._slideInteraction = new oK(this._container, this._scene, () => !this._isPlaying), this._slideInteraction.attach());
83256
83484
  }
83257
83485
  async sequence(e) {
83258
- this._masterTimeline = new bB(), this._activeLoopSlideIndex = null, this._slidesTargetSlideIndex = -1, await e(new qG(this._scene, this._masterTimeline)), this._masterTimeline.finalizeSlides(), this._scene.setTimeline(this._masterTimeline), this._masterTimeline.seek(0), this._scene.render(), this._ui.setSegments(this._masterTimeline), this._ui.updateTime(0, this._masterTimeline.getDuration()), this._autoPlay && this.play();
83486
+ this._masterTimeline = new bB(), this._activeLoopSlideIndex = null, this._slidesTargetSlideIndex = -1, await e(new iK(this._scene, this._masterTimeline)), this._masterTimeline.finalizeSlides(), this._scene.setTimeline(this._masterTimeline), this._masterTimeline.seek(0), this._scene.render(), this._ui.setSegments(this._masterTimeline), this._ui.updateTime(0, this._masterTimeline.getDuration()), this._autoPlay && this.play();
83259
83487
  }
83260
83488
  get scene() {
83261
83489
  return this._scene;
@@ -83366,7 +83594,7 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83366
83594
  let i = `animation.${e}`, a = this._masterTimeline.getDuration(), o = (e) => this._ui.setExportProgress(e);
83367
83595
  this._ui.setExportProgress(0);
83368
83596
  try {
83369
- (e === "webm" || e === "mp4") && aG() === "webcodecs" ? await this._exportWithWebCodecs(e === "mp4" ? "mp4" : "webm", t, a, o, i) : await this._scene.export(i, this._buildSceneExportOptions(e, t, a, o));
83597
+ (e === "webm" || e === "mp4") && gG() === "webcodecs" ? await this._exportWithWebCodecs(e === "mp4" ? "mp4" : "webm", t, a, o, i) : await this._scene.export(i, this._buildSceneExportOptions(e, t, a, o));
83370
83598
  } catch (e) {
83371
83599
  qf.error("Export failed:", e), this._ui.showError(`Export failed: ${e instanceof Error ? e.message : "Unknown error"}`);
83372
83600
  } finally {
@@ -83374,12 +83602,12 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83374
83602
  }
83375
83603
  }
83376
83604
  async _exportWithWebCodecs(e, t, n, r, i) {
83377
- eG(await new rG(this._scene, {
83605
+ dG(await new mG(this._scene, {
83378
83606
  format: e,
83379
83607
  fps: t?.fps ?? this._exportFps,
83380
83608
  width: t?.width ?? this._scene.getWidth(),
83381
83609
  height: t?.height ?? this._scene.getHeight(),
83382
- bitrate: jG(t?.quality ?? .9),
83610
+ bitrate: HG(t?.quality ?? .9),
83383
83611
  duration: n,
83384
83612
  onProgress: r
83385
83613
  }).export(), i);
@@ -83440,36 +83668,36 @@ var RG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83440
83668
  _stopLoop() {
83441
83669
  this._animFrameId !== null && (cancelAnimationFrame(this._animFrameId), this._animFrameId = null);
83442
83670
  }
83443
- }, ZG = {
83671
+ }, cK = {
83444
83672
  EXPERIMENTAL_3D_LIGHTING: !1,
83445
83673
  WEBGPU_RENDERER: !1,
83446
83674
  ADVANCED_TEXT_LAYOUT: !1
83447
- }, QG = { ...ZG };
83448
- function $G(e) {
83449
- return QG[e] ?? !1;
83675
+ }, lK = { ...cK };
83676
+ function uK(e) {
83677
+ return lK[e] ?? !1;
83450
83678
  }
83451
- function eK(e) {
83452
- QG = {
83453
- ...QG,
83679
+ function dK(e) {
83680
+ lK = {
83681
+ ...lK,
83454
83682
  ...e
83455
83683
  };
83456
83684
  }
83457
- function tK() {
83458
- QG = { ...ZG };
83685
+ function fK() {
83686
+ lK = { ...cK };
83459
83687
  }
83460
- function nK() {
83461
- return { ...QG };
83688
+ function pK() {
83689
+ return { ...lK };
83462
83690
  }
83463
83691
  //#endregion
83464
83692
  //#region src/utils/ManimColor.ts
83465
- var rK = /(?:#|0[xX])([A-Fa-f0-9]{3,8})/;
83466
- function iK(e) {
83693
+ var mK = /(?:#|0[xX])([A-Fa-f0-9]{3,8})/;
83694
+ function hK(e) {
83467
83695
  return Math.min(255, Math.max(0, Math.trunc(e * 255)));
83468
83696
  }
83469
- function aK(e) {
83470
- return iK(e).toString(16).toUpperCase().padStart(2, "0");
83697
+ function gK(e) {
83698
+ return hK(e).toString(16).toUpperCase().padStart(2, "0");
83471
83699
  }
83472
- function oK(e, t) {
83700
+ function _K(e, t) {
83473
83701
  let n = e;
83474
83702
  (n.length === 3 || n.length === 4) && (n = n.split("").map((e) => e + e).join(""));
83475
83703
  let r = t;
@@ -83482,14 +83710,14 @@ function oK(e, t) {
83482
83710
  r
83483
83711
  ];
83484
83712
  }
83485
- function sK(e, t) {
83486
- let n = rK.exec(e);
83487
- if (n !== null) return oK(n[1], t);
83713
+ function vK(e, t) {
83714
+ let n = mK.exec(e);
83715
+ if (n !== null) return _K(n[1], t);
83488
83716
  let r = ml[e.toUpperCase()];
83489
- if (typeof r == "string") return sK(r, t);
83717
+ if (typeof r == "string") return vK(r, t);
83490
83718
  throw Error(`Failed to parse a color from "${e}"`);
83491
83719
  }
83492
- function cK(e, t) {
83720
+ function yK(e, t) {
83493
83721
  return [
83494
83722
  (e >> 16 & 255) / 255,
83495
83723
  (e >> 8 & 255) / 255,
@@ -83497,7 +83725,7 @@ function cK(e, t) {
83497
83725
  t
83498
83726
  ];
83499
83727
  }
83500
- var lK = class e {
83728
+ var bK = class e {
83501
83729
  value;
83502
83730
  constructor(t, n = 1) {
83503
83731
  if (t === null) this.value = [
@@ -83514,8 +83742,8 @@ var lK = class e {
83514
83742
  e[2],
83515
83743
  e[3]
83516
83744
  ];
83517
- } else if (typeof t == "number") this.value = cK(t, n);
83518
- else if (typeof t == "string") this.value = sK(t, n);
83745
+ } else if (typeof t == "number") this.value = yK(t, n);
83746
+ else if (typeof t == "string") this.value = vK(t, n);
83519
83747
  else if (t.length === 3) this.value = [
83520
83748
  t[0],
83521
83749
  t[1],
@@ -83573,18 +83801,18 @@ var lK = class e {
83573
83801
  toIntRgb() {
83574
83802
  let e = this.internalRgba();
83575
83803
  return [
83576
- iK(e[0]),
83577
- iK(e[1]),
83578
- iK(e[2])
83804
+ hK(e[0]),
83805
+ hK(e[1]),
83806
+ hK(e[2])
83579
83807
  ];
83580
83808
  }
83581
83809
  toIntRgba() {
83582
83810
  let e = this.internalRgba();
83583
83811
  return [
83584
- iK(e[0]),
83585
- iK(e[1]),
83586
- iK(e[2]),
83587
- iK(e[3])
83812
+ hK(e[0]),
83813
+ hK(e[1]),
83814
+ hK(e[2]),
83815
+ hK(e[3])
83588
83816
  ];
83589
83817
  }
83590
83818
  toHex(e = !1) {
@@ -83593,7 +83821,7 @@ var lK = class e {
83593
83821
  t[1],
83594
83822
  t[2]
83595
83823
  ]);
83596
- return e ? n + aK(t[3]) : n;
83824
+ return e ? n + gK(t[3]) : n;
83597
83825
  }
83598
83826
  toHsv() {
83599
83827
  return jA(this.toRgb());
@@ -83653,7 +83881,7 @@ var lK = class e {
83653
83881
  static parse(t, n = 1) {
83654
83882
  return Array.isArray(t) && t.some((e) => typeof e != "number") ? t.map((t) => new e(t, n)) : new e(t, n);
83655
83883
  }
83656
- }, uK = lK, dK = class e extends lK {
83884
+ }, xK = bK, SK = class e extends bK {
83657
83885
  hsva;
83658
83886
  constructor(e, t = 1) {
83659
83887
  if (super(null), e.length === 3) this.hsva = [
@@ -83722,7 +83950,7 @@ var lK = class e {
83722
83950
  return this.hsva[2];
83723
83951
  }
83724
83952
  };
83725
- function fK(e) {
83953
+ function CK(e) {
83726
83954
  let t = e >>> 0;
83727
83955
  return () => {
83728
83956
  t = t + 1831565813 | 0;
@@ -83730,18 +83958,18 @@ function fK(e) {
83730
83958
  return e = e + Math.imul(e ^ e >>> 7, 61 | e) ^ e, ((e ^ e >>> 14) >>> 0) / 4294967296;
83731
83959
  };
83732
83960
  }
83733
- var pK = Array.from(new Set(Object.values(ml))).map((e) => new lK(e)), mK = class {
83961
+ var wK = Array.from(new Set(Object.values(ml))).map((e) => new bK(e)), TK = class {
83734
83962
  rng;
83735
83963
  colors;
83736
83964
  constructor(e, t) {
83737
- this.rng = e === void 0 ? Math.random : fK(e), this.colors = t === void 0 ? pK : t.map((e) => e instanceof lK ? e : new lK(e));
83965
+ this.rng = e === void 0 ? Math.random : CK(e), this.colors = t === void 0 ? wK : t.map((e) => e instanceof bK ? e : new bK(e));
83738
83966
  }
83739
83967
  next() {
83740
83968
  let e = Math.floor(this.rng() * this.colors.length);
83741
83969
  return this.colors[e];
83742
83970
  }
83743
83971
  };
83744
- function hK(e, t, n, r) {
83972
+ function EK(e, t, n, r) {
83745
83973
  let i = .5 * Xd(n, $d([
83746
83974
  r[0] - t[0],
83747
83975
  r[1] - t[1],
@@ -83755,7 +83983,7 @@ function hK(e, t, n, r) {
83755
83983
  }
83756
83984
  //#endregion
83757
83985
  //#region src/utils/iterables.ts
83758
- function gK(e, t) {
83986
+ function DK(e, t) {
83759
83987
  let n = e.length;
83760
83988
  if (n === 0) return [];
83761
83989
  let r = [];
@@ -83766,10 +83994,10 @@ function gK(e, t) {
83766
83994
  }
83767
83995
  return r;
83768
83996
  }
83769
- function _K(e) {
83770
- return gK(e, 2);
83997
+ function OK(e) {
83998
+ return DK(e, 2);
83771
83999
  }
83772
- function vK(e) {
84000
+ function kK(e) {
83773
84001
  let t = [], n = /* @__PURE__ */ new Set();
83774
84002
  for (let r = e.length - 1; r >= 0; r--) {
83775
84003
  let i = e[r];
@@ -83777,7 +84005,7 @@ function vK(e) {
83777
84005
  }
83778
84006
  return t.reverse(), t;
83779
84007
  }
83780
- function yK(e, t, n) {
84008
+ function AK(e, t, n) {
83781
84009
  if (n === void 0) {
83782
84010
  let n = new Set(t);
83783
84011
  return e.filter((e) => !n.has(e));
@@ -83785,29 +84013,29 @@ function yK(e, t, n) {
83785
84013
  let r = new Set(t.map((e) => n(e)));
83786
84014
  return e.filter((e) => !r.has(n(e)));
83787
84015
  }
83788
- function bK(e, t, n) {
83789
- return yK(e, t, n).concat(t);
84016
+ function jK(e, t, n) {
84017
+ return AK(e, t, n).concat(t);
83790
84018
  }
83791
- function xK(e) {
84019
+ function MK(e) {
83792
84020
  return typeof e == "string" ? [e] : typeof e == "object" && e && Symbol.iterator in e ? [...e] : [e];
83793
84021
  }
83794
- function SK(e, t) {
84022
+ function NK(e, t) {
83795
84023
  let n = e.length, r = t.length, i = Math.max(n, r), a = [], o = [];
83796
84024
  for (let s = 0; s < i; s++) a.push(e[Math.floor(s * n / i)]), o.push(t[Math.floor(s * r / i)]);
83797
84025
  return [a, o];
83798
84026
  }
83799
- function CK(e, t) {
84027
+ function PK(e, t) {
83800
84028
  let n = e.length;
83801
84029
  if (n > t) throw Error("Trying to stretch array to a length shorter than its own");
83802
84030
  let r = [];
83803
84031
  for (let i = 0; i < t; i++) r.push(e[Math.floor(i / t * n)]);
83804
84032
  return r;
83805
84033
  }
83806
- function* wK(...e) {
84034
+ function* FK(...e) {
83807
84035
  let t = /* @__PURE__ */ new Set();
83808
84036
  for (let n of e) for (let e of n) t.has(e) || (t.add(e), yield e);
83809
84037
  }
83810
- function TK(e) {
84038
+ function IK(e) {
83811
84039
  let t = [[]];
83812
84040
  for (let n of e) {
83813
84041
  let e = t.length;
@@ -83815,82 +84043,82 @@ function TK(e) {
83815
84043
  }
83816
84044
  return t;
83817
84045
  }
83818
- function EK(e, t) {
84046
+ function LK(e, t) {
83819
84047
  for (let n of e) if (!(n instanceof t)) return !1;
83820
84048
  return !0;
83821
84049
  }
83822
- function DK(...e) {
84050
+ function RK(...e) {
83823
84051
  let t = [];
83824
84052
  for (let n of e) for (let e of n) t.push(e);
83825
84053
  return t;
83826
84054
  }
83827
- function OK(e) {
84055
+ function zK(e) {
83828
84056
  return typeof e == "string" ? [e] : typeof e == "object" && e && Symbol.iterator in e ? [...e] : [e];
83829
84057
  }
83830
- function kK(e) {
84058
+ function BK(e) {
83831
84059
  let t = [];
83832
84060
  for (let n of e) n && t.push(n);
83833
84061
  return t;
83834
84062
  }
83835
- function AK(e, t) {
84063
+ function VK(e, t) {
83836
84064
  let n = Math.max(e.length, t.length), r = [], i = [];
83837
84065
  for (let a = 0; a < n; a++) r.push(e[a % e.length]), i.push(t[a % t.length]);
83838
84066
  return [r, i];
83839
84067
  }
83840
- function jK(e) {
83841
- return NK(MK(e));
84068
+ function HK(e) {
84069
+ return WK(UK(e));
83842
84070
  }
83843
- function MK(e) {
84071
+ function UK(e) {
83844
84072
  if (e === null) return "null";
83845
84073
  if (e === void 0) return "undefined";
83846
84074
  let t = typeof e;
83847
84075
  if (t === "string") return `s:${e}`;
83848
84076
  if (t === "number" || t === "boolean" || t === "bigint") return `${t[0]}:${String(e)}`;
83849
- if (e instanceof Set) return `set:[${[...e].map(MK).sort().join(",")}]`;
83850
- if (e instanceof Map) return `map:{${[...e.entries()].map(([e, t]) => `${MK(e)}=${MK(t)}`).sort().join(",")}}`;
83851
- if (Array.isArray(e)) return `arr:[${e.map(MK).join(",")}]`;
84077
+ if (e instanceof Set) return `set:[${[...e].map(UK).sort().join(",")}]`;
84078
+ if (e instanceof Map) return `map:{${[...e.entries()].map(([e, t]) => `${UK(e)}=${UK(t)}`).sort().join(",")}}`;
84079
+ if (Array.isArray(e)) return `arr:[${e.map(UK).join(",")}]`;
83852
84080
  if (t === "object") {
83853
84081
  let t = e;
83854
- return `obj:{${Object.keys(t).sort().map((e) => `${e}=${MK(t[e])}`).join(",")}}`;
84082
+ return `obj:{${Object.keys(t).sort().map((e) => `${e}=${UK(t[e])}`).join(",")}}`;
83855
84083
  }
83856
84084
  return `${t}:${String(e)}`;
83857
84085
  }
83858
- function NK(e) {
84086
+ function WK(e) {
83859
84087
  let t = 2166136261;
83860
84088
  for (let n = 0; n < e.length; n++) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
83861
84089
  return t >>> 0;
83862
84090
  }
83863
84091
  //#endregion
83864
84092
  //#region src/utils/unit.ts
83865
- function PK(e) {
84093
+ function GK(e) {
83866
84094
  return e * pd / hd;
83867
84095
  }
83868
- function FK(e) {
84096
+ function KK(e) {
83869
84097
  return e * Math.PI / 180;
83870
84098
  }
83871
- function IK(e) {
84099
+ function qK(e) {
83872
84100
  return e;
83873
84101
  }
83874
- function LK(e, t) {
84102
+ function JK(e, t) {
83875
84103
  return e[0] === t[0] && e[1] === t[1] && e[2] === t[2];
83876
84104
  }
83877
- function RK(e, t) {
84105
+ function YK(e, t) {
83878
84106
  let n;
83879
- if (LK(e, Md)) n = pd;
83880
- else if (LK(e, kd)) n = 8;
83881
- else if (LK(e, Nd)) throw Error("length of Z axis is undefined");
84107
+ if (JK(e, Md)) n = pd;
84108
+ else if (JK(e, kd)) n = 8;
84109
+ else if (JK(e, Nd)) throw Error("length of Z axis is undefined");
83882
84110
  else throw Error("Percent axis must be the X axis (RIGHT) or Y axis (UP)");
83883
84111
  return t / 100 * n;
83884
84112
  }
83885
84113
  //#endregion
83886
84114
  //#region src/utils/debug.ts
83887
- function zK(e, t = !1) {
84115
+ function XK(e, t = !1) {
83888
84116
  let n = [];
83889
84117
  for (let t of e) n.push(...t.getFamily());
83890
84118
  return t ? n.filter((e) => e instanceof z && e.hasOwnPoints()) : n;
83891
84119
  }
83892
- function BK(e, t) {
83893
- let n = [], r = new Set(zK(t)), i = (e, t) => {
84120
+ function ZK(e, t) {
84121
+ let n = [], r = new Set(XK(t)), i = (e, t) => {
83894
84122
  for (let r of e) {
83895
84123
  if (t.has(r)) continue;
83896
84124
  let e = new Set(r.getFamily().filter((e) => t.has(e)));
@@ -83899,14 +84127,14 @@ function BK(e, t) {
83899
84127
  };
83900
84128
  return i(e, r), n;
83901
84129
  }
83902
- function VK(e, t = {}) {
84130
+ function QK(e, t = {}) {
83903
84131
  let { labelHeight: n = .15 } = t, r = new B();
83904
84132
  return e.children.forEach((e, t) => {
83905
84133
  let i = new wM({ value: t });
83906
84134
  i.setHeight(n), i.moveTo(e), r.add(i);
83907
84135
  }), r;
83908
84136
  }
83909
- function HK(e, t = 0) {
84137
+ function $K(e, t = 0) {
83910
84138
  let n = [], r = (e, t) => {
83911
84139
  n.push(" ".repeat(t) + `${e.constructor.name} ${e.id}`);
83912
84140
  for (let n of e.children) r(n, t + 1);
@@ -83917,8 +84145,8 @@ function HK(e, t = 0) {
83917
84145
  }
83918
84146
  //#endregion
83919
84147
  //#region src/utils/spaceOps.ts
83920
- var UK = 2 * Math.PI;
83921
- function WK(e) {
84148
+ var eq = 2 * Math.PI;
84149
+ function tq(e) {
83922
84150
  let t = e.length, n = e[0].length, r = [];
83923
84151
  for (let i = 0; i < n; i++) {
83924
84152
  let n = [];
@@ -83927,20 +84155,20 @@ function WK(e) {
83927
84155
  }
83928
84156
  return r;
83929
84157
  }
83930
- function GK(e, t) {
84158
+ function nq(e, t) {
83931
84159
  return e.map((e) => e.reduce((e, n, r) => e + n * (t[r] ?? 0), 0));
83932
84160
  }
83933
- function KK(e) {
84161
+ function rq(e) {
83934
84162
  return e.reduce((e, t) => e + t * t, 0);
83935
84163
  }
83936
- function qK(e, t) {
84164
+ function iq(e, t) {
83937
84165
  return e[0] * t[1] - e[1] * t[0];
83938
84166
  }
83939
- function JK(e, t) {
83940
- let n = Math.sqrt(KK(e));
84167
+ function aq(e, t) {
84168
+ let n = Math.sqrt(rq(e));
83941
84169
  return n > 0 ? e.map((e) => e / n) : t ?? e.map(() => 0);
83942
84170
  }
83943
- function YK(...e) {
84171
+ function oq(...e) {
83944
84172
  if (e.length === 0) return [
83945
84173
  1,
83946
84174
  0,
@@ -83959,8 +84187,8 @@ function YK(...e) {
83959
84187
  }
83960
84188
  return t;
83961
84189
  }
83962
- function XK(e, t, n = !1) {
83963
- let r = n ? t : JK(t), i = Math.sin(e / 2);
84190
+ function sq(e, t, n = !1) {
84191
+ let r = n ? t : aq(t), i = Math.sin(e / 2);
83964
84192
  return [
83965
84193
  Math.cos(e / 2),
83966
84194
  i * (r[0] ?? 0),
@@ -83968,19 +84196,19 @@ function XK(e, t, n = !1) {
83968
84196
  i * (r[2] ?? 0)
83969
84197
  ];
83970
84198
  }
83971
- function ZK(e) {
83972
- let t = JK(e.slice(1), [
84199
+ function cq(e) {
84200
+ let t = aq(e.slice(1), [
83973
84201
  1,
83974
84202
  0,
83975
84203
  0
83976
84204
  ]), n = 2 * Math.acos(e[0]);
83977
- return n > UK / 2 && (n = UK - n, t = [
84205
+ return n > eq / 2 && (n = eq - n, t = [
83978
84206
  -t[0],
83979
84207
  -t[1],
83980
84208
  -t[2]
83981
84209
  ]), [n, t];
83982
84210
  }
83983
- function QK(e) {
84211
+ function lq(e) {
83984
84212
  return [
83985
84213
  e[0],
83986
84214
  -e[1],
@@ -83988,7 +84216,7 @@ function QK(e) {
83988
84216
  -e[3]
83989
84217
  ];
83990
84218
  }
83991
- function $K(e, t, n = !1) {
84219
+ function uq(e, t, n = !1) {
83992
84220
  let [r, i, a] = $d(t), o = Math.cos(e), s = Math.sin(e), c = 1 - o, l = [
83993
84221
  [
83994
84222
  o + r * r * c,
@@ -84018,7 +84246,7 @@ function $K(e, t, n = !1) {
84018
84246
  ]
84019
84247
  ] : l;
84020
84248
  }
84021
- function eq(e) {
84249
+ function dq(e) {
84022
84250
  let t = Math.cos(e), n = Math.sin(e);
84023
84251
  return [
84024
84252
  [
@@ -84038,23 +84266,23 @@ function eq(e) {
84038
84266
  ]
84039
84267
  ];
84040
84268
  }
84041
- function tq(e, t) {
84042
- return (t[0] ?? 0) === 0 && (t[1] ?? 0) === 0 ? WK(eq(e * Math.sign(t[2] ?? 0))) : WK($K(e, t));
84269
+ function fq(e, t) {
84270
+ return (t[0] ?? 0) === 0 && (t[1] ?? 0) === 0 ? tq(dq(e * Math.sign(t[2] ?? 0))) : tq(uq(e, t));
84043
84271
  }
84044
- function nq(e, t, n = Nd) {
84272
+ function pq(e, t, n = Nd) {
84045
84273
  if (e.length > 3) throw Error("Vector must have the correct dimensions.");
84046
84274
  let r = e.length === 2 ? [
84047
84275
  e[0],
84048
84276
  e[1],
84049
84277
  0
84050
- ] : e, i = GK($K(t, n), r);
84278
+ ] : e, i = nq(uq(t, n), r);
84051
84279
  return [
84052
84280
  i[0],
84053
84281
  i[1],
84054
84282
  i[2]
84055
84283
  ];
84056
84284
  }
84057
- function rq(e) {
84285
+ function mq(e) {
84058
84286
  let t = $d(e), n = $d(Zd(t, Md)), r = Zd(n, t);
84059
84287
  if (Qd(n) === 0) {
84060
84288
  r = $d(Zd(kd, t));
@@ -84065,27 +84293,27 @@ function rq(e) {
84065
84293
  -e[2]
84066
84294
  ];
84067
84295
  }
84068
- return WK([
84296
+ return tq([
84069
84297
  r,
84070
84298
  n,
84071
84299
  t
84072
84300
  ]);
84073
84301
  }
84074
- function iq(e) {
84302
+ function hq(e) {
84075
84303
  return Math.atan2(e[1] ?? 0, e[0] ?? 0);
84076
84304
  }
84077
- function aq(e, t) {
84078
- let n = JK(e), r = JK(t), i = n.map((e, t) => e - r[t]), a = n.map((e, t) => e + r[t]);
84079
- return 2 * Math.atan2(Math.sqrt(KK(i)), Math.sqrt(KK(a)));
84305
+ function gq(e, t) {
84306
+ let n = aq(e), r = aq(t), i = n.map((e, t) => e - r[t]), a = n.map((e, t) => e + r[t]);
84307
+ return 2 * Math.atan2(Math.sqrt(rq(i)), Math.sqrt(rq(a)));
84080
84308
  }
84081
- function oq(e, t, n = 1e-6) {
84309
+ function _q(e, t, n = 1e-6) {
84082
84310
  let r = Math.max(...e.map(Math.abs)), i = Math.max(...t.map(Math.abs)), a;
84083
84311
  if (r === 0) {
84084
84312
  if (i === 0) return Ad;
84085
84313
  a = t.map((e) => e / i);
84086
84314
  } else if (i === 0) a = e.map((e) => e / r);
84087
84315
  else {
84088
- let o = e.map((e) => e / r), s = Zd(o, t.map((e) => e / i)), c = Math.sqrt(KK(s));
84316
+ let o = e.map((e) => e / r), s = Zd(o, t.map((e) => e / i)), c = Math.sqrt(rq(s));
84089
84317
  if (c > n) return [
84090
84318
  s[0] / c,
84091
84319
  s[1] / c,
@@ -84098,43 +84326,43 @@ function oq(e, t, n = 1e-6) {
84098
84326
  -a[0] * a[2],
84099
84327
  -a[1] * a[2],
84100
84328
  a[0] * a[0] + a[1] * a[1]
84101
- ], s = Math.sqrt(KK(o));
84329
+ ], s = Math.sqrt(rq(o));
84102
84330
  return [
84103
84331
  o[0] / s,
84104
84332
  o[1] / s,
84105
84333
  o[2] / s
84106
84334
  ];
84107
84335
  }
84108
- function sq(e = 4, t = Md) {
84109
- let n = UK / e, r = [];
84110
- for (let i = 0; i < e; i++) r.push(nq(t, i * n));
84336
+ function vq(e = 4, t = Md) {
84337
+ let n = eq / e, r = [];
84338
+ for (let i = 0; i < e; i++) r.push(pq(t, i * n));
84111
84339
  return r;
84112
84340
  }
84113
- function cq(e, t = {}) {
84114
- let n = t.radius ?? 1, r = t.startAngle ?? (e % 2 == 0 ? 0 : UK / 4);
84115
- return [sq(e, nq([
84341
+ function yq(e, t = {}) {
84342
+ let n = t.radius ?? 1, r = t.startAngle ?? (e % 2 == 0 ? 0 : eq / 4);
84343
+ return [vq(e, pq([
84116
84344
  n,
84117
84345
  0,
84118
84346
  0
84119
84347
  ], r)), r];
84120
84348
  }
84121
- function lq(e) {
84349
+ function bq(e) {
84122
84350
  return [
84123
84351
  e.re,
84124
84352
  e.im,
84125
84353
  0
84126
84354
  ];
84127
84355
  }
84128
- function uq(e) {
84356
+ function xq(e) {
84129
84357
  return {
84130
84358
  re: e[0] ?? 0,
84131
84359
  im: e[1] ?? 0
84132
84360
  };
84133
84361
  }
84134
- function dq(e) {
84135
- return (t) => lq(e(uq(t)));
84362
+ function Sq(e) {
84363
+ return (t) => bq(e(xq(t)));
84136
84364
  }
84137
- function fq(e) {
84365
+ function Cq(e) {
84138
84366
  let t = [
84139
84367
  0,
84140
84368
  0,
@@ -84148,10 +84376,10 @@ function fq(e) {
84148
84376
  t[2] / n
84149
84377
  ];
84150
84378
  }
84151
- function pq(e, t) {
84152
- return fq([e, t]);
84379
+ function wq(e, t) {
84380
+ return Cq([e, t]);
84153
84381
  }
84154
- function mq(e, t) {
84382
+ function Tq(e, t) {
84155
84383
  for (let n of [e, t]) for (let e of n) if ((e[2] ?? 0) !== 0) throw Error("Coords must be in the xy-plane.");
84156
84384
  let n = (e) => Zd([
84157
84385
  e[0][0],
@@ -84169,7 +84397,7 @@ function mq(e, t) {
84169
84397
  0
84170
84398
  ];
84171
84399
  }
84172
- function hq(e, t, n, r, i = 1e-5) {
84400
+ function Eq(e, t, n, r, i = 1e-5) {
84173
84401
  let a = [];
84174
84402
  for (let o = 0; o < e.length; o++) {
84175
84403
  let s = e[o], c = t[o], l = n[o], u = r[o], d = Zd(u, Zd(c, u)), f = c[0] * d[0] + c[1] * d[1] + c[2] * d[2], p = Math.max(f, i), m = [
@@ -84185,15 +84413,15 @@ function hq(e, t, n, r, i = 1e-5) {
84185
84413
  }
84186
84414
  return a;
84187
84415
  }
84188
- function gq(e) {
84416
+ function Dq(e) {
84189
84417
  let t = 0;
84190
84418
  for (let n = 0; n < e.length - 1; n++) t += (e[n + 1][0] - e[n][0]) * (e[n][1] + e[n + 1][1]) / 2;
84191
84419
  return t;
84192
84420
  }
84193
- function _q(e) {
84194
- return gq(e) > 0 ? "CW" : "CCW";
84421
+ function Oq(e) {
84422
+ return Dq(e) > 0 ? "CW" : "CCW";
84195
84423
  }
84196
- function vq(e) {
84424
+ function kq(e) {
84197
84425
  let t = Qd(e);
84198
84426
  if (t === 0) return [
84199
84427
  0,
@@ -84207,7 +84435,7 @@ function vq(e) {
84207
84435
  n
84208
84436
  ];
84209
84437
  }
84210
- function yq(e) {
84438
+ function Aq(e) {
84211
84439
  let [t, n, r] = e;
84212
84440
  return [
84213
84441
  t * Math.cos(n) * Math.sin(r),
@@ -84215,12 +84443,12 @@ function yq(e) {
84215
84443
  t * Math.cos(r)
84216
84444
  ];
84217
84445
  }
84218
- function bq(e, t = Nd) {
84446
+ function jq(e, t = Nd) {
84219
84447
  let n = e[0], r = e[1], i = Zd([
84220
84448
  n[0] - r[0],
84221
84449
  n[1] - r[1],
84222
84450
  n[2] - r[2]
84223
- ], t), a = pq(n, r);
84451
+ ], t), a = wq(n, r);
84224
84452
  return [[
84225
84453
  a[0] + i[0],
84226
84454
  a[1] + i[1],
@@ -84231,7 +84459,7 @@ function bq(e, t = Nd) {
84231
84459
  a[2] - i[2]
84232
84460
  ]];
84233
84461
  }
84234
- function xq(e, t = 2) {
84462
+ function Mq(e, t = 2) {
84235
84463
  let n = [];
84236
84464
  for (let r = 0; r < e; r++) {
84237
84465
  let i = [];
@@ -84240,41 +84468,41 @@ function xq(e, t = 2) {
84240
84468
  }
84241
84469
  return n;
84242
84470
  }
84243
- function Sq(e) {
84471
+ function Nq(e) {
84244
84472
  let t = 0;
84245
- for (let [n, r] of _K(e)) {
84246
- let e = ((iq(r) - iq(n) + Math.PI) % UK + UK) % UK - Math.PI;
84473
+ for (let [n, r] of OK(e)) {
84474
+ let e = ((hq(r) - hq(n) + Math.PI) % eq + eq) % eq - Math.PI;
84247
84475
  t += e;
84248
84476
  }
84249
- return t / UK;
84477
+ return t / eq;
84250
84478
  }
84251
84479
  //#endregion
84252
84480
  //#region src/utils/paths.ts
84253
- var Cq = .01;
84254
- function wq(e, t, n) {
84481
+ var Pq = .01;
84482
+ function Fq(e, t, n) {
84255
84483
  return e.map((e, r) => e.map((e, i) => e + n * (t[r][i] - e)));
84256
84484
  }
84257
- function Tq(e, t) {
84485
+ function Iq(e, t) {
84258
84486
  return t.map((t) => t.reduce((t, n, r) => t + n * e[r], 0));
84259
84487
  }
84260
- function Eq() {
84261
- return wq;
84488
+ function Lq() {
84489
+ return Fq;
84262
84490
  }
84263
- function Dq(e, t, n = Nd) {
84264
- let r = JK(n, Nd), i = (e) => t[e] ?? t[0];
84491
+ function Rq(e, t, n = Nd) {
84492
+ let r = aq(n, Nd), i = (e) => t[e] ?? t[0];
84265
84493
  return (t, n, a) => {
84266
- let o = $K(-e, r), s = $K(a * e, r);
84494
+ let o = uq(-e, r), s = uq(a * e, r);
84267
84495
  return t.map((e, t) => {
84268
- let r = i(t), c = Tq(n[t].map((e, t) => e - r[t]), o).map((e, t) => e + r[t]);
84269
- return Tq(e.map((e, t) => e + a * (c[t] - e)).map((e, t) => e - r[t]), s).map((e, t) => e + r[t]);
84496
+ let r = i(t), c = Iq(n[t].map((e, t) => e - r[t]), o).map((e, t) => e + r[t]);
84497
+ return Iq(e.map((e, t) => e + a * (c[t] - e)).map((e, t) => e - r[t]), s).map((e, t) => e + r[t]);
84270
84498
  });
84271
84499
  };
84272
84500
  }
84273
- function Oq(e, t = Nd) {
84274
- if (Math.abs(e) < Cq) return Eq();
84275
- let n = JK(t, Nd);
84501
+ function zq(e, t = Nd) {
84502
+ if (Math.abs(e) < Pq) return Lq();
84503
+ let n = aq(t, Nd);
84276
84504
  return (t, r, i) => {
84277
- let a = $K(i * e, n);
84505
+ let a = uq(i * e, n);
84278
84506
  return t.map((t, i) => {
84279
84507
  let o = r[i].map((e, n) => e - t[n]), s = t.map((e, t) => e + .5 * o[t]);
84280
84508
  if (e !== Math.PI) {
@@ -84285,19 +84513,19 @@ function Oq(e, t = Nd) {
84285
84513
  ], i = 1 / Math.tan(e / 2);
84286
84514
  for (let e = 0; e < s.length; e++) s[e] += r[e] * i;
84287
84515
  }
84288
- return Tq(t.map((e, t) => e - s[t]), a).map((e, t) => e + s[t]);
84516
+ return Iq(t.map((e, t) => e - s[t]), a).map((e, t) => e + s[t]);
84289
84517
  });
84290
84518
  };
84291
84519
  }
84292
- function kq() {
84293
- return Oq(-Math.PI);
84520
+ function Bq() {
84521
+ return zq(-Math.PI);
84294
84522
  }
84295
- function Aq() {
84296
- return Oq(Math.PI);
84523
+ function Vq() {
84524
+ return zq(Math.PI);
84297
84525
  }
84298
84526
  //#endregion
84299
84527
  //#region src/utils/simpleFunctions.ts
84300
- function jq(e, t, n, r, i = 1e-4) {
84528
+ function Hq(e, t, n, r, i = 1e-4) {
84301
84529
  let a = n, o = r, s = (a + o) / 2;
84302
84530
  for (; Math.abs(o - a) > i;) {
84303
84531
  s = (a + o) / 2;
@@ -84310,7 +84538,7 @@ function jq(e, t, n, r, i = 1e-4) {
84310
84538
  }
84311
84539
  return s;
84312
84540
  }
84313
- function Mq(e, t) {
84541
+ function Uq(e, t) {
84314
84542
  if (t < 0 || t > e) return 0;
84315
84543
  let n = t;
84316
84544
  n > e - n && (n = e - n);
@@ -84318,30 +84546,30 @@ function Mq(e, t) {
84318
84546
  for (let t = 0; t < n; t++) r = r * (e - t) / (t + 1);
84319
84547
  return Math.round(r);
84320
84548
  }
84321
- function Nq(e, t, n) {
84549
+ function Wq(e, t, n) {
84322
84550
  return e < t ? t : e > n ? n : e;
84323
84551
  }
84324
- function Pq(e) {
84552
+ function Gq(e) {
84325
84553
  return 1 / (1 + Math.exp(-e));
84326
84554
  }
84327
84555
  //#endregion
84328
84556
  //#region src/utils/bezier.ts
84329
- function Fq(e, t, n) {
84557
+ function Kq(e, t, n) {
84330
84558
  if (Array.isArray(e) && Array.isArray(t)) return e.map((e, r) => (1 - n) * e + n * t[r]);
84331
84559
  if (typeof e == "number" && typeof t == "number") return (1 - n) * e + n * t;
84332
84560
  throw Error("interpolate: start and end must both be numbers or both be arrays");
84333
84561
  }
84334
- function Iq(e, t) {
84562
+ function qq(e, t) {
84335
84563
  if (Array.isArray(e) && Array.isArray(t)) return e.map((e, n) => (e + t[n]) / 2);
84336
84564
  if (typeof e == "number" && typeof t == "number") return (e + t) / 2;
84337
84565
  throw Error("mid: start and end must both be numbers or both be arrays");
84338
84566
  }
84339
- function Lq(e, t, n) {
84567
+ function Jq(e, t, n) {
84340
84568
  if (Array.isArray(e) && Array.isArray(t) && Array.isArray(n)) return e.map((e, r) => (n[r] - e) / (t[r] - e));
84341
84569
  if (typeof e == "number" && typeof t == "number" && typeof n == "number") return (n - e) / (t - e);
84342
84570
  throw Error("inverse_interpolate: start, end and value must all be numbers or all be arrays");
84343
84571
  }
84344
- function Rq(e, t, n, r, i) {
84572
+ function Yq(e, t, n, r, i) {
84345
84573
  let a = r - n;
84346
84574
  if (Array.isArray(i)) return i.map((r) => {
84347
84575
  let i = (r - n) / a;
@@ -84350,7 +84578,7 @@ function Rq(e, t, n, r, i) {
84350
84578
  let o = (i - n) / a;
84351
84579
  return (1 - o) * e + o * t;
84352
84580
  }
84353
- function zq(e, t) {
84581
+ function Xq(e, t) {
84354
84582
  if (e.length === 0) return 0;
84355
84583
  let n = e.slice();
84356
84584
  for (; n.length > 1;) {
@@ -84360,7 +84588,7 @@ function zq(e, t) {
84360
84588
  }
84361
84589
  return n[0];
84362
84590
  }
84363
- function Bq(e, t) {
84591
+ function Zq(e, t) {
84364
84592
  if (e.length === 0) return [];
84365
84593
  let n = e.map((e) => e.slice());
84366
84594
  for (; n.length > 1;) {
@@ -84370,15 +84598,15 @@ function Bq(e, t) {
84370
84598
  }
84371
84599
  return n[0];
84372
84600
  }
84373
- function Vq(e) {
84601
+ function Qq(e) {
84374
84602
  if (e.length > 0 && Array.isArray(e[0])) {
84375
84603
  let t = e.filter((e) => Array.isArray(e));
84376
- return (e) => Bq(t, e);
84604
+ return (e) => Zq(t, e);
84377
84605
  }
84378
84606
  let t = e.filter((e) => typeof e == "number");
84379
- return (e) => zq(t, e);
84607
+ return (e) => Xq(t, e);
84380
84608
  }
84381
- function Hq(e, t) {
84609
+ function $q(e, t) {
84382
84610
  let n = e.length, r = e.map((e) => e.slice()), i = Array(n);
84383
84611
  i[0] = e[0].slice();
84384
84612
  for (let e = 1; e < n; e++) {
@@ -84387,7 +84615,7 @@ function Hq(e, t) {
84387
84615
  }
84388
84616
  return [...i, ...r];
84389
84617
  }
84390
- function Uq(e, t) {
84618
+ function eJ(e, t) {
84391
84619
  if (t <= 1) return e.map((e) => e.slice());
84392
84620
  let n = [];
84393
84621
  for (let r = 0; r < t; r++) {
@@ -84396,7 +84624,7 @@ function Uq(e, t) {
84396
84624
  }
84397
84625
  return n;
84398
84626
  }
84399
- function Wq(e, t) {
84627
+ function tJ(e, t) {
84400
84628
  let n = e.length;
84401
84629
  if (n === 0) return [];
84402
84630
  let r = e[0].length, i = [];
@@ -84407,12 +84635,12 @@ function Wq(e, t) {
84407
84635
  for (let t = 0; t < n; t++) {
84408
84636
  let n = a[t];
84409
84637
  if (n <= 0) continue;
84410
- let i = Uq(e[t], n);
84638
+ let i = eJ(e[t], n);
84411
84639
  for (let e = 0; e < n; e++) o.push(i.slice(e * r, e * r + r));
84412
84640
  }
84413
84641
  return o;
84414
84642
  }
84415
- function Gq(e) {
84643
+ function nJ(e) {
84416
84644
  let t = e[0], n = e[e.length - 1];
84417
84645
  for (let e = 0; e < 3; e++) {
84418
84646
  let r = t[e] ?? 0, i = n[e] ?? 0, a = 1e-8 + 1e-5 * Math.abs(r);
@@ -84420,43 +84648,43 @@ function Gq(e) {
84420
84648
  }
84421
84649
  return !0;
84422
84650
  }
84423
- function Kq(e, t) {
84651
+ function rJ(e, t) {
84424
84652
  return {
84425
84653
  re: e.re + t.re,
84426
84654
  im: e.im + t.im
84427
84655
  };
84428
84656
  }
84429
- function qq(e, t) {
84657
+ function iJ(e, t) {
84430
84658
  return {
84431
84659
  re: e.re - t.re,
84432
84660
  im: e.im - t.im
84433
84661
  };
84434
84662
  }
84435
- function Jq(e, t) {
84663
+ function aJ(e, t) {
84436
84664
  return {
84437
84665
  re: e.re * t.re - e.im * t.im,
84438
84666
  im: e.re * t.im + e.im * t.re
84439
84667
  };
84440
84668
  }
84441
- function Yq(e, t) {
84669
+ function oJ(e, t) {
84442
84670
  let n = t.re * t.re + t.im * t.im;
84443
84671
  return {
84444
84672
  re: (e.re * t.re + e.im * t.im) / n,
84445
84673
  im: (e.im * t.re - e.re * t.im) / n
84446
84674
  };
84447
84675
  }
84448
- function Xq(e, t) {
84676
+ function sJ(e, t) {
84449
84677
  let n = {
84450
84678
  re: e[e.length - 1],
84451
84679
  im: 0
84452
84680
  };
84453
- for (let r = e.length - 2; r >= 0; r--) n = Kq(Jq(n, t), {
84681
+ for (let r = e.length - 2; r >= 0; r--) n = rJ(aJ(n, t), {
84454
84682
  re: e[r],
84455
84683
  im: 0
84456
84684
  });
84457
84685
  return n;
84458
84686
  }
84459
- function Zq(e) {
84687
+ function cJ(e) {
84460
84688
  let t = e.slice();
84461
84689
  for (; t.length > 1 && Math.abs(t[t.length - 1]) < 1e-14;) t.pop();
84462
84690
  let n = t.length - 1;
@@ -84471,17 +84699,17 @@ function Zq(e) {
84471
84699
  for (let e = 0; e < n; e++) a.push({
84472
84700
  re: s.re,
84473
84701
  im: s.im
84474
- }), s = Jq(s, o);
84702
+ }), s = aJ(s, o);
84475
84703
  for (let e = 0; e < 200; e++) {
84476
84704
  let e = 0;
84477
84705
  for (let t = 0; t < n; t++) {
84478
- let r = Xq(i, a[t]), o = {
84706
+ let r = sJ(i, a[t]), o = {
84479
84707
  re: 1,
84480
84708
  im: 0
84481
84709
  };
84482
- for (let e = 0; e < n; e++) e !== t && (o = Jq(o, qq(a[t], a[e])));
84483
- let s = Yq(r, o);
84484
- a[t] = qq(a[t], s);
84710
+ for (let e = 0; e < n; e++) e !== t && (o = aJ(o, iJ(a[t], a[e])));
84711
+ let s = oJ(r, o);
84712
+ a[t] = iJ(a[t], s);
84485
84713
  let c = Math.hypot(s.re, s.im);
84486
84714
  c > e && (e = c);
84487
84715
  }
@@ -84489,98 +84717,98 @@ function Zq(e) {
84489
84717
  }
84490
84718
  return a;
84491
84719
  }
84492
- function Qq(e, t) {
84720
+ function lJ(e, t) {
84493
84721
  if (t < 0 || t > e) return 0;
84494
84722
  let n = 1;
84495
84723
  for (let r = 0; r < t; r++) n = n * (e - r) / (r + 1);
84496
84724
  return Math.round(n);
84497
84725
  }
84498
- function $q(e, t) {
84726
+ function uJ(e, t) {
84499
84727
  let n = 10 ** t;
84500
84728
  return Math.round(e * n) / n;
84501
84729
  }
84502
- function eJ(e, t, n) {
84730
+ function dJ(e, t, n) {
84503
84731
  let r = .5 * 10 ** -n, i = [];
84504
84732
  for (let n of e) t.some((e) => Math.abs(n - e) <= r) && !i.some((e) => Math.abs(n - e) <= r) && i.push(n);
84505
84733
  return i;
84506
84734
  }
84507
- function tJ(e, t, n = 1e-6) {
84735
+ function fJ(e, t, n = 1e-6) {
84508
84736
  for (let n of t) if (n.length !== e.length) throw Error("proportions_along_bezier_curve_for_point: point and control points have different shapes");
84509
84737
  let r = t.length - 1, i = Math.round(Math.log10(1 / n)), a = [];
84510
84738
  for (let n = 0; n < e.length; n++) {
84511
84739
  let o = e[n], s = t.map((e) => e[n]), c = [];
84512
84740
  for (let e = r; e >= 0; e--) {
84513
- let t = Qq(r, e), n = 1, i = 0;
84741
+ let t = lJ(r, e), n = 1, i = 0;
84514
84742
  for (let t = e; t >= 0; t--) {
84515
- let r = Qq(e, t) * n * s[t];
84743
+ let r = lJ(e, t) * n * s[t];
84516
84744
  e === 0 && (r -= o), i += r, n *= -1;
84517
84745
  }
84518
84746
  c.push(t * i);
84519
84747
  }
84520
84748
  if (c.every((e) => e === 0)) continue;
84521
- let l = Zq(c.slice().reverse()).filter((e) => Math.abs(e.im) < 1e-9).map((e) => $q(e.re, i));
84749
+ let l = cJ(c.slice().reverse()).filter((e) => Math.abs(e.im) < 1e-9).map((e) => uJ(e.re, i));
84522
84750
  a.push(l);
84523
84751
  }
84524
84752
  if (a.length === 0) return [];
84525
84753
  let o = a[0];
84526
- for (let e = 1; e < a.length; e++) o = eJ(o, a[e], i);
84754
+ for (let e = 1; e < a.length; e++) o = dJ(o, a[e], i);
84527
84755
  return o.filter((e) => e >= 0 && e <= 1);
84528
84756
  }
84529
- function nJ(e, t, n = 1e-6) {
84530
- return tJ(e, t, n).length > 0;
84757
+ function pJ(e, t, n = 1e-6) {
84758
+ return fJ(e, t, n).length > 0;
84531
84759
  }
84532
84760
  //#endregion
84533
84761
  //#region src/mobjects/three-d/threeDVmobUtils.ts
84534
- function rJ(e) {
84762
+ function mJ(e) {
84535
84763
  return [
84536
84764
  e[0],
84537
84765
  e[1],
84538
84766
  e[2]
84539
84767
  ];
84540
84768
  }
84541
- function iJ(e) {
84769
+ function hJ(e) {
84542
84770
  return e.filter((e, t) => t % 3 == 0);
84543
84771
  }
84544
- function aJ(e) {
84545
- return [cJ(e), lJ(e)];
84772
+ function gJ(e) {
84773
+ return [yJ(e), bJ(e)];
84546
84774
  }
84547
- function oJ(e) {
84775
+ function _J(e) {
84548
84776
  return 0;
84549
84777
  }
84550
- function sJ(e) {
84778
+ function vJ(e) {
84551
84779
  return Math.floor((e.getPoints().length - 1) / 6) * 3;
84552
84780
  }
84553
- function cJ(e) {
84781
+ function yJ(e) {
84554
84782
  let t = e.getPoints();
84555
- return t.length === 0 ? [...Fd] : rJ(t[oJ(e)]);
84783
+ return t.length === 0 ? [...Fd] : mJ(t[_J(e)]);
84556
84784
  }
84557
- function lJ(e) {
84785
+ function bJ(e) {
84558
84786
  let t = e.getPoints();
84559
- return t.length === 0 ? [...Fd] : rJ(t[sJ(e)]);
84787
+ return t.length === 0 ? [...Fd] : mJ(t[vJ(e)]);
84560
84788
  }
84561
- function uJ(e, t) {
84789
+ function xJ(e, t) {
84562
84790
  let n = e.getPoints(), r = n.length;
84563
- if (iJ(n).length <= 2) return [...kd];
84564
- let i = t, a = i > 2 ? i - 3 : r - 4, o = oq(n[i < r - 3 ? i + 3 : 3].map((e, t) => e - n[i][t]), n[a].map((e, t) => e - n[i][t]));
84791
+ if (hJ(n).length <= 2) return [...kd];
84792
+ let i = t, a = i > 2 ? i - 3 : r - 4, o = _q(n[i < r - 3 ? i + 3 : 3].map((e, t) => e - n[i][t]), n[a].map((e, t) => e - n[i][t]));
84565
84793
  return Math.hypot(...o) === 0 ? [...kd] : o;
84566
84794
  }
84567
- function dJ(e) {
84568
- return uJ(e, oJ(e));
84795
+ function SJ(e) {
84796
+ return xJ(e, _J(e));
84569
84797
  }
84570
- function fJ(e) {
84571
- return uJ(e, sJ(e));
84798
+ function CJ(e) {
84799
+ return xJ(e, vJ(e));
84572
84800
  }
84573
84801
  //#endregion
84574
84802
  //#region src/core/SpecialThreeDScene.ts
84575
- var pJ = 70 * Nu, mJ = -110 * Nu, hJ = 2, gJ = 48, _J = class extends WE {
84803
+ var wJ = 70 * Nu, TJ = -110 * Nu, EJ = 2, DJ = 48, OJ = class extends WE {
84576
84804
  cutAxesAtRadius;
84577
84805
  _threeDAxesConfig;
84578
84806
  _sphereConfig;
84579
84807
  _defaultAngledCameraPosition;
84580
84808
  constructor(e, t = {}) {
84581
84809
  let { cutAxesAtRadius: n = !0, threeDAxesConfig: r = {}, sphereConfig: i = {}, defaultAngledCameraPosition: a = {
84582
- phi: pJ,
84583
- theta: mJ
84810
+ phi: wJ,
84811
+ theta: TJ
84584
84812
  }, phi: o = a.phi, theta: s = a.theta, ...c } = t;
84585
84813
  super(e, {
84586
84814
  ...c,
@@ -84610,8 +84838,8 @@ var pJ = 70 * Nu, mJ = -110 * Nu, hJ = 2, gJ = 48, _J = class extends WE {
84610
84838
  }
84611
84839
  getDefaultSphereConfig() {
84612
84840
  return {
84613
- radius: hJ,
84614
- resolution: gJ
84841
+ radius: EJ,
84842
+ resolution: DJ
84615
84843
  };
84616
84844
  }
84617
84845
  getAxes() {
@@ -84637,36 +84865,36 @@ var pJ = 70 * Nu, mJ = -110 * Nu, hJ = 2, gJ = 48, _J = class extends WE {
84637
84865
  };
84638
84866
  //#endregion
84639
84867
  //#region src/mobjects/text/registerFont.ts
84640
- function vJ(e, t) {
84868
+ function kJ(e, t) {
84641
84869
  if (typeof document > "u" || typeof FontFace > "u" || document.fonts === void 0) return !1;
84642
84870
  let n = typeof t == "string" && !/^\s*(url|local)\s*\(/i.test(t) ? `url("${t}")` : t, r = new FontFace(e, n);
84643
84871
  return document.fonts.add(r), !0;
84644
84872
  }
84645
84873
  //#endregion
84646
84874
  //#region src/integrations/webcomponent.ts
84647
- var yJ = 800, bJ = 450, xJ = { importModule: (e) => import(
84875
+ var AJ = 800, jJ = 450, MJ = { importModule: (e) => import(
84648
84876
  /* @vite-ignore */
84649
84877
  e
84650
84878
  ) };
84651
- function SJ(e) {
84879
+ function NJ(e) {
84652
84880
  return typeof e.togglePlayPause == "function";
84653
84881
  }
84654
- function CJ(e) {
84882
+ function PJ(e) {
84655
84883
  try {
84656
84884
  e.dispose();
84657
84885
  } catch (e) {
84658
84886
  qf.error("<manim-scene> failed to dispose instance:", e);
84659
84887
  }
84660
84888
  }
84661
- function wJ(e, t) {
84889
+ function FJ(e, t) {
84662
84890
  let n = e?.trim();
84663
84891
  return n ? /^\d+(\.\d+)?$/.test(n) ? `${n}px` : n : `${t}px`;
84664
84892
  }
84665
- function TJ(e) {
84893
+ function IJ(e) {
84666
84894
  let t = e?.trim();
84667
84895
  return !t || !/^\d+(\.\d+)?$/.test(t) ? null : Number(t);
84668
84896
  }
84669
- var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends EJ {
84897
+ var LJ = typeof HTMLElement < "u" ? HTMLElement : class {}, RJ = class extends LJ {
84670
84898
  static get observedAttributes() {
84671
84899
  return [
84672
84900
  "width",
@@ -84712,7 +84940,7 @@ var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends E
84712
84940
  }
84713
84941
  _applyContainerStyle() {
84714
84942
  let e = this._container;
84715
- e && (e.style.width = wJ(this.getAttribute("width"), yJ), e.style.height = wJ(this.getAttribute("height"), bJ), e.style.position = "relative", e.style.overflow = "hidden", e.style.background = this.getAttribute("background") ?? "");
84943
+ e && (e.style.width = FJ(this.getAttribute("width"), AJ), e.style.height = FJ(this.getAttribute("height"), jJ), e.style.position = "relative", e.style.overflow = "hidden", e.style.background = this.getAttribute("background") ?? "");
84716
84944
  }
84717
84945
  _mount() {
84718
84946
  return this._mountPromise = this._doMount(), this._mountPromise;
@@ -84731,7 +84959,7 @@ var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends E
84731
84959
  return;
84732
84960
  }
84733
84961
  if (e !== this._loadToken) {
84734
- CJ(r);
84962
+ PJ(r);
84735
84963
  return;
84736
84964
  }
84737
84965
  this._instance = r, this._applyPlaybackOptions();
@@ -84740,7 +84968,7 @@ var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends E
84740
84968
  if (this._sceneFactory) return this._sceneFactory;
84741
84969
  let t = this.getAttribute("src");
84742
84970
  if (!t) return null;
84743
- let n = await xJ.importModule(t);
84971
+ let n = await MJ.importModule(t);
84744
84972
  if (e !== this._loadToken) return null;
84745
84973
  let r = n.default;
84746
84974
  return typeof r == "function" ? r : (qf.error(`<manim-scene> module "${t}" has no default-export factory function.`), null);
@@ -84748,7 +84976,7 @@ var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends E
84748
84976
  _applyPlaybackOptions() {
84749
84977
  let e = this._instance;
84750
84978
  if (!e) return;
84751
- let t = SJ(e);
84979
+ let t = NJ(e);
84752
84980
  t && (e.loop = this.hasAttribute("loop")), t || this._syncSceneControls(e), this.hasAttribute("autoplay") && !e.isPlaying && (t ? e.play() : e.resume());
84753
84981
  }
84754
84982
  _syncSceneControls(e) {
@@ -84758,9 +84986,9 @@ var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends E
84758
84986
  _resizeInstance() {
84759
84987
  let e = this._instance;
84760
84988
  if (!e) return;
84761
- let t = TJ(this.getAttribute("width")), n = TJ(this.getAttribute("height"));
84989
+ let t = IJ(this.getAttribute("width")), n = IJ(this.getAttribute("height"));
84762
84990
  if (t === null || n === null) return;
84763
- let r = SJ(e) ? e.scene : e;
84991
+ let r = NJ(e) ? e.scene : e;
84764
84992
  try {
84765
84993
  r.resize(t, n);
84766
84994
  } catch (e) {
@@ -84776,78 +85004,78 @@ var EJ = typeof HTMLElement < "u" ? HTMLElement : class {}, DJ = class extends E
84776
85004
  }
84777
85005
  this._controls = null;
84778
85006
  }
84779
- this._instance &&= (CJ(this._instance), null);
85007
+ this._instance &&= (PJ(this._instance), null);
84780
85008
  }
84781
85009
  _clearContainerChildren() {
84782
85010
  let e = this._container;
84783
85011
  if (e) for (; e.firstChild;) e.removeChild(e.firstChild);
84784
85012
  }
84785
85013
  };
84786
- function OJ(e = "manim-scene") {
84787
- typeof customElements > "u" || typeof HTMLElement > "u" || customElements.get(e) || customElements.define(e, DJ);
85014
+ function zJ(e = "manim-scene") {
85015
+ typeof customElements > "u" || typeof HTMLElement > "u" || customElements.get(e) || customElements.define(e, RJ);
84788
85016
  }
84789
85017
  //#endregion
84790
85018
  //#region src/serialization/registry.ts
84791
- var kJ = /* @__PURE__ */ new Map();
84792
- function AJ(e, t) {
84793
- kJ.set(e, t);
85019
+ var BJ = /* @__PURE__ */ new Map();
85020
+ function VJ(e, t) {
85021
+ BJ.set(e, t);
84794
85022
  }
84795
- function jJ(e) {
84796
- kJ.delete(e);
85023
+ function HJ(e) {
85024
+ BJ.delete(e);
84797
85025
  }
84798
- function MJ(e) {
84799
- return kJ.get(e);
85026
+ function UJ(e) {
85027
+ return BJ.get(e);
84800
85028
  }
84801
- function NJ() {
84802
- return [...kJ.keys()].sort();
85029
+ function WJ() {
85030
+ return [...BJ.keys()].sort();
84803
85031
  }
84804
85032
  //#endregion
84805
85033
  //#region src/serialization/props.ts
84806
- function PJ(e, t) {
85034
+ function GJ(e, t) {
84807
85035
  return typeof e == "number" && Number.isFinite(e) ? e : t;
84808
85036
  }
84809
- function FJ(e, t) {
85037
+ function KJ(e, t) {
84810
85038
  return typeof e == "string" ? e : t;
84811
85039
  }
84812
- function IJ(e, t) {
85040
+ function qJ(e, t) {
84813
85041
  return typeof e == "boolean" ? e : t;
84814
85042
  }
84815
- function LJ(e) {
85043
+ function JJ(e) {
84816
85044
  return typeof e == "string" ? e : void 0;
84817
85045
  }
84818
- function RJ(e) {
85046
+ function YJ(e) {
84819
85047
  return Array.isArray(e) && e.length === 3 && e.every((e) => typeof e == "number" && Number.isFinite(e));
84820
85048
  }
84821
- function zJ(e, t) {
84822
- return RJ(e) ? [
85049
+ function XJ(e, t) {
85050
+ return YJ(e) ? [
84823
85051
  e[0],
84824
85052
  e[1],
84825
85053
  e[2]
84826
85054
  ] : t;
84827
85055
  }
84828
- function BJ(e) {
85056
+ function ZJ(e) {
84829
85057
  if (!Array.isArray(e)) return [];
84830
85058
  let t = [];
84831
- for (let n of e) RJ(n) && t.push([
85059
+ for (let n of e) YJ(n) && t.push([
84832
85060
  n[0],
84833
85061
  n[1],
84834
85062
  n[2]
84835
85063
  ]);
84836
85064
  return t;
84837
85065
  }
84838
- function VJ(e) {
85066
+ function QJ(e) {
84839
85067
  return typeof e == "object" && !!e && !Array.isArray(e);
84840
85068
  }
84841
85069
  //#endregion
84842
85070
  //#region src/serialization/defaults.ts
84843
- function HJ(e) {
84844
- return typeof e == "number" && Number.isFinite(e) ? e : FJ(e, "normal");
85071
+ function $J(e) {
85072
+ return typeof e == "number" && Number.isFinite(e) ? e : KJ(e, "normal");
84845
85073
  }
84846
- function UJ(e) {
85074
+ function eY(e) {
84847
85075
  return e === "left" || e === "right" ? e : "center";
84848
85076
  }
84849
- function WJ() {
84850
- AJ("Circle", {
85077
+ function tY() {
85078
+ VJ("Circle", {
84851
85079
  serialize: (e) => {
84852
85080
  let t = e;
84853
85081
  return {
@@ -84856,10 +85084,10 @@ function WJ() {
84856
85084
  };
84857
85085
  },
84858
85086
  deserialize: (e) => new EO({
84859
- radius: PJ(e.radius, 1),
84860
- numPoints: PJ(e.numPoints, 64)
85087
+ radius: GJ(e.radius, 1),
85088
+ numPoints: GJ(e.numPoints, 64)
84861
85089
  })
84862
- }), AJ("Rectangle", {
85090
+ }), VJ("Rectangle", {
84863
85091
  serialize: (e) => {
84864
85092
  let t = e;
84865
85093
  return {
@@ -84868,13 +85096,13 @@ function WJ() {
84868
85096
  };
84869
85097
  },
84870
85098
  deserialize: (e) => new GE({
84871
- width: PJ(e.width, 2),
84872
- height: PJ(e.height, 1)
85099
+ width: GJ(e.width, 2),
85100
+ height: GJ(e.height, 1)
84873
85101
  })
84874
- }), AJ("Square", {
85102
+ }), VJ("Square", {
84875
85103
  serialize: (e) => ({ sideLength: e._width }),
84876
- deserialize: (e) => new KE({ sideLength: PJ(e.sideLength, 2) })
84877
- }), AJ("Line", {
85104
+ deserialize: (e) => new KE({ sideLength: GJ(e.sideLength, 2) })
85105
+ }), VJ("Line", {
84878
85106
  serialize: (e) => {
84879
85107
  let t = e;
84880
85108
  return {
@@ -84883,27 +85111,27 @@ function WJ() {
84883
85111
  };
84884
85112
  },
84885
85113
  deserialize: (e) => new rD({
84886
- start: zJ(e.start, [
85114
+ start: XJ(e.start, [
84887
85115
  0,
84888
85116
  0,
84889
85117
  0
84890
85118
  ]),
84891
- end: zJ(e.end, [
85119
+ end: XJ(e.end, [
84892
85120
  1,
84893
85121
  0,
84894
85122
  0
84895
85123
  ])
84896
85124
  })
84897
- }), AJ("Dot", {
85125
+ }), VJ("Dot", {
84898
85126
  serialize: (e) => ({ radius: e._radius }),
84899
- deserialize: (e) => new XO({ radius: PJ(e.radius, .08) })
84900
- }), AJ("Polygon", {
85127
+ deserialize: (e) => new XO({ radius: GJ(e.radius, .08) })
85128
+ }), VJ("Polygon", {
84901
85129
  serialize: (e) => ({
84902
85130
  vertices: e.getVertices().map((e) => [...e]),
84903
85131
  closed: e._closed
84904
85132
  }),
84905
85133
  deserialize: (e) => {
84906
- let t = BJ(e.vertices);
85134
+ let t = ZJ(e.vertices);
84907
85135
  return new DO({
84908
85136
  vertices: t.length >= 2 ? t : [[
84909
85137
  0,
@@ -84914,16 +85142,16 @@ function WJ() {
84914
85142
  0,
84915
85143
  0
84916
85144
  ]],
84917
- closed: IJ(e.closed, !0)
85145
+ closed: qJ(e.closed, !0)
84918
85146
  });
84919
85147
  }
84920
- }), AJ("Group", {
85148
+ }), VJ("Group", {
84921
85149
  serialize: () => ({}),
84922
85150
  deserialize: () => new PT()
84923
- }), AJ("VGroup", {
85151
+ }), VJ("VGroup", {
84924
85152
  serialize: () => ({}),
84925
85153
  deserialize: () => new B()
84926
- }), AJ("Text", {
85154
+ }), VJ("Text", {
84927
85155
  serialize: (e) => {
84928
85156
  let t = e;
84929
85157
  return {
@@ -84938,16 +85166,16 @@ function WJ() {
84938
85166
  };
84939
85167
  },
84940
85168
  deserialize: (e) => new Uw({
84941
- text: FJ(e.text, ""),
84942
- fontSize: PJ(e.fontSize, 48),
84943
- fontFamily: FJ(e.fontFamily, "CMU Serif, Georgia, Times New Roman, serif"),
84944
- fontWeight: HJ(e.fontWeight),
84945
- fontStyle: FJ(e.fontStyle, "normal"),
84946
- lineHeight: PJ(e.lineHeight, 1.2),
84947
- letterSpacing: PJ(e.letterSpacing, 0),
84948
- textAlign: UJ(e.textAlign)
85169
+ text: KJ(e.text, ""),
85170
+ fontSize: GJ(e.fontSize, 48),
85171
+ fontFamily: KJ(e.fontFamily, "CMU Serif, Georgia, Times New Roman, serif"),
85172
+ fontWeight: $J(e.fontWeight),
85173
+ fontStyle: KJ(e.fontStyle, "normal"),
85174
+ lineHeight: GJ(e.lineHeight, 1.2),
85175
+ letterSpacing: GJ(e.letterSpacing, 0),
85176
+ textAlign: eY(e.textAlign)
84949
85177
  })
84950
- }), AJ("MathTex", {
85178
+ }), VJ("MathTex", {
84951
85179
  serialize: (e) => {
84952
85180
  let t = e;
84953
85181
  return {
@@ -84957,15 +85185,15 @@ function WJ() {
84957
85185
  };
84958
85186
  },
84959
85187
  deserialize: (e) => new oM({
84960
- latex: FJ(e.latex, ""),
84961
- fontSize: PJ(e.fontSize, 1),
84962
- displayMode: IJ(e.displayMode, !0)
85188
+ latex: KJ(e.latex, ""),
85189
+ fontSize: GJ(e.fontSize, 1),
85190
+ displayMode: qJ(e.displayMode, !0)
84963
85191
  })
84964
85192
  });
84965
85193
  }
84966
85194
  //#endregion
84967
85195
  //#region src/serialization/types.ts
84968
- var GJ = "manim-web-scene", KJ = {
85196
+ var nY = "manim-web-scene", rY = {
84969
85197
  position: [
84970
85198
  0,
84971
85199
  0,
@@ -84982,7 +85210,7 @@ var GJ = "manim-web-scene", KJ = {
84982
85210
  1
84983
85211
  ]
84984
85212
  };
84985
- function qJ(e) {
85213
+ function iY(e) {
84986
85214
  return {
84987
85215
  position: [
84988
85216
  e.position.x,
@@ -85001,98 +85229,98 @@ function qJ(e) {
85001
85229
  ]
85002
85230
  };
85003
85231
  }
85004
- function JJ(e) {
85232
+ function aY(e) {
85005
85233
  let t = {};
85006
85234
  return e.strokeColor !== void 0 && (t.strokeColor = e.strokeColor), e.fillColor !== void 0 && (t.fillColor = e.fillColor), typeof e.opacity == "number" && (t.strokeOpacity = e.opacity), typeof e.fillOpacity == "number" && (t.fillOpacity = e.fillOpacity), typeof e.strokeWidth == "number" && (t.strokeWidth = e.strokeWidth), t;
85007
85235
  }
85008
- function YJ(e, t) {
85009
- let n = VJ(t) ? t : {}, r = zJ(n.position, KJ.position), i = zJ(n.rotation, KJ.rotation), a = zJ(n.scale, KJ.scale);
85236
+ function oY(e, t) {
85237
+ let n = QJ(t) ? t : {}, r = XJ(n.position, rY.position), i = XJ(n.rotation, rY.rotation), a = XJ(n.scale, rY.scale);
85010
85238
  e.position.set(r[0], r[1], r[2]), e.rotation.set(i[0], i[1], i[2]), e.scaleVector.set(a[0], a[1], a[2]);
85011
85239
  }
85012
- function XJ(e, t) {
85013
- let n = VJ(t) ? t : {};
85240
+ function sY(e, t) {
85241
+ let n = QJ(t) ? t : {};
85014
85242
  typeof n.strokeWidth == "number" && e.setStrokeWidth(n.strokeWidth), typeof n.strokeOpacity == "number" && e.setStrokeOpacity(n.strokeOpacity), typeof n.fillOpacity == "number" && e.setFillOpacity(n.fillOpacity);
85015
- let r = LJ(n.strokeColor), i = LJ(n.fillColor);
85243
+ let r = JJ(n.strokeColor), i = JJ(n.fillColor);
85016
85244
  r !== void 0 && (e.color = r), r !== void 0 && (e.strokeColor = r), i !== void 0 && (e.fillColor = i);
85017
85245
  }
85018
- function ZJ(e) {
85019
- let t = e.constructor.name, n = MJ(t), r = {
85246
+ function cY(e) {
85247
+ let t = e.constructor.name, n = UJ(t), r = {
85020
85248
  type: t,
85021
85249
  props: n ? n.serialize(e) : {},
85022
- transform: qJ(e),
85023
- style: JJ(e),
85024
- children: e.children.map(ZJ)
85250
+ transform: iY(e),
85251
+ style: aY(e),
85252
+ children: e.children.map(cY)
85025
85253
  };
85026
85254
  return n || (r.unknown = !0), r;
85027
85255
  }
85028
- function QJ(e) {
85029
- if (!VJ(e) || e.unknown === !0) return null;
85030
- let t = LJ(e.type);
85256
+ function lY(e) {
85257
+ if (!QJ(e) || e.unknown === !0) return null;
85258
+ let t = JJ(e.type);
85031
85259
  if (t === void 0) return null;
85032
- let n = MJ(t);
85260
+ let n = UJ(t);
85033
85261
  if (!n) return null;
85034
- let r = VJ(e.props) ? e.props : {}, i = n.deserialize(r);
85035
- if (YJ(i, e.transform), XJ(i, e.style), Array.isArray(e.children)) for (let t of e.children) {
85036
- let e = QJ(t);
85262
+ let r = QJ(e.props) ? e.props : {}, i = n.deserialize(r);
85263
+ if (oY(i, e.transform), sY(i, e.style), Array.isArray(e.children)) for (let t of e.children) {
85264
+ let e = lY(t);
85037
85265
  e && i.add(e);
85038
85266
  }
85039
85267
  return i;
85040
85268
  }
85041
- function $J(e) {
85269
+ function uY(e) {
85042
85270
  let t = [];
85043
- for (let n of e.mobjects) t.push(ZJ(n));
85271
+ for (let n of e.mobjects) t.push(cY(n));
85044
85272
  return {
85045
- format: GJ,
85273
+ format: nY,
85046
85274
  version: 1,
85047
85275
  mobjects: t
85048
85276
  };
85049
85277
  }
85050
- function eY(e, t) {
85051
- if (!VJ(e) || !Array.isArray(e.mobjects)) return [];
85278
+ function dY(e, t) {
85279
+ if (!QJ(e) || !Array.isArray(e.mobjects)) return [];
85052
85280
  let n = [];
85053
85281
  for (let r of e.mobjects) {
85054
- let e = QJ(r);
85282
+ let e = lY(r);
85055
85283
  e && (t.add(e), n.push(e));
85056
85284
  }
85057
85285
  return n;
85058
85286
  }
85059
85287
  //#endregion
85060
85288
  //#region src/serialization/urlState.ts
85061
- var tY = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", nY = (() => {
85289
+ var fY = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", pY = (() => {
85062
85290
  let e = /* @__PURE__ */ new Map();
85063
- for (let t = 0; t < 64; t++) e.set(tY.charAt(t), t);
85291
+ for (let t = 0; t < 64; t++) e.set(fY.charAt(t), t);
85064
85292
  return e;
85065
85293
  })();
85066
- function rY(e) {
85294
+ function mY(e) {
85067
85295
  let t = "";
85068
85296
  for (let n = 0; n < e.length; n += 3) {
85069
85297
  let r = e[n], i = n + 1 < e.length, a = n + 2 < e.length, o = i ? e[n + 1] : 0, s = a ? e[n + 2] : 0, c = r << 16 | o << 8 | s;
85070
- t += tY.charAt(c >> 18 & 63), t += tY.charAt(c >> 12 & 63), i && (t += tY.charAt(c >> 6 & 63)), a && (t += tY.charAt(c & 63));
85298
+ t += fY.charAt(c >> 18 & 63), t += fY.charAt(c >> 12 & 63), i && (t += fY.charAt(c >> 6 & 63)), a && (t += fY.charAt(c & 63));
85071
85299
  }
85072
85300
  return t;
85073
85301
  }
85074
- function iY(e) {
85302
+ function hY(e) {
85075
85303
  let t = e.length;
85076
85304
  if (t % 4 == 1) return null;
85077
85305
  let n = [];
85078
85306
  for (let r = 0; r < t; r += 4) {
85079
- let i = Math.min(4, t - r), a = nY.get(e.charAt(r)), o = nY.get(e.charAt(r + 1));
85307
+ let i = Math.min(4, t - r), a = pY.get(e.charAt(r)), o = pY.get(e.charAt(r + 1));
85080
85308
  if (a === void 0 || o === void 0) return null;
85081
- let s = i > 2 ? nY.get(e.charAt(r + 2)) : 0, c = i > 3 ? nY.get(e.charAt(r + 3)) : 0;
85309
+ let s = i > 2 ? pY.get(e.charAt(r + 2)) : 0, c = i > 3 ? pY.get(e.charAt(r + 3)) : 0;
85082
85310
  if (s === void 0 || c === void 0) return null;
85083
85311
  let l = a << 18 | o << 12 | s << 6 | c;
85084
85312
  n.push(l >> 16 & 255), i > 2 && n.push(l >> 8 & 255), i > 3 && n.push(l & 255);
85085
85313
  }
85086
85314
  return Uint8Array.from(n);
85087
85315
  }
85088
- function aY(e) {
85316
+ function gY(e) {
85089
85317
  let t = JSON.stringify(e), n = typeof t == "string" ? t : "null";
85090
- return rY(new TextEncoder().encode(n));
85318
+ return mY(new TextEncoder().encode(n));
85091
85319
  }
85092
- function oY(e) {
85320
+ function _Y(e) {
85093
85321
  let t = e.startsWith("#") ? e.slice(1) : e;
85094
85322
  if (t.length === 0) return null;
85095
- let n = iY(t);
85323
+ let n = hY(t);
85096
85324
  if (n === null) return null;
85097
85325
  try {
85098
85326
  let e = new TextDecoder().decode(n);
@@ -85101,18 +85329,18 @@ function oY(e) {
85101
85329
  return null;
85102
85330
  }
85103
85331
  }
85104
- function sY() {
85332
+ function vY() {
85105
85333
  return typeof window < "u" && window.location ? window.location : null;
85106
85334
  }
85107
- function cY() {
85335
+ function yY() {
85108
85336
  return typeof window < "u" && window.history ? window.history : null;
85109
85337
  }
85110
- function lY(e, t = {}) {
85111
- let n = sY();
85338
+ function bY(e, t = {}) {
85339
+ let n = vY();
85112
85340
  if (!n) return;
85113
- let r = aY(e), i = `#${r}`;
85341
+ let r = gY(e), i = `#${r}`;
85114
85342
  if (t.replace) {
85115
- let e = cY();
85343
+ let e = yY();
85116
85344
  if (e && typeof e.replaceState == "function") {
85117
85345
  e.replaceState(e.state ?? null, "", i);
85118
85346
  return;
@@ -85120,29 +85348,29 @@ function lY(e, t = {}) {
85120
85348
  }
85121
85349
  n.hash = r;
85122
85350
  }
85123
- function uY() {
85124
- let e = sY();
85125
- return e ? oY(e.hash) : null;
85351
+ function xY() {
85352
+ let e = vY();
85353
+ return e ? _Y(e.hash) : null;
85126
85354
  }
85127
- function dY(e) {
85355
+ function SY(e) {
85128
85356
  if (typeof window > "u" || typeof window.addEventListener != "function") return () => void 0;
85129
- let t = () => e(uY());
85357
+ let t = () => e(xY());
85130
85358
  return window.addEventListener("hashchange", t), () => window.removeEventListener("hashchange", t);
85131
85359
  }
85132
- function fY(e) {
85360
+ function CY(e) {
85133
85361
  let t = {};
85134
85362
  for (let n of e) t[n.id] = n.get();
85135
85363
  return t;
85136
85364
  }
85137
- function pY(e, t) {
85365
+ function wY(e, t) {
85138
85366
  if (typeof t != "object" || !t || Array.isArray(t)) return !1;
85139
85367
  let n = t, r = !1;
85140
85368
  for (let t of e) Object.prototype.hasOwnProperty.call(n, t.id) && (t.set(n[t.id]), r = !0);
85141
85369
  return r;
85142
85370
  }
85143
- function mY(e, t = {}) {
85144
- let { replace: n = !0, restoreOnBind: r = !0, listen: i = !0 } = t, a = () => fY(e), o = () => lY(a(), { replace: n }), s = () => pY(e, uY()), c = null;
85145
- return r && s(), i && (c = dY((t) => pY(e, t))), {
85371
+ function TY(e, t = {}) {
85372
+ let { replace: n = !0, restoreOnBind: r = !0, listen: i = !0 } = t, a = () => CY(e), o = () => bY(a(), { replace: n }), s = () => wY(e, xY()), c = null;
85373
+ return r && s(), i && (c = SY((t) => wY(e, t))), {
85146
85374
  capture: a,
85147
85375
  save: o,
85148
85376
  restore: s,
@@ -85153,13 +85381,13 @@ function mY(e, t = {}) {
85153
85381
  }
85154
85382
  //#endregion
85155
85383
  //#region src/serialization/parametrized.ts
85156
- function hY(e) {
85384
+ function EY(e) {
85157
85385
  return Array.isArray(e) && e.length === 3 && e.every((e) => typeof e == "number" && Number.isFinite(e));
85158
85386
  }
85159
- function gY(e) {
85160
- return typeof e == "number" ? "number" : typeof e == "string" ? "string" : typeof e == "boolean" ? "boolean" : hY(e) ? "vec3" : Array.isArray(e) ? "array" : VJ(e) ? "object" : null;
85387
+ function DY(e) {
85388
+ return typeof e == "number" ? "number" : typeof e == "string" ? "string" : typeof e == "boolean" ? "boolean" : EY(e) ? "vec3" : Array.isArray(e) ? "array" : QJ(e) ? "object" : null;
85161
85389
  }
85162
- function _Y(e, t, n) {
85390
+ function OY(e, t, n) {
85163
85391
  switch (t) {
85164
85392
  case "number":
85165
85393
  if (typeof e == "number" && Number.isFinite(e)) return e;
@@ -85170,46 +85398,46 @@ function _Y(e, t, n) {
85170
85398
  return typeof e == "boolean" ? +!!e : n;
85171
85399
  case "string": return typeof e == "string" ? e : typeof e == "number" && Number.isFinite(e) || typeof e == "boolean" ? String(e) : n;
85172
85400
  case "boolean": return typeof e == "boolean" ? e : e === "true" ? !0 : e === "false" ? !1 : typeof e == "number" && Number.isFinite(e) ? e !== 0 : n;
85173
- case "vec3": return zJ(e, hY(n) ? n : [
85401
+ case "vec3": return XJ(e, EY(n) ? n : [
85174
85402
  0,
85175
85403
  0,
85176
85404
  0
85177
85405
  ]);
85178
85406
  case "array": return Array.isArray(e) ? e : n;
85179
- case "object": return VJ(e) ? e : n;
85407
+ case "object": return QJ(e) ? e : n;
85180
85408
  }
85181
85409
  }
85182
- function vY(e, t, n) {
85183
- let r = e.defaultProps[t], i = e.schema?.[t] ?? gY(r);
85184
- return i === null ? n === void 0 ? r : n : _Y(n, i, r);
85410
+ function kY(e, t, n) {
85411
+ let r = e.defaultProps[t], i = e.schema?.[t] ?? DY(r);
85412
+ return i === null ? n === void 0 ? r : n : OY(n, i, r);
85185
85413
  }
85186
- function yY(e, t, n) {
85414
+ function AY(e, t, n) {
85187
85415
  let r = { ...t };
85188
- if (n) for (let t of Object.keys(n)) Object.prototype.hasOwnProperty.call(e.defaultProps, t) && (r[t] = vY(e, t, n[t]));
85416
+ if (n) for (let t of Object.keys(n)) Object.prototype.hasOwnProperty.call(e.defaultProps, t) && (r[t] = kY(e, t, n[t]));
85189
85417
  return r;
85190
85418
  }
85191
- function bY(e) {
85419
+ function jY(e) {
85192
85420
  return e;
85193
85421
  }
85194
- function xY(e, t) {
85195
- return yY(e, { ...e.defaultProps }, t);
85422
+ function MY(e, t) {
85423
+ return AY(e, { ...e.defaultProps }, t);
85196
85424
  }
85197
- function SY(e) {
85198
- let t = uY();
85199
- return xY(e, VJ(t) ? t : void 0);
85425
+ function NY(e) {
85426
+ let t = xY();
85427
+ return MY(e, QJ(t) ? t : void 0);
85200
85428
  }
85201
- var CY = async (e, t) => {
85429
+ var PY = async (e, t) => {
85202
85430
  if (typeof fetch != "function") throw Error("renderParametrized: no global fetch available. Pass options.fetch to inject one.");
85203
85431
  let n = await fetch(e, t);
85204
85432
  if (!n.ok) throw Error(`renderParametrized: fetch failed for ${e} (status ${n.status})`);
85205
85433
  return n.json();
85206
85434
  };
85207
- function wY(e, t) {
85435
+ function FY(e, t) {
85208
85436
  let n = t.width ?? e.renderer.width, r = t.height ?? e.renderer.height;
85209
85437
  (n !== e.renderer.width || r !== e.renderer.height) && e.resize(n, r), typeof t.fps == "number" && Number.isFinite(t.fps) && e.setTargetFps(t.fps);
85210
85438
  }
85211
- async function TY(e, t, n = {}) {
85212
- let r = n.fetch ?? CY, i = xY(e, t), a, o = {};
85439
+ async function IY(e, t, n = {}) {
85440
+ let r = n.fetch ?? PY, i = MY(e, t), a, o = {};
85213
85441
  if (e.calculateMetadata) {
85214
85442
  let t = await e.calculateMetadata({
85215
85443
  props: i,
@@ -85220,7 +85448,7 @@ async function TY(e, t, n = {}) {
85220
85448
  width: t.width,
85221
85449
  height: t.height,
85222
85450
  fps: t.fps
85223
- }, t.props && (i = yY(e, i, t.props));
85451
+ }, t.props && (i = AY(e, i, t.props));
85224
85452
  }
85225
85453
  let s = n.scene;
85226
85454
  s ||= pE.createHeadless({
@@ -85228,9 +85456,9 @@ async function TY(e, t, n = {}) {
85228
85456
  ...o.width === void 0 ? {} : { width: o.width },
85229
85457
  ...o.height === void 0 ? {} : { height: o.height },
85230
85458
  ...o.fps === void 0 ? {} : { targetFps: o.fps }
85231
- }), wY(s, o);
85232
- let c = aY(i);
85233
- return n.writeUrl && lY(i, { replace: n.urlReplace ?? !0 }), await e.build(s, i, a), {
85459
+ }), FY(s, o);
85460
+ let c = gY(i);
85461
+ return n.writeUrl && bY(i, { replace: n.urlReplace ?? !0 }), await e.build(s, i, a), {
85234
85462
  scene: s,
85235
85463
  props: i,
85236
85464
  data: a,
@@ -85245,10 +85473,10 @@ async function TY(e, t, n = {}) {
85245
85473
  }
85246
85474
  //#endregion
85247
85475
  //#region src/serialization/index.ts
85248
- WJ();
85476
+ tY();
85249
85477
  //#endregion
85250
85478
  //#region src/mobjects/geo/geojson.ts
85251
- function EY(e) {
85479
+ function LY(e) {
85252
85480
  if (e.type === "Polygon") {
85253
85481
  let t = e.coordinates[0];
85254
85482
  return t ? [t] : [];
@@ -85262,26 +85490,26 @@ function EY(e) {
85262
85490
  }
85263
85491
  //#endregion
85264
85492
  //#region src/mobjects/geo/projections.ts
85265
- var DY = Math.PI / 180;
85266
- function OY(e = {}) {
85267
- let { radius: t = 1, centerLon: n = 0, centerLat: r = 0, standardParallel: i = 0 } = e, a = Math.cos(i * DY);
85268
- return ([e, i]) => [(e - n) * DY * t * a, (i - r) * DY * t];
85493
+ var RY = Math.PI / 180;
85494
+ function zY(e = {}) {
85495
+ let { radius: t = 1, centerLon: n = 0, centerLat: r = 0, standardParallel: i = 0 } = e, a = Math.cos(i * RY);
85496
+ return ([e, i]) => [(e - n) * RY * t * a, (i - r) * RY * t];
85269
85497
  }
85270
- function kY(e = {}) {
85498
+ function BY(e = {}) {
85271
85499
  let { radius: t = 1, centerLon: n = 0, maxLatitude: r = 85.05112878 } = e;
85272
85500
  return ([e, i]) => {
85273
- let a = Math.max(-r, Math.min(r, i)) * DY;
85274
- return [(e - n) * DY * t, t * Math.log(Math.tan(Math.PI / 4 + a / 2))];
85501
+ let a = Math.max(-r, Math.min(r, i)) * RY;
85502
+ return [(e - n) * RY * t, t * Math.log(Math.tan(Math.PI / 4 + a / 2))];
85275
85503
  };
85276
85504
  }
85277
85505
  //#endregion
85278
85506
  //#region src/mobjects/geo/colorScale.ts
85279
- var AY = ["#0d1b2a", "#4cc9f0"], jY = class {
85507
+ var VY = ["#0d1b2a", "#4cc9f0"], HY = class {
85280
85508
  _palette;
85281
85509
  _domain;
85282
85510
  constructor(e = {}) {
85283
- let { colors: t = AY, domain: n = [0, 1], samples: r = 256 } = e, i = Math.max(2, Math.floor(r));
85284
- this._palette = wh(t.length > 0 ? t : AY, i), this._domain = [n[0], n[1]];
85511
+ let { colors: t = VY, domain: n = [0, 1], samples: r = 256 } = e, i = Math.max(2, Math.floor(r));
85512
+ this._palette = wh(t.length > 0 ? t : VY, i), this._domain = [n[0], n[1]];
85285
85513
  }
85286
85514
  setDomainFromValues(e) {
85287
85515
  let t = Infinity, n = -Infinity;
@@ -85297,7 +85525,7 @@ var AY = ["#0d1b2a", "#4cc9f0"], jY = class {
85297
85525
  let a = Math.round(i * (this._palette.length - 1));
85298
85526
  return this._palette[a];
85299
85527
  }
85300
- }, MY = class extends PT {
85528
+ }, UY = class extends PT {
85301
85529
  _projection;
85302
85530
  _colorScale;
85303
85531
  _regions = [];
@@ -85305,10 +85533,10 @@ var AY = ["#0d1b2a", "#4cc9f0"], jY = class {
85305
85533
  _regionPolygons = [];
85306
85534
  constructor(e) {
85307
85535
  super();
85308
- let { geojson: t, value: n, colorScale: r = ["#0d1b2a", "#4cc9f0"], domain: i, fillOpacity: a = 1, noDataColor: o = wl, borderColor: s = "#1b263b", borderWidth: c = 1, projection: l = OY() } = e;
85536
+ let { geojson: t, value: n, colorScale: r = ["#0d1b2a", "#4cc9f0"], domain: i, fillOpacity: a = 1, noDataColor: o = wl, borderColor: s = "#1b263b", borderWidth: c = 1, projection: l = zY() } = e;
85309
85537
  this._projection = l;
85310
85538
  let u = t.features ?? [], d = u.map((e, t) => n(e, t));
85311
- this._colorScale = new jY({
85539
+ this._colorScale = new HY({
85312
85540
  colors: r,
85313
85541
  domain: i
85314
85542
  }), i || this._colorScale.setDomainFromValues(d.filter((e) => typeof e == "number" && Number.isFinite(e))), u.forEach((e, t) => {
@@ -85321,7 +85549,7 @@ var AY = ["#0d1b2a", "#4cc9f0"], jY = class {
85321
85549
  });
85322
85550
  }
85323
85551
  _buildRegion(e, t, n) {
85324
- let r = typeof t == "number" && Number.isFinite(t) ? this._colorScale.colorFor(t) : n.noDataColor, i = EY(e.geometry), a = [];
85552
+ let r = typeof t == "number" && Number.isFinite(t) ? this._colorScale.colorFor(t) : n.noDataColor, i = LY(e.geometry), a = [];
85325
85553
  for (let e of i) {
85326
85554
  let t = this._buildPolygon(e, r, n);
85327
85555
  t && a.push(t);
@@ -85330,7 +85558,7 @@ var AY = ["#0d1b2a", "#4cc9f0"], jY = class {
85330
85558
  this.add(o), this._regions.push(o), this._regionColors.push(r), this._regionPolygons.push(a);
85331
85559
  }
85332
85560
  _buildPolygon(e, t, n) {
85333
- let r = PY(e);
85561
+ let r = GY(e);
85334
85562
  if (r.length < 3) return null;
85335
85563
  let i = new DO({
85336
85564
  vertices: r.map((e) => {
@@ -85366,15 +85594,15 @@ var AY = ["#0d1b2a", "#4cc9f0"], jY = class {
85366
85594
  getColorScale() {
85367
85595
  return this._colorScale;
85368
85596
  }
85369
- }, NY = MY;
85370
- function PY(e) {
85597
+ }, WY = UY;
85598
+ function GY(e) {
85371
85599
  if (e.length < 2) return e;
85372
85600
  let t = e[0], n = e[e.length - 1];
85373
85601
  return t[0] === n[0] && t[1] === n[1] ? e.slice(0, -1) : e;
85374
85602
  }
85375
85603
  //#endregion
85376
85604
  //#region src/mobjects/geo/Globe.ts
85377
- var FY = Math.PI / 180, IY = class extends PT {
85605
+ var KY = Math.PI / 180, qY = class extends PT {
85378
85606
  _radius;
85379
85607
  _center;
85380
85608
  _sphere;
@@ -85422,9 +85650,9 @@ var FY = Math.PI / 180, IY = class extends PT {
85422
85650
  return [...this._plottedPoints];
85423
85651
  }
85424
85652
  arc(e, t, n = {}) {
85425
- let { segments: r = 64, color: i = "#ef476f", lineWidth: a = 2, altitude: o = 0 } = n, s = this._radius * (1 + o), c = LY(e[0], e[1]), l = LY(t[0], t[1]), u = BY(c[0] * l[0] + c[1] * l[1] + c[2] * l[2], -1, 1), d = Math.acos(u), f = Math.sin(d), p = [];
85653
+ let { segments: r = 64, color: i = "#ef476f", lineWidth: a = 2, altitude: o = 0 } = n, s = this._radius * (1 + o), c = JY(e[0], e[1]), l = JY(t[0], t[1]), u = ZY(c[0] * l[0] + c[1] * l[1] + c[2] * l[2], -1, 1), d = Math.acos(u), f = Math.sin(d), p = [];
85426
85654
  for (let e = 0; e <= r; e++) {
85427
- let t = RY(c, l, e / r, d, f);
85655
+ let t = YY(c, l, e / r, d, f);
85428
85656
  p.push([
85429
85657
  this._center[0] + s * t[0],
85430
85658
  this._center[1] + s * t[1],
@@ -85441,8 +85669,8 @@ var FY = Math.PI / 180, IY = class extends PT {
85441
85669
  }
85442
85670
  graticule(e = {}) {
85443
85671
  let { latStep: t = 30, lonStep: n = 30, segments: r = 48, color: i = "#8d99ae", lineWidth: a = 1 } = e, o = new PT();
85444
- for (let e = -180; e < 180; e += n) o.add(this._gridLine(VY(e, r), i, a));
85445
- for (let e = -90 + t; e < 90; e += t) o.add(this._gridLine(HY(e, r), i, a));
85672
+ for (let e = -180; e < 180; e += n) o.add(this._gridLine(QY(e, r), i, a));
85673
+ for (let e = -90 + t; e < 90; e += t) o.add(this._gridLine($Y(e, r), i, a));
85446
85674
  return this.add(o), o;
85447
85675
  }
85448
85676
  _gridLine(e, t, n) {
@@ -85454,7 +85682,7 @@ var FY = Math.PI / 180, IY = class extends PT {
85454
85682
  });
85455
85683
  }
85456
85684
  _surfacePoint(e, t, n) {
85457
- let r = LY(e, t);
85685
+ let r = JY(e, t);
85458
85686
  return [
85459
85687
  this._center[0] + n * r[0],
85460
85688
  this._center[1] + n * r[1],
@@ -85462,16 +85690,16 @@ var FY = Math.PI / 180, IY = class extends PT {
85462
85690
  ];
85463
85691
  }
85464
85692
  };
85465
- function LY(e, t) {
85466
- let n = e * FY, r = t * FY, i = Math.cos(n);
85693
+ function JY(e, t) {
85694
+ let n = e * KY, r = t * KY, i = Math.cos(n);
85467
85695
  return [
85468
85696
  i * Math.cos(r),
85469
85697
  i * Math.sin(r),
85470
85698
  Math.sin(n)
85471
85699
  ];
85472
85700
  }
85473
- function RY(e, t, n, r, i) {
85474
- if (i < 1e-9) return zY([
85701
+ function YY(e, t, n, r, i) {
85702
+ if (i < 1e-9) return XY([
85475
85703
  e[0] + (t[0] - e[0]) * n,
85476
85704
  e[1] + (t[1] - e[1]) * n,
85477
85705
  e[2] + (t[2] - e[2]) * n
@@ -85483,7 +85711,7 @@ function RY(e, t, n, r, i) {
85483
85711
  e[2] * a + t[2] * o
85484
85712
  ];
85485
85713
  }
85486
- function zY(e) {
85714
+ function XY(e) {
85487
85715
  let t = Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]) || 1;
85488
85716
  return [
85489
85717
  e[0] / t,
@@ -85491,44 +85719,44 @@ function zY(e) {
85491
85719
  e[2] / t
85492
85720
  ];
85493
85721
  }
85494
- function BY(e, t, n) {
85722
+ function ZY(e, t, n) {
85495
85723
  return Math.max(t, Math.min(n, e));
85496
85724
  }
85497
- function VY(e, t) {
85725
+ function QY(e, t) {
85498
85726
  let n = [];
85499
85727
  for (let r = 0; r <= t; r++) n.push([-90 + 180 * r / t, e]);
85500
85728
  return n;
85501
85729
  }
85502
- function HY(e, t) {
85730
+ function $Y(e, t) {
85503
85731
  let n = [];
85504
85732
  for (let r = 0; r <= t; r++) n.push([e, -180 + 360 * r / t]);
85505
85733
  return n;
85506
85734
  }
85507
85735
  //#endregion
85508
85736
  //#region src/mobjects/ml/mlStyles.ts
85509
- var UY = {
85737
+ var eX = {
85510
85738
  color: Nl,
85511
85739
  fillColor: Nl,
85512
85740
  fillOpacity: .3,
85513
85741
  strokeWidth: 2
85514
- }, WY = {
85742
+ }, tX = {
85515
85743
  color: wl,
85516
85744
  strokeWidth: 1.5,
85517
85745
  opacity: .35
85518
- }, GY = hl;
85519
- function KY(e, t) {
85746
+ }, nX = hl;
85747
+ function rX(e, t) {
85520
85748
  return {
85521
85749
  ...e,
85522
- ...JY(t)
85750
+ ...aX(t)
85523
85751
  };
85524
85752
  }
85525
- function qY(e, t) {
85753
+ function iX(e, t) {
85526
85754
  return {
85527
85755
  ...e,
85528
- ...JY(t)
85756
+ ...aX(t)
85529
85757
  };
85530
85758
  }
85531
- function JY(e) {
85759
+ function aX(e) {
85532
85760
  if (!e) return {};
85533
85761
  let t = {};
85534
85762
  for (let n of Object.keys(e)) e[n] !== void 0 && (t[n] = e[n]);
@@ -85536,7 +85764,7 @@ function JY(e) {
85536
85764
  }
85537
85765
  //#endregion
85538
85766
  //#region src/mobjects/ml/NeuralNetworkLayer.ts
85539
- var YY = class extends B {
85767
+ var oX = class extends B {
85540
85768
  _nodes = [];
85541
85769
  normalizeTransform(e = this._ownMatrix()) {
85542
85770
  return this._flattenAsContainer(e);
@@ -85550,14 +85778,14 @@ var YY = class extends B {
85550
85778
  nodeAnchors() {
85551
85779
  return this._nodes.map((e) => e.getCenter());
85552
85780
  }
85553
- }, XY = class extends YY {
85781
+ }, sX = class extends oX {
85554
85782
  _nodeRadius;
85555
85783
  _nodeSpacing;
85556
85784
  _nodeStyle;
85557
85785
  constructor(e = {}) {
85558
85786
  super();
85559
85787
  let t = e.numNodes ?? 3, n = Math.max(0, Math.floor(t));
85560
- this._nodeRadius = e.nodeRadius ?? .25, this._nodeSpacing = e.nodeSpacing ?? .7, this._nodeStyle = KY(UY, e.nodeStyle), this._buildNodes(n);
85788
+ this._nodeRadius = e.nodeRadius ?? .25, this._nodeSpacing = e.nodeSpacing ?? .7, this._nodeStyle = rX(eX, e.nodeStyle), this._buildNodes(n);
85561
85789
  }
85562
85790
  _buildNodes(e) {
85563
85791
  if (e === 0) return;
@@ -85586,7 +85814,7 @@ var YY = class extends B {
85586
85814
  };
85587
85815
  //#endregion
85588
85816
  //#region src/mobjects/ml/featureMapStack.ts
85589
- function ZY(e) {
85817
+ function cX(e) {
85590
85818
  let { numFeatureMaps: t, mapSize: n, offset: r, style: i } = e, a = Math.max(0, Math.floor(t)), o = a > 0 ? (a - 1) * r : 0, s = n + o, c = [];
85591
85819
  for (let e = 0; e < a; e++) {
85592
85820
  let t = -o / 2 + e * r, a = o / 2 - e * r, s = new GE({
@@ -85610,15 +85838,15 @@ function ZY(e) {
85610
85838
  }
85611
85839
  //#endregion
85612
85840
  //#region src/mobjects/ml/ConvolutionalLayer.ts
85613
- var QY = class extends YY {
85841
+ var lX = class extends oX {
85614
85842
  _width;
85615
85843
  constructor(e = {}) {
85616
85844
  super();
85617
- let { nodes: t, width: n } = ZY({
85845
+ let { nodes: t, width: n } = cX({
85618
85846
  numFeatureMaps: e.numFeatureMaps ?? 3,
85619
85847
  mapSize: e.mapSize ?? .5,
85620
85848
  offset: e.offset ?? .15,
85621
- style: KY(UY, e.nodeStyle)
85849
+ style: rX(eX, e.nodeStyle)
85622
85850
  });
85623
85851
  this._width = n;
85624
85852
  for (let e of t) this._nodes.push(e), this.add(e);
@@ -85626,15 +85854,15 @@ var QY = class extends YY {
85626
85854
  layerWidth() {
85627
85855
  return this._width;
85628
85856
  }
85629
- }, $Y = class extends YY {
85857
+ }, uX = class extends oX {
85630
85858
  _width;
85631
85859
  constructor(e = {}) {
85632
85860
  super();
85633
- let { nodes: t, width: n } = ZY({
85861
+ let { nodes: t, width: n } = cX({
85634
85862
  numFeatureMaps: e.numFeatureMaps ?? 3,
85635
85863
  mapSize: e.mapSize ?? .3,
85636
85864
  offset: e.offset ?? .12,
85637
- style: KY(UY, e.nodeStyle)
85865
+ style: rX(eX, e.nodeStyle)
85638
85866
  });
85639
85867
  this._width = n;
85640
85868
  for (let e of t) this._nodes.push(e), this.add(e);
@@ -85642,7 +85870,7 @@ var QY = class extends YY {
85642
85870
  layerWidth() {
85643
85871
  return this._width;
85644
85872
  }
85645
- }, eX = class extends YY {
85873
+ }, dX = class extends oX {
85646
85874
  _cols;
85647
85875
  _cellSize;
85648
85876
  _grid;
@@ -85650,7 +85878,7 @@ var QY = class extends YY {
85650
85878
  super();
85651
85879
  let t = Math.max(0, Math.floor(e.rows ?? 3));
85652
85880
  this._cols = Math.max(0, Math.floor(e.cols ?? 3)), this._cellSize = e.cellSize ?? .25;
85653
- let n = KY(UY, e.nodeStyle);
85881
+ let n = rX(eX, e.nodeStyle);
85654
85882
  this._grid = this._buildGrid(t, this._cols, n), this.add(this._grid), t > 0 && this._cols > 0 && this._nodes.push(this._grid);
85655
85883
  }
85656
85884
  _buildGrid(e, t, n) {
@@ -85675,13 +85903,13 @@ var QY = class extends YY {
85675
85903
  layerWidth() {
85676
85904
  return Math.max(this._cols, 1) * this._cellSize;
85677
85905
  }
85678
- }, tX = class extends B {
85906
+ }, fX = class extends B {
85679
85907
  _layers;
85680
85908
  _connections = [];
85681
85909
  _stages = [];
85682
85910
  _edgeStyle;
85683
85911
  constructor(e = [], t = {}) {
85684
- super(), this._layers = [...e], this._edgeStyle = qY(WY, t.edgeStyle);
85912
+ super(), this._layers = [...e], this._edgeStyle = iX(tX, t.edgeStyle);
85685
85913
  let n = t.layerSpacing ?? 1, r = t.connectAdjacent ?? !0;
85686
85914
  this._placeLayers(n), r && this._buildConnections();
85687
85915
  for (let e of this._connections) this.add(e);
@@ -85728,7 +85956,7 @@ var QY = class extends YY {
85728
85956
  getConnectionStages() {
85729
85957
  return this._stages.map((e) => [...e]);
85730
85958
  }
85731
- }, nX = class extends V {
85959
+ }, pX = class extends V {
85732
85960
  activation = 0;
85733
85961
  _activationColor;
85734
85962
  _peakOpacity;
@@ -85739,7 +85967,7 @@ var QY = class extends YY {
85739
85967
  super(e, {
85740
85968
  duration: t.duration ?? 1,
85741
85969
  rateFunc: t.rateFunc ?? (t.restore ? hg : void 0)
85742
- }), this._activationColor = t.activationColor ?? GY, this._peakOpacity = t.peakOpacity ?? 1, this._restore = t.restore ?? !1;
85970
+ }), this._activationColor = t.activationColor ?? nX, this._peakOpacity = t.peakOpacity ?? 1, this._restore = t.restore ?? !1;
85743
85971
  }
85744
85972
  begin() {
85745
85973
  super.begin(), this._baseOpacity = this.mobject.opacity, this._baseColor = this.mobject.color, this.activation = 0;
@@ -85755,12 +85983,12 @@ var QY = class extends YY {
85755
85983
  this._restore ? (this.mobject.setStrokeOpacity(this._baseOpacity), this.mobject.setColor(this._baseColor), this.activation = 0) : this.activation = 1, this.mobject._markDirty(), super.finish();
85756
85984
  }
85757
85985
  };
85758
- function rX(e, t) {
85759
- return new nX(e, t);
85986
+ function mX(e, t) {
85987
+ return new pX(e, t);
85760
85988
  }
85761
85989
  //#endregion
85762
85990
  //#region src/mobjects/ml/forwardPass.ts
85763
- function iX(e, t, n) {
85991
+ function hX(e, t, n) {
85764
85992
  let r = e.getConnectionStages(), i = t ? [...r].reverse() : r, a = {
85765
85993
  duration: n.gapDuration ?? 1,
85766
85994
  activationColor: n.activationColor,
@@ -85768,13 +85996,13 @@ function iX(e, t, n) {
85768
85996
  restore: n.restore,
85769
85997
  rateFunc: n.rateFunc
85770
85998
  };
85771
- return i.map((e) => new HT(e.map((e) => new nX(e, a)), { lagRatio: 0 }));
85999
+ return i.map((e) => new HT(e.map((e) => new pX(e, a)), { lagRatio: 0 }));
85772
86000
  }
85773
- function aX(e, t = {}) {
85774
- return new pH(iX(e, !1, t), { lagRatio: t.lagRatio ?? 1 });
86001
+ function gX(e, t = {}) {
86002
+ return new pH(hX(e, !1, t), { lagRatio: t.lagRatio ?? 1 });
85775
86003
  }
85776
- function oX(e, t = {}) {
85777
- return new pH(iX(e, !0, t), { lagRatio: t.lagRatio ?? 1 });
86004
+ function _X(e, t = {}) {
86005
+ return new pH(hX(e, !0, t), { lagRatio: t.lagRatio ?? 1 });
85778
86006
  }
85779
86007
  //#endregion
85780
- export { mU as Add, OI as AddTextLetterByLetter, VI as AddTextWordByWord, uk as Angle, DT as AnimateProxy, rU as AnimatedBoundary, vz as AnimatedImageMobject, V as Animation, HT as AnimationGroup, Yk as AnnotationDot, RO as AnnularSector, LO as Annulus, jB as ApplyComplexFunction, kB as ApplyFunction, FB as ApplyMatrix, NB as ApplyMethod, TV as ApplyPointwiseFunction, OV as ApplyPointwiseFunctionToCenter, PU as ApplyWave, PO as Arc, FO as ArcBetweenPoints, sL as ArcBrace, BO as ArcPolygon, UO as ArcPolygonFromArcs, vN as AreaChart, lO as AriaNarrator, sD as Arrow, zP as Arrow3D, bk as ArrowCircleFilledTip, yk as ArrowCircleTip, Sk as ArrowSquareFilledTip, xk as ArrowSquareTip, gk as ArrowTip, vk as ArrowTriangleFilledTip, _k as ArrowTriangleTip, xP as ArrowVectorField, ID as AudioAnalyzer, eE as AudioManager, sA as Axes, xl as BLACK, ip as BLEND_MODES, Nl as BLUE, Dl as BLUE_A, Ol as BLUE_B, kl as BLUE_C, Al as BLUE_D, jl as BLUE_E, Hu as BOLD, Zu as BOOK, $O as BackgroundRectangle, eN as BarChart, HU as Blink, Iz as Body, Tk as BooleanResult, kP as Box3D, pP as BoxPlot, aL as Brace, oL as BraceBetweenPoints, cL as BraceLabel, lL as BraceText, SU as Broadcast, JM as BulletedList, JA as COOLWARM, dB as CPK_COLORS, TN as CalendarHeatmap, zT as Camera2D, LT as Camera2DFrame, RT as Camera3D, TO as CameraAnimateProxy, CO as CameraFrame, DN as CandlestickChart, ld as CapStyleType, QH as ChangeDecimalToValue, cU as ChangeSpeed, ZH as ChangingDecimal, oP as ChordArc, cP as ChordDiagram, sP as ChordRibbon, MY as ChoroplethMap, EO as Circle, OU as Circumscribe, rW as Clickable, UB as ClockwiseTransform, GM as Code, jY as ColorScale, ZV as ComplexHomotopy, ZM as ComplexPlane, OM as ComplexValueTracker, jP as Cone, sj as ContourPlot, ZU as Controls, lk as ConvexHull, uF as ConvexHull3D, QY as ConvolutionalLayer, GB as CounterclockwiseTransform, vI as Create, nk as Cross, OP as Cube, YO as CubicBezier, WO as CurvedArrow, GO as CurvedDoubleArrow, jT as CurvesAsSubmobjects, ck as Cutout, XB as CyclicReplace, AP as Cylinder, El as DARKER_GRAY, Pl as DARK_BLUE, ku as DARK_BROWN, Tl as DARK_GRAY, GY as DEFAULT_ACTIVATION_COLOR, fd as DEFAULT_ANIMATION_DURATION, Bu as DEFAULT_ARROW_TIP_LENGTH, yz as DEFAULT_ASPECT_RATIO, IM as DEFAULT_COLOR_SCHEME, zu as DEFAULT_DASH_LENGTH, Lu as DEFAULT_DOT_RADIUS, WY as DEFAULT_EDGE_STYLE, uB as DEFAULT_ELEMENT_COLOR, dd as DEFAULT_FONT_SIZE, _d as DEFAULT_FPS, md as DEFAULT_FRAME_HEIGHT, pd as DEFAULT_FRAME_WIDTH, Sd as DEFAULT_MOBJECT_TO_EDGE_BUFFER, Cd as DEFAULT_MOBJECT_TO_MOBJECT_BUFFER, UY as DEFAULT_NODE_STYLE, gd as DEFAULT_PIXEL_HEIGHT, hd as DEFAULT_PIXEL_WIDTH, nd as DEFAULT_POINTWISE_FUNCTION_RUN_TIME, id as DEFAULT_POINT_DENSITY_1D, rd as DEFAULT_POINT_DENSITY_2D, tN as DEFAULT_SERIES_COLORS, Ru as DEFAULT_SMALL_DOT_RADIUS, JL as DEFAULT_SPRING_COOLING, ud as DEFAULT_STROKE_WIDTH, td as DEFAULT_WAIT_TIME, Nu as DEGREES, Rd as DL, Ad as DOWN, zd as DR, qO as DashedLine, JO as DashedVMobject, uI as DecimalMatrix, CM as DecimalNumber, rL as DecimalTable, FK as Degrees, yR as DiGraph, cB as DiceFace, jk as Difference, Gz as DistanceConstraint, LP as Dodecahedron, mj as DomainColoring, HN as DonutChart, XO as Dot, YP as Dot3D, cD as DoubleArrow, $U as Draggable, bI as DrawBorderThenFill, nX as EdgePulse, fk as Elbow, IO as Ellipse, Mk as Exclusion, NG as ExportSettingsPanel, OG as FPS_PRESETS, wB as FadeIn, EB as FadeOut, iV as FadeToColor, LB as FadeTransform, zB as FadeTransformPieces, XY as FeedForwardLayer, EU as Flash, IU as FocusOn, sR as ForceDirectedLayout, Tj as FourierEpicycles, Ej as FourierSeries, Sz as FullScreenFadeRectangle, xz as FullScreenRectangle, $k as FunctionGraph, bN as GITHUB_GREENS, au as GOLD, eu as GOLD_A, tu as GOLD_B, nu as GOLD_C, ru as GOLD_D, iu as GOLD_E, wl as GRAY, gl as GRAY_A, _l as GRAY_B, vl as GRAY_C, yl as GRAY_D, bl as GRAY_E, ql as GREEN, Vl as GREEN_A, Hl as GREEN_B, Ul as GREEN_C, Wl as GREEN_D, Gl as GREEN_E, LN as GanttChart, _R as GenericGraph, NY as GeoMap, RW as GifExporter, jH as GlitchIn, IY as Globe, vw as GlyphVMobject, _L as GradientVMobject, vR as Graph, PT as Group, iH as GrowArrow, FV as GrowFromCenter, oH as GrowFromEdge, cH as GrowFromPoint, xW as GuardBuilder, qu as HEAVY, dK as HSV, oj as HeatMap, AO as Hexagon, lP as Histogram, XV as Homotopy, tW as Hoverable, Pd as IN, qA as INFERNO, $u as ITALIC, IP as Icosahedron, eX as ImageLayer, l_ as ImageMobject, fA as ImplicitFunction, gF as ImplicitSurface, wU as Indicate, SF as InstancedMobject, wM as Integer, lI as IntegerMatrix, nL as IntegerTable, hE as InteractiveScene, Ak as Intersection, AW as KeyboardInput, xd as LARGE_BUFF, jd as LEFT, Wu as LIGHT, Sl as LIGHTER_GRAY, Ou as LIGHT_BROWN, Cl as LIGHT_GRAY, Eu as LIGHT_PINK, rk as Label, qk as LabeledArrow, Jk as LabeledDot, Kk as LabeledLine, Xk as LabeledPolygram, pH as LaggedStart, IH as LaggedStartMap, QO as LargeDot, DH as LetterSpacing, gE as Lighting, rD as Line, RP as Line3D, cd as LineJointType, lA as LinearBase, dD as LinearTransformationScene, uA as LogBase, cz as LottieMobject, Au as MANIM_BACKGROUND, vu as MAROON, pu as MAROON_A, mu as MAROON_B, hu as MAROON_C, gu as MAROON_D, _u as MAROON_E, Gu as MEDIUM, bd as MED_LARGE_BUFF, yd as MED_SMALL_BUFF, LM as MONOKAI_COLOR_SCHEME, Zz as MandelbrotSet, ZI as ManimBanner, lK as ManimColor, DJ as ManimSceneElement, xO as MappingCamera, XM as MarkdownText, eM as MarkupText, bB as MasterTimeline, eL as MathTable, oM as MathTex, ZC as MathTexImage, qM as MathTexPart, sM as MathTexSVG, bM as MathTypst, cI as Matrix, _W as MatrixTracker, XD as MidiInput, up as Mobject, Oz as Mobject1D, kz as Mobject2D, aj as Mobject3D, dI as MobjectMatrix, tL as MobjectTable, HF as ModelMobject, hB as MoleculeMobject, aW as MovablePoint, UV as MoveAlongPath, vT as MoveToTarget, zV as MoveToTargetPosition, vO as MovingCamera, ZE as MovingCameraScene, bO as MultiCamera, IK as Munits, Vu as NORMAL, tX as NeuralNetwork, YY as NeuralNetworkLayer, tB as NewtonFractal, IT as NullRenderer, Zk as NumberLine, dA as NumberPlane, ed as OBLIQUE, Du as ORANGE, Fd as ORIGIN, Nd as OUT, FP as Octahedron, VE as OrbitControls, Tz as PGroup, ju as PI, Tu as PINK, s_ as PMobject, Ml as PURE_BLUE, Kl as PURE_GREEN, du as PURE_RED, wu as PURPLE, yu as PURPLE_A, bu as PURPLE_B, xu as PURPLE_C, Su as PURPLE_D, Cu as PURPLE_E, NW as PanZoomControls, Rj as Paragraph, hj as ParametricFunction, UP as ParametricSurface, Mz as ParticleSystem, kL as PatternVMobject, jO as Pentagon, RK as Percent, $V as PhaseFlow, Bz as PhysicsWorld, VN as PieChart, PK as Pixels, QU as PlaybackControls, XG as Player, KG as PlayerController, PG as PlayerUI, Dz as PointCloudDot, Ez as PointMobject, QM as PolarPlane, DO as Polygon, MO as Polygram, NP as Polyhedron, $Y as PoolingLayer, _O as PostProcessingPipeline, JP as Prism, RU as Pulse, kG as QUALITY_PRESETS, fu as RED, ou as RED_A, su as RED_B, cu as RED_C, lu as RED_D, uu as RED_E, DG as RESOLUTION_PRESETS, uK as RGBA, Md as RIGHT, kN as RadarChart, mK as RandomColorGenerator, GE as Rectangle, kO as RegularPolygon, sk as RegularPolygram, gU as Remove, AI as RemoveTextLetterByLetter, FT as Renderer, gT as ReplacementTransform, nV as Restore, dk as RightAngle, AV as Rotate, bU as Rotating, ik as RoundedRectangle, ad as SCALE_FACTOR_PER_FONT_POINT, Ku as SEMIBOLD, Xu as SEMILIGHT, vd as SMALL_BUFF, od as START_X, sd as START_Y, WL as SVGMobject, oB as SampleSpace, IR as SankeyDiagram, MR as SankeyLink, jR as SankeyNode, NV as Scale, cA as ScaleBase, QB as ScaleInPlace, dP as ScatterPlot, pE as Scene, ZT as SceneStateManager, bz as ScreenRectangle, zO as Sector, mE as SelectionManager, iB as ShaderMobject, LV as Shift, WU as ShowCreationThenDestruction, UI as ShowIncreasingSubsets, GI as ShowPartial, MU as ShowPassingFlash, BU as ShowPassingFlashWithThinningStrokeWidth, qI as ShowSubmobjectsOneByOne, eV as ShrinkToCenter, KM as SingleStringMathTex, dW as Slider, ZO as SmallDot, QV as SmoothedVectorizedHomotopy, _J as SpecialThreeDScene, DP as Sphere, uH as SpinInFromNothing, YI as SpiralIn, SO as SplitScreenCamera, Kz as SpringConstraint, KE as Square, iN as StackedBarChart, ak as Star, TW as StateMachine, Ck as StealthTip, yN as StepChart, EP as StreamLines, PH as Succession, HP as Surface, HP as Surface3D, WP as SurfacePresets, ek as SurroundingRectangle, qB as Swap, Mu as TAU, Bl as TEAL, Fl as TEAL_A, Il as TEAL_B, Ll as TEAL_C, Rl as TEAL_D, zl as TEAL_E, Uu as THIN, Ja as THREE, $I as Table, pk as TangentLine, KO as TangentialArc, PP as Tetrahedron, cM as Tex, Ed as TexFontTemplates, wd as TexTemplate, Dd as TexTemplateLibrary, Uw as Text, bw as TextGlyphGroup, Fj as TextOnPath, GP as TexturedSurface, qP as ThreeDAxes, yO as ThreeDCamera, WE as ThreeDScene, XP as ThreeDVMobject, WT as Timeline, NO as TipableVMobject, YM as Title, MP as Torus, tU as TracedPath, mT as Transform, oV as TransformAnimations, VB as TransformFromCopy, cV as TransformMatchingAbstractBase, SV as TransformMatchingCode, hV as TransformMatchingShapes, vV as TransformMatchingTex, ZN as Treemap, OO as Triangle, II as TypeWithCursor, yM as Typst, Id as UL, Qu as ULTRABOLD, Ju as ULTRAHEAVY, Yu as ULTRALIGHT, kd as UP, Ld as UR, SI as Uncreate, tk as Underline, kk as Union, Qk as UnitInterval, RI as UntypeWithCursor, EI as Unwrite, zH as UpdateFromAlphaFunc, LH as UpdateFromFunc, MT as VDict, B as VGroup, KA as VIRIDIS, z as VMobject, UL as VMobjectFromSVGPath, EM as ValueTracker, jM as Variable, lD as Vector, BP as Vector3D, bP as VectorField, gj as VectorFieldVector, uD as VectorScene, NT as VectorizedPoint, VW as VideoExporter, tz as VideoMobject, gP as ViolinPlot, CD as Voiceover, wD as VoiceoverScene, hl as WHITE, vU as Wait, jN as WaterfallChart, TH as WaveLetters, rG as WebCodecsExporter, gD as WebSpeechSynthesizer, AU as Wiggle, YU as WiggleOutThenIn, wI as Write, Pu as X_AXIS, $l as YELLOW, Jl as YELLOW_A, Yl as YELLOW_B, Xl as YELLOW_C, Zl as YELLOW_D, Ql as YELLOW_E, Fu as Y_AXIS, Iu as Z_AXIS, YE as ZoomDisplayPopOut, XE as ZoomedScene, hU as add, kI as addTextLetterByLetter, HI as addTextWordByWord, Jd as addVec, gK as adjacentNTuples, _K as adjacentPairs, Nj as alignmentToOffset, EK as allElementsAreInstances, CW as allOf, WH as always, HH as alwaysRedraw, JH as alwaysRotate, qH as alwaysShift, ZK as angleAxisFromQuaternion, aq as angleBetweenVectors, iq as angleOfVector, iU as animatedBoundary, UT as animationGroup, uO as announceMobject, wW as anyOf, op as applyBlendMode, MB as applyComplexFunction, AB as applyFunction, IB as applyMatrix, bW as applyMatrixLive, PB as applyMethod, MF as applyObjMaterials, EV as applyPointwiseFunction, kV as applyPointwiseFunctionToCenter, fE as applyReducedMotion, FU as applyWave, OC as areKatexStylesLoaded, GH as assertIsMobjectMethod, rO as attachCaptionTrack, EA as averageColor, oX as backwardPass, iI as batch, vB as benzene, Vq as bezier, Wq as bezierRemap, jq as binarySearch, wR as binaryTree, oI as bindSignalToTracker, mY as bindStateToUrl, ER as bipartiteGraph, ap as blendModeToThree, UU as blink, _N as boxSummary, CU as broadcast, ZY as buildFeatureMapStack, ww as buildStyledTextLines, vq as cartesianToSpherical, fq as centerOfMass, eU as changeDecimalToValue, lU as changeSpeed, $H as changingDecimal, Mq as choose, aG as chooseVideoExporterStrategy, $N as chordMatrixFromFlows, kU as circumscribe, TT as clearAnimationOverrides, Nq as clip, kq as clockwisePath, WB as clockwiseTransform, wh as colorGradient, bA as colorToIntRgb, xA as colorToIntRgba, LA as colorToOklab, VA as colorToOklch, vA as colorToRgb, yA as colorToRgba, sq as compassDirections, bR as completeGraph, dq as complexFuncToR3Func, tH as complexHomotopy, lq as complexToR3, AM as complexValueTracker, xg as compose, tP as computeChordLayout, qL as computeCircularLayout, jj as computeGlyphPlacements, KL as computeLayout, kR as computeSankeyLayout, BN as computeSliceGeometry, YN as computeTreemapLayout, DK as concatenateLists, Aq as counterclockwisePath, KB as counterclockwiseTransform, pB as cpkColor, yI as create, nI as createComputed, lB as createDiceRow, rI as createEffect, Cz as createFadeToBlack, wz as createFadeToWhite, zW as createGifExporter, sO as createLiveRegion, tI as createSignal, HW as createVideoExporter, iG as createWebCodecsExporter, Zd as cross, Zd as crossVec, qK as cross2d, Qh as cubicBezier, XH as cycleAnimation, nN as cycleColor, xR as cycleGraph, ZB as cyclicReplace, oY as decodeStateFromHash, bY as defineParametrizedScene, DF as deriveBasePath, kF as deriveMtlUrl, cO as describeMobject, KT as deserializeMobject, eY as deserializeScene, QJ as deserializeSceneMobject, IF as detectModelFormat, Fk as difference, Xd as dotVec, vg as doubleSmooth, eG as downloadBlob, xI as drawBorderThenFill, xm as earclipTriangulation, $h as ease, sg as easeIn, sg as easeInCubic, Qg as easeInBack, eg as easeInBezier, mg as easeInBounce, Kg as easeInCirc, r_ as easeInElastic, dg as easeInExpo, og as easeInOut, og as easeInOutCubic, e_ as easeInOutBack, ng as easeInOutBezier, o_ as easeInOutBounce, Jg as easeInOutCirc, a_ as easeInOutElastic, Gg as easeInOutExpo, Rg as easeInOutQuad, Vg as easeInOutQuart, Wg as easeInOutQuint, Lg as easeInOutSine, lg as easeInQuad, zg as easeInQuart, Hg as easeInQuint, Fg as easeInSine, cg as easeOut, cg as easeOutCubic, $g as easeOutBack, tg as easeOutBezier, pg as easeOutBounce, qg as easeOutCirc, i_ as easeOutElastic, fg as easeOutExpo, ug as easeOutQuad, Bg as easeOutQuart, Ug as easeOutQuint, Ig as easeOutSine, rX as edgePulse, dU as emphasizeRegion, aY as encodeStateToHash, EC as ensureKatexStyles, OY as equirectangular, yB as ethanol, Ik as exclusion, jg as exponentialDecay, tG as exportAndDownloadPNG, _G as exportAndDownloadSVG, wG as exportAndDownloadSlidesToPDF, ZW as exportFramePNG, $W as exportPNGSequence, gG as exportSVG, CG as exportSlidesToPDF, EG as exportSlidesToPPTX, fN as extent, EY as exteriorRings, zK as extractMobjectFamilyMembers, UH as fAlways, TB as fadeIn, _H as fadeInByLetter, xH as fadeInByWord, DB as fadeOut, aV as fadeToColor, RB as fadeTransform, BB as fadeTransformPieces, hq as findIntersection, DU as flash, LU as focusOn, cR as forceDirectedLayout, QD as formatVttTimestamp, aX as forwardPass, vj as fourierCoefficients, Sj as fourierSeriesApproximation, lJ as get3dVmobEndCorner, sJ as get3dVmobEndCornerIndex, fJ as get3dVmobEndCornerUnitNormal, aJ as get3dVmobGradientStartAndEndPoints, cJ as get3dVmobStartCorner, oJ as get3dVmobStartCornerIndex, dJ as get3dVmobStartCornerUnitNormal, uJ as get3dVmobUnitNormal, tp as getActiveTheme, CT as getAnimationOverride, fI as getDetText, nK as getFeatureFlags, cE as getReducedMotionRunTime, NJ as getSerializableTypes, MJ as getSerializer, hK as getShadedRgb, vh as getSmoothCubicBezierHandlePoints, bD as getSpeechSynthesizer, ep as getTheme, np as getThemeNames, oq as getUnitNormal, Sq as getWindingNumber, MH as glitchIn, TR as gridGraph, aH as growArrow, IV as growFromCenter, sH as growFromEdge, lH as growFromPoint, wT as hasAnimationOverride, jK as hashObj, _A as hexToRgb, lN as histogramBins, eH as homotopy, AA as hsvToRgb, VK as indexLabels, TU as indicate, hh as integerInterpolate, Fq as interpolate, TA as interpolateColor, WA as interpolateColorOklab, GA as interpolateColorOklch, Pk as intersection, Lq as inverseInterpolate, wA as invertColor, cN as iqr, PD as isAudioAnalysisSupported, Gq as isClosed, $G as isFeatureEnabled, UC as isMathJaxLoaded, qD as isMidiSupported, sE as isReducedMotionEnabled, mD as isSpeechSupported, mM as isTypstLoaded, KC as katexCanRender, gN as kde, fH as laggedStart, FH as laggedStartMap, Qd as lengthVec, mq as lineIntersection, ig as linear, uU as linearSpeedRamp, Ag as lingering, rf as linspace, yK as listDifferenceUpdate, bK as listUpdate, OK as listify, qf as logger, VH as maintainPositionRelativeTo, iW as makeClickable, eW as makeDraggable, SK as makeEven, AK as makeEvenByCycling, nW as makeHoverable, jW as makeKeyboardInput, vW as makeMatrixTracker, cW as makeMovablePoint, PW as makePanZoomControls, pW as makeSlider, xJ as manimElementInternals, hF as marchingCubes, ij as marchingSquares, xB as masterTimeline, Rq as matchInterpolate, pI as matrixToMobject, mI as matrixToTexString, aN as mean, kY as mercator, _B as methane, Iq as mid, pq as midpoint, WV as moveAlongPath, yT as moveToTarget, BV as moveToTargetPosition, pN as niceAxisRange, KK as normSquared, JK as normalize, fB as normalizeElement, DW as normalizeKey, $d as normalizeVec, kg as notQuiteThere, RA as oklabToColor, zA as oklabToOklch, HA as oklchToColor, BA as oklchToOklab, Wf as onLog, dY as onUrlStateChange, xj as orderCoefficients, DR as orientPoint, nf as orientation2D, tf as orthonormalFrame, ST as overrideAnimate, xT as overrideAnimation, pD as parseBookmarks, xL as parsePatternDefs, AC as parseSVGPathData, mh as partialBezierPoints, bj as partialSum, Oq as pathAlongArc, Dq as pathAlongCircles, SR as pathGraph, qz as pendulum, bq as perpendicularBisector, rH as phaseFlow, pj as phasePortraitColor, nJ as pointLiesOnBezier, TK as powerset, aE as prefersReducedMotion, WC as preloadMathJax, hM as preloadTypst, ET as prepareAnimation, HK as printFamily, tJ as proportionsAlongBezierCurveForPoint, SY as propsFromUrl, zU as pulse, jG as qualityToBitrate, sN as quantile, QK as quaternionConjugate, XK as quaternionFromAngleAxis, YK as quaternionMult, uq as r3ToComplex, kA as randomBrightColor, OA as randomColor, XL as randomSpringPositions, uY as readStateFromUrl, yj as reconstructSample, dE as reducedRunTime, vJ as registerFont, OJ as registerManimElement, AJ as registerSerializableMobject, Qf as registerTheme, cq as regularVertices, _U as remove, vK as removeListRedundancies, kK as removeNones, jI as removeTextLetterByLetter, GC as renderLatexToSVG, TY as renderParametrized, _M as renderTypstToSVG, _T as replacementTransform, tK as resetFeatureFlags, lE as resetReducedMotion, rp as resetThemes, Lz as resolveBounds, Rz as resolveCircleCircle, qY as resolveEdgeStyle, mH as resolveGlyphs, KY as resolveNodeStyle, SL as resolvePatternFill, xY as resolveProps, MG as resolveResolution, rV as restore, $T as restoreMobjectState, BK as restructureListToExcludeCertainFamilyMembers, bg as reverse, SA as rgbToColor, gA as rgbToHex, jA as rgbToHsv, CA as rgbaToColor, SH as riseByLetter, jV as rotate, nq as rotateVector, xU as rotating, eq as rotationAboutZ, $K as rotationMatrix, tq as rotationMatrixTranspose, Dg as runningStart, _g as rushFrom, gg as rushInto, fU as rushRegion, YA as sampleColormap, Aj as sampledPathFromFunction, kj as sampledPathFromPoints, QT as saveMobjectState, PV as scale, $B as scaleInPlace, wH as scalePopByLetter, qd as scaleVec, hG as sceneToSVG, GT as serializeMobject, $J as serializeScene, ZJ as serializeSceneMobject, eK as setFeatureFlags, gz as setGifDecoder, wC as setKatexStylesheetUrl, rz as setLottiePlayerFactory, BC as setMathJaxScriptUrl, FF as setModelLoaderFactory, wF as setMtlLoaderFactory, pO as setPostProcessingModules, mO as setPostProcessingModulesLoader, oE as setReducedMotion, yD as setSpeechSynthesizer, $f as setTheme, fM as setTypstCompiler, RV as shift, gq as shoelace, _q as shoelaceDirection, uE as shouldReduceMotion, GU as showCreationThenDestruction, WI as showIncreasingSubsets, KI as showPartial, NU as showPassingFlash, VU as showPassingFlashWithThinningStrokeWidth, JI as showSubmobjectsOneByOne, tV as shrinkToCenter, Pq as sigmoid, hN as silvermanBandwidth, qR as sketch, wg as slowInto, ag as smooth, pU as smoothSpeedCurve, nH as smoothedVectorizedHomotopy, Pg as smoothererstep, Ng as smootherstep, Mg as smoothstep, XT as snapshotFromJSON, YT as snapshotToJSON, yq as sphericalToCartesian, dH as spinInFromNothing, XI as spiralIn, Hq as splitBezier, kH as spreadOut, Uh as spring, Jz as springChain, YL as springForceConstant, ZL as springLayoutStep, KN as squarify, Tg as squishRateFunc, CR as starGraph, JT as stateFromJSON, qT as stateToJSON, oN as stdDev, yg as stepFunction, _P as stepVectorField, rg as steps, Eq as straightPath, CK as stretchArrayToLength, Yd as subVec, Uq as subdivideBezier, NH as succession, GL as svgMobject, PC as svgToVMobjects, JB as swap, KP as texturedSphere, hg as thereAndBack, Eg as thereAndBackWithPause, xq as thickDiagonal, rN as toColorList, nU as tracedPath, sI as trackerToSignal, OH as tracking, hT as transform, sV as transformAnimations, HB as transformFromCopy, CV as transformMatchingCode, gV as transformMatchingShapes, yV as transformMatchingTex, UN as treemapNodeValue, xK as tuplify, YH as turnAnimationIntoUpdater, gH as typeOn, LI as typeWithCursor, CI as uncreate, Nk as union, wK as uniqChain, ef as unitPerpendicularTo, jJ as unregisterSerializableMobject, aI as untrack, zI as untypeWithCursor, DI as unwrite, BH as updateFromAlphaFunc, RH as updateFromFunc, XA as valueToColor, kM as valueTracker, Mj as visibleGlyphChars, tO as voiceoverToVTT, yU as wait, gB as water, EH as waveLetters, SW as when, jU as wiggle, XU as wiggleOutThenIn, Og as wiggleRate, ez as withDropShadow, TI as write, lY as writeStateToUrl, rq as zToVector };
86008
+ export { mU as Add, OI as AddTextLetterByLetter, VI as AddTextWordByWord, uk as Angle, DT as AnimateProxy, rU as AnimatedBoundary, vz as AnimatedImageMobject, V as Animation, HT as AnimationGroup, Yk as AnnotationDot, RO as AnnularSector, LO as Annulus, jB as ApplyComplexFunction, kB as ApplyFunction, FB as ApplyMatrix, NB as ApplyMethod, TV as ApplyPointwiseFunction, OV as ApplyPointwiseFunctionToCenter, PU as ApplyWave, PO as Arc, FO as ArcBetweenPoints, sL as ArcBrace, BO as ArcPolygon, UO as ArcPolygonFromArcs, vN as AreaChart, lO as AriaNarrator, sD as Arrow, zP as Arrow3D, bk as ArrowCircleFilledTip, yk as ArrowCircleTip, Sk as ArrowSquareFilledTip, xk as ArrowSquareTip, gk as ArrowTip, vk as ArrowTriangleFilledTip, _k as ArrowTriangleTip, xP as ArrowVectorField, ID as AudioAnalyzer, eE as AudioManager, sA as Axes, xl as BLACK, ip as BLEND_MODES, Nl as BLUE, Dl as BLUE_A, Ol as BLUE_B, kl as BLUE_C, Al as BLUE_D, jl as BLUE_E, Hu as BOLD, Zu as BOOK, $O as BackgroundRectangle, eN as BarChart, HU as Blink, Iz as Body, Tk as BooleanResult, kP as Box3D, pP as BoxPlot, aL as Brace, oL as BraceBetweenPoints, cL as BraceLabel, lL as BraceText, SU as Broadcast, JM as BulletedList, JA as COOLWARM, dB as CPK_COLORS, TN as CalendarHeatmap, zT as Camera2D, LT as Camera2DFrame, RT as Camera3D, TO as CameraAnimateProxy, CO as CameraFrame, DN as CandlestickChart, ld as CapStyleType, QH as ChangeDecimalToValue, cU as ChangeSpeed, ZH as ChangingDecimal, oP as ChordArc, cP as ChordDiagram, sP as ChordRibbon, UY as ChoroplethMap, EO as Circle, OU as Circumscribe, rW as Clickable, UB as ClockwiseTransform, GM as Code, HY as ColorScale, ZV as ComplexHomotopy, ZM as ComplexPlane, OM as ComplexValueTracker, jP as Cone, sj as ContourPlot, ZU as Controls, lk as ConvexHull, uF as ConvexHull3D, lX as ConvolutionalLayer, GB as CounterclockwiseTransform, vI as Create, nk as Cross, OP as Cube, YO as CubicBezier, WO as CurvedArrow, GO as CurvedDoubleArrow, jT as CurvesAsSubmobjects, ck as Cutout, XB as CyclicReplace, AP as Cylinder, El as DARKER_GRAY, Pl as DARK_BLUE, ku as DARK_BROWN, Tl as DARK_GRAY, nX as DEFAULT_ACTIVATION_COLOR, fd as DEFAULT_ANIMATION_DURATION, Bu as DEFAULT_ARROW_TIP_LENGTH, yz as DEFAULT_ASPECT_RATIO, IM as DEFAULT_COLOR_SCHEME, zu as DEFAULT_DASH_LENGTH, Lu as DEFAULT_DOT_RADIUS, tX as DEFAULT_EDGE_STYLE, uB as DEFAULT_ELEMENT_COLOR, dd as DEFAULT_FONT_SIZE, _d as DEFAULT_FPS, md as DEFAULT_FRAME_HEIGHT, pd as DEFAULT_FRAME_WIDTH, Sd as DEFAULT_MOBJECT_TO_EDGE_BUFFER, Cd as DEFAULT_MOBJECT_TO_MOBJECT_BUFFER, eX as DEFAULT_NODE_STYLE, gd as DEFAULT_PIXEL_HEIGHT, hd as DEFAULT_PIXEL_WIDTH, nd as DEFAULT_POINTWISE_FUNCTION_RUN_TIME, id as DEFAULT_POINT_DENSITY_1D, rd as DEFAULT_POINT_DENSITY_2D, tN as DEFAULT_SERIES_COLORS, Ru as DEFAULT_SMALL_DOT_RADIUS, JL as DEFAULT_SPRING_COOLING, ud as DEFAULT_STROKE_WIDTH, td as DEFAULT_WAIT_TIME, Nu as DEGREES, Rd as DL, Ad as DOWN, zd as DR, qO as DashedLine, JO as DashedVMobject, uI as DecimalMatrix, CM as DecimalNumber, rL as DecimalTable, KK as Degrees, yR as DiGraph, cB as DiceFace, jk as Difference, Gz as DistanceConstraint, LP as Dodecahedron, mj as DomainColoring, HN as DonutChart, XO as Dot, YP as Dot3D, cD as DoubleArrow, $U as Draggable, bI as DrawBorderThenFill, pX as EdgePulse, fk as Elbow, IO as Ellipse, Mk as Exclusion, WG as ExportSettingsPanel, zG as FPS_PRESETS, wB as FadeIn, EB as FadeOut, iV as FadeToColor, LB as FadeTransform, zB as FadeTransformPieces, sX as FeedForwardLayer, EU as Flash, IU as FocusOn, sR as ForceDirectedLayout, Tj as FourierEpicycles, Ej as FourierSeries, Sz as FullScreenFadeRectangle, xz as FullScreenRectangle, $k as FunctionGraph, bN as GITHUB_GREENS, au as GOLD, eu as GOLD_A, tu as GOLD_B, nu as GOLD_C, ru as GOLD_D, iu as GOLD_E, wl as GRAY, gl as GRAY_A, _l as GRAY_B, vl as GRAY_C, yl as GRAY_D, bl as GRAY_E, ql as GREEN, Vl as GREEN_A, Hl as GREEN_B, Ul as GREEN_C, Wl as GREEN_D, Gl as GREEN_E, BW as GamepadInput, LN as GanttChart, _R as GenericGraph, WY as GeoMap, YW as GifExporter, jH as GlitchIn, qY as Globe, vw as GlyphVMobject, _L as GradientVMobject, vR as Graph, PT as Group, iH as GrowArrow, FV as GrowFromCenter, oH as GrowFromEdge, cH as GrowFromPoint, xW as GuardBuilder, qu as HEAVY, SK as HSV, oj as HeatMap, AO as Hexagon, lP as Histogram, XV as Homotopy, tW as Hoverable, Pd as IN, qA as INFERNO, $u as ITALIC, IP as Icosahedron, dX as ImageLayer, l_ as ImageMobject, fA as ImplicitFunction, gF as ImplicitSurface, wU as Indicate, SF as InstancedMobject, wM as Integer, lI as IntegerMatrix, nL as IntegerTable, hE as InteractiveScene, Ak as Intersection, AW as KeyboardInput, xd as LARGE_BUFF, jd as LEFT, Wu as LIGHT, Sl as LIGHTER_GRAY, Ou as LIGHT_BROWN, Cl as LIGHT_GRAY, Eu as LIGHT_PINK, rk as Label, qk as LabeledArrow, Jk as LabeledDot, Kk as LabeledLine, Xk as LabeledPolygram, pH as LaggedStart, IH as LaggedStartMap, QO as LargeDot, DH as LetterSpacing, gE as Lighting, rD as Line, RP as Line3D, cd as LineJointType, lA as LinearBase, dD as LinearTransformationScene, uA as LogBase, cz as LottieMobject, Au as MANIM_BACKGROUND, vu as MAROON, pu as MAROON_A, mu as MAROON_B, hu as MAROON_C, gu as MAROON_D, _u as MAROON_E, Gu as MEDIUM, bd as MED_LARGE_BUFF, yd as MED_SMALL_BUFF, LM as MONOKAI_COLOR_SCHEME, Zz as MandelbrotSet, ZI as ManimBanner, bK as ManimColor, RJ as ManimSceneElement, xO as MappingCamera, XM as MarkdownText, eM as MarkupText, bB as MasterTimeline, eL as MathTable, oM as MathTex, ZC as MathTexImage, qM as MathTexPart, sM as MathTexSVG, bM as MathTypst, cI as Matrix, _W as MatrixTracker, XD as MidiInput, up as Mobject, Oz as Mobject1D, kz as Mobject2D, aj as Mobject3D, dI as MobjectMatrix, tL as MobjectTable, HF as ModelMobject, hB as MoleculeMobject, aW as MovablePoint, UV as MoveAlongPath, vT as MoveToTarget, zV as MoveToTargetPosition, vO as MovingCamera, ZE as MovingCameraScene, bO as MultiCamera, qK as Munits, Vu as NORMAL, fX as NeuralNetwork, oX as NeuralNetworkLayer, tB as NewtonFractal, IT as NullRenderer, Zk as NumberLine, dA as NumberPlane, ed as OBLIQUE, Du as ORANGE, Fd as ORIGIN, Nd as OUT, FP as Octahedron, VE as OrbitControls, Tz as PGroup, ju as PI, Tu as PINK, s_ as PMobject, Ml as PURE_BLUE, Kl as PURE_GREEN, du as PURE_RED, wu as PURPLE, yu as PURPLE_A, bu as PURPLE_B, xu as PURPLE_C, Su as PURPLE_D, Cu as PURPLE_E, WW as PanZoomControls, Rj as Paragraph, hj as ParametricFunction, UP as ParametricSurface, Mz as ParticleSystem, kL as PatternVMobject, jO as Pentagon, YK as Percent, $V as PhaseFlow, Bz as PhysicsWorld, VN as PieChart, GK as Pixels, QU as PlaybackControls, sK as Player, rK as PlayerController, GG as PlayerUI, Dz as PointCloudDot, Ez as PointMobject, QM as PolarPlane, DO as Polygon, MO as Polygram, NP as Polyhedron, uX as PoolingLayer, _O as PostProcessingPipeline, JP as Prism, RU as Pulse, BG as QUALITY_PRESETS, fu as RED, ou as RED_A, su as RED_B, cu as RED_C, lu as RED_D, uu as RED_E, RG as RESOLUTION_PRESETS, xK as RGBA, Md as RIGHT, kN as RadarChart, TK as RandomColorGenerator, GE as Rectangle, kO as RegularPolygon, sk as RegularPolygram, gU as Remove, AI as RemoveTextLetterByLetter, FT as Renderer, gT as ReplacementTransform, nV as Restore, dk as RightAngle, AV as Rotate, bU as Rotating, ik as RoundedRectangle, ad as SCALE_FACTOR_PER_FONT_POINT, Ku as SEMIBOLD, Xu as SEMILIGHT, vd as SMALL_BUFF, NW as STANDARD_AXES, MW as STANDARD_BUTTONS, od as START_X, sd as START_Y, WL as SVGMobject, oB as SampleSpace, IR as SankeyDiagram, MR as SankeyLink, jR as SankeyNode, NV as Scale, cA as ScaleBase, QB as ScaleInPlace, dP as ScatterPlot, pE as Scene, ZT as SceneStateManager, bz as ScreenRectangle, zO as Sector, mE as SelectionManager, iB as ShaderMobject, LV as Shift, WU as ShowCreationThenDestruction, UI as ShowIncreasingSubsets, GI as ShowPartial, MU as ShowPassingFlash, BU as ShowPassingFlashWithThinningStrokeWidth, qI as ShowSubmobjectsOneByOne, eV as ShrinkToCenter, KM as SingleStringMathTex, dW as Slider, ZO as SmallDot, QV as SmoothedVectorizedHomotopy, OJ as SpecialThreeDScene, DP as Sphere, uH as SpinInFromNothing, YI as SpiralIn, SO as SplitScreenCamera, Kz as SpringConstraint, KE as Square, iN as StackedBarChart, ak as Star, TW as StateMachine, Ck as StealthTip, yN as StepChart, EP as StreamLines, PH as Succession, HP as Surface, HP as Surface3D, WP as SurfacePresets, ek as SurroundingRectangle, qB as Swap, Mu as TAU, Bl as TEAL, Fl as TEAL_A, Il as TEAL_B, Ll as TEAL_C, Rl as TEAL_D, zl as TEAL_E, Uu as THIN, Ja as THREE, $I as Table, pk as TangentLine, KO as TangentialArc, PP as Tetrahedron, cM as Tex, Ed as TexFontTemplates, wd as TexTemplate, Dd as TexTemplateLibrary, Uw as Text, bw as TextGlyphGroup, Fj as TextOnPath, GP as TexturedSurface, qP as ThreeDAxes, yO as ThreeDCamera, WE as ThreeDScene, XP as ThreeDVMobject, WT as Timeline, NO as TipableVMobject, YM as Title, MP as Torus, tU as TracedPath, mT as Transform, oV as TransformAnimations, VB as TransformFromCopy, cV as TransformMatchingAbstractBase, SV as TransformMatchingCode, hV as TransformMatchingShapes, vV as TransformMatchingTex, ZN as Treemap, OO as Triangle, II as TypeWithCursor, yM as Typst, Id as UL, Qu as ULTRABOLD, Ju as ULTRAHEAVY, Yu as ULTRALIGHT, kd as UP, Ld as UR, SI as Uncreate, tk as Underline, kk as Union, Qk as UnitInterval, RI as UntypeWithCursor, EI as Unwrite, zH as UpdateFromAlphaFunc, LH as UpdateFromFunc, MT as VDict, B as VGroup, KA as VIRIDIS, z as VMobject, UL as VMobjectFromSVGPath, EM as ValueTracker, jM as Variable, lD as Vector, BP as Vector3D, bP as VectorField, gj as VectorFieldVector, uD as VectorScene, NT as VectorizedPoint, QW as VideoExporter, tz as VideoMobject, gP as ViolinPlot, CD as Voiceover, wD as VoiceoverScene, hl as WHITE, vU as Wait, jN as WaterfallChart, TH as WaveLetters, mG as WebCodecsExporter, gD as WebSpeechSynthesizer, AU as Wiggle, YU as WiggleOutThenIn, wI as Write, Pu as X_AXIS, $l as YELLOW, Jl as YELLOW_A, Yl as YELLOW_B, Xl as YELLOW_C, Zl as YELLOW_D, Ql as YELLOW_E, Fu as Y_AXIS, Iu as Z_AXIS, YE as ZoomDisplayPopOut, XE as ZoomedScene, hU as add, kI as addTextLetterByLetter, HI as addTextWordByWord, Jd as addVec, DK as adjacentNTuples, OK as adjacentPairs, Nj as alignmentToOffset, LK as allElementsAreInstances, CW as allOf, WH as always, HH as alwaysRedraw, JH as alwaysRotate, qH as alwaysShift, cq as angleAxisFromQuaternion, gq as angleBetweenVectors, hq as angleOfVector, iU as animatedBoundary, UT as animationGroup, uO as announceMobject, wW as anyOf, op as applyBlendMode, MB as applyComplexFunction, AB as applyFunction, IB as applyMatrix, bW as applyMatrixLive, PB as applyMethod, MF as applyObjMaterials, EV as applyPointwiseFunction, kV as applyPointwiseFunctionToCenter, fE as applyReducedMotion, FU as applyWave, OC as areKatexStylesLoaded, GH as assertIsMobjectMethod, rO as attachCaptionTrack, EA as averageColor, _X as backwardPass, iI as batch, vB as benzene, Qq as bezier, tJ as bezierRemap, Hq as binarySearch, wR as binaryTree, oI as bindSignalToTracker, TY as bindStateToUrl, ER as bipartiteGraph, ap as blendModeToThree, UU as blink, _N as boxSummary, CU as broadcast, cX as buildFeatureMapStack, ww as buildStyledTextLines, kq as cartesianToSpherical, Cq as centerOfMass, eU as changeDecimalToValue, lU as changeSpeed, $H as changingDecimal, Uq as choose, gG as chooseVideoExporterStrategy, $N as chordMatrixFromFlows, kU as circumscribe, TT as clearAnimationOverrides, Wq as clip, Bq as clockwisePath, WB as clockwiseTransform, wh as colorGradient, bA as colorToIntRgb, xA as colorToIntRgba, LA as colorToOklab, VA as colorToOklch, vA as colorToRgb, yA as colorToRgba, vq as compassDirections, bR as completeGraph, Sq as complexFuncToR3Func, tH as complexHomotopy, bq as complexToR3, AM as complexValueTracker, xg as compose, tP as computeChordLayout, qL as computeCircularLayout, jj as computeGlyphPlacements, KL as computeLayout, kR as computeSankeyLayout, BN as computeSliceGeometry, YN as computeTreemapLayout, RK as concatenateLists, Vq as counterclockwisePath, KB as counterclockwiseTransform, pB as cpkColor, yI as create, nI as createComputed, lB as createDiceRow, rI as createEffect, Cz as createFadeToBlack, wz as createFadeToWhite, XW as createGifExporter, sO as createLiveRegion, tI as createSignal, $W as createVideoExporter, hG as createWebCodecsExporter, Zd as cross, Zd as crossVec, iq as cross2d, Qh as cubicBezier, XH as cycleAnimation, nN as cycleColor, xR as cycleGraph, ZB as cyclicReplace, _Y as decodeStateFromHash, jY as defineParametrizedScene, DF as deriveBasePath, kF as deriveMtlUrl, cO as describeMobject, KT as deserializeMobject, dY as deserializeScene, lY as deserializeSceneMobject, IF as detectModelFormat, Fk as difference, Xd as dotVec, vg as doubleSmooth, dG as downloadBlob, xI as drawBorderThenFill, xm as earclipTriangulation, $h as ease, sg as easeIn, sg as easeInCubic, Qg as easeInBack, eg as easeInBezier, mg as easeInBounce, Kg as easeInCirc, r_ as easeInElastic, dg as easeInExpo, og as easeInOut, og as easeInOutCubic, e_ as easeInOutBack, ng as easeInOutBezier, o_ as easeInOutBounce, Jg as easeInOutCirc, a_ as easeInOutElastic, Gg as easeInOutExpo, Rg as easeInOutQuad, Vg as easeInOutQuart, Wg as easeInOutQuint, Lg as easeInOutSine, lg as easeInQuad, zg as easeInQuart, Hg as easeInQuint, Fg as easeInSine, cg as easeOut, cg as easeOutCubic, $g as easeOutBack, tg as easeOutBezier, pg as easeOutBounce, qg as easeOutCirc, i_ as easeOutElastic, fg as easeOutExpo, ug as easeOutQuad, Bg as easeOutQuart, Ug as easeOutQuint, Ig as easeOutSine, mX as edgePulse, dU as emphasizeRegion, gY as encodeStateToHash, EC as ensureKatexStyles, zY as equirectangular, yB as ethanol, Ik as exclusion, jg as exponentialDecay, fG as exportAndDownloadPNG, OG as exportAndDownloadSVG, FG as exportAndDownloadSlidesToPDF, cG as exportFramePNG, uG as exportPNGSequence, DG as exportSVG, PG as exportSlidesToPDF, LG as exportSlidesToPPTX, fN as extent, LY as exteriorRings, XK as extractMobjectFamilyMembers, UH as fAlways, TB as fadeIn, _H as fadeInByLetter, xH as fadeInByWord, DB as fadeOut, aV as fadeToColor, RB as fadeTransform, BB as fadeTransformPieces, Eq as findIntersection, DU as flash, LU as focusOn, cR as forceDirectedLayout, QD as formatVttTimestamp, gX as forwardPass, vj as fourierCoefficients, Sj as fourierSeriesApproximation, bJ as get3dVmobEndCorner, vJ as get3dVmobEndCornerIndex, CJ as get3dVmobEndCornerUnitNormal, gJ as get3dVmobGradientStartAndEndPoints, yJ as get3dVmobStartCorner, _J as get3dVmobStartCornerIndex, SJ as get3dVmobStartCornerUnitNormal, xJ as get3dVmobUnitNormal, tp as getActiveTheme, CT as getAnimationOverride, fI as getDetText, pK as getFeatureFlags, cE as getReducedMotionRunTime, WJ as getSerializableTypes, UJ as getSerializer, EK as getShadedRgb, vh as getSmoothCubicBezierHandlePoints, bD as getSpeechSynthesizer, ep as getTheme, np as getThemeNames, _q as getUnitNormal, Nq as getWindingNumber, MH as glitchIn, TR as gridGraph, aH as growArrow, IV as growFromCenter, sH as growFromEdge, lH as growFromPoint, wT as hasAnimationOverride, HK as hashObj, _A as hexToRgb, lN as histogramBins, eH as homotopy, AA as hsvToRgb, QK as indexLabels, TU as indicate, hh as integerInterpolate, Kq as interpolate, TA as interpolateColor, WA as interpolateColorOklab, GA as interpolateColorOklch, Pk as intersection, Jq as inverseInterpolate, wA as invertColor, cN as iqr, PD as isAudioAnalysisSupported, nJ as isClosed, uK as isFeatureEnabled, zW as isGamepadSupported, UC as isMathJaxLoaded, qD as isMidiSupported, sE as isReducedMotionEnabled, mD as isSpeechSupported, mM as isTypstLoaded, KC as katexCanRender, gN as kde, fH as laggedStart, FH as laggedStartMap, Qd as lengthVec, Tq as lineIntersection, ig as linear, uU as linearSpeedRamp, Ag as lingering, rf as linspace, AK as listDifferenceUpdate, jK as listUpdate, zK as listify, qf as logger, VH as maintainPositionRelativeTo, iW as makeClickable, eW as makeDraggable, NK as makeEven, VK as makeEvenByCycling, HW as makeGamepadInput, nW as makeHoverable, jW as makeKeyboardInput, vW as makeMatrixTracker, cW as makeMovablePoint, GW as makePanZoomControls, pW as makeSlider, MJ as manimElementInternals, hF as marchingCubes, ij as marchingSquares, xB as masterTimeline, Yq as matchInterpolate, pI as matrixToMobject, mI as matrixToTexString, aN as mean, BY as mercator, _B as methane, qq as mid, wq as midpoint, WV as moveAlongPath, yT as moveToTarget, BV as moveToTargetPosition, pN as niceAxisRange, rq as normSquared, aq as normalize, fB as normalizeElement, DW as normalizeKey, $d as normalizeVec, kg as notQuiteThere, RA as oklabToColor, zA as oklabToOklch, HA as oklchToColor, BA as oklchToOklab, Wf as onLog, SY as onUrlStateChange, xj as orderCoefficients, DR as orientPoint, nf as orientation2D, tf as orthonormalFrame, ST as overrideAnimate, xT as overrideAnimation, pD as parseBookmarks, xL as parsePatternDefs, AC as parseSVGPathData, mh as partialBezierPoints, bj as partialSum, zq as pathAlongArc, Rq as pathAlongCircles, SR as pathGraph, qz as pendulum, jq as perpendicularBisector, rH as phaseFlow, pj as phasePortraitColor, pJ as pointLiesOnBezier, IK as powerset, aE as prefersReducedMotion, WC as preloadMathJax, hM as preloadTypst, ET as prepareAnimation, $K as printFamily, fJ as proportionsAlongBezierCurveForPoint, NY as propsFromUrl, zU as pulse, HG as qualityToBitrate, sN as quantile, lq as quaternionConjugate, sq as quaternionFromAngleAxis, oq as quaternionMult, xq as r3ToComplex, kA as randomBrightColor, OA as randomColor, XL as randomSpringPositions, xY as readStateFromUrl, yj as reconstructSample, dE as reducedRunTime, kJ as registerFont, zJ as registerManimElement, VJ as registerSerializableMobject, Qf as registerTheme, yq as regularVertices, _U as remove, kK as removeListRedundancies, BK as removeNones, jI as removeTextLetterByLetter, GC as renderLatexToSVG, IY as renderParametrized, _M as renderTypstToSVG, _T as replacementTransform, fK as resetFeatureFlags, lE as resetReducedMotion, rp as resetThemes, Lz as resolveBounds, IW as resolveButton, Rz as resolveCircleCircle, iX as resolveEdgeStyle, mH as resolveGlyphs, rX as resolveNodeStyle, SL as resolvePatternFill, MY as resolveProps, UG as resolveResolution, rV as restore, $T as restoreMobjectState, ZK as restructureListToExcludeCertainFamilyMembers, bg as reverse, SA as rgbToColor, gA as rgbToHex, jA as rgbToHsv, CA as rgbaToColor, SH as riseByLetter, jV as rotate, pq as rotateVector, xU as rotating, dq as rotationAboutZ, uq as rotationMatrix, fq as rotationMatrixTranspose, Dg as runningStart, _g as rushFrom, gg as rushInto, fU as rushRegion, YA as sampleColormap, Aj as sampledPathFromFunction, kj as sampledPathFromPoints, QT as saveMobjectState, PV as scale, $B as scaleInPlace, wH as scalePopByLetter, qd as scaleVec, EG as sceneToSVG, GT as serializeMobject, uY as serializeScene, cY as serializeSceneMobject, dK as setFeatureFlags, gz as setGifDecoder, wC as setKatexStylesheetUrl, rz as setLottiePlayerFactory, BC as setMathJaxScriptUrl, FF as setModelLoaderFactory, wF as setMtlLoaderFactory, pO as setPostProcessingModules, mO as setPostProcessingModulesLoader, oE as setReducedMotion, yD as setSpeechSynthesizer, $f as setTheme, fM as setTypstCompiler, RV as shift, Dq as shoelace, Oq as shoelaceDirection, uE as shouldReduceMotion, GU as showCreationThenDestruction, WI as showIncreasingSubsets, KI as showPartial, NU as showPassingFlash, VU as showPassingFlashWithThinningStrokeWidth, JI as showSubmobjectsOneByOne, tV as shrinkToCenter, Gq as sigmoid, hN as silvermanBandwidth, qR as sketch, wg as slowInto, ag as smooth, pU as smoothSpeedCurve, nH as smoothedVectorizedHomotopy, Pg as smoothererstep, Ng as smootherstep, Mg as smoothstep, XT as snapshotFromJSON, YT as snapshotToJSON, Aq as sphericalToCartesian, dH as spinInFromNothing, XI as spiralIn, $q as splitBezier, kH as spreadOut, Uh as spring, Jz as springChain, YL as springForceConstant, ZL as springLayoutStep, KN as squarify, Tg as squishRateFunc, CR as starGraph, JT as stateFromJSON, qT as stateToJSON, oN as stdDev, yg as stepFunction, _P as stepVectorField, rg as steps, Lq as straightPath, PK as stretchArrayToLength, Yd as subVec, eJ as subdivideBezier, NH as succession, GL as svgMobject, PC as svgToVMobjects, JB as swap, KP as texturedSphere, hg as thereAndBack, Eg as thereAndBackWithPause, Mq as thickDiagonal, rN as toColorList, nU as tracedPath, sI as trackerToSignal, OH as tracking, hT as transform, sV as transformAnimations, HB as transformFromCopy, CV as transformMatchingCode, gV as transformMatchingShapes, yV as transformMatchingTex, UN as treemapNodeValue, MK as tuplify, YH as turnAnimationIntoUpdater, gH as typeOn, LI as typeWithCursor, CI as uncreate, Nk as union, FK as uniqChain, ef as unitPerpendicularTo, HJ as unregisterSerializableMobject, aI as untrack, zI as untypeWithCursor, DI as unwrite, BH as updateFromAlphaFunc, RH as updateFromFunc, XA as valueToColor, kM as valueTracker, Mj as visibleGlyphChars, tO as voiceoverToVTT, yU as wait, gB as water, EH as waveLetters, SW as when, jU as wiggle, XU as wiggleOutThenIn, Og as wiggleRate, ez as withDropShadow, TI as write, bY as writeStateToUrl, mq as zToVector };