@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
@@ -0,0 +1,241 @@
1
+ //#region src/logic/presets.ts
2
+ const inp = (id, label, value = false) => ({
3
+ id,
4
+ label,
5
+ value
6
+ });
7
+ const LOGIC_PRESETS = {
8
+ and: {
9
+ title: "AND gate",
10
+ doc: {
11
+ inputs: [inp("a", "A", true), inp("b", "B", true)],
12
+ gates: [{
13
+ id: "g",
14
+ kind: "AND",
15
+ in: ["a", "b"]
16
+ }],
17
+ outputs: [{
18
+ id: "y",
19
+ in: "g",
20
+ label: "Y"
21
+ }]
22
+ }
23
+ },
24
+ or: {
25
+ title: "OR gate",
26
+ doc: {
27
+ inputs: [inp("a", "A", true), inp("b", "B")],
28
+ gates: [{
29
+ id: "g",
30
+ kind: "OR",
31
+ in: ["a", "b"]
32
+ }],
33
+ outputs: [{
34
+ id: "y",
35
+ in: "g",
36
+ label: "Y"
37
+ }]
38
+ }
39
+ },
40
+ xor: {
41
+ title: "XOR gate (differ?)",
42
+ doc: {
43
+ inputs: [inp("a", "A", true), inp("b", "B")],
44
+ gates: [{
45
+ id: "g",
46
+ kind: "XOR",
47
+ in: ["a", "b"]
48
+ }],
49
+ outputs: [{
50
+ id: "y",
51
+ in: "g",
52
+ label: "Y"
53
+ }]
54
+ }
55
+ },
56
+ "nand-not": {
57
+ title: "NOT from a NAND",
58
+ doc: {
59
+ inputs: [inp("a", "A", true)],
60
+ gates: [{
61
+ id: "g",
62
+ kind: "NAND",
63
+ in: ["a", "a"],
64
+ label: "NAND"
65
+ }],
66
+ outputs: [{
67
+ id: "y",
68
+ in: "g",
69
+ label: "NOT A"
70
+ }]
71
+ }
72
+ },
73
+ "nand-and": {
74
+ title: "AND from two NANDs",
75
+ doc: {
76
+ inputs: [inp("a", "A", true), inp("b", "B", true)],
77
+ gates: [{
78
+ id: "g1",
79
+ kind: "NAND",
80
+ in: ["a", "b"]
81
+ }, {
82
+ id: "g2",
83
+ kind: "NAND",
84
+ in: ["g1", "g1"]
85
+ }],
86
+ outputs: [{
87
+ id: "y",
88
+ in: "g2",
89
+ label: "A·B"
90
+ }]
91
+ }
92
+ },
93
+ "nand-or": {
94
+ title: "OR from three NANDs",
95
+ doc: {
96
+ inputs: [inp("a", "A", true), inp("b", "B")],
97
+ gates: [
98
+ {
99
+ id: "na",
100
+ kind: "NAND",
101
+ in: ["a", "a"]
102
+ },
103
+ {
104
+ id: "nb",
105
+ kind: "NAND",
106
+ in: ["b", "b"]
107
+ },
108
+ {
109
+ id: "g",
110
+ kind: "NAND",
111
+ in: ["na", "nb"]
112
+ }
113
+ ],
114
+ outputs: [{
115
+ id: "y",
116
+ in: "g",
117
+ label: "A+B"
118
+ }]
119
+ }
120
+ },
121
+ "xor-nand": {
122
+ title: "XOR from four NANDs",
123
+ doc: {
124
+ inputs: [inp("a", "A", true), inp("b", "B")],
125
+ gates: [
126
+ {
127
+ id: "n1",
128
+ kind: "NAND",
129
+ in: ["a", "b"]
130
+ },
131
+ {
132
+ id: "n2",
133
+ kind: "NAND",
134
+ in: ["a", "n1"]
135
+ },
136
+ {
137
+ id: "n3",
138
+ kind: "NAND",
139
+ in: ["b", "n1"]
140
+ },
141
+ {
142
+ id: "g",
143
+ kind: "NAND",
144
+ in: ["n2", "n3"]
145
+ }
146
+ ],
147
+ outputs: [{
148
+ id: "y",
149
+ in: "g",
150
+ label: "A⊕B"
151
+ }]
152
+ }
153
+ },
154
+ "half-adder": {
155
+ title: "Half adder (1 + 1 = 10)",
156
+ doc: {
157
+ inputs: [inp("a", "A", true), inp("b", "B", true)],
158
+ gates: [{
159
+ id: "sum",
160
+ kind: "XOR",
161
+ in: ["a", "b"]
162
+ }, {
163
+ id: "carry",
164
+ kind: "AND",
165
+ in: ["a", "b"]
166
+ }],
167
+ outputs: [{
168
+ id: "S",
169
+ in: "sum",
170
+ label: "Sum"
171
+ }, {
172
+ id: "C",
173
+ in: "carry",
174
+ label: "Carry",
175
+ color: "var(--stage-warn)"
176
+ }]
177
+ }
178
+ },
179
+ "full-adder": {
180
+ title: "Full adder (A + B + Cin)",
181
+ doc: {
182
+ inputs: [
183
+ inp("a", "A", true),
184
+ inp("b", "B", true),
185
+ inp("cin", "Cin")
186
+ ],
187
+ gates: [
188
+ {
189
+ id: "x1",
190
+ kind: "XOR",
191
+ in: ["a", "b"]
192
+ },
193
+ {
194
+ id: "sum",
195
+ kind: "XOR",
196
+ in: ["x1", "cin"]
197
+ },
198
+ {
199
+ id: "a1",
200
+ kind: "AND",
201
+ in: ["x1", "cin"]
202
+ },
203
+ {
204
+ id: "a2",
205
+ kind: "AND",
206
+ in: ["a", "b"]
207
+ },
208
+ {
209
+ id: "cout",
210
+ kind: "OR",
211
+ in: ["a1", "a2"]
212
+ }
213
+ ],
214
+ outputs: [{
215
+ id: "S",
216
+ in: "sum",
217
+ label: "Sum"
218
+ }, {
219
+ id: "C",
220
+ in: "cout",
221
+ label: "Cout",
222
+ color: "var(--stage-warn)"
223
+ }]
224
+ }
225
+ }
226
+ };
227
+ /** Deep-clone a preset doc so the lab can mutate input values without touching the library. */
228
+ function presetDoc(key) {
229
+ const p = LOGIC_PRESETS[key] ?? LOGIC_PRESETS.and;
230
+ return {
231
+ inputs: p.doc.inputs.map((i) => ({ ...i })),
232
+ gates: p.doc.gates.map((g) => ({
233
+ ...g,
234
+ in: [...g.in]
235
+ })),
236
+ outputs: p.doc.outputs.map((o) => ({ ...o }))
237
+ };
238
+ }
239
+
240
+ //#endregion
241
+ export { LOGIC_PRESETS, presetDoc };
@@ -0,0 +1,9 @@
1
+ import { GateDef } from "./contract.mjs";
2
+
3
+ //#region src/logic/registry.d.ts
4
+ declare function registerGate(def: GateDef): void;
5
+ declare function getGate(kind: string): GateDef | undefined;
6
+ /** Every registered gate (drives a builder palette). */
7
+ declare function listGates(): GateDef[];
8
+ //#endregion
9
+ export { getGate, listGates, registerGate };
@@ -0,0 +1,15 @@
1
+ //#region src/logic/registry.ts
2
+ const REGISTRY = /* @__PURE__ */ new Map();
3
+ function registerGate(def) {
4
+ REGISTRY.set(def.kind, def);
5
+ }
6
+ function getGate(kind) {
7
+ return REGISTRY.get(kind);
8
+ }
9
+ /** Every registered gate (drives a builder palette). */
10
+ function listGates() {
11
+ return [...REGISTRY.values()];
12
+ }
13
+
14
+ //#endregion
15
+ export { getGate, listGates, registerGate };
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { Tex as Tex$1 } from "../../core/tex.mjs";
4
4
  import { CheckButton, LabStyles, Slider, StatusPill, Stepper } from "../../kit/controls.mjs";
