manim-web 0.2.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 (356) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/animation/Animation.d.ts +69 -0
  4. package/dist/animation/Animation.d.ts.map +1 -0
  5. package/dist/animation/AnimationGroup.d.ts +48 -0
  6. package/dist/animation/AnimationGroup.d.ts.map +1 -0
  7. package/dist/animation/LaggedStart.d.ts +25 -0
  8. package/dist/animation/LaggedStart.d.ts.map +1 -0
  9. package/dist/animation/MaintainPositionRelativeTo.d.ts +23 -0
  10. package/dist/animation/MaintainPositionRelativeTo.d.ts.map +1 -0
  11. package/dist/animation/Succession.d.ts +19 -0
  12. package/dist/animation/Succession.d.ts.map +1 -0
  13. package/dist/animation/Timeline.d.ts +89 -0
  14. package/dist/animation/Timeline.d.ts.map +1 -0
  15. package/dist/animation/UpdateFromAlphaFunc.d.ts +32 -0
  16. package/dist/animation/UpdateFromAlphaFunc.d.ts.map +1 -0
  17. package/dist/animation/UpdateFromFunc.d.ts +30 -0
  18. package/dist/animation/UpdateFromFunc.d.ts.map +1 -0
  19. package/dist/animation/changing/index.d.ts +213 -0
  20. package/dist/animation/changing/index.d.ts.map +1 -0
  21. package/dist/animation/composition/LaggedStartMap.d.ts +47 -0
  22. package/dist/animation/composition/LaggedStartMap.d.ts.map +1 -0
  23. package/dist/animation/composition/index.d.ts +5 -0
  24. package/dist/animation/composition/index.d.ts.map +1 -0
  25. package/dist/animation/creation/Create.d.ts +232 -0
  26. package/dist/animation/creation/Create.d.ts.map +1 -0
  27. package/dist/animation/creation/CreationExtensions.d.ts +127 -0
  28. package/dist/animation/creation/CreationExtensions.d.ts.map +1 -0
  29. package/dist/animation/creation/TypeWithCursor.d.ts +133 -0
  30. package/dist/animation/creation/TypeWithCursor.d.ts.map +1 -0
  31. package/dist/animation/creation/index.d.ts +4 -0
  32. package/dist/animation/creation/index.d.ts.map +1 -0
  33. package/dist/animation/fading/FadeIn.d.ts +31 -0
  34. package/dist/animation/fading/FadeIn.d.ts.map +1 -0
  35. package/dist/animation/fading/FadeOut.d.ts +32 -0
  36. package/dist/animation/fading/FadeOut.d.ts.map +1 -0
  37. package/dist/animation/fading/index.d.ts +3 -0
  38. package/dist/animation/fading/index.d.ts.map +1 -0
  39. package/dist/animation/growing/index.d.ts +103 -0
  40. package/dist/animation/growing/index.d.ts.map +1 -0
  41. package/dist/animation/index.d.ts +20 -0
  42. package/dist/animation/index.d.ts.map +1 -0
  43. package/dist/animation/indication/ApplyWave.d.ts +51 -0
  44. package/dist/animation/indication/ApplyWave.d.ts.map +1 -0
  45. package/dist/animation/indication/Blink.d.ts +34 -0
  46. package/dist/animation/indication/Blink.d.ts.map +1 -0
  47. package/dist/animation/indication/Circumscribe.d.ts +54 -0
  48. package/dist/animation/indication/Circumscribe.d.ts.map +1 -0
  49. package/dist/animation/indication/Flash.d.ts +45 -0
  50. package/dist/animation/indication/Flash.d.ts.map +1 -0
  51. package/dist/animation/indication/FocusOn.d.ts +79 -0
  52. package/dist/animation/indication/FocusOn.d.ts.map +1 -0
  53. package/dist/animation/indication/Indicate.d.ts +30 -0
  54. package/dist/animation/indication/Indicate.d.ts.map +1 -0
  55. package/dist/animation/indication/ShowCreationThenDestruction.d.ts +26 -0
  56. package/dist/animation/indication/ShowCreationThenDestruction.d.ts.map +1 -0
  57. package/dist/animation/indication/ShowPassingFlash.d.ts +47 -0
  58. package/dist/animation/indication/ShowPassingFlash.d.ts.map +1 -0
  59. package/dist/animation/indication/ShowPassingFlashWithThinningStrokeWidth.d.ts +21 -0
  60. package/dist/animation/indication/ShowPassingFlashWithThinningStrokeWidth.d.ts.map +1 -0
  61. package/dist/animation/indication/Wiggle.d.ts +48 -0
  62. package/dist/animation/indication/Wiggle.d.ts.map +1 -0
  63. package/dist/animation/indication/WiggleOutThenIn.d.ts +44 -0
  64. package/dist/animation/indication/WiggleOutThenIn.d.ts.map +1 -0
  65. package/dist/animation/indication/index.d.ts +20 -0
  66. package/dist/animation/indication/index.d.ts.map +1 -0
  67. package/dist/animation/movement/Homotopy.d.ts +204 -0
  68. package/dist/animation/movement/Homotopy.d.ts.map +1 -0
  69. package/dist/animation/movement/MoveAlongPath.d.ts +48 -0
  70. package/dist/animation/movement/MoveAlongPath.d.ts.map +1 -0
  71. package/dist/animation/movement/Rotate.d.ts +47 -0
  72. package/dist/animation/movement/Rotate.d.ts.map +1 -0
  73. package/dist/animation/movement/Scale.d.ts +74 -0
  74. package/dist/animation/movement/Scale.d.ts.map +1 -0
  75. package/dist/animation/movement/Shift.d.ts +74 -0
  76. package/dist/animation/movement/Shift.d.ts.map +1 -0
  77. package/dist/animation/movement/index.d.ts +6 -0
  78. package/dist/animation/movement/index.d.ts.map +1 -0
  79. package/dist/animation/numbers/index.d.ts +152 -0
  80. package/dist/animation/numbers/index.d.ts.map +1 -0
  81. package/dist/animation/speed/index.d.ts +114 -0
  82. package/dist/animation/speed/index.d.ts.map +1 -0
  83. package/dist/animation/transform/ApplyPointwiseFunction.d.ts +23 -0
  84. package/dist/animation/transform/ApplyPointwiseFunction.d.ts.map +1 -0
  85. package/dist/animation/transform/Transform.d.ts +89 -0
  86. package/dist/animation/transform/Transform.d.ts.map +1 -0
  87. package/dist/animation/transform/TransformExtensions.d.ts +444 -0
  88. package/dist/animation/transform/TransformExtensions.d.ts.map +1 -0
  89. package/dist/animation/transform/TransformMatching.d.ts +138 -0
  90. package/dist/animation/transform/TransformMatching.d.ts.map +1 -0
  91. package/dist/animation/transform/index.d.ts +5 -0
  92. package/dist/animation/transform/index.d.ts.map +1 -0
  93. package/dist/animation/utility/index.d.ts +171 -0
  94. package/dist/animation/utility/index.d.ts.map +1 -0
  95. package/dist/constants/colors.d.ts +72 -0
  96. package/dist/constants/colors.d.ts.map +1 -0
  97. package/dist/constants/colors.test.d.ts +2 -0
  98. package/dist/constants/colors.test.d.ts.map +1 -0
  99. package/dist/constants/directions.test.d.ts +2 -0
  100. package/dist/constants/directions.test.d.ts.map +1 -0
  101. package/dist/constants/index.d.ts +16 -0
  102. package/dist/constants/index.d.ts.map +1 -0
  103. package/dist/core/AudioManager.d.ts +203 -0
  104. package/dist/core/AudioManager.d.ts.map +1 -0
  105. package/dist/core/Camera.d.ts +172 -0
  106. package/dist/core/Camera.d.ts.map +1 -0
  107. package/dist/core/Camera2DFrame.d.ts +31 -0
  108. package/dist/core/Camera2DFrame.d.ts.map +1 -0
  109. package/dist/core/CameraExtensions.d.ts +420 -0
  110. package/dist/core/CameraExtensions.d.ts.map +1 -0
  111. package/dist/core/CameraFrame.d.ts +178 -0
  112. package/dist/core/CameraFrame.d.ts.map +1 -0
  113. package/dist/core/Group.d.ts +139 -0
  114. package/dist/core/Group.d.ts.map +1 -0
  115. package/dist/core/InteractiveScene.d.ts +122 -0
  116. package/dist/core/InteractiveScene.d.ts.map +1 -0
  117. package/dist/core/Lighting.d.ts +128 -0
  118. package/dist/core/Lighting.d.ts.map +1 -0
  119. package/dist/core/Mobject.d.ts +488 -0
  120. package/dist/core/Mobject.d.ts.map +1 -0
  121. package/dist/core/Renderer.d.ts +84 -0
  122. package/dist/core/Renderer.d.ts.map +1 -0
  123. package/dist/core/Scene.d.ts +353 -0
  124. package/dist/core/Scene.d.ts.map +1 -0
  125. package/dist/core/SceneExtensions.d.ts +640 -0
  126. package/dist/core/SceneExtensions.d.ts.map +1 -0
  127. package/dist/core/SceneExtensions.test.d.ts +2 -0
  128. package/dist/core/SceneExtensions.test.d.ts.map +1 -0
  129. package/dist/core/StateManager.d.ts +193 -0
  130. package/dist/core/StateManager.d.ts.map +1 -0
  131. package/dist/core/VDict.d.ts +229 -0
  132. package/dist/core/VDict.d.ts.map +1 -0
  133. package/dist/core/VGroup.d.ts +200 -0
  134. package/dist/core/VGroup.d.ts.map +1 -0
  135. package/dist/core/VMobject.d.ts +419 -0
  136. package/dist/core/VMobject.d.ts.map +1 -0
  137. package/dist/core/index.d.ts +16 -0
  138. package/dist/core/index.d.ts.map +1 -0
  139. package/dist/examples.test.d.ts +2 -0
  140. package/dist/examples.test.d.ts.map +1 -0
  141. package/dist/export/GifExporter.d.ts +40 -0
  142. package/dist/export/GifExporter.d.ts.map +1 -0
  143. package/dist/export/VideoExporter.d.ts +135 -0
  144. package/dist/export/VideoExporter.d.ts.map +1 -0
  145. package/dist/export/index.d.ts +3 -0
  146. package/dist/export/index.d.ts.map +1 -0
  147. package/dist/index.d.ts +65 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +49064 -0
  150. package/dist/integrations/index.d.ts +1 -0
  151. package/dist/integrations/index.d.ts.map +1 -0
  152. package/dist/integrations/react.d.ts +144 -0
  153. package/dist/integrations/react.d.ts.map +1 -0
  154. package/dist/integrations/react.js +570 -0
  155. package/dist/integrations/vue.d.ts +249 -0
  156. package/dist/integrations/vue.d.ts.map +1 -0
  157. package/dist/integrations/vue.js +560 -0
  158. package/dist/interaction/Clickable.d.ts +71 -0
  159. package/dist/interaction/Clickable.d.ts.map +1 -0
  160. package/dist/interaction/Controls.d.ts +174 -0
  161. package/dist/interaction/Controls.d.ts.map +1 -0
  162. package/dist/interaction/Draggable.d.ts +88 -0
  163. package/dist/interaction/Draggable.d.ts.map +1 -0
  164. package/dist/interaction/Hoverable.d.ts +82 -0
  165. package/dist/interaction/Hoverable.d.ts.map +1 -0
  166. package/dist/interaction/OrbitControls.d.ts +139 -0
  167. package/dist/interaction/OrbitControls.d.ts.map +1 -0
  168. package/dist/interaction/PlaybackControls.d.ts +113 -0
  169. package/dist/interaction/PlaybackControls.d.ts.map +1 -0
  170. package/dist/interaction/SelectionManager.d.ts +125 -0
  171. package/dist/interaction/SelectionManager.d.ts.map +1 -0
  172. package/dist/interaction/index.d.ts +12 -0
  173. package/dist/interaction/index.d.ts.map +1 -0
  174. package/dist/mobjects/fractals/MandelbrotSet.d.ts +92 -0
  175. package/dist/mobjects/fractals/MandelbrotSet.d.ts.map +1 -0
  176. package/dist/mobjects/fractals/NewtonFractal.d.ts +121 -0
  177. package/dist/mobjects/fractals/NewtonFractal.d.ts.map +1 -0
  178. package/dist/mobjects/fractals/index.d.ts +3 -0
  179. package/dist/mobjects/fractals/index.d.ts.map +1 -0
  180. package/dist/mobjects/frame/index.d.ts +188 -0
  181. package/dist/mobjects/frame/index.d.ts.map +1 -0
  182. package/dist/mobjects/geometry/AngleShapes.d.ts +326 -0
  183. package/dist/mobjects/geometry/AngleShapes.d.ts.map +1 -0
  184. package/dist/mobjects/geometry/Arc.d.ts +111 -0
  185. package/dist/mobjects/geometry/Arc.d.ts.map +1 -0
  186. package/dist/mobjects/geometry/ArcBetweenPoints.d.ts +68 -0
  187. package/dist/mobjects/geometry/ArcBetweenPoints.d.ts.map +1 -0
  188. package/dist/mobjects/geometry/ArcShapes.d.ts +659 -0
  189. package/dist/mobjects/geometry/ArcShapes.d.ts.map +1 -0
  190. package/dist/mobjects/geometry/Arrow.d.ts +130 -0
  191. package/dist/mobjects/geometry/Arrow.d.ts.map +1 -0
  192. package/dist/mobjects/geometry/ArrowTips.d.ts +238 -0
  193. package/dist/mobjects/geometry/ArrowTips.d.ts.map +1 -0
  194. package/dist/mobjects/geometry/BooleanOperations.d.ts +163 -0
  195. package/dist/mobjects/geometry/BooleanOperations.d.ts.map +1 -0
  196. package/dist/mobjects/geometry/Circle.d.ts +92 -0
  197. package/dist/mobjects/geometry/Circle.d.ts.map +1 -0
  198. package/dist/mobjects/geometry/CubicBezier.d.ts +126 -0
  199. package/dist/mobjects/geometry/CubicBezier.d.ts.map +1 -0
  200. package/dist/mobjects/geometry/DashedLine.d.ts +109 -0
  201. package/dist/mobjects/geometry/DashedLine.d.ts.map +1 -0
  202. package/dist/mobjects/geometry/DashedVMobject.d.ts +96 -0
  203. package/dist/mobjects/geometry/DashedVMobject.d.ts.map +1 -0
  204. package/dist/mobjects/geometry/Dot.d.ts +100 -0
  205. package/dist/mobjects/geometry/Dot.d.ts.map +1 -0
  206. package/dist/mobjects/geometry/LabeledGeometry.d.ts +372 -0
  207. package/dist/mobjects/geometry/LabeledGeometry.d.ts.map +1 -0
  208. package/dist/mobjects/geometry/Line.d.ts +83 -0
  209. package/dist/mobjects/geometry/Line.d.ts.map +1 -0
  210. package/dist/mobjects/geometry/Polygon.d.ts +155 -0
  211. package/dist/mobjects/geometry/Polygon.d.ts.map +1 -0
  212. package/dist/mobjects/geometry/PolygonExtensions.d.ts +412 -0
  213. package/dist/mobjects/geometry/PolygonExtensions.d.ts.map +1 -0
  214. package/dist/mobjects/geometry/Rectangle.d.ts +123 -0
  215. package/dist/mobjects/geometry/Rectangle.d.ts.map +1 -0
  216. package/dist/mobjects/geometry/ShapeMatchers.d.ts +252 -0
  217. package/dist/mobjects/geometry/ShapeMatchers.d.ts.map +1 -0
  218. package/dist/mobjects/geometry/index.d.ts +25 -0
  219. package/dist/mobjects/geometry/index.d.ts.map +1 -0
  220. package/dist/mobjects/graph/index.d.ts +425 -0
  221. package/dist/mobjects/graph/index.d.ts.map +1 -0
  222. package/dist/mobjects/graphing/Axes.d.ts +254 -0
  223. package/dist/mobjects/graphing/Axes.d.ts.map +1 -0
  224. package/dist/mobjects/graphing/BarChart.d.ts +241 -0
  225. package/dist/mobjects/graphing/BarChart.d.ts.map +1 -0
  226. package/dist/mobjects/graphing/ComplexPlane.d.ts +311 -0
  227. package/dist/mobjects/graphing/ComplexPlane.d.ts.map +1 -0
  228. package/dist/mobjects/graphing/FunctionGraph.d.ts +123 -0
  229. package/dist/mobjects/graphing/FunctionGraph.d.ts.map +1 -0
  230. package/dist/mobjects/graphing/ImplicitFunction.d.ts +131 -0
  231. package/dist/mobjects/graphing/ImplicitFunction.d.ts.map +1 -0
  232. package/dist/mobjects/graphing/NumberLine.d.ts +195 -0
  233. package/dist/mobjects/graphing/NumberLine.d.ts.map +1 -0
  234. package/dist/mobjects/graphing/NumberPlane.d.ts +91 -0
  235. package/dist/mobjects/graphing/NumberPlane.d.ts.map +1 -0
  236. package/dist/mobjects/graphing/ParametricFunction.d.ts +111 -0
  237. package/dist/mobjects/graphing/ParametricFunction.d.ts.map +1 -0
  238. package/dist/mobjects/graphing/Vector.d.ts +121 -0
  239. package/dist/mobjects/graphing/Vector.d.ts.map +1 -0
  240. package/dist/mobjects/graphing/VectorField.d.ts +321 -0
  241. package/dist/mobjects/graphing/VectorField.d.ts.map +1 -0
  242. package/dist/mobjects/graphing/index.d.ts +18 -0
  243. package/dist/mobjects/graphing/index.d.ts.map +1 -0
  244. package/dist/mobjects/image/index.d.ts +223 -0
  245. package/dist/mobjects/image/index.d.ts.map +1 -0
  246. package/dist/mobjects/matrix/Matrix.d.ts +260 -0
  247. package/dist/mobjects/matrix/Matrix.d.ts.map +1 -0
  248. package/dist/mobjects/matrix/index.d.ts +8 -0
  249. package/dist/mobjects/matrix/index.d.ts.map +1 -0
  250. package/dist/mobjects/point/index.d.ts +707 -0
  251. package/dist/mobjects/point/index.d.ts.map +1 -0
  252. package/dist/mobjects/probability/DiceFace.d.ts +137 -0
  253. package/dist/mobjects/probability/DiceFace.d.ts.map +1 -0
  254. package/dist/mobjects/probability/SampleSpace.d.ts +267 -0
  255. package/dist/mobjects/probability/SampleSpace.d.ts.map +1 -0
  256. package/dist/mobjects/probability/index.d.ts +9 -0
  257. package/dist/mobjects/probability/index.d.ts.map +1 -0
  258. package/dist/mobjects/svg/Brace.d.ts +308 -0
  259. package/dist/mobjects/svg/Brace.d.ts.map +1 -0
  260. package/dist/mobjects/svg/SVGMobject.d.ts +64 -0
  261. package/dist/mobjects/svg/SVGMobject.d.ts.map +1 -0
  262. package/dist/mobjects/svg/index.d.ts +10 -0
  263. package/dist/mobjects/svg/index.d.ts.map +1 -0
  264. package/dist/mobjects/table/Table.d.ts +315 -0
  265. package/dist/mobjects/table/Table.d.ts.map +1 -0
  266. package/dist/mobjects/table/index.d.ts +8 -0
  267. package/dist/mobjects/table/index.d.ts.map +1 -0
  268. package/dist/mobjects/text/Code.d.ts +244 -0
  269. package/dist/mobjects/text/Code.d.ts.map +1 -0
  270. package/dist/mobjects/text/DecimalNumber.d.ts +199 -0
  271. package/dist/mobjects/text/DecimalNumber.d.ts.map +1 -0
  272. package/dist/mobjects/text/GlyphVMobject.d.ts +76 -0
  273. package/dist/mobjects/text/GlyphVMobject.d.ts.map +1 -0
  274. package/dist/mobjects/text/MarkupText.d.ts +161 -0
  275. package/dist/mobjects/text/MarkupText.d.ts.map +1 -0
  276. package/dist/mobjects/text/MathJaxRenderer.d.ts +49 -0
  277. package/dist/mobjects/text/MathJaxRenderer.d.ts.map +1 -0
  278. package/dist/mobjects/text/MathTex.d.ts +242 -0
  279. package/dist/mobjects/text/MathTex.d.ts.map +1 -0
  280. package/dist/mobjects/text/Paragraph.d.ts +86 -0
  281. package/dist/mobjects/text/Paragraph.d.ts.map +1 -0
  282. package/dist/mobjects/text/Tex.d.ts +40 -0
  283. package/dist/mobjects/text/Tex.d.ts.map +1 -0
  284. package/dist/mobjects/text/Text.d.ts +171 -0
  285. package/dist/mobjects/text/Text.d.ts.map +1 -0
  286. package/dist/mobjects/text/TextExtensions.d.ts +383 -0
  287. package/dist/mobjects/text/TextExtensions.d.ts.map +1 -0
  288. package/dist/mobjects/text/TextGlyphGroup.d.ts +48 -0
  289. package/dist/mobjects/text/TextGlyphGroup.d.ts.map +1 -0
  290. package/dist/mobjects/text/Variable.d.ts +160 -0
  291. package/dist/mobjects/text/Variable.d.ts.map +1 -0
  292. package/dist/mobjects/text/index.d.ts +21 -0
  293. package/dist/mobjects/text/index.d.ts.map +1 -0
  294. package/dist/mobjects/text/katex-styles.d.ts +23 -0
  295. package/dist/mobjects/text/katex-styles.d.ts.map +1 -0
  296. package/dist/mobjects/text/svgPathParser.d.ts +39 -0
  297. package/dist/mobjects/text/svgPathParser.d.ts.map +1 -0
  298. package/dist/mobjects/three-d/Arrow3D.d.ts +136 -0
  299. package/dist/mobjects/three-d/Arrow3D.d.ts.map +1 -0
  300. package/dist/mobjects/three-d/Cube.d.ts +186 -0
  301. package/dist/mobjects/three-d/Cube.d.ts.map +1 -0
  302. package/dist/mobjects/three-d/Cylinder.d.ts +189 -0
  303. package/dist/mobjects/three-d/Cylinder.d.ts.map +1 -0
  304. package/dist/mobjects/three-d/Line3D.d.ts +100 -0
  305. package/dist/mobjects/three-d/Line3D.d.ts.map +1 -0
  306. package/dist/mobjects/three-d/ParametricSurface.d.ts +86 -0
  307. package/dist/mobjects/three-d/ParametricSurface.d.ts.map +1 -0
  308. package/dist/mobjects/three-d/Polyhedra.d.ts +271 -0
  309. package/dist/mobjects/three-d/Polyhedra.d.ts.map +1 -0
  310. package/dist/mobjects/three-d/Sphere.d.ts +100 -0
  311. package/dist/mobjects/three-d/Sphere.d.ts.map +1 -0
  312. package/dist/mobjects/three-d/Surface3D.d.ts +156 -0
  313. package/dist/mobjects/three-d/Surface3D.d.ts.map +1 -0
  314. package/dist/mobjects/three-d/TexturedSurface.d.ts +208 -0
  315. package/dist/mobjects/three-d/TexturedSurface.d.ts.map +1 -0
  316. package/dist/mobjects/three-d/ThreeDAxes.d.ts +172 -0
  317. package/dist/mobjects/three-d/ThreeDAxes.d.ts.map +1 -0
  318. package/dist/mobjects/three-d/ThreeDExtensions.d.ts +335 -0
  319. package/dist/mobjects/three-d/ThreeDExtensions.d.ts.map +1 -0
  320. package/dist/mobjects/three-d/Torus.d.ts +123 -0
  321. package/dist/mobjects/three-d/Torus.d.ts.map +1 -0
  322. package/dist/mobjects/three-d/index.d.ts +19 -0
  323. package/dist/mobjects/three-d/index.d.ts.map +1 -0
  324. package/dist/mobjects/value-tracker/ValueTracker.d.ts +248 -0
  325. package/dist/mobjects/value-tracker/ValueTracker.d.ts.map +1 -0
  326. package/dist/mobjects/value-tracker/index.d.ts +9 -0
  327. package/dist/mobjects/value-tracker/index.d.ts.map +1 -0
  328. package/dist/rate-functions/index.d.ts +81 -0
  329. package/dist/rate-functions/index.d.ts.map +1 -0
  330. package/dist/rate-functions/rateFunctions.test.d.ts +2 -0
  331. package/dist/rate-functions/rateFunctions.test.d.ts.map +1 -0
  332. package/dist/rendering/BezierRenderer.d.ts +112 -0
  333. package/dist/rendering/BezierRenderer.d.ts.map +1 -0
  334. package/dist/rendering/BezierShaderMaterial.d.ts +50 -0
  335. package/dist/rendering/BezierShaderMaterial.d.ts.map +1 -0
  336. package/dist/rendering/index.d.ts +10 -0
  337. package/dist/rendering/index.d.ts.map +1 -0
  338. package/dist/utils/Performance.d.ts +118 -0
  339. package/dist/utils/Performance.d.ts.map +1 -0
  340. package/dist/utils/featureFlags.d.ts +15 -0
  341. package/dist/utils/featureFlags.d.ts.map +1 -0
  342. package/dist/utils/hungarian.d.ts +66 -0
  343. package/dist/utils/hungarian.d.ts.map +1 -0
  344. package/dist/utils/logger.d.ts +14 -0
  345. package/dist/utils/logger.d.ts.map +1 -0
  346. package/dist/utils/math.d.ts +52 -0
  347. package/dist/utils/math.d.ts.map +1 -0
  348. package/dist/utils/ode.d.ts +135 -0
  349. package/dist/utils/ode.d.ts.map +1 -0
  350. package/dist/utils/skeletonize.d.ts +35 -0
  351. package/dist/utils/skeletonize.d.ts.map +1 -0
  352. package/dist/utils/triangulate.d.ts +54 -0
  353. package/dist/utils/triangulate.d.ts.map +1 -0
  354. package/dist/utils/vectors.d.ts +57 -0
  355. package/dist/utils/vectors.d.ts.map +1 -0
  356. package/package.json +122 -0
