manim-web 0.3.24 → 0.10.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.
Files changed (120) hide show
  1. package/README.md +5 -1
  2. package/dist/{MathJaxBundle-xSidSV0E.js → MathJaxBundle-BSrlS0Dh.js} +3338 -3320
  3. package/dist/animation/Always.d.ts +72 -0
  4. package/dist/animation/Always.d.ts.map +1 -0
  5. package/dist/animation/AlwaysRedraw.d.ts +15 -0
  6. package/dist/animation/AlwaysRedraw.d.ts.map +1 -0
  7. package/dist/animation/Animation.d.ts +9 -0
  8. package/dist/animation/Animation.d.ts.map +1 -1
  9. package/dist/animation/AnimationUtilities.d.ts +25 -0
  10. package/dist/animation/AnimationUtilities.d.ts.map +1 -1
  11. package/dist/animation/creation/Create.d.ts +40 -11
  12. package/dist/animation/creation/Create.d.ts.map +1 -1
  13. package/dist/animation/transform/PointMorphStrategy.d.ts +6 -0
  14. package/dist/animation/transform/PointMorphStrategy.d.ts.map +1 -1
  15. package/dist/animation/transform/Transform.d.ts.map +1 -1
  16. package/dist/animation/transform/TransformPairing.d.ts +17 -0
  17. package/dist/animation/transform/TransformPairing.d.ts.map +1 -1
  18. package/dist/animation/updaters.d.ts +69 -0
  19. package/dist/animation/updaters.d.ts.map +1 -0
  20. package/dist/compiler-CfW6eH2M.js +2 -0
  21. package/dist/constants/index.d.ts +1 -0
  22. package/dist/constants/index.d.ts.map +1 -1
  23. package/dist/constants/parity.d.ts +78 -0
  24. package/dist/constants/parity.d.ts.map +1 -0
  25. package/dist/core/Mobject.d.ts +48 -3
  26. package/dist/core/Mobject.d.ts.map +1 -1
  27. package/dist/core/MobjectTraversal.d.ts +7 -0
  28. package/dist/core/MobjectTraversal.d.ts.map +1 -1
  29. package/dist/core/MobjectTypes.d.ts +15 -0
  30. package/dist/core/MobjectTypes.d.ts.map +1 -1
  31. package/dist/core/Scene.d.ts +14 -0
  32. package/dist/core/Scene.d.ts.map +1 -1
  33. package/dist/core/SpecialThreeDScene.d.ts +64 -0
  34. package/dist/core/SpecialThreeDScene.d.ts.map +1 -0
  35. package/dist/core/VMobject.d.ts +143 -0
  36. package/dist/core/VMobject.d.ts.map +1 -1
  37. package/dist/core/VMobjectColorGradient.d.ts +20 -0
  38. package/dist/core/VMobjectColorGradient.d.ts.map +1 -0
  39. package/dist/core/VMobjectCurveMath.d.ts +128 -0
  40. package/dist/core/VMobjectCurveMath.d.ts.map +1 -0
  41. package/dist/core/VMobjectRendering.d.ts +38 -1
  42. package/dist/core/VMobjectRendering.d.ts.map +1 -1
  43. package/dist/core/VMobjectRoundCorners.d.ts +37 -0
  44. package/dist/core/VMobjectRoundCorners.d.ts.map +1 -0
  45. package/dist/esm-CiMKSfxz.js +1273 -0
  46. package/dist/export/GifExporter.d.ts +4 -0
  47. package/dist/export/GifExporter.d.ts.map +1 -1
  48. package/dist/global-compiler-D_nF-JaV.js +8 -0
  49. package/dist/global-renderer-gyshX_QF.js +8 -0
  50. package/dist/index.d.ts +25 -4
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +2 -2
  53. package/dist/integrations/react.js +16 -16
  54. package/dist/integrations/vue.js +15 -15
  55. package/dist/manim-web.browser.js +9253 -6422
  56. package/dist/mobjects/geometry/AngleShapes.d.ts.map +1 -1
  57. package/dist/mobjects/geometry/ArcPolygon.d.ts +30 -0
  58. package/dist/mobjects/geometry/ArcPolygon.d.ts.map +1 -1
  59. package/dist/mobjects/geometry/DashedLine.d.ts.map +1 -1
  60. package/dist/mobjects/geometry/Label.d.ts +32 -0
  61. package/dist/mobjects/geometry/Label.d.ts.map +1 -0
  62. package/dist/mobjects/geometry/index.d.ts +2 -1
  63. package/dist/mobjects/geometry/index.d.ts.map +1 -1
  64. package/dist/mobjects/graphing/Axes.d.ts +73 -6
  65. package/dist/mobjects/graphing/Axes.d.ts.map +1 -1
  66. package/dist/mobjects/graphing/CoordinateSystem.d.ts +40 -0
  67. package/dist/mobjects/graphing/CoordinateSystem.d.ts.map +1 -0
  68. package/dist/mobjects/graphing/axes-calculus.d.ts +79 -0
  69. package/dist/mobjects/graphing/axes-calculus.d.ts.map +1 -0
  70. package/dist/mobjects/graphing/index.d.ts +3 -0
  71. package/dist/mobjects/graphing/index.d.ts.map +1 -1
  72. package/dist/mobjects/graphing/scale.d.ts +72 -0
  73. package/dist/mobjects/graphing/scale.d.ts.map +1 -0
  74. package/dist/mobjects/text/MathJaxRenderer.d.ts +5 -0
  75. package/dist/mobjects/text/MathJaxRenderer.d.ts.map +1 -1
  76. package/dist/mobjects/text/MathTex.d.ts +23 -0
  77. package/dist/mobjects/text/MathTex.d.ts.map +1 -1
  78. package/dist/mobjects/text/MathTexImage.d.ts.map +1 -1
  79. package/dist/mobjects/text/Text.d.ts +53 -0
  80. package/dist/mobjects/text/Text.d.ts.map +1 -1
  81. package/dist/mobjects/text/Typst.d.ts +113 -0
  82. package/dist/mobjects/text/Typst.d.ts.map +1 -0
  83. package/dist/mobjects/text/TypstRenderer.d.ts +57 -0
  84. package/dist/mobjects/text/TypstRenderer.d.ts.map +1 -0
  85. package/dist/mobjects/text/index.d.ts +5 -2
  86. package/dist/mobjects/text/index.d.ts.map +1 -1
  87. package/dist/mobjects/text/katexStyles.d.ts +5 -0
  88. package/dist/mobjects/text/katexStyles.d.ts.map +1 -1
  89. package/dist/mobjects/text/registerFont.d.ts +38 -0
  90. package/dist/mobjects/text/registerFont.d.ts.map +1 -0
  91. package/dist/mobjects/text/textStyleRuns.d.ts +111 -0
  92. package/dist/mobjects/text/textStyleRuns.d.ts.map +1 -0
  93. package/dist/mobjects/three-d/ThreeDAxes.d.ts +37 -4
  94. package/dist/mobjects/three-d/ThreeDAxes.d.ts.map +1 -1
  95. package/dist/mobjects/three-d/threeDVmobUtils.d.ts +25 -0
  96. package/dist/mobjects/three-d/threeDVmobUtils.d.ts.map +1 -0
  97. package/dist/renderer-DR_79fB0.js +2 -0
  98. package/dist/{src-Cc3xTIkV.js → src-D29Z9zIa.js} +8796 -5974
  99. package/dist/utils/ManimColor.d.ts +163 -0
  100. package/dist/utils/ManimColor.d.ts.map +1 -0
  101. package/dist/utils/bezier.d.ts +95 -0
  102. package/dist/utils/bezier.d.ts.map +1 -0
  103. package/dist/utils/color.d.ts +99 -0
  104. package/dist/utils/color.d.ts.map +1 -0
  105. package/dist/utils/debug.d.ts +36 -0
  106. package/dist/utils/debug.d.ts.map +1 -0
  107. package/dist/utils/iterables.d.ts +162 -0
  108. package/dist/utils/iterables.d.ts.map +1 -0
  109. package/dist/utils/paths.d.ts +38 -0
  110. package/dist/utils/paths.d.ts.map +1 -0
  111. package/dist/utils/simpleFunctions.d.ts +26 -0
  112. package/dist/utils/simpleFunctions.d.ts.map +1 -0
  113. package/dist/utils/spaceOps.d.ts +119 -0
  114. package/dist/utils/spaceOps.d.ts.map +1 -0
  115. package/dist/utils/unit.d.ts +28 -0
  116. package/dist/utils/unit.d.ts.map +1 -0
  117. package/dist/wasm-CIlzm7By.js +76 -0
  118. package/dist/wasm-pack-shim-B3C4KoWa.js +1688 -0
  119. package/dist/wasm-pack-shim-BgTFpSvJ.js +911 -0
  120. package/package.json +11 -7
