@classytic/labs 0.1.0 → 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 (455) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +18 -0
  2. package/dist/biology/enzyme-rate/preset.mjs +5 -5
  3. package/dist/biology/genetic-cross/core.d.mts +7 -7
  4. package/dist/biology/genetic-cross/core.mjs +4 -4
  5. package/dist/biology/genetic-cross/grid.mjs +132 -123
  6. package/dist/biology/genetic-cross/preset.mjs +4 -4
  7. package/dist/biology/genetic-cross/sex-linked.mjs +7 -7
  8. package/dist/biology/photosynthesis-factors/preset.mjs +8 -8
  9. package/dist/biology/respiration/preset.mjs +4 -4
  10. package/dist/biology/sequence/central-dogma.mjs +5 -5
  11. package/dist/biology/sequence/core.d.mts +6 -6
  12. package/dist/biology/sequence/core.mjs +1 -1
  13. package/dist/biology/sequence/preset.mjs +6 -6
  14. package/dist/blocks/authoring.mjs +5 -5
  15. package/dist/blocks/biology.d.mts +2 -2
  16. package/dist/blocks/biology.mjs +5 -5
  17. package/dist/blocks/chem.d.mts +2 -2
  18. package/dist/blocks/chem.mjs +13 -13
  19. package/dist/blocks/circuits.d.mts +293 -4
  20. package/dist/blocks/circuits.mjs +874 -9
  21. package/dist/blocks/discrete.d.mts +30 -2
  22. package/dist/blocks/discrete.mjs +74 -4
  23. package/dist/blocks/economics.mjs +1 -1
  24. package/dist/blocks/geography.mjs +1 -1
  25. package/dist/blocks/geometry.mjs +3 -3
  26. package/dist/blocks/ict.d.mts +90 -1
  27. package/dist/blocks/ict.mjs +217 -7
  28. package/dist/blocks/index.d.mts +3064 -657
  29. package/dist/blocks/index.mjs +9 -9
  30. package/dist/blocks/lab-block.mjs +5 -5
  31. package/dist/blocks/lab-config.d.mts +1 -1
  32. package/dist/blocks/lab-config.mjs +4 -4
  33. package/dist/blocks/lab-gallery.d.mts +1 -1
  34. package/dist/blocks/lab-gallery.mjs +2 -2
  35. package/dist/blocks/language.d.mts +6 -6
  36. package/dist/blocks/language.mjs +12 -12
  37. package/dist/blocks/lesson.mjs +4 -4
  38. package/dist/blocks/math.d.mts +577 -11
  39. package/dist/blocks/math.mjs +1648 -14
  40. package/dist/blocks/ml.d.mts +45 -1
  41. package/dist/blocks/ml.mjs +80 -6
  42. package/dist/blocks/physics.d.mts +9 -4
  43. package/dist/blocks/physics.mjs +75 -28
  44. package/dist/blocks/statistics.mjs +1 -1
  45. package/dist/build/CircuitEditor.d.mts +14 -0
  46. package/dist/build/CircuitEditor.mjs +787 -0
  47. package/dist/build/CircuitPlayer.d.mts +19 -0
  48. package/dist/build/CircuitPlayer.mjs +53 -0
  49. package/dist/build/CircuitScene.d.mts +61 -0
  50. package/dist/build/CircuitScene.mjs +383 -0
  51. package/dist/build/contract.d.mts +116 -0
  52. package/dist/build/editor-ops.d.mts +65 -0
  53. package/dist/build/editor-ops.mjs +306 -0
  54. package/dist/build/editor-ui.mjs +121 -0
  55. package/dist/build/flow.d.mts +14 -0
  56. package/dist/build/flow.mjs +119 -0
  57. package/dist/build/index.d.mts +10 -0
  58. package/dist/build/index.mjs +10 -0
  59. package/dist/build/parts/ammeter.d.mts +1 -0
  60. package/dist/build/parts/ammeter.mjs +32 -0
  61. package/dist/build/parts/bulb.d.mts +1 -0
  62. package/dist/build/parts/bulb.mjs +50 -0
  63. package/dist/build/parts/capacitor.d.mts +1 -0
  64. package/dist/build/parts/capacitor.mjs +26 -0
  65. package/dist/build/parts/cell.d.mts +1 -0
  66. package/dist/build/parts/cell.mjs +40 -0
  67. package/dist/build/parts/diode.d.mts +1 -0
  68. package/dist/build/parts/diode.mjs +33 -0
  69. package/dist/build/parts/index.d.mts +5 -0
  70. package/dist/build/parts/index.mjs +43 -0
  71. package/dist/build/parts/mosfet.d.mts +1 -0
  72. package/dist/build/parts/mosfet.mjs +95 -0
  73. package/dist/build/parts/node.d.mts +1 -0
  74. package/dist/build/parts/node.mjs +32 -0
  75. package/dist/build/parts/resistor.d.mts +1 -0
  76. package/dist/build/parts/resistor.mjs +49 -0
  77. package/dist/build/parts/shared.mjs +42 -0
  78. package/dist/build/parts/switch.d.mts +1 -0
  79. package/dist/build/parts/switch.mjs +34 -0
  80. package/dist/build/parts.d.mts +1 -0
  81. package/dist/build/registry.d.mts +9 -0
  82. package/dist/build/registry.mjs +15 -0
  83. package/dist/build/solve.d.mts +8 -0
  84. package/dist/build/solve.mjs +0 -0
  85. package/dist/catalog/registry.d.mts +2 -2
  86. package/dist/catalog/templates.d.mts +1 -1
  87. package/dist/catalog/templates.mjs +6 -6
  88. package/dist/chem/battery.mjs +1 -1
  89. package/dist/chem/bohr-atom.mjs +4 -4
  90. package/dist/chem/diffusion/preset.mjs +4 -4
  91. package/dist/chem/electrochem/preset.mjs +5 -5
  92. package/dist/chem/equilibrium/preset.d.mts +1 -1
  93. package/dist/chem/equilibrium/preset.mjs +6 -6
  94. package/dist/chem/gas-box/preset.mjs +6 -6
  95. package/dist/chem/kinetics/preset.mjs +6 -6
  96. package/dist/chem/periodic-trends/preset.mjs +7 -7
  97. package/dist/chem/reaction-lab.mjs +3 -3
  98. package/dist/chem/reaction-profile.mjs +4 -4
  99. package/dist/chem/solution/dilution.mjs +6 -6
  100. package/dist/chem/solution/field.d.mts +2 -2
  101. package/dist/chem/solution/field.mjs +2 -2
  102. package/dist/chem/solution/solution-box.mjs +7 -7
  103. package/dist/chem/stoichiometry/preset.mjs +5 -5
  104. package/dist/chem/titration/preset.mjs +5 -5
  105. package/dist/circuits/ac-dc/asset.mjs +1 -1
  106. package/dist/circuits/ac-dc/preset.mjs +2 -2
  107. package/dist/circuits/brownout/index.d.mts +1 -0
  108. package/dist/circuits/brownout/preset.d.mts +22 -0
  109. package/dist/circuits/brownout/preset.mjs +399 -0
  110. package/dist/circuits/capacitor-leak/preset.mjs +13 -8
  111. package/dist/circuits/circuit/asset.mjs +71 -14
  112. package/dist/circuits/circuit/preset.mjs +23 -5
  113. package/dist/circuits/circuit-builder.mjs +60 -132
  114. package/dist/circuits/circuit-lab.mjs +60 -40
  115. package/dist/circuits/cmos-gate/index.d.mts +1 -0
  116. package/dist/circuits/cmos-gate/preset.d.mts +75 -0
  117. package/dist/circuits/cmos-gate/preset.mjs +1491 -0
  118. package/dist/circuits/diode/index.d.mts +1 -0
  119. package/dist/circuits/diode/preset.d.mts +25 -0
  120. package/dist/circuits/diode/preset.mjs +266 -0
  121. package/dist/circuits/index.d.mts +7 -1
  122. package/dist/circuits/index.mjs +7 -1
  123. package/dist/circuits/rc-charging/index.d.mts +1 -0
  124. package/dist/circuits/rc-charging/preset.d.mts +27 -0
  125. package/dist/circuits/rc-charging/preset.mjs +329 -0
  126. package/dist/circuits/semiconductor/index.d.mts +1 -0
  127. package/dist/circuits/semiconductor/preset.d.mts +102 -0
  128. package/dist/circuits/semiconductor/preset.mjs +1855 -0
  129. package/dist/circuits/transistor/index.d.mts +1 -0
  130. package/dist/circuits/transistor/preset.d.mts +27 -0
  131. package/dist/circuits/transistor/preset.mjs +329 -0
  132. package/dist/commerce/accounting/core.d.mts +1 -1
  133. package/dist/commerce/accounting/equation-balance.mjs +5 -5
  134. package/dist/commerce/accounting/journal-poster.mjs +8 -8
  135. package/dist/commerce/accounting/statement-sorter.mjs +4 -4
  136. package/dist/commerce/economics/core.d.mts +2 -2
  137. package/dist/commerce/economics/core.mjs +1 -1
  138. package/dist/commerce/economics/demand-shift-vs-move.mjs +6 -6
  139. package/dist/commerce/economics/elasticity-revenue.mjs +6 -6
  140. package/dist/commerce/economics/market-equilibrium.mjs +5 -5
  141. package/dist/core/easing.d.mts +3 -3
  142. package/dist/core/easing.mjs +2 -2
  143. package/dist/core/numeric.d.mts +3 -3
  144. package/dist/core/numeric.mjs +2 -2
  145. package/dist/core/reactive.d.mts +1 -1
  146. package/dist/core/reactive.mjs +1 -1
  147. package/dist/core/rng.d.mts +2 -2
  148. package/dist/core/rng.mjs +1 -1
  149. package/dist/core/tex.mjs +2 -2
  150. package/dist/core/timeline.d.mts +1 -1
  151. package/dist/core/timeline.mjs +1 -1
  152. package/dist/core/util.mjs +11 -1
  153. package/dist/discrete/arrangements/preset.mjs +6 -14
  154. package/dist/discrete/bayes/preset.mjs +43 -35
  155. package/dist/discrete/binomial/preset.mjs +2 -2
  156. package/dist/discrete/combination-studio/figure.d.mts +6 -0
  157. package/dist/discrete/combination-studio/figure.mjs +159 -0
  158. package/dist/discrete/combination-studio/index.d.mts +2 -0
  159. package/dist/discrete/combination-studio/preset.d.mts +44 -0
  160. package/dist/discrete/combination-studio/preset.mjs +440 -0
  161. package/dist/discrete/core/combinatorics.d.mts +23 -3
  162. package/dist/discrete/core/combinatorics.mjs +38 -3
  163. package/dist/discrete/core/pigeonhole.d.mts +1 -1
  164. package/dist/discrete/core/pigeonhole.mjs +1 -1
  165. package/dist/discrete/core/probability.d.mts +3 -3
  166. package/dist/discrete/core/probability.mjs +3 -3
  167. package/dist/discrete/core/sets.d.mts +1 -1
  168. package/dist/discrete/counting-slots/preset.mjs +8 -8
  169. package/dist/discrete/counting-tree/preset.mjs +65 -8
  170. package/dist/discrete/expected-value/preset.mjs +13 -13
  171. package/dist/discrete/hypergeometric/preset.mjs +48 -15
  172. package/dist/discrete/index.d.mts +4 -2
  173. package/dist/discrete/index.mjs +4 -2
  174. package/dist/discrete/karnaugh/preset.mjs +26 -20
  175. package/dist/discrete/lln/preset.mjs +44 -3
  176. package/dist/discrete/logic-circuit/preset.mjs +2 -2
  177. package/dist/discrete/monte-carlo/preset.d.mts +1 -1
  178. package/dist/discrete/monte-carlo/preset.mjs +14 -14
  179. package/dist/discrete/monty-hall/preset.mjs +6 -6
  180. package/dist/discrete/outcome-builder/preset.mjs +3 -3
  181. package/dist/discrete/pascal/preset.mjs +37 -7
  182. package/dist/discrete/rules.d.mts +20 -0
  183. package/dist/discrete/rules.mjs +264 -0
  184. package/dist/discrete/sample-space/preset.mjs +4 -4
  185. package/dist/discrete/selection/preset.mjs +7 -13
  186. package/dist/discrete/truth-table/preset.mjs +32 -9
  187. package/dist/discrete/venn/preset.mjs +71 -48
  188. package/dist/geography/cycle-lab/preset.mjs +17 -10
  189. package/dist/geography/cycles.d.mts +3 -3
  190. package/dist/geography/cycles.mjs +3 -3
  191. package/dist/geometry/board/preset.d.mts +2 -0
  192. package/dist/geometry/board/preset.mjs +11 -15
  193. package/dist/geometry/builder.mjs +3 -3
  194. package/dist/ict/number-systems/base-odometer.mjs +4 -4
  195. package/dist/ict/number-systems/bit-grouper.d.mts +1 -1
  196. package/dist/ict/number-systems/bit-grouper.mjs +4 -4
  197. package/dist/ict/number-systems/place-value-dial.d.mts +1 -1
  198. package/dist/ict/number-systems/place-value-dial.mjs +3 -3
  199. package/dist/ict/number-systems/wheel.d.mts +3 -3
  200. package/dist/ict/number-systems/wheel.mjs +4 -4
  201. package/dist/kit/annotate.mjs +3 -3
  202. package/dist/kit/answer-check.d.mts +2 -2
  203. package/dist/kit/answer-check.mjs +34 -6
  204. package/dist/kit/ask.d.mts +19 -0
  205. package/dist/kit/ask.mjs +46 -0
  206. package/dist/kit/bar-strip.mjs +53 -0
  207. package/dist/kit/calc.d.mts +33 -0
  208. package/dist/kit/calc.mjs +27 -0
  209. package/dist/kit/carrier-engine.mjs +147 -0
  210. package/dist/kit/clue-scene.d.mts +86 -0
  211. package/dist/kit/clue-scene.mjs +424 -0
  212. package/dist/kit/cluster.d.mts +30 -0
  213. package/dist/kit/cluster.mjs +81 -0
  214. package/dist/kit/controls.mjs +11 -5
  215. package/dist/kit/coords.d.mts +88 -0
  216. package/dist/kit/coords.mjs +192 -0
  217. package/dist/kit/data-scene.d.mts +27 -0
  218. package/dist/kit/data-scene.mjs +199 -0
  219. package/dist/kit/diagram.mjs +111 -50
  220. package/dist/kit/electronics.mjs +552 -60
  221. package/dist/kit/expr-analysis.d.mts +18 -6
  222. package/dist/kit/expr-analysis.mjs +82 -28
  223. package/dist/kit/frame.d.mts +3 -3
  224. package/dist/kit/frame.mjs +25 -6
  225. package/dist/kit/gameshow.mjs +2 -2
  226. package/dist/kit/index.d.mts +14 -2
  227. package/dist/kit/index.mjs +13 -1
  228. package/dist/kit/logic-gates.mjs +246 -47
  229. package/dist/kit/palette.mjs +26 -0
  230. package/dist/kit/pedagogy.d.mts +4 -4
  231. package/dist/kit/pedagogy.mjs +21 -17
  232. package/dist/kit/play.d.mts +1 -1
  233. package/dist/kit/play.mjs +3 -3
  234. package/dist/kit/predict.d.mts +55 -0
  235. package/dist/kit/predict.mjs +146 -0
  236. package/dist/kit/receipt.d.mts +29 -0
  237. package/dist/kit/receipt.mjs +94 -0
  238. package/dist/kit/rich.mjs +2 -2
  239. package/dist/kit/rule.d.mts +59 -0
  240. package/dist/kit/rule.mjs +215 -0
  241. package/dist/kit/scale.mjs +1 -1
  242. package/dist/kit/scene-library.d.mts +22 -0
  243. package/dist/kit/scene-library.mjs +311 -0
  244. package/dist/kit/scene-studio.d.mts +14 -0
  245. package/dist/kit/scene-studio.mjs +338 -0
  246. package/dist/kit/scenes.d.mts +31 -0
  247. package/dist/kit/scenes.mjs +569 -0
  248. package/dist/kit/slot-fill.d.mts +61 -0
  249. package/dist/kit/slot-fill.mjs +207 -0
  250. package/dist/kit/solve.d.mts +21 -0
  251. package/dist/kit/solve.mjs +75 -0
  252. package/dist/kit/space.mjs +5 -5
  253. package/dist/kit/steps.mjs +2 -2
  254. package/dist/kit/vessel.d.mts +69 -0
  255. package/dist/kit/vessel.mjs +191 -0
  256. package/dist/language/agreement/preset.mjs +2 -2
  257. package/dist/language/article-lens/preset.d.mts +1 -1
  258. package/dist/language/article-lens/preset.mjs +8 -8
  259. package/dist/language/deck.d.mts +3 -3
  260. package/dist/language/deck.mjs +1 -1
  261. package/dist/language/preposition-scene/preset.d.mts +2 -2
  262. package/dist/language/preposition-scene/preset.mjs +5 -5
  263. package/dist/language/sentence-builder/preset.mjs +5 -5
  264. package/dist/language/transform/preset.d.mts +2 -2
  265. package/dist/language/transform/preset.mjs +5 -5
  266. package/dist/language/ui.d.mts +3 -3
  267. package/dist/language/ui.mjs +4 -4
  268. package/dist/language/word-match/preset.mjs +3 -3
  269. package/dist/logic/LogicBuildLab.d.mts +22 -0
  270. package/dist/logic/LogicBuildLab.mjs +170 -0
  271. package/dist/logic/LogicEditScene.d.mts +31 -0
  272. package/dist/logic/LogicEditScene.mjs +276 -0
  273. package/dist/logic/LogicEditor.d.mts +14 -0
  274. package/dist/logic/LogicEditor.mjs +413 -0
  275. package/dist/logic/LogicScene.d.mts +32 -0
  276. package/dist/logic/LogicScene.mjs +277 -0
  277. package/dist/logic/contract.d.mts +72 -0
  278. package/dist/logic/display.d.mts +24 -0
  279. package/dist/logic/display.mjs +127 -0
  280. package/dist/logic/edit-ops.d.mts +44 -0
  281. package/dist/logic/edit-ops.mjs +177 -0
  282. package/dist/logic/evaluate.d.mts +11 -0
  283. package/dist/logic/evaluate.mjs +93 -0
  284. package/dist/logic/gates.d.mts +10 -0
  285. package/dist/logic/gates.mjs +73 -0
  286. package/dist/logic/index.d.mts +14 -0
  287. package/dist/logic/index.mjs +13 -0
  288. package/dist/logic/lab.d.mts +32 -0
  289. package/dist/logic/lab.mjs +160 -0
  290. package/dist/logic/presets.d.mts +12 -0
  291. package/dist/logic/presets.mjs +241 -0
  292. package/dist/logic/registry.d.mts +9 -0
  293. package/dist/logic/registry.mjs +15 -0
  294. package/dist/math/area-model/preset.mjs +70 -44
  295. package/dist/math/balance-algebra/preset.mjs +14 -5
  296. package/dist/math/broken-tree/index.d.mts +1 -0
  297. package/dist/math/broken-tree/preset.d.mts +26 -0
  298. package/dist/math/broken-tree/preset.mjs +435 -0
  299. package/dist/math/circle/index.d.mts +1 -0
  300. package/dist/math/circle/preset.d.mts +44 -0
  301. package/dist/math/circle/preset.mjs +198 -0
  302. package/dist/math/complex/core.d.mts +93 -0
  303. package/dist/math/complex/core.mjs +239 -0
  304. package/dist/math/complex/index.d.mts +3 -0
  305. package/dist/math/complex/preset.d.mts +31 -0
  306. package/dist/math/complex/preset.mjs +377 -0
  307. package/dist/math/complex/rules.d.mts +6 -0
  308. package/dist/math/complex/rules.mjs +121 -0
  309. package/dist/math/conic/index.d.mts +1 -0
  310. package/dist/math/conic/preset.d.mts +30 -0
  311. package/dist/math/conic/preset.mjs +334 -0
  312. package/dist/math/derivation.mjs +5 -5
  313. package/dist/math/derivative-explorer/preset.mjs +5 -5
  314. package/dist/math/domain-range/index.d.mts +1 -0
  315. package/dist/math/domain-range/preset.d.mts +33 -0
  316. package/dist/math/domain-range/preset.mjs +313 -0
  317. package/dist/math/fraction-bar/index.d.mts +1 -0
  318. package/dist/math/fraction-bar/preset.d.mts +27 -0
  319. package/dist/math/fraction-bar/preset.mjs +197 -0
  320. package/dist/math/function-machine/preset.mjs +2 -2
  321. package/dist/math/gradient-descent.mjs +6 -6
  322. package/dist/math/grapher/preset.d.mts +1 -1
  323. package/dist/math/grapher/preset.mjs +4 -4
  324. package/dist/math/harmonic-form/preset.mjs +6 -6
  325. package/dist/math/index.d.mts +27 -2
  326. package/dist/math/index.mjs +27 -2
  327. package/dist/math/integral-explorer/preset.mjs +2 -2
  328. package/dist/math/interactive/preset.mjs +3 -3
  329. package/dist/math/limit-explorer/preset.mjs +4 -4
  330. package/dist/math/linear-model/index.d.mts +1 -0
  331. package/dist/math/linear-model/preset.d.mts +53 -0
  332. package/dist/math/linear-model/preset.mjs +164 -0
  333. package/dist/math/linear-system/preset.mjs +4 -4
  334. package/dist/math/mystery-bucket/preset.mjs +6 -6
  335. package/dist/math/number-line/preset.mjs +3 -2
  336. package/dist/math/parabola/preset.mjs +4 -3
  337. package/dist/math/pattern/preset.mjs +7 -13
  338. package/dist/math/percent-bar/index.d.mts +1 -0
  339. package/dist/math/percent-bar/preset.d.mts +37 -0
  340. package/dist/math/percent-bar/preset.mjs +275 -0
  341. package/dist/math/poly/core.d.mts +50 -0
  342. package/dist/math/poly/core.mjs +268 -0
  343. package/dist/math/poly/index.d.mts +3 -0
  344. package/dist/math/poly/preset.d.mts +23 -0
  345. package/dist/math/poly/preset.mjs +141 -0
  346. package/dist/math/poly/steps.d.mts +10 -0
  347. package/dist/math/poly/steps.mjs +99 -0
  348. package/dist/math/rate-machine/index.d.mts +1 -0
  349. package/dist/math/rate-machine/preset.d.mts +35 -0
  350. package/dist/math/rate-machine/preset.mjs +281 -0
  351. package/dist/math/ratio-share/index.d.mts +1 -0
  352. package/dist/math/ratio-share/preset.d.mts +24 -0
  353. package/dist/math/ratio-share/preset.mjs +204 -0
  354. package/dist/math/receipt/index.d.mts +1 -0
  355. package/dist/math/receipt/preset.d.mts +22 -0
  356. package/dist/math/receipt/preset.mjs +137 -0
  357. package/dist/math/sequence-predict/index.d.mts +1 -0
  358. package/dist/math/sequence-predict/preset.d.mts +34 -0
  359. package/dist/math/sequence-predict/preset.mjs +130 -0
  360. package/dist/math/straight-line/index.d.mts +1 -0
  361. package/dist/math/straight-line/preset.d.mts +37 -0
  362. package/dist/math/straight-line/preset.mjs +374 -0
  363. package/dist/math/system-solve/index.d.mts +1 -0
  364. package/dist/math/system-solve/preset.d.mts +21 -0
  365. package/dist/math/system-solve/preset.mjs +227 -0
  366. package/dist/math/transform/index.d.mts +1 -0
  367. package/dist/math/transform/preset.d.mts +41 -0
  368. package/dist/math/transform/preset.mjs +343 -0
  369. package/dist/math/triangle-trig/preset.mjs +12 -9
  370. package/dist/math/trig/core.d.mts +37 -0
  371. package/dist/math/trig/core.mjs +150 -0
  372. package/dist/math/trig/diagrams.d.mts +1 -0
  373. package/dist/math/trig/diagrams.mjs +321 -0
  374. package/dist/math/trig/index.d.mts +3 -0
  375. package/dist/math/trig/preset.d.mts +25 -0
  376. package/dist/math/trig/preset.mjs +260 -0
  377. package/dist/math/trig/rules.d.mts +6 -0
  378. package/dist/math/trig/rules.mjs +159 -0
  379. package/dist/math/trig-explorer.mjs +4 -4
  380. package/dist/ml/boundary/preset.mjs +8 -3
  381. package/dist/ml/classifier/preset.mjs +31 -6
  382. package/dist/ml/kmeans/preset.mjs +4 -4
  383. package/dist/ml/knn/preset.mjs +47 -12
  384. package/dist/ml/regression/preset.mjs +36 -7
  385. package/dist/physics/atwood/preset.mjs +4 -4
  386. package/dist/physics/bullet-walls/preset.d.mts +1 -1
  387. package/dist/physics/bullet-walls/preset.mjs +7 -7
  388. package/dist/physics/carnot/preset.mjs +6 -6
  389. package/dist/physics/circular-motion/preset.mjs +36 -5
  390. package/dist/physics/collision-track/preset.mjs +35 -5
  391. package/dist/physics/efficiency/preset.d.mts +2 -2
  392. package/dist/physics/efficiency/preset.mjs +5 -5
  393. package/dist/physics/electric-field/preset.mjs +32 -23
  394. package/dist/physics/electric-flux/index.d.mts +1 -0
  395. package/dist/physics/electric-flux/preset.d.mts +29 -0
  396. package/dist/physics/electric-flux/preset.mjs +264 -0
  397. package/dist/physics/energy-skate/preset.mjs +5 -5
  398. package/dist/physics/entropy/preset.mjs +7 -7
  399. package/dist/physics/expansion/preset.mjs +13 -13
  400. package/dist/physics/exponential/asset.mjs +1 -1
  401. package/dist/physics/exponential/preset.mjs +4 -4
  402. package/dist/physics/gas-process/preset.mjs +3 -3
  403. package/dist/physics/gauss-law/index.d.mts +1 -0
  404. package/dist/physics/gauss-law/preset.d.mts +20 -0
  405. package/dist/physics/gauss-law/preset.mjs +286 -0
  406. package/dist/physics/gravitation/preset.mjs +7 -7
  407. package/dist/physics/gravity-drop.mjs +4 -4
  408. package/dist/physics/heat-transfer/preset.d.mts +1 -1
  409. package/dist/physics/heat-transfer/preset.mjs +10 -10
  410. package/dist/physics/impulse/preset.mjs +5 -5
  411. package/dist/physics/index.d.mts +4 -1
  412. package/dist/physics/index.mjs +4 -1
  413. package/dist/physics/kepler/preset.mjs +4 -4
  414. package/dist/physics/lever/preset.mjs +3 -3
  415. package/dist/physics/lorentz/preset.mjs +11 -11
  416. package/dist/physics/magnetism/preset.mjs +3 -3
  417. package/dist/physics/optics/preset.mjs +2 -2
  418. package/dist/physics/orbit-lab.mjs +5 -5
  419. package/dist/physics/projectile-lab.mjs +4 -4
  420. package/dist/physics/rain-relative/preset.mjs +5 -5
  421. package/dist/physics/ramp-forces/preset.mjs +5 -5
  422. package/dist/physics/river-boat.mjs +6 -6
  423. package/dist/physics/shm/preset.mjs +9 -9
  424. package/dist/physics/stopping-distance/preset.mjs +3 -3
  425. package/dist/physics/temperature-scales/preset.mjs +105 -116
  426. package/dist/physics/terminal-velocity/preset.mjs +5 -5
  427. package/dist/physics/thermal/preset.mjs +5 -5
  428. package/dist/physics/vector-board/preset.mjs +7 -6
  429. package/dist/physics/vector-scene.mjs +2 -2
  430. package/dist/physics/vector-types/preset.mjs +37 -3
  431. package/dist/physics/water-density/preset.mjs +12 -12
  432. package/dist/physics/waves/doppler.mjs +2 -2
  433. package/dist/physics/waves/preset.mjs +4 -4
  434. package/dist/physics/waves/ripple.mjs +6 -6
  435. package/dist/physics/waves/string.mjs +5 -5
  436. package/dist/physics/work-energy/preset.mjs +4 -4
  437. package/dist/physics/work-potential/index.d.mts +1 -0
  438. package/dist/physics/work-potential/preset.d.mts +20 -0
  439. package/dist/physics/work-potential/preset.mjs +276 -0
  440. package/dist/schemas/index.d.mts +6 -6
  441. package/dist/schemas/index.mjs +3 -3
  442. package/dist/statistics/center-spread/preset.mjs +3 -3
  443. package/dist/statistics/core/descriptive.d.mts +2 -2
  444. package/dist/statistics/core/descriptive.mjs +2 -2
  445. package/dist/statistics/core/normal.d.mts +3 -3
  446. package/dist/statistics/core/normal.mjs +3 -3
  447. package/dist/statistics/core/sequences.d.mts +1 -1
  448. package/dist/statistics/galton/preset.mjs +2 -2
  449. package/dist/statistics/histogram/preset.mjs +6 -6
  450. package/dist/statistics/normal/preset.mjs +2 -2
  451. package/dist/statistics/sampling/preset.mjs +4 -4
  452. package/dist/statistics/sequence/preset.mjs +58 -15
  453. package/dist/statistics/z-table/preset.mjs +17 -4
  454. package/package.json +11 -3
  455. package/styles.css +4 -1