5
- import { ControlBar, Field, LabFrame, LiveRegion } from "../../kit/frame.mjs";
6
- import { useCheckpoint } from "../../kit/pedagogy.mjs";
5
+ import { ControlBar, ControlExpr, Field, LabFrame, LiveRegion } from "../../kit/frame.mjs";
6
+ import { ChallengeCard, useChallenge, useCheckpoint } from "../../kit/pedagogy.mjs";
7
7
  import { AREA_MODEL_ASSET } from "./asset.mjs";
8
8
  import { useMemo, useState } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -11,10 +11,10 @@ import { Scene, controlsFromScene, registerAsset, resolve, useControlSurface, us
11
11
 
12
12
  //#region src/math/area-model/preset.tsx
13
13
  /**
14
- * Area-model algebra tiles — a SceneDoc FACTORY for (x+a)(x+b), built on
14
+ * Area-model algebra tiles, a SceneDoc FACTORY for (x+a)(x+b), built on
15
15
  * @classytic/stage. Two modes share ONE asset:
16
16
  * - EXPAND: drag x and watch x² + (a+b)x + ab; strips grow with x, the
17
- * constant block does not — the multiplication made visible.
17
+ * constant block does not, the multiplication made visible.
18
18
  * - FACTOR: given x² + px + q, find a and b (steppers + Check). The unique
19
19
  * positive factor pair {a,b} makes the check unambiguous (swap accepted).
20
20
  */
@@ -118,8 +118,29 @@ function AreaModelLab({ a = 3, b = 2, mode = "expand", unit = 1, controlId, heig
118
118
  const [result, setResult] = useState(null);
119
119
  const p = a + b;
120
120
  const q = a * b;
121
+ const predictQ = useMemo(() => {
122
+ const sum = a + b;
123
+ const product = a * b;
124
+ const lure = sum + 1;
125
+ const values = Array.from(new Set([
126
+ sum,
127
+ product,
128
+ lure
129
+ ])).sort((m, n) => m - n);
130
+ return [{
131
+ id: "middle-coeff",
132
+ prompt: `(x + ${a})(x + ${b}) expands to x² + ?x + ?. What is the MIDDLE coefficient?`,
133
+ choices: values.map((v) => ({
134
+ value: String(v),
135
+ label: String(v)
136
+ })),
137
+ answer: String(sum),
138
+ explain: `The middle term is a+b=${sum} (the sum), and the constant is a·b=${product} (the product) — the area-model's two off-diagonal tiles vs the corner tile.`
139
+ }];
140
+ }, [a, b]);
141
+ const ch = useChallenge(predictQ);
121
142
  useCheckpoint({
122
- solved: result === "correct",
143
+ solved: result === "correct" && ch.allCorrect,
123
144
  activity: `factor-x2+${p}x+${q}`,
124
145
  response: `(x+${ga})(x+${gb})`
125
146
  });
@@ -147,42 +168,38 @@ function AreaModelLab({ a = 3, b = 2, mode = "expand", unit = 1, controlId, heig
147
168
  ariaLabel: `Area model to factor ${trinomialLabel(a, b)}`
148
169
  })] });
