manim-web 0.30.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(() => AW);
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(() => PW), 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,
@@ -81470,13 +81470,369 @@ var TW = class {
81470
81470
  _resetTriggers() {
81471
81471
  for (let e of this._inputs.values()) e.kind === "trigger" && (e.value = !1);
81472
81472
  }
81473
+ }, EW = {
81474
+ " ": "space",
81475
+ spacebar: "space",
81476
+ esc: "escape",
81477
+ del: "delete",
81478
+ up: "arrowup",
81479
+ down: "arrowdown",
81480
+ left: "arrowleft",
81481
+ right: "arrowright"
81473
81482
  };
81483
+ function DW(e) {
81484
+ let t = e.toLowerCase();
81485
+ return EW[t] ?? t;
81486
+ }
81487
+ var OW = {
81488
+ right: ["arrowright", "d"],
81489
+ left: ["arrowleft", "a"],
81490
+ up: ["arrowup", "w"],
81491
+ down: ["arrowdown", "s"]
81492
+ };
81493
+ function kW(e) {
81494
+ return e || (typeof window < "u" && typeof window.addEventListener == "function" ? window : typeof document < "u" && typeof document.addEventListener == "function" ? document : null);
81495
+ }
81496
+ var AW = class {
81497
+ _target;
81498
+ _preventDefault;
81499
+ _down = /* @__PURE__ */ new Set();
81500
+ _pressed = /* @__PURE__ */ new Set();
81501
+ _released = /* @__PURE__ */ new Set();
81502
+ _downCallbacks = /* @__PURE__ */ new Map();
81503
+ _upCallbacks = /* @__PURE__ */ new Map();
81504
+ _enabled = !1;
81505
+ _onKeyDown;
81506
+ _onKeyUp;
81507
+ constructor(e = {}, t) {
81508
+ this._target = kW(t), this._preventDefault = Array.isArray(e.preventDefault) ? new Set(e.preventDefault.map(DW)) : e.preventDefault ?? !1, this._onKeyDown = this._handleKeyDown.bind(this), this._onKeyUp = this._handleKeyUp.bind(this), (e.autoEnable ?? !0) && this.enable();
81509
+ }
81510
+ get isEnabled() {
81511
+ return this._enabled;
81512
+ }
81513
+ get hasTarget() {
81514
+ return this._target !== null;
81515
+ }
81516
+ enable() {
81517
+ this._enabled || !this._target || (this._target.addEventListener("keydown", this._onKeyDown), this._target.addEventListener("keyup", this._onKeyUp), this._enabled = !0);
81518
+ }
81519
+ disable() {
81520
+ this._target && (this._target.removeEventListener("keydown", this._onKeyDown), this._target.removeEventListener("keyup", this._onKeyUp)), this._enabled = !1, this.clear();
81521
+ }
81522
+ dispose() {
81523
+ this.disable(), this._downCallbacks.clear(), this._upCallbacks.clear();
81524
+ }
81525
+ clear() {
81526
+ this._down.clear(), this._pressed.clear(), this._released.clear();
81527
+ }
81528
+ isKeyDown(e) {
81529
+ return this._down.has(DW(e));
81530
+ }
81531
+ anyKeyDown() {
81532
+ return this._down.size > 0;
81533
+ }
81534
+ wasPressed(e) {
81535
+ return this._pressed.has(DW(e));
81536
+ }
81537
+ wasReleased(e) {
81538
+ return this._released.has(DW(e));
81539
+ }
81540
+ getAxis() {
81541
+ return [!!this._anyDown(OW.right) - +!!this._anyDown(OW.left), !!this._anyDown(OW.up) - +!!this._anyDown(OW.down)];
81542
+ }
81543
+ getDirectionVector() {
81544
+ let [e, t] = this.getAxis(), n = Math.hypot(e, t);
81545
+ return n === 0 ? [0, 0] : [e / n, t / n];
81546
+ }
81547
+ onKeyDown(e, t) {
81548
+ return this._addCallback(this._downCallbacks, e, t);
81549
+ }
81550
+ onKeyUp(e, t) {
81551
+ return this._addCallback(this._upCallbacks, e, t);
81552
+ }
81553
+ bindBool(e, t, n) {
81554
+ let r = this.onKeyDown(n, () => e.setInput(t, !0)), i = this.onKeyUp(n, () => e.setInput(t, !1));
81555
+ return () => {
81556
+ r(), i();
81557
+ };
81558
+ }
81559
+ bindTrigger(e, t, n) {
81560
+ return this.onKeyDown(n, () => e.fire(t));
81561
+ }
81562
+ bindValue(e, t, n) {
81563
+ let r = n.releasedValue ?? 0, i = this.onKeyDown(t, () => e.setValue(n.heldValue)), a = this.onKeyUp(t, () => e.setValue(r));
81564
+ return () => {
81565
+ i(), a();
81566
+ };
81567
+ }
81568
+ update(e = 0) {
81569
+ this.endFrame();
81570
+ }
81571
+ endFrame() {
81572
+ this._pressed.clear(), this._released.clear();
81573
+ }
81574
+ _anyDown(e) {
81575
+ return e.some((e) => this._down.has(e));
81576
+ }
81577
+ _handleKeyDown(e) {
81578
+ let t = DW(e.key);
81579
+ this._maybePreventDefault(e, t), !(e.repeat || this._down.has(t)) && (this._down.add(t), this._pressed.add(t), this._emit(this._downCallbacks, t, e));
81580
+ }
81581
+ _handleKeyUp(e) {
81582
+ let t = DW(e.key);
81583
+ this._maybePreventDefault(e, t), this._down.delete(t), this._released.add(t), this._emit(this._upCallbacks, t, e);
81584
+ }
81585
+ _maybePreventDefault(e, t) {
81586
+ let n = this._preventDefault;
81587
+ (n === !0 || n instanceof Set && n.has(t)) && e.preventDefault();
81588
+ }
81589
+ _addCallback(e, t, n) {
81590
+ let r = t === "any" ? "any" : DW(t), i = e.get(r) ?? /* @__PURE__ */ new Set();
81591
+ return i.add(n), e.set(r, i), () => {
81592
+ i.delete(n), i.size === 0 && e.delete(r);
81593
+ };
81594
+ }
81595
+ _emit(e, t, n) {
81596
+ e.get(t)?.forEach((e) => e(t, n)), e.get("any")?.forEach((e) => e(t, n));
81597
+ }
81598
+ };
81599
+ function jW(e, t) {
81600
+ return new AW(e, t);
81601
+ }
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
+ }
81474
81830
  //#endregion
81475
81831
  //#region src/interaction/PanZoomControls.ts
