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