149
170
  const controlBar = /* @__PURE__ */ jsxs(ControlBar, { children: [
150
- /* @__PURE__ */ jsx("span", {
151
- style: { fontWeight: 600 },
152
- children: "(x +"
153
- }),
154
- /* @__PURE__ */ jsx(Stepper, {
155
- label: "a",
156
- value: ga,
157
- min: 0,
158
- max: 12,
159
- onChange: (v) => {
160
- setGa(v);
161
- setResult(null);
162
- }
163
- }),
164
- /* @__PURE__ */ jsx("span", {
165
- className: "sep",
166
- children: ")(x +"
167
- }),
168
- /* @__PURE__ */ jsx(Stepper, {
169
- label: "b",
170
- value: gb,
171
- min: 0,
172
- max: 12,
173
- onChange: (v) => {
174
- setGb(v);
175
- setResult(null);
176
- }
177
- }),
178
- /* @__PURE__ */ jsx("span", {
179
- className: "sep",
180
- children: ")"
181
- }),
182
- /* @__PURE__ */ jsx("span", {
183
- style: { opacity: .7 },
184
- children: /* @__PURE__ */ jsx(Tex$1, { tex: `\\to x^2 + ${ga + gb}x + ${ga * gb}` })
185
- }),
171
+ /* @__PURE__ */ jsxs(ControlExpr, { children: [
172
+ /* @__PURE__ */ jsx("span", { children: "(x +" }),
173
+ /* @__PURE__ */ jsx(Stepper, {
174
+ label: "a",
175
+ value: ga,
176
+ min: 0,
177
+ max: 12,
178
+ onChange: (v) => {
179
+ setGa(v);
180
+ setResult(null);
181
+ }
182
+ }),
183
+ /* @__PURE__ */ jsx("span", { children: ")(x +" }),
184
+ /* @__PURE__ */ jsx(Stepper, {
185
+ label: "b",
186
+ value: gb,
187
+ min: 0,
188
+ max: 12,
189
+ onChange: (v) => {
190
+ setGb(v);
191
+ setResult(null);
192
+ }
193
+ }),
194
+ /* @__PURE__ */ jsx("span", { children: ")" }),
195
+ /* @__PURE__ */ jsx("span", {
196
+ style: {
197
+ opacity: .7,
198
+ marginLeft: 4
199
+ },
200
+ children: /* @__PURE__ */ jsx(Tex$1, { tex: `\\to x^2 + ${ga + gb}x + ${ga * gb}` })
201
+ })
202
+ ] }),
186
203
  /* @__PURE__ */ jsx(CheckButton, {
187
204
  onClick: check,
188
205
  children: "Check"
@@ -194,17 +211,21 @@ function AreaModelLab({ a = 3, b = 2, mode = "expand", unit = 1, controlId, heig
194
211
  result === "wrong" && /* @__PURE__ */ jsxs(StatusPill, {
195
212
  ok: false,
196
213
  children: [
197
- "Not yet — match ",
214
+ "Not yet, match ",
198
215
  p,
199
216
  "x and ",
200
217
  q
201
218
  ]
202
219
  })
203
220
  ] });
204
- const footer = /* @__PURE__ */ jsx(LiveRegion, { children: result === "correct" ? `Correct. The factors are x plus ${a} and x plus ${b}.` : "" });
221
+ const footer = /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ChallengeCard, {
222
+ questions: predictQ,
223
+ state: ch,
224
+ title: "Predict first"
225
+ }), /* @__PURE__ */ jsx(LiveRegion, { children: result === "correct" ? `Correct. The factors are x plus ${a} and x plus ${b}.` : "" })] });
205
226
  return /* @__PURE__ */ jsx(LabFrame, {
206
227
  title: "Area-model factoring",
207
- prompt: `Factor ${trinomialLabel(a, b)} — find the two side lengths.`,
228
+ prompt: `Factor ${trinomialLabel(a, b)}: find the two side lengths.`,
208
229
  controls: controlBar,
209
230
  footer,
210
231
  children: figure
@@ -235,6 +256,11 @@ function AreaModelLab({ a = 3, b = 2, mode = "expand", unit = 1, controlId, heig
235
256
  style: { opacity: .75 },
236
257
  children: ["area = ", ((x + a) * (x + b)).toFixed(2)]
237
258
  })] }),