@@ -13,13 +13,13 @@ import { CanvasLayer, useControlSurface, useFrameLoop, useInView } from "@classy
13
13
 
14
14
  //#region src/statistics/sampling/preset.tsx
15
15
  /**
16
- * SamplingDistributionLab — the two ideas that turn a sample into an inference.
16
+ * SamplingDistributionLab, the two ideas that turn a sample into an inference.
17
17
  *
18
- * • sampling mode — draw sample after sample (size n) from the population and pile
18
+ * • sampling mode, draw sample after sample (size n) from the population and pile
19
19
  * up their MEANS. The pile is far tighter than the population and matches
20
20
  * Normal(μ, σ/√n): the Central Limit Theorem, and why bigger n ⇒ smaller error.
21
- * • CI mode — from each sample build a confidence interval x̄ ± z*·(σ/√n) and stack
22
- * them; colour green if it captures μ, red if it misses. About C% are green —
21
+ * • CI mode, from each sample build a confidence interval x̄ ± z*·(σ/√n) and stack
22
+ * them; colour green if it captures μ, red if it misses. About C% are green ,
23
23
  * making concrete what "95% confident" actually means (it's the PROCEDURE, not
24
24
  * one interval). Running coverage converges to the chosen level.
25
25
  *
@@ -3,7 +3,7 @@
3
3
  import { Tex as Tex$1 } from "../../core/tex.mjs";
4
4
  import { Chip, Slider } from "../../kit/controls.mjs";
5
5
  import { ControlBar, Field, LabFrame } from "../../kit/frame.mjs";
6
- import { HintLadder, useHints } from "../../kit/pedagogy.mjs";
6
+ import { ChallengeCard, HintLadder, useChallenge, useCheckpoint, useHints } from "../../kit/pedagogy.mjs";
7
7
  import { infiniteSum, nthTerm, partialSum, partialSums, terms } from "../core/sequences.mjs";
8
8
  import { useMemo, useState } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -11,11 +11,11 @@ import { useControlSurface } from "@classytic/stage";
11
11
 
12
12
  //#region src/statistics/sequence/preset.tsx
13
13
  /**
14
- * SequenceLab — arithmetic & geometric sequences you can watch grow. Each term is
14
+ * SequenceLab, arithmetic & geometric sequences you can watch grow. Each term is
15
15
  * a bar (the pattern: a steady ladder for arithmetic, an explosion or a fading
16
16
  * tail for geometric); a line traces the RUNNING TOTAL across them. The magic
17
17
  * moment is geometric convergence: when |r|<1 the running-total line flattens onto
18
- * a dashed S∞ guide — an infinite sum with a finite answer, seen, not just stated.
18
+ * a dashed S∞ guide, an infinite sum with a finite answer, seen, not just stated.
19
19
  *
20
20
  * Closed forms come from the sequences kernel and are shown (KaTeX) beside the
21
21
  * brute running total, so formula and picture are provably the same thing.
@@ -30,6 +30,41 @@ function SequenceLab({ kind = "geometric", first = 1, step = .5, count = 8, titl
30
30
  const [d, setD] = useState(step);
31
31
  const [n, setN] = useState(count);
32
32
  const hints = useHints(hintList);
33
+ const defaultConverges = kind === "geometric" && Math.abs(step) < 1;
34
+ const predictQ = useMemo(() => [{
35
+ id: "sequence-converge",
36
+ prompt: kind === "geometric" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
37
+ "This geometric series has ratio ",
38
+ /* @__PURE__ */ jsx(Tex$1, { tex: `r = ${fnum(step)}` }),
39
+ ". It adds infinitely many terms, does the total settle on a finite number, or grow without bound?"
40
+ ] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
41
+ "This is an arithmetic series (each term adds a fixed ",
42
+ /* @__PURE__ */ jsx(Tex$1, { tex: `d = ${fnum(step)}` }),
43
+ "). Summed over infinitely many terms, does the total settle on a finite number, or grow without bound?"
44
+ ] }),
45
+ choices: [{
46
+ value: "converges",
47
+ label: "settles on a finite sum"
48
+ }, {
49
+ value: "diverges",
50
+ label: "grows forever"
51
+ }],
52
+ answer: defaultConverges ? "converges" : "diverges",
53
+ explain: /* @__PURE__ */ jsxs(Fragment$1, { children: [
54
+ "A geometric series converges only when ",
55
+ /* @__PURE__ */ jsx(Tex$1, { tex: "|r| < 1" }),
56
+ " (the terms shrink to nothing); an arithmetic series always grows without bound. Here ",
57
+ /* @__PURE__ */ jsx(Tex$1, { tex: kind === "geometric" ? `|r| ${defaultConverges ? "<" : "\\ge"} 1` : "d \\ne 0" }),
58
+ ", so it ",
59
+ defaultConverges ? "converges" : "diverges",
60
+ "."
61
+ ] })
62
+ }], []);
63
+ const ch = useChallenge(predictQ);
64
+ useCheckpoint({
65
+ solved: ch.allCorrect,
66
+ activity: "sequence:predict"
67
+ });
33
68
  const spec = {
34
69
  kind: k,
35
70
  first: a1,
@@ -282,18 +317,26 @@ function SequenceLab({ kind = "geometric", first = 1, step = .5, count = 8, titl
282
317
  })
283
318
  })