81476
- function EW(e, t, n) {
81832
+ function UW(e, t, n) {
81477
81833
  return Math.max(t, Math.min(n, e));
81478
81834
  }
81479
- var DW = class {
81835
+ var WW = class {
81480
81836
  _camera;
81481
81837
  _domElement;
81482
81838
  _options;
@@ -81528,7 +81884,7 @@ var DW = class {
81528
81884
  if (!this._enabled || !this._options.enableZoom) return;
81529
81885
  let t = this._eventToNdc(e.clientX, e.clientY);
81530
81886
  if (!t) return;
81531
- 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 = EW(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;
81532
81888
  if (s === 1) return;
81533
81889
  this._camera.frameWidth = this._camera.frameWidth * s, this._camera.frameHeight = this._camera.frameHeight * s;
81534
81890
  let c = n.x - t.x * this._camera.frameWidth / 2, l = n.y - t.y * this._camera.frameHeight / 2;
@@ -81577,12 +81933,12 @@ var DW = class {
81577
81933
  this._options.onChange?.();
81578
81934
  }
81579
81935
  };
81580
- function OW(e, t, n) {
81581
- return new DW(e, t, n);
81936
+ function GW(e, t, n) {
81937
+ return new WW(e, t, n);
81582
81938
  }
81583
81939
  //#endregion
81584
81940
  //#region node_modules/gif.js/dist/gif.js
81585
- var kW = /* @__PURE__ */ r(((e, t) => {
81941
+ var KW = /* @__PURE__ */ r(((e, t) => {
81586
81942
  (function(n) {
81587
81943
  if (typeof e == "object" && t !== void 0) t.exports = n();
81588
81944
  else if (typeof define == "function" && define.amd) define([], n);
@@ -81836,10 +82192,10 @@ var kW = /* @__PURE__ */ r(((e, t) => {
81836
82192
  }]
81837
82193
  }, {}, [3])(3);
81838
82194
  });
81839
- })), AW = /* @__PURE__ */ t({
81840
- GifExporter: () => MW,
81841
- createGifExporter: () => NW
81842
- }), jW = /* @__PURE__ */ e(kW(), 1), MW = class e {
82195
+ })), qW = /* @__PURE__ */ t({
82196
+ GifExporter: () => YW,
82197
+ createGifExporter: () => XW
82198
+ }), JW = /* @__PURE__ */ e(KW(), 1), YW = class e {
81843
82199
  _scene;
81844
82200
  _options;
81845
82201
  constructor(e, t) {
@@ -81857,7 +82213,7 @@ var kW = /* @__PURE__ */ r(((e, t) => {
81857
82213
  };
81858
82214
  }
81859
82215
  async exportTimeline(e) {
81860
- 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({
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({
81861
82217
  workers: this._options.workers,
81862
82218
  quality: this._options.quality,
81863
82219
  width: this._options.width,
@@ -81916,15 +82272,15 @@ var kW = /* @__PURE__ */ r(((e, t) => {
81916
82272
  e.download(r, t);
81917
82273
  }
81918
82274
  };
81919
- function NW(e, t) {
81920
- return new MW(e, t);
82275
+ function XW(e, t) {
82276
+ return new YW(e, t);
81921
82277
  }
81922
82278
  //#endregion
81923
82279
  //#region src/export/VideoExporter.ts
81924
- var PW = /* @__PURE__ */ t({
81925
- VideoExporter: () => FW,
81926
- createVideoExporter: () => IW
81927
- }), FW = class e {
82280
+ var ZW = /* @__PURE__ */ t({
82281
+ VideoExporter: () => QW,
82282
+ createVideoExporter: () => $W
82283
+ }), QW = class e {
81928
82284
  _scene;
81929
82285
  _options;
81930
82286
  _mediaRecorder = null;
@@ -82016,26 +82372,26 @@ var PW = /* @__PURE__ */ t({
82016
82372
  return { ...this._options };
82017
82373
  }
82018
82374
  };
82019
- function IW(e, t) {
82020
- return new FW(e, t);
82375
+ function $W(e, t) {
82376
+ return new QW(e, t);
82021
82377
  }
82022
82378
  //#endregion
82023
82379
  //#region src/export/alphaBackground.ts
82024
- var LW = "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.", RW = "Transparent export needs access to the WebGL renderer, but the scene did not expose one.";
82025
- function zW(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) {
82026
82382
  let t = e.renderer;
82027
82383
  return !t || typeof t.getThreeRenderer != "function" ? null : t.getThreeRenderer() ?? null;
82028
82384
  }
82029
- function BW(e) {
82385
+ function rG(e) {
82030
82386
  return e.getContext().getContextAttributes()?.alpha === !0;
82031
82387
  }
82032
- function VW(e) {
82033
- let t = zW(e);
82034
- if (!t) throw Error(RW);
82035
- if (!BW(t)) throw Error(LW);
82388
+ function iG(e) {
82389
+ let t = nG(e);
82390
+ if (!t) throw Error(tG);
82391
+ if (!rG(t)) throw Error(eG);
82036
82392
  return t;
82037
82393
  }
82038
- async function HW(e, t) {
82394
+ async function aG(e, t) {
82039
82395
  let n = e.getClearAlpha();
82040
82396
  e.setClearAlpha(0);
82041
82397
  try {
@@ -82046,7 +82402,7 @@ async function HW(e, t) {
82046
82402
  }
82047
82403
  //#endregion
82048
82404
  //#region src/export/FrameExporter.ts
82049
- function UW(e, t, n) {
82405
+ function oG(e, t, n) {
82050
82406
  return new Promise((r, i) => {
82051
82407
  if (typeof e.toBlob == "function") {
82052
82408
  e.toBlob((e) => {
@@ -82055,22 +82411,22 @@ function UW(e, t, n) {
82055
82411
  return;
82056
82412
  }
82057
82413
  try {
82058
- r(WW(e.toDataURL(t, n)));
82414
+ r(sG(e.toDataURL(t, n)));
82059
82415
  } catch (e) {
82060
82416
  i(e instanceof Error ? e : Error(String(e)));
82061
82417
  }
82062
82418
  });
82063
82419
  }
82064
- function WW(e) {
82420
+ function sG(e) {
82065
82421
  let [t, n] = e.split(","), r = t.match(/data:([^;]+)/), i = r ? r[1] : "image/png", a = atob(n), o = new Uint8Array(a.length);
82066
82422
  for (let e = 0; e < a.length; e++) o[e] = a.charCodeAt(e);
82067
82423
  return new Blob([o], { type: i });
82068
82424
  }
82069
- async function GW(e, t) {
82425
+ async function cG(e, t) {
82070
82426
  let n = t?.type ?? "image/png";
82071
- return t?.transparent ? HW(VW(e), () => (KW(e, t?.time), UW(e.getCanvas(), n, t?.quality))) : (t?.time !== void 0 && e.seek(t.time), UW(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));
82072
82428
  }
82073
- function KW(e, t) {
82429
+ function lG(e, t) {
82074
82430
  if (t !== void 0) {
82075
82431
  e.seek(t);
82076
82432
  return;
@@ -82081,29 +82437,29 @@ function KW(e, t) {
82081
82437
  }
82082
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.");
82083
82439
  }
82084
- async function qW(e, t) {
82440
+ async function uG(e, t) {
82085
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 () => {
82086
82442
  let n = [];
82087
82443
  for (let i = 0; i < c; i++) {
82088
82444
  let s = r + i * l;
82089
82445
  e.seek(s);
82090
82446
  let u = e.getCanvas();
82091
- n.push(await UW(u, a, t.quality)), o((i + 1) / c);
82447
+ n.push(await oG(u, a, t.quality)), o((i + 1) / c);
82092
82448
  }
82093
82449
  return n;
82094
82450
  };
82095
- return t.transparent ? HW(VW(e), u) : u();
82451
+ return t.transparent ? aG(iG(e), u) : u();
82096
82452
  }
82097
- function JW(e, t) {
82453
+ function dG(e, t) {
82098
82454
  let n = URL.createObjectURL(e), r = document.createElement("a");
82099
82455
  r.href = n, r.download = t, document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(n);
82100
82456
  }
82101
- async function YW(e, t = "frame.png", n) {
82102
- JW(await GW(e, n), t);
82457
+ async function fG(e, t = "frame.png", n) {
82458
+ dG(await cG(e, n), t);
82103
82459
  }
82104
82460
  //#endregion
82105
82461
  //#region src/export/WebCodecsExporter.ts
82106
- var XW = {
82462
+ var pG = {
82107
82463
  avc: {
82108
82464
  encoderCodec: "avc1.42001f",
82109
82465
  mp4Codec: "avc",
@@ -82124,7 +82480,7 @@ var XW = {
82124
82480
  mp4Codec: "av1",
82125
82481
  webmCodec: "V_AV1"
82126
82482
  }
82127
- }, ZW = class e {
82483
+ }, mG = class e {
82128
82484
  _scene;
82129
82485
  _options;
82130
82486
  constructor(e, t) {
@@ -82148,8 +82504,8 @@ var XW = {
82148
82504
  }
82149
82505
  async export() {
82150
82506
  if (!e.isSupported()) throw Error("WebCodecs VideoEncoder is not available in this environment. Use VideoExporter (MediaRecorder) instead to export video.");
82151
- let t = this._options, n = t.duration || this._scene.getTimelineDuration() || 5, r = Math.ceil(n * t.fps), i = XW[t.codec], a = null;
82152
- t.alpha && (this._assertAlphaCodec(), a = VW(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));
82153
82509
  let o = await this._createMuxer(i), s = new window.VideoEncoder({
82154
82510
  output: (e, t) => o.addVideoChunk(e, t),
82155
82511
  error: (e) => qf.error("WebCodecs encoder error:", e)
@@ -82173,7 +82529,7 @@ var XW = {
82173
82529
  s.encode(i, { keyFrame: e % t.keyFrameInterval === 0 }), i.close(), t.onProgress(r === 0 ? 1 : (e + 1) / r);
82174
82530
  }
82175
82531
  };
82176
- return a ? await HW(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();
82177
82533
  }
82178
82534
  _assertAlphaCodec() {
82179
82535
  let e = this._options;
@@ -82229,30 +82585,30 @@ var XW = {
82229
82585
  return { ...this._options };
82230
82586
  }
82231
82587
  };
82232
- function QW(e, t) {
82233
- return new ZW(e, t);
82588
+ function hG(e, t) {
82589
+ return new mG(e, t);
82234
82590
  }
82235
82591
  //#endregion
82236
82592
  //#region src/export/chooseExporter.ts
82237
- function $W(e = ZW.isSupported()) {
82593
+ function gG(e = mG.isSupported()) {
82238
82594
  return e ? "webcodecs" : "mediarecorder";
82239
82595
  }
82240
82596
  //#endregion
82241
82597
  //#region src/export/SvgExporter.ts
82242
- var eG = 3;
82243
- function tG(e, t) {
82598
+ var _G = 3;
82599
+ function vG(e, t) {
82244
82600
  if (!Number.isFinite(e)) return "0";
82245
82601
  let n = Number(e.toFixed(t));
82246
82602
  return String(Object.is(n, -0) ? 0 : n);
82247
82603
  }
82248
- function nG(e) {
82604
+ function yG(e) {
82249
82605
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
82250
82606
  }
82251
- function rG(e, t, n) {
82607
+ function bG(e, t, n) {
82252
82608
  let r = e.position.x, i = e.position.y, a = e.frameWidth || 1, o = e.frameHeight || 1;
82253
82609
  return (e) => [(e[0] - r) / a * t + t / 2, n / 2 - (e[1] - i) / o * n];
82254
82610
  }
82255
- function iG(e, t) {
82611
+ function xG(e, t) {
82256
82612
  if (!t || t.length <= 1) return [e];
82257
82613
  let n = [], r = 0;
82258
82614
  for (let i of t) {
@@ -82261,11 +82617,11 @@ function iG(e, t) {
82261
82617
  }
82262
82618
  return r === e.length ? n : [e];
82263
82619
  }
82264
- function aG(e, t, n) {
82620
+ function SG(e, t, n) {
82265
82621
  if (e.length < 4) return null;
82266
82622
  let r = (e) => {
82267
82623
  let [r, i] = t(e);
82268
- return `${tG(r, n)} ${tG(i, n)}`;
82624
+ return `${vG(r, n)} ${vG(i, n)}`;
82269
82625
  }, i = [`M ${r(e[0])}`], a = Math.floor((e.length - 1) / 3);
82270
82626
  for (let t = 0; t < a; t++) {
82271
82627
  let n = e[3 * t + 1], a = e[3 * t + 2], o = e[3 * t + 3];
@@ -82273,65 +82629,65 @@ function aG(e, t, n) {
82273
82629
  }
82274
82630
  return jm(e) && i.push("Z"), i.join(" ");
82275
82631
  }
82276
- function oG(e) {
82632
+ function CG(e) {
82277
82633
  return e.style.fillColor ?? e.color;
82278
82634
  }
82279
- function sG(e, t, n, r) {
82635
+ function wG(e, t, n, r) {
82280
82636
  let i = e.getPoints();
82281
82637
  if (i.length < 4) return null;
82282
- let a = iG(i, e.getEffectiveSubpathLengths()), o = [];
82638
+ let a = xG(i, e.getEffectiveSubpathLengths()), o = [];
82283
82639
  for (let e of a) {
82284
- let n = aG(e, t, r);
82640
+ let n = SG(e, t, r);
82285
82641
  n && o.push(n);
82286
82642
  }
82287
82643
  if (o.length === 0) return null;
82288
82644
  let s = e.fillOpacity > 0, c = e.strokeWidth > 0;
82289
82645
  if (!s && !c) return null;
82290
82646
  let l = [`d="${o.join(" ")}"`];
82291
- return s ? (l.push(`fill="${nG(oG(e))}"`), l.push("fill-rule=\"nonzero\""), e.fillOpacity < 1 && l.push(`fill-opacity="${tG(e.fillOpacity, r)}"`)) : l.push("fill=\"none\""), c && (l.push(`stroke="${nG(e.color)}"`), l.push(`stroke-width="${tG(e.strokeWidth * n, r)}"`), l.push("stroke-linejoin=\"round\""), l.push("stroke-linecap=\"round\""), e.opacity < 1 && l.push(`stroke-opacity="${tG(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(" ")} />`;
82292
82648
  }
82293
- function cG(e) {
82649
+ function TG(e) {
82294
82650
  return e instanceof z && e.getPoints().length >= 4;
82295
82651
  }
82296
- function lG(e, t) {
82297
- let n = t?.precision ?? eG, r = e.getWidth(), i = e.getHeight(), a = e.camera, o = rG(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 = [];
82298
82654
  for (let t of e.mobjects) {
82299
82655
  let e = [];
82300
82656
  for (let r of t.getFamily()) {
82301
- if (!cG(r)) continue;
82302
- let t = sG(r, o, s, n);
82657
+ if (!TG(r)) continue;
82658
+ let t = wG(r, o, s, n);
82303
82659
  t && e.push(t);
82304
82660
  }
82305
82661
  if (e.length === 0) continue;
82306
- let r = t.userId ? ` data-mobject-id="${nG(t.userId)}"` : "";
82662
+ let r = t.userId ? ` data-mobject-id="${yG(t.userId)}"` : "";
82307
82663
  c.push(` <g${r}>\n ${e.join("\n ")}\n </g>`);
82308
82664
  }
82309
- let l = tG(r, n), u = tG(i, n);
82310
- 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="${nG(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>`;
82311
82667
  }
82312
- function uG(e, t) {
82313
- let n = lG(e, t);
82668
+ function DG(e, t) {
82669
+ let n = EG(e, t);
82314
82670
  return new Blob([n], { type: "image/svg+xml" });
82315
82671
  }
82316
- function dG(e, t = "scene.svg", n) {
82672
+ function OG(e, t = "scene.svg", n) {
82317
82673
  if (typeof document > "u") throw Error("exportAndDownloadSVG requires a DOM (document is undefined)");
82318
- JW(uG(e, n), t);
82674
+ dG(DG(e, n), t);
82319
82675
  }
82320
82676
  //#endregion
82321
82677
  //#region src/export/SlideDeckExporter.ts
82322
- var fG = "PNG";
82323
- function pG(e, t) {
82678
+ var kG = "PNG";
82679
+ function AG(e, t) {
82324
82680
  return e.seek(t), {
82325
82681
  dataUrl: e.getCanvas().toDataURL("image/png"),
82326
82682
  width: e.getWidth(),
82327
82683
  height: e.getHeight()
82328
82684
  };
82329
82685
  }
82330
- async function mG(e) {
82686
+ async function jG(e) {
82331
82687
  let { jsPDF: t } = await import("./jspdf.es.min-CvMJL6nS.js");
82332
82688
  return new t(e);
82333
82689
  }
82334
- function hG(e, t, n, r) {
82690
+ function MG(e, t, n, r) {
82335
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;
82336
82692
  return {
82337
82693
  x: (n - s) / 2,
@@ -82340,33 +82696,33 @@ function hG(e, t, n, r) {
82340
82696
  h: c
82341
82697
  };
82342
82698
  }
82343
- function gG(e, t) {
82699
+ function NG(e, t) {
82344
82700
  return t === "first" ? e.startTime : e.endTime;
82345
82701
  }
82346
- async function _G(e, t) {
82702
+ async function PG(e, t) {
82347
82703
  let n = e.timeline.getSlides();
82348
82704
  if (n.length === 0) return null;
82349
- let r = t?.still ?? "last", i = t?.orientation ?? "landscape", a = t?.pageSize ?? "a4", o = t?.unit ?? "pt", s = t?.imageFormat ?? fG, c = t?.background, l = t?.captureSlide ?? pG, u = t?.pdfFactory ?? mG, 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({
82350
82706
  orientation: i,
82351
82707
  unit: o,
82352
82708
  format: a
82353
82709
  }), p = f.internal.pageSize.getWidth(), m = f.internal.pageSize.getHeight();
82354
82710
  for (let t = 0; t < n.length; t++) {
82355
82711
  t > 0 && f.addPage(a, i), c && (f.setFillColor(c[0], c[1], c[2]), f.rect(0, 0, p, m, "F"));
82356
- let o = await l(e.scene, gG(n[t], r)), u = hG(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);
82357
82713
  f.addImage(o.dataUrl, s, u.x, u.y, u.w, u.h), d((t + 1) / n.length);
82358
82714
  }
82359
82715
  return f.output("blob");
82360
82716
  }
82361
- async function vG(e, t = "slides.pdf", n) {
82717
+ async function FG(e, t = "slides.pdf", n) {
82362
82718
  if (typeof document > "u") {
82363
82719
  qf.warn("exportAndDownloadSlidesToPDF: no DOM available, skipping download.");
82364
82720
  return;
82365
82721
  }
82366
- let r = await _G(e, n);
82367
- r && JW(r, t);
82722
+ let r = await PG(e, n);
82723
+ r && dG(r, t);
82368
82724
  }
82369
- async function yG() {
82725
+ async function IG() {
82370
82726
  let e;
82371
82727
  try {
82372
82728
  e = await import(
@@ -82378,14 +82734,14 @@ async function yG() {
82378
82734
  }
82379
82735
  return new (e.default ?? e)();
82380
82736
  }
82381
- async function bG(e, t) {
82737
+ async function LG(e, t) {
82382
82738
  let n = e.timeline.getSlides();
82383
82739
  if (n.length === 0) return null;
82384
- let r = t?.still ?? "last", i = t?.slideWidth ?? 13.333, a = t?.slideHeight ?? 7.5, o = t?.background, s = t?.captureSlide ?? pG, c = t?.pptxFactory ?? yG, 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();
82385
82741
  for (let t = 0; t < n.length; t++) {
82386
82742
  let c = u.addSlide();
82387
82743
  o && (c.background = { color: o });
82388
- let d = await s(e.scene, gG(n[t], r));
82744
+ let d = await s(e.scene, NG(n[t], r));
82389
82745
  c.addImage({
82390
82746
  data: d.dataUrl,
82391
82747
  x: 0,
@@ -82403,7 +82759,7 @@ async function bG(e, t) {
82403
82759
  }
82404
82760
  //#endregion
82405
82761
  //#region src/player/ExportSettingsUI.ts
82406
- var xG = [
82762
+ var RG = [
82407
82763
  {
82408
82764
  id: "current",
82409
82765
  label: "Current",
@@ -82440,11 +82796,11 @@ var xG = [
82440
82796
  width: 3840,
82441
82797
  height: 2160
82442
82798
  }
82443
- ], SG = [
82799
+ ], zG = [
82444
82800
  24,
82445
82801
  30,
82446
82802
  60
82447
- ], CG = [
82803
+ ], BG = [
82448
82804
  {
82449
82805
  id: "low",
82450
82806
  label: "Low",
@@ -82460,12 +82816,12 @@ var xG = [
82460
82816
  label: "High",
82461
82817
  value: .9
82462
82818
  }
82463
- ], wG = 1e7;
82464
- function TG(e) {
82465
- return Math.round(Math.max(0, Math.min(1, e)) * wG);
82819
+ ], VG = 1e7;
82820
+ function HG(e) {
82821
+ return Math.round(Math.max(0, Math.min(1, e)) * VG);
82466
82822
  }
82467
- function EG(e, t, n) {
82468
- let r = xG.find((t) => t.id === e);
82823
+ function UG(e, t, n) {
82824
+ let r = RG.find((t) => t.id === e);
82469
82825
  return !r || r.width === null || r.height === null ? {
82470
82826
  width: t,
82471
82827
  height: n
@@ -82474,7 +82830,7 @@ function EG(e, t, n) {
82474
82830
  height: r.height
82475
82831
  };
82476
82832
  }
82477
- var DG = class {
82833
+ var WG = class {
82478
82834
  _element;
82479
82835
  _fpsSelect;
82480
82836
  _resolutionSelect;
@@ -82487,22 +82843,22 @@ var DG = class {
82487
82843
  display: "flex",
82488
82844
  flexDirection: "column",
82489
82845
  gap: "6px"
82490
- }), this._element.setAttribute("data-export-settings", ""), this._fpsSelect = this._buildSelect("FPS", SG.map((e) => ({
82846
+ }), this._element.setAttribute("data-export-settings", ""), this._fpsSelect = this._buildSelect("FPS", zG.map((e) => ({
82491
82847
  value: String(e),
82492
82848
  label: `${e} fps`
82493
- })), String(this._nearestFps(e.fps))), this._resolutionSelect = this._buildSelect("Resolution", xG.map((e) => ({
82849
+ })), String(this._nearestFps(e.fps))), this._resolutionSelect = this._buildSelect("Resolution", RG.map((e) => ({
82494
82850
  value: e.id,
82495
82851
  label: e.label
82496
- })), "current"), this._qualitySelect = this._buildSelect("Quality", CG.map((e) => ({
82852
+ })), "current"), this._qualitySelect = this._buildSelect("Quality", BG.map((e) => ({
82497
82853
  value: String(e.value),
82498
82854
  label: e.label
82499
- })), String(CG[CG.length - 1].value));
82855
+ })), String(BG[BG.length - 1].value));
82500
82856
  }
82501
82857
  get element() {
82502
82858
  return this._element;
82503
82859
  }
82504
82860
  getSettings() {
82505
- let e = parseInt(this._fpsSelect.value, 10), { width: t, height: n } = EG(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);
82506
82862
  return {
82507
82863
  fps: e,
82508
82864
  width: t,
@@ -82511,7 +82867,7 @@ var DG = class {
82511
82867
  };
82512
82868
  }
82513
82869
  _nearestFps(e) {
82514
- return SG.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);
82515
82871
  }
82516
82872
  _buildSelect(e, t, n) {
82517
82873
  let r = document.createElement("label");
@@ -82542,7 +82898,7 @@ var DG = class {
82542
82898
  }
82543
82899
  return a.value = n, a.addEventListener("click", (e) => e.stopPropagation()), r.appendChild(i), r.appendChild(a), this._element.appendChild(r), a;
82544
82900
  }
82545
- }, OG = class {
82901
+ }, GG = class {
82546
82902
  _container;
82547
82903
  _bar;
82548
82904
  _playBtn;
@@ -82578,19 +82934,19 @@ var DG = class {
82578
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");
82579
82935
  let r = this._createProgressBar();
82580
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();
82581
- let i = kG("div", {
82937
+ let i = KG("div", {
82582
82938
  display: "flex",
82583
82939
  alignItems: "center",
82584
82940
  gap: "4px"
82585
82941
  });
82586
82942
  i.appendChild(this._prevBtn), i.appendChild(this._playBtn), i.appendChild(this._nextBtn);
82587
- let a = kG("div", {
82943
+ let a = KG("div", {
82588
82944
  display: "flex",
82589
82945
  alignItems: "center",
82590
82946
  gap: "8px"
82591
82947
  });
82592
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);
82593
- let o = kG("div", {
82949
+ let o = KG("div", {
82594
82950
  display: "flex",
82595
82951
  alignItems: "center",
82596
82952
  justifyContent: "space-between",
@@ -82605,10 +82961,10 @@ var DG = class {
82605
82961
  let n = e / t * 100;
82606
82962
  this._progressFill.style.width = `${n}%`;
82607
82963
  }
82608
- this._timeDisplay.textContent = `${jG(e)} / ${jG(t)}`;
82964
+ this._timeDisplay.textContent = `${JG(e)} / ${JG(t)}`;
82609
82965
  }
82610
82966
  setPlaying(e, t = !1) {
82611
- this._isPlaying = e, t ? (this._playBtn.innerHTML = PG, this._playBtn.title = "Replay (Space)") : (this._playBtn.innerHTML = e ? NG : MG, 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();
82612
82968
  }
82613
82969
  setSlidesMode(e) {
82614
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)`;
@@ -82618,7 +82974,7 @@ var DG = class {
82618
82974
  let t = e.getSlides(), n = e.getDuration();
82619
82975
  if (!(n <= 0)) for (let e of t) {
82620
82976
  if (e.index === 0) continue;
82621
- let t = kG("div", {
82977
+ let t = KG("div", {
82622
82978
  position: "absolute",
82623
82979
  left: `${e.startTime / n * 100}%`,
82624
82980
  top: "50%",
@@ -82633,7 +82989,7 @@ var DG = class {
82633
82989
  }
82634
82990
  }
82635
82991
  _createBar() {
82636
- let e = kG("div", {
82992
+ let e = KG("div", {
82637
82993
  position: "absolute",
82638
82994
  bottom: "0",
82639
82995
  left: "0",
@@ -82651,21 +83007,21 @@ var DG = class {
82651
83007
  }
82652
83008
  _createPlayBtn() {
82653
83009
  let e = document.createElement("button");
82654
- return e.innerHTML = MG, e.title = "Play (Space)", AG(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;
82655
83011
  }
82656
83012
  _createNavBtn(e) {
82657
83013
  let t = document.createElement("button");
82658
- return t.innerHTML = e === "prev" ? FG : IG, t.title = e === "prev" ? "Previous (Left arrow)" : "Next (Right arrow)", AG(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", () => {
82659
83015
  e === "prev" ? this._callbacks.onPrev() : this._callbacks.onNext();
82660
83016
  }), t;
82661
83017
  }
82662
83018
  _createProgressBar() {
82663
- let e = kG("div", {
83019
+ let e = KG("div", {
82664
83020
  position: "relative",
82665
83021
  height: "16px",
82666
83022
  padding: "6px 12px",
82667
83023
  cursor: "pointer"
82668
- }), t = kG("div", {
83024
+ }), t = KG("div", {
82669
83025
  position: "absolute",
82670
83026
  left: "12px",
82671
83027
  right: "12px",
@@ -82675,14 +83031,14 @@ var DG = class {
82675
83031
  background: "rgba(255,255,255,0.2)",
82676
83032
  borderRadius: "2px",
82677
83033
  overflow: "visible"
82678
- }), n = kG("div", {
83034
+ }), n = KG("div", {
82679
83035
  width: "0%",
82680
83036
  height: "100%",
82681
83037
  background: "#4a9eff",
82682
83038
  borderRadius: "2px",
82683
83039
  transition: "none",
82684
83040
  position: "relative"
82685
- }), r = kG("div", {
83041
+ }), r = KG("div", {
82686
83042
  position: "absolute",
82687
83043
  right: "-5px",
82688
83044
  top: "50%",
@@ -82695,7 +83051,7 @@ var DG = class {
82695
83051
  transition: "transform 0.1s"
82696
83052
  });
82697
83053
  n.appendChild(r);
82698
- let i = kG("div", {
83054
+ let i = KG("div", {
82699
83055
  width: "0%",
82700
83056
  height: "100%",
82701
83057
  background: "rgba(255,255,255,0.1)",
@@ -82704,7 +83060,7 @@ var DG = class {
82704
83060
  top: "0",
82705
83061
  left: "0",
82706
83062
  pointerEvents: "none"
82707
- }), a = kG("div", {
83063
+ }), a = KG("div", {
82708
83064
  position: "absolute",
82709
83065
  top: "0",
82710
83066
  left: "0",
@@ -82729,7 +83085,7 @@ var DG = class {
82729
83085
  };
82730
83086
  }
82731
83087
  _createTimeDisplay() {
82732
- let e = kG("span", {
83088
+ let e = KG("span", {
82733
83089
  fontFamily: "\"SF Mono\", Monaco, Consolas, monospace",
82734
83090
  fontSize: "12px",
82735
83091
  opacity: "0.8",
@@ -82771,16 +83127,16 @@ var DG = class {
82771
83127
  }), e;
82772
83128
  }
82773
83129
  _createExportBtn() {
82774
- let e = kG("div", {
83130
+ let e = KG("div", {
82775
83131
  position: "relative",
82776
83132
  display: "inline-block"
82777
83133
  }), t = document.createElement("button");
82778
- return t.innerHTML = LG, t.title = "Export animation", AG(t, "28px", "28px"), t.addEventListener("click", (e) => {
83134
+ return t.innerHTML = eK, t.title = "Export animation", qG(t, "28px", "28px"), t.addEventListener("click", (e) => {
82779
83135
  e.stopPropagation(), this._exportMenu ? this._closeExportMenu() : this._showExportMenu();
82780
83136
  }), e.appendChild(t), this._exportBtnWrapper = e, t;
82781
83137
  }
82782
83138
  _showExportMenu() {
82783
- let e = this._exportBtn.getBoundingClientRect(), t = kG("div", {
83139
+ let e = this._exportBtn.getBoundingClientRect(), t = KG("div", {
82784
83140
  position: "fixed",
82785
83141
  top: "0",
82786
83142
  left: "0",
@@ -82791,7 +83147,7 @@ var DG = class {
82791
83147
  t.setAttribute("data-player-bar", ""), t.addEventListener("mousedown", (e) => {
82792
83148
  e.stopPropagation(), e.preventDefault(), this._closeExportMenu();
82793
83149
  });
82794
- let n = kG("div", {
83150
+ let n = KG("div", {
82795
83151
  position: "fixed",
82796
83152
  bottom: `${window.innerHeight - e.top + 6}px`,
82797
83153
  left: `${e.left - 60}px`,
@@ -82812,7 +83168,7 @@ var DG = class {
82812
83168
  height: 1080,
82813
83169
  fps: 60
82814
83170
  };
82815
- this._exportPanel = new DG(e), n.appendChild(this._exportPanel.element);
83171
+ this._exportPanel = new WG(e), n.appendChild(this._exportPanel.element);
82816
83172
  }
82817
83173
  for (let e of [
82818
83174
  {
@@ -82831,7 +83187,7 @@ var DG = class {
82831
83187
  desc: "Video file"
82832
83188
  }
82833
83189
  ]) {
82834
- let t = kG("div", {
83190
+ let t = KG("div", {
82835
83191
  padding: "8px 14px",
82836
83192
  cursor: "pointer",
82837
83193
  fontSize: "13px",
@@ -82856,7 +83212,7 @@ var DG = class {
82856
83212
  this._exportMenu && (this._exportMenuBackdrop?.remove(), this._exportMenuBackdrop = null, this._exportMenu.remove(), this._exportMenu = null, this._exportPanel = null);
82857
83213
  }
82858
83214
  setExportProgress(e) {
82859
- if (e === null) this._exportBtn.innerHTML = LG, 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";
82860
83216
  else {
82861
83217
  let t = Math.round(e * 100);
82862
83218
  this._exportBtn.innerHTML = `<span style="font-size:10px;font-weight:600">${t}%</span>`, this._exportBtn.disabled = !0, this._exportBtn.title = `Exporting... ${t}%`;
@@ -82864,7 +83220,7 @@ var DG = class {
82864
83220
  }
82865
83221
  _createSlidesBtn() {
82866
83222
  let e = document.createElement("button");
82867
- return e.innerHTML = RG, e.title = "Slides mode off (S)", AG(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", () => {
82868
83224
  this._slidesActive = !this._slidesActive, this.setSlidesMode(this._slidesActive), this._callbacks.onSlidesToggle(this._slidesActive);
82869
83225
  }), e.addEventListener("mouseenter", () => {
82870
83226
  e.style.background = this._slidesActive ? "rgba(74,158,255,0.35)" : "rgba(255,255,255,0.15)";
@@ -82874,7 +83230,7 @@ var DG = class {
82874
83230
  }
82875
83231
  _createFullscreenBtn() {
82876
83232
  let e = document.createElement("button");
82877
- return e.innerHTML = zG, e.title = "Fullscreen (F)", AG(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;
82878
83234
  }
82879
83235
  _showControls() {
82880
83236
  this._isVisible ||= (this._bar.style.opacity = "1", this._bar.style.transform = "translateY(0)", !0), this._scheduleHide();
@@ -82929,11 +83285,11 @@ var DG = class {
82929
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();
82930
83286
  }
82931
83287
  };
82932
- function kG(e, t) {
83288
+ function KG(e, t) {
82933
83289
  let n = document.createElement(e);
82934
83290
  return Object.assign(n.style, t), n;
82935
83291
  }
82936
- function AG(e, t, n) {
83292
+ function qG(e, t, n) {
82937
83293
  Object.assign(e.style, {
82938
83294
  width: t,
82939
83295
  height: n,
@@ -82954,11 +83310,11 @@ function AG(e, t, n) {
82954
83310
  e.style.background = "none";
82955
83311
  });
82956
83312
  }
82957
- function jG(e) {
83313
+ function JG(e) {
82958
83314
  let t = Math.floor(e / 60), n = Math.floor(e % 60);
82959
83315
  return `${t}:${String(n).padStart(2, "0")}`;
82960
83316
  }
82961
- var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentColor\"><path d=\"M5 3l10 6-10 6V3z\"/></svg>", NG = "<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>", PG = "<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>", FG = "<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>", IG = "<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>", LG = "<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>", RG = "<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>", zG = "<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>", BG = 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 {
82962
83318
  _container;
82963
83319
  _callbacks;
82964
83320
  _onKeyDown;
@@ -82988,7 +83344,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
82988
83344
  dispose() {
82989
83345
  this._container.removeEventListener("keydown", this._onKeyDown);
82990
83346
  }
82991
- }, VG = class {
83347
+ }, iK = class {
82992
83348
  _realScene;
82993
83349
  _masterTimeline;
82994
83350
  constructor(e, t) {
@@ -83025,7 +83381,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83025
83381
  for (let n of e) t.push(n), n instanceof HT && t.push(...this._collectAll(n.animations));
83026
83382
  return t;
83027
83383
  }
83028
- }, HG = [
83384
+ }, aK = [
83029
83385
  "mousedown",
83030
83386
  "mousemove",
83031
83387
  "mouseup",
@@ -83033,7 +83389,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83033
83389
  "touchstart",
83034
83390
  "touchmove",
83035
83391
  "touchend"
83036
- ], UG = class {
83392
+ ], oK = class {
83037
83393
  _target;
83038
83394
  _scene;
83039
83395
  _isIdle;
@@ -83052,13 +83408,13 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83052
83408
  }
83053
83409
  attach() {
83054
83410
  if (!this._attached) {
83055
- for (let e of HG) this._target.addEventListener(e, this._onEvent);
83411
+ for (let e of aK) this._target.addEventListener(e, this._onEvent);
83056
83412
  this._attached = !0;
83057
83413
  }
83058
83414
  }
83059
83415
  dispose() {
83060
83416
  if (this._attached) {
83061
- for (let e of HG) this._target.removeEventListener(e, this._onEvent);
83417
+ for (let e of aK) this._target.removeEventListener(e, this._onEvent);
83062
83418
  this._attached = !1, this._renderScheduled = !1;
83063
83419
  }
83064
83420
  }
@@ -83070,7 +83426,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83070
83426
  this._renderScheduled = !1, !(!this._attached || !this._isIdle()) && (this._scene.render(), this._renderCount++);
83071
83427
  }));
83072
83428
  }
83073
- }, WG = class {
83429
+ }, sK = class {
83074
83430
  _scene;
83075
83431
  _masterTimeline;
83076
83432
  _ui;
@@ -83093,7 +83449,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83093
83449
  _origHeight = 0;
83094
83450
  _onFullscreenChange;
83095
83451
  constructor(e, t = {}) {
83096
- 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 OG(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, {
83097
83453
  onPlayPause: () => this.togglePlayPause(),
83098
83454
  onSeek: (e) => this.seek(e),
83099
83455
  onPrev: () => this.prevSegment(),
@@ -83110,7 +83466,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83110
83466
  }, {
83111
83467
  autoHideMs: t.autoHideMs,
83112
83468
  exportControls: this._exportControls
83113
- }), this._ui.setSlidesMode(this._slidesMode), this._ui.enableScrollScrub(() => this._masterTimeline.getCurrentTime()), this._controller = new BG(e, {
83469
+ }), this._ui.setSlidesMode(this._slidesMode), this._ui.enableScrollScrub(() => this._masterTimeline.getCurrentTime()), this._controller = new rK(e, {
83114
83470
  onPlayPause: () => this.togglePlayPause(),
83115
83471
  onPrev: () => this.prevSegment(),
83116
83472
  onNext: () => this.nextSegment(),
@@ -83124,10 +83480,10 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83124
83480
  }, document.addEventListener("fullscreenchange", this._onFullscreenChange), this._interactiveSlides && this._enableSlideInteraction();
83125
83481
  }
83126
83482
  _enableSlideInteraction() {
83127
- this._slideInteraction || (this._slideInteraction = new UG(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());
83128
83484
  }
83129
83485
  async sequence(e) {
83130
- this._masterTimeline = new bB(), this._activeLoopSlideIndex = null, this._slidesTargetSlideIndex = -1, await e(new VG(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();
83131
83487
  }
83132
83488
  get scene() {
83133
83489
  return this._scene;
@@ -83238,7 +83594,7 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83238
83594
  let i = `animation.${e}`, a = this._masterTimeline.getDuration(), o = (e) => this._ui.setExportProgress(e);
83239
83595
  this._ui.setExportProgress(0);
83240
83596
  try {
83241
- (e === "webm" || e === "mp4") && $W() === "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));
83242
83598
  } catch (e) {
83243
83599
  qf.error("Export failed:", e), this._ui.showError(`Export failed: ${e instanceof Error ? e.message : "Unknown error"}`);
83244
83600
  } finally {
@@ -83246,12 +83602,12 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83246
83602
  }
83247
83603
  }
83248
83604
  async _exportWithWebCodecs(e, t, n, r, i) {
83249
- JW(await new ZW(this._scene, {
83605
+ dG(await new mG(this._scene, {
83250
83606
  format: e,
83251
83607
  fps: t?.fps ?? this._exportFps,
83252
83608
  width: t?.width ?? this._scene.getWidth(),
83253
83609
  height: t?.height ?? this._scene.getHeight(),
83254
- bitrate: TG(t?.quality ?? .9),
83610
+ bitrate: HG(t?.quality ?? .9),
83255
83611
  duration: n,
83256
83612
  onProgress: r
83257
83613
  }).export(), i);
@@ -83312,36 +83668,36 @@ var MG = "<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"currentCo
83312
83668
  _stopLoop() {
83313
83669
  this._animFrameId !== null && (cancelAnimationFrame(this._animFrameId), this._animFrameId = null);
83314
83670
  }
83315
- }, GG = {
83671
+ }, cK = {
83316
83672
  EXPERIMENTAL_3D_LIGHTING: !1,
83317
83673
  WEBGPU_RENDERER: !1,
83318
83674
  ADVANCED_TEXT_LAYOUT: !1
83319
- }, KG = { ...GG };
83320
- function qG(e) {
83321
- return KG[e] ?? !1;
83675
+ }, lK = { ...cK };
83676
+ function uK(e) {
83677
+ return lK[e] ?? !1;
83322
83678
  }
83323
- function JG(e) {
83324
- KG = {
83325
- ...KG,
83679
+ function dK(e) {
83680
+ lK = {
83681
+ ...lK,
83326
83682
  ...e
83327
83683
  };
83328
83684
  }
83329
- function YG() {
83330
- KG = { ...GG };
83685
+ function fK() {
83686
+ lK = { ...cK };
83331
83687
  }
83332
- function XG() {
83333
- return { ...KG };
83688
+ function pK() {
83689
+ return { ...lK };
83334
83690
  }
83335
83691
  //#endregion
83336
83692
  //#region src/utils/ManimColor.ts
83337
- var ZG = /(?:#|0[xX])([A-Fa-f0-9]{3,8})/;
83338
- function QG(e) {
83693
+ var mK = /(?:#|0[xX])([A-Fa-f0-9]{3,8})/;
83694
+ function hK(e) {
83339
83695
  return Math.min(255, Math.max(0, Math.trunc(e * 255)));
83340
83696
  }
83341
- function $G(e) {
83342
- return QG(e).toString(16).toUpperCase().padStart(2, "0");
83697
+ function gK(e) {
83698
+ return hK(e).toString(16).toUpperCase().padStart(2, "0");
83343
83699
  }
83344
- function eK(e, t) {
83700
+ function _K(e, t) {
83345
83701
  let n = e;
83346
83702
  (n.length === 3 || n.length === 4) && (n = n.split("").map((e) => e + e).join(""));
83347
83703
  let r = t;
@@ -83354,14 +83710,14 @@ function eK(e, t) {
83354
83710
  r
83355
83711
  ];
83356
83712
  }
83357
- function tK(e, t) {
83358
- let n = ZG.exec(e);
83359
- if (n !== null) return eK(n[1], t);
83713
+ function vK(e, t) {
83714
+ let n = mK.exec(e);
83715
+ if (n !== null) return _K(n[1], t);
83360
83716
  let r = ml[e.toUpperCase()];
83361
- if (typeof r == "string") return tK(r, t);
83717
+ if (typeof r == "string") return vK(r, t);
83362
83718
  throw Error(`Failed to parse a color from "${e}"`);
83363
83719
  }
83364
- function nK(e, t) {
83720
+ function yK(e, t) {
83365
83721
  return [
83366
83722
  (e >> 16 & 255) / 255,
83367
83723
  (e >> 8 & 255) / 255,
@@ -83369,7 +83725,7 @@ function nK(e, t) {
83369
83725
  t
83370
83726
  ];
83371
83727
  }
83372
- var rK = class e {
83728
+ var bK = class e {
83373
83729
  value;
83374
83730
  constructor(t, n = 1) {
83375
83731
  if (t === null) this.value = [
@@ -83386,8 +83742,8 @@ var rK = class e {
83386
83742
  e[2],
83387
83743
  e[3]
83388
83744
  ];
83389
- } else if (typeof t == "number") this.value = nK(t, n);
83390
- else if (typeof t == "string") this.value = tK(t, n);
83745
+ } else if (typeof t == "number") this.value = yK(t, n);
83746
+ else if (typeof t == "string") this.value = vK(t, n);
83391
83747
  else if (t.length === 3) this.value = [
83392
83748
  t[0],
83393
83749
  t[1],
@@ -83445,18 +83801,18 @@ var rK = class e {
83445
83801
  toIntRgb() {
83446
83802
  let e = this.internalRgba();
83447
83803
  return [
83448
- QG(e[0]),
83449
- QG(e[1]),
83450
- QG(e[2])
83804
+ hK(e[0]),
83805
+ hK(e[1]),
83806
+ hK(e[2])
83451
83807
  ];
83452
83808
  }
83453
83809
  toIntRgba() {
83454
83810
  let e = this.internalRgba();
83455
83811
  return [
83456
- QG(e[0]),
83457
- QG(e[1]),
83458
- QG(e[2]),
83459
- QG(e[3])
83812
+ hK(e[0]),
83813
+ hK(e[1]),
83814
+ hK(e[2]),
83815
+ hK(e[3])
83460
83816
  ];
83461
83817
  }
83462
83818
  toHex(e = !1) {
@@ -83465,7 +83821,7 @@ var rK = class e {
83465
83821
  t[1],
83466
83822
  t[2]
83467
83823
  ]);
83468
- return e ? n + $G(t[3]) : n;
83824
+ return e ? n + gK(t[3]) : n;
83469
83825
  }
83470
83826
  toHsv() {
83471
83827
  return jA(this.toRgb());
@@ -83525,7 +83881,7 @@ var rK = class e {
83525
83881
  static parse(t, n = 1) {
83526
83882
  return Array.isArray(t) && t.some((e) => typeof e != "number") ? t.map((t) => new e(t, n)) : new e(t, n);
83527
83883
  }
83528
- }, iK = rK, aK = class e extends rK {
83884
+ }, xK = bK, SK = class e extends bK {
83529
83885
  hsva;
83530
83886
  constructor(e, t = 1) {
83531
83887
  if (super(null), e.length === 3) this.hsva = [
@@ -83594,7 +83950,7 @@ var rK = class e {
83594
83950
  return this.hsva[2];
83595
83951
  }
83596
83952
  };
83597
- function oK(e) {
83953
+ function CK(e) {
83598
83954
  let t = e >>> 0;
83599
83955
  return () => {
83600
83956
  t = t + 1831565813 | 0;
@@ -83602,18 +83958,18 @@ function oK(e) {
83602
83958
  return e = e + Math.imul(e ^ e >>> 7, 61 | e) ^ e, ((e ^ e >>> 14) >>> 0) / 4294967296;
83603
83959
  };
83604
83960
  }
83605
- var sK = Array.from(new Set(Object.values(ml))).map((e) => new rK(e)), cK = class {
83961
+ var wK = Array.from(new Set(Object.values(ml))).map((e) => new bK(e)), TK = class {
83606
83962
  rng;
83607
83963
  colors;
83608
83964
  constructor(e, t) {
83609
- this.rng = e === void 0 ? Math.random : oK(e), this.colors = t === void 0 ? sK : t.map((e) => e instanceof rK ? e : new rK(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));
83610
83966
  }
83611
83967
  next() {
83612
83968
  let e = Math.floor(this.rng() * this.colors.length);
83613
83969
  return this.colors[e];
83614
83970
  }
83615
83971
  };
83616
- function lK(e, t, n, r) {
83972
+ function EK(e, t, n, r) {
83617
83973
  let i = .5 * Xd(n, $d([
83618
83974
  r[0] - t[0],
83619
83975
  r[1] - t[1],
@@ -83627,7 +83983,7 @@ function lK(e, t, n, r) {
83627
83983
  }
83628
83984
  //#endregion
83629
83985
  //#region src/utils/iterables.ts
83630
- function uK(e, t) {
83986
+ function DK(e, t) {
83631
83987
  let n = e.length;
83632
83988
  if (n === 0) return [];
83633
83989
  let r = [];
@@ -83638,10 +83994,10 @@ function uK(e, t) {
83638
83994
  }
83639
83995
  return r;
83640
83996
  }
83641
- function dK(e) {
83642
- return uK(e, 2);
83997
+ function OK(e) {
83998
+ return DK(e, 2);
83643
83999
  }
83644
- function fK(e) {
84000
+ function kK(e) {
83645
84001
  let t = [], n = /* @__PURE__ */ new Set();
83646
84002
  for (let r = e.length - 1; r >= 0; r--) {
83647
84003
  let i = e[r];
@@ -83649,7 +84005,7 @@ function fK(e) {
83649
84005
  }
83650
84006
  return t.reverse(), t;
83651
84007
  }
83652
- function pK(e, t, n) {
84008
+ function AK(e, t, n) {
83653
84009
  if (n === void 0) {
83654
84010
  let n = new Set(t);
83655
84011
  return e.filter((e) => !n.has(e));
@@ -83657,29 +84013,29 @@ function pK(e, t, n) {
83657
84013
  let r = new Set(t.map((e) => n(e)));
83658
84014
  return e.filter((e) => !r.has(n(e)));
83659
84015
  }
83660
- function mK(e, t, n) {
83661
- return pK(e, t, n).concat(t);
84016
+ function jK(e, t, n) {
84017
+ return AK(e, t, n).concat(t);
83662
84018
  }
83663
- function hK(e) {
84019
+ function MK(e) {
83664
84020
  return typeof e == "string" ? [e] : typeof e == "object" && e && Symbol.iterator in e ? [...e] : [e];
83665
84021
  }
83666
- function gK(e, t) {
84022
+ function NK(e, t) {
83667
84023
  let n = e.length, r = t.length, i = Math.max(n, r), a = [], o = [];
83668
84024
  for (let s = 0; s < i; s++) a.push(e[Math.floor(s * n / i)]), o.push(t[Math.floor(s * r / i)]);
83669
84025
  return [a, o];
83670
84026
  }
83671
- function _K(e, t) {
84027
+ function PK(e, t) {
83672
84028
  let n = e.length;
83673
84029
  if (n > t) throw Error("Trying to stretch array to a length shorter than its own");
83674
84030
  let r = [];
83675
84031
  for (let i = 0; i < t; i++) r.push(e[Math.floor(i / t * n)]);
83676
84032
  return r;
83677
84033
  }
83678
- function* vK(...e) {
84034
+ function* FK(...e) {
83679
84035
  let t = /* @__PURE__ */ new Set();
83680
84036
  for (let n of e) for (let e of n) t.has(e) || (t.add(e), yield e);
83681
84037
  }
83682
- function yK(e) {
84038
+ function IK(e) {
83683
84039
  let t = [[]];
83684
84040
  for (let n of e) {
83685
84041
  let e = t.length;
@@ -83687,82 +84043,82 @@ function yK(e) {
83687
84043
  }
83688
84044
  return t;
83689
84045
  }
83690
- function bK(e, t) {
84046
+ function LK(e, t) {
83691
84047
  for (let n of e) if (!(n instanceof t)) return !1;
83692
84048
  return !0;
83693
84049
  }
83694
- function xK(...e) {
84050
+ function RK(...e) {
83695
84051
  let t = [];
83696
84052
  for (let n of e) for (let e of n) t.push(e);
83697
84053
  return t;
83698
84054
  }
83699
- function SK(e) {
84055
+ function zK(e) {
83700
84056
  return typeof e == "string" ? [e] : typeof e == "object" && e && Symbol.iterator in e ? [...e] : [e];
83701
84057
  }
83702
- function CK(e) {
84058
+ function BK(e) {
83703
84059
  let t = [];
83704
84060
  for (let n of e) n && t.push(n);
83705
84061
  return t;
83706
84062
  }
83707
- function wK(e, t) {
84063
+ function VK(e, t) {
83708
84064
  let n = Math.max(e.length, t.length), r = [], i = [];
83709
84065
  for (let a = 0; a < n; a++) r.push(e[a % e.length]), i.push(t[a % t.length]);
83710
84066
  return [r, i];
83711
84067
  }
83712
- function TK(e) {
83713
- return DK(EK(e));
84068
+ function HK(e) {
84069
+ return WK(UK(e));
83714
84070
  }
83715
- function EK(e) {
84071
+ function UK(e) {
83716
84072
  if (e === null) return "null";
83717
84073
  if (e === void 0) return "undefined";
83718
84074
  let t = typeof e;
83719
84075
  if (t === "string") return `s:${e}`;
83720
84076
  if (t === "number" || t === "boolean" || t === "bigint") return `${t[0]}:${String(e)}`;
83721
- if (e instanceof Set) return `set:[${[...e].map(EK).sort().join(",")}]`;
83722
- if (e instanceof Map) return `map:{${[...e.entries()].map(([e, t]) => `${EK(e)}=${EK(t)}`).sort().join(",")}}`;
83723
- if (Array.isArray(e)) return `arr:[${e.map(EK).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(",")}]`;
83724
84080
  if (t === "object") {
83725
84081
  let t = e;
83726
- return `obj:{${Object.keys(t).sort().map((e) => `${e}=${EK(t[e])}`).join(",")}}`;
84082
+ return `obj:{${Object.keys(t).sort().map((e) => `${e}=${UK(t[e])}`).join(",")}}`;
83727
84083
  }
83728
84084
  return `${t}:${String(e)}`;
83729
84085
  }
83730
- function DK(e) {
84086
+ function WK(e) {
83731
84087
  let t = 2166136261;
83732
84088
  for (let n = 0; n < e.length; n++) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
83733
84089
  return t >>> 0;
83734
84090
  }
83735
84091
  //#endregion
83736
84092
  //#region src/utils/unit.ts
83737
- function OK(e) {
84093
+ function GK(e) {
83738
84094
  return e * pd / hd;
83739
84095
  }
83740
- function kK(e) {
84096
+ function KK(e) {
83741
84097
  return e * Math.PI / 180;
83742
84098
  }
83743
- function AK(e) {
84099
+ function qK(e) {
83744
84100
  return e;
83745
84101
  }
83746
- function jK(e, t) {
84102
+ function JK(e, t) {
83747
84103
  return e[0] === t[0] && e[1] === t[1] && e[2] === t[2];
83748
84104
  }
83749
- function MK(e, t) {
84105
+ function YK(e, t) {
83750
84106
  let n;
83751
- if (jK(e, Md)) n = pd;
83752
- else if (jK(e, kd)) n = 8;
83753
- else if (jK(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");
83754
84110
  else throw Error("Percent axis must be the X axis (RIGHT) or Y axis (UP)");
83755
84111
  return t / 100 * n;
83756
84112
  }
83757
84113
  //#endregion
83758
84114
  //#region src/utils/debug.ts
83759
- function NK(e, t = !1) {
84115
+ function XK(e, t = !1) {
83760
84116
  let n = [];
83761
84117
  for (let t of e) n.push(...t.getFamily());
83762
84118
  return t ? n.filter((e) => e instanceof z && e.hasOwnPoints()) : n;
83763
84119
  }
83764
- function PK(e, t) {
83765
- let n = [], r = new Set(NK(t)), i = (e, t) => {
84120
+ function ZK(e, t) {
84121
+ let n = [], r = new Set(XK(t)), i = (e, t) => {
83766
84122
  for (let r of e) {
83767
84123
  if (t.has(r)) continue;
83768
84124
  let e = new Set(r.getFamily().filter((e) => t.has(e)));
@@ -83771,14 +84127,14 @@ function PK(e, t) {
83771
84127
  };
83772
84128
  return i(e, r), n;
83773
84129
  }
83774
- function FK(e, t = {}) {
84130
+ function QK(e, t = {}) {
83775
84131
  let { labelHeight: n = .15 } = t, r = new B();
83776
84132
  return e.children.forEach((e, t) => {
83777
84133
  let i = new wM({ value: t });
83778
84134
  i.setHeight(n), i.moveTo(e), r.add(i);
83779
84135
  }), r;
83780
84136
  }
83781
- function IK(e, t = 0) {
84137
+ function $K(e, t = 0) {
83782
84138
  let n = [], r = (e, t) => {
83783
84139
  n.push(" ".repeat(t) + `${e.constructor.name} ${e.id}`);
83784
84140
  for (let n of e.children) r(n, t + 1);
@@ -83789,8 +84145,8 @@ function IK(e, t = 0) {
83789
84145
  }
83790
84146
  //#endregion
83791
84147
  //#region src/utils/spaceOps.ts
83792
- var LK = 2 * Math.PI;
83793
- function RK(e) {
84148
+ var eq = 2 * Math.PI;
84149
+ function tq(e) {
83794
84150
  let t = e.length, n = e[0].length, r = [];
83795
84151
  for (let i = 0; i < n; i++) {
83796
84152
  let n = [];
@@ -83799,20 +84155,20 @@ function RK(e) {
83799
84155
  }
83800
84156
  return r;
83801
84157
  }
83802
- function zK(e, t) {
84158
+ function nq(e, t) {
83803
84159
  return e.map((e) => e.reduce((e, n, r) => e + n * (t[r] ?? 0), 0));
83804
84160
  }
83805
- function BK(e) {
84161
+ function rq(e) {
83806
84162
  return e.reduce((e, t) => e + t * t, 0);
83807
84163
  }
83808
- function VK(e, t) {
84164
+ function iq(e, t) {
83809
84165
  return e[0] * t[1] - e[1] * t[0];
83810
84166
  }
83811
- function HK(e, t) {
83812
- let n = Math.sqrt(BK(e));
84167
+ function aq(e, t) {
84168
+ let n = Math.sqrt(rq(e));
83813
84169
  return n > 0 ? e.map((e) => e / n) : t ?? e.map(() => 0);
83814
84170
  }
83815
- function UK(...e) {
84171
+ function oq(...e) {
83816
84172
  if (e.length === 0) return [
83817
84173
  1,
83818
84174
  0,
@@ -83831,8 +84187,8 @@ function UK(...e) {
83831
84187
  }
83832
84188
  return t;
83833
84189
  }
83834
- function WK(e, t, n = !1) {
83835
- let r = n ? t : HK(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);
83836
84192
  return [
83837
84193
  Math.cos(e / 2),
83838
84194
  i * (r[0] ?? 0),
@@ -83840,19 +84196,19 @@ function WK(e, t, n = !1) {
83840
84196
  i * (r[2] ?? 0)
83841
84197
  ];
83842
84198
  }
83843
- function GK(e) {
83844
- let t = HK(e.slice(1), [
84199
+ function cq(e) {
84200
+ let t = aq(e.slice(1), [
83845
84201
  1,
83846
84202
  0,
83847
84203
  0
83848
84204
  ]), n = 2 * Math.acos(e[0]);
83849
- return n > LK / 2 && (n = LK - n, t = [
84205
+ return n > eq / 2 && (n = eq - n, t = [
83850
84206
  -t[0],
83851
84207
  -t[1],
83852
84208
  -t[2]
83853
84209
  ]), [n, t];
83854
84210
  }
83855
- function KK(e) {
84211
+ function lq(e) {
83856
84212
  return [
83857
84213
  e[0],
83858
84214
  -e[1],
@@ -83860,7 +84216,7 @@ function KK(e) {
83860
84216
  -e[3]
83861
84217
  ];
83862
84218
  }
83863
- function qK(e, t, n = !1) {
84219
+ function uq(e, t, n = !1) {
83864
84220
  let [r, i, a] = $d(t), o = Math.cos(e), s = Math.sin(e), c = 1 - o, l = [
83865
84221
  [
83866
84222
  o + r * r * c,
@@ -83890,7 +84246,7 @@ function qK(e, t, n = !1) {
83890
84246
  ]
83891
84247
  ] : l;
83892
84248
  }
83893
- function JK(e) {
84249
+ function dq(e) {
83894
84250
  let t = Math.cos(e), n = Math.sin(e);
83895
84251
  return [
83896
84252
  [
@@ -83910,23 +84266,23 @@ function JK(e) {
83910
84266
  ]
83911
84267
  ];
83912
84268
  }
83913
- function YK(e, t) {
83914
- return (t[0] ?? 0) === 0 && (t[1] ?? 0) === 0 ? RK(JK(e * Math.sign(t[2] ?? 0))) : RK(qK(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));
83915
84271
  }
83916
- function XK(e, t, n = Nd) {
84272
+ function pq(e, t, n = Nd) {
83917
84273
  if (e.length > 3) throw Error("Vector must have the correct dimensions.");
83918
84274
  let r = e.length === 2 ? [
83919
84275
  e[0],
83920
84276
  e[1],
83921
84277
  0
83922
- ] : e, i = zK(qK(t, n), r);
84278
+ ] : e, i = nq(uq(t, n), r);
83923
84279
  return [
83924
84280
  i[0],
83925
84281
  i[1],
83926
84282
  i[2]
83927
84283
  ];
83928
84284
  }
83929
- function ZK(e) {
84285
+ function mq(e) {
83930
84286
  let t = $d(e), n = $d(Zd(t, Md)), r = Zd(n, t);
83931
84287
  if (Qd(n) === 0) {
83932
84288
  r = $d(Zd(kd, t));
@@ -83937,27 +84293,27 @@ function ZK(e) {
83937
84293
  -e[2]
83938
84294
  ];
83939
84295
  }
83940
- return RK([
84296
+ return tq([
83941
84297
  r,
83942
84298
  n,
83943
84299
  t
83944
84300
  ]);
83945
84301
  }
83946
- function QK(e) {
84302
+ function hq(e) {
83947
84303
  return Math.atan2(e[1] ?? 0, e[0] ?? 0);
83948
84304
  }
83949
- function $K(e, t) {
83950
- let n = HK(e), r = HK(t), i = n.map((e, t) => e - r[t]), a = n.map((e, t) => e + r[t]);
83951
- return 2 * Math.atan2(Math.sqrt(BK(i)), Math.sqrt(BK(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)));
83952
84308
  }
83953
- function eq(e, t, n = 1e-6) {
84309
+ function _q(e, t, n = 1e-6) {
83954
84310
  let r = Math.max(...e.map(Math.abs)), i = Math.max(...t.map(Math.abs)), a;
83955
84311
  if (r === 0) {
83956
84312
  if (i === 0) return Ad;
83957
84313
  a = t.map((e) => e / i);
83958
84314
  } else if (i === 0) a = e.map((e) => e / r);
83959
84315
  else {
83960
- let o = e.map((e) => e / r), s = Zd(o, t.map((e) => e / i)), c = Math.sqrt(BK(s));
84316
+ let o = e.map((e) => e / r), s = Zd(o, t.map((e) => e / i)), c = Math.sqrt(rq(s));
83961
84317
  if (c > n) return [
83962
84318
  s[0] / c,
83963
84319
  s[1] / c,
@@ -83970,43 +84326,43 @@ function eq(e, t, n = 1e-6) {
83970
84326
  -a[0] * a[2],
83971
84327
  -a[1] * a[2],
83972
84328
  a[0] * a[0] + a[1] * a[1]
83973
- ], s = Math.sqrt(BK(o));
84329
+ ], s = Math.sqrt(rq(o));
83974
84330
  return [
83975
84331
  o[0] / s,
83976
84332
  o[1] / s,
83977
84333
  o[2] / s
83978
84334
  ];
83979
84335
  }
83980
- function tq(e = 4, t = Md) {
83981
- let n = LK / e, r = [];
83982
- for (let i = 0; i < e; i++) r.push(XK(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));
83983
84339
  return r;
83984
84340
  }
83985
- function nq(e, t = {}) {
83986
- let n = t.radius ?? 1, r = t.startAngle ?? (e % 2 == 0 ? 0 : LK / 4);
83987
- return [tq(e, XK([
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([
83988
84344
  n,
83989
84345
  0,
83990
84346
  0
83991
84347
  ], r)), r];
83992
84348
  }
83993
- function rq(e) {
84349
+ function bq(e) {
83994
84350
  return [
83995
84351
  e.re,
83996
84352
  e.im,
83997
84353
  0
83998
84354
  ];
83999
84355
  }
84000
- function iq(e) {
84356
+ function xq(e) {
84001
84357
  return {
84002
84358
  re: e[0] ?? 0,
84003
84359
  im: e[1] ?? 0
84004
84360
  };
84005
84361
  }
84006
- function aq(e) {
84007
- return (t) => rq(e(iq(t)));
84362
+ function Sq(e) {
84363
+ return (t) => bq(e(xq(t)));
84008
84364
  }
84009
- function oq(e) {
84365
+ function Cq(e) {
84010
84366
  let t = [
84011
84367
  0,
84012
84368
  0,
@@ -84020,10 +84376,10 @@ function oq(e) {
84020
84376
  t[2] / n
84021
84377
  ];
84022
84378
  }
84023
- function sq(e, t) {
84024
- return oq([e, t]);
84379
+ function wq(e, t) {
84380
+ return Cq([e, t]);
84025
84381
  }
84026
- function cq(e, t) {
84382
+ function Tq(e, t) {
84027
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.");
84028
84384
  let n = (e) => Zd([
84029
84385
  e[0][0],
@@ -84041,7 +84397,7 @@ function cq(e, t) {
84041
84397
  0
84042
84398
  ];
84043
84399
  }
84044
- function lq(e, t, n, r, i = 1e-5) {
84400
+ function Eq(e, t, n, r, i = 1e-5) {
84045
84401
  let a = [];
84046
84402
  for (let o = 0; o < e.length; o++) {
84047
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 = [
@@ -84057,15 +84413,15 @@ function lq(e, t, n, r, i = 1e-5) {
84057
84413
  }
84058
84414
  return a;
84059
84415
  }
84060
- function uq(e) {
84416
+ function Dq(e) {
84061
84417
  let t = 0;
84062
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;
84063
84419
  return t;
84064
84420
  }
84065
- function dq(e) {
84066
- return uq(e) > 0 ? "CW" : "CCW";
84421
+ function Oq(e) {
84422
+ return Dq(e) > 0 ? "CW" : "CCW";
84067
84423
  }
84068
- function fq(e) {
84424
+ function kq(e) {
84069
84425
  let t = Qd(e);
84070
84426
  if (t === 0) return [
84071
84427
  0,
@@ -84079,7 +84435,7 @@ function fq(e) {
84079
84435
  n
84080
84436
  ];
84081
84437
  }
84082
- function pq(e) {
84438
+ function Aq(e) {
84083
84439
  let [t, n, r] = e;
84084
84440
  return [
84085
84441
  t * Math.cos(n) * Math.sin(r),
@@ -84087,12 +84443,12 @@ function pq(e) {
84087
84443
  t * Math.cos(r)
84088
84444
  ];
84089
84445
  }
84090
- function mq(e, t = Nd) {
84446
+ function jq(e, t = Nd) {
84091
84447
  let n = e[0], r = e[1], i = Zd([
84092
84448
  n[0] - r[0],
84093
84449
  n[1] - r[1],
84094
84450
  n[2] - r[2]
84095
- ], t), a = sq(n, r);
84451
+ ], t), a = wq(n, r);
84096
84452
  return [[
84097
84453
  a[0] + i[0],
84098
84454
  a[1] + i[1],
@@ -84103,7 +84459,7 @@ function mq(e, t = Nd) {
84103
84459
  a[2] - i[2]
84104
84460
  ]];
84105
84461
  }
84106
- function hq(e, t = 2) {
84462
+ function Mq(e, t = 2) {
84107
84463
  let n = [];
84108
84464
  for (let r = 0; r < e; r++) {
84109
84465
  let i = [];
@@ -84112,41 +84468,41 @@ function hq(e, t = 2) {
84112
84468
  }
84113
84469
  return n;
84114
84470
  }
84115
- function gq(e) {
84471
+ function Nq(e) {
84116
84472
  let t = 0;
84117
- for (let [n, r] of dK(e)) {
84118
- let e = ((QK(r) - QK(n) + Math.PI) % LK + LK) % LK - Math.PI;
84473
+ for (let [n, r] of OK(e)) {
84474
+ let e = ((hq(r) - hq(n) + Math.PI) % eq + eq) % eq - Math.PI;
84119
84475
  t += e;
84120
84476
  }
84121
- return t / LK;
84477
+ return t / eq;
84122
84478
  }
84123
84479
  //#endregion
84124
84480
  //#region src/utils/paths.ts
84125
- var _q = .01;
84126
- function vq(e, t, n) {
84481
+ var Pq = .01;
84482
+ function Fq(e, t, n) {
84127
84483
  return e.map((e, r) => e.map((e, i) => e + n * (t[r][i] - e)));
84128
84484
  }
84129
- function yq(e, t) {
84485
+ function Iq(e, t) {
84130
84486
  return t.map((t) => t.reduce((t, n, r) => t + n * e[r], 0));
84131
84487
  }
84132
- function bq() {
84133
- return vq;
84488
+ function Lq() {
84489
+ return Fq;
84134
84490
  }
84135
- function xq(e, t, n = Nd) {
84136
- let r = HK(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];
84137
84493
  return (t, n, a) => {
84138
- let o = qK(-e, r), s = qK(a * e, r);
84494
+ let o = uq(-e, r), s = uq(a * e, r);
84139
84495
  return t.map((e, t) => {
84140
- let r = i(t), c = yq(n[t].map((e, t) => e - r[t]), o).map((e, t) => e + r[t]);
84141
- return yq(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]);
84142
84498
  });
84143
84499
  };
84144
84500
  }
84145
- function Sq(e, t = Nd) {
84146
- if (Math.abs(e) < _q) return bq();
84147
- let n = HK(t, Nd);
84501
+ function zq(e, t = Nd) {
84502
+ if (Math.abs(e) < Pq) return Lq();
84503
+ let n = aq(t, Nd);
84148
84504
  return (t, r, i) => {
84149
- let a = qK(i * e, n);
84505
+ let a = uq(i * e, n);
84150
84506
  return t.map((t, i) => {
84151
84507
  let o = r[i].map((e, n) => e - t[n]), s = t.map((e, t) => e + .5 * o[t]);
84152
84508
  if (e !== Math.PI) {
@@ -84157,19 +84513,19 @@ function Sq(e, t = Nd) {
84157
84513
  ], i = 1 / Math.tan(e / 2);
84158
84514
  for (let e = 0; e < s.length; e++) s[e] += r[e] * i;
84159
84515
  }
84160
- return yq(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]);
84161
84517
  });
84162
84518
  };
84163
84519
  }
84164
- function Cq() {
84165
- return Sq(-Math.PI);
84520
+ function Bq() {
84521
+ return zq(-Math.PI);
84166
84522
  }
84167
- function wq() {
84168
- return Sq(Math.PI);
84523
+ function Vq() {
84524
+ return zq(Math.PI);
84169
84525
  }
84170
84526
  //#endregion
84171
84527
  //#region src/utils/simpleFunctions.ts
84172
- function Tq(e, t, n, r, i = 1e-4) {
84528
+ function Hq(e, t, n, r, i = 1e-4) {
84173
84529
  let a = n, o = r, s = (a + o) / 2;
84174
84530
  for (; Math.abs(o - a) > i;) {
84175
84531
  s = (a + o) / 2;
@@ -84182,7 +84538,7 @@ function Tq(e, t, n, r, i = 1e-4) {
84182
84538
  }
84183
84539
  return s;
84184
84540
  }
84185
- function Eq(e, t) {
84541
+ function Uq(e, t) {
84186
84542
  if (t < 0 || t > e) return 0;
84187
84543
  let n = t;
84188
84544
  n > e - n && (n = e - n);
@@ -84190,30 +84546,30 @@ function Eq(e, t) {
84190
84546
  for (let t = 0; t < n; t++) r = r * (e - t) / (t + 1);
84191
84547
  return Math.round(r);
84192
84548
  }
84193
- function Dq(e, t, n) {
84549
+ function Wq(e, t, n) {
84194
84550
  return e < t ? t : e > n ? n : e;
84195
84551
  }
84196
- function Oq(e) {
84552
+ function Gq(e) {
84197
84553
  return 1 / (1 + Math.exp(-e));
84198
84554
  }
84199
84555
  //#endregion
84200
84556
  //#region src/utils/bezier.ts
84201
- function kq(e, t, n) {
84557
+ function Kq(e, t, n) {
84202
84558
  if (Array.isArray(e) && Array.isArray(t)) return e.map((e, r) => (1 - n) * e + n * t[r]);
84203
84559
  if (typeof e == "number" && typeof t == "number") return (1 - n) * e + n * t;
84204
84560
  throw Error("interpolate: start and end must both be numbers or both be arrays");
84205
84561
  }
84206
- function Aq(e, t) {
84562
+ function qq(e, t) {
84207
84563
  if (Array.isArray(e) && Array.isArray(t)) return e.map((e, n) => (e + t[n]) / 2);
84208
84564
  if (typeof e == "number" && typeof t == "number") return (e + t) / 2;
84209
84565
  throw Error("mid: start and end must both be numbers or both be arrays");
84210
84566
  }
84211
- function jq(e, t, n) {
84567
+ function Jq(e, t, n) {
84212
84568
  if (Array.isArray(e) && Array.isArray(t) && Array.isArray(n)) return e.map((e, r) => (n[r] - e) / (t[r] - e));
84213
84569
  if (typeof e == "number" && typeof t == "number" && typeof n == "number") return (n - e) / (t - e);
84214
84570
  throw Error("inverse_interpolate: start, end and value must all be numbers or all be arrays");
84215
84571
  }
84216
- function Mq(e, t, n, r, i) {
84572
+ function Yq(e, t, n, r, i) {
84217
84573
  let a = r - n;
84218
84574
  if (Array.isArray(i)) return i.map((r) => {
84219
84575
  let i = (r - n) / a;
@@ -84222,7 +84578,7 @@ function Mq(e, t, n, r, i) {
84222
84578
  let o = (i - n) / a;
84223
84579
  return (1 - o) * e + o * t;
84224
84580
  }
84225
- function Nq(e, t) {
84581
+ function Xq(e, t) {
84226
84582
  if (e.length === 0) return 0;
84227
84583
  let n = e.slice();
84228
84584
  for (; n.length > 1;) {
@@ -84232,7 +84588,7 @@ function Nq(e, t) {
84232
84588
  }
84233
84589
  return n[0];
84234
84590
  }
84235
- function Pq(e, t) {
84591
+ function Zq(e, t) {
84236
84592
  if (e.length === 0) return [];
84237
84593
  let n = e.map((e) => e.slice());
84238
84594
  for (; n.length > 1;) {
@@ -84242,15 +84598,15 @@ function Pq(e, t) {
84242
84598
  }
84243
84599
  return n[0];
84244
84600
  }
84245
- function Fq(e) {
84601
+ function Qq(e) {
84246
84602
  if (e.length > 0 && Array.isArray(e[0])) {
84247
84603
  let t = e.filter((e) => Array.isArray(e));
84248
- return (e) => Pq(t, e);
84604
+ return (e) => Zq(t, e);
84249
84605
  }
84250
84606
  let t = e.filter((e) => typeof e == "number");
84251
- return (e) => Nq(t, e);
84607
+ return (e) => Xq(t, e);
84252
84608
  }
84253
- function Iq(e, t) {
84609
+ function $q(e, t) {
84254
84610
  let n = e.length, r = e.map((e) => e.slice()), i = Array(n);
84255
84611
  i[0] = e[0].slice();
84256
84612
  for (let e = 1; e < n; e++) {
@@ -84259,7 +84615,7 @@ function Iq(e, t) {
84259
84615
  }
84260
84616
  return [...i, ...r];
84261
84617
  }
84262
- function Lq(e, t) {
84618
+ function eJ(e, t) {
84263
84619
  if (t <= 1) return e.map((e) => e.slice());
84264
84620
  let n = [];
84265
84621
  for (let r = 0; r < t; r++) {
@@ -84268,7 +84624,7 @@ function Lq(e, t) {
84268
84624
  }
84269
84625
  return n;
84270
84626
  }
84271
- function Rq(e, t) {
84627
+ function tJ(e, t) {
84272
84628
  let n = e.length;
84273
84629
  if (n === 0) return [];
84274
84630
  let r = e[0].length, i = [];
@@ -84279,12 +84635,12 @@ function Rq(e, t) {
84279
84635
  for (let t = 0; t < n; t++) {
84280
84636
  let n = a[t];
84281
84637
  if (n <= 0) continue;
84282
- let i = Lq(e[t], n);
84638
+ let i = eJ(e[t], n);
84283
84639
  for (let e = 0; e < n; e++) o.push(i.slice(e * r, e * r + r));
84284
84640
  }
84285
84641
  return o;
84286
84642
  }
84287
- function zq(e) {
84643
+ function nJ(e) {
84288
84644
  let t = e[0], n = e[e.length - 1];
84289
84645
  for (let e = 0; e < 3; e++) {
84290
84646
  let r = t[e] ?? 0, i = n[e] ?? 0, a = 1e-8 + 1e-5 * Math.abs(r);
@@ -84292,43 +84648,43 @@ function zq(e) {
84292
84648
  }
84293
84649
  return !0;
84294
84650
  }
84295
- function Bq(e, t) {
84651
+ function rJ(e, t) {
84296
84652
  return {
84297
84653
  re: e.re + t.re,
84298
84654
  im: e.im + t.im
84299
84655
  };
84300
84656
  }
84301
- function Vq(e, t) {
84657
+ function iJ(e, t) {
84302
84658
  return {
84303
84659
  re: e.re - t.re,
84304
84660
  im: e.im - t.im
84305
84661
  };
84306
84662
  }
84307
- function Hq(e, t) {
84663
+ function aJ(e, t) {
84308
84664
  return {
84309
84665
  re: e.re * t.re - e.im * t.im,
84310
84666
  im: e.re * t.im + e.im * t.re
84311
84667
  };
84312
84668
  }
84313
- function Uq(e, t) {
84669
+ function oJ(e, t) {
84314
84670
  let n = t.re * t.re + t.im * t.im;
84315
84671
  return {
84316
84672
  re: (e.re * t.re + e.im * t.im) / n,
84317
84673
  im: (e.im * t.re - e.re * t.im) / n
84318
84674
  };
84319
84675
  }
84320
- function Wq(e, t) {
84676
+ function sJ(e, t) {
84321
84677
  let n = {
84322
84678
  re: e[e.length - 1],
84323
84679
  im: 0
84324
84680
  };
84325
- for (let r = e.length - 2; r >= 0; r--) n = Bq(Hq(n, t), {
84681
+ for (let r = e.length - 2; r >= 0; r--) n = rJ(aJ(n, t), {
84326
84682
  re: e[r],
84327
84683
  im: 0
84328
84684
  });
84329
84685
  return n;
84330
84686
  }
84331
- function Gq(e) {
84687
+ function cJ(e) {
84332
84688
  let t = e.slice();
84333
84689
  for (; t.length > 1 && Math.abs(t[t.length - 1]) < 1e-14;) t.pop();
84334
84690
  let n = t.length - 1;
@@ -84343,17 +84699,17 @@ function Gq(e) {
84343
84699
  for (let e = 0; e < n; e++) a.push({
84344
84700
  re: s.re,
84345
84701
  im: s.im
84346
- }), s = Hq(s, o);
84702
+ }), s = aJ(s, o);
84347
84703
  for (let e = 0; e < 200; e++) {
84348
84704
  let e = 0;
84349
84705
  for (let t = 0; t < n; t++) {
84350
- let r = Wq(i, a[t]), o = {
84706
+ let r = sJ(i, a[t]), o = {
84351
84707
  re: 1,
84352
84708
  im: 0
84353
84709
  };
84354
- for (let e = 0; e < n; e++) e !== t && (o = Hq(o, Vq(a[t], a[e])));
84355
- let s = Uq(r, o);
84356
- a[t] = Vq(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);
84357
84713
  let c = Math.hypot(s.re, s.im);
84358
84714
  c > e && (e = c);
84359
84715
  }
@@ -84361,98 +84717,98 @@ function Gq(e) {
84361
84717
  }
84362
84718
  return a;
84363
84719
  }
84364
- function Kq(e, t) {
84720
+ function lJ(e, t) {
84365
84721
  if (t < 0 || t > e) return 0;
84366
84722
  let n = 1;
84367
84723
  for (let r = 0; r < t; r++) n = n * (e - r) / (r + 1);
84368
84724
  return Math.round(n);
84369
84725
  }
84370
- function qq(e, t) {
84726
+ function uJ(e, t) {
84371
84727
  let n = 10 ** t;
84372
84728
  return Math.round(e * n) / n;
84373
84729
  }
84374
- function Jq(e, t, n) {
84730
+ function dJ(e, t, n) {
84375
84731
  let r = .5 * 10 ** -n, i = [];
84376
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);
84377
84733
  return i;
84378
84734
  }
84379
- function Yq(e, t, n = 1e-6) {
84735
+ function fJ(e, t, n = 1e-6) {
84380
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");
84381
84737
  let r = t.length - 1, i = Math.round(Math.log10(1 / n)), a = [];
84382
84738
  for (let n = 0; n < e.length; n++) {
84383
84739
  let o = e[n], s = t.map((e) => e[n]), c = [];
84384
84740
  for (let e = r; e >= 0; e--) {
84385
- let t = Kq(r, e), n = 1, i = 0;
84741
+ let t = lJ(r, e), n = 1, i = 0;
84386
84742
  for (let t = e; t >= 0; t--) {
84387
- let r = Kq(e, t) * n * s[t];
84743
+ let r = lJ(e, t) * n * s[t];
84388
84744
  e === 0 && (r -= o), i += r, n *= -1;
84389
84745
  }
84390
84746
  c.push(t * i);
84391
84747
  }
84392
84748
  if (c.every((e) => e === 0)) continue;
84393
- let l = Gq(c.slice().reverse()).filter((e) => Math.abs(e.im) < 1e-9).map((e) => qq(e.re, i));
84749
+ let l = cJ(c.slice().reverse()).filter((e) => Math.abs(e.im) < 1e-9).map((e) => uJ(e.re, i));
84394
84750
  a.push(l);
84395
84751
  }
84396
84752
  if (a.length === 0) return [];
84397
84753
  let o = a[0];
84398
- for (let e = 1; e < a.length; e++) o = Jq(o, a[e], i);
84754
+ for (let e = 1; e < a.length; e++) o = dJ(o, a[e], i);
84399
84755
  return o.filter((e) => e >= 0 && e <= 1);
84400
84756
  }
84401
- function Xq(e, t, n = 1e-6) {
84402
- return Yq(e, t, n).length > 0;
84757
+ function pJ(e, t, n = 1e-6) {
84758
+ return fJ(e, t, n).length > 0;
84403
84759
  }
84404
84760
  //#endregion
84405
84761
  //#region src/mobjects/three-d/threeDVmobUtils.ts
84406
- function Zq(e) {
84762
+ function mJ(e) {
84407
84763
  return [
84408
84764
  e[0],
84409
84765
  e[1],
84410
84766
  e[2]
84411
84767
  ];
84412
84768
  }
84413
- function Qq(e) {
84769
+ function hJ(e) {
84414
84770
  return e.filter((e, t) => t % 3 == 0);
84415
84771
  }
84416
- function $q(e) {
84417
- return [nJ(e), rJ(e)];
84772
+ function gJ(e) {
84773
+ return [yJ(e), bJ(e)];
84418
84774
  }
84419
- function eJ(e) {
84775
+ function _J(e) {
84420
84776
  return 0;
84421
84777
  }
84422
- function tJ(e) {
84778
+ function vJ(e) {
84423
84779
  return Math.floor((e.getPoints().length - 1) / 6) * 3;
84424
84780
  }
84425
- function nJ(e) {
84781
+ function yJ(e) {
84426
84782
  let t = e.getPoints();
84427
- return t.length === 0 ? [...Fd] : Zq(t[eJ(e)]);
84783
+ return t.length === 0 ? [...Fd] : mJ(t[_J(e)]);
84428
84784
  }
84429
- function rJ(e) {
84785
+ function bJ(e) {
84430
84786
  let t = e.getPoints();
84431
- return t.length === 0 ? [...Fd] : Zq(t[tJ(e)]);
84787
+ return t.length === 0 ? [...Fd] : mJ(t[vJ(e)]);
84432
84788
  }
84433
- function iJ(e, t) {
84789
+ function xJ(e, t) {
84434
84790
  let n = e.getPoints(), r = n.length;
84435
- if (Qq(n).length <= 2) return [...kd];
84436
- let i = t, a = i > 2 ? i - 3 : r - 4, o = eq(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]));
84437
84793
  return Math.hypot(...o) === 0 ? [...kd] : o;
84438
84794
  }
84439
- function aJ(e) {
84440
- return iJ(e, eJ(e));
84795
+ function SJ(e) {
84796
+ return xJ(e, _J(e));
84441
84797
  }
84442
- function oJ(e) {
84443
- return iJ(e, tJ(e));
84798
+ function CJ(e) {
84799
+ return xJ(e, vJ(e));
84444
84800
  }
84445
84801
  //#endregion
84446
84802
  //#region src/core/SpecialThreeDScene.ts
84447
- var sJ = 70 * Nu, cJ = -110 * Nu, lJ = 2, uJ = 48, dJ = class extends WE {
84803
+ var wJ = 70 * Nu, TJ = -110 * Nu, EJ = 2, DJ = 48, OJ = class extends WE {
84448
84804
  cutAxesAtRadius;
84449
84805
  _threeDAxesConfig;
84450
84806
  _sphereConfig;
84451
84807
  _defaultAngledCameraPosition;
84452
84808
  constructor(e, t = {}) {
84453
84809
  let { cutAxesAtRadius: n = !0, threeDAxesConfig: r = {}, sphereConfig: i = {}, defaultAngledCameraPosition: a = {
84454
- phi: sJ,
84455
- theta: cJ
84810
+ phi: wJ,
84811
+ theta: TJ
84456
84812
  }, phi: o = a.phi, theta: s = a.theta, ...c } = t;
84457
84813
  super(e, {
84458
84814
  ...c,
@@ -84482,8 +84838,8 @@ var sJ = 70 * Nu, cJ = -110 * Nu, lJ = 2, uJ = 48, dJ = class extends WE {
84482
84838
  }
84483
84839
  getDefaultSphereConfig() {
84484
84840
  return {
84485
- radius: lJ,
84486
- resolution: uJ
84841
+ radius: EJ,
84842
+ resolution: DJ
84487
84843
  };
84488
84844
  }
84489
84845
  getAxes() {
@@ -84509,36 +84865,36 @@ var sJ = 70 * Nu, cJ = -110 * Nu, lJ = 2, uJ = 48, dJ = class extends WE {
84509
84865
  };
84510
84866
  //#endregion
84511
84867
  //#region src/mobjects/text/registerFont.ts
84512
- function fJ(e, t) {
84868
+ function kJ(e, t) {
84513
84869
  if (typeof document > "u" || typeof FontFace > "u" || document.fonts === void 0) return !1;
84514
84870
  let n = typeof t == "string" && !/^\s*(url|local)\s*\(/i.test(t) ? `url("${t}")` : t, r = new FontFace(e, n);
84515
84871
  return document.fonts.add(r), !0;
84516
84872
  }
84517
84873
  //#endregion
84518
84874
  //#region src/integrations/webcomponent.ts
84519
- var pJ = 800, mJ = 450, hJ = { importModule: (e) => import(
84875
+ var AJ = 800, jJ = 450, MJ = { importModule: (e) => import(
84520
84876
  /* @vite-ignore */
84521
84877
  e
84522
84878
  ) };
84523
- function gJ(e) {
84879
+ function NJ(e) {
84524
84880
  return typeof e.togglePlayPause == "function";
84525
84881
  }
84526
- function _J(e) {
84882
+ function PJ(e) {
84527
84883
  try {
84528
84884
  e.dispose();
84529
84885
  } catch (e) {
84530
84886
  qf.error("<manim-scene> failed to dispose instance:", e);
84531
84887
  }
84532
84888
  }
84533
- function vJ(e, t) {
84889
+ function FJ(e, t) {
84534
84890
  let n = e?.trim();
84535
84891
  return n ? /^\d+(\.\d+)?$/.test(n) ? `${n}px` : n : `${t}px`;
84536
84892
  }
84537
- function yJ(e) {
84893
+ function IJ(e) {
84538
84894
  let t = e?.trim();
84539
84895
  return !t || !/^\d+(\.\d+)?$/.test(t) ? null : Number(t);
84540
84896
  }
84541
- var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends bJ {
84897
+ var LJ = typeof HTMLElement < "u" ? HTMLElement : class {}, RJ = class extends LJ {
84542
84898
  static get observedAttributes() {
84543
84899
  return [
84544
84900
  "width",
@@ -84584,7 +84940,7 @@ var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends b
84584
84940
  }
84585
84941
  _applyContainerStyle() {
84586
84942
  let e = this._container;
84587
- e && (e.style.width = vJ(this.getAttribute("width"), pJ), e.style.height = vJ(this.getAttribute("height"), mJ), 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") ?? "");
84588
84944
  }
84589
84945
  _mount() {
84590
84946
  return this._mountPromise = this._doMount(), this._mountPromise;
@@ -84603,7 +84959,7 @@ var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends b
84603
84959
  return;
84604
84960
  }
84605
84961
  if (e !== this._loadToken) {
84606
- _J(r);
84962
+ PJ(r);
84607
84963
  return;
84608
84964
  }
84609
84965
  this._instance = r, this._applyPlaybackOptions();
@@ -84612,7 +84968,7 @@ var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends b
84612
84968
  if (this._sceneFactory) return this._sceneFactory;
84613
84969
  let t = this.getAttribute("src");
84614
84970
  if (!t) return null;
84615
- let n = await hJ.importModule(t);
84971
+ let n = await MJ.importModule(t);
84616
84972
  if (e !== this._loadToken) return null;
84617
84973
  let r = n.default;
84618
84974
  return typeof r == "function" ? r : (qf.error(`<manim-scene> module "${t}" has no default-export factory function.`), null);
@@ -84620,7 +84976,7 @@ var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends b
84620
84976
  _applyPlaybackOptions() {
84621
84977
  let e = this._instance;
84622
84978
  if (!e) return;
84623
- let t = gJ(e);
84979
+ let t = NJ(e);
84624
84980
  t && (e.loop = this.hasAttribute("loop")), t || this._syncSceneControls(e), this.hasAttribute("autoplay") && !e.isPlaying && (t ? e.play() : e.resume());
84625
84981
  }
84626
84982
  _syncSceneControls(e) {
@@ -84630,9 +84986,9 @@ var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends b
84630
84986
  _resizeInstance() {
84631
84987
  let e = this._instance;
84632
84988
  if (!e) return;
84633
- let t = yJ(this.getAttribute("width")), n = yJ(this.getAttribute("height"));
84989
+ let t = IJ(this.getAttribute("width")), n = IJ(this.getAttribute("height"));
84634
84990
  if (t === null || n === null) return;
84635
- let r = gJ(e) ? e.scene : e;
84991
+ let r = NJ(e) ? e.scene : e;
84636
84992
  try {
84637
84993
  r.resize(t, n);
84638
84994
  } catch (e) {
@@ -84648,78 +85004,78 @@ var bJ = typeof HTMLElement < "u" ? HTMLElement : class {}, xJ = class extends b
84648
85004
  }
84649
85005
  this._controls = null;
84650
85006
  }
84651
- this._instance &&= (_J(this._instance), null);
85007
+ this._instance &&= (PJ(this._instance), null);
84652
85008
  }
84653
85009
  _clearContainerChildren() {
84654
85010
  let e = this._container;
84655
85011
  if (e) for (; e.firstChild;) e.removeChild(e.firstChild);
84656
85012
  }
84657
85013
  };
84658
- function SJ(e = "manim-scene") {
84659
- typeof customElements > "u" || typeof HTMLElement > "u" || customElements.get(e) || customElements.define(e, xJ);
85014
+ function zJ(e = "manim-scene") {
85015
+ typeof customElements > "u" || typeof HTMLElement > "u" || customElements.get(e) || customElements.define(e, RJ);
84660
85016
  }
84661
85017
  //#endregion
84662
85018
  //#region src/serialization/registry.ts
84663
- var CJ = /* @__PURE__ */ new Map();
84664
- function wJ(e, t) {
84665
- CJ.set(e, t);
85019
+ var BJ = /* @__PURE__ */ new Map();
85020
+ function VJ(e, t) {
85021
+ BJ.set(e, t);
84666
85022
  }
84667
- function TJ(e) {
84668
- CJ.delete(e);
85023
+ function HJ(e) {
85024
+ BJ.delete(e);
84669
85025
  }
84670
- function EJ(e) {
84671
- return CJ.get(e);
85026
+ function UJ(e) {
85027
+ return BJ.get(e);
84672
85028
  }
84673
- function DJ() {
84674
- return [...CJ.keys()].sort();
85029
+ function WJ() {
85030
+ return [...BJ.keys()].sort();
84675
85031
  }
84676
85032
  //#endregion
84677
85033
  //#region src/serialization/props.ts
84678
- function OJ(e, t) {
85034
+ function GJ(e, t) {
84679
85035
  return typeof e == "number" && Number.isFinite(e) ? e : t;
84680
85036
  }
84681
- function kJ(e, t) {
85037
+ function KJ(e, t) {
84682
85038
  return typeof e == "string" ? e : t;
84683
85039
  }
84684
- function AJ(e, t) {
85040
+ function qJ(e, t) {
84685
85041
  return typeof e == "boolean" ? e : t;
84686
85042
  }
84687
- function jJ(e) {
85043
+ function JJ(e) {
84688
85044
  return typeof e == "string" ? e : void 0;
84689
85045
  }
84690
- function MJ(e) {
85046
+ function YJ(e) {
84691
85047
  return Array.isArray(e) && e.length === 3 && e.every((e) => typeof e == "number" && Number.isFinite(e));
84692
85048
  }
84693
- function NJ(e, t) {
84694
- return MJ(e) ? [
85049
+ function XJ(e, t) {
85050
+ return YJ(e) ? [
84695
85051
  e[0],
84696
85052
  e[1],
84697
85053
  e[2]
84698
85054
  ] : t;
84699
85055
  }
84700
- function PJ(e) {
85056
+ function ZJ(e) {
84701
85057
  if (!Array.isArray(e)) return [];
84702
85058
  let t = [];
84703
- for (let n of e) MJ(n) && t.push([
85059
+ for (let n of e) YJ(n) && t.push([
84704
85060
  n[0],
84705
85061
  n[1],
84706
85062
  n[2]
84707
85063
  ]);
84708
85064
  return t;
84709
85065
  }
84710
- function FJ(e) {
85066
+ function QJ(e) {
84711
85067
  return typeof e == "object" && !!e && !Array.isArray(e);
84712
85068
  }
84713
85069
  //#endregion
84714
85070
  //#region src/serialization/defaults.ts
84715
- function IJ(e) {
84716
- return typeof e == "number" && Number.isFinite(e) ? e : kJ(e, "normal");
85071
+ function $J(e) {
85072
+ return typeof e == "number" && Number.isFinite(e) ? e : KJ(e, "normal");
84717
85073
  }
84718
- function LJ(e) {
85074
+ function eY(e) {
84719
85075
  return e === "left" || e === "right" ? e : "center";
84720
85076
  }
84721
- function RJ() {
84722
- wJ("Circle", {
85077
+ function tY() {
85078
+ VJ("Circle", {
84723
85079
  serialize: (e) => {
84724
85080
  let t = e;
84725
85081
  return {
@@ -84728,10 +85084,10 @@ function RJ() {
84728
85084
  };
84729
85085
  },
84730
85086
  deserialize: (e) => new EO({
84731
- radius: OJ(e.radius, 1),
84732
- numPoints: OJ(e.numPoints, 64)
85087
+ radius: GJ(e.radius, 1),
85088
+ numPoints: GJ(e.numPoints, 64)
84733
85089
  })
84734
- }), wJ("Rectangle", {
85090
+ }), VJ("Rectangle", {
84735
85091
  serialize: (e) => {
84736
85092
  let t = e;
84737
85093
  return {
@@ -84740,13 +85096,13 @@ function RJ() {
84740
85096
  };
84741
85097
  },
84742
85098
  deserialize: (e) => new GE({
84743
- width: OJ(e.width, 2),
84744
- height: OJ(e.height, 1)
85099
+ width: GJ(e.width, 2),
85100
+ height: GJ(e.height, 1)
84745
85101
  })
84746
- }), wJ("Square", {
85102
+ }), VJ("Square", {
84747
85103
  serialize: (e) => ({ sideLength: e._width }),
84748
- deserialize: (e) => new KE({ sideLength: OJ(e.sideLength, 2) })
84749
- }), wJ("Line", {
85104
+ deserialize: (e) => new KE({ sideLength: GJ(e.sideLength, 2) })
85105
+ }), VJ("Line", {
84750
85106
  serialize: (e) => {
84751
85107
  let t = e;
84752
85108
  return {
@@ -84755,27 +85111,27 @@ function RJ() {
84755
85111
  };
84756
85112
  },
84757
85113
  deserialize: (e) => new rD({
84758
- start: NJ(e.start, [
85114
+ start: XJ(e.start, [
84759
85115
  0,
84760
85116
  0,
84761
85117
  0
84762
85118
  ]),
84763
- end: NJ(e.end, [
85119
+ end: XJ(e.end, [
84764
85120
  1,
84765
85121
  0,
84766
85122
  0
84767
85123
  ])
84768
85124
  })
84769
- }), wJ("Dot", {
85125
+ }), VJ("Dot", {
84770
85126
  serialize: (e) => ({ radius: e._radius }),
84771
- deserialize: (e) => new XO({ radius: OJ(e.radius, .08) })
84772
- }), wJ("Polygon", {
85127
+ deserialize: (e) => new XO({ radius: GJ(e.radius, .08) })
85128
+ }), VJ("Polygon", {
84773
85129
  serialize: (e) => ({
84774
85130
  vertices: e.getVertices().map((e) => [...e]),
84775
85131
  closed: e._closed
84776
85132
  }),
84777
85133
  deserialize: (e) => {
84778
- let t = PJ(e.vertices);
85134
+ let t = ZJ(e.vertices);
84779
85135
  return new DO({
84780
85136
  vertices: t.length >= 2 ? t : [[
84781
85137
  0,
@@ -84786,16 +85142,16 @@ function RJ() {
84786
85142
  0,
84787
85143
  0
84788
85144
  ]],
84789
- closed: AJ(e.closed, !0)
85145
+ closed: qJ(e.closed, !0)
84790
85146
  });
84791
85147
  }
84792
- }), wJ("Group", {
85148
+ }), VJ("Group", {
84793
85149
  serialize: () => ({}),
84794
85150
  deserialize: () => new PT()
84795
- }), wJ("VGroup", {
85151
+ }), VJ("VGroup", {
84796
85152
  serialize: () => ({}),
84797
85153
  deserialize: () => new B()
84798
- }), wJ("Text", {
85154
+ }), VJ("Text", {
84799
85155
  serialize: (e) => {
84800
85156
  let t = e;
84801
85157
  return {
@@ -84810,16 +85166,16 @@ function RJ() {
84810
85166
  };
84811
85167
  },
84812
85168
  deserialize: (e) => new Uw({
84813
- text: kJ(e.text, ""),
84814
- fontSize: OJ(e.fontSize, 48),
84815
- fontFamily: kJ(e.fontFamily, "CMU Serif, Georgia, Times New Roman, serif"),
84816
- fontWeight: IJ(e.fontWeight),
84817
- fontStyle: kJ(e.fontStyle, "normal"),
84818
- lineHeight: OJ(e.lineHeight, 1.2),
84819
- letterSpacing: OJ(e.letterSpacing, 0),
84820
- textAlign: LJ(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)
84821
85177
  })
84822
- }), wJ("MathTex", {
85178
+ }), VJ("MathTex", {
84823
85179
  serialize: (e) => {
84824
85180
  let t = e;
84825
85181
  return {
@@ -84829,15 +85185,15 @@ function RJ() {
84829
85185
  };
84830
85186
  },
84831
85187
  deserialize: (e) => new oM({
84832
- latex: kJ(e.latex, ""),
84833
- fontSize: OJ(e.fontSize, 1),
84834
- displayMode: AJ(e.displayMode, !0)
85188
+ latex: KJ(e.latex, ""),
85189
+ fontSize: GJ(e.fontSize, 1),
85190
+ displayMode: qJ(e.displayMode, !0)
84835
85191
  })
84836
85192
  });
84837
85193
  }
84838
85194
  //#endregion
84839
85195
  //#region src/serialization/types.ts
84840
- var zJ = "manim-web-scene", BJ = {
85196
+ var nY = "manim-web-scene", rY = {
84841
85197
  position: [
84842
85198
  0,
84843
85199
  0,
@@ -84854,7 +85210,7 @@ var zJ = "manim-web-scene", BJ = {
84854
85210
  1
84855
85211
  ]
84856
85212
  };
84857
- function VJ(e) {
85213
+ function iY(e) {
84858
85214
  return {
84859
85215
  position: [
84860
85216
  e.position.x,
@@ -84873,98 +85229,98 @@ function VJ(e) {
84873
85229
  ]
84874
85230
  };
84875
85231
  }
84876
- function HJ(e) {
85232
+ function aY(e) {
84877
85233
  let t = {};
84878
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;
84879
85235
  }
84880
- function UJ(e, t) {
84881
- let n = FJ(t) ? t : {}, r = NJ(n.position, BJ.position), i = NJ(n.rotation, BJ.rotation), a = NJ(n.scale, BJ.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);
84882
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]);
84883
85239
  }
84884
- function WJ(e, t) {
84885
- let n = FJ(t) ? t : {};
85240
+ function sY(e, t) {
85241
+ let n = QJ(t) ? t : {};
84886
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);
84887
- let r = jJ(n.strokeColor), i = jJ(n.fillColor);
85243
+ let r = JJ(n.strokeColor), i = JJ(n.fillColor);
84888
85244
  r !== void 0 && (e.color = r), r !== void 0 && (e.strokeColor = r), i !== void 0 && (e.fillColor = i);
84889
85245
  }
84890
- function GJ(e) {
84891
- let t = e.constructor.name, n = EJ(t), r = {
85246
+ function cY(e) {
85247
+ let t = e.constructor.name, n = UJ(t), r = {
84892
85248
  type: t,
84893
85249
  props: n ? n.serialize(e) : {},
84894
- transform: VJ(e),
84895
- style: HJ(e),
84896
- children: e.children.map(GJ)
85250
+ transform: iY(e),
85251
+ style: aY(e),
85252
+ children: e.children.map(cY)
84897
85253
  };
84898
85254
  return n || (r.unknown = !0), r;
84899
85255
  }
84900
- function KJ(e) {
84901
- if (!FJ(e) || e.unknown === !0) return null;
84902
- let t = jJ(e.type);
85256
+ function lY(e) {
85257
+ if (!QJ(e) || e.unknown === !0) return null;
85258
+ let t = JJ(e.type);
84903
85259
  if (t === void 0) return null;
84904
- let n = EJ(t);
85260
+ let n = UJ(t);
84905
85261
  if (!n) return null;
84906
- let r = FJ(e.props) ? e.props : {}, i = n.deserialize(r);
84907
- if (UJ(i, e.transform), WJ(i, e.style), Array.isArray(e.children)) for (let t of e.children) {
84908
- let e = KJ(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);
84909
85265
  e && i.add(e);
84910
85266
  }
84911
85267
  return i;
84912
85268
  }
84913
- function qJ(e) {
85269
+ function uY(e) {
84914
85270
  let t = [];
84915
- for (let n of e.mobjects) t.push(GJ(n));
85271
+ for (let n of e.mobjects) t.push(cY(n));
84916
85272
  return {
84917
- format: zJ,
85273
+ format: nY,
84918
85274
  version: 1,
84919
85275
  mobjects: t
84920
85276
  };
84921
85277
  }
84922
- function JJ(e, t) {
84923
- if (!FJ(e) || !Array.isArray(e.mobjects)) return [];
85278
+ function dY(e, t) {
85279
+ if (!QJ(e) || !Array.isArray(e.mobjects)) return [];
84924
85280
  let n = [];
84925
85281
  for (let r of e.mobjects) {
84926
- let e = KJ(r);
85282
+ let e = lY(r);
84927
85283
  e && (t.add(e), n.push(e));
84928
85284
  }
84929
85285
  return n;
84930
85286
  }
84931
85287
  //#endregion
84932
85288
  //#region src/serialization/urlState.ts
84933
- var YJ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", XJ = (() => {
85289
+ var fY = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", pY = (() => {
84934
85290
  let e = /* @__PURE__ */ new Map();
84935
- for (let t = 0; t < 64; t++) e.set(YJ.charAt(t), t);
85291
+ for (let t = 0; t < 64; t++) e.set(fY.charAt(t), t);
84936
85292
  return e;
84937
85293
  })();
84938
- function ZJ(e) {
85294
+ function mY(e) {
84939
85295
  let t = "";
84940
85296
  for (let n = 0; n < e.length; n += 3) {
84941
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;
84942
- t += YJ.charAt(c >> 18 & 63), t += YJ.charAt(c >> 12 & 63), i && (t += YJ.charAt(c >> 6 & 63)), a && (t += YJ.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));
84943
85299
  }
84944
85300
  return t;
84945
85301
  }
84946
- function QJ(e) {
85302
+ function hY(e) {
84947
85303
  let t = e.length;
84948
85304
  if (t % 4 == 1) return null;
84949
85305
  let n = [];
84950
85306
  for (let r = 0; r < t; r += 4) {
84951
- let i = Math.min(4, t - r), a = XJ.get(e.charAt(r)), o = XJ.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));
84952
85308
  if (a === void 0 || o === void 0) return null;
84953
- let s = i > 2 ? XJ.get(e.charAt(r + 2)) : 0, c = i > 3 ? XJ.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;
84954
85310
  if (s === void 0 || c === void 0) return null;
84955
85311
  let l = a << 18 | o << 12 | s << 6 | c;
84956
85312
  n.push(l >> 16 & 255), i > 2 && n.push(l >> 8 & 255), i > 3 && n.push(l & 255);
84957
85313
  }
84958
85314
  return Uint8Array.from(n);
84959
85315
  }
84960
- function $J(e) {
85316
+ function gY(e) {
84961
85317
  let t = JSON.stringify(e), n = typeof t == "string" ? t : "null";
84962
- return ZJ(new TextEncoder().encode(n));
85318
+ return mY(new TextEncoder().encode(n));
84963
85319
  }
84964
- function eY(e) {
85320
+ function _Y(e) {
84965
85321
  let t = e.startsWith("#") ? e.slice(1) : e;
84966
85322
  if (t.length === 0) return null;
84967
- let n = QJ(t);
85323
+ let n = hY(t);
84968
85324
  if (n === null) return null;
84969
85325
  try {
84970
85326
  let e = new TextDecoder().decode(n);
@@ -84973,18 +85329,18 @@ function eY(e) {
84973
85329
  return null;
84974
85330
  }
84975
85331
  }
84976
- function tY() {
85332
+ function vY() {
84977
85333
  return typeof window < "u" && window.location ? window.location : null;
84978
85334
  }
84979
- function nY() {
85335
+ function yY() {
84980
85336
  return typeof window < "u" && window.history ? window.history : null;
84981
85337
  }
84982
- function rY(e, t = {}) {
84983
- let n = tY();
85338
+ function bY(e, t = {}) {
85339
+ let n = vY();
84984
85340
  if (!n) return;
84985
- let r = $J(e), i = `#${r}`;
85341
+ let r = gY(e), i = `#${r}`;
84986
85342
  if (t.replace) {
84987
- let e = nY();
85343
+ let e = yY();
84988
85344
  if (e && typeof e.replaceState == "function") {
84989
85345
  e.replaceState(e.state ?? null, "", i);
84990
85346
  return;
@@ -84992,29 +85348,29 @@ function rY(e, t = {}) {
84992
85348
  }
84993
85349
  n.hash = r;
84994
85350
  }
84995
- function iY() {
84996
- let e = tY();
84997
- return e ? eY(e.hash) : null;
85351
+ function xY() {
85352
+ let e = vY();
85353
+ return e ? _Y(e.hash) : null;
84998
85354
  }
84999
- function aY(e) {
85355
+ function SY(e) {
85000
85356
  if (typeof window > "u" || typeof window.addEventListener != "function") return () => void 0;
85001
- let t = () => e(iY());
85357
+ let t = () => e(xY());
85002
85358
  return window.addEventListener("hashchange", t), () => window.removeEventListener("hashchange", t);
85003
85359
  }
85004
- function oY(e) {
85360
+ function CY(e) {
85005
85361
  let t = {};
85006
85362
  for (let n of e) t[n.id] = n.get();
85007
85363
  return t;
85008
85364
  }
85009
- function sY(e, t) {
85365
+ function wY(e, t) {
85010
85366
  if (typeof t != "object" || !t || Array.isArray(t)) return !1;
85011
85367
  let n = t, r = !1;
85012
85368
  for (let t of e) Object.prototype.hasOwnProperty.call(n, t.id) && (t.set(n[t.id]), r = !0);
85013
85369
  return r;
85014
85370
  }
85015
- function cY(e, t = {}) {
85016
- let { replace: n = !0, restoreOnBind: r = !0, listen: i = !0 } = t, a = () => oY(e), o = () => rY(a(), { replace: n }), s = () => sY(e, iY()), c = null;
85017
- return r && s(), i && (c = aY((t) => sY(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))), {
85018
85374
  capture: a,
85019
85375
  save: o,
85020
85376
  restore: s,
@@ -85025,13 +85381,13 @@ function cY(e, t = {}) {
85025
85381
  }
85026
85382
  //#endregion
85027
85383
  //#region src/serialization/parametrized.ts
85028
- function lY(e) {
85384
+ function EY(e) {
85029
85385
  return Array.isArray(e) && e.length === 3 && e.every((e) => typeof e == "number" && Number.isFinite(e));
85030
85386
  }
85031
- function uY(e) {
85032
- return typeof e == "number" ? "number" : typeof e == "string" ? "string" : typeof e == "boolean" ? "boolean" : lY(e) ? "vec3" : Array.isArray(e) ? "array" : FJ(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;
85033
85389
  }
85034
- function dY(e, t, n) {
85390
+ function OY(e, t, n) {
85035
85391
  switch (t) {
85036
85392
  case "number":
85037
85393
  if (typeof e == "number" && Number.isFinite(e)) return e;
@@ -85042,46 +85398,46 @@ function dY(e, t, n) {
85042
85398
  return typeof e == "boolean" ? +!!e : n;
85043
85399
  case "string": return typeof e == "string" ? e : typeof e == "number" && Number.isFinite(e) || typeof e == "boolean" ? String(e) : n;
85044
85400
  case "boolean": return typeof e == "boolean" ? e : e === "true" ? !0 : e === "false" ? !1 : typeof e == "number" && Number.isFinite(e) ? e !== 0 : n;
85045
- case "vec3": return NJ(e, lY(n) ? n : [
85401
+ case "vec3": return XJ(e, EY(n) ? n : [
85046
85402
  0,
85047
85403
  0,
85048
85404
  0
85049
85405
  ]);
85050
85406
  case "array": return Array.isArray(e) ? e : n;
85051
- case "object": return FJ(e) ? e : n;
85407
+ case "object": return QJ(e) ? e : n;
85052
85408
  }
85053
85409
  }
85054
- function fY(e, t, n) {
85055
- let r = e.defaultProps[t], i = e.schema?.[t] ?? uY(r);
85056
- return i === null ? n === void 0 ? r : n : dY(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);
85057
85413
  }
85058
- function pY(e, t, n) {
85414
+ function AY(e, t, n) {
85059
85415
  let r = { ...t };
85060
- if (n) for (let t of Object.keys(n)) Object.prototype.hasOwnProperty.call(e.defaultProps, t) && (r[t] = fY(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]));
85061
85417
  return r;
85062
85418
  }
85063
- function mY(e) {
85419
+ function jY(e) {
85064
85420
  return e;
85065
85421
  }
85066
- function hY(e, t) {
85067
- return pY(e, { ...e.defaultProps }, t);
85422
+ function MY(e, t) {
85423
+ return AY(e, { ...e.defaultProps }, t);
85068
85424
  }
85069
- function gY(e) {
85070
- let t = iY();
85071
- return hY(e, FJ(t) ? t : void 0);
85425
+ function NY(e) {
85426
+ let t = xY();
85427
+ return MY(e, QJ(t) ? t : void 0);
85072
85428
  }
85073
- var _Y = async (e, t) => {
85429
+ var PY = async (e, t) => {
85074
85430
  if (typeof fetch != "function") throw Error("renderParametrized: no global fetch available. Pass options.fetch to inject one.");
85075
85431
  let n = await fetch(e, t);
85076
85432
  if (!n.ok) throw Error(`renderParametrized: fetch failed for ${e} (status ${n.status})`);
85077
85433
  return n.json();
85078
85434
  };
85079
- function vY(e, t) {
85435
+ function FY(e, t) {
85080
85436
  let n = t.width ?? e.renderer.width, r = t.height ?? e.renderer.height;
85081
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);
85082
85438
  }
85083
- async function yY(e, t, n = {}) {
85084
- let r = n.fetch ?? _Y, i = hY(e, t), a, o = {};
85439
+ async function IY(e, t, n = {}) {
85440
+ let r = n.fetch ?? PY, i = MY(e, t), a, o = {};
85085
85441
  if (e.calculateMetadata) {
85086
85442
  let t = await e.calculateMetadata({
85087
85443
  props: i,
@@ -85092,7 +85448,7 @@ async function yY(e, t, n = {}) {
85092
85448
  width: t.width,
85093
85449
  height: t.height,
85094
85450
  fps: t.fps
85095
- }, t.props && (i = pY(e, i, t.props));
85451
+ }, t.props && (i = AY(e, i, t.props));
85096
85452
  }
85097
85453
  let s = n.scene;
85098
85454
  s ||= pE.createHeadless({
@@ -85100,9 +85456,9 @@ async function yY(e, t, n = {}) {
85100
85456
  ...o.width === void 0 ? {} : { width: o.width },
85101
85457
  ...o.height === void 0 ? {} : { height: o.height },
85102
85458
  ...o.fps === void 0 ? {} : { targetFps: o.fps }
85103
- }), vY(s, o);
85104
- let c = $J(i);
85105
- return n.writeUrl && rY(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), {
85106
85462
  scene: s,
85107
85463
  props: i,
85108
85464
  data: a,
@@ -85117,10 +85473,10 @@ async function yY(e, t, n = {}) {
85117
85473
  }
85118
85474
  //#endregion
85119
85475
  //#region src/serialization/index.ts
85120
- RJ();
85476
+ tY();
85121
85477
  //#endregion
85122
85478
  //#region src/mobjects/geo/geojson.ts
85123
- function bY(e) {
85479
+ function LY(e) {
85124
85480
  if (e.type === "Polygon") {
85125
85481
  let t = e.coordinates[0];
85126
85482
  return t ? [t] : [];
@@ -85134,26 +85490,26 @@ function bY(e) {
85134
85490
  }
85135
85491
  //#endregion
85136
85492
  //#region src/mobjects/geo/projections.ts
85137
- var xY = Math.PI / 180;
85138
- function SY(e = {}) {
85139
- let { radius: t = 1, centerLon: n = 0, centerLat: r = 0, standardParallel: i = 0 } = e, a = Math.cos(i * xY);
85140
- return ([e, i]) => [(e - n) * xY * t * a, (i - r) * xY * 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];
85141
85497
  }
85142
- function CY(e = {}) {
85498
+ function BY(e = {}) {
85143
85499
  let { radius: t = 1, centerLon: n = 0, maxLatitude: r = 85.05112878 } = e;
85144
85500
  return ([e, i]) => {
85145
- let a = Math.max(-r, Math.min(r, i)) * xY;
85146
- return [(e - n) * xY * 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))];
85147
85503
  };
85148
85504
  }
85149
85505
  //#endregion
85150
85506
  //#region src/mobjects/geo/colorScale.ts
85151
- var wY = ["#0d1b2a", "#4cc9f0"], TY = class {
85507
+ var VY = ["#0d1b2a", "#4cc9f0"], HY = class {
85152
85508
  _palette;
85153
85509
  _domain;
85154
85510
  constructor(e = {}) {
85155
- let { colors: t = wY, domain: n = [0, 1], samples: r = 256 } = e, i = Math.max(2, Math.floor(r));
85156
- this._palette = wh(t.length > 0 ? t : wY, 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]];
85157
85513
  }
85158
85514
  setDomainFromValues(e) {
85159
85515
  let t = Infinity, n = -Infinity;
@@ -85169,7 +85525,7 @@ var wY = ["#0d1b2a", "#4cc9f0"], TY = class {
85169
85525
  let a = Math.round(i * (this._palette.length - 1));
85170
85526
  return this._palette[a];
85171
85527
  }
85172
- }, EY = class extends PT {
85528
+ }, UY = class extends PT {
85173
85529
  _projection;
85174
85530
  _colorScale;
85175
85531
  _regions = [];
@@ -85177,10 +85533,10 @@ var wY = ["#0d1b2a", "#4cc9f0"], TY = class {
85177
85533
  _regionPolygons = [];
85178
85534
  constructor(e) {
85179
85535
  super();
85180
- 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 = SY() } = 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;
85181
85537
  this._projection = l;
85182
85538
  let u = t.features ?? [], d = u.map((e, t) => n(e, t));
85183
- this._colorScale = new TY({
85539
+ this._colorScale = new HY({
85184
85540
  colors: r,
85185
85541
  domain: i
85186
85542
  }), i || this._colorScale.setDomainFromValues(d.filter((e) => typeof e == "number" && Number.isFinite(e))), u.forEach((e, t) => {
@@ -85193,7 +85549,7 @@ var wY = ["#0d1b2a", "#4cc9f0"], TY = class {
85193
85549
  });
85194
85550
  }
85195
85551
  _buildRegion(e, t, n) {
85196
- let r = typeof t == "number" && Number.isFinite(t) ? this._colorScale.colorFor(t) : n.noDataColor, i = bY(e.geometry), a = [];
85552
+ let r = typeof t == "number" && Number.isFinite(t) ? this._colorScale.colorFor(t) : n.noDataColor, i = LY(e.geometry), a = [];
85197
85553
  for (let e of i) {
85198
85554
  let t = this._buildPolygon(e, r, n);
85199
85555
  t && a.push(t);
@@ -85202,7 +85558,7 @@ var wY = ["#0d1b2a", "#4cc9f0"], TY = class {
85202
85558
  this.add(o), this._regions.push(o), this._regionColors.push(r), this._regionPolygons.push(a);
85203
85559
  }
85204
85560
  _buildPolygon(e, t, n) {
85205
- let r = OY(e);
85561
+ let r = GY(e);
85206
85562
  if (r.length < 3) return null;
85207
85563
  let i = new DO({
85208
85564
  vertices: r.map((e) => {
@@ -85238,15 +85594,15 @@ var wY = ["#0d1b2a", "#4cc9f0"], TY = class {
85238
85594
  getColorScale() {
85239
85595
  return this._colorScale;
85240
85596
  }
85241
- }, DY = EY;
85242
- function OY(e) {
85597
+ }, WY = UY;
85598
+ function GY(e) {
85243
85599
  if (e.length < 2) return e;
85244
85600
  let t = e[0], n = e[e.length - 1];
85245
85601
  return t[0] === n[0] && t[1] === n[1] ? e.slice(0, -1) : e;
85246
85602
  }
85247
85603
  //#endregion
85248
85604
  //#region src/mobjects/geo/Globe.ts
85249
- var kY = Math.PI / 180, AY = class extends PT {
85605
+ var KY = Math.PI / 180, qY = class extends PT {
85250
85606
  _radius;
85251
85607
  _center;
85252
85608
  _sphere;
@@ -85294,9 +85650,9 @@ var kY = Math.PI / 180, AY = class extends PT {
85294
85650
  return [...this._plottedPoints];
85295
85651
  }
85296
85652
  arc(e, t, n = {}) {
85297
- 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 = PY(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 = [];
85298
85654
  for (let e = 0; e <= r; e++) {
85299
- let t = MY(c, l, e / r, d, f);
85655
+ let t = YY(c, l, e / r, d, f);
85300
85656
  p.push([
85301
85657
  this._center[0] + s * t[0],
85302
85658
  this._center[1] + s * t[1],
@@ -85313,8 +85669,8 @@ var kY = Math.PI / 180, AY = class extends PT {
85313
85669
  }
85314
85670
  graticule(e = {}) {
85315
85671
  let { latStep: t = 30, lonStep: n = 30, segments: r = 48, color: i = "#8d99ae", lineWidth: a = 1 } = e, o = new PT();
85316
- for (let e = -180; e < 180; e += n) o.add(this._gridLine(FY(e, r), i, a));
85317
- for (let e = -90 + t; e < 90; e += t) o.add(this._gridLine(IY(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));
85318
85674
  return this.add(o), o;
85319
85675
  }
85320
85676
  _gridLine(e, t, n) {
@@ -85326,7 +85682,7 @@ var kY = Math.PI / 180, AY = class extends PT {
85326
85682
  });
85327
85683
  }
85328
85684
  _surfacePoint(e, t, n) {
85329
- let r = jY(e, t);
85685
+ let r = JY(e, t);
85330
85686
  return [
85331
85687
  this._center[0] + n * r[0],
85332
85688
  this._center[1] + n * r[1],
@@ -85334,16 +85690,16 @@ var kY = Math.PI / 180, AY = class extends PT {
85334
85690
  ];
85335
85691
  }
85336
85692
  };
85337
- function jY(e, t) {
85338
- let n = e * kY, r = t * kY, i = Math.cos(n);
85693
+ function JY(e, t) {
85694
+ let n = e * KY, r = t * KY, i = Math.cos(n);
85339
85695
  return [
85340
85696
  i * Math.cos(r),
85341
85697
  i * Math.sin(r),
85342
85698
  Math.sin(n)
85343
85699
  ];
85344
85700
  }
85345
- function MY(e, t, n, r, i) {
85346
- if (i < 1e-9) return NY([
85701
+ function YY(e, t, n, r, i) {
85702
+ if (i < 1e-9) return XY([
85347
85703
  e[0] + (t[0] - e[0]) * n,
85348
85704
  e[1] + (t[1] - e[1]) * n,
85349
85705
  e[2] + (t[2] - e[2]) * n
@@ -85355,7 +85711,7 @@ function MY(e, t, n, r, i) {
85355
85711
  e[2] * a + t[2] * o
85356
85712
  ];
85357
85713
  }
85358
- function NY(e) {
85714
+ function XY(e) {
85359
85715
  let t = Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]) || 1;
85360
85716
  return [
85361
85717
  e[0] / t,
@@ -85363,44 +85719,44 @@ function NY(e) {
85363
85719
  e[2] / t
85364
85720
  ];
85365
85721
  }
85366
- function PY(e, t, n) {
85722
+ function ZY(e, t, n) {
85367
85723
  return Math.max(t, Math.min(n, e));
85368
85724
  }
85369
- function FY(e, t) {
85725
+ function QY(e, t) {
85370
85726
  let n = [];
85371
85727
  for (let r = 0; r <= t; r++) n.push([-90 + 180 * r / t, e]);
85372
85728
  return n;
85373
85729
  }
85374
- function IY(e, t) {
85730
+ function $Y(e, t) {
85375
85731
  let n = [];
85376
85732
  for (let r = 0; r <= t; r++) n.push([e, -180 + 360 * r / t]);
85377
85733
  return n;
85378
85734
  }
85379
85735
  //#endregion
85380
85736
  //#region src/mobjects/ml/mlStyles.ts
85381
- var LY = {
85737
+ var eX = {
85382
85738
  color: Nl,
85383
85739
  fillColor: Nl,
85384
85740
  fillOpacity: .3,
85385
85741
  strokeWidth: 2
85386
- }, RY = {
85742
+ }, tX = {
85387
85743
  color: wl,
85388
85744
  strokeWidth: 1.5,
85389
85745
  opacity: .35
85390
- }, zY = hl;
85391
- function BY(e, t) {
85746
+ }, nX = hl;
85747
+ function rX(e, t) {
85392
85748
  return {
85393
85749
  ...e,
85394
- ...HY(t)
85750
+ ...aX(t)
85395
85751
  };
85396
85752
  }
85397
- function VY(e, t) {
85753
+ function iX(e, t) {
85398
85754
  return {
85399
85755
  ...e,
85400
- ...HY(t)
85756
+ ...aX(t)
85401
85757
  };
85402
85758
  }
85403
- function HY(e) {
85759
+ function aX(e) {
85404
85760
  if (!e) return {};
85405
85761
  let t = {};
85406
85762
  for (let n of Object.keys(e)) e[n] !== void 0 && (t[n] = e[n]);
@@ -85408,7 +85764,7 @@ function HY(e) {
85408
85764
  }
85409
85765
  //#endregion
85410
85766
  //#region src/mobjects/ml/NeuralNetworkLayer.ts
85411
- var UY = class extends B {
85767
+ var oX = class extends B {
85412
85768
  _nodes = [];
85413
85769
  normalizeTransform(e = this._ownMatrix()) {
85414
85770
  return this._flattenAsContainer(e);
@@ -85422,14 +85778,14 @@ var UY = class extends B {
85422
85778
  nodeAnchors() {
85423
85779
  return this._nodes.map((e) => e.getCenter());
85424
85780
  }
85425
- }, WY = class extends UY {
85781
+ }, sX = class extends oX {
85426
85782
  _nodeRadius;
85427
85783
  _nodeSpacing;
85428
85784
  _nodeStyle;
85429
85785
  constructor(e = {}) {
85430
85786
  super();
85431
85787
  let t = e.numNodes ?? 3, n = Math.max(0, Math.floor(t));
85432
- this._nodeRadius = e.nodeRadius ?? .25, this._nodeSpacing = e.nodeSpacing ?? .7, this._nodeStyle = BY(LY, 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);
85433
85789
  }
85434
85790
  _buildNodes(e) {
85435
85791
  if (e === 0) return;
@@ -85458,7 +85814,7 @@ var UY = class extends B {
85458
85814
  };
85459
85815
  //#endregion
85460
85816
  //#region src/mobjects/ml/featureMapStack.ts
85461
- function GY(e) {
85817
+ function cX(e) {
85462
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 = [];
85463
85819
  for (let e = 0; e < a; e++) {
85464
85820
  let t = -o / 2 + e * r, a = o / 2 - e * r, s = new GE({
@@ -85482,15 +85838,15 @@ function GY(e) {
85482
85838
  }
85483
85839
  //#endregion
85484
85840
  //#region src/mobjects/ml/ConvolutionalLayer.ts
85485
- var KY = class extends UY {
85841
+ var lX = class extends oX {
85486
85842
  _width;
85487
85843
  constructor(e = {}) {
85488
85844
  super();
85489
- let { nodes: t, width: n } = GY({
85845
+ let { nodes: t, width: n } = cX({
85490
85846
  numFeatureMaps: e.numFeatureMaps ?? 3,
85491
85847
  mapSize: e.mapSize ?? .5,
85492
85848
  offset: e.offset ?? .15,
85493
- style: BY(LY, e.nodeStyle)
85849
+ style: rX(eX, e.nodeStyle)
85494
85850
  });
85495
85851
  this._width = n;
85496
85852
  for (let e of t) this._nodes.push(e), this.add(e);
@@ -85498,15 +85854,15 @@ var KY = class extends UY {
85498
85854
  layerWidth() {
85499
85855
  return this._width;
85500
85856
  }
85501
- }, qY = class extends UY {
85857
+ }, uX = class extends oX {
85502
85858
  _width;
85503
85859
  constructor(e = {}) {
85504
85860
  super();
85505
- let { nodes: t, width: n } = GY({
85861
+ let { nodes: t, width: n } = cX({
85506
85862
  numFeatureMaps: e.numFeatureMaps ?? 3,
85507
85863
  mapSize: e.mapSize ?? .3,
85508
85864
  offset: e.offset ?? .12,
85509
- style: BY(LY, e.nodeStyle)
85865
+ style: rX(eX, e.nodeStyle)
85510
85866
  });
85511
85867
  this._width = n;
85512
85868
  for (let e of t) this._nodes.push(e), this.add(e);
@@ -85514,7 +85870,7 @@ var KY = class extends UY {
85514
85870
  layerWidth() {
85515
85871
  return this._width;
85516
85872
  }
85517
- }, JY = class extends UY {
85873
+ }, dX = class extends oX {
85518
85874
  _cols;
85519
85875
  _cellSize;
85520
85876
  _grid;
@@ -85522,7 +85878,7 @@ var KY = class extends UY {
85522
85878
  super();
85523
85879
  let t = Math.max(0, Math.floor(e.rows ?? 3));
85524
85880
  this._cols = Math.max(0, Math.floor(e.cols ?? 3)), this._cellSize = e.cellSize ?? .25;
85525
- let n = BY(LY, e.nodeStyle);
85881
+ let n = rX(eX, e.nodeStyle);
85526
85882
  this._grid = this._buildGrid(t, this._cols, n), this.add(this._grid), t > 0 && this._cols > 0 && this._nodes.push(this._grid);
85527
85883
  }
85528
85884
  _buildGrid(e, t, n) {
@@ -85547,13 +85903,13 @@ var KY = class extends UY {
85547
85903
  layerWidth() {
85548
85904
  return Math.max(this._cols, 1) * this._cellSize;
85549
85905
  }
85550
- }, YY = class extends B {
85906
+ }, fX = class extends B {
85551
85907
  _layers;
85552
85908
  _connections = [];
85553
85909
  _stages = [];
85554
85910
  _edgeStyle;
85555
85911
  constructor(e = [], t = {}) {
85556
- super(), this._layers = [...e], this._edgeStyle = VY(RY, t.edgeStyle);
85912
+ super(), this._layers = [...e], this._edgeStyle = iX(tX, t.edgeStyle);
85557
85913
  let n = t.layerSpacing ?? 1, r = t.connectAdjacent ?? !0;
85558
85914
  this._placeLayers(n), r && this._buildConnections();
85559
85915
  for (let e of this._connections) this.add(e);
@@ -85600,7 +85956,7 @@ var KY = class extends UY {
85600
85956
  getConnectionStages() {
85601
85957
  return this._stages.map((e) => [...e]);
85602
85958
  }
85603
- }, XY = class extends V {
85959
+ }, pX = class extends V {
85604
85960
  activation = 0;
85605
85961
  _activationColor;
85606
85962
  _peakOpacity;
@@ -85611,7 +85967,7 @@ var KY = class extends UY {
85611
85967
  super(e, {
85612
85968
  duration: t.duration ?? 1,
85613
85969
  rateFunc: t.rateFunc ?? (t.restore ? hg : void 0)
85614
- }), this._activationColor = t.activationColor ?? zY, 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;
85615
85971
  }
85616
85972
  begin() {
85617
85973
  super.begin(), this._baseOpacity = this.mobject.opacity, this._baseColor = this.mobject.color, this.activation = 0;
@@ -85627,12 +85983,12 @@ var KY = class extends UY {
85627
85983
  this._restore ? (this.mobject.setStrokeOpacity(this._baseOpacity), this.mobject.setColor(this._baseColor), this.activation = 0) : this.activation = 1, this.mobject._markDirty(), super.finish();
85628
85984
  }
85629
85985
  };
85630
- function ZY(e, t) {
85631
- return new XY(e, t);
85986
+ function mX(e, t) {
85987
+ return new pX(e, t);
85632
85988
  }
85633
85989
  //#endregion
85634
85990
  //#region src/mobjects/ml/forwardPass.ts
85635
- function QY(e, t, n) {
85991
+ function hX(e, t, n) {
85636
85992
  let r = e.getConnectionStages(), i = t ? [...r].reverse() : r, a = {
85637
85993
  duration: n.gapDuration ?? 1,
85638
85994
  activationColor: n.activationColor,
@@ -85640,13 +85996,13 @@ function QY(e, t, n) {
85640
85996
  restore: n.restore,
85641
85997
  rateFunc: n.rateFunc
85642
85998
  };
85643
- return i.map((e) => new HT(e.map((e) => new XY(e, a)), { lagRatio: 0 }));
85999
+ return i.map((e) => new HT(e.map((e) => new pX(e, a)), { lagRatio: 0 }));
85644
86000
  }
85645
- function $Y(e, t = {}) {
85646
- return new pH(QY(e, !1, t), { lagRatio: t.lagRatio ?? 1 });
86001
+ function gX(e, t = {}) {
86002
+ return new pH(hX(e, !1, t), { lagRatio: t.lagRatio ?? 1 });
85647
86003
  }
85648
- function eX(e, t = {}) {
85649
- return new pH(QY(e, !0, t), { lagRatio: t.lagRatio ?? 1 });
86004
+ function _X(e, t = {}) {
86005
+ return new pH(hX(e, !0, t), { lagRatio: t.lagRatio ?? 1 });
85650
86006
  }
85651
86007
  //#endregion
85652
- 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, EY as ChoroplethMap, EO as Circle, OU as Circumscribe, rW as Clickable, UB as ClockwiseTransform, GM as Code, TY 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, KY 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, zY 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, RY 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, LY 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, XY as EdgePulse, fk as Elbow, IO as Ellipse, Mk as Exclusion, DG as ExportSettingsPanel, SG as FPS_PRESETS, wB as FadeIn, EB as FadeOut, iV as FadeToColor, LB as FadeTransform, zB as FadeTransformPieces, WY 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, DY as GeoMap, MW as GifExporter, jH as GlitchIn, AY 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, aK 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, JY 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, 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, rK as ManimColor, xJ 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, AK as Munits, Vu as NORMAL, YY as NeuralNetwork, UY 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, DW as PanZoomControls, Rj as Paragraph, hj as ParametricFunction, UP as ParametricSurface, Mz as ParticleSystem, kL as PatternVMobject, jO as Pentagon, MK as Percent, $V as PhaseFlow, Bz as PhysicsWorld, VN as PieChart, OK as Pixels, QU as PlaybackControls, WG as Player, BG as PlayerController, OG as PlayerUI, Dz as PointCloudDot, Ez as PointMobject, QM as PolarPlane, DO as Polygon, MO as Polygram, NP as Polyhedron, qY as PoolingLayer, _O as PostProcessingPipeline, JP as Prism, RU as Pulse, CG 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, xG as RESOLUTION_PRESETS, iK as RGBA, Md as RIGHT, kN as RadarChart, cK 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, dJ 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, FW 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, ZW 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, uK as adjacentNTuples, dK as adjacentPairs, Nj as alignmentToOffset, bK as allElementsAreInstances, CW as allOf, WH as always, HH as alwaysRedraw, JH as alwaysRotate, qH as alwaysShift, GK as angleAxisFromQuaternion, $K as angleBetweenVectors, QK 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, eX as backwardPass, iI as batch, vB as benzene, Fq as bezier, Rq as bezierRemap, Tq as binarySearch, wR as binaryTree, oI as bindSignalToTracker, cY as bindStateToUrl, ER as bipartiteGraph, ap as blendModeToThree, UU as blink, _N as boxSummary, CU as broadcast, GY as buildFeatureMapStack, ww as buildStyledTextLines, fq as cartesianToSpherical, oq as centerOfMass, eU as changeDecimalToValue, lU as changeSpeed, $H as changingDecimal, Eq as choose, $W as chooseVideoExporterStrategy, $N as chordMatrixFromFlows, kU as circumscribe, TT as clearAnimationOverrides, Dq as clip, Cq 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, tq as compassDirections, bR as completeGraph, aq as complexFuncToR3Func, tH as complexHomotopy, rq 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, xK as concatenateLists, wq 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, NW as createGifExporter, sO as createLiveRegion, tI as createSignal, IW as createVideoExporter, QW as createWebCodecsExporter, Zd as cross, Zd as crossVec, VK as cross2d, Qh as cubicBezier, XH as cycleAnimation, nN as cycleColor, xR as cycleGraph, ZB as cyclicReplace, eY as decodeStateFromHash, mY as defineParametrizedScene, DF as deriveBasePath, kF as deriveMtlUrl, cO as describeMobject, KT as deserializeMobject, JJ as deserializeScene, KJ as deserializeSceneMobject, IF as detectModelFormat, Fk as difference, Xd as dotVec, vg as doubleSmooth, JW 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, ZY as edgePulse, dU as emphasizeRegion, $J as encodeStateToHash, EC as ensureKatexStyles, SY as equirectangular, yB as ethanol, Ik as exclusion, jg as exponentialDecay, YW as exportAndDownloadPNG, dG as exportAndDownloadSVG, vG as exportAndDownloadSlidesToPDF, GW as exportFramePNG, qW as exportPNGSequence, uG as exportSVG, _G as exportSlidesToPDF, bG as exportSlidesToPPTX, fN as extent, bY as exteriorRings, NK 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, lq as findIntersection, DU as flash, LU as focusOn, cR as forceDirectedLayout, QD as formatVttTimestamp, $Y as forwardPass, vj as fourierCoefficients, Sj as fourierSeriesApproximation, rJ as get3dVmobEndCorner, tJ as get3dVmobEndCornerIndex, oJ as get3dVmobEndCornerUnitNormal, $q as get3dVmobGradientStartAndEndPoints, nJ as get3dVmobStartCorner, eJ as get3dVmobStartCornerIndex, aJ as get3dVmobStartCornerUnitNormal, iJ as get3dVmobUnitNormal, tp as getActiveTheme, CT as getAnimationOverride, fI as getDetText, XG as getFeatureFlags, cE as getReducedMotionRunTime, DJ as getSerializableTypes, EJ as getSerializer, lK as getShadedRgb, vh as getSmoothCubicBezierHandlePoints, bD as getSpeechSynthesizer, ep as getTheme, np as getThemeNames, eq as getUnitNormal, gq as getWindingNumber, MH as glitchIn, TR as gridGraph, aH as growArrow, IV as growFromCenter, sH as growFromEdge, lH as growFromPoint, wT as hasAnimationOverride, TK as hashObj, _A as hexToRgb, lN as histogramBins, eH as homotopy, AA as hsvToRgb, FK 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, zq as isClosed, qG 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, cq as lineIntersection, ig as linear, uU as linearSpeedRamp, Ag as lingering, rf as linspace, pK as listDifferenceUpdate, mK as listUpdate, SK as listify, qf as logger, VH as maintainPositionRelativeTo, iW as makeClickable, eW as makeDraggable, gK as makeEven, wK as makeEvenByCycling, nW as makeHoverable, vW as makeMatrixTracker, cW as makeMovablePoint, OW as makePanZoomControls, pW as makeSlider, hJ as manimElementInternals, hF as marchingCubes, ij as marchingSquares, xB as masterTimeline, Mq as matchInterpolate, pI as matrixToMobject, mI as matrixToTexString, aN as mean, CY as mercator, _B as methane, Aq as mid, sq as midpoint, WV as moveAlongPath, yT as moveToTarget, BV as moveToTargetPosition, pN as niceAxisRange, BK as normSquared, HK as normalize, fB as normalizeElement, $d as normalizeVec, kg as notQuiteThere, RA as oklabToColor, zA as oklabToOklch, HA as oklchToColor, BA as oklchToOklab, Wf as onLog, aY 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, Sq as pathAlongArc, xq as pathAlongCircles, SR as pathGraph, qz as pendulum, mq as perpendicularBisector, rH as phaseFlow, pj as phasePortraitColor, Xq as pointLiesOnBezier, yK as powerset, aE as prefersReducedMotion, WC as preloadMathJax, hM as preloadTypst, ET as prepareAnimation, IK as printFamily, Yq as proportionsAlongBezierCurveForPoint, gY as propsFromUrl, zU as pulse, TG as qualityToBitrate, sN as quantile, KK as quaternionConjugate, WK as quaternionFromAngleAxis, UK as quaternionMult, iq as r3ToComplex, kA as randomBrightColor, OA as randomColor, XL as randomSpringPositions, iY as readStateFromUrl, yj as reconstructSample, dE as reducedRunTime, fJ as registerFont, SJ as registerManimElement, wJ as registerSerializableMobject, Qf as registerTheme, nq as regularVertices, _U as remove, fK as removeListRedundancies, CK as removeNones, jI as removeTextLetterByLetter, GC as renderLatexToSVG, yY as renderParametrized, _M as renderTypstToSVG, _T as replacementTransform, YG as resetFeatureFlags, lE as resetReducedMotion, rp as resetThemes, Lz as resolveBounds, Rz as resolveCircleCircle, VY as resolveEdgeStyle, mH as resolveGlyphs, BY as resolveNodeStyle, SL as resolvePatternFill, hY as resolveProps, EG as resolveResolution, rV as restore, $T as restoreMobjectState, PK as restructureListToExcludeCertainFamilyMembers, bg as reverse, SA as rgbToColor, gA as rgbToHex, jA as rgbToHsv, CA as rgbaToColor, SH as riseByLetter, jV as rotate, XK as rotateVector, xU as rotating, JK as rotationAboutZ, qK as rotationMatrix, YK 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, lG as sceneToSVG, GT as serializeMobject, qJ as serializeScene, GJ as serializeSceneMobject, JG 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, uq as shoelace, dq 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, Oq 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, pq as sphericalToCartesian, dH as spinInFromNothing, XI as spiralIn, Iq 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, bq as straightPath, _K as stretchArrayToLength, Yd as subVec, Lq as subdivideBezier, NH as succession, GL as svgMobject, PC as svgToVMobjects, JB as swap, KP as texturedSphere, hg as thereAndBack, Eg as thereAndBackWithPause, hq 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, hK as tuplify, YH as turnAnimationIntoUpdater, gH as typeOn, LI as typeWithCursor, CI as uncreate, Nk as union, vK as uniqChain, ef as unitPerpendicularTo, TJ 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, rY as writeStateToUrl, ZK 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 };