@@ -0,0 +1,419 @@
1
+ import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';
2
+ import { Mobject, Vector3Tuple } from './Mobject';
3
+ /**
4
+ * Vectorized Mobject - a mobject defined by cubic Bezier curves.
5
+ * This is the base class for all path-based shapes.
6
+ *
7
+ * Points are stored as cubic Bezier control points:
8
+ * [anchor1, handle1, handle2, anchor2, handle3, handle4, anchor3, ...]
9
+ *
10
+ * Each curve segment uses 4 points: anchor -> handle -> handle -> anchor
11
+ * Consecutive segments share the anchor point.
12
+ */
13
+ import * as THREE from 'three';
14
+ /**
15
+ * 2D Point interface for backward compatibility
16
+ */
17
+ export interface Point {
18
+ x: number;
19
+ y: number;
20
+ }
21
+ /**
22
+ * Vectorized mobject class for path-based shapes.
23
+ */
24
+ export declare class VMobject extends Mobject {
25
+ /**
26
+ * Array of cubic Bezier control points in 3D.
27
+ * Each point is [x, y, z].
28
+ * Stored as: [anchor1, handle1, handle2, anchor2, handle3, handle4, anchor3, ...]
29
+ */
30
+ protected _points3D: number[][];
31
+ /** Number of points visible (for Create animation) */
32
+ protected _visiblePointCount: number | null;
33
+ /** Three.js stroke material (Line2 LineMaterial for thick strokes) */
34
+ protected _strokeMaterial: LineMaterial | null;
35
+ /** Three.js fill material */
36
+ protected _fillMaterial: THREE.MeshBasicMaterial | null;
37
+ /** Whether geometry needs rebuild (separate from material dirty) */
38
+ protected _geometryDirty: boolean;
39
+ /** Cached Line2 for in-place geometry updates (avoids dispose/recreate) */
40
+ private _cachedLine2;
41
+ /** Cached Line2 array for multi-subpath stroke rendering */
42
+ private _cachedLine2Array;
43
+ /** Cached fill mesh for in-place geometry updates */
44
+ private _cachedFillMesh;
45
+ /** Renderer resolution for LineMaterial (set by Scene) */
46
+ static _rendererWidth: number;
47
+ static _rendererHeight: number;
48
+ /** Camera frame width in world units (set by Scene, for stroke width conversion) */
49
+ static _frameWidth: number;
50
+ /**
51
+ * Convert Manim-compatible strokeWidth to LineMaterial linewidth in pixels.
52
+ * Python Manim uses cairo_line_width_multiple=0.01, so:
53
+ * linewidth_px = strokeWidth * 0.01 * (rendererWidth / frameWidth)
54
+ */
55
+ static _toLinewidth(strokeWidth: number): number;
56
+ /**
57
+ * When true, VMobjects use GPU Bezier SDF shaders for stroke rendering
58
+ * instead of the default Line2/LineMaterial approach. This produces
59
+ * ManimGL-quality anti-aliased curves with variable stroke width and
60
+ * round caps. Default: false (opt-in).
61
+ */
62
+ static useShaderCurves: boolean;
63
+ /** Shared BezierRenderer instance (lazy-initialized when useShaderCurves is first used) */
64
+ private static _sharedBezierRenderer;
65
+ /** Per-instance: cached Bezier SDF stroke mesh */
66
+ private _cachedBezierMesh;
67
+ /** Per-instance override for shader curves (null = use static default) */
68
+ private _useShaderCurvesOverride;
69
+ /**
70
+ * When true, render stroke as a mesh ring with miter-joined corners instead
71
+ * of Line2 for closed paths. Falls back to Line2 for open/partial paths
72
+ * (e.g. during Create/Uncreate animations).
73
+ */
74
+ useStrokeMesh: boolean;
75
+ /** Cached mesh-based stroke ring */
76
+ private _cachedStrokeMesh;
77
+ /** Material for mesh-based stroke */
78
+ private _strokeMeshMaterial;
79
+ /**
80
+ * Get the shared BezierRenderer, creating it if needed.
81
+ */
82
+ private static _getBezierRenderer;
83
+ constructor();
84
+ /**
85
+ * Check whether this instance should use shader-based Bezier curve rendering.
86
+ * Returns the per-instance override if set, otherwise the class-level default.
87
+ */
88
+ get shaderCurves(): boolean;
89
+ /**
90
+ * Enable or disable shader-based Bezier curve rendering for this instance.
91
+ * Pass `null` to revert to the class-level VMobject.useShaderCurves default.
92
+ */
93
+ set shaderCurves(value: boolean | null);
94
+ /**
95
+ * Get all points as 2D Point objects (derived from _points3D)
96
+ */
97
+ get points(): Point[];
98
+ /**
99
+ * Set the points defining this VMobject.
100
+ * Accepts either Point[] ({x, y} objects) or number[][] ([x, y, z] arrays).
101
+ * @param points - Array of points in either format
102
+ * @returns this for chaining
103
+ */
104
+ setPoints(points: Point[] | number[][]): this;
105
+ /**
106
+ * Set the points defining this VMobject using 3D arrays (alias for setPoints with number[][])
107
+ * @param points - Array of [x, y, z] control points for cubic Bezier curves
108
+ * @returns this for chaining
109
+ */
110
+ setPoints3D(points: number[][]): this;
111
+ /**
112
+ * Get all points defining this VMobject as 3D arrays
113
+ * @returns Copy of the points array
114
+ */
115
+ getPoints(): number[][];
116
+ /**
117
+ * Get the number of points
118
+ */
119
+ get numPoints(): number;
120
+ /**
121
+ * Get the number of visible points (for Create animation)
122
+ */
123
+ get visiblePointCount(): number;
124
+ /**
125
+ * Set the number of visible points (for Create animation)
126
+ */
127
+ set visiblePointCount(count: number);
128
+ /**
129
+ * Get points that should be visible (for rendering) as 2D Points
130
+ */
131
+ getVisiblePoints(): Point[];
132
+ /**
133
+ * Get points that should be visible (for rendering) as 3D arrays
134
+ */
135
+ getVisiblePoints3D(): number[][];
136
+ /**
137
+ * Add points to this VMobject using 2D Point objects
138
+ */
139
+ addPoints(...points: Point[]): this;
140
+ /**
141
+ * Set the points to form straight line segments between corner points.
142
+ * Each pair of consecutive corners becomes a cubic Bezier with linear handles.
143
+ * Matches Manim's set_points_as_corners.
144
+ * @param corners Array of [x, y, z] corner points
145
+ * @returns this for chaining
146
+ */
147
+ setPointsAsCorners(corners: number[][]): this;
148
+ /**
149
+ * Add straight line segments from the last point to each corner.
150
+ * Each corner creates a new cubic Bezier segment with linear handles.
151
+ * Matches Manim's add_points_as_corners.
152
+ * @param corners Array of [x, y, z] corner points to connect to
153
+ * @returns this for chaining
154
+ */
155
+ addPointsAsCorners(corners: number[][]): this;
156
+ /**
157
+ * Clear all points
158
+ */
159
+ clearPoints(): this;
160
+ /**
161
+ * Interpolate this VMobject towards a target VMobject
162
+ * @param target - The target VMobject to interpolate towards
163
+ * @param alpha - Progress from 0 (this) to 1 (target)
164
+ * @returns this for chaining
165
+ */
166
+ interpolate(target: VMobject, alpha: number): this;
167
+ /**
168
+ * Align points between this VMobject and a target so they have the same count.
169
+ * This is necessary for smooth morphing animations.
170
+ * @param target - The target VMobject to align with
171
+ */
172
+ alignPoints(target: VMobject): void;
173
+ /**
174
+ * Interpolate a 3D point list to have a specific number of points.
175
+ */
176
+ protected _interpolatePointList3D(points: number[][], targetCount: number): number[][];
177
+ /**
178
+ * Convert Bezier control points to a Three.js Shape for filled rendering.
179
+ * @returns THREE.Shape representing the path
180
+ */
181
+ protected _pointsToShape(): THREE.Shape;
182
+ /**
183
+ * Convert points to a THREE.CurvePath for stroke rendering
184
+ */
185
+ protected _pointsToCurvePath(): THREE.CurvePath<THREE.Vector3>;
186
+ /**
187
+ * Build a THREE.BufferGeometry for the filled region using earcut triangulation.
188
+ *
189
+ * Earcut handles concave polygons, self-intersecting paths, and holes far
190
+ * more robustly than Three.js' built-in ShapeGeometry triangulator, which
191
+ * is a simple ear-clipping implementation that struggles with complex SVG
192
+ * outlines.
193
+ *
194
+ * If earcut returns zero triangles (completely degenerate input) we fall
195
+ * back to THREE.ShapeGeometry so existing simple shapes still render.
196
+ *
197
+ * @param points3D - The visible Bezier control points
198
+ * @returns A BufferGeometry ready for use as a fill mesh, or null if the
199
+ * polygon is too degenerate even for fallback.
200
+ */
201
+ protected _buildEarcutFillGeometry(points3D: number[][]): THREE.BufferGeometry | null;
202
+ /**
203
+ * Build fill geometry for multi-subpath shapes (e.g. boolean XOR).
204
+ * Splits control points by subpath boundaries, samples each independently,
205
+ * and triangulates each subpath as a separate region.
206
+ */
207
+ private _buildEarcutFillGeometryMulti;
208
+ /**
209
+ * Sample the Bezier path into a 2D polyline suitable for earcut triangulation.
210
+ *
211
+ * This is similar to _sampleBezierPath but returns [x, y] pairs (no z) and
212
+ * skips duplicate-point de-duplication at segment boundaries (earcut handles
213
+ * that correctly and de-dup can introduce off-by-one for hole indices).
214
+ */
215
+ private _sampleBezierOutline;
216
+ /**
217
+ * Split a sampled outline into separate rings based on subpath control-point
218
+ * lengths. Used for compound paths (outer boundary + holes).
219
+ *
220
+ * Each subpath length is the number of Bezier control points. We compute
221
+ * how many sampled points each subpath produced and split accordingly.
222
+ */
223
+ /**
224
+ * Create the Three.js backing object for this VMobject.
225
+ * Creates both stroke (using Line2 for thick, smooth strokes) and fill meshes.
226
+ */
227
+ protected _createThreeObject(): THREE.Object3D;
228
+ /**
229
+ * Update the geometry within the Three.js group.
230
+ * Reuses existing Line2 / Mesh objects when possible to avoid expensive
231
+ * dispose-and-recreate cycles during per-frame animation updates.
232
+ *
233
+ * When `shaderCurves` is enabled, stroke rendering uses GPU Bezier SDF
234
+ * shaders via BezierRenderer instead of the Line2 polyline approach.
235
+ */
236
+ protected _updateGeometry(group: THREE.Group): void;
237
+ /**
238
+ * Update stroke using the classic Line2 approach (polyline approximation).
239
+ * Supports subpath-aware rendering: when getSubpaths() returns multiple
240
+ * subpaths, each is rendered as a separate Line2 to avoid visible bridge lines.
241
+ */
242
+ private _updateLine2Stroke;
243
+ /**
244
+ * Render multiple separate Line2 strokes, one per subpath.
245
+ */
246
+ private _updateLine2StrokeMulti;
247
+ /**
248
+ * Check if the Bezier control points form a closed path (first ≈ last anchor).
249
+ */
250
+ private _isClosedPath;
251
+ /**
252
+ * Build a mesh-based stroke ring from a closed sampled path.
253
+ * Uses miter joins at corners for pixel-perfect sharp corners.
254
+ * Stroke width is in world units (strokeWidth * 0.005 per side).
255
+ */
256
+ private _updateMeshStroke;
257
+ /**
258
+ * Remove the cached mesh-based stroke ring.
259
+ */
260
+ private _removeMeshStroke;
261
+ /**
262
+ * Remove all cached multi-subpath Line2 objects.
263
+ */
264
+ private _clearCachedLine2Array;
265
+ /**
266
+ * Update stroke using GPU Bezier SDF shader (ManimGL-quality rendering).
267
+ * Each cubic Bezier segment becomes one instanced quad rendered by the
268
+ * BezierShaderMaterial fragment shader.
269
+ */
270
+ private _updateBezierStroke;
271
+ /**
272
+ * Dispose and remove all children from a Three.js group
273
+ */
274
+ private _disposeGroupChildren;
275
+ /**
276
+ * Sample Bezier curves for smooth rendering.
277
+ * Uses adaptive sampling: nearly-linear segments (from prepareForNonlinearTransform)
278
+ * use only their endpoints, avoiding expensive per-sample Bezier evaluation.
279
+ *
280
+ * @param points - Bezier control points
281
+ * @param samplesPerSegment - Number of samples per curved Bezier segment
282
+ * @returns Sampled points along the path
283
+ */
284
+ private _sampleBezierPath;
285
+ /**
286
+ * Check if a cubic Bezier segment is nearly linear by measuring the maximum
287
+ * distance from handles to the chord (p0 → p3).
288
+ */
289
+ private static _isNearlyLinear;
290
+ /**
291
+ * Sync material properties to Three.js
292
+ */
293
+ protected _syncMaterialToThree(): void;
294
+ /**
295
+ * Create a copy of this VMobject
296
+ */
297
+ protected _createCopy(): VMobject;
298
+ /**
299
+ * Get the unit vector from the first to the last point of this VMobject,
300
+ * accounting for the object's current rotation transform.
301
+ */
302
+ getUnitVector(): Vector3Tuple;
303
+ /**
304
+ * Get the center of this VMobject based on its points.
305
+ * Uses bounding box center (matching Python Manim's get_center behavior)
306
+ * rather than point centroid, which is inaccurate for Bezier control points.
307
+ */
308
+ getCenter(): Vector3Tuple;
309
+ /**
310
+ * Clean up Three.js resources
311
+ */
312
+ dispose(): void;
313
+ }
314
+ /**
315
+ * Get the number of curve segments in a VMobject.
316
+ * Each cubic Bezier segment uses 4 points (anchor, handle, handle, anchor),
317
+ * with consecutive segments sharing anchors.
318
+ * @param vmobject - The VMobject to count curves from
319
+ * @returns Number of curve segments
320
+ */
321
+ export declare function getNumCurves(vmobject: VMobject): number;
322
+ /**
323
+ * Get the nth curve segment from a VMobject as a new VMobject.
324
+ * @param vmobject - The source VMobject
325
+ * @param n - Index of the curve segment (0-based)
326
+ * @returns A new VMobject containing just that curve segment
327
+ */
328
+ export declare function getNthCurve(vmobject: VMobject, n: number): VMobject;
329
+ /**
330
+ * Split a VMobject's curves into separate VMobject submobjects.
331
+ * Each cubic Bezier curve segment becomes its own VMobject child.
332
+ * Useful for animating parts of a path independently (e.g., staggered animations).
333
+ *
334
+ * @param vmobject - The VMobject to split
335
+ * @returns A new VMobject with each curve as a child submobject
336
+ *
337
+ * @example
338
+ * ```typescript
339
+ * const path = new VMobject();
340
+ * path.setPoints([...complex path with multiple curves...]);
341
+ *
342
+ * // Split into individual curves for staggered animation
343
+ * const curves = curvesAsSubmobjects(path);
344
+ *
345
+ * // Now animate each curve independently
346
+ * for (const curve of curves.children) {
347
+ * scene.play(Create(curve));
348
+ * }
349
+ * ```
350
+ */
351
+ export declare function curvesAsSubmobjects(vmobject: VMobject): VMobject;
352
+ /**
353
+ * CurvesAsSubmobjects class - Splits a VMobject's curves into separate submobjects.
354
+ *
355
+ * This class extends VMobject and creates children where each child is a single
356
+ * cubic Bezier curve segment from the source VMobject. This is useful for:
357
+ * - Staggered animations (animate each curve segment with delay)
358
+ * - Per-curve styling (color each segment differently)
359
+ * - Selective curve manipulation
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * const path = new VMobject();
364
+ * path.setPoints([...]);
365
+ *
366
+ * const curves = new CurvesAsSubmobjects(path);
367
+ *
368
+ * // Access individual curves
369
+ * curves.children[0].setColor('red');
370
+ * curves.children[1].setColor('blue');
371
+ * ```
372
+ */
373
+ export declare class CurvesAsSubmobjects extends VMobject {
374
+ /** The source VMobject this was created from */
375
+ protected _source: VMobject | null;
376
+ /**
377
+ * Create a CurvesAsSubmobjects from a VMobject.
378
+ * @param vmobject - The VMobject to split into curve submobjects
379
+ */
380
+ constructor(vmobject?: VMobject);
381
+ /**
382
+ * Set up this object from a VMobject, splitting its curves into children.
383
+ * @param vmobject - The source VMobject
384
+ * @returns this for chaining
385
+ */
386
+ setFromVMobject(vmobject: VMobject): this;
387
+ /**
388
+ * Get the number of curve segments (same as number of children).
389
+ */
390
+ get numCurves(): number;
391
+ /**
392
+ * Get the nth curve as a VMobject.
393
+ * @param n - Index of the curve (0-based)
394
+ * @returns The curve VMobject at that index
395
+ */
396
+ getCurve(n: number): VMobject;
397
+ /**
398
+ * Iterate over all curves.
399
+ */
400
+ [Symbol.iterator](): Iterator<VMobject>;
401
+ /**
402
+ * Apply a function to each curve.
403
+ * @param fn - Function to apply
404
+ * @returns this for chaining
405
+ */
406
+ forEach(fn: (curve: VMobject, index: number) => void): this;
407
+ /**
408
+ * Map over all curves.
409
+ * @param fn - Mapping function
410
+ * @returns Array of mapped values
411
+ */
412
+ map<T>(fn: (curve: VMobject, index: number) => T): T[];
413
+ /**
414
+ * Create a copy of this CurvesAsSubmobjects.
415
+ */
416
+ protected _createCopy(): VMobject;
417
+ }
418
+ export default VMobject;
419
+ //# sourceMappingURL=VMobject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VMobject.d.ts","sourceRoot":"","sources":["../../src/core/VMobject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export { Mobject, type MobjectStyle, type Vector3Tuple } from './Mobject';
2
+ export { VMobject, type Point, CurvesAsSubmobjects, curvesAsSubmobjects, getNumCurves, getNthCurve, } from './VMobject';
3
+ export { Group } from './Group';
4
+ export { VGroup } from './VGroup';
5
+ export { VDict, VectorizedPoint } from './VDict';
6
+ export { Scene, type SceneOptions } from './Scene';
7
+ export { Camera2D, Camera3D, type CameraOptions, type Camera3DOptions } from './Camera';
8
+ export { MovingCamera, ThreeDCamera, MultiCamera, type MovingCameraOptions, type ThreeDCameraOptions, type CameraAnimationOptions, type CameraViewport, type CameraEntry, type MultiCameraOptions, } from './CameraExtensions';
9
+ export { CameraFrame, CameraAnimateProxy, type CameraFrameOptions, type CameraFrameState, type CameraAnimationOptions as CameraFrameAnimationOptions, } from './CameraFrame';
10
+ export { Renderer, type RendererOptions } from './Renderer';
11
+ export { SceneStateManager, serializeMobject, deserializeMobject, saveMobjectState, restoreMobjectState, stateToJSON, stateFromJSON, snapshotToJSON, snapshotFromJSON, type MobjectState, type SceneSnapshot, } from './StateManager';
12
+ export { AudioManager, type AudioTrack, type AddSoundOptions } from './AudioManager';
13
+ export { InteractiveScene, type InteractiveSceneOptions } from './InteractiveScene';
14
+ export { Lighting, type AmbientLightOptions, type DirectionalLightOptions, type PointLightOptions, type SpotLightOptions } from './Lighting';
15
+ export { ThreeDScene, MovingCameraScene, ZoomedScene, VectorScene, LinearTransformationScene, type ThreeDSceneOptions, type MovingCameraSceneOptions, type ZoomedSceneOptions, type VectorSceneOptions, type LinearTransformationSceneOptions, type Matrix2D, } from './SceneExtensions';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EACL,QAAQ,EACR,KAAK,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,IAAI,2BAA2B,GAC3D,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,KAAK,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7I,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gCAAgC,EACrC,KAAK,QAAQ,GACd,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=examples.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples.test.d.ts","sourceRoot":"","sources":["../src/examples.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { Scene } from '../core/Scene';
2
+ interface GifExportOptions {
3
+ fps?: number;
4
+ quality?: number;
5
+ width?: number;
6
+ height?: number;
7
+ duration?: number;
8
+ workers?: number;
9
+ repeat?: number;
10
+ onProgress?: (progress: number) => void;
11
+ }
12
+ export declare class GifExporter {
13
+ private _scene;
14
+ private _options;
15
+ constructor(scene: Scene, options?: GifExportOptions);
16
+ /**
17
+ * Export the timeline as a GIF
18
+ */
19
+ exportTimeline(duration?: number): Promise<Blob>;
20
+ /**
21
+ * Get timeline duration if available
22
+ */
23
+ private _getTimelineDuration;
24
+ /**
25
+ * Get the worker script URL
26
+ * gif.js requires a worker script for encoding
27
+ */
28
+ private _getWorkerScript;
29
+ /**
30
+ * Download the GIF
31
+ */
32
+ static download(blob: Blob, filename?: string): void;
33
+ /**
34
+ * Convenience method: export and download
35
+ */
36
+ exportAndDownload(filename?: string, duration?: number): Promise<void>;
37
+ }
38
+ export declare function createGifExporter(scene: Scene, options?: GifExportOptions): GifExporter;
39
+ export type { GifExportOptions };
40
+ //# sourceMappingURL=GifExporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GifExporter.d.ts","sourceRoot":"","sources":["../../src/export/GifExporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAepD;;OAEG;IACG,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDtD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,MAAwB,GAAG,IAAI;IAWrE;;OAEG;IACG,iBAAiB,CAAC,QAAQ,GAAE,MAAwB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI9F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAEvF;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,135 @@
1
+ import { Scene } from '../core/Scene';
2
+ import { AudioManager } from '../core/AudioManager';
3
+ /**
4
+ * Options for configuring video export.
5
+ */
6
+ export interface VideoExportOptions {
7
+ /** Frames per second. Defaults to 60. */
8
+ fps?: number;
9
+ /** Quality from 0-1. Defaults to 0.9. */
10
+ quality?: number;
11
+ /** Video format. Defaults to 'webm' (mp4 requires additional browser codec support). */
12
+ format?: 'webm' | 'mp4';
13
+ /** Output width in pixels. Defaults to scene width. */
14
+ width?: number;
15
+ /** Output height in pixels. Defaults to scene height. */
16
+ height?: number;
17
+ /** Duration in seconds. Auto-detects from timeline if not specified. */
18
+ duration?: number;
19
+ /** Progress callback (0-1). */
20
+ onProgress?: (progress: number) => void;
21
+ /**
22
+ * Include audio from the scene's AudioManager in the exported video.
23
+ * Defaults to true when the scene has audio tracks loaded.
24
+ */
25
+ includeAudio?: boolean;
26
+ /**
27
+ * Provide an external AudioManager to use for the audio track.
28
+ * If not specified, the scene's audioManager is used.
29
+ */
30
+ audioManager?: AudioManager;
31
+ }
32
+ interface ResolvedVideoExportOptions {
33
+ fps: number;
34
+ quality: number;
35
+ format: 'webm' | 'mp4';
36
+ width: number;
37
+ height: number;
38
+ duration: number;
39
+ onProgress: (progress: number) => void;
40
+ includeAudio: boolean;
41
+ audioManager: AudioManager | null;
42
+ }
43
+ /**
44
+ * Video exporter for manimweb scenes.
45
+ * Uses the MediaRecorder API for browser-native recording.
46
+ *
47
+ * WebM with VP9 has the best browser support.
48
+ * MP4 encoding requires browser support (limited availability).
49
+ *
50
+ * Frame-by-frame export gives consistent results vs real-time recording.
51
+ *
52
+ * When `includeAudio` is true (default when audio tracks exist), the exported
53
+ * video includes the mixed-down audio from the scene's AudioManager.
54
+ */
55
+ export declare class VideoExporter {
56
+ private _scene;
57
+ private _options;
58
+ private _mediaRecorder;
59
+ private _recordedChunks;
60
+ private _isRecording;
61
+ /**
62
+ * Create a new VideoExporter.
63
+ * @param scene - The scene to export
64
+ * @param options - Export options
65
+ */
66
+ constructor(scene: Scene, options?: VideoExportOptions);
67
+ /**
68
+ * Get the AudioManager to use for export.
69
+ * Returns the explicitly provided one, or the scene's manager if it has tracks.
70
+ */
71
+ private _getAudioManager;
72
+ /**
73
+ * Start recording the scene.
74
+ * If audio is available and `includeAudio` is true, the audio stream
75
+ * is merged into the recording.
76
+ * @throws Error if already recording or format not supported
77
+ */
78
+ startRecording(): Promise<void>;
79
+ /**
80
+ * Stop recording and return the video blob.
81
+ * @returns Promise resolving to the video Blob
82
+ * @throws Error if not recording
83
+ */
84
+ stopRecording(): Promise<Blob>;
85
+ /**
86
+ * Export a specific duration of the timeline.
87
+ * Renders frame-by-frame for consistent results.
88
+ *
89
+ * If the scene has audio and `includeAudio` is true, audio is included
90
+ * in the exported video file.
91
+ *
92
+ * @param duration - Duration to export in seconds (auto-detects from timeline if not specified)
93
+ * @returns Promise resolving to the video Blob
94
+ */
95
+ exportTimeline(duration?: number): Promise<Blob>;
96
+ /**
97
+ * Export audio-only as a WAV Blob.
98
+ * Useful when you need the audio track separately (e.g., for external muxing).
99
+ *
100
+ * @param duration - Duration in seconds (defaults to timeline duration)
101
+ * @returns WAV Blob, or null if no audio is available
102
+ */
103
+ exportAudio(duration?: number): Promise<Blob | null>;
104
+ /**
105
+ * Download a video blob as a file.
106
+ * @param blob - The video blob to download
107
+ * @param filename - The filename (defaults to 'animation.webm')
108
+ */
109
+ static download(blob: Blob, filename?: string): void;
110
+ /**
111
+ * Convenience method: export timeline and download the result.
112
+ * @param filename - Optional filename (extension auto-added based on format)
113
+ * @param duration - Optional duration override
114
+ */
115
+ exportAndDownload(filename?: string, duration?: number): Promise<void>;
116
+ /**
117
+ * Check if currently recording.
118
+ * @returns true if recording is in progress
119
+ */
120
+ isRecording(): boolean;
121
+ /**
122
+ * Get the export options.
123
+ * @returns The resolved export options
124
+ */
125
+ getOptions(): Readonly<ResolvedVideoExportOptions>;
126
+ }
127
+ /**
128
+ * Factory function to create a VideoExporter.
129
+ * @param scene - The scene to export
130
+ * @param options - Export options
131
+ * @returns A new VideoExporter instance
132
+ */
133
+ export declare function createVideoExporter(scene: Scene, options?: VideoExportOptions): VideoExporter;
134
+ export {};
135
+ //# sourceMappingURL=VideoExporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoExporter.d.ts","sourceRoot":"","sources":["../../src/export/VideoExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,UAAU,0BAA0B;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,YAAY,CAAkB;IAEtC;;;;OAIG;gBACS,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAetD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiDrC;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBpC;;;;;;;;;OASG;IACG,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCtD;;;;;;OAMG;IACG,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ1D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,MAAyB,GAAG,IAAI;IAWtE;;;;OAIG;IACG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5E;;;OAGG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,UAAU,IAAI,QAAQ,CAAC,0BAA0B,CAAC;CAGnD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAE7F"}
@@ -0,0 +1,3 @@
1
+ export { GifExporter, createGifExporter, type GifExportOptions } from './GifExporter';
2
+ export { VideoExporter, createVideoExporter, type VideoExportOptions } from './VideoExporter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/export/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}