@maniclang/workbench 0.1.11

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 (644) hide show
  1. package/CONTRIBUTING.md +40 -0
  2. package/README.md +155 -0
  3. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  4. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  6. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  7. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  12. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  13. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  18. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  19. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  21. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  22. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  24. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  25. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  27. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  28. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  30. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  31. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  33. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  34. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  36. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  37. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  45. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  46. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  48. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  49. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  51. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  52. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  54. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  55. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  56. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  57. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  59. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  60. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  62. package/dist/client/assets/abap-CRCWOmpq.js +1 -0
  63. package/dist/client/assets/apex-DnsZk_dE.js +1 -0
  64. package/dist/client/assets/azcli-1IWB1ccx.js +1 -0
  65. package/dist/client/assets/bat-DPkNLes8.js +1 -0
  66. package/dist/client/assets/bicep-Corcdgou.js +2 -0
  67. package/dist/client/assets/cameligo-CGrWLZr3.js +1 -0
  68. package/dist/client/assets/clojure-D9WOWImG.js +1 -0
  69. package/dist/client/assets/codicon-CgENjH2v.ttf +0 -0
  70. package/dist/client/assets/coffee-B7EJu28W.js +1 -0
  71. package/dist/client/assets/cpp-SEyurbux.js +1 -0
  72. package/dist/client/assets/csharp-BoL64M5l.js +1 -0
  73. package/dist/client/assets/csp-C46ZqvIl.js +1 -0
  74. package/dist/client/assets/css-DQU6DXDx.js +3 -0
  75. package/dist/client/assets/cssMode-CtRONlr8.js +4 -0
  76. package/dist/client/assets/cypher-D84EuPTj.js +1 -0
  77. package/dist/client/assets/dart-D8lhlL1r.js +1 -0
  78. package/dist/client/assets/dockerfile-DLk6rpji.js +1 -0
  79. package/dist/client/assets/ecl-BO6FnfXk.js +1 -0
  80. package/dist/client/assets/editor.worker-CZyr7Ur9.js +26 -0
  81. package/dist/client/assets/elixir-BRjLKONM.js +1 -0
  82. package/dist/client/assets/flow9-Cac8vKd7.js +1 -0
  83. package/dist/client/assets/freemarker2-BTSNJUl8.js +3 -0
  84. package/dist/client/assets/fsharp-fd1GTHhf.js +1 -0
  85. package/dist/client/assets/go-O9LJTZXk.js +1 -0
  86. package/dist/client/assets/graphql-LQdxqEYJ.js +1 -0
  87. package/dist/client/assets/handlebars-qkUBjVg6.js +1 -0
  88. package/dist/client/assets/hcl-DxDQ3s82.js +1 -0
  89. package/dist/client/assets/html-pguqE00h.js +1 -0
  90. package/dist/client/assets/htmlMode-BCCLuk2F.js +4 -0
  91. package/dist/client/assets/index-BFrMLHHu.css +1 -0
  92. package/dist/client/assets/index-CdBC-xgi.js +1250 -0
  93. package/dist/client/assets/ini-BvajGCUy.js +1 -0
  94. package/dist/client/assets/java-SYsfObOQ.js +1 -0
  95. package/dist/client/assets/javascript-ciDUXdez.js +1 -0
  96. package/dist/client/assets/jsonMode-BmkXC0tI.js +10 -0
  97. package/dist/client/assets/julia-DQXNmw_w.js +1 -0
  98. package/dist/client/assets/kotlin-qQ0MG-9I.js +1 -0
  99. package/dist/client/assets/less-GGFNNJHn.js +2 -0
  100. package/dist/client/assets/lexon-Canl7DCW.js +1 -0
  101. package/dist/client/assets/liquid-CwE4UIwf.js +1 -0
  102. package/dist/client/assets/lua-D28Ae8-K.js +1 -0
  103. package/dist/client/assets/m3-DPitgjJI.js +1 -0
  104. package/dist/client/assets/markdown-B811l8j2.js +1 -0
  105. package/dist/client/assets/mdx-K_9Emnjy.js +1 -0
  106. package/dist/client/assets/mips-CdjsipkG.js +1 -0
  107. package/dist/client/assets/msdax-CYqgjx_P.js +1 -0
  108. package/dist/client/assets/mysql-BHd6q0vd.js +1 -0
  109. package/dist/client/assets/objective-c-B1aVtJYH.js +1 -0
  110. package/dist/client/assets/pascal-BhNW15KB.js +1 -0
  111. package/dist/client/assets/pascaligo-5jv8CcQD.js +1 -0
  112. package/dist/client/assets/perl-DlYyT36c.js +1 -0
  113. package/dist/client/assets/pgsql-Dy0bjov7.js +1 -0
  114. package/dist/client/assets/php-120yhfDK.js +1 -0
  115. package/dist/client/assets/pla-CjnFlu4u.js +1 -0
  116. package/dist/client/assets/postiats-CQpG440k.js +1 -0
  117. package/dist/client/assets/powerquery-DdJtto1Z.js +1 -0
  118. package/dist/client/assets/powershell-Bu_VLpJB.js +1 -0
  119. package/dist/client/assets/protobuf-IBS6jZEB.js +2 -0
  120. package/dist/client/assets/pug-kFxLfcjb.js +1 -0
  121. package/dist/client/assets/python-BzIc0EVe.js +1 -0
  122. package/dist/client/assets/qsharp-q7JyzKFN.js +1 -0
  123. package/dist/client/assets/r-BIFz-_sK.js +1 -0
  124. package/dist/client/assets/razor-lXZl6dtu.js +1 -0
  125. package/dist/client/assets/redis-CHOsPHWR.js +1 -0
  126. package/dist/client/assets/redshift-CBifECDb.js +1 -0
  127. package/dist/client/assets/restructuredtext-CghPJEOS.js +1 -0
  128. package/dist/client/assets/ruby-CYWGW-b1.js +1 -0
  129. package/dist/client/assets/rust-DMDD0SHb.js +1 -0
  130. package/dist/client/assets/sb-BYAiYHFx.js +1 -0
  131. package/dist/client/assets/scala-Bqvq8jcR.js +1 -0
  132. package/dist/client/assets/scheme-Dhb-2j9p.js +1 -0
  133. package/dist/client/assets/scss-CTwUZ5N7.js +3 -0
  134. package/dist/client/assets/shell-CsDZo4DB.js +1 -0
  135. package/dist/client/assets/solidity-CME5AdoB.js +1 -0
  136. package/dist/client/assets/sophia-RYC1BQQz.js +1 -0
  137. package/dist/client/assets/sparql-KEyrF7De.js +1 -0
  138. package/dist/client/assets/sql-BdTr02Mf.js +1 -0
  139. package/dist/client/assets/st-C7iG7M4S.js +1 -0
  140. package/dist/client/assets/swift-D7IUmUK8.js +1 -0
  141. package/dist/client/assets/systemverilog-DgMryOEJ.js +1 -0
  142. package/dist/client/assets/tcl-PloMZuKG.js +1 -0
  143. package/dist/client/assets/tsMode-BAXmgo_t.js +11 -0
  144. package/dist/client/assets/twig-BfRIq3la.js +1 -0
  145. package/dist/client/assets/typescript-Cdf8nS1n.js +1 -0
  146. package/dist/client/assets/typespec-CzxlYoT_.js +1 -0
  147. package/dist/client/assets/vb-BwAE3J76.js +1 -0
  148. package/dist/client/assets/wgsl-B_1kOXbF.js +298 -0
  149. package/dist/client/assets/xml-DGyPgYnj.js +1 -0
  150. package/dist/client/assets/yaml-Dqv3HtbL.js +1 -0
  151. package/dist/client/index.html +14 -0
  152. package/dist/client/manic-logo.png +0 -0
  153. package/dist/client/wasm/manic_lang.d.ts +74 -0
  154. package/dist/client/wasm/manic_lang.js +302 -0
  155. package/dist/client/wasm/manic_lang_bg.wasm +0 -0
  156. package/dist/client/wasm/manic_lang_bg.wasm.d.ts +13 -0
  157. package/dist/server/agentProtocol.d.ts +131 -0
  158. package/dist/server/agentProtocol.js +21 -0
  159. package/dist/server/agentProtocol.js.map +1 -0
  160. package/dist/server/agentRuns.d.ts +46 -0
  161. package/dist/server/agentRuns.js +138 -0
  162. package/dist/server/agentRuns.js.map +1 -0
  163. package/dist/server/agentThreads.d.ts +20 -0
  164. package/dist/server/agentThreads.js +205 -0
  165. package/dist/server/agentThreads.js.map +1 -0
  166. package/dist/server/aiSecrets.d.ts +21 -0
  167. package/dist/server/aiSecrets.js +68 -0
  168. package/dist/server/aiSecrets.js.map +1 -0
  169. package/dist/server/app.d.ts +34 -0
  170. package/dist/server/app.js +804 -0
  171. package/dist/server/app.js.map +1 -0
  172. package/dist/server/assets.d.ts +34 -0
  173. package/dist/server/assets.js +659 -0
  174. package/dist/server/assets.js.map +1 -0
  175. package/dist/server/candidateFix.d.ts +28 -0
  176. package/dist/server/candidateFix.js +111 -0
  177. package/dist/server/candidateFix.js.map +1 -0
  178. package/dist/server/cli.d.ts +2 -0
  179. package/dist/server/cli.js +118 -0
  180. package/dist/server/cli.js.map +1 -0
  181. package/dist/server/diagnostics.d.ts +13 -0
  182. package/dist/server/diagnostics.js +73 -0
  183. package/dist/server/diagnostics.js.map +1 -0
  184. package/dist/server/engineCheck.d.ts +7 -0
  185. package/dist/server/engineCheck.js +60 -0
  186. package/dist/server/engineCheck.js.map +1 -0
  187. package/dist/server/engineInstall.d.ts +34 -0
  188. package/dist/server/engineInstall.js +228 -0
  189. package/dist/server/engineInstall.js.map +1 -0
  190. package/dist/server/enginePaths.d.ts +3 -0
  191. package/dist/server/enginePaths.js +76 -0
  192. package/dist/server/enginePaths.js.map +1 -0
  193. package/dist/server/folderPicker.d.ts +1 -0
  194. package/dist/server/folderPicker.js +54 -0
  195. package/dist/server/folderPicker.js.map +1 -0
  196. package/dist/server/manicAgent.d.ts +75 -0
  197. package/dist/server/manicAgent.js +476 -0
  198. package/dist/server/manicAgent.js.map +1 -0
  199. package/dist/server/manicEnv.d.ts +18 -0
  200. package/dist/server/manicEnv.js +64 -0
  201. package/dist/server/manicEnv.js.map +1 -0
  202. package/dist/server/promptStore.d.ts +11 -0
  203. package/dist/server/promptStore.js +85 -0
  204. package/dist/server/promptStore.js.map +1 -0
  205. package/dist/server/renderJobs.d.ts +54 -0
  206. package/dist/server/renderJobs.js +290 -0
  207. package/dist/server/renderJobs.js.map +1 -0
  208. package/dist/server/settings.d.ts +40 -0
  209. package/dist/server/settings.js +262 -0
  210. package/dist/server/settings.js.map +1 -0
  211. package/dist/server/smartDraw.d.ts +7 -0
  212. package/dist/server/smartDraw.js +88 -0
  213. package/dist/server/smartDraw.js.map +1 -0
  214. package/dist/server/workspace.d.ts +27 -0
  215. package/dist/server/workspace.js +172 -0
  216. package/dist/server/workspace.js.map +1 -0
  217. package/examples/.manic-output/40b6f3b9-7638-4c0e-bb4f-570d45d1b225/job.json +26 -0
  218. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/job.json +26 -0
  219. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/markers.json +13 -0
  220. package/examples/.manic-output/993f3788-f75e-445c-ba45-c401907b3c02/out.mp4 +0 -0
  221. package/examples/.manic-workbench-threads/thread_3ce7448a13f64f9e887d1bc8106a97a8.json +45 -0
  222. package/examples/.manic-workbench-threads/thread_d494cda29249477591056234719e4a3a.json +21 -0
  223. package/examples/.manic-workbench-threads/thread_e98ebdc225184ea5b8ddda8b44541f63.json +29 -0
  224. package/examples/README.md +35 -0
  225. package/examples/a-story-1.manic +222 -0
  226. package/examples/a-story.manic +100 -0
  227. package/examples/achromat-cinematic.manic +105 -0
  228. package/examples/achromat.manic +32 -0
  229. package/examples/aes-decrypt.manic +359 -0
  230. package/examples/aes-encrypt.manic +359 -0
  231. package/examples/aes-round.manic +70 -0
  232. package/examples/aes-story.manic +622 -0
  233. package/examples/ai-story.manic +118 -0
  234. package/examples/analysis.manic +53 -0
  235. package/examples/archimedes_pi.manic +89 -0
  236. package/examples/area_under_curve.manic +131 -0
  237. package/examples/art-rakkan.manic +69 -0
  238. package/examples/aspheric-lens.manic +32 -0
  239. package/examples/astronomical-watch.manic +96 -0
  240. package/examples/asymptote-randomwalk3-reference.manic +58 -0
  241. package/examples/asymptote-tiling-reference.manic +65 -0
  242. package/examples/aws-clustered-web-services.manic +186 -0
  243. package/examples/aws-event-processing-clusters-poc.manic +97 -0
  244. package/examples/aws-three-tier-web-application.manic +134 -0
  245. package/examples/band.manic +43 -0
  246. package/examples/banner.manic +37 -0
  247. package/examples/bayes.manic +27 -0
  248. package/examples/bellcurve.manic +41 -0
  249. package/examples/bfs_dfs.manic +35 -0
  250. package/examples/block-tackle.manic +26 -0
  251. package/examples/bloom-scope.manic +172 -0
  252. package/examples/boolean.manic +46 -0
  253. package/examples/boxplot-wave.manic +93 -0
  254. package/examples/boxplot.manic +43 -0
  255. package/examples/brace.manic +46 -0
  256. package/examples/brachistochrone-annotated.manic +51 -0
  257. package/examples/brachistochrone.manic +27 -0
  258. package/examples/bubble_sort.manic +41 -0
  259. package/examples/bullet-block-annotated.manic +48 -0
  260. package/examples/bullet-block.manic +11 -0
  261. package/examples/bullet-impact.manic +65 -0
  262. package/examples/bungee.manic +9 -0
  263. package/examples/c4-internet-banking-components.manic +33 -0
  264. package/examples/c4-internet-banking-containers.manic +29 -0
  265. package/examples/c4-internet-banking.manic +26 -0
  266. package/examples/c4-story.manic +171 -0
  267. package/examples/c4-test.manic +52 -0
  268. package/examples/c4-zoom.manic +69 -0
  269. package/examples/calculus-demo.manic +129 -0
  270. package/examples/calculus-one.manic +288 -0
  271. package/examples/captions.manic +31 -0
  272. package/examples/car-suspension-annotated.manic +57 -0
  273. package/examples/car-suspension.manic +8 -0
  274. package/examples/cart-pendulum.manic +11 -0
  275. package/examples/charts-bar-line.manic +26 -0
  276. package/examples/charts-column-race.manic +19 -0
  277. package/examples/charts-gdp-race.manic +43 -0
  278. package/examples/charts-german-elections.manic +28 -0
  279. package/examples/charts-line-race.manic +21 -0
  280. package/examples/circle-in-three.manic +156 -0
  281. package/examples/circle-thirds-no-triangle.manic +161 -0
  282. package/examples/clip-window.manic +34 -0
  283. package/examples/cloud-feathers.manic +50 -0
  284. package/examples/cloud-jellyfish-v2.manic +87 -0
  285. package/examples/cloud-jellyfish.manic +48 -0
  286. package/examples/cloud-kaleidoscope.manic +48 -0
  287. package/examples/cloud-koi.manic +51 -0
  288. package/examples/cloud-lissajous.manic +23 -0
  289. package/examples/cloud-medusae.manic +46 -0
  290. package/examples/cloud-phoenix.manic +49 -0
  291. package/examples/cloud-plumes.manic +47 -0
  292. package/examples/cloud-pottery.manic +104 -0
  293. package/examples/cloud-shells.manic +50 -0
  294. package/examples/cloud-starfield.manic +23 -0
  295. package/examples/cloud-wave-lattice.manic +23 -0
  296. package/examples/cloud-word.manic +31 -0
  297. package/examples/cloud3-ripple.manic +53 -0
  298. package/examples/cloud3-sphere.manic +26 -0
  299. package/examples/clt.manic +35 -0
  300. package/examples/collide-blocks-annotated.manic +45 -0
  301. package/examples/collide-blocks.manic +11 -0
  302. package/examples/compare-pendulum.manic +11 -0
  303. package/examples/complex-flowchart.manic +196 -0
  304. package/examples/compound-pulley.manic +25 -0
  305. package/examples/conics.manic +46 -0
  306. package/examples/coordinates.manic +52 -0
  307. package/examples/correlation.manic +35 -0
  308. package/examples/covariance.manic +30 -0
  309. package/examples/creator-affine-fern-growth.manic +72 -0
  310. package/examples/creator-bowl-to-saddle.manic +86 -0
  311. package/examples/creator-branch-counting-tree3.manic +77 -0
  312. package/examples/creator-chaos-game-fern.manic +72 -0
  313. package/examples/creator-circle-inversion-chain.manic +61 -0
  314. package/examples/creator-convex-hull-depth.manic +59 -0
  315. package/examples/creator-coordinate-worlds.manic +182 -0
  316. package/examples/creator-ellipse-reflection-property.manic +59 -0
  317. package/examples/creator-free-kicks.manic +261 -0
  318. package/examples/creator-geometry-language-showcase.manic +259 -0
  319. package/examples/creator-geometry-morph-promo.manic +151 -0
  320. package/examples/creator-heightmap-world.manic +130 -0
  321. package/examples/creator-hilbert3-spatial-index.manic +203 -0
  322. package/examples/creator-how-rocket-launch-works.manic +192 -0
  323. package/examples/creator-implicit-surface-parameterized.manic +51 -0
  324. package/examples/creator-incenter-dissection.manic +56 -0
  325. package/examples/creator-lattice-paths.manic +118 -0
  326. package/examples/creator-line-inversion.manic +49 -0
  327. package/examples/creator-lsystem-fractal-curve.manic +121 -0
  328. package/examples/creator-mandelbrot-escape-test.manic +58 -0
  329. package/examples/creator-monty-hall.manic +104 -0
  330. package/examples/creator-noise-story.manic +123 -0
  331. package/examples/creator-one-tile-pattern-story.manic +169 -0
  332. package/examples/creator-pathfinding.manic +82 -0
  333. package/examples/creator-point-to-plane-distance.manic +167 -0
  334. package/examples/creator-race-quiz.manic +76 -0
  335. package/examples/creator-randomwalk3-diffusion.manic +72 -0
  336. package/examples/creator-reflected-ellipse.manic +48 -0
  337. package/examples/creator-rule90-sierpinski.manic +64 -0
  338. package/examples/creator-three-shadows-of-a-curve.manic +48 -0
  339. package/examples/creator-trigonometry-one-angle.manic +307 -0
  340. package/examples/creator-v2-latex-algebra.manic +29 -0
  341. package/examples/creator-v2-latex-calculus.manic +37 -0
  342. package/examples/creator-v2-latex-physics.manic +29 -0
  343. package/examples/creator-v2-olympiad-geometry.manic +92 -0
  344. package/examples/creator-v2-options-socials.manic +21 -0
  345. package/examples/creator-v2-timers.manic +25 -0
  346. package/examples/creator-v2-timing-square.manic +25 -0
  347. package/examples/creator-v2-timing.manic +34 -0
  348. package/examples/creator-v2.manic +36 -0
  349. package/examples/creator-why-rockets-use-stages.manic +198 -0
  350. package/examples/creator-wrap-real-line.manic +51 -0
  351. package/examples/cubic-graphs.manic +432 -0
  352. package/examples/curve-features.manic +41 -0
  353. package/examples/definedmotion-fourier-gallery.manic +171 -0
  354. package/examples/derivative-of-ln-x.manic +194 -0
  355. package/examples/diagonalise.manic +56 -0
  356. package/examples/dijkstra.manic +29 -0
  357. package/examples/dimensions-unfold.manic +211 -0
  358. package/examples/disc-integration.manic +172 -0
  359. package/examples/double-incline.manic +9 -0
  360. package/examples/double-integral3.manic +43 -0
  361. package/examples/double-pendulum.manic +35 -0
  362. package/examples/double-spring.manic +9 -0
  363. package/examples/drop-mass.manic +25 -0
  364. package/examples/eigen3.manic +34 -0
  365. package/examples/equal_cuts.manic +44 -0
  366. package/examples/equation.manic +16 -0
  367. package/examples/equilateral.manic +57 -0
  368. package/examples/euler_line.manic +51 -0
  369. package/examples/exponential-shells.manic +188 -0
  370. package/examples/extrude3.manic +37 -0
  371. package/examples/factorial-flowchart.manic +69 -0
  372. package/examples/fibonacci-sphere.manic +57 -0
  373. package/examples/flow-lorenz.manic +47 -0
  374. package/examples/fourier-series-live-wave.manic +114 -0
  375. package/examples/fourier-square-wave-live.manic +114 -0
  376. package/examples/fractal_tree.manic +39 -0
  377. package/examples/frame3-grid-policies.manic +48 -0
  378. package/examples/ftc.manic +54 -0
  379. package/examples/function_graph.manic +54 -0
  380. package/examples/galton-board-process.manic +150 -0
  381. package/examples/gcp-clustered-web-services.manic +186 -0
  382. package/examples/gcp-message-collecting.manic +139 -0
  383. package/examples/geo-pythagoras-short.manic +119 -0
  384. package/examples/glsl-boxgrid.manic +105 -0
  385. package/examples/glsl-parameter.manic +30 -0
  386. package/examples/glsl-raymarch.manic +59 -0
  387. package/examples/glsl-shapes.manic +122 -0
  388. package/examples/gradient-descent-field.manic +116 -0
  389. package/examples/gradient-fastest-descent-shorts.manic +153 -0
  390. package/examples/gradient-fastest-descent.manic +125 -0
  391. package/examples/gradient-pendulum-shorts.manic +117 -0
  392. package/examples/gradient.manic +74 -0
  393. package/examples/graph.manic +45 -0
  394. package/examples/graph_moving.manic +67 -0
  395. package/examples/grid-astar.manic +15 -0
  396. package/examples/grid-life-soup.manic +31 -0
  397. package/examples/grid-life-zoo.manic +46 -0
  398. package/examples/grid-life.manic +19 -0
  399. package/examples/grid-wfc.manic +13 -0
  400. package/examples/growing-fractal-tree3.manic +58 -0
  401. package/examples/gun-shot.manic +82 -0
  402. package/examples/hashmap.manic +38 -0
  403. package/examples/heightmap3-world.manic +64 -0
  404. package/examples/heightmap3.manic +23 -0
  405. package/examples/hilbert-curve3-space-filling.manic +117 -0
  406. package/examples/hill_run.manic +71 -0
  407. package/examples/histogram.manic +43 -0
  408. package/examples/hotdog-taco.manic +147 -0
  409. package/examples/hue_wave.manic +35 -0
  410. package/examples/hypothesis.manic +32 -0
  411. package/examples/image.manic +29 -0
  412. package/examples/incircle_tangents.manic +64 -0
  413. package/examples/incline-bumper.manic +11 -0
  414. package/examples/incline-pulley.manic +11 -0
  415. package/examples/incline-showcase.manic +55 -0
  416. package/examples/inline-math.manic +16 -0
  417. package/examples/inscribed-angle-short.manic +56 -0
  418. package/examples/integral-sqrt-tanx.manic +255 -0
  419. package/examples/integrals.manic +274 -0
  420. package/examples/inverse-derivatives.manic +94 -0
  421. package/examples/k8s-cluster-components.manic +82 -0
  422. package/examples/k8s-stateful-architecture.manic +134 -0
  423. package/examples/k8s-three-tier.manic +146 -0
  424. package/examples/kapitza.manic +11 -0
  425. package/examples/latex-disintegration.manic +123 -0
  426. package/examples/lens-paper.manic +36 -0
  427. package/examples/lens-prescription.manic +33 -0
  428. package/examples/lens-system.manic +34 -0
  429. package/examples/lens.manic +31 -0
  430. package/examples/limit-infinity.manic +30 -0
  431. package/examples/limit.manic +33 -0
  432. package/examples/linear-algebra-3d.manic +50 -0
  433. package/examples/linear-algebra.manic +115 -0
  434. package/examples/linear-map.manic +39 -0
  435. package/examples/linear-map3.manic +33 -0
  436. package/examples/linear-system.manic +99 -0
  437. package/examples/linear_transform.manic +43 -0
  438. package/examples/linked_list.manic +38 -0
  439. package/examples/lln.manic +31 -0
  440. package/examples/loop-cinematic.manic +41 -0
  441. package/examples/loop-track.manic +11 -0
  442. package/examples/lorenz-attractor.manic +55 -0
  443. package/examples/lorenz-shells.manic +43 -0
  444. package/examples/lost-in-patterns.manic +149 -0
  445. package/examples/lsystem-asymptote-curves.manic +81 -0
  446. package/examples/manic-ml-activation-focus.manic +133 -0
  447. package/examples/manic-ml-cnn-edge-story.manic +102 -0
  448. package/examples/manic-ml-forward-pass.manic +93 -0
  449. package/examples/manic-ml-learning-step.manic +116 -0
  450. package/examples/manic-ml-logits-sampling.manic +112 -0
  451. package/examples/manic-ml-scalar-to-tensor.manic +143 -0
  452. package/examples/manic-ml-token-embedding.manic +110 -0
  453. package/examples/manic-ml-transformer-attention.manic +102 -0
  454. package/examples/manic-ml-transformer-block.manic +116 -0
  455. package/examples/manic-promo.manic +64 -0
  456. package/examples/map-attractor.manic +45 -0
  457. package/examples/mask-lens.manic +33 -0
  458. package/examples/matrix.manic +37 -0
  459. package/examples/matrix3.manic +101 -0
  460. package/examples/matrix_addition.manic +66 -0
  461. package/examples/matrix_addition_plane.manic +91 -0
  462. package/examples/maxwell-boltzmann-effusion-v2.manic +142 -0
  463. package/examples/maxwell-boltzmann-process.manic +86 -0
  464. package/examples/microservices-platform.manic +140 -0
  465. package/examples/molecule.manic +8 -0
  466. package/examples/morph-icons.manic +29 -0
  467. package/examples/morph.manic +29 -0
  468. package/examples/morph3.manic +49 -0
  469. package/examples/motion-flow-foundation.manic +148 -0
  470. package/examples/motion-graphics-v2-story.manic +189 -0
  471. package/examples/motion-graphics-v2.manic +81 -0
  472. package/examples/motion-graphics.manic +81 -0
  473. package/examples/multivariable3.manic +26 -0
  474. package/examples/mystory.manic +9 -0
  475. package/examples/newton.manic +39 -0
  476. package/examples/newtons-cradle.manic +10 -0
  477. package/examples/nine_point.manic +59 -0
  478. package/examples/noise-terrain.manic +16 -0
  479. package/examples/off-axis.manic +32 -0
  480. package/examples/onprem-advanced-web-service-v2.manic +196 -0
  481. package/examples/onprem-advanced-web-service.manic +175 -0
  482. package/examples/orthocenter.manic +63 -0
  483. package/examples/param3.manic +43 -0
  484. package/examples/parameter-journeys.manic +154 -0
  485. package/examples/parameterized-field-advection.manic +57 -0
  486. package/examples/parameterized-generated-families3.manic +83 -0
  487. package/examples/particles-flow.manic +61 -0
  488. package/examples/pascal-triangle.manic +92 -0
  489. package/examples/pendulum-annotated.manic +72 -0
  490. package/examples/pendulum-damped.manic +35 -0
  491. package/examples/pendulum.manic +38 -0
  492. package/examples/perfect-reel.manic +43 -0
  493. package/examples/pie.manic +41 -0
  494. package/examples/pieday.manic +113 -0
  495. package/examples/piston.manic +7 -0
  496. package/examples/popkorn-field.manic +38 -0
  497. package/examples/prism-cinematic.manic +36 -0
  498. package/examples/prism.manic +32 -0
  499. package/examples/probability.manic +57 -0
  500. package/examples/process-branching-dispatch.manic +71 -0
  501. package/examples/process-stream-observe.manic +54 -0
  502. package/examples/projection.manic +57 -0
  503. package/examples/prompt-test-10.manic +257 -0
  504. package/examples/prompt-test-11.manic +168 -0
  505. package/examples/prompt-test-12.manic +177 -0
  506. package/examples/prompt-test-13.manic +228 -0
  507. package/examples/prompt-test-14.manic +319 -0
  508. package/examples/prompt-test-15.manic +325 -0
  509. package/examples/prompt-test-16.manic +252 -0
  510. package/examples/prompt-test-2.manic +239 -0
  511. package/examples/prompt-test-3.manic +336 -0
  512. package/examples/prompt-test-4.manic +195 -0
  513. package/examples/prompt-test-5.manic +223 -0
  514. package/examples/prompt-test-6.manic +222 -0
  515. package/examples/prompt-test-7.manic +156 -0
  516. package/examples/prompt-test-8.manic +266 -0
  517. package/examples/prompt-test-9.manic +171 -0
  518. package/examples/prompt-test.manic +158 -0
  519. package/examples/pulley-annotated.manic +54 -0
  520. package/examples/pulley-paper.manic +52 -0
  521. package/examples/pulley-scale.manic +23 -0
  522. package/examples/pulley.manic +24 -0
  523. package/examples/quadratic-formula-continuity.manic +110 -0
  524. package/examples/quiz-euler.manic +52 -0
  525. package/examples/quiz-geometry-2.manic +107 -0
  526. package/examples/quiz-geometry.manic +108 -0
  527. package/examples/quiz-skins.manic +22 -0
  528. package/examples/raft-cm.manic +24 -0
  529. package/examples/ramp.manic +25 -0
  530. package/examples/ray-fan.manic +27 -0
  531. package/examples/raymarch-alpha.manic +39 -0
  532. package/examples/raymarch-boxgrid.manic +47 -0
  533. package/examples/raymarch-docker-latency.manic +74 -0
  534. package/examples/raymarch-metaballs.manic +37 -0
  535. package/examples/raymarch-sculpture.manic +39 -0
  536. package/examples/raymarch-shapes3.manic +31 -0
  537. package/examples/reactive-integral.manic +172 -0
  538. package/examples/reactive-math-journey.manic +185 -0
  539. package/examples/reactive-math-notation.manic +150 -0
  540. package/examples/reactive-multiformat.manic +130 -0
  541. package/examples/reactive-world.manic +111 -0
  542. package/examples/refraction-paper.manic +40 -0
  543. package/examples/refraction.manic +32 -0
  544. package/examples/resonance.manic +10 -0
  545. package/examples/rewrite-exponential-cubic.manic +141 -0
  546. package/examples/rewrite-integration.manic +199 -0
  547. package/examples/riemann_rainbow.manic +61 -0
  548. package/examples/riemann_readout.manic +61 -0
  549. package/examples/robot-arm.manic +25 -0
  550. package/examples/rref.manic +48 -0
  551. package/examples/second-law-thermodynamics.manic +385 -0
  552. package/examples/series-parallel-springs.manic +8 -0
  553. package/examples/serverless-processing.manic +145 -0
  554. package/examples/shader-cellular.manic +35 -0
  555. package/examples/shader-fractal.manic +45 -0
  556. package/examples/shader-fx.manic +34 -0
  557. package/examples/shader-glitch-grid.manic +55 -0
  558. package/examples/shader-parameter.manic +25 -0
  559. package/examples/shader-patterns.manic +37 -0
  560. package/examples/shader-plasma.manic +43 -0
  561. package/examples/shader-shapes-dsl.manic +46 -0
  562. package/examples/shader-shapes.manic +37 -0
  563. package/examples/shader-warp.manic +22 -0
  564. package/examples/shapes-howto.manic +411 -0
  565. package/examples/sine_wave.manic +42 -0
  566. package/examples/skew.manic +40 -0
  567. package/examples/smoke.rs +57 -0
  568. package/examples/solids3.manic +22 -0
  569. package/examples/some-story.manic +299 -0
  570. package/examples/spinning-cylinder-flow.manic +87 -0
  571. package/examples/spline.manic +21 -0
  572. package/examples/spot-diagram.manic +32 -0
  573. package/examples/spring-annotated.manic +60 -0
  574. package/examples/spring-chain.manic +11 -0
  575. package/examples/spring-damped.manic +33 -0
  576. package/examples/spring-incline.manic +10 -0
  577. package/examples/spring-paper.manic +46 -0
  578. package/examples/spring-pendulum.manic +14 -0
  579. package/examples/spring.manic +33 -0
  580. package/examples/sqrt-tanx.manic +217 -0
  581. package/examples/ssl-handshake-sdf.manic +116 -0
  582. package/examples/stack_queue.manic +53 -0
  583. package/examples/statistics.manic +60 -0
  584. package/examples/story-addressable-asset-cues.manic +71 -0
  585. package/examples/story-dependent-chain-history.manic +56 -0
  586. package/examples/story-living-dependency-cloud.manic +50 -0
  587. package/examples/story-time-varying-field3.manic +57 -0
  588. package/examples/story.manic +4 -0
  589. package/examples/string-art-breath.manic +70 -0
  590. package/examples/string-wave.manic +10 -0
  591. package/examples/summary.manic +48 -0
  592. package/examples/svg-howto.manic +172 -0
  593. package/examples/svg-import.manic +18 -0
  594. package/examples/systems-architecture-poc.manic +92 -0
  595. package/examples/systems-arrow-patterns.manic +151 -0
  596. package/examples/systems-foundation.manic +71 -0
  597. package/examples/systems-rabbitmq-consumers.manic +118 -0
  598. package/examples/table.manic +39 -0
  599. package/examples/table_braces.manic +54 -0
  600. package/examples/tangent-length-short.manic +57 -0
  601. package/examples/tangent.manic +29 -0
  602. package/examples/tangents.manic +54 -0
  603. package/examples/taylor.manic +44 -0
  604. package/examples/terminal_boot.manic +40 -0
  605. package/examples/test.manic +61 -0
  606. package/examples/text-guide.manic +304 -0
  607. package/examples/textbook-coordinate-worlds.manic +129 -0
  608. package/examples/textbook-doubly-list.manic +33 -0
  609. package/examples/textbook-function-to-solid.manic +126 -0
  610. package/examples/textbook-geometry-dimension-reduction.manic +129 -0
  611. package/examples/textbook-incline-fbd.manic +43 -0
  612. package/examples/textbook-length-area-volume.manic +137 -0
  613. package/examples/textbook-matrix-inverses.manic +172 -0
  614. package/examples/textbook-pulley.manic +35 -0
  615. package/examples/textbook-statistical-dimensions.manic +151 -0
  616. package/examples/textbook-tension.manic +39 -0
  617. package/examples/textbook-watermelon-sections.manic +216 -0
  618. package/examples/thales-semicircle-short.manic +53 -0
  619. package/examples/three-d-v2-lab.manic +83 -0
  620. package/examples/three-d-v2-story.manic +106 -0
  621. package/examples/three-d-v2.manic +69 -0
  622. package/examples/three_d.manic +39 -0
  623. package/examples/timing-v2-scene.manic +47 -0
  624. package/examples/trajectory.manic +28 -0
  625. package/examples/transform_copy.manic +35 -0
  626. package/examples/transforms.manic +54 -0
  627. package/examples/trapped-light-dimensions.manic +226 -0
  628. package/examples/tree-of-leaves.manic +215 -0
  629. package/examples/triangle.manic +68 -0
  630. package/examples/two_person_walk.manic +296 -0
  631. package/examples/two_pointer.manic +32 -0
  632. package/examples/type-to-sdf.manic +139 -0
  633. package/examples/typewriter.manic +28 -0
  634. package/examples/vector_field.manic +32 -0
  635. package/examples/vertical-spring.manic +10 -0
  636. package/examples/volume3.manic +21 -0
  637. package/examples/volumes-solid-of-revolution.manic +111 -0
  638. package/examples/walk.manic +154 -0
  639. package/examples/wheel-duo.manic +91 -0
  640. package/examples/wheel-radial.manic +78 -0
  641. package/examples/wheel-square.manic +83 -0
  642. package/examples/wireframe-spheres.manic +37 -0
  643. package/examples/zeroth-law-thermodynamics.manic +269 -0
  644. package/package.json +59 -0