259
+ footer: /* @__PURE__ */ jsx(ChallengeCard, {
260
+ questions: predictQ,
261
+ state: ch,
262
+ title: "Predict first"
263
+ }),
238
264
  children: figure
239
265
  });
240
266
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { LabStyles, Slider, StatusPill } from "../../kit/controls.mjs";
4
4
  import { ControlBar, Field, LabFrame, LiveRegion } from "../../kit/frame.mjs";
5
- import { useCheckpoint } from "../../kit/pedagogy.mjs";
5
+ import { Feedback, useCheckpoint } from "../../kit/pedagogy.mjs";
6
6
  import { BALANCE_ALGEBRA_ASSET } from "./asset.mjs";
7
7
  import { useMemo } from "react";
8
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -10,7 +10,7 @@ import { Scene, controlsFromScene, registerAsset, resolve, useControlSurface, us
10
10
 
11
11
  //#region src/math/balance-algebra/preset.tsx
12
12
  /**
13
- * Balance-scale algebra flagship — a SceneDoc FACTORY (a general tool for any
13
+ * Balance-scale algebra flagship, a SceneDoc FACTORY (a general tool for any
14
14
  * a·x + b = c), built on @classytic/stage. All "logic" is typed numeric
15
15
  * derivations that actually evaluate: L = a·x+b (linop), diff = L−R, tilt =
16
16
  * clamp(3·diff), balanced = (diff == 0). Solving the equation == balancing.
@@ -136,7 +136,7 @@ function balanceAlgebraDoc(eq) {
136
136
  objectives: ["Solve a linear equation a·x + b = c by keeping a balance level"],
137
137
  misconceptions: [{
138
138
  trigger: "sets x so one side is heavier",
139
- note: "doing a thing to one side only — both sides must stay equal"
139
+ note: "doing a thing to one side only, both sides must stay equal"
140
140
  }],
141
141
  hints: ["What single value of x makes both pans weigh the same?", `Try x = ${eq.answer}.`],
142
142
  difficulty: 2,
@@ -182,6 +182,10 @@ function BalanceAlgebraLab({ coef = 2, addend = 1, rhs = 7, answer = 3, controlI
182
182
  });
183
183
  };
184
184
  const eqLabel = `${coef === 1 ? "" : coef}x${addend ? ` + ${addend}` : ""} = ${rhs}`;
185
+ const diff = L - R;
186
+ const solution = coef !== 0 ? (rhs - addend) / coef : NaN;
187
+ const solutionStr = Number.isInteger(solution) ? String(solution) : solution.toFixed(2);
188
+ const hint = balanced ? `Solved. x = (c − b) / a = (${rhs} − ${addend}) / ${coef} = ${solutionStr}` : diff > 0 ? `Left side is heavier (${L} > ${R}): make x smaller.` : `Right side is heavier (${L} < ${R}): make x bigger.`;
185
189
  const figure = /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(LabStyles, {}), /* @__PURE__ */ jsx(Scene, {
186
190
  doc,
187
191
  interactive: false,
@@ -216,10 +220,15 @@ function BalanceAlgebraLab({ coef = 2, addend = 1, rhs = 7, answer = 3, controlI
216
220
  }),
217
221
  /* @__PURE__ */ jsx(StatusPill, {
218
222
  ok: balanced,
219
- children: balanced ? "✓ Balanced — solved!" : "Not balanced"
223
+ children: balanced ? "✓ Balanced, solved!" : "Not balanced"
224
+ }),
225
+ /* @__PURE__ */ jsx(Feedback, {
226
+ ok: balanced,
227
+ okText: `Balanced. x = (c − b) / a = ${solutionStr}`,
228
+ tryText: hint
220
229
  })
221
230
  ] }),