284
319
  ] }),
285
- footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("p", {
286
- style: {
287
- fontSize: 12.5,
288
- color: "var(--stage-muted)",
289
- marginTop: 4
290
- },
291
- children: [/* @__PURE__ */ jsx(Tex$1, { tex: sumTex }), !isArith && /* @__PURE__ */ jsxs(Fragment$1, { children: [
292
- " — with ",
293
- /* @__PURE__ */ jsx(Tex$1, { tex: "|r| < 1" }),
294
- " the tail shrinks to nothing, so the total converges."
295
- ] })]
296
- }), /* @__PURE__ */ jsx(HintLadder, { hints })] }),
320
+ footer: /* @__PURE__ */ jsxs(Fragment$1, { children: [
321
+ /* @__PURE__ */ jsx(ChallengeCard, {
322
+ questions: predictQ,
323
+ state: ch,
324
+ title: "Predict first"
325
+ }),
326
+ /* @__PURE__ */ jsxs("p", {
327
+ style: {
328
+ fontSize: 12.5,
329
+ color: "var(--stage-muted)",
330
+ marginTop: 4
331
+ },
332
+ children: [/* @__PURE__ */ jsx(Tex$1, { tex: sumTex }), !isArith && /* @__PURE__ */ jsxs(Fragment$1, { children: [
333
+ ", with ",
334
+ /* @__PURE__ */ jsx(Tex$1, { tex: "|r| < 1" }),
335
+ " the tail shrinks to nothing, so the total converges."
336
+ ] })]
337
+ }),
338
+ /* @__PURE__ */ jsx(HintLadder, { hints })
339
+ ] }),
297
340
  children: figure
