@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
@@ -3,7 +3,7 @@ import { Node } from "@classytic/stage";
3
3
  //#region src/kit/expr-analysis.d.ts
4
4
  type Fn1 = (x: number) => number;
5
5
  /** A straight line y = m·x + c, with the point it was taken at and an evaluator. */
6
- interface Line {
6
+ interface Line$1 {
7
7
  m: number;
8
8
  c: number;
9
9
  at: {
@@ -12,7 +12,14 @@ interface Line {
12
12
  };
13
13
  f: Fn1;
14
14
  }
15
- /** Real roots of f on [a,b] via a sign-change scan refined by bisection. */
15
+ /**
16
+ * Real roots of f on [a,b]. Two passes so it doesn't miss the roots students do:
17
+ * 1. sign-change brackets refined by BISECTION (odd-multiplicity / crossings);
18
+ * 2. local minima of |f| polished by NEWTON, accepted only if |f| really drops
19
+ * to ~0 — this recovers TANGENT / double roots (e.g. x² at 0) that never
20
+ * change sign. False minima (a parabola that never reaches 0) are rejected
21
+ * by the accept tolerance, so no phantom roots.
22
+ */
16
23
  declare function roots(f: Fn1, a: number, b: number, opts?: {
17
24
  steps?: number;
18
25
  tol?: number;
@@ -26,12 +33,17 @@ declare function intersections(f: Fn1, g: Fn1, a: number, b: number, opts?: {
26
33
  y: number;
27
34
  }[];
28
35
  /** Exact tangent line to `ast` at x = x0 (params baked in via `scope`). */
29
- declare function tangentAt(ast: Node, x0: number, varName?: string, params?: Record<string, number>): Line | null;
36
+ declare function tangentAt(ast: Node, x0: number, varName?: string, params?: Record<string, number>): Line$1 | null;
30
37
  /** Normal line to `ast` at x = x0 (⟂ the tangent). Null if the tangent is horizontal. */
31
- declare function normalAt(ast: Node, x0: number, varName?: string, params?: Record<string, number>): Line | null;
38
+ declare function normalAt(ast: Node, x0: number, varName?: string, params?: Record<string, number>): Line$1 | null;
32
39
  /** Composite-Simpson definite integral ∫_a^b f dx. */
33
40
  declare function integrate(f: Fn1, a: number, b: number, n?: number): number;
34
- /** Unsigned area between f and g over [a,b]. */
41
+ /**
42
+ * Geometric area between f and g over [a,b]. SPLITS at every crossing so the
43
+ * pieces where g > f don't cancel the pieces where f > g (which a single
44
+ * |∫(f−g)| would). Sums |∫| over each sub-interval — the area an exam actually
45
+ * wants.
46
+ */
35
47
  declare function areaBetween(f: Fn1, g: Fn1, a: number, b: number, n?: number): number;
36
48
  //#endregion
37
- export { Fn1, Line, areaBetween, integrate, intersections, normalAt, roots, tangentAt };
49
+ export { Fn1, Line$1 as Line, areaBetween, integrate, intersections, normalAt, roots, tangentAt };
@@ -2,10 +2,10 @@ import { differentiate, evaluate } from "@classytic/stage";
2
2
 
3
3
  //#region src/kit/expr-analysis.ts
4
4
  /**
5
- * expr-analysis — the numeric/symbolic "solving" layer of the interactive-problem
5
+ * expr-analysis, the numeric/symbolic "solving" layer of the interactive-problem
6
6
  * engine, built on @classytic/stage's expr engine. Pure functions (no React) so a
7
- * creator's authored config can derive the quantities A-level questions ask for —
8
- * roots, intersections, tangents/normals, areas — without anyone hand-coding a lab.
7
+ * creator's authored config can derive the quantities A-level questions ask for ,
8
+ * roots, intersections, tangents/normals, areas, without anyone hand-coding a lab.
9
9
  *
10
10
  * Everything works on a compiled scalar `Fn1 = (x) => number` (params already baked
11
11
  * into the closure) plus, for exact tangents, the parsed `Node` AST.
@@ -13,39 +13,79 @@ import { differentiate, evaluate } from "@classytic/stage";
13
13
  function pushUnique(out, x, tol) {
14
14
  if (!out.some((p) => Math.abs(p - x) <= tol)) out.push(x);
15
15
  }
16
- /** Real roots of f on [a,b] via a sign-change scan refined by bisection. */
16
+ /** Newton's method from x0 using a central-difference derivative (we only hold
17
+ * the numeric f, not its AST). Returns the polished root, or null on a flat
18
+ * derivative / divergence. Used to recover tangent (even-multiplicity) roots a
19
+ * sign-change scan can't see. */
20
+ function newton(f, x0, tol) {
21
+ let x = x0;
22
+ for (let k = 0; k < 40; k++) {
23
+ const fx = f(x);
24
+ if (!Number.isFinite(fx)) return null;
25
+ if (Math.abs(fx) <= tol) return x;
26
+ const h = Math.max(1e-7, Math.abs(x) * 1e-7);
27
+ const d = (f(x + h) - f(x - h)) / (2 * h);
28
+ if (!Number.isFinite(d) || Math.abs(d) < 1e-13) return null;
29
+ const nx = x - fx / d;
30
+ if (!Number.isFinite(nx)) return null;
31
+ if (Math.abs(nx - x) <= tol) return nx;
32
+ x = nx;
33
+ }
34
+ return Math.abs(f(x)) <= tol ? x : null;
35
+ }
36
+ /**
37
+ * Real roots of f on [a,b]. Two passes so it doesn't miss the roots students do:
38
+ * 1. sign-change brackets refined by BISECTION (odd-multiplicity / crossings);
39
+ * 2. local minima of |f| polished by NEWTON, accepted only if |f| really drops
40
+ * to ~0 — this recovers TANGENT / double roots (e.g. x² at 0) that never
41
+ * change sign. False minima (a parabola that never reaches 0) are rejected
42
+ * by the accept tolerance, so no phantom roots.
43
+ */
17
44
  function roots(f, a, b, opts = {}) {
18
45
  const steps = opts.steps ?? 1e3;
19
46
  const tol = opts.tol ?? 1e-9;
20
47
  const grid = (b - a) / steps;
21
48
  const out = [];
22
- let xPrev = a;
23
- let fPrev = f(a);
24
- for (let i = 1; i <= steps; i++) {
49
+ const xs = [], fs = [];
50
+ for (let i = 0; i <= steps; i++) {
25
51
  const x = a + grid * i;
26
- const fx = f(x);
27
- if (Number.isFinite(fPrev) && Number.isFinite(fx)) {
28
- if (fPrev === 0) pushUnique(out, xPrev, grid);
29
- else if (fPrev * fx < 0) {
30
- let lo = xPrev;
31
- let hi = x;
32
- let flo = fPrev;
33
- for (let k = 0; k < 80 && hi - lo > tol; k++) {
34
- const mid = (lo + hi) / 2;
35
- const fm = f(mid);
36
- if (!Number.isFinite(fm)) break;
37
- if (flo * fm <= 0) hi = mid;
38
- else {
39
- lo = mid;
40
- flo = fm;
41
- }
52
+ xs.push(x);
53
+ fs.push(f(x));
54
+ }
55
+ let maxAbs = 0;
56
+ for (const v of fs) if (Number.isFinite(v)) maxAbs = Math.max(maxAbs, Math.abs(v));
57
+ const acceptTol = 1e-7 * (1 + maxAbs);
58
+ for (let i = 1; i <= steps; i++) {
59
+ const fPrev = fs[i - 1], fx = fs[i];
60
+ if (!Number.isFinite(fPrev) || !Number.isFinite(fx)) continue;
61
+ if (fPrev === 0) {
62
+ pushUnique(out, xs[i - 1], grid);
63
+ continue;
64
+ }
65
+ if (fPrev * fx < 0) {
66
+ let lo = xs[i - 1], hi = xs[i], flo = fPrev;
67
+ for (let k = 0; k < 80 && hi - lo > tol; k++) {
68
+ const mid = (lo + hi) / 2;
69
+ const fm = f(mid);
70
+ if (!Number.isFinite(fm)) break;
71
+ if (flo * fm <= 0) hi = mid;
72
+ else {
73
+ lo = mid;
74
+ flo = fm;
42
75
  }
43
- pushUnique(out, (lo + hi) / 2, grid);
44
76
  }
77
+ pushUnique(out, (lo + hi) / 2, grid);
45
78
  }
46
- xPrev = x;
47
- fPrev = fx;
48
79
  }
80
+ for (let i = 1; i < steps; i++) {
81
+ const p = fs[i - 1], c = fs[i], q = fs[i + 1];
82
+ if (!Number.isFinite(p) || !Number.isFinite(c) || !Number.isFinite(q)) continue;
83
+ if (Math.abs(c) <= Math.abs(p) && Math.abs(c) <= Math.abs(q) && Math.abs(c) < .05 * (1 + maxAbs)) {
84
+ const r = newton(f, xs[i], tol);
85
+ if (r != null && r >= a - grid && r <= b + grid && Math.abs(f(r)) <= acceptTol) pushUnique(out, r, grid);
86
+ }
87
+ }
88
+ out.sort((u, v) => u - v);
49
89
  return out;
50
90
  }
51
91
  /** Points where f and g meet on [a,b]. */
@@ -102,9 +142,23 @@ function integrate(f, a, b, n = 1e3) {
102
142
  for (let i = 1; i < N; i++) s += (i % 2 ? 4 : 2) * f(a + i * h);
103
143
  return h / 3 * s;
104
144
  }
105
- /** Unsigned area between f and g over [a,b]. */
145
+ /**
146
+ * Geometric area between f and g over [a,b]. SPLITS at every crossing so the
147
+ * pieces where g > f don't cancel the pieces where f > g (which a single
148
+ * |∫(f−g)| would). Sums |∫| over each sub-interval — the area an exam actually
149
+ * wants.
150
+ */
106
151
  function areaBetween(f, g, a, b, n = 1e3) {
107
- return Math.abs(integrate((x) => f(x) - g(x), a, b, n));
152
+ const d = (x) => f(x) - g(x);
153
+ const cuts = [
154
+ a,
155
+ ...roots(d, a, b).filter((x) => x > a + 1e-9 && x < b - 1e-9).sort((u, v) => u - v),
156
+ b
157
+ ];
158
+ const per = Math.max(20, Math.round(n / Math.max(1, cuts.length - 1)));
159
+ let area = 0;
160
+ for (let i = 0; i < cuts.length - 1; i++) area += Math.abs(integrate(d, cuts[i], cuts[i + 1], per));
161
+ return area;
108
162
  }
109
163
 
110
164
  //#endregion
@@ -17,13 +17,13 @@ interface LabFrameProps {
17
17
  children: ReactNode;
18
18
  /** Optional narrow side column (readouts, a guess, a result callout). */
19
19
  aside?: ReactNode;
20
- /** The single controls bar — pass <ControlBar>…</ControlBar>. */
20
+ /** The single controls bar, pass <ControlBar>…</ControlBar>. */
21
21
  controls?: ReactNode;
22
22
  /** Quiet footer: feedback / hints / reveal / a note. */
23
23
  footer?: ReactNode;
24
- /** Ref on the outer container — e.g. for useInView() to pause a sim off-screen. */
24
+ /** Ref on the outer container, e.g. for useInView() to pause a sim off-screen. */
25
25
  rootRef?: Ref<HTMLDivElement>;
26
- /** Creator's per-control hide/lock policy — flows to every Field/Control below. */
26
+ /** Creator's per-control hide/lock policy, flows to every Field/Control below. */
27
27
  controlConfig?: ControlConfig;
28
28
  }
29
29
  declare function LabFrame({
@@ -5,24 +5,24 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
5
 
6
6
  //#region src/kit/frame.tsx
7
7
  /**
8
- * LabFrame — the shared layout shell every lab composes into, so labs stop being
8
+ * LabFrame, the shared layout shell every lab composes into, so labs stop being
9
9
  * hand-rolled inline-styled one-offs and read as ONE product. Structure:
10
10
  *
11
- * title + one-line prompt (header — no walls of text)
11
+ * title + one-line prompt (header, no walls of text)
12
12
  * [▸ goals] (collapsed disclosure, reveal-on-action)
13
13
  * ┌─ figure (dominant) ─┬─ aside ─┐ (one grid; aside optional + narrow)
14
14
  * └─────────────────────┴─────────┘
15
15
  * [ one controls bar ] (ALL knobs in one place, never scattered)
16
16
  * feedback / hints / reveal (quiet footer)
17
17
  *
18
- * Everything styles off `.lab-*` in @classytic/labs/styles.css — no inline layout.
18
+ * Everything styles off `.lab-*` in @classytic/labs/styles.css, no inline layout.
19
19
  * Pair with the existing pedagogy kit (HintLadder, RevealSolution, Feedback).
20
20
  *
21
- * CREATOR CONTROL — `controlConfig` lets the author decide, per knob, what a learner
21
+ * CREATOR CONTROL, `controlConfig` lets the author decide, per knob, what a learner
22
22
  * may touch: `{ hide: ['mass'], lock: ['angle'] }`. Hidden knobs vanish; locked knobs
23
23
  * stay visible but read-only (their value is whatever the creator set as the initial
24
24
  * prop). LabFrame provides this as context; `Field` (keyed by its `name ?? label`) and
25
- * the `Control` wrapper consume it — so a lab opts in with ~2 lines and every knob,
25
+ * the `Control` wrapper consume it, so a lab opts in with ~2 lines and every knob,
26
26
  * existing or new, honours it. The mechanism is uniform: no per-knob boolean props.
27
27
  */
28
28
  const ControlCtx = createContext(void 0);
@@ -83,6 +83,25 @@ function LabFrame({ title, prompt, objectives, children, aside, controls, footer
83
83
  function ControlBar({ children }) {
84
84
  return /* @__PURE__ */ jsx(Fragment$1, { children });
85
85
  }
86
+ /**
87
+ * Group an inline expression (parens, steppers, "→ result", …) so it reads as ONE
88
+ * unit. `.lab-controls` is a grid that gives EACH ControlBar child its own ~185px
89
+ * cell, which scatters a multi-piece expression across columns. Wrap those pieces
90
+ * in `<ControlExpr>` and they stay together (one cell, tight gaps, baseline-aligned).
91
+ */
92
+ function ControlExpr({ children }) {
93
+ return /* @__PURE__ */ jsx("span", {
94
+ style: {
95
+ gridColumn: "1 / -1",
96
+ display: "flex",
97
+ alignItems: "center",
98
+ flexWrap: "wrap",
99
+ gap: 8,
100
+ fontWeight: 600
101
+ },
102
+ children
103
+ });
104
+ }
86
105
  const LockMark = () => /* @__PURE__ */ jsxs("svg", {
87
106
  className: "lab-field-lock",
88
107
  viewBox: "0 0 24 24",
@@ -202,4 +221,4 @@ function MeterBar({ label, frac, color, value }) {
202
221
  }
203
222
 
204
223
  //#endregion
205
- export { Callout, Control, ControlBar, Field, LabFrame, LiveRegion, MeterBar };
224
+ export { Callout, Control, ControlBar, ControlExpr, Field, LabFrame, LiveRegion, MeterBar };
@@ -148,7 +148,7 @@ function DoorGlyph({ x, y, w, h, label, open = 0, picked = false, dim = false, c
148
148
  ]
149
149
  });
150
150
  }
151
- /** The prize — a shiny car (side view) in box (x,y,w,h). */
151
+ /** The prize, a shiny car (side view) in box (x,y,w,h). */
152
152
  function CarGlyph({ x, y, w, h }) {
153
153
  const X = (f) => x + w * f, Y = (f) => y + h * f;
154
154
  const edge = "color-mix(in oklab, var(--stage-warn) 55%, black)";
@@ -214,7 +214,7 @@ function CarGlyph({ x, y, w, h }) {
214
214
  ] }, f))
215
215
  ] });
216
216
  }
217
- /** The booby prize — a goat head in box (x,y,w,h). Big swept horns + beard so it
217
+ /** The booby prize, a goat head in box (x,y,w,h). Big swept horns + beard so it
218
218
  * reads as a goat, not a mouse. */
219
219
  function GoatGlyph({ x, y, w, h }) {
220
220
  const X = (f) => x + w * f, Y = (f) => y + h * f;
@@ -1,5 +1,17 @@
1
- import { Callout, ControlBar, ControlConfig, Field, LabFrame } from "./frame.mjs";
2
1
  import { ChallengeCard, ChallengeChoice, ChallengeQuestion, ChallengeState, CheckpointArgs, Feedback, HintLadder, Hints, Objectives, RevealSolution, RevealSolutionProps, useChallenge, useCheckpoint, useHints } from "./pedagogy.mjs";
2
+ import { Calc, CalcStep, Worked, calc, texNum } from "./calc.mjs";
3
+ import { RuleCard, RuleDef, RuleInput, RuleLab, WorkedSteps } from "./rule.mjs";
4
+ import { ReceiptItem, ReceiptScene, ReceiptSceneProps } from "./receipt.mjs";
5
+ import { Clue, ClueBalance, ClueBar, ClueCoins, ClueReceipt, ClueScene, ClueSceneKind, ClueSceneMeta, ClueTiles, Unknown, UnknownChip, clueTotal, getClueScene, listClueScenes, registerClueScene } from "./clue-scene.mjs";
6
+ import { Callout, ControlBar, ControlConfig, Field, LabFrame } from "./frame.mjs";
3
7
  import { StepNav, Steps, useSteps } from "./steps.mjs";
4
8
  import { PlayGate, PlayWrap, usePlayGate } from "./play.mjs";
5
- export { Callout, ChallengeCard, type ChallengeChoice, type ChallengeQuestion, type ChallengeState, type CheckpointArgs, ControlBar, type ControlConfig, Feedback, Field, HintLadder, type Hints, LabFrame, Objectives, type PlayGate, PlayWrap, RevealSolution, type RevealSolutionProps, StepNav, type Steps, useChallenge, useCheckpoint, useHints, usePlayGate, useSteps };
9
+ import { GuessTone, Vessel, VesselGlyph, VesselGlyphProps, VesselProps } from "./vessel.mjs";
10
+ import { PredictPlot, PredictPlotProps } from "./predict.mjs";
11
+ import { DotCluster, DotClusterProps } from "./cluster.mjs";
12
+ import { Blank, FillSlot, SlotFill, SlotFillProps, SlotFillState, SlotTray, useSlotFill } from "./slot-fill.mjs";
13
+ import { QuantityInput, QuantityScene, SceneMeta, getScene, listScenes, registerScene } from "./scenes.mjs";
14
+ import { DataSceneSpec, dataScene, registerDataScene } from "./data-scene.mjs";
15
+ import { SceneStudio, SceneStudioProps } from "./scene-studio.mjs";
16
+ import { SceneLibrary, SceneLibraryManager, loadSceneLibrary, registerScenes, saveSceneLibrary, useSceneLibrary } from "./scene-library.mjs";
17
+ export { Blank, Calc, type CalcStep, Callout, ChallengeCard, type ChallengeChoice, type ChallengeQuestion, type ChallengeState, type CheckpointArgs, type Clue, ClueBalance, ClueBar, ClueCoins, ClueReceipt, ClueScene, type ClueSceneKind, type ClueSceneMeta, ClueTiles, ControlBar, type ControlConfig, type DataSceneSpec, DotCluster, type DotClusterProps, Feedback, Field, type FillSlot, type GuessTone, HintLadder, type Hints, LabFrame, Objectives, type PlayGate, PlayWrap, PredictPlot, type PredictPlotProps, type QuantityInput, type QuantityScene, type ReceiptItem, ReceiptScene, type ReceiptSceneProps, RevealSolution, type RevealSolutionProps, RuleCard, type RuleDef, type RuleInput, RuleLab, type SceneLibrary, SceneLibraryManager, type SceneMeta, SceneStudio, type SceneStudioProps, SlotFill, type SlotFillProps, type SlotFillState, SlotTray, StepNav, type Steps, type Unknown, UnknownChip, Vessel, VesselGlyph, type VesselGlyphProps, type VesselProps, type Worked, WorkedSteps, calc, clueTotal, dataScene, getClueScene, getScene, listClueScenes, listScenes, loadSceneLibrary, registerClueScene, registerDataScene, registerScene, registerScenes, saveSceneLibrary, texNum, useChallenge, useCheckpoint, useHints, usePlayGate, useSceneLibrary, useSlotFill, useSteps };
@@ -1,6 +1,18 @@
1
1
  import { Callout, ControlBar, Field, LabFrame } from "./frame.mjs";
2
2
  import { ChallengeCard, Feedback, HintLadder, Objectives, RevealSolution, useChallenge, useCheckpoint, useHints } from "./pedagogy.mjs";
3
3
  import { PlayWrap, usePlayGate } from "./play.mjs";
4
+ import { PredictPlot } from "./predict.mjs";
5
+ import { Vessel, VesselGlyph } from "./vessel.mjs";
6
+ import { DotCluster } from "./cluster.mjs";
7
+ import { getScene, listScenes, registerScene } from "./scenes.mjs";
8
+ import { Blank, SlotFill, SlotTray, useSlotFill } from "./slot-fill.mjs";
9
+ import { Calc, calc, texNum } from "./calc.mjs";
10
+ import { ReceiptScene } from "./receipt.mjs";
11
+ import { ClueBalance, ClueBar, ClueCoins, ClueReceipt, ClueScene, ClueTiles, UnknownChip, clueTotal, getClueScene, listClueScenes, registerClueScene } from "./clue-scene.mjs";
12
+ import { RuleCard, RuleLab, WorkedSteps } from "./rule.mjs";
4
13
  import { StepNav, useSteps } from "./steps.mjs";
14
+ import { dataScene, registerDataScene } from "./data-scene.mjs";
15
+ import { SceneStudio } from "./scene-studio.mjs";
16
+ import { SceneLibraryManager, loadSceneLibrary, registerScenes, saveSceneLibrary, useSceneLibrary } from "./scene-library.mjs";
5
17
 
6
- export { Callout, ChallengeCard, ControlBar, Feedback, Field, HintLadder, LabFrame, Objectives, PlayWrap, RevealSolution, StepNav, useChallenge, useCheckpoint, useHints, usePlayGate, useSteps };
18
+ export { Blank, Calc, Callout, ChallengeCard, ClueBalance, ClueBar, ClueCoins, ClueReceipt, ClueScene, ClueTiles, ControlBar, DotCluster, Feedback, Field, HintLadder, LabFrame, Objectives, PlayWrap, PredictPlot, ReceiptScene, RevealSolution, RuleCard, RuleLab, SceneLibraryManager, SceneStudio, SlotFill, SlotTray, StepNav, UnknownChip, Vessel, VesselGlyph, WorkedSteps, calc, clueTotal, dataScene, getClueScene, getScene, listClueScenes, listScenes, loadSceneLibrary, registerClueScene, registerDataScene, registerScene, registerScenes, saveSceneLibrary, texNum, useChallenge, useCheckpoint, useHints, usePlayGate, useSceneLibrary, useSlotFill, useSteps };