@@ -0,0 +1,72 @@
1
+ import { Mobject } from '../core/Mobject';
2
+ /**
3
+ * The keys of `M` whose values are methods.
4
+ *
5
+ * Used to constrain `methodName` so only callable members of a mobject are
6
+ * accepted. The predicate uses `never[]` parameters so a method with concrete
7
+ * parameter types (for example `setX(x: number)`) still matches.
8
+ */
9
+ export type MethodKeys<M> = {
10
+ [K in keyof M]: M[K] extends (...args: never[]) => unknown ? K : never;
11
+ }[keyof M];
12
+ /**
13
+ * Re-apply a mobject method each frame with arguments from live getters.
14
+ *
15
+ * Adds an updater that calls `mob[methodName]` with the current value of each
16
+ * getter. Use it to continually set a property from a value that changes over
17
+ * time, for example a `ValueTracker`.
18
+ *
19
+ * @param mob - The mobject that owns the method.
20
+ * @param methodName - The name of a method on `mob`.
21
+ * @param argGetters - Zero or more getters; each is called every frame.
22
+ * @returns `mob`, for chaining.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const tracker = new ValueTracker(0);
27
+ * fAlways(dot, 'setX', () => tracker.getValue());
28
+ * // Each frame: dot.setX(tracker.getValue()).
29
+ * ```
30
+ */
31
+ export declare function fAlways<M extends Mobject>(mob: M, methodName: MethodKeys<M>, ...argGetters: Array<() => unknown>): M;
32
+ /**
33
+ * Re-apply a mobject method each frame with fixed arguments.
34
+ *
35
+ * Adds an updater that calls `mob[methodName]` with the same arguments on every
36
+ * frame. Use it to keep a property pinned to a fixed value against other
37
+ * updaters that would change it.
38
+ *
39
+ * @param mob - The mobject that owns the method.
40
+ * @param methodName - The name of a method on `mob`.
41
+ * @param args - Zero or more fixed arguments, re-applied every frame.
42
+ * @returns `mob`, for chaining.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * always(dot, 'setX', 2);
47
+ * // Each frame: dot.setX(2).
48
+ * ```
49
+ */
50
+ export declare function always<M extends Mobject>(mob: M, methodName: MethodKeys<M>, ...args: unknown[]): M;
51
+ /**
52
+ * Assert that `(mob, methodName)` names a method of a Mobject (CE
53
+ * `assert_is_mobject_method`).
54
+ *
55
+ * CE takes one bound method and recovers the receiver from `method.__self__`.
56
+ * A JavaScript method reference loses its `this`, so this repo validates the
57
+ * `(mobject, methodName)` pair that `always` / `fAlways` already accept. The
58
+ * check throws a clear `Error` when `mob` is not a `Mobject`, or when
59
+ * `mob[methodName]` is not a function.
60
+ *
61
+ * @param mob - The value that must be a `Mobject`.
62
+ * @param methodName - The name that must resolve to a method on `mob`.
63
+ * @throws Error when `mob` is not a `Mobject` or `methodName` is not a method.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * assertIsMobjectMethod(dot, 'setX'); // ok
68
+ * assertIsMobjectMethod(dot, 'nope'); // throws
69
+ * ```
70
+ */
71
+ export declare function assertIsMobjectMethod(mob: unknown, methodName: string): void;
72
+ //# sourceMappingURL=Always.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Always.d.ts","sourceRoot":"","sources":["../../src/animation/Always.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK;CACvE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EACvC,GAAG,EAAE,CAAC,EACN,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,GAClC,CAAC,CASH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EACtC,GAAG,EAAE,CAAC,EACN,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,CAAC,CAMH;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAW5E"}
@@ -0,0 +1,15 @@
1
+ import { Mobject } from '../core/Mobject';
2
+ /**
3
+ * Create a mobject that redraws itself on every frame.
4
+ *
5
+ * @param fn - Factory that returns the mobject for the current frame.
6
+ * @returns The mobject, with an updater that rebuilds it each frame.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const label = alwaysRedraw(() => new Text(`x = ${dot.getCenter()[0].toFixed(2)}`));
11
+ * scene.add(label);
12
+ * ```
13
+ */
14
+ export declare function alwaysRedraw(fn: () => Mobject): Mobject;
15
+ //# sourceMappingURL=AlwaysRedraw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlwaysRedraw.d.ts","sourceRoot":"","sources":["../../src/animation/AlwaysRedraw.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,OAAO,CAMvD"}
@@ -71,6 +71,15 @@ export declare abstract class Animation {
71
71
  * @param alpha Progress from 0 (start) to 1 (end)
72
72
  */
73
73
  abstract interpolate(alpha: number): void;
74
+ /**
75
+ * Manim CE's `get_sub_alpha`: remaps a global progress `alpha` into the
76
+ * local progress of family member `index` (of `count`) under a `lagRatio`
77
+ * stagger. With `lagRatio <= 0` (or a single member), every member tracks
78
+ * `alpha` directly. Subclasses that stagger across a mobject's family
79
+ * (e.g. Create) should index this by `familyMembersWithPoints()`, never by
80
+ * rendering-layer primitives.
81
+ */
82
+ protected getSubAlpha(alpha: number, index: number, count: number, lagRatio: number): number;
74
83
  /**
75
84
  * Update the animation for the current frame.
76
85
  * @param _dt Time delta since last frame (unused, but available for subclasses)
@@ -1 +1 @@
1
- {"version":3,"file":"Animation.d.ts","sourceRoot":"","sources":["../../src/animation/Animation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAU,MAAM,mBAAmB,CAAC;AAIzD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACtC;AAED,8BAAsB,SAAS;IAC7B,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,wDAAwD;IACxD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C,yCAAyC;IACzC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAS;IAEvC,uCAAuC;IACvC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAErC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAS;IAEzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAwB;gBAEtC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB;IAQ5D;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IA+Bb;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACH,MAAM,IAAI,IAAI;IAId;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAM7C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAoB9C;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;OAIG;IACH,KAAK,IAAI,IAAI;IA2Bb;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAEhC;CACF"}
1
+ {"version":3,"file":"Animation.d.ts","sourceRoot":"","sources":["../../src/animation/Animation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAU,MAAM,mBAAmB,CAAC;AAIzD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACtC;AAED,8BAAsB,SAAS;IAC7B,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,wDAAwD;IACxD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C,yCAAyC;IACzC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAS;IAEvC,uCAAuC;IACvC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;IAErC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAS;IAEzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAwB;gBAEtC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB;IAQ5D;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IA+Bb;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACH,MAAM,IAAI,IAAI;IAId;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAM7C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzC;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ5F;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAoB9C;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;OAIG;IACH,KAAK,IAAI,IAAI;IA2Bb;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED;;OAEG;IACH,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAEhC;CACF"}
@@ -23,6 +23,31 @@ export type AnimationOverrideFunc = (mobject: Mobject, animArgs?: AnimationOptio
23
23
  * ```
24
24
  */
25
25
  export declare function overrideAnimation(methodName: string, className: string, animFunc: AnimationOverrideFunc): void;
26
+ /**
27
+ * overrideAnimate - Register a custom `.animate` behavior for a method, by class.
28
+ *
29
+ * TS-idiomatic form of CE's `@override_animate(method)` decorator. CE decorates
30
+ * a method so that `mob.animate.method()` plays a custom animation instead of
31
+ * interpolating the method's effect. A decorator needs a target, and this repo
32
+ * does not use TypeScript decorators, so the override is registered against the
33
+ * mobject class and method name. `AnimateProxy.begin` consults this registry
34
+ * (via `getAnimationOverride`) and uses the factory when exactly that method is
35
+ * recorded, so wiring the hook is not needed.
36
+ *
37
+ * The class key matches the lookup in `AnimateProxy`: the static `className`
38
+ * (survives minification) when present, otherwise `mobjectClass.name`.
39
+ *
40
+ * @param mobjectClass - The mobject class the override applies to.
41
+ * @param methodName - The method whose `.animate` behavior is overridden.
42
+ * @param animationFactory - Builds the animation played for `mob.animate[methodName]()`.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * overrideAnimate(MyMobject, 'clearContent', (mob, args) => new Uncreate(mob, args));
47
+ * myMobject.animate.clearContent(); // plays Uncreate instead of a Transform
48
+ * ```
49
+ */
50
+ export declare function overrideAnimate<M extends Mobject>(mobjectClass: abstract new (...args: never[]) => M, methodName: string, animationFactory: AnimationOverrideFunc): void;
26
51
  /**
27
52
  * getAnimationOverride - Get registered animation override for a method
28
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationUtilities.d.ts","sourceRoot":"","sources":["../../src/animation/AnimationUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,KAAK,SAAS,CAAC;AAOjG;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,qBAAqB,GAC9B,IAAI,CAKN;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,CAgBpF"}
1
+ {"version":3,"file":"AnimationUtilities.d.ts","sourceRoot":"","sources":["../../src/animation/AnimationUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,gBAAgB,KAAK,SAAS,CAAC;AAOjG;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,qBAAqB,GAC9B,IAAI,CAKN;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAC/C,YAAY,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAClD,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,qBAAqB,GACtC,IAAI,CAGN;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,CAgBpF"}
@@ -7,13 +7,32 @@ import { Line2 } from 'three/examples/jsm/lines/Line2.js';
7
7
  * data lives in `.data.array`, or a plain BufferAttribute with `.array`.
8
8
  */
9
9
  export declare function getLine2TotalLength(child: Line2): number;
10
+ /**
11
+ * Reveal (or erase) a Line2's dashed stroke up to `visibleLength` out of
12
+ * `totalLen`. When nothing is revealed yet (or nothing remains), the line is
13
+ * hidden outright instead of being left at `dashSize=0`.
14
+ *
15
+ * Manim CE's partial-stroke reveal (pointwise_become_partial) has no
16
+ * unrevealed-tip artifact because the undrawn portion has no geometry at
17
+ * all. Three.js's LineMaterial dashed-line discard test degenerates at
18
+ * `dashSize=0` (see its own `// todo - FIX` comment at
19
+ * `three/examples/jsm/lines/LineMaterial.js`, in the fragment shader's
20
+ * `mod(vLineDistance + dashOffset, dashSize + gapSize) > dashSize` check) and
21
+ * leaves a stray fragment visible at the line's start anchor -- normally a
22
+ * single easy-to-miss frame on a solid shape, but glaring on something like
23
+ * DashedLine where a dozen independent Line2 dashes sit at `dashSize=0`
24
+ * simultaneously for most of the animation. Toggling `visible` sidesteps the
25
+ * shader edge case entirely, matching Manim CE's "doesn't exist yet"
26
+ * semantics.
27
+ */
28
+ export declare function setLine2RevealLength(line: Line2, visibleLength: number, totalLen: number): void;
10
29
  /**
11
30
  * Check whether a mobject's Three.js subtree contains at least one Line2 child.
12
31
  * Used by Create-family animations to decide between dash-based reveal and opacity fallback.
13
32
  */
14
33
  export declare function hasLine2Children(mobject: Mobject): boolean;
15
34
  export interface CreateOptions extends AnimationOptions {
16
- /** Stagger ratio between submobjects (0 = simultaneous, higher = more stagger). Default: 0 */
35
+ /** Stagger ratio between submobjects (0 = simultaneous, 1 = fully sequential). Default: 1 (matches Manim CE/3b1b) */
17
36
  lagRatio?: number;
18
37
  }
19
38
  export declare class Create extends Animation {
@@ -25,10 +44,16 @@ export declare class Create extends Animation {
25
44
  private _originalFillOpacity;
26
45
  /** Lag ratio for staggered submobject animation */
27
46
  private _lagRatio;
28
- /** Individual Line2 children for per-child stagger */
29
- private _line2Children;
30
- /** Per-Line2 total lengths */
31
- private _line2TotalLengths;
47
+ /**
48
+ * Stagger unit: family members with points (Manim CE's
49
+ * family_members_with_points), NOT raw Line2 render primitives. A member
50
+ * with several internal subpaths stays one entry here.
51
+ */
52
+ private _family;
53
+ /** Each family member's own Line2 segments (index-aligned with _family). */
54
+ private _memberLines;
55
+ /** Each family member's per-segment total lengths (index-aligned with _memberLines). */
56
+ private _memberLineLengths;
32
57
  /** Saved per-descendant opacities for proportional scaling (opacity fallback path) */
33
58
  private _savedOpacities;
34
59
  constructor(mobject: Mobject, options?: CreateOptions);
@@ -49,15 +74,19 @@ export declare class Create extends Animation {
49
74
  */
50
75
  private _applyScaledOpacities;
51
76
  /**
52
- * Interpolate the dash size to progressively reveal the stroke.
53
- * For filled VMobjects: first half draws border, second half fades in fill.
77
+ * Reveal one family member's own stroke segments up to `memberAlpha`,
78
+ * sweeping a cumulative-length front across its subpaths in order. This is
79
+ * the arc-length analogue of Manim CE's pointwise_become_partial: subpaths
80
+ * of a single VMobject share one window and draw in sequence, never
81
+ * staggered against each other.
54
82
  */
83
+ private _revealMember;
55
84
  /**
56
- * Compute per-child alpha with lag stagger.
57
- * With lagRatio=0, all children animate together.
58
- * With lagRatio>0, each child starts slightly after the previous.
85
+ * Interpolate the dash size to progressively reveal the stroke.
86
+ * For filled VMobjects: first half draws border, second half fades in fill.
87
+ * Staggering (lagRatio) applies across family members (this._family), never
88
+ * across a single member's own subpaths.
59
89
  */
60
- private _childAlpha;
61
90
  interpolate(alpha: number): void;
62
91
  /**
63
92
  * Ensure stroke is fully visible at the end
@@ -1 +1 @@
1
- {"version":3,"file":"Create.d.ts","sourceRoot":"","sources":["../../../src/animation/creation/Create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Create.d.ts","sourceRoot":"","sources":["../../../src/animation/creation/Create.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,12 @@ export declare class PointMorphStrategy implements MorphStrategy {
29
29
  private _vgroupLeafStates;
30
30
  begin(_animation: Animation, source: Mobject, target: Mobject): void;
31
31
  /**
32
+ * Leaf-by-leaf morph for any VMobject pair that delegates its geometry to
33
+ * VMobject children — a real VGroup, or a plain VMobject subclass like
34
+ * DashedLine or a multi-component RegularPolygram that clears its own
35
+ * points and renders via children. Named `_beginVGroup` for its original
36
+ * (VGroup-only) scope; the logic itself is not VGroup-specific.
37
+ *
32
38
  * @pre source and target each contain ≥ 1 leaf VMobject.
33
39
  * @side-effect source.normalizeTransform() is called in place:
34
40
  * world-space geometry is unchanged, but local points are recentered
@@ -1 +1 @@
1
- {"version":3,"file":"PointMorphStrategy.d.ts","sourceRoot":"","sources":["../../../src/animation/transform/PointMorphStrategy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgDhD,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,0BAA0B,CAAC,CAAW;IAC9C,OAAO,CAAC,sBAAsB,CAAC,CAAW;IAC1C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,iBAAiB,CAAyB;IAElD,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAoCpE;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,MAAM;IA6Cd,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA8D1F;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;CAsCtE"}
1
+ {"version":3,"file":"PointMorphStrategy.d.ts","sourceRoot":"","sources":["../../../src/animation/transform/PointMorphStrategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgDhD,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,0BAA0B,CAAC,CAAW;IAC9C,OAAO,CAAC,sBAAsB,CAAC,CAAW;IAC1C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,iBAAiB,CAAyB;IAElD,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAwCpE;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,MAAM;IA2Dd,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA8D1F;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;CAsCtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/animation/transform/Transform.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAW3E,qBAAa,SAAU,SAAQ,SAAS;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,SAAS,CAA8B;gBAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB;IAK7E,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,eAAe;IASd,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,MAAM,IAAI,IAAI;CAKxB;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,SAAS,CAEX;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,SAAS;IACxC,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;CAKvD;AACD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,oBAAoB,CAEtB;AACD,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AACD,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,OAAO,EAAE,iBAAiB,EAAE,OAAO,GAAE,gBAAqB;CAOvE;AACD,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAEjG"}
1
+ {"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../src/animation/transform/Transform.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAW3E,qBAAa,SAAU,SAAQ,SAAS;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,SAAS,CAA8B;gBAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB;IAK7E,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,eAAe;IASd,KAAK,IAAI,IAAI;IAMb,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,MAAM,IAAI,IAAI;CAKxB;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,SAAS,CAEX;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,SAAS;IACxC,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;CAKvD;AACD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,oBAAoB,CAEtB;AACD,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AACD,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,OAAO,EAAE,iBAAiB,EAAE,OAAO,GAAE,gBAAqB;CAOvE;AACD,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAEjG"}
@@ -9,11 +9,28 @@ export interface AlignedTransformPair {
9
9
  }
10
10
  export declare function alignVmobjectPair(source: VMobject, target: VMobject): AlignedTransformPair;
11
11
  export declare function canMorphByPoints(source: VMobject, target: VMobject): boolean;
12
+ /**
13
+ * True when `m` owns no geometry itself but delegates entirely to VMobject
14
+ * descendants — VGroup always qualifies, but so does any plain VMobject
15
+ * subclass that clears its own points and renders via children (DashedLine,
16
+ * a multi-component RegularPolygram, ...). Such mobjects can't be morphed by
17
+ * `alignVmobjectPair` (their own point list is empty); they need leaf-by-leaf
18
+ * pairing instead, via {@link pairLeafSnapshotsByIndex}.
19
+ */
20
+ export declare function needsLeafPairing(m: VMobject): boolean;
12
21
  export interface LeafPairByIndex {
13
22
  source: LeafVMobjectSnapshot;
14
23
  target: LeafVMobjectSnapshot;
24
+ /** Blank, faded filler -- only when one side has zero leaves at all. */
15
25
  sourceIsPlaceholder: boolean;
16
26
  targetIsPlaceholder: boolean;
27
+ /**
28
+ * True when `source.leaf` was just created (a duplicate, or a blank
29
+ * placeholder) and isn't yet a child of the source root -- the caller must
30
+ * `add()` it. Never true for target leaves: those are only read for
31
+ * interpolation targets, never inserted into the source's scene graph.
32
+ */
33
+ sourceIsNew: boolean;
17
34
  }
18
35
  export declare function pairLeafSnapshotsByIndex(sourceRoot: VMobject, targetRoot: VMobject): LeafPairByIndex[];
19
36
  //# sourceMappingURL=TransformPairing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransformPairing.d.ts","sourceRoot":"","sources":["../../../src/animation/transform/TransformPairing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9B,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,oBAAoB,CAyD1F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAE5E;AAaD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,GACnB,eAAe,EAAE,CAqCnB"}
1
+ {"version":3,"file":"TransformPairing.d.ts","sourceRoot":"","sources":["../../../src/animation/transform/TransformPairing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9B,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,oBAAoB,CAyD1F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAErD;AA4DD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,wEAAwE;IACxE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,GACnB,eAAe,EAAE,CAoDnB"}
@@ -0,0 +1,69 @@
1
+ import { Mobject, AxisOrOptions, Vector3Tuple } from '../core/Mobject';
2
+ import { Animation } from './Animation';
3
+ /**
4
+ * Continuously shift a mobject along a direction at a fixed rate.
5
+ *
6
+ * Adds a `dt`-based updater that shifts `mob` by `dt * rate` along the unit
7
+ * direction each frame. The direction is normalized, so only its orientation
8
+ * matters, not its magnitude (CE `always_shift`).
9
+ *
10
+ * @param mob - The mobject to shift.
11
+ * @param direction - The shift direction; normalized before use. Default `RIGHT`.
12
+ * @param rate - Manim units travelled per second. Default `0.1`.
13
+ * @returns `mob`, for chaining.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * alwaysShift(square, RIGHT, 5); // drifts right at 5 units/second
18
+ * ```
19
+ */
20
+ export declare function alwaysShift<M extends Mobject>(mob: M, direction?: Vector3Tuple, rate?: number): M;
21
+ /**
22
+ * Continuously rotate a mobject at a fixed rate.
23
+ *
24
+ * Adds a `dt`-based updater that rotates `mob` by `dt * rate` radians each
25
+ * frame (CE `always_rotate`).
26
+ *
27
+ * @param mob - The mobject to rotate.
28
+ * @param rate - Angle in radians per second. Default `20 * PI / 180`.
29
+ * @param options - Optional axis / about-point passed to `Mobject.rotate`.
30
+ * @returns `mob`, for chaining.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * alwaysRotate(triangle, 2 * Math.PI); // one full turn per second
35
+ * ```
36
+ */
37
+ export declare function alwaysRotate<M extends Mobject>(mob: M, rate?: number, options?: AxisOrOptions): M;
38
+ /**
39
+ * Convert a running animation into an updater on its mobject.
40
+ *
41
+ * Begins the animation, then adds an updater that advances it by accumulated
42
+ * `dt`. When `cycle` is false the animation plays once, calls `finish()` at
43
+ * completion, and removes its own updater. When `cycle` is true it loops
44
+ * forever (CE `turn_animation_into_updater`).
45
+ *
46
+ * @param animation - The animation to drive. Its mobject receives the updater.
47
+ * @param cycle - Loop forever when true; play once when false. Default `false`.
48
+ * @param delay - Seconds to wait before the animation starts. Default `0`.
49
+ * @returns The animation's mobject, for chaining.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * turnAnimationIntoUpdater(new Write(words, { duration: 0.9 }));
54
+ * scene.add(words);
55
+ * ```
56
+ */
57
+ export declare function turnAnimationIntoUpdater(animation: Animation, cycle?: boolean, delay?: number): Mobject;
58
+ /**
59
+ * Loop a running animation forever as an updater on its mobject.
60
+ *
61
+ * Delegates to `turnAnimationIntoUpdater` with `cycle = true` (CE
62
+ * `cycle_animation`).
63
+ *
64
+ * @param animation - The animation to loop.
65
+ * @param delay - Seconds to wait before the animation starts. Default `0`.
66
+ * @returns The animation's mobject, for chaining.
67
+ */
68
+ export declare function cycleAnimation(animation: Animation, delay?: number): Mobject;
69
+ //# sourceMappingURL=updaters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updaters.d.ts","sourceRoot":"","sources":["../../src/animation/updaters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAC3C,GAAG,EAAE,CAAC,EACN,SAAS,GAAE,YAAoB,EAC/B,IAAI,SAAM,GACT,CAAC,CAMH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAC5C,GAAG,EAAE,CAAC,EACN,IAAI,GAAE,MAA4B,EAClC,OAAO,CAAC,EAAE,aAAa,GACtB,CAAC,CAKH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,UAAQ,EAAE,KAAK,SAAI,GAAG,OAAO,CAqChG;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,SAAI,GAAG,OAAO,CAEvE"}
@@ -0,0 +1,2 @@
1
+ import { l as e, u as t } from "./esm-CiMKSfxz.js";
2
+ export { e as createTypstCompiler, t as createTypstFontBuilder };
@@ -1,4 +1,5 @@
1
1
  export * from './colors';
2
+ export * from './parity';
2
3
  export declare const DEFAULT_STROKE_WIDTH = 4;
3
4
  export declare const DEFAULT_FONT_SIZE = 48;
4
5
  export declare const DEFAULT_ANIMATION_DURATION = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAEzB,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,WAAW,KAAK,CAAC;AAG9B,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,8BAA8B,MAAiB,CAAC;AAC7D,eAAO,MAAM,iCAAiC,OAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,WAAW,KAAK,CAAC;AAG9B,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,8BAA8B,MAAiB,CAAC;AAC7D,eAAO,MAAM,iCAAiC,OAAiB,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { Vector3Tuple } from '../core/MobjectTypes';
2
+ /** The ratio of the circumference of a circle to its diameter. */
3
+ export declare const PI: number;
4
+ /** The ratio of the circumference of a circle to its radius (2 * PI). */
5
+ export declare const TAU: number;
6
+ /** The exchange rate between radians and degrees (radians per degree). */
7
+ export declare const DEGREES: number;
8
+ /** Unit vector along the x axis. */
9
+ export declare const X_AXIS: Vector3Tuple;
10
+ /** Unit vector along the y axis. */
11
+ export declare const Y_AXIS: Vector3Tuple;
12
+ /** Unit vector along the z axis. */
13
+ export declare const Z_AXIS: Vector3Tuple;
14
+ /** Default radius of a `Dot`. */
15
+ export declare const DEFAULT_DOT_RADIUS = 0.08;
16
+ /** Default radius of a `SmallDot`. */
17
+ export declare const DEFAULT_SMALL_DOT_RADIUS = 0.04;
18
+ /** Default length of a single dash segment. */
19
+ export declare const DEFAULT_DASH_LENGTH = 0.05;
20
+ /** Default length of an arrow tip. */
21
+ export declare const DEFAULT_ARROW_TIP_LENGTH = 0.35;
22
+ /** Normal font weight. */
23
+ export declare const NORMAL = "NORMAL";
24
+ /** Bold font weight. */
25
+ export declare const BOLD = "BOLD";
26
+ /** Thin font weight. */
27
+ export declare const THIN = "THIN";
28
+ /** Light font weight. */
29
+ export declare const LIGHT = "LIGHT";
30
+ /** Medium font weight. */
31
+ export declare const MEDIUM = "MEDIUM";
32
+ /** Semibold font weight. */
33
+ export declare const SEMIBOLD = "SEMIBOLD";
34
+ /** Heavy font weight. */
35
+ export declare const HEAVY = "HEAVY";
36
+ /** Ultraheavy font weight. */
37
+ export declare const ULTRAHEAVY = "ULTRAHEAVY";
38
+ /** Ultralight font weight. */
39
+ export declare const ULTRALIGHT = "ULTRALIGHT";
40
+ /** Semilight font weight. */
41
+ export declare const SEMILIGHT = "SEMILIGHT";
42
+ /** Book font weight. */
43
+ export declare const BOOK = "BOOK";
44
+ /** Ultrabold font weight. */
45
+ export declare const ULTRABOLD = "ULTRABOLD";
46
+ /** Italic font slant. */
47
+ export declare const ITALIC = "ITALIC";
48
+ /** Oblique font slant. */
49
+ export declare const OBLIQUE = "OBLIQUE";
50
+ /** Default run time of a wait animation, in seconds. */
51
+ export declare const DEFAULT_WAIT_TIME = 1;
52
+ /** Default run time of a pointwise function animation, in seconds. */
53
+ export declare const DEFAULT_POINTWISE_FUNCTION_RUN_TIME = 3;
54
+ /** Default sample density for a 2D region. */
55
+ export declare const DEFAULT_POINT_DENSITY_2D = 25;
56
+ /** Default sample density for a 1D path. */
57
+ export declare const DEFAULT_POINT_DENSITY_1D = 10;
58
+ /** World-space scale factor applied per font point. */
59
+ export declare const SCALE_FACTOR_PER_FONT_POINT: number;
60
+ /** Default horizontal start offset, in pixels. */
61
+ export declare const START_X = 30;
62
+ /** Default vertical start offset, in pixels. */
63
+ export declare const START_Y = 20;
64
+ /** Collection of available line joint types. */
65
+ export declare enum LineJointType {
66
+ AUTO = 0,
67
+ ROUND = 1,
68
+ BEVEL = 2,
69
+ MITER = 3
70
+ }
71
+ /** Collection of available stroke cap styles. */
72
+ export declare enum CapStyleType {
73
+ AUTO = 0,
74
+ ROUND = 1,
75
+ BUTT = 2,
76
+ SQUARE = 3
77
+ }
78
+ //# sourceMappingURL=parity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../src/constants/parity.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,kEAAkE;AAClE,eAAO,MAAM,EAAE,QAAU,CAAC;AAE1B,yEAAyE;AACzE,eAAO,MAAM,GAAG,QAAc,CAAC;AAE/B,0EAA0E;AAC1E,eAAO,MAAM,OAAO,QAAY,CAAC;AAIjC,oCAAoC;AACpC,eAAO,MAAM,MAAM,EAAE,YAAwB,CAAC;AAE9C,oCAAoC;AACpC,eAAO,MAAM,MAAM,EAAE,YAAwB,CAAC;AAE9C,oCAAoC;AACpC,eAAO,MAAM,MAAM,EAAE,YAAwB,CAAC;AAI9C,iCAAiC;AACjC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAI7C,0BAA0B;AAC1B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,wBAAwB;AACxB,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,wBAAwB;AACxB,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,yBAAyB;AACzB,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,0BAA0B;AAC1B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,4BAA4B;AAC5B,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,yBAAyB;AACzB,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,8BAA8B;AAC9B,eAAO,MAAM,UAAU,eAAe,CAAC;AAEvC,8BAA8B;AAC9B,eAAO,MAAM,UAAU,eAAe,CAAC;AAEvC,6BAA6B;AAC7B,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,wBAAwB;AACxB,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,6BAA6B;AAC7B,eAAO,MAAM,SAAS,cAAc,CAAC;AAIrC,yBAAyB;AACzB,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,0BAA0B;AAC1B,eAAO,MAAM,OAAO,YAAY,CAAC;AAIjC,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,IAAM,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,mCAAmC,IAAM,CAAC;AAEvD,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,uDAAuD;AACvD,eAAO,MAAM,2BAA2B,QAAU,CAAC;AAEnD,kDAAkD;AAClD,eAAO,MAAM,OAAO,KAAK,CAAC;AAE1B,gDAAgD;AAChD,eAAO,MAAM,OAAO,KAAK,CAAC;AAI1B,gDAAgD;AAChD,oBAAY,aAAa;IACvB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED,iDAAiD;AACjD,oBAAY,YAAY;IACtB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;IACR,MAAM,IAAI;CACX"}
@@ -1,9 +1,9 @@
1
- import { Vector3Tuple, MobjectStyle, AxisOrOptions } from './MobjectTypes';
1
+ import { Vector3Tuple, MobjectStyle, MobjectOptions, AxisOrOptions } from './MobjectTypes';
2
2
  import { AnimateProxy } from './AnimateProxy';
3
3
  import * as THREE from 'three';
4
4
  /** @internal Called by AnimateProxy module to register the factory. */
5
5
  export declare function registerAnimateProxy(factory: (mobject: Mobject) => AnimateProxy): void;
6
- export { type Vector3Tuple, type MobjectStyle, type MobjectLike, type VMobjectLike, type AxisOrOptions, isVMobjectLike, UP, DOWN, LEFT, RIGHT, OUT, IN, ORIGIN, UL, UR, DL, DR, } from './MobjectTypes';
6
+ export { type Vector3Tuple, type MobjectStyle, type MobjectOptions, type MobjectLike, type VMobjectLike, type AxisOrOptions, isVMobjectLike, UP, DOWN, LEFT, RIGHT, OUT, IN, ORIGIN, UL, UR, DL, DR, } from './MobjectTypes';
7
7
  /**
8
8
  * Updater function type that runs every frame.
9
9
  * Defined here (not in MobjectTypes) to reference the concrete Mobject class
@@ -15,6 +15,13 @@ export type UpdaterFunction = (mobject: Mobject, dt: number) => void;
15
15
  /** Base mathematical object class. All visible objects in manimweb inherit from this class. */
16
16
  export declare abstract class Mobject {
17
17
  readonly id: string;
18
+ /**
19
+ * User-defined string identifier, separate from the internal `id` uuid.
20
+ * Set it via the constructor option `userId` or {@link setUserId}, then look
21
+ * the mobject up with {@link Scene.getMobject}. Undefined unless the user
22
+ * assigns one; not required to be unique.
23
+ */
24
+ private _userId?;
18
25
  parent: Mobject | null;
19
26
  children: Mobject[];
20
27
  position: THREE.Vector3;
@@ -52,7 +59,20 @@ export declare abstract class Mobject {
52
59
  /** JSON-serializable saved state (used by restoreState()). */
53
60
  __savedMobjectState: unknown;
54
61
  private static _idCounter;
55
- constructor();
62
+ constructor(options?: MobjectOptions);
63
+ /**
64
+ * The user-defined string identifier, or undefined if none was set.
65
+ * Distinct from the internal {@link id} uuid. Look a mobject up by this
66
+ * value with {@link Scene.getMobject}.
67
+ */
68
+ get userId(): string | undefined;
69
+ /**
70
+ * Set the user-defined string identifier used by {@link Scene.getMobject}.
71
+ * Chainable, so it fits factory and loop code: `factory().setUserId('row-3')`.
72
+ * The value need not be unique; the lookup returns the first match.
73
+ * @param userId - The identifier to assign
74
+ */
75
+ setUserId(userId: string): this;
56
76
  get opacity(): number;
57
77
  set opacity(value: number);
58
78
  get style(): MobjectStyle;
@@ -232,6 +252,7 @@ export declare abstract class Mobject {
232
252
  };
233
253
  getWidth(): number;
234
254
  getHeight(): number;
255
+ getDepth(): number;
235
256
  /** @deprecated Use getBoundingBox() instead. */
236
257
  _getBoundingBox(): {
237
258
  width: number;
@@ -247,6 +268,30 @@ export declare abstract class Mobject {
247
268
  setY(y: number): this;
248
269
  setZ(z: number): this;
249
270
  center(): this;
271
+ /** Scale uniformly so the width becomes `width`. */
272
+ scaleToFitWidth(width: number): this;
273
+ /** Scale uniformly so the height becomes `height`. */
274
+ scaleToFitHeight(height: number): this;
275
+ /** Scale uniformly so the depth becomes `depth`. */
276
+ scaleToFitDepth(depth: number): this;
277
+ /** CE `set_width` (stretch=false default): alias of {@link scaleToFitWidth}. */
278
+ setWidth(width: number): this;
279
+ /** CE `set_height` (stretch=false default): alias of {@link scaleToFitHeight}. */
280
+ setHeight(height: number): this;
281
+ /** CE `set_depth` (stretch=false default): alias of {@link scaleToFitDepth}. */
282
+ setDepth(depth: number): this;
283
+ /** Scale uniformly so the width matches `mob`'s width. */
284
+ matchWidth(mob: Mobject): this;
285
+ /** Scale uniformly so the height matches `mob`'s height. */
286
+ matchHeight(mob: Mobject): this;
287
+ /** Scale uniformly so the depth matches `mob`'s depth. */
288
+ matchDepth(mob: Mobject): this;
289
+ /** Shift so the center x-coordinate matches `mob`'s. */
290
+ matchX(mob: Mobject): this;
291
+ /** Shift so the center y-coordinate matches `mob`'s. */
292
+ matchY(mob: Mobject): this;
293
+ /** Shift so the center z-coordinate matches `mob`'s. */
294
+ matchZ(mob: Mobject): this;
250
295
  /**
251
296
  * Returns an AnimateProxy that records method calls.
252
297
  * Pass the proxy to `scene.play()` to animate from the current state