298
341
  });
299
342
  }
@@ -3,7 +3,7 @@
3
3
  import { Tex as Tex$1 } from "../../core/tex.mjs";
4
4
  import { Chip } from "../../kit/controls.mjs";
5
5
  import { ControlBar, LabFrame } from "../../kit/frame.mjs";
6
- import { HintLadder, useHints } from "../../kit/pedagogy.mjs";
6
+ import { HintLadder, useCheckpoint, useHints } from "../../kit/pedagogy.mjs";
7
7
  import { normalCdf, normalPdf, zScore } from "../core/normal.mjs";
8
8
  import { useEffect, useMemo, useRef, useState } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -11,7 +11,7 @@ import { useControlSurface } from "@classytic/stage";
11
11
 
12
12
  //#region src/statistics/z-table/preset.tsx
13
13
  /**
14
- * ZTableLab — read a z-table like the exam expects, and see what each lookup MEANS.
14
+ * ZTableLab, read a z-table like the exam expects, and see what each lookup MEANS.
15
15
  * Standardize a raw value (x → z = (x−μ)/σ), then the classic Φ(z) table lights up
16
16
  * the row/column and cell for that z, while a mini standard-normal curve shades the
17
17
  * matching tail and shows the probability. Click any cell to jump there (and the
@@ -19,7 +19,7 @@ import { useControlSurface } from "@classytic/stage";
19
19
  * Φ(−z) = 1 − Φ(z), spelled out rather than hidden.
20
20
  *
21
21
  * Φ comes from the normal kernel (`normalCdf`); the table is just that function laid
22
- * out as the familiar grid — one source of truth, no transcribed magic numbers.
22
+ * out as the familiar grid, one source of truth, no transcribed magic numbers.
23
23
  */