@@ -0,0 +1,288 @@
1
+ title("Calculus I, End to End");
2
+ canvas("16:9");
3
+ template("black");
4
+
5
+ // ================= HUD (sticky: survives every camera move) =================
6
+ text(head, (cx, 60), "Calculus I, End to End"); display(head); cursor(head); sticky(head);
7
+ text(h1, (cx, 148), "1. Limits - getting close without arriving"); size(h1, 28); color(h1, cyan); hidden(h1); sticky(h1);
8
+ text(h2, (cx, 148), "2. The derivative - a slope caught in the act"); size(h2, 28); color(h2, magenta); hidden(h2); sticky(h2);
9
+ text(h3, (cx, 148), "3. What f' knows about the shape of f"); size(h3, 28); color(h3, lime); hidden(h3); sticky(h3);
10
+ text(h4, (cx, 148), "4. The integral - area, one strip at a time"); size(h4, 28); color(h4, gold); hidden(h4); sticky(h4);
11
+ text(h5, (cx, 148), "5. The Fundamental Theorem - the bridge"); size(h5, 28); hidden(h5); sticky(h5);
12
+ text(cap, (cx, h - 42), ""); size(cap, 26); sticky(cap);
13
+
14
+ caption(menu, "limits - slopes - shapes - areas - the bridge", (cx, cy), 34, gold); hidden(menu);
15
+
16
+ // chapter wipes, tinted to the incoming chapter
17
+ line(w2, (-40, 140), (-40, h - 90)); stroke(w2, 4); color(w2, magenta); glow(w2, 14);
18
+ line(w3, (-40, 140), (-40, h - 90)); stroke(w3, 4); color(w3, lime); glow(w3, 14);
19
+ line(w4, (-40, 140), (-40, h - 90)); stroke(w4, 4); color(w4, gold); glow(w4, 14);
20
+ line(w5, (-40, 140), (-40, h - 90)); stroke(w5, 4); glow(w5, 14);
21
+
22
+ // ================= ch 1 cast: LIMITS =================
23
+ // example A: f(x) = (x^3 - x)/(x - 1) = x(x+1) away from the hole at x = 1
24
+ // example B: a limit at infinity - the sigmoid hugging its asymptote
25
+ let gx1 = cx + 34;
26
+ let gy = 560;
27
+ arrow(x1a, (cx - 380, gy), (cx + 390, gy)); untraced(x1a); stroke(x1a, 3); tag(x1a, c1);
28
+ arrow(y1a, (gx1, gy), (gx1, 235)); untraced(y1a); stroke(y1a, 3); tag(y1a, c1);
29
+ plot(p1, (gx1, gy), 170, 60, "x^2+x", (-2.2, 1.8));
30
+ untraced(p1); stroke(p1, 4); gradient(p1, blue, cyan, gold, 270); tag(p1, c1);
31
+ dot(rider, (gx1, gy), 7); color(rider, gold); glow(rider, 8); hidden(rider); tag(rider, c1);
32
+ limit(lm, p1, 1, gold); hidden(lm); tag(lm, c1);
33
+ plot(p1b, (gx1, gy), 170, 60, "4/(1+exp(-2.2*x))", (-2.2, 1.8));
34
+ untraced(p1b); stroke(p1b, 4); color(p1b, teal); tag(p1b, c1);
35
+ limit(lmb, p1b, inf, cyan); hidden(lmb); tag(lmb, c1);
36
+ equation(eq1, (cx, 230), `\lim_{x\to 1}\frac{x^3-x}{x-1}`, 40); hidden(eq1); sticky(eq1);
37
+
38
+ // ================= ch 2 cast: THE DERIVATIVE =================
39
+ // example A: f(x) = x^2/2, secants through (1, 0.5) collapse onto the tangent
40
+ // example B: sine's recorded slope is cosine
41
+ let gx2 = cx - 170;
42
+ arrow(x2a, (cx - 312, gy), (cx + 322, gy)); untraced(x2a); stroke(x2a, 3); tag(x2a, c2);
43
+ arrow(y2a, (gx2, gy), (gx2, 240)); untraced(y2a); stroke(y2a, 3); tag(y2a, c2);
44
+ plot(p2, (gx2, gy), 170, 80, "0.5*x^2", (-0.6, 2.6));
45
+ untraced(p2); stroke(p2, 4); gradient(p2, blue, magenta, 270); tag(p2, c2);
46
+ dot(anch, (gx2 + 170, gy - 40), 7); color(anch, gold); glow(anch, 8); hidden(anch); tag(anch, c2);
47
+ for k in 0..3 {
48
+ let hh = 1.5 - 0.6*k;
49
+ let mm = 1 + hh/2;
50
+ let ya = 0.5 - 0.9*mm;
51
+ let yb = 0.5 + 1.4*mm;
52
+ line(sec{k}, (gx2 + 17, gy - ya*80), (gx2 + 408, gy - yb*80));
53
+ stroke(sec{k}, 3); color(sec{k}, teal); opacity(sec{k}, 0.45 + 0.2*k); hidden(sec{k}); tag(sec{k}, c2);
54
+ dot(sd{k}, (gx2 + (1 + hh)*170, gy - ((1 + hh)^2/2)*80), 6);
55
+ color(sd{k}, teal); hidden(sd{k}); tag(sd{k}, c2);
56
+ }
57
+ tangent(tg2, p2, 1, 280); hidden(tg2); tag(tg2, c2);
58
+ slope(sl2, p2, 1); hidden(sl2); tag(sl2, c2);
59
+ deriv(dv2, p2, magenta); untraced(dv2); tag(dv2, c2);
60
+ line(bl2, (gx2 - 90, 445), (gx2 + 445, 445)); dashed(bl2); stroke(bl2, 2); color(bl2, dim); hidden(bl2); tag(bl2, c2);
61
+ plot(p2s, (gx2, 445), 170, 80, "1.1*sin(1.8*x)", (-0.5, 2.6));
62
+ untraced(p2s); stroke(p2s, 4); color(p2s, cyan); tag(p2s, c2);
63
+ deriv(dvs, p2s, magenta); untraced(dvs); dashed(dvs, 12, 9); tag(dvs, c2);
64
+ equation(eq2, (cx, 230), `f'(1) \;=\; \lim_{h\to 0}\frac{f(1+h)-f(1)}{h}`, 38); hidden(eq2); sticky(eq2);
65
+
66
+ // ================= ch 3 cast: SHAPE =================
67
+ // f(x) = x^3/3 - x : turning points at x = -1, 1; concavity flips at 0
68
+ // (one horizontal axis only - no vertical line slicing through the curve)
69
+ let gy3 = 420;
70
+ arrow(x3a, (cx - 436, gy3), (cx + 446, gy3)); untraced(x3a); stroke(x3a, 3); tag(x3a, c3);
71
+ plot(p3, (cx, gy3), 180, 150, "x^3/3-x", (-2.2, 2.2));
72
+ untraced(p3); stroke(p3, 4); gradient(p3, blue, lime, gold, 270); tag(p3, c3);
73
+ tangent(tg3, p3, -2.1, 300); hidden(tg3); tag(tg3, c3);
74
+ slope(sl3, p3, -2.1); hidden(sl3); tag(sl3, c3);
75
+ extrema(ex3, p3, gold); hidden(ex3); tag(ex3, c3);
76
+ inflections(if3, p3, magenta); hidden(if3); tag(if3, c3);
77
+ equation(eq3, (cx, 230), `f'(x)=x^2-1`, 38); hidden(eq3); sticky(eq3);
78
+
79
+ // ================= ch 4 + 5 cast: INTEGRAL and the FTC =================
80
+ // example A: f(x) = 0.3 x (4 - x), area 0..4 is exactly 3.2
81
+ // example B: a sine arch whose signed area cancels to zero
82
+ let gx4 = cx - 340;
83
+ arrow(x4a, (gx4 - 40, gy), (gx4 + 730, gy)); untraced(x4a); stroke(x4a, 3); tag(x4a, c4);
84
+ arrow(y4a, (gx4, gy), (gx4, 240)); untraced(y4a); stroke(y4a, 3); tag(y4a, c4);
85
+ plot(p4, (gx4, gy), 170, 80, "0.3*x*(4-x)", (0, 4));
86
+ untraced(p4); stroke(p4, 4); gradient(p4, blue, gold, 270); tag(p4, c4);
87
+ for i in 0..8 {
88
+ let xm = (i + 0.5)*0.5;
89
+ let hgt = 0.3*xm*(4 - xm);
90
+ rect(rs{i}, (gx4 + xm*170, gy - hgt*80/2 + 24), 0.5*170 - 3, hgt*80);
91
+ color(rs{i}, gold); opacity(rs{i}, 0.55); tag(rs{i}, rstrips);
92
+ }
93
+ hidden(rstrips);
94
+ area(ar4, p4, 0, 0); color(ar4, gold); opacity(ar4, 0.3);
95
+ integral(int4, p4, 0, 0, (gx4 + 640, 300)); hidden(int4);
96
+ plot(p4b, (gx4, gy), 170, 80, "1.2*sin(1.5708*x)", (0, 4));
97
+ untraced(p4b); stroke(p4b, 4); color(p4b, teal);
98
+ area(arb, p4b, 0, 0); color(arb, teal); opacity(arb, 0.3);
99
+ integral(intb, p4b, 0, 0, (gx4 + 640, 350)); hidden(intb);
100
+ equation(eq4, (cx, 230), `A \;\approx\; \sum_i \textcolor{gold}{f(x_i)}\,\Delta x`, 38); hidden(eq4); sticky(eq4);
101
+
102
+ // FTC: the accumulation A(x) drawn as its own curve, then ITS derivative
103
+ accum(acF, p4, 0, gold); untraced(acF);
104
+ deriv(dfF, acF, magenta); untraced(dfF); dashed(dfF, 12, 9);
105
+ text(alab, (gx4 + 700, 296), "A(x) - area so far"); size(alab, 24); color(alab, gold); hidden(alab);
106
+ text(flab, (cx, 430), "f(x)"); size(flab, 24); color(flab, cyan); hidden(flab);
107
+ equation(eqF, (cx, 230), `A(x) \;=\; \int_0^x f(t)\,dt`, 40); hidden(eqF); sticky(eqF); z(eqF, 10);
108
+
109
+ // finale
110
+ circle(confbox, (cx, 230), 80); hidden(confbox);
111
+ particles(conf, confbox, 22, 4, 9, "ring"); color(conf, gold); hidden(conf);
112
+ caption(r1, "zoom in: the derivative is the slope of a moment", (cx, 400), 28, magenta); hidden(r1);
113
+ caption(r2, "add up: the integral is the area of a journey", (cx, 455), 28, gold); hidden(r2);
114
+ caption(r3, "the Fundamental Theorem: each undoes the other", (cx, 510), 28); hidden(r3);
115
+
116
+ // ================= timeline =================
117
+
118
+ // ---- cold open
119
+ type(head, 1.2);
120
+ wordpop(menu, 0.07);
121
+ wait(1.0);
122
+ fade(menu, 0.5);
123
+
124
+ // ---- ch 1: LIMITS ------------------------------------------------------
125
+ mark("limits");
126
+ cue(whoosh);
127
+ show(h1, 0.5);
128
+ par { draw(x1a, 0.6); draw(y1a, 0.6); }
129
+ show(rider, 0.2);
130
+ par { draw(p1, 1.4); travel(rider, p1, 1.4, smooth); }
131
+ fade(rider, 0.3);
132
+ show(eq1, 0.6);
133
+ say(cap, "At x = 1 this formula divides zero by zero - the curve has a HOLE", 0.5);
134
+ show(lm, 0.6);
135
+ cue(tick);
136
+ rewrite(eq1, `\lim_{x\to 1}\frac{x^3-x}{x-1} \;=\; \lim_{x\to 1}\,x(x+1)`, 0.9);
137
+ par { cam((gx1 + 170, 470), 1.2, smooth); zoom(1.8, 1.2, smooth); }
138
+ say(cap, "The limit asks: where were you HEADING? Watch the dot commit", 0.5);
139
+ to(lm, x, 1, 2.6, smooth);
140
+ cue(tick);
141
+ rewrite(eq1, `\lim_{x\to 1}\frac{x^3-x}{x-1} \;=\; 2`, 0.9);
142
+ flash(lm, cyan);
143
+ wait(0.8);
144
+ par { cam((cx, cy), 1.0, smooth); zoom(1, 1.0, smooth); }
145
+
146
+ // second example: chasing x to infinity
147
+ say(cap, "Limits also ask where the ROAD ends: chase x toward infinity", 0.5);
148
+ par { fade(p1, 0.5); fade(lm, 0.5); }
149
+ draw(p1b, 1.2);
150
+ show(lmb, 0.5);
151
+ to(lmb, x, 1.8, 2.0, smooth);
152
+ cue(tick);
153
+ rewrite(eq1, `\lim_{x\to\infty}\frac{4}{1+e^{-2.2x}} \;=\; 4`, 0.9);
154
+ wait(0.7);
155
+ par { shift(w2, (w + 80, 0), 0.7, linear); fade(c1, 0.6); disintegrate(eq1, 0.8); fade(h1, 0.5); }
156
+
157
+ // ---- ch 2: THE DERIVATIVE ----------------------------------------------
158
+ mark("derivative");
159
+ cue(whoosh);
160
+ show(h2, 0.5);
161
+ par { draw(x2a, 0.6); draw(y2a, 0.6); }
162
+ draw(p2, 1.2);
163
+ show(anch, 0.4);
164
+ show(eq2, 0.6);
165
+ say(cap, "Pin one point. A SECANT through a neighbour measures average slope", 0.5);
166
+ par { cam((gx2 + 200, 470), 1.0, smooth); zoom(1.35, 1.0, smooth); }
167
+ par { show(sec0, 0.4); show(sd0, 0.4); }
168
+ cue(tick);
169
+ rewrite(eq2, `\frac{\Delta y}{\Delta x} \;=\; 1+\tfrac{h}{2} \;=\; 1.75`, 0.8);
170
+ par { fade(sec0, 0.4); fade(sd0, 0.4); show(sec1, 0.4); show(sd1, 0.4); }
171
+ cue(tick);
172
+ rewrite(eq2, `\frac{\Delta y}{\Delta x} \;=\; 1+\tfrac{h}{2} \;=\; 1.45`, 0.8);
173
+ par { fade(sec1, 0.4); fade(sd1, 0.4); show(sec2, 0.4); show(sd2, 0.4); }
174
+ cue(tick);
175
+ rewrite(eq2, `\frac{\Delta y}{\Delta x} \;=\; 1+\tfrac{h}{2} \;=\; 1.15`, 0.8);
176
+ say(cap, "Slide the neighbour home: the secants collapse onto ONE line", 0.5);
177
+ par { fade(sec2, 0.5); fade(sd2, 0.5); show(tg2, 0.5); show(sl2, 0.5); }
178
+ flash(tg2, gold);
179
+ cue(pop);
180
+ cue(tick);
181
+ rewrite(eq2, `f'(1) \;=\; 1`, 0.9);
182
+ wait(0.6);
183
+ par { cam((cx, cy), 1.0, smooth); zoom(1, 1.0, smooth); }
184
+
185
+ // now do it EVERYWHERE: the tangent glides, recording f' as a new curve
186
+ say(cap, "Do it at every point - and record the answer as a NEW curve", 0.5);
187
+ par { to(tg2, x, -0.4, 0.7, smooth); to(sl2, x, -0.4, 0.7, smooth); }
188
+ par { to(tg2, x, 2.3, 2.6, smooth); to(sl2, x, 2.3, 2.6, smooth); draw(dv2, 2.6); }
189
+ cue(tick);
190
+ rewrite(eq2, `f'(x) \;=\; x`, 0.9);
191
+ wait(0.6);
192
+
193
+ // second example: every curve carries its shadow
194
+ say(cap, "It works for EVERY curve: sine's recorded slope is cosine", 0.5);
195
+ par { fade(p2, 0.5); fade(dv2, 0.5); fade(tg2, 0.5); fade(sl2, 0.5); fade(anch, 0.4); }
196
+ par { show(bl2, 0.4); draw(p2s, 1.2); }
197
+ draw(dvs, 1.6);
198
+ cue(tick);
199
+ rewrite(eq2, `\big(\sin x\big)' \;=\; \cos x`, 0.9);
200
+ wait(0.7);
201
+ par { shift(w3, (w + 80, 0), 0.7, linear); fade(c2, 0.6); disintegrate(eq2, 0.8); fade(h2, 0.5); }
202
+
203
+ // ---- ch 3: SHAPE -------------------------------------------------------
204
+ mark("shape");
205
+ cue(whoosh);
206
+ show(h3, 0.5);
207
+ draw(x3a, 0.7);
208
+ draw(p3, 1.4);
209
+ show(eq3, 0.6);
210
+ say(cap, "The derivative is a story about SHAPE. Ride the tangent and listen", 0.5);
211
+ par { show(tg3, 0.5); show(sl3, 0.5); }
212
+ par { to(tg3, x, -1, 1.6, smooth); to(sl3, x, -1, 1.6, smooth); }
213
+ cue(pop);
214
+ show(ex3, 0.4); pulse(ex3, 0.8);
215
+ say(cap, "Slope zero: the curve turns. A peak - then a valley", 0.5);
216
+ par { to(tg3, x, 0, 1.2, smooth); to(sl3, x, 0, 1.2, smooth); }
217
+ show(if3, 0.4); flash(if3, magenta);
218
+ say(cap, "Here the BEND flips: concave down becomes concave up - an inflection", 0.5);
219
+ par { to(tg3, x, 1, 1.2, smooth); to(sl3, x, 1, 1.2, smooth); }
220
+ pulse(ex3, 0.8);
221
+ par { to(tg3, x, 2.1, 1.2, smooth); to(sl3, x, 2.1, 1.2, smooth); }
222
+ cue(tick);
223
+ rewrite(eq3, `f'=0:\ \text{turning}\qquad f''=0:\ \text{bending flips}`, 0.9);
224
+ wait(1.0);
225
+ par { shift(w4, (w + 80, 0), 0.7, linear); fade(c3, 0.6); disintegrate(eq3, 0.8); fade(h3, 0.5); }
226
+
227
+ // ---- ch 4: THE INTEGRAL ------------------------------------------------
228
+ mark("integral");
229
+ cue(whoosh);
230
+ show(h4, 0.5);
231
+ par { draw(x4a, 0.6); draw(y4a, 0.6); }
232
+ draw(p4, 1.3);
233
+ show(eq4, 0.6);
234
+ say(cap, "The other question: how much accumulates? Slice it into strips", 0.5);
235
+ stagger(0.08) { for i in 0..8 { par { show(rs{i}, 0.3); shift(rs{i}, (0, -24), 0.4, out); } } }
236
+ wait(0.8);
237
+ say(cap, "Thinner and thinner strips: the sum becomes the exact area", 0.5);
238
+ show(int4, 0.3);
239
+ par { fade(rstrips, 1.1); to(ar4, x, 4, 2.2, smooth); to(int4, x, 4, 2.2, smooth); }
240
+ flash(int4, gold);
241
+ cue(tick);
242
+ rewrite(eq4, `A \;=\; \int_0^4 f\,dx \;=\; 3.2`, 0.9);
243
+ wait(0.8);
244
+
245
+ // second example: signed area - the hill cancels the valley
246
+ say(cap, "One warning: below the axis, area counts NEGATIVE", 0.5);
247
+ par { fade(p4, 0.5); fade(ar4, 0.5); fade(int4, 0.5); }
248
+ draw(p4b, 1.2);
249
+ show(intb, 0.3);
250
+ par { to(arb, x, 4, 2.0, smooth); to(intb, x, 4, 2.0, smooth); }
251
+ flash(intb, teal);
252
+ cue(tick);
253
+ rewrite(eq4, `\int_0^4 \sin\!\Big(\frac{\pi x}{2}\Big)dx \;=\; 0`, 0.9);
254
+ say(cap, "The hill above cancels the valley below - signed area", 0.5);
255
+ wait(0.6);
256
+ par { fade(p4b, 0.5); fade(arb, 0.5); fade(intb, 0.4); show(p4, 0.5); }
257
+ par { shift(w5, (w + 80, 0), 0.7, linear); disintegrate(eq4, 0.8); fade(h4, 0.5); }
258
+
259
+ // ---- ch 5: THE FUNDAMENTAL THEOREM --------------------------------------
260
+ mark("ftc");
261
+ cue(whoosh);
262
+ show(h5, 0.5);
263
+ say(cap, "Rewind. This time, GRAPH the running total as you sweep", 0.5);
264
+ show(ar4, 0.4);
265
+ to(ar4, x, 0, 0.7, smooth);
266
+ show(eqF, 0.7);
267
+ par { to(ar4, x, 4, 2.8, smooth); draw(acF, 2.8); }
268
+ show(alab, 0.5); show(flab, 0.5);
269
+ say(cap, "Now take the DERIVATIVE of that gold curve - the slope of the total", 0.5);
270
+ cue(tick);
271
+ rewrite(eqF, `\frac{d}{dx}A(x) \;=\; \;?`, 0.8);
272
+ draw(dfF, 2.2);
273
+ flash(p4, magenta);
274
+ cue(chime);
275
+ say(cap, "It lands EXACTLY on f. Accumulating, then differentiating, is a round trip", 0.5);
276
+ cue(tick);
277
+ rewrite(eqF, `\boxed{\;\frac{d}{dx}\int_0^x f(t)\,dt \;=\; f(x)\;}`, 1.0);
278
+ wait(1.2);
279
+
280
+ // ---- finale
281
+ par { fade(c4, 0.7); fade(ar4, 0.7); fade(acF, 0.7); fade(dfF, 0.7); fade(alab, 0.5); fade(flab, 0.5); fade(h5, 0.5); }
282
+ seq { show(conf, 0.1); burst(conf, 1.4); }
283
+ par {
284
+ breathe(eqF, 3, 0.05, 0, 7);
285
+ seq { stagger(0.4) { wordpop(r1, 0.05); wordpop(r2, 0.05); wordpop(r3, 0.05); } }
286
+ }
287
+ say(cap, "Calculus I: zoom in, add up - and the bridge between", 0.6);
288
+ wait(2.5);
@@ -0,0 +1,31 @@
1
+ // Captions — karaoke word highlighting and TikTok-style word pop-in. `caption`
2
+ // lays out a phrase's words in a centred row (as {id}.w0, {id}.w1, ... tagged
3
+ // {id}.words); `karaoke` highlights them in sequence; `wordpop` pops them in one
4
+ // at a time.
5
+ //
6
+ // manic examples/captions.manic
7
+ // manic examples/captions.manic --record out --fps 60
8
+
9
+ title("Captions");
10
+ canvas("16:9");
11
+
12
+ text(head, (cx, 110), "word-by-word: karaoke + pop-in");
13
+ display(head); color(head, cyan); size(head, 26); hidden(head);
14
+
15
+ // karaoke: starts dim, words light up in sequence
16
+ caption(kara, "follow the bouncing highlight", (cx, 280), 46, dim);
17
+
18
+ // word-pop: hidden first, then each word pops in
19
+ caption(pop, "each word pops right in", (cx, 440), 50, lime);
20
+ hidden(pop.words);
21
+
22
+ // --- script ---
23
+ show(head, 0.5);
24
+
25
+ section("Karaoke");
26
+ karaoke(kara, 0.34, cyan);
27
+ wait(0.8);
28
+
29
+ section("Word pop");
30
+ wordpop(pop, 0.14);
31
+ wait(1.6);
@@ -0,0 +1,57 @@
1
+ // ============================================================================
2
+ // car-suspension-annotated.manic — a marketing hero, paper (brochure) style
3
+ // ----------------------------------------------------------------------------
4
+ // The `carsuspension` quarter-car sim, dressed as a clean product diagram on a
5
+ // `template("paper")` page and ELEVATED with generic base-manic: a live
6
+ // `counter` (the sprung mass ticking up), leader-`arrow` callouts, a
7
+ // `bracelabel` for the travel, and a compact `energygraph` showing the shock
8
+ // being absorbed — then it rides a scrolling road (bump · washboard · pothole).
9
+ // Every part of the sim is an ordinary entity, so it all composes.
10
+ // ============================================================================
11
+
12
+ title("Car suspension — smooth over every bump");
13
+ canvas("16:9");
14
+ template("paper");
15
+
16
+ // ---- hero title ----
17
+ text(hdr, (cx, 52), "Car suspension: how it soaks up the road"); color(hdr, fg); size(hdr, 30); bold(hdr); display(hdr); hidden(hdr);
18
+ text(sub, (cx, 88), "the quarter-car model — sprung mass · spring + damper · wheel"); color(sub, dim); size(sub, 18); display(sub); hidden(sub);
19
+
20
+ // ---- the sim, recoloured for a bold, clean brochure look ----
21
+ carsuspension(car, (430, 430));
22
+ color(car.body, blue); // the car body — bold accent
23
+ color(car.road, fg); // the road — dark ink
24
+ hidden(car); // reveal the whole sim (road, wheel, spring, body, energy) together
25
+
26
+ // a compact energy panel (top-right) — the suspension absorbing the shock
27
+ energygraph(car, (1055, 215), 88);
28
+
29
+ // ---- generic-kit callouts (leader arrows + labels), hidden to reveal in order ----
30
+ text(cb, (640, 296), "car body — the sprung mass"); color(cb, blue); size(cb, 18); display(cb); hidden(cb);
31
+ arrow(ab, (636, 302), (478, 320)); color(ab, dim); stroke(ab, 2); hidden(ab);
32
+ text(csp, (610, 382), "spring + damper"); color(csp, lime); size(csp, 18); display(csp); hidden(csp);
33
+ arrow(asp, (606, 384), (448, 382)); color(asp, dim); stroke(asp, 2); hidden(asp);
34
+ text(cw, (620, 472), "wheel — the unsprung mass"); color(cw, gold); size(cw, 18); display(cw); hidden(cw);
35
+ arrow(aw, (616, 470), (448, 434)); color(aw, dim); stroke(aw, 2); hidden(aw);
36
+ text(cr, (cx, 648), "the road: a bump, a washboard stretch, then a pothole"); color(cr, fg); size(cr, 17); display(cr); hidden(cr);
37
+
38
+ // a live spec counter (generic kit) — the sprung mass ticking up
39
+ counter(mc, (150, 320), 0, 0, "m = ", " kg"); color(mc, fg); size(mc, 30); display(mc); hidden(mc);
40
+ text(spec, (cx, h - 28), "quarter-car · k = 20 kN/m · c = 4 kN·s/m · v = 8 m/s"); color(spec, dim); size(spec, 16); display(spec); hidden(spec);
41
+
42
+ // ============================== SCRIPT ==============================
43
+ show(hdr, 0.5); show(sub, 0.4);
44
+ wait(0.3);
45
+ show(car, 0.6);
46
+ wait(0.3);
47
+
48
+ show(cb, 0.3); draw(ab, 0.3);
49
+ show(csp, 0.3); draw(asp, 0.3);
50
+ show(cw, 0.3); draw(aw, 0.3);
51
+ show(cr, 0.3);
52
+ show(mc, 0.3); to(mc, value, 500, 0.9); // the sprung mass counts up
53
+ show(spec, 0.4);
54
+ wait(0.5);
55
+
56
+ // the ride — the road scrolls, the body glides while the wheel tracks every bump
57
+ run(car, 11);
@@ -0,0 +1,8 @@
1
+ // car-suspension.manic — a quarter-car riding a road: bump, washboard, pothole.
2
+ title("Car suspension — riding the road");
3
+ canvas("16:9");
4
+ text(hdr,(cx,44),"Quarter-car suspension — the body bobs as the wheel rides the road"); size(hdr,22); color(hdr,cyan); bold(hdr); display(hdr);
5
+ carsuspension(car, (640,430));
6
+ energygraph(car, (1050,170), 100);
7
+ text(cap,(cx,h-30),"a speed bump, a washboard stretch, then a pothole — the spring+damper soak it up"); size(cap,15); color(cap,dim); display(cap);
8
+ run(car, 12);
@@ -0,0 +1,11 @@
1
+ // cart-pendulum.manic — a pendulum on a spring-mounted cart (the control classic).
2
+ // cartpendulum(id,[center],[angle0deg],[unit]) — cart rolls on a track (spring to a
3
+ // wall) while the pendulum swings; the two exchange momentum and energy.
4
+ title("Cart-pendulum — coupled motion");
5
+ canvas("16:9");
6
+ text(hdr,(cx,44),"Cart-pendulum — the cart and bob trade momentum"); size(hdr,23); color(hdr,cyan); bold(hdr); display(hdr);
7
+ cartpendulum(cp, (480,330), 55, 105);
8
+ phase(cp, (1000,190), 95); // θ vs ω
9
+ energygraph(cp, (1000,470), 95); // KE / PE / total (~conserved)
10
+ text(cap,(cx,h-32),"cart on a spring + swinging bob — energy stays (nearly) conserved"); size(cap,16); color(cap,dim); display(cap);
11
+ run(cp, 11);
@@ -0,0 +1,26 @@
1
+ // charts-bar-line.manic — a BAR race with a companion LINE (the classic combo).
2
+ //
3
+ // The bars race as usual (reordering by value), and `raceline` draws a synced line
4
+ // across the top strip — here the running TOTAL, auto-summed from the bars (pass
5
+ // your own "v0 v1 …" to track a different metric). The line draws on, a marker
6
+ // rides its leading point, and a live readout counts up — all locked to the race.
7
+ //
8
+ // manic examples/charts-bar-line.manic
9
+ canvas("16:9");
10
+ template("blank");
11
+
12
+ racechart(gdp, "bar", "1990 2000 2010 2020 2026",
13
+ "World GDP — Who's Biggest, and the Total Growing ($T)");
14
+
15
+ racedata(gdp, "
16
+ USA, us, 5.96, 10.25, 15.05, 21.06, 30.34
17
+ China, cn, 0.36, 1.21, 6.09, 14.69, 20.50
18
+ Japan, jp, 3.13, 4.97, 5.76, 5.06, 4.40
19
+ Germany, de, 1.60, 1.95, 3.40, 3.89, 4.90
20
+ India, in, 0.32, 0.47, 1.68, 2.67, 4.60
21
+ ");
22
+
23
+ // the companion line across the top — a running total of all bars (auto-summed)
24
+ raceline(gdp, "World total");
25
+
26
+ race(gdp, 12);
@@ -0,0 +1,19 @@
1
+ // charts-column-race.manic — a COLUMN chart race (vertical bars), built with the
2
+ // per-series `raceseries` input (the computed/loop sibling of `racedata`). A sport
3
+ // race: the men's tennis Grand Slam count, 2005 → 2024 — watch Djokovic climb from
4
+ // nothing to overtake Federer and Nadal. Flags are imported SVG (rs/es/ch/gb).
5
+ //
6
+ // manic examples/charts-column-race.manic
7
+ canvas("16:9");
8
+ template("blank");
9
+
10
+ racechart(gs, "column", "2005 2009 2013 2017 2021 2024",
11
+ "Men's Tennis — Grand Slam Titles, 2005 to 2024");
12
+
13
+ // one entity per player: raceseries(chart, "name", "flag", "v0 v1 …")
14
+ raceseries(gs, "Federer", "ch", "5 15 17 19 20 20");
15
+ raceseries(gs, "Nadal", "es", "4 6 13 16 20 22");
16
+ raceseries(gs, "Djokovic", "rs", "0 1 6 12 20 24");
17
+ raceseries(gs, "Murray", "gb", "0 0 2 3 3 3");
18
+
19
+ race(gs, 10);
@@ -0,0 +1,43 @@
1
+ // charts-gdp-race.manic — an animated BAR-CHART RACE from a pasted data block.
2
+ //
3
+ // The `charts` kit turns a table into bars that actually REORDER as the numbers
4
+ // change — the viral data-viz format, but true to the data and self-contained in
5
+ // one script. Paste your data into `racedata` (one row per entity: label, an icon
6
+ // shorthand, then a value per period), then `race` plays the whole thing —
7
+ // re-ranking, sliding bars to their new slots, rescaling the axis, and ticking the
8
+ // year + values. Bars are rounded, gradient-filled; flags are imported SVG.
9
+ //
10
+ // Nominal GDP, US$ trillion, 1990 → 2026 (approx.) — watch China climb from the
11
+ // bottom to #2, Japan slide, and India rise.
12
+ //
13
+ // manic examples/charts-gdp-race.manic
14
+ canvas("16:9");
15
+ template("blank");
16
+
17
+ racechart(gdp, "bar", "1990 1995 2000 2005 2010 2015 2020 2026",
18
+ "The World's Biggest Economies — GDP 1990 to 2026 ($T)");
19
+
20
+ // paste your table: label, ICON, then one value per period.
21
+ // separators are forgiving — commas here, but tabs / spaces / newlines all work.
22
+ //
23
+ // the ICON column takes ANY svg, not just flags:
24
+ // us a flag shorthand → asset:svg/flags/us.svg
25
+ // rocket / heart / trophy an emoji/icon alias → asset:svg/emoji|lucide/…
26
+ // asset:svg/lucide/lightbulb.svg an explicit set path
27
+ // logos/acme.svg your OWN file (any path ending in .svg)
28
+ // omit the icon entirely and the row is just label + values.
29
+ //
30
+ // NOTE: a few flags whose stars are drawn with SVG <use> (e.g. cn — China) render
31
+ // imperfectly for now (tracked); most flags and all icons/emoji render cleanly.
32
+ racedata(gdp, "
33
+ USA, us, 5.96, 7.64, 10.25, 13.04, 15.05, 18.24, 21.06, 30.34
34
+ China, cn, 0.36, 0.73, 1.21, 2.29, 6.09, 11.06, 14.69, 20.50
35
+ Japan, jp, 3.13, 5.55, 4.97, 4.83, 5.76, 4.44, 5.06, 4.40
36
+ Germany, de, 1.60, 2.59, 1.95, 2.85, 3.40, 3.36, 3.89, 4.90
37
+ India, in, 0.32, 0.36, 0.47, 0.82, 1.68, 2.10, 2.67, 4.60
38
+ UK, gb, 1.09, 1.33, 1.66, 2.54, 2.49, 2.93, 2.70, 3.90
39
+ France, fr, 1.27, 1.60, 1.36, 2.20, 2.65, 2.44, 2.63, 3.30
40
+ Brazil, br, 0.46, 0.77, 0.65, 0.89, 2.21, 1.80, 1.48, 2.40
41
+ ");
42
+
43
+ race(gdp, 14);
@@ -0,0 +1,28 @@
1
+ // charts-german-elections.manic — a BAR race from real CSV data (German federal
2
+ // election vote share, %, 1949-2021). Transcribed from Data.1785183258253.csv:
3
+ // the empty separator column is dropped and missing early years (parties that
4
+ // didn't exist yet) are 0. Watch CDU/CSU and SPD trade the lead while the Greens,
5
+ // Left and AfD climb from nothing.
6
+ //
7
+ // manic examples/charts-german-elections.manic
8
+ canvas("16:9");
9
+ template("blank");
10
+
11
+ racechart(de, "bar", "1949 1953 1957 1961 1965 1969 1972 1976 1980 1983 1987 1990 1994 1998 2002 2005 2009 2013 2017 2021",
12
+ "German Federal Elections — Vote Share %, 1949 to 2021");
13
+
14
+ racedata(de, "
15
+ CDU/CSU, 31, 45.2, 50.2, 45.3, 47.6, 46.1, 44.9, 48.6, 44.5, 48.8, 44.3, 43.8, 41.4, 35.1, 38.5, 35.2, 33.8, 41.5, 32.9, 24.1
16
+ SPD, 29.2, 28.8, 31.8, 36.2, 39.3, 42.7, 45.8, 42.6, 42.9, 38.2, 37, 33.5, 36.4, 40.9, 38.5, 34.2, 23, 25.7, 20.5, 25.7
17
+ FDP, 11.9, 9.5, 7.7, 12.8, 9.5, 5.8, 8.4, 7.9, 10.6, 7, 9.1, 11, 6.9, 6.2, 7.4, 9.8, 14.6, 4.8, 10.7, 11.5
18
+ Green, 0, 0, 0, 0, 0, 0, 0, 0, 1.5, 5.6, 8.3, 5.1, 7.3, 6.7, 8.6, 8.1, 10.7, 8.4, 8.9, 14.8
19
+ Left, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.4, 4.4, 5.1, 4, 8.7, 11.9, 8.6, 9.2, 4.9
20
+ AfD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.7, 12.6, 10.3
21
+ Other, 27.6, 16.3, 10.2, 5.6, 3.6, 5.4, 0.9, 0.9, 0.5, 0.4, 1.3, 4.2, 3.6, 6, 3, 4, 6, 6.3, 5.2, 8.6
22
+ ");
23
+
24
+ // a synced multi-line history panel below the bars: every party as a line, drawn
25
+ // up to a moving time-cursor (the Flourish bar+line combo)
26
+ racepanel(de);
27
+
28
+ race(de, 16);
@@ -0,0 +1,21 @@
1
+ // charts-line-race.manic — a LINE chart race. Each series draws its line on
2
+ // (left → right) as the years tick, with the value, label and flag riding the
3
+ // leading tip; the "race" is which line climbs highest. Fixed y-axis (line charts
4
+ // don't rescale), L-shaped axes, flags are imported SVG.
5
+ //
6
+ // manic examples/charts-line-race.manic
7
+ canvas("16:9");
8
+ template("blank");
9
+
10
+ racechart(gdp, "line", "1990 2000 2010 2020 2026",
11
+ "GDP Over Time — a Line Race ($T)");
12
+
13
+ racedata(gdp, "
14
+ USA, us, 5.96, 10.25, 15.05, 21.06, 30.34
15
+ China, cn, 0.36, 1.21, 6.09, 14.69, 20.50
16
+ Japan, jp, 3.13, 4.97, 5.76, 5.06, 4.40
17
+ Germany, de, 1.60, 1.95, 3.40, 3.89, 4.90
18
+ India, in, 0.32, 0.47, 1.68, 2.67, 4.60
19
+ ");
20
+
21
+ race(gdp, 10);