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