24
24
  const CW = 230, CH = 116, CPAD = 6;
25
25
  const ROWS = Array.from({ length: 35 }, (_, i) => i / 10);
@@ -66,6 +66,19 @@ function ZTableLab({ x = 650, mu = 500, sigma = 100, tail = "left", title = "The
66
66
  const br = box.getBoundingClientRect(), rr = row.getBoundingClientRect();
67
67
  box.scrollTop += rr.top - br.top - box.clientHeight / 2 + rr.height / 2;
68
68
  }, [zLook]);
69
+ const lookedUp = useRef(/* @__PURE__ */ new Set());
70
+ const [lookupCount, setLookupCount] = useState(0);
71
+ useEffect(() => {
72
+ if (Number.isFinite(zLook) && !lookedUp.current.has(zLook)) {
73
+ lookedUp.current.add(zLook);
74
+ setLookupCount(lookedUp.current.size);
75
+ }
76
+ }, [zLook]);
77
+ useCheckpoint({
78
+ solved: lookupCount >= 3,
79
+ activity: `z-table:${title}`,
80
+ hintsUsed: hints?.count ?? 0
81
+ });
69
82
  useControlSurface(controlId, {
70
83
  x: {
71
84
  type: "number",
@@ -236,7 +249,7 @@ function ZTableLab({ x = 650, mu = 500, sigma = 100, tail = "left", title = "The
236
249
  className: "lab-prompt",
237
250
  style: { marginTop: 6 },
238
251
  children: [
239
- "z is negative — the table lists |z|; use symmetry ",
252
+ "z is negative, the table lists |z|; use symmetry ",
240
253
  /* @__PURE__ */ jsx("b", { children: /* @__PURE__ */ jsx(Tex$1, { tex: `\\Phi(${f2(z)}) = 1 - \\Phi(${f2(-z)}) = ${f4(phi)}` }) }),
241
254
  "."
242
255
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@classytic/labs",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Interactive learning lab — authorable, domain-organized interactive lessons (math, physics, chemistry, circuits, geometry…) built on the @classytic/stage engine. Per-domain subpaths; lesson blocks + presets creators compose and sell.",
5
5
  "author": "Classytic",
6
6
  "license": "MIT",
@@ -83,6 +83,14 @@
83
83
  "types": "./dist/kit/index.d.mts",
84
84
  "default": "./dist/kit/index.mjs"
85
85
  },
86
+ "./build": {
87
+ "types": "./dist/build/index.d.mts",
88
+ "default": "./dist/build/index.mjs"
89
+ },
90
+ "./logic": {
91
+ "types": "./dist/logic/index.d.mts",
92
+ "default": "./dist/logic/index.mjs"
93
+ },
86
94
  "./blocks": {
87
95
  "types": "./dist/blocks/index.d.mts",
88
96
  "default": "./dist/blocks/index.mjs"
@@ -191,7 +199,7 @@
191
199
  "peerDependencies": {
192
200
  "@classytic/cms": ">=0.2.1",
193
201
  "@classytic/cms-ui": ">=0.3.1",
194
- "@classytic/stage": ">=0.1.0",
202
+ "@classytic/stage": ">=0.2.0",
195
203
  "clsx": ">=2",
196
204
  "katex": ">=0.16",
197
205
  "lucide-react": ">=0.4",
@@ -221,7 +229,7 @@
221
229
  "@changesets/cli": "^2.27.9",
222
230
  "@classytic/cms-ui": "^0.3.1",
223
231
  "@classytic/dev-tools": "^0.2.0",
224
- "@classytic/stage": "^0.1.0",
232
+ "@classytic/stage": "^0.2.0",
225
233
  "@testing-library/react": "^16.3.2",
226
234
  "@types/node": "^22.0.0",
227
235
  "@types/react": "^19.2.0",
package/styles.css CHANGED
@@ -77,7 +77,10 @@
77
77
  .lab-challenge-h { font-size: 11px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--muted-foreground, color-mix(in oklab, currentColor 60%, transparent)); }
78
78
  .lab-challenge-count { font-variant-numeric: tabular-nums; }
79
79
  .lab-challenge-q { display: flex; flex-direction: column; gap: 7px; align-items: flex-start; }
80
- .lab-challenge-prompt { font-size: 14px; font-weight: 600; color: var(--foreground, currentColor); }
80
+ /* separate each question from the previous so prompt+choices read as one group */
81
+ .lab-challenge-q + .lab-challenge-q { padding-top: 12px; border-top: 1px solid var(--border, color-mix(in oklab, currentColor 12%, transparent)); }
82
+ .lab-challenge-prompt { display: flex; align-items: baseline; gap: 8px; font-size: 14px; font-weight: 600; color: var(--foreground, currentColor); }
83
+ .lab-challenge-num { flex: none; display: inline-flex; align-items: center; justify-content: center; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 999px; font-size: 11px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--primary-foreground, #fff); background: var(--primary, oklch(0.59 0.22 261)); transform: translateY(1px); }
81
84
  .lab-choices { display: flex; flex-wrap: wrap; gap: 8px; }
82
85
  .lab-choice { padding: 7px 14px; border-radius: 999px; border: 1.5px solid var(--border, color-mix(in oklab, currentColor 22%, transparent)); background: var(--card, transparent); color: var(--foreground, currentColor); font-size: 13.5px; font-weight: 600; cursor: pointer; transition: border-color .12s, background .12s, color .12s; }
83
86
  .lab-choice:hover { border-color: var(--primary, oklch(0.59 0.22 261)); }