222
- footer: /* @__PURE__ */ jsx(LiveRegion, { children: balanced ? `Balanced. x equals ${x}. Solved.` : `Left load ${L}, right load ${R}.` }),
231
+ footer: /* @__PURE__ */ jsx(LiveRegion, { children: balanced ? `Balanced. x equals ${x}. ${hint}` : `Left load ${L}, right load ${R}. ${hint}` }),
223
232
  children: figure
224
233
  });
225
234
  }
@@ -0,0 +1 @@
1
+ import { BrokenTreeLab, BrokenTreeProps } from "./preset.mjs";
@@ -0,0 +1,26 @@
1
+ import { ReactNode } from "react";
2
+
3
+ //#region src/math/broken-tree/preset.d.ts
4
+ interface BrokenTreeProps {
5
+ /** The tree's full (un-broken) height. */
6
+ originalHeight?: number;
7
+ /** Ground distance to the house, the goal is to land the top here (omit → free play). */
8
+ target?: number;
9
+ /** Initial break height. */
10
+ breakHeight?: number;
11
+ title?: string;
12
+ prompt?: string;
13
+ height?: number;
14
+ activity?: string;
15
+ }
16
+ declare function BrokenTreeLab({
17
+ originalHeight,
18
+ target,
19
+ breakHeight,
20
+ title,
21
+ prompt,
22
+ height,
23
+ activity
24
+ }?: BrokenTreeProps): ReactNode;
25
+ //#endregion
26
+ export { BrokenTreeLab, BrokenTreeProps };