@classytic/labs 0.6.0 → 0.7.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.
- package/README.md +37 -21
- package/dist/algorithms/index.d.mts +1 -3
- package/dist/algorithms/index.mjs +1 -3
- package/dist/algorithms/react/index.d.mts +1 -2
- package/dist/algorithms/react/index.mjs +1 -2
- package/dist/algorithms/sorting.mjs +1 -1
- package/dist/authoring/evidence.d.mts +29 -0
- package/dist/authoring/index.d.mts +2 -1
- package/dist/authoring/index.mjs +2 -1
- package/dist/blocks/authoring.d.mts +27 -13
- package/dist/blocks/authoring.mjs +72 -19
- package/dist/blocks/lab-config.d.mts +3 -1
- package/dist/blocks/lab-config.mjs +109 -66
- package/dist/build/CircuitScene.mjs +53 -9
- package/dist/build/contract.d.mts +1 -1
- package/dist/build/editor-ui.mjs +6 -5
- package/dist/build/parts/bench.mjs +2 -2
- package/dist/build/viewport.mjs +28 -17
- package/dist/chem/evidence-scenes.mjs +5 -3
- package/dist/chem/solution/field.mjs +27 -33
- package/dist/chem/stereochemistry/preset.mjs +1 -1
- package/dist/circuits/circuit/preset.mjs +3 -3
- package/dist/circuits/op-amp-feedback/preset.mjs +2 -2
- package/dist/circuits/semiconductor/shared.mjs +17 -98
- package/dist/commerce/accounting/books/entry.d.mts +2 -1
- package/dist/commerce/accounting/books/entry.mjs +4 -2
- package/dist/commerce/accounting/books/world.d.mts +61 -0
- package/dist/commerce/accounting/books/world.mjs +54 -3
- package/dist/commerce/accounting/books/worlds/kalam.mjs +2 -3
- package/dist/core/index.d.mts +2 -5
- package/dist/core/index.mjs +2 -5
- package/dist/deep-learning/foundation/parameter-dial.mjs +14 -16
- package/dist/diagrams/fraction/FractionDiagram.mjs +1 -1
- package/dist/diagrams/geometry/GeometryDiagram.mjs +208 -0
- package/dist/diagrams/geometry/core.mjs +112 -0
- package/dist/diagrams/geometry/schema.mjs +135 -0
- package/dist/diagrams/geometry/spec.d.mts +90 -0
- package/dist/diagrams/graph/GraphDiagram.mjs +58 -24
- package/dist/diagrams/index.d.mts +2 -1
- package/dist/diagrams/index.mjs +2 -0
- package/dist/diagrams/magnetism/core.mjs +4 -3
- package/dist/diagrams/schema.mjs +3 -1
- package/dist/diagrams/spatial/SpatialDiagram.mjs +1 -1
- package/dist/discrete/core/index.d.mts +2 -7
- package/dist/discrete/core/index.mjs +2 -7
- package/dist/discrete/index.d.mts +4 -8
- package/dist/discrete/index.mjs +4 -8
- package/dist/domains/accounting/accounting-scenes.mjs +0 -2
- package/dist/domains/accounting/apportion/model.mjs +7 -3
- package/dist/domains/accounting/apportion/runtime.mjs +7 -3
- package/dist/domains/accounting/apportion/scene.mjs +2 -1
- package/dist/domains/accounting/balance-off/balance-figure.mjs +14 -11
- package/dist/domains/accounting/balance-off/model.mjs +14 -17
- package/dist/domains/accounting/balance-off/scene.mjs +21 -18
- package/dist/domains/accounting/bank-reconciliation/model.mjs +1 -0
- package/dist/domains/accounting/bank-reconciliation/runtime.mjs +6 -6
- package/dist/domains/accounting/bank-reconciliation/scene.mjs +13 -10
- package/dist/domains/accounting/break-even/model.mjs +12 -2
- package/dist/domains/accounting/break-even/runtime.mjs +16 -5
- package/dist/domains/accounting/break-even/scene.mjs +13 -7
- package/dist/domains/accounting/business-day-mission/model.mjs +2 -1
- package/dist/domains/accounting/business-day-mission/runtime.mjs +5 -4
- package/dist/domains/accounting/business-day-mission/scene.mjs +8 -8
- package/dist/domains/accounting/business-lesson/model.mjs +11 -1
- package/dist/domains/accounting/business-lesson/runtime.mjs +52 -12
- package/dist/domains/accounting/business-lesson/scene.mjs +0 -2
- package/dist/domains/accounting/cash-book/activity.mjs +49 -0
- package/dist/domains/accounting/cash-book/manifest.mjs +114 -0
- package/dist/domains/accounting/cash-book/model.mjs +829 -0
- package/dist/domains/accounting/cash-book/runtime.mjs +24 -0
- package/dist/domains/accounting/cash-book/scene.mjs +388 -0
- package/dist/domains/accounting/cash-budget-runway/model.mjs +2 -1
- package/dist/domains/accounting/cash-budget-runway/runtime.mjs +6 -5
- package/dist/domains/accounting/cash-budget-runway/scene.mjs +4 -5
- package/dist/domains/accounting/claim-split/activity.mjs +3 -2
- package/dist/domains/accounting/claim-split/manifest.mjs +3 -2
- package/dist/domains/accounting/claim-split/model.mjs +6 -7
- package/dist/domains/accounting/claim-split/runtime.mjs +3 -2
- package/dist/domains/accounting/claim-split/scene.mjs +3 -2
- package/dist/domains/accounting/club-subscriptions/activity.mjs +4 -3
- package/dist/domains/accounting/club-subscriptions/model.mjs +2 -1
- package/dist/domains/accounting/club-subscriptions/runtime.mjs +9 -21
- package/dist/domains/accounting/club-subscriptions/scene.mjs +6 -7
- package/dist/domains/accounting/company-statement-builder/activity.mjs +2 -2
- package/dist/domains/accounting/company-statement-builder/model.mjs +2 -1
- package/dist/domains/accounting/company-statement-builder/runtime.mjs +5 -4
- package/dist/domains/accounting/company-statement-builder/scene.mjs +5 -5
- package/dist/domains/accounting/compound-interest/model.d.mts +6 -6
- package/dist/domains/accounting/compound-interest/model.mjs +11 -1
- package/dist/domains/accounting/compound-interest/runtime.mjs +20 -6
- package/dist/domains/accounting/compound-interest/scene.mjs +27 -12
- package/dist/domains/accounting/control-account-builder/activity.mjs +8 -8
- package/dist/domains/accounting/control-account-builder/model.mjs +3 -1
- package/dist/domains/accounting/control-account-builder/runtime.mjs +11 -11
- package/dist/domains/accounting/control-account-builder/scene.mjs +14 -12
- package/dist/domains/accounting/cost-ladder/activity.mjs +74 -0
- package/dist/domains/accounting/cost-ladder/manifest.mjs +258 -0
- package/dist/domains/accounting/cost-ladder/model.mjs +636 -0
- package/dist/domains/accounting/cost-ladder/runtime.mjs +24 -0
- package/dist/domains/accounting/cost-ladder/scene.mjs +319 -0
- package/dist/domains/accounting/costing-profit-bridge/model.mjs +2 -1
- package/dist/domains/accounting/costing-profit-bridge/runtime.mjs +4 -3
- package/dist/domains/accounting/costing-profit-bridge/scene.mjs +2 -2
- package/dist/domains/accounting/credit-promise-bridge/scene.mjs +21 -7
- package/dist/domains/accounting/debit-credit-sprint/core.mjs +4 -4
- package/dist/domains/accounting/debit-credit-sprint/model.d.mts +2 -0
- package/dist/domains/accounting/debit-credit-sprint/model.mjs +8 -1
- package/dist/domains/accounting/debit-credit-sprint/scene.mjs +2 -2
- package/dist/domains/accounting/depreciation/model.mjs +8 -1
- package/dist/domains/accounting/depreciation/runtime.mjs +40 -16
- package/dist/domains/accounting/depreciation/scene.mjs +21 -9
- package/dist/domains/accounting/document-desk/activity.mjs +67 -0
- package/dist/domains/accounting/document-desk/manifest.mjs +109 -0
- package/dist/domains/accounting/document-desk/model.mjs +1448 -0
- package/dist/domains/accounting/document-desk/runtime.mjs +24 -0
- package/dist/domains/accounting/document-desk/scene.mjs +691 -0
- package/dist/domains/accounting/dual-aspect-transfer/scene.mjs +42 -10
- package/dist/domains/accounting/entity-spotlight/model.mjs +29 -8
- package/dist/domains/accounting/entity-spotlight/scene.mjs +5 -3
- package/dist/domains/accounting/entry-desk/core.mjs +3 -5
- package/dist/domains/accounting/entry-desk/model.mjs +18 -5
- package/dist/domains/accounting/entry-desk/runtime.mjs +2 -2
- package/dist/domains/accounting/entry-desk/scene.mjs +4 -4
- package/dist/domains/accounting/eoq/model.mjs +11 -1
- package/dist/domains/accounting/eoq/runtime.mjs +32 -13
- package/dist/domains/accounting/eoq/scene.mjs +9 -6
- package/dist/domains/accounting/equation-balance/model.d.mts +6 -2
- package/dist/domains/accounting/equation-balance/model.mjs +19 -5
- package/dist/domains/accounting/equation-balance/runtime.mjs +42 -10
- package/dist/domains/accounting/equation-balance/scene.mjs +34 -7
- package/dist/domains/accounting/equation-map/activity.mjs +36 -0
- package/dist/domains/accounting/equation-map/manifest.mjs +89 -0
- package/dist/domains/accounting/equation-map/model.mjs +260 -0
- package/dist/domains/accounting/equation-map/runtime.mjs +23 -0
- package/dist/domains/accounting/equation-map/scene.mjs +146 -0
- package/dist/domains/accounting/factory-expansion-case/model.mjs +5 -1
- package/dist/domains/accounting/factory-expansion-case/scene.mjs +7 -8
- package/dist/domains/accounting/household-accounts/activity.mjs +86 -0
- package/dist/domains/accounting/household-accounts/manifest.mjs +305 -0
- package/dist/domains/accounting/household-accounts/model.mjs +1133 -0
- package/dist/domains/accounting/household-accounts/runtime.mjs +24 -0
- package/dist/domains/accounting/household-accounts/scene.mjs +659 -0
- package/dist/domains/accounting/incomplete-records/model.mjs +13 -3
- package/dist/domains/accounting/incomplete-records/runtime.mjs +5 -1
- package/dist/domains/accounting/incomplete-records/scene.mjs +10 -6
- package/dist/domains/accounting/integrated-budget-mission/runtime.mjs +18 -18
- package/dist/domains/accounting/integrated-budget-mission/scene.mjs +8 -9
- package/dist/domains/accounting/inventory-costing/model.mjs +5 -1
- package/dist/domains/accounting/inventory-costing/runtime.mjs +5 -1
- package/dist/domains/accounting/inventory-costing/scene.mjs +44 -15
- package/dist/domains/accounting/investment-appraisal/model.mjs +5 -1
- package/dist/domains/accounting/investment-appraisal/runtime.mjs +6 -6
- package/dist/domains/accounting/investment-appraisal/scene.mjs +2 -2
- package/dist/domains/accounting/journal-poster/model.d.mts +0 -1
- package/dist/domains/accounting/journal-poster/model.mjs +4 -6
- package/dist/domains/accounting/journal-poster/runtime.mjs +3 -2
- package/dist/domains/accounting/journal-poster/scene.mjs +6 -7
- package/dist/domains/accounting/ledger-detective/ledger-detective/core.mjs +2 -3
- package/dist/domains/accounting/ledger-detective/model.mjs +23 -11
- package/dist/domains/accounting/limited-company/model.mjs +2 -1
- package/dist/domains/accounting/limited-company/runtime.mjs +41 -10
- package/dist/domains/accounting/limited-company/scene.mjs +26 -8
- package/dist/domains/accounting/limiting-factor-mix/model.mjs +4 -4
- package/dist/domains/accounting/limiting-factor-mix/runtime.mjs +11 -11
- package/dist/domains/accounting/limiting-factor-mix/scene.mjs +2 -2
- package/dist/domains/accounting/loan-claim/activity.mjs +21 -5
- package/dist/domains/accounting/loan-claim/model.mjs +16 -5
- package/dist/domains/accounting/loan-claim/runtime.mjs +12 -4
- package/dist/domains/accounting/loan-claim/scene.mjs +28 -10
- package/dist/domains/accounting/management-scenes.mjs +12 -14
- package/dist/domains/accounting/manufacturing-flow/model.mjs +27 -2
- package/dist/domains/accounting/manufacturing-flow/runtime.mjs +21 -5
- package/dist/domains/accounting/manufacturing-flow/scene.mjs +48 -11
- package/dist/domains/accounting/operating-budget-chain/runtime.mjs +7 -6
- package/dist/domains/accounting/operating-budget-chain/scene.mjs +11 -11
- package/dist/domains/accounting/partnership-split/model.mjs +18 -6
- package/dist/domains/accounting/partnership-split/runtime.mjs +10 -3
- package/dist/domains/accounting/partnership-split/scene.mjs +28 -8
- package/dist/domains/accounting/period-adjustment-workbench/runtime.mjs +2 -1
- package/dist/domains/accounting/period-adjustment-workbench/scene.mjs +7 -8
- package/dist/domains/accounting/period-close-mission/activity.mjs +8 -8
- package/dist/domains/accounting/period-close-mission/model.mjs +7 -11
- package/dist/domains/accounting/period-close-mission/runtime.mjs +14 -14
- package/dist/domains/accounting/period-close-mission/scene.mjs +9 -10
- package/dist/domains/accounting/posting-path/model.mjs +5 -2
- package/dist/domains/accounting/posting-path/runtime.mjs +5 -1
- package/dist/domains/accounting/process-loss/model.mjs +10 -4
- package/dist/domains/accounting/process-loss/runtime.mjs +8 -4
- package/dist/domains/accounting/process-loss/scene.mjs +18 -11
- package/dist/domains/accounting/purpose-timeline/model.mjs +9 -3
- package/dist/domains/accounting/purpose-timeline/scene.mjs +5 -5
- package/dist/domains/accounting/ratio-lab/core.d.mts +0 -1
- package/dist/domains/accounting/ratio-lab/core.mjs +1 -2
- package/dist/domains/accounting/ratio-lab/model.d.mts +2 -2
- package/dist/domains/accounting/ratio-lab/model.mjs +6 -2
- package/dist/domains/accounting/ratio-lab/runtime.mjs +12 -3
- package/dist/domains/accounting/ratio-lab/scene.mjs +37 -8
- package/dist/domains/accounting/reorder-point/model.d.mts +2 -2
- package/dist/domains/accounting/settlement-trail/model.mjs +25 -4
- package/dist/domains/accounting/settlement-trail/scene.mjs +46 -13
- package/dist/domains/accounting/statement-builder/core.mjs +1 -2
- package/dist/domains/accounting/statement-builder/model.mjs +20 -2
- package/dist/domains/accounting/statement-builder/runtime.mjs +34 -7
- package/dist/domains/accounting/statement-builder/scene.mjs +10 -3
- package/dist/domains/accounting/statement-sorter/model.d.mts +3 -1
- package/dist/domains/accounting/statement-sorter/model.mjs +23 -6
- package/dist/domains/accounting/statement-sorter/runtime.mjs +15 -2
- package/dist/domains/accounting/statement-sorter/scene.mjs +43 -12
- package/dist/domains/accounting/statement-workshop/activity.mjs +36 -0
- package/dist/domains/accounting/statement-workshop/manifest.mjs +330 -0
- package/dist/domains/accounting/statement-workshop/model.mjs +824 -0
- package/dist/domains/accounting/statement-workshop/runtime.mjs +24 -0
- package/dist/domains/accounting/statement-workshop/scene.mjs +249 -0
- package/dist/domains/accounting/suspense-reconstruction/model.mjs +9 -3
- package/dist/domains/accounting/suspense-reconstruction/runtime.mjs +9 -3
- package/dist/domains/accounting/suspense-reconstruction/scene.mjs +44 -12
- package/dist/domains/accounting/trial-balance/activity.mjs +26 -0
- package/dist/domains/accounting/trial-balance/manifest.mjs +206 -0
- package/dist/domains/accounting/trial-balance/model.mjs +569 -0
- package/dist/domains/accounting/trial-balance/runtime.mjs +24 -0
- package/dist/domains/accounting/trial-balance/scene.mjs +293 -0
- package/dist/domains/accounting/value-crossing/model.mjs +20 -8
- package/dist/domains/accounting/value-crossing/scene.mjs +25 -10
- package/dist/domains/accounting/variance-detective/model.mjs +3 -2
- package/dist/domains/accounting/variance-detective/runtime.mjs +4 -3
- package/dist/domains/accounting/variance-detective/scene.mjs +6 -6
- package/dist/domains/biology/cell-energy/scene.mjs +7 -8
- package/dist/domains/biology/cell-system/scene.mjs +5 -14
- package/dist/domains/biology/central-dogma/scene.mjs +0 -1
- package/dist/domains/biology/enzyme-rate/scene.mjs +1 -2
- package/dist/domains/biology/genetic-cross/scene.mjs +0 -1
- package/dist/domains/biology/meiosis-explorer/scene.mjs +2 -4
- package/dist/domains/biology/membrane-transport/scene.d.mts +0 -1
- package/dist/domains/biology/membrane-transport/scene.mjs +1 -2
- package/dist/domains/biology/mitosis-explorer/scene.d.mts +0 -1
- package/dist/domains/biology/mitosis-explorer/scene.mjs +3 -5
- package/dist/domains/biology/photosynthesis-factors/scene.mjs +1 -2
- package/dist/domains/biology/sequence/scene.mjs +1 -2
- package/dist/domains/biology/sex-linked-cross/scene.mjs +0 -1
- package/dist/domains/block-sets/accounting.mjs +56 -42
- package/dist/domains/block-sets/chem.mjs +77 -67
- package/dist/domains/block-sets/circuits.mjs +7 -5
- package/dist/domains/block-sets/geometry.mjs +5 -3
- package/dist/domains/block-sets/ict.mjs +28 -22
- package/dist/domains/block-sets/math.mjs +91 -87
- package/dist/domains/catalog-map.mjs +630 -25
- package/dist/domains/chem/acid-base/indicator-bench/scene.mjs +3 -5
- package/dist/domains/chem/acid-base/ph-scale/activity.mjs +221 -0
- package/dist/domains/chem/acid-base/ph-scale/manifest.mjs +99 -0
- package/dist/domains/chem/acid-base/ph-scale/model.mjs +280 -0
- package/dist/domains/chem/acid-base/ph-scale/reference.mjs +117 -0
- package/dist/domains/chem/acid-base/ph-scale/runtime.mjs +68 -0
- package/dist/domains/chem/acid-base/ph-scale/scene.mjs +412 -0
- package/dist/domains/chem/acid-base/proton-transfer/scene.mjs +0 -1
- package/dist/domains/chem/acid-base/titration/scene.mjs +5 -6
- package/dist/domains/chem/acid-base/titration-run/live-scene.mjs +3 -5
- package/dist/domains/chem/acid-base/titration-run/scene.mjs +5 -7
- package/dist/domains/chem/analysis/apparatus-builder/scene.mjs +16 -17
- package/dist/domains/chem/analysis/apparatus-choice/scene.mjs +4 -6
- package/dist/domains/chem/analysis/change-detective/scene.mjs +2 -3
- package/dist/domains/chem/analysis/chem-qualitative-analysis/scene.mjs +6 -8
- package/dist/domains/chem/analysis/chromatography-plate/scene.mjs +1 -2
- package/dist/domains/chem/analysis/complex-colour/scene.mjs +4 -3
- package/dist/domains/chem/analysis/composition-evidence/scene.mjs +3 -2
- package/dist/domains/chem/analysis/conductivity-bench/dropper-bottle.mjs +3 -5
- package/dist/domains/chem/analysis/conductivity-bench/material-scene.mjs +26 -54
- package/dist/domains/chem/analysis/conductivity-bench/runtime.mjs +2 -2
- package/dist/domains/chem/analysis/conductivity-bench/scene.mjs +13 -13
- package/dist/domains/chem/analysis/flame-test/scene.mjs +4 -6
- package/dist/domains/chem/analysis/paper-chromatogram/scene.mjs +4 -5
- package/dist/domains/chem/analysis/practical-observation/scene.mjs +6 -8
- package/dist/domains/chem/analysis/precipitation-bench/activity.mjs +1 -1
- package/dist/domains/chem/analysis/precipitation-bench/runtime.mjs +2 -2
- package/dist/domains/chem/analysis/precipitation-bench/scene.mjs +6 -7
- package/dist/domains/chem/analysis/reaction-evidence/scene.mjs +1 -2
- package/dist/domains/chem/analysis/species-workshop/scene.mjs +1 -2
- package/dist/domains/chem/analysis/specimen-row/scene.mjs +4 -3
- package/dist/domains/chem/analysis/structure-detective/scene.mjs +2 -3
- package/dist/domains/chem/electrochemistry/battery/scene.mjs +9 -12
- package/dist/domains/chem/electrochemistry/corrosion-cell/scene.mjs +4 -7
- package/dist/domains/chem/electrochemistry/electrochem/scene.mjs +7 -7
- package/dist/domains/chem/electrochemistry/electrolysis-bench/scene.mjs +17 -18
- package/dist/domains/chem/electrochemistry/faraday-bench/runtime.mjs +1 -1
- package/dist/domains/chem/electrochemistry/faraday-bench/scene.mjs +18 -5
- package/dist/domains/chem/electrochemistry/fuel-cell-flow/scene.mjs +12 -11
- package/dist/domains/chem/electrochemistry/redox-balancer/scene.mjs +9 -7
- package/dist/domains/chem/electrochemistry/redox-transfer/activity.mjs +160 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/cases.mjs +172 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/manifest.mjs +98 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/model.mjs +807 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/number-scene.mjs +150 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/runtime.mjs +56 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/scene.mjs +17 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/sort-scene.mjs +214 -0
- package/dist/domains/chem/electrochemistry/redox-transfer/transfer-scene.mjs +396 -0
- package/dist/domains/chem/energetics/bond-energy-ledger/scene.mjs +8 -6
- package/dist/domains/chem/energetics/energy-cycle/hess-scene.mjs +3 -2
- package/dist/domains/chem/energetics/energy-cycle/scene.mjs +5 -5
- package/dist/domains/chem/energetics/hydrate-cycle/scene.mjs +3 -2
- package/dist/domains/chem/energetics/reaction-calorimeter/scene.mjs +3 -5
- package/dist/domains/chem/gases-and-states/air-composition/scene.mjs +6 -8
- package/dist/domains/chem/gases-and-states/diffusion/model.mjs +12 -10
- package/dist/domains/chem/gases-and-states/diffusion/scene.mjs +21 -10
- package/dist/domains/chem/gases-and-states/effusion/activity.mjs +66 -0
- package/dist/domains/chem/gases-and-states/effusion/manifest.mjs +76 -0
- package/dist/domains/chem/gases-and-states/effusion/model.mjs +281 -0
- package/dist/domains/chem/gases-and-states/effusion/runtime.mjs +44 -0
- package/dist/domains/chem/gases-and-states/effusion/scene.mjs +303 -0
- package/dist/domains/chem/gases-and-states/gas-box/scene.mjs +4 -6
- package/dist/domains/chem/gases-and-states/gas-diffusion/activity.mjs +86 -0
- package/dist/domains/chem/gases-and-states/gas-diffusion/manifest.mjs +91 -0
- package/dist/domains/chem/gases-and-states/gas-diffusion/model.mjs +433 -0
- package/dist/domains/chem/gases-and-states/gas-diffusion/runtime.mjs +39 -0
- package/dist/domains/chem/gases-and-states/gas-diffusion/scene.mjs +454 -0
- package/dist/domains/chem/gases-and-states/particle-theatre/scene.mjs +2 -4
- package/dist/domains/chem/gases-and-states/particle-theatre/world.mjs +111 -103
- package/dist/domains/chem/glide.mjs +5 -4
- package/dist/domains/chem/industrial/applied-chemistry/parts.mjs +2 -4
- package/dist/domains/chem/industrial/applied-chemistry/scene.mjs +8 -9
- package/dist/domains/chem/industrial/contact-process-control/scene.mjs +3 -3
- package/dist/domains/chem/industrial/industrial-process/equipment.mjs +1 -3
- package/dist/domains/chem/industrial/industrial-process/scene.mjs +7 -8
- package/dist/domains/chem/kinetics-equilibrium/catalytic-cycle/scene.mjs +1 -2
- package/dist/domains/chem/kinetics-equilibrium/kinetics/scene.mjs +3 -5
- package/dist/domains/chem/kinetics-equilibrium/kinetics/world.mjs +181 -167
- package/dist/domains/chem/kinetics-equilibrium/le-chatelier/model.mjs +5 -3
- package/dist/domains/chem/kinetics-equilibrium/le-chatelier/scene.mjs +9 -14
- package/dist/domains/chem/kinetics-equilibrium/le-chatelier/world.mjs +79 -128
- package/dist/domains/chem/kinetics-equilibrium/mechanism-walk/scene.mjs +0 -1
- package/dist/domains/chem/kinetics-equilibrium/reaction-lab/scene.mjs +4 -6
- package/dist/domains/chem/kinetics-equilibrium/reaction-lab/world.mjs +60 -50
- package/dist/domains/chem/kinetics-equilibrium/reaction-profile/scene.mjs +2 -3
- package/dist/domains/chem/metals/metal-reactivity-bench/scene.mjs +19 -24
- package/dist/domains/chem/organic/alkene-geometry/scene.mjs +11 -7
- package/dist/domains/chem/organic/arene-evidence/scene.mjs +29 -24
- package/dist/domains/chem/organic/ball-stick.mjs +1 -2
- package/dist/domains/chem/organic/functional-group-lens/scene.mjs +4 -3
- package/dist/domains/chem/organic/isomer-builder/scene.mjs +0 -1
- package/dist/domains/chem/organic/organic-formula-studio/pattern-scene.mjs +0 -1
- package/dist/domains/chem/organic/organic-formula-studio/scene.mjs +1 -2
- package/dist/domains/chem/organic/organic-reaction-map/reaction-bench.mjs +0 -1
- package/dist/domains/chem/organic/organic-reaction-map/scene.mjs +1 -2
- package/dist/domains/chem/organic/polymer-builder/scene.mjs +8 -7
- package/dist/domains/chem/organic/spectrum-reader/scene.mjs +2 -0
- package/dist/domains/chem/organic/stereochemistry/scene.mjs +4 -5
- package/dist/domains/chem/organic/synthesis-route/scene.mjs +26 -37
- package/dist/domains/chem/quantitative/constant-mass/scene.mjs +4 -6
- package/dist/domains/chem/quantitative/dilution/scene.mjs +3 -5
- package/dist/domains/chem/quantitative/equation-conservation-desk/scene.mjs +0 -1
- package/dist/domains/chem/quantitative/formula-forge/scene.mjs +0 -1
- package/dist/domains/chem/quantitative/formula-workbench/scene.mjs +0 -1
- package/dist/domains/chem/quantitative/gas-collection/scene.mjs +2 -4
- package/dist/domains/chem/quantitative/mole-factory/scene.mjs +2 -3
- package/dist/domains/chem/quantitative/percent-lens/scene.mjs +4 -3
- package/dist/domains/chem/quantitative/percentage-purity-lab/scene.mjs +2 -3
- package/dist/domains/chem/quantitative/percentage-yield-lab/scene.mjs +1 -2
- package/dist/domains/chem/quantitative/ratio-normalizer/preset.mjs +11 -11
- package/dist/domains/chem/quantitative/redox-titration/scene.mjs +3 -5
- package/dist/domains/chem/quantitative/relation-origin/scene.mjs +0 -1
- package/dist/domains/chem/quantitative/solution-box/scene.mjs +3 -5
- package/dist/domains/chem/quantitative/solution-mixer/scene.mjs +2 -4
- package/dist/domains/chem/quantitative/standard-solution/scene.mjs +4 -6
- package/dist/domains/chem/quantitative/stoichiometry/scene.mjs +4 -4
- package/dist/domains/chem/salts-and-solubility/reagent-ladder/scene.mjs +4 -3
- package/dist/domains/chem/salts-and-solubility/selective-solvent-bench/scene.mjs +4 -7
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/activity.mjs +234 -0
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/manifest.mjs +86 -0
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/model.mjs +462 -0
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/parts.mjs +199 -0
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/runtime.mjs +87 -0
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/samples.mjs +88 -0
- package/dist/domains/chem/salts-and-solubility/soap-hard-water/scene.mjs +1177 -0
- package/dist/domains/chem/salts-and-solubility/solubility-kitchen/scene.mjs +3 -5
- package/dist/domains/chem/salts-and-solubility/solubility-rules/scene.mjs +0 -1
- package/dist/domains/chem/salts-and-solubility/soluble-salt-workshop/scene.mjs +6 -6
- package/dist/domains/chem/structure/atomic-orbital/runtime.d.mts +8 -0
- package/dist/domains/chem/structure/atomic-orbital/runtime.mjs +2 -2
- package/dist/domains/chem/structure/atomic-orbital/scene.d.mts +4 -2
- package/dist/domains/chem/structure/atomic-orbital/scene.mjs +7 -22
- package/dist/domains/chem/structure/atomic-orbital/world.d.mts +5 -0
- package/dist/domains/chem/structure/atomic-orbital/world.mjs +50 -42
- package/dist/domains/chem/structure/bohr-atom/activity.mjs +232 -27
- package/dist/domains/chem/structure/bohr-atom/ladder.mjs +85 -0
- package/dist/domains/chem/structure/bohr-atom/landing.mjs +44 -0
- package/dist/domains/chem/structure/bohr-atom/layout.mjs +111 -0
- package/dist/domains/chem/structure/bohr-atom/manifest.mjs +51 -2
- package/dist/domains/chem/structure/bohr-atom/model.d.mts +182 -8
- package/dist/domains/chem/structure/bohr-atom/model.mjs +422 -58
- package/dist/domains/chem/structure/bohr-atom/runtime.d.mts +7 -1
- package/dist/domains/chem/structure/bohr-atom/runtime.mjs +8 -3
- package/dist/domains/chem/structure/bohr-atom/scene.mjs +118 -55
- package/dist/domains/chem/structure/bohr-atom/shell-view.mjs +109 -0
- package/dist/domains/chem/structure/bohr-atom/subshell-view.mjs +128 -0
- package/dist/domains/chem/structure/complex-shape/scene.mjs +3 -2
- package/dist/domains/chem/structure/covalent-bond-builder/activity.mjs +74 -28
- package/dist/domains/chem/structure/covalent-bond-builder/manifest.mjs +28 -2
- package/dist/domains/chem/structure/covalent-bond-builder/model.d.mts +39 -12
- package/dist/domains/chem/structure/covalent-bond-builder/model.mjs +188 -98
- package/dist/domains/chem/structure/covalent-bond-builder/scene.mjs +181 -37
- package/dist/domains/chem/structure/crystal-lattice/runtime.d.mts +8 -0
- package/dist/domains/chem/structure/crystal-lattice/runtime.mjs +2 -2
- package/dist/domains/chem/structure/crystal-lattice/scene.d.mts +4 -2
- package/dist/domains/chem/structure/crystal-lattice/scene.mjs +11 -27
- package/dist/domains/chem/structure/crystal-lattice/world.d.mts +5 -0
- package/dist/domains/chem/structure/crystal-lattice/world.mjs +86 -78
- package/dist/domains/chem/structure/electron-configuration/scene.mjs +3 -6
- package/dist/domains/chem/structure/ionic-bond-builder/scene.mjs +2 -5
- package/dist/domains/chem/structure/molecular-geometry/runtime.d.mts +8 -0
- package/dist/domains/chem/structure/molecular-geometry/runtime.mjs +2 -2
- package/dist/domains/chem/structure/molecular-geometry/scene.d.mts +4 -2
- package/dist/domains/chem/structure/molecular-geometry/scene.mjs +9 -32
- package/dist/domains/chem/structure/molecular-geometry/world.d.mts +5 -0
- package/dist/domains/chem/structure/molecular-geometry/world.mjs +55 -47
- package/dist/domains/chem/structure/orbital-diagram/runtime.mjs +1 -1
- package/dist/domains/chem/structure/orbital-diagram/scene.mjs +3 -6
- package/dist/domains/chem/structure/orbital-overlap/runtime.d.mts +8 -0
- package/dist/domains/chem/structure/orbital-overlap/runtime.mjs +2 -2
- package/dist/domains/chem/structure/orbital-overlap/scene.d.mts +4 -2
- package/dist/domains/chem/structure/orbital-overlap/scene.mjs +7 -23
- package/dist/domains/chem/structure/orbital-overlap/world.d.mts +5 -0
- package/dist/domains/chem/structure/orbital-overlap/world.mjs +58 -50
- package/dist/domains/chem/structure/periodic-trends/scene.mjs +2 -3
- package/dist/domains/chem/structure/trend-axis/scene.mjs +13 -14
- package/dist/domains/circuits/ac-dc/scene.mjs +4 -7
- package/dist/domains/circuits/ac-response/scene.mjs +86 -49
- package/dist/domains/circuits/bjt-amplifier/scene.mjs +3 -6
- package/dist/domains/circuits/bjt-inside/scene.mjs +32 -24
- package/dist/domains/circuits/brownout/scene.mjs +9 -11
- package/dist/domains/circuits/capacitor-leak/scene.mjs +17 -19
- package/dist/domains/circuits/cell-combination/scene.mjs +1 -2
- package/dist/domains/circuits/circuit/scene.mjs +1 -2
- package/dist/domains/circuits/circuit-builder/scene.mjs +2 -3
- package/dist/domains/circuits/circuit-lab/scene.mjs +1 -2
- package/dist/domains/circuits/circuit-sandbox/runtime.mjs +13 -5
- package/dist/domains/circuits/circuit-scene/scene.mjs +1 -2
- package/dist/domains/circuits/cmos-inverter/scene.mjs +14 -14
- package/dist/domains/circuits/cmos-nand/scene.mjs +9 -10
- package/dist/domains/circuits/cmos-nor/scene.mjs +9 -10
- package/dist/domains/circuits/conduction/apparatus.mjs +45 -59
- package/dist/domains/circuits/conduction/runtime.mjs +0 -1
- package/dist/domains/circuits/diode/scene.mjs +3 -6
- package/dist/domains/circuits/energy-cost/scene.mjs +1 -2
- package/dist/domains/circuits/hall-effect/runtime.mjs +0 -1
- package/dist/domains/circuits/hall-effect/scene.mjs +18 -17
- package/dist/domains/circuits/kirchhoff-laws/scene.mjs +1 -2
- package/dist/domains/circuits/meter-conversion/scene.mjs +1 -3
- package/dist/domains/circuits/mosfet-inside/model.d.mts +1 -1
- package/dist/domains/circuits/mosfet-inside/scene.mjs +22 -20
- package/dist/domains/circuits/network-reduction/scene.mjs +8 -7
- package/dist/domains/circuits/null-balance/scene.mjs +1 -2
- package/dist/domains/circuits/op-amp-comparator/scene.mjs +14 -16
- package/dist/domains/circuits/pn-junction/scene.mjs +34 -27
- package/dist/domains/circuits/potential-divider/scene.mjs +7 -10
- package/dist/domains/circuits/potential-hill/activity.mjs +132 -0
- package/dist/domains/circuits/potential-hill/manifest.mjs +107 -0
- package/dist/domains/circuits/potential-hill/model.mjs +207 -0
- package/dist/domains/circuits/potential-hill/runtime.mjs +24 -0
- package/dist/domains/circuits/potential-hill/scene.mjs +267 -0
- package/dist/domains/circuits/rc-charging/activity.mjs +5 -5
- package/dist/domains/circuits/rc-charging/manifest.mjs +5 -10
- package/dist/domains/circuits/rc-charging/model.mjs +31 -10
- package/dist/domains/circuits/rc-charging/runtime.mjs +4 -7
- package/dist/domains/circuits/rc-charging/scene.mjs +273 -210
- package/dist/domains/circuits/rnmos-not/scene.mjs +14 -14
- package/dist/domains/circuits/silicon-lattice/runtime.mjs +0 -1
- package/dist/domains/circuits/silicon-lattice/scene.mjs +0 -1
- package/dist/domains/circuits/transistor/scene.mjs +3 -6
- package/dist/domains/data/design-records/scene.mjs +1 -2
- package/dist/domains/data/dirty-data/scene.mjs +1 -2
- package/dist/domains/databases/b-plus-range/model.mjs +1 -1
- package/dist/domains/databases/b-plus-range/scene.mjs +2 -3
- package/dist/domains/databases/index-detective/model.mjs +1 -1
- package/dist/domains/databases/index-detective/scene.mjs +2 -3
- package/dist/domains/databases/query-plan/model.mjs +1 -1
- package/dist/domains/databases/query-plan/scene.mjs +2 -3
- package/dist/domains/databases/range-query/model.mjs +1 -1
- package/dist/domains/databases/range-query/scene.mjs +2 -3
- package/dist/domains/discrete/arrangements/scene.mjs +3 -6
- package/dist/domains/discrete/bayes/scene.mjs +6 -8
- package/dist/domains/discrete/binomial/runtime.mjs +2 -1
- package/dist/domains/discrete/binomial/scene.mjs +155 -148
- package/dist/domains/discrete/combination-studio/scene.mjs +2 -4
- package/dist/domains/discrete/counting-slots/scene.mjs +3 -6
- package/dist/domains/discrete/counting-tree/scene.mjs +6 -8
- package/dist/domains/discrete/expected-value/activity.mjs +2 -1
- package/dist/domains/discrete/expected-value/model.mjs +1 -1
- package/dist/domains/discrete/expected-value/scene.mjs +8 -9
- package/dist/domains/discrete/hypergeometric/activity.mjs +3 -2
- package/dist/domains/discrete/hypergeometric/runtime.mjs +4 -3
- package/dist/domains/discrete/hypergeometric/scene.mjs +3 -6
- package/dist/domains/discrete/induction-ladder/scene.mjs +2 -5
- package/dist/domains/discrete/invariant-detective/scene.mjs +3 -5
- package/dist/domains/discrete/karnaugh/activity.mjs +4 -4
- package/dist/domains/discrete/karnaugh/kmap.mjs +1 -1
- package/dist/domains/discrete/karnaugh/manifest.mjs +40 -19
- package/dist/domains/discrete/karnaugh/model.mjs +45 -12
- package/dist/domains/discrete/karnaugh/runtime.mjs +1 -0
- package/dist/domains/discrete/karnaugh/scene.mjs +19 -10
- package/dist/domains/discrete/lln/model.mjs +1 -1
- package/dist/domains/discrete/lln/scene.mjs +2 -5
- package/dist/domains/discrete/modular-clock/scene.mjs +3 -5
- package/dist/domains/discrete/monte-carlo/model.mjs +18 -13
- package/dist/domains/discrete/monte-carlo/scene.mjs +5 -5
- package/dist/domains/discrete/monty-hall/activity.mjs +24 -18
- package/dist/domains/discrete/monty-hall/manifest.mjs +2 -1
- package/dist/domains/discrete/monty-hall/model.mjs +92 -80
- package/dist/domains/discrete/monty-hall/runtime.mjs +1 -1
- package/dist/domains/discrete/monty-hall/scene.mjs +80 -66
- package/dist/domains/discrete/outcome-builder/activity.mjs +25 -0
- package/dist/domains/discrete/outcome-builder/manifest.mjs +15 -2
- package/dist/domains/discrete/outcome-builder/model.mjs +57 -20
- package/dist/domains/discrete/outcome-builder/runtime.mjs +19 -3
- package/dist/domains/discrete/outcome-builder/scene.mjs +1 -2
- package/dist/domains/discrete/pascal/scene.mjs +2 -4
- package/dist/domains/discrete/pigeonhole-adversary/scene.mjs +3 -6
- package/dist/domains/discrete/proof-builder/diagram.mjs +2 -1
- package/dist/domains/discrete/proof-builder/scene.mjs +1 -3
- package/dist/domains/discrete/recurrence-builder/scene.mjs +6 -8
- package/dist/domains/discrete/rule-card/complex-rules.mjs +4 -3
- package/dist/domains/discrete/rule-card/diagrams.mjs +2 -1
- package/dist/domains/discrete/rule-card/manifest.mjs +1 -2
- package/dist/domains/discrete/rule-card/rule-figures.mjs +5 -5
- package/dist/domains/discrete/rule-card/rules.d.mts +7 -6
- package/dist/domains/discrete/rule-card/rules.mjs +30 -18
- package/dist/domains/discrete/rule-card/trig-rules.mjs +6 -5
- package/dist/domains/discrete/sample-space/scene.mjs +0 -1
- package/dist/domains/discrete/selection/scene.mjs +9 -9
- package/dist/domains/discrete/statement-logic/scene.mjs +1 -5
- package/dist/domains/discrete/truth-table/activity.mjs +28 -4
- package/dist/domains/discrete/truth-table/manifest.mjs +11 -1
- package/dist/domains/discrete/truth-table/model.mjs +29 -18
- package/dist/domains/discrete/truth-table/scene.mjs +4 -15
- package/dist/domains/discrete/venn/model.mjs +10 -5
- package/dist/domains/discrete/venn/runtime.mjs +66 -62
- package/dist/domains/discrete/venn/scene.mjs +20 -16
- package/dist/domains/discrete/venn/sets.d.mts +0 -1
- package/dist/domains/discrete/venn/sets.mjs +1 -6
- package/dist/domains/distributed-systems/shard-key/shard-key-board.mjs +0 -1
- package/dist/domains/domain-map.mjs +38 -0
- package/dist/domains/economics/demand-shift-vs-move/scene.mjs +2 -3
- package/dist/domains/economics/elasticity-revenue/scene.mjs +2 -3
- package/dist/domains/economics/market-equilibrium/scene.mjs +2 -3
- package/dist/domains/exam/command-lens/manifest.mjs +4 -3
- package/dist/domains/exam/command-lens/scene.mjs +1 -2
- package/dist/domains/exam/exam-question/scene.mjs +6 -1
- package/dist/domains/exam/practice-set/model.mjs +7 -1
- package/dist/domains/exam/practice-set/runtime.mjs +1 -1
- package/dist/domains/geography/cycle/scene.mjs +5 -2
- package/dist/domains/geometry/geometry-board/builder.mjs +4 -1
- package/dist/domains/geometry/geometry-board/manifest.mjs +1 -69
- package/dist/domains/geometry/geometry-board/runtime.mjs +2 -2
- package/dist/domains/geometry/geometry-figure/manifest.mjs +114 -0
- package/dist/domains/geometry/geometry-figure/runtime.mjs +19 -0
- package/dist/domains/geometry/intersecting-circles/scene.mjs +1 -2
- package/dist/domains/ict/array-vs-list/scene.mjs +1 -1
- package/dist/domains/ict/binary-counter/scene.mjs +1 -2
- package/dist/domains/ict/binary-display/scene.mjs +0 -2
- package/dist/domains/ict/binary-search/scene.mjs +1 -1
- package/dist/domains/ict/bound-prover/scene.mjs +4 -4
- package/dist/domains/ict/code-trace/activity.mjs +23 -0
- package/dist/domains/ict/code-trace/manifest.mjs +81 -0
- package/dist/domains/ict/code-trace/model.mjs +199 -0
- package/dist/domains/ict/code-trace/runtime.mjs +30 -0
- package/dist/domains/ict/code-trace/scene.mjs +321 -0
- package/dist/domains/ict/coin-change/scene.mjs +1 -1
- package/dist/domains/ict/complexity-growth/scene.mjs +1 -1
- package/dist/domains/ict/cost-derivation/scene.mjs +2 -3
- package/dist/domains/ict/graph-algorithm/scene.mjs +1 -1
- package/dist/domains/ict/grid-path-dp/scene.mjs +1 -1
- package/dist/domains/ict/hash-table/scene.mjs +1 -1
- package/dist/domains/ict/heap-quest/HeapDualView.mjs +2 -0
- package/dist/domains/ict/jk-flip-flop/activity.mjs +1 -1
- package/dist/domains/ict/jk-flip-flop/model.mjs +1 -1
- package/dist/domains/ict/jk-flip-flop/runtime.mjs +14 -7
- package/dist/domains/ict/jk-flip-flop/scene.mjs +3 -10
- package/dist/domains/ict/jk-flip-flop/task-view.mjs +58 -0
- package/dist/domains/ict/latch-vs-flip-flop/TimingScene.d.mts +0 -1
- package/dist/domains/ict/latch-vs-flip-flop/scene.mjs +1 -2
- package/dist/domains/ict/logic-builder/LogicEditScene.mjs +0 -5
- package/dist/domains/ict/logic-builder/activity.mjs +2 -2
- package/dist/domains/ict/logic-builder/manifest.mjs +46 -1
- package/dist/domains/ict/logic-builder/model.mjs +126 -36
- package/dist/domains/ict/logic-builder/runtime.mjs +1 -1
- package/dist/domains/ict/logic-builder/scene.mjs +87 -43
- package/dist/domains/ict/logic-gate/scene.mjs +0 -1
- package/dist/domains/ict/mini-sheet/activity.mjs +23 -0
- package/dist/domains/ict/mini-sheet/manifest.mjs +93 -0
- package/dist/domains/ict/mini-sheet/model.mjs +175 -0
- package/dist/domains/ict/mini-sheet/runtime.mjs +25 -0
- package/dist/domains/ict/mini-sheet/scene.mjs +216 -0
- package/dist/domains/ict/recursion-tree/scene.mjs +2 -7
- package/dist/domains/ict/sequence-detector/activity.mjs +6 -6
- package/dist/domains/ict/sequence-detector/manifest.mjs +11 -3
- package/dist/domains/ict/sequence-detector/model.mjs +3 -2
- package/dist/domains/ict/sequence-detector/scene.mjs +2 -3
- package/dist/domains/ict/shift-register/ShiftScene.mjs +0 -1
- package/dist/domains/ict/sorting-quest/Bars.mjs +11 -7
- package/dist/domains/ict/sorting-quest/scene.mjs +1 -1
- package/dist/domains/ict/sr-latch/scene.mjs +4 -6
- package/dist/domains/ict/state-machine-builder/activity.mjs +46 -0
- package/dist/domains/ict/state-machine-builder/manifest.mjs +56 -0
- package/dist/domains/ict/state-machine-builder/model.mjs +422 -0
- package/dist/domains/ict/state-machine-builder/runtime.mjs +24 -0
- package/dist/domains/ict/state-machine-builder/scene.mjs +211 -0
- package/dist/domains/ict/tree-quest/scene.mjs +1 -1
- package/dist/domains/ict/twos-complement/scene.mjs +2 -3
- package/dist/domains/ict/wire-a-chip/ChipScene.d.mts +0 -1
- package/dist/domains/ict/wire-a-chip/ChipScene.mjs +426 -314
- package/dist/domains/language/_shared/construction.mjs +1 -1
- package/dist/domains/language/article-lens/model.d.mts +5 -5
- package/dist/domains/language/preposition/model.d.mts +5 -5
- package/dist/domains/manifests.mjs +730 -692
- package/dist/domains/math/_shared/parameter-name.mjs +24 -0
- package/dist/domains/math/algebra/area-model/activity.mjs +43 -4
- package/dist/domains/math/algebra/area-model/manifest.mjs +26 -2
- package/dist/domains/math/algebra/area-model/model.mjs +117 -54
- package/dist/domains/math/algebra/area-model/runtime.mjs +3 -3
- package/dist/domains/math/algebra/area-model/scene.mjs +28 -1
- package/dist/domains/math/algebra/balance-algebra/scene.mjs +0 -1
- package/dist/domains/math/algebra/discriminant-radar/manifest.mjs +12 -0
- package/dist/domains/math/algebra/discriminant-radar/scene.mjs +5 -6
- package/dist/domains/math/algebra/distribute-strip/scene.mjs +0 -1
- package/dist/domains/math/algebra/fraction-cancellation/scene.mjs +3 -5
- package/dist/domains/math/algebra/inequality-line/scene.mjs +5 -4
- package/dist/domains/math/algebra/inequality-solver/scene.mjs +2 -1
- package/dist/domains/math/algebra/linear-system/scene.mjs +4 -3
- package/dist/domains/math/algebra/log-law-workbench/activity.mjs +185 -188
- package/dist/domains/math/algebra/log-law-workbench/manifest.mjs +31 -9
- package/dist/domains/math/algebra/log-law-workbench/model.mjs +234 -37
- package/dist/domains/math/algebra/log-law-workbench/runtime.mjs +2 -10
- package/dist/domains/math/algebra/log-law-workbench/scene.mjs +338 -21
- package/dist/domains/math/algebra/mystery-bucket/scene.mjs +101 -28
- package/dist/domains/math/algebra/partial-fractions/scene.mjs +1 -2
- package/dist/domains/math/algebra/polynomial-solver/activity.mjs +6 -2
- package/dist/domains/math/algebra/polynomial-solver/cases-division.mjs +47 -1
- package/dist/domains/math/algebra/polynomial-solver/cases-factor.mjs +2 -0
- package/dist/domains/math/algebra/polynomial-solver/cases-two-letter.mjs +129 -0
- package/dist/domains/math/algebra/polynomial-solver/engine.mjs +1 -0
- package/dist/domains/math/algebra/polynomial-solver/games.mjs +6 -5
- package/dist/domains/math/algebra/polynomial-solver/manifest.mjs +33 -1
- package/dist/domains/math/algebra/polynomial-solver/model.mjs +20 -11
- package/dist/domains/math/algebra/polynomial-solver/moves.mjs +1 -1
- package/dist/domains/math/algebra/polynomial-solver/plots.mjs +2 -2
- package/dist/domains/math/algebra/polynomial-solver/runtime.mjs +1 -1
- package/dist/domains/math/algebra/polynomial-solver/scene-calculator.mjs +2 -1
- package/dist/domains/math/algebra/polynomial-solver/scene-long-division.mjs +121 -0
- package/dist/domains/math/algebra/polynomial-solver/scene-parts.mjs +3 -3
- package/dist/domains/math/algebra/polynomial-solver/scene-split.mjs +49 -3
- package/dist/domains/math/algebra/polynomial-solver/scene-tableau.mjs +17 -3
- package/dist/domains/math/algebra/polynomial-solver/trace-renderers.mjs +7 -2
- package/dist/domains/math/algebra/root-fingerprint/scene.mjs +3 -4
- package/dist/domains/math/algebra/root-mover/scene.mjs +3 -3
- package/dist/domains/math/algebra/slide-rule/scene.mjs +0 -1
- package/dist/domains/math/algebra/substitute-value/scene.mjs +2 -1
- package/dist/domains/math/algebra/system-solve/scene.mjs +0 -1
- package/dist/domains/math/calculus/derivative-explorer/scene.mjs +4 -3
- package/dist/domains/math/calculus/differential-equation/runtime.mjs +2 -2
- package/dist/domains/math/calculus/differential-equation/scene.mjs +5 -4
- package/dist/domains/math/calculus/fundamental-theorem/scene.mjs +5 -4
- package/dist/domains/math/calculus/gradient-descent/runtime.mjs +22 -17
- package/dist/domains/math/calculus/implicit-parametric-derivative/activity.mjs +9 -4
- package/dist/domains/math/calculus/implicit-parametric-derivative/model.mjs +8 -4
- package/dist/domains/math/calculus/implicit-parametric-derivative/runtime.mjs +7 -7
- package/dist/domains/math/calculus/implicit-parametric-derivative/scene.mjs +8 -7
- package/dist/domains/math/calculus/integral-explorer/scene.mjs +3 -4
- package/dist/domains/math/calculus/integration-workbench/activity.mjs +12 -11
- package/dist/domains/math/calculus/integration-workbench/manifest.mjs +15 -0
- package/dist/domains/math/calculus/integration-workbench/model.mjs +49 -14
- package/dist/domains/math/calculus/integration-workbench/runtime.mjs +3 -3
- package/dist/domains/math/calculus/integration-workbench/scene.mjs +20 -18
- package/dist/domains/math/calculus/limit-explorer/scene.mjs +5 -4
- package/dist/domains/math/calculus/newton-method/scene.mjs +4 -4
- package/dist/domains/math/calculus/phase-portrait/scene.mjs +5 -5
- package/dist/domains/math/calculus/solids-of-revolution/flat-scene.mjs +7 -7
- package/dist/domains/math/calculus/solids-of-revolution/runtime.d.mts +8 -0
- package/dist/domains/math/calculus/solids-of-revolution/runtime.mjs +2 -2
- package/dist/domains/math/calculus/solids-of-revolution/scene.d.mts +5 -8
- package/dist/domains/math/calculus/solids-of-revolution/scene.mjs +15 -30
- package/dist/domains/math/calculus/stationary-point-classifier/activity.mjs +2 -2
- package/dist/domains/math/calculus/stationary-point-classifier/runtime.mjs +2 -2
- package/dist/domains/math/calculus/stationary-point-classifier/scene.mjs +4 -3
- package/dist/domains/math/calculus/tangent-normal/scene.mjs +2 -4
- package/dist/domains/math/calculus/taylor-series/runtime.mjs +2 -2
- package/dist/domains/math/calculus/taylor-series/scene.mjs +2 -4
- package/dist/domains/math/coordinate-geometry/angle-between-lines/scene.mjs +0 -1
- package/dist/domains/math/coordinate-geometry/chord-bisection/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/chord-given-midpoint/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/chord-of-contact/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/circle-diameter-endpoints/activity.mjs +3 -4
- package/dist/domains/math/coordinate-geometry/circle-diameter-endpoints/manifest.mjs +2 -2
- package/dist/domains/math/coordinate-geometry/circle-diameter-endpoints/runtime.mjs +10 -17
- package/dist/domains/math/coordinate-geometry/circle-diameter-endpoints/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/circle-geometry/scene.mjs +3 -2
- package/dist/domains/math/coordinate-geometry/circle-intersection-angle/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/circle-line-tangency/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/circle-through-points/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/common-tangents-count/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/conic/scene.mjs +0 -1
- package/dist/domains/math/coordinate-geometry/coord-point/scene.mjs +5 -4
- package/dist/domains/math/coordinate-geometry/line-concurrency/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/line-family/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/point-line-distance/scene.mjs +83 -33
- package/dist/domains/math/coordinate-geometry/point-reflection/activity.mjs +3 -3
- package/dist/domains/math/coordinate-geometry/point-reflection/runtime.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/point-reflection/scene.mjs +160 -46
- package/dist/domains/math/coordinate-geometry/polar-cartesian/model.mjs +12 -8
- package/dist/domains/math/coordinate-geometry/polar-cartesian/runtime.mjs +3 -3
- package/dist/domains/math/coordinate-geometry/polar-cartesian/scene.mjs +12 -12
- package/dist/domains/math/coordinate-geometry/radical-axis/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/section-formula/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/straight-line/scene.mjs +10 -7
- package/dist/domains/math/coordinate-geometry/tangent-length-power-of-point/scene.mjs +1 -1
- package/dist/domains/math/coordinate-geometry/triangle-area/scene.mjs +21 -7
- package/dist/domains/math/functions/composite-functions/composite/scenes.mjs +2 -2
- package/dist/domains/math/functions/composite-functions/scene.mjs +5 -4
- package/dist/domains/math/functions/domain-range/authoring.mjs +66 -9
- package/dist/domains/math/functions/domain-range/manifest.mjs +25 -0
- package/dist/domains/math/functions/domain-range/model.mjs +49 -12
- package/dist/domains/math/functions/domain-range/runtime.mjs +2 -2
- package/dist/domains/math/functions/domain-range/scene.mjs +50 -4
- package/dist/domains/math/functions/family-tree/scenes.mjs +4 -4
- package/dist/domains/math/functions/function-machine/conveyor-figure.mjs +13 -5
- package/dist/domains/math/functions/graph/authoring.mjs +16 -0
- package/dist/domains/math/functions/graph/manifest.mjs +32 -0
- package/dist/domains/math/functions/graph/model.mjs +98 -12
- package/dist/domains/math/functions/graph/runtime.mjs +1 -1
- package/dist/domains/math/functions/graph/scene.mjs +104 -35
- package/dist/domains/math/functions/graph-transform/scene.mjs +4 -4
- package/dist/domains/math/functions/injective-classifier/scene.mjs +1 -1
- package/dist/domains/math/functions/inverse-functions/scene.mjs +1 -1
- package/dist/domains/math/functions/linearisation/scene.mjs +1 -1
- package/dist/domains/math/functions/modulus-function/scene.mjs +1 -1
- package/dist/domains/math/functions/modulus-inequality/activity.mjs +33 -16
- package/dist/domains/math/functions/modulus-inequality/endpoint-label-layout.mjs +38 -0
- package/dist/domains/math/functions/modulus-inequality/manifest.mjs +45 -1
- package/dist/domains/math/functions/modulus-inequality/model.mjs +24 -18
- package/dist/domains/math/functions/modulus-inequality/runtime.mjs +3 -2
- package/dist/domains/math/functions/modulus-inequality/scene.mjs +194 -139
- package/dist/domains/math/functions/vertex-parabola/scene.mjs +1 -1
- package/dist/domains/math/geometry/angle-chase/model.mjs +1 -1
- package/dist/domains/math/geometry/angle-chase/runtime.mjs +2 -3
- package/dist/domains/math/geometry/angle-chase/scene.mjs +0 -1
- package/dist/domains/math/geometry/area-rearrange/activity.mjs +2 -2
- package/dist/domains/math/geometry/area-rearrange/runtime.mjs +1 -1
- package/dist/domains/math/geometry/area-rearrange/scene.mjs +2 -2
- package/dist/domains/math/geometry/broken-tree/activity.mjs +2 -2
- package/dist/domains/math/geometry/broken-tree/model.mjs +1 -1
- package/dist/domains/math/geometry/broken-tree/scene.mjs +14 -12
- package/dist/domains/math/geometry/clock-hand-angle/scene.mjs +0 -1
- package/dist/domains/math/geometry/cone-frustum/scene.mjs +22 -10
- package/dist/domains/math/geometry/geometry-foundations/scene.mjs +44 -16
- package/dist/domains/math/geometry/geometry-transform/scene.mjs +1 -1
- package/dist/domains/math/geometry/measurement/activity.mjs +22 -1
- package/dist/domains/math/geometry/measurement/circle-grid-scene.mjs +145 -0
- package/dist/domains/math/geometry/measurement/manifest.mjs +9 -1
- package/dist/domains/math/geometry/measurement/model.mjs +135 -8
- package/dist/domains/math/geometry/measurement/runtime.mjs +19 -8
- package/dist/domains/math/geometry/measurement/scene.mjs +258 -228
- package/dist/domains/math/geometry/pythagoras-dissection/runtime.mjs +10 -7
- package/dist/domains/math/geometry/pythagoras-dissection/scene.mjs +237 -213
- package/dist/domains/math/geometry/solid-net/model.mjs +1 -1
- package/dist/domains/math/geometry/solid-net/runtime.mjs +2 -2
- package/dist/domains/math/geometry/solid-net/scene.mjs +18 -14
- package/dist/domains/math/geometry/solid-slice/scene.mjs +76 -34
- package/dist/domains/math/geometry/tank-design/activity.mjs +0 -1
- package/dist/domains/math/geometry/tank-design/scene.mjs +5 -6
- package/dist/domains/math/number/alligation-mix/scene.mjs +0 -1
- package/dist/domains/math/number/bounds-window/activity.mjs +2 -2
- package/dist/domains/math/number/bounds-window/manifest.mjs +2 -2
- package/dist/domains/math/number/bounds-window/runtime.mjs +1 -1
- package/dist/domains/math/number/bounds-window/scene.mjs +53 -44
- package/dist/domains/math/number/division-workbench/model.mjs +1 -1
- package/dist/domains/math/number/division-workbench/runtime.mjs +6 -1
- package/dist/domains/math/number/division-workbench/visuals.mjs +209 -195
- package/dist/domains/math/number/fraction-bar/activity.mjs +8 -2
- package/dist/domains/math/number/fraction-bar/manifest.mjs +29 -2
- package/dist/domains/math/number/fraction-bar/model.mjs +147 -26
- package/dist/domains/math/number/fraction-bar/runtime.mjs +5 -3
- package/dist/domains/math/number/fraction-bar/scene.mjs +167 -4
- package/dist/domains/math/number/fraction-division/activity.mjs +15 -0
- package/dist/domains/math/number/fraction-division/manifest.mjs +73 -0
- package/dist/domains/math/number/fraction-division/model.mjs +86 -0
- package/dist/domains/math/number/fraction-division/runtime.mjs +24 -0
- package/dist/domains/math/number/fraction-division/scene.mjs +162 -0
- package/dist/domains/math/number/fraction-product/activity.mjs +15 -0
- package/dist/domains/math/number/fraction-product/manifest.mjs +79 -0
- package/dist/domains/math/number/fraction-product/model.mjs +85 -0
- package/dist/domains/math/number/fraction-product/runtime.mjs +23 -0
- package/dist/domains/math/number/fraction-product/scene.mjs +99 -0
- package/dist/domains/math/number/number-line/scene.mjs +4 -3
- package/dist/domains/math/number/number-structure/scene.mjs +282 -172
- package/dist/domains/math/number/percent-bar/scene.mjs +59 -44
- package/dist/domains/math/number/price-chain/scene.mjs +4 -3
- package/dist/domains/math/number/rate-machine/runtime.mjs +1 -1
- package/dist/domains/math/number/rate-machine/scene.mjs +10 -11
- package/dist/domains/math/number/ratio-share/scene.mjs +4 -3
- package/dist/domains/math/number/relative-speed-track/scene.mjs +2 -1
- package/dist/domains/math/number/square-builder/scene.mjs +2 -4
- package/dist/domains/math/reasoning/derivation/authoring.mjs +198 -35
- package/dist/domains/math/reasoning/derivation/derivation.d.mts +13 -11
- package/dist/domains/math/reasoning/derivation/derivation.mjs +382 -81
- package/dist/domains/math/reasoning/derivation/manifest.mjs +22 -10
- package/dist/domains/math/reasoning/derivation/runtime.mjs +2 -2
- package/dist/domains/math/reasoning/derivation/step-tex.mjs +78 -0
- package/dist/domains/math/reasoning/derivation/steps.d.mts +88 -0
- package/dist/domains/math/reasoning/derivation/steps.mjs +162 -0
- package/dist/domains/math/reasoning/interactive-problem/runtime.mjs +12 -1
- package/dist/domains/math/reasoning/story-scene/preload.mjs +18 -0
- package/dist/domains/math/schemas.mjs +29 -12
- package/dist/domains/math/sequences/growing-pattern/scene.mjs +24 -19
- package/dist/domains/math/sequences/iteration/model.mjs +5 -4
- package/dist/domains/math/sequences/iteration/scene.mjs +4 -3
- package/dist/domains/math/shared.mjs +1 -7
- package/dist/domains/math/trigonometry/_shared/cut-scene.mjs +1 -1
- package/dist/domains/math/trigonometry/_shared/wheel-scene.mjs +60 -22
- package/dist/domains/math/trigonometry/associated-angle-wheel/scene.mjs +1 -1
- package/dist/domains/math/trigonometry/bearings/bearings-scene.mjs +198 -13
- package/dist/domains/math/trigonometry/bearings/scene.mjs +3 -2
- package/dist/domains/math/trigonometry/circular-measure/scene.mjs +7 -12
- package/dist/domains/math/trigonometry/compound-angle-proof/scene.mjs +9 -8
- package/dist/domains/math/trigonometry/harmonic-form/scene.mjs +2 -3
- package/dist/domains/math/trigonometry/multiple-angle-wheel/scene.mjs +1 -1
- package/dist/domains/math/trigonometry/oblique-triangle/oblique-scene.mjs +70 -89
- package/dist/domains/math/trigonometry/oblique-triangle/scene.mjs +1 -2
- package/dist/domains/math/trigonometry/radian-wrap/runtime.mjs +1 -1
- package/dist/domains/math/trigonometry/radian-wrap/scene.mjs +8 -12
- package/dist/domains/math/trigonometry/sum-to-product-waves/scene.mjs +2 -3
- package/dist/domains/math/trigonometry/tangent-rule-triangle/scene.mjs +2 -3
- package/dist/domains/math/trigonometry/triangle-trig/runtime.mjs +1 -20
- package/dist/domains/math/trigonometry/triangle-trig/scene.mjs +170 -13
- package/dist/domains/math/trigonometry/trig-equation-solver/equation-scene.mjs +0 -1
- package/dist/domains/math/trigonometry/trig-equation-solver/scene.mjs +1 -2
- package/dist/domains/math/trigonometry/trig-explorer/model.mjs +1 -1
- package/dist/domains/math/trigonometry/trig-explorer/scene.mjs +7 -13
- package/dist/domains/math/trigonometry/trig-general-solution/scene.mjs +3 -3
- package/dist/domains/math/trigonometry/trig-signs/scene.mjs +7 -4
- package/dist/domains/math/vectors-matrices/complex-plane/runtime.mjs +2 -2
- package/dist/domains/math/vectors-matrices/complex-plane/scene.mjs +17 -13
- package/dist/domains/math/vectors-matrices/linear-map/runtime.mjs +1 -1
- package/dist/domains/math/vectors-matrices/linear-map/scene.mjs +3 -3
- package/dist/domains/math/vectors-matrices/lines-in-space/model.d.mts +1 -1
- package/dist/domains/math/vectors-matrices/lines-in-space/model.mjs +1 -1
- package/dist/domains/math/vectors-matrices/lines-in-space/runtime.mjs +7 -4
- package/dist/domains/math/vectors-matrices/lines-in-space/scene.mjs +21 -25
- package/dist/domains/math/vectors-matrices/vector-geometry-two-d/model.mjs +4 -4
- package/dist/domains/math/vectors-matrices/vector-geometry-two-d/runtime.mjs +2 -2
- package/dist/domains/math/vectors-matrices/vector-geometry-two-d/scene.mjs +124 -79
- package/dist/domains/ml/activation-gates/manifest.mjs +2 -2
- package/dist/domains/ml/activation-gates/model.d.mts +2 -1
- package/dist/domains/ml/activation-gates/model.mjs +15 -6
- package/dist/domains/ml/activation-gates/runtime.mjs +4 -4
- package/dist/domains/ml/activation-gates/scene.d.mts +18 -0
- package/dist/domains/ml/activation-gates/scene.mjs +159 -17
- package/dist/domains/ml/affine-neuron/scene.d.mts +1 -1
- package/dist/domains/ml/affine-neuron/scene.mjs +2 -3
- package/dist/domains/ml/anomaly-detector/model.d.mts +4 -4
- package/dist/domains/ml/anomaly-detector/scene.mjs +1 -2
- package/dist/domains/ml/attention-routing/scene.mjs +1 -2
- package/dist/domains/ml/autoencoder/scene.mjs +0 -1
- package/dist/domains/ml/backprop-tracer/backprop-graph-diagram.mjs +0 -1
- package/dist/domains/ml/causal-mask/scene.mjs +1 -2
- package/dist/domains/ml/char-model/scene.mjs +4 -6
- package/dist/domains/ml/classifier-threshold/model.d.mts +4 -4
- package/dist/domains/ml/classifier-threshold/scene.mjs +6 -5
- package/dist/domains/ml/context-window/context-window-diagram.mjs +0 -1
- package/dist/domains/ml/decision-boundary/scene.mjs +2 -2
- package/dist/domains/ml/denoising/denoising-diagram.mjs +0 -1
- package/dist/domains/ml/denoising/runtime.mjs +2 -2
- package/dist/domains/ml/embedding-neighborhood/scene.mjs +1 -2
- package/dist/domains/ml/embedding-space/scene.mjs +4 -4
- package/dist/domains/ml/encoder-decoder/encoder-decoder-diagram.mjs +4 -7
- package/dist/domains/ml/feature-map/feature-map-diagram.mjs +0 -1
- package/dist/domains/ml/feature-map/feature-map.mjs +2 -2
- package/dist/domains/ml/feature-map/scene.mjs +2 -3
- package/dist/domains/ml/feed-forward-network/feed-forward-workshop-diagram.mjs +0 -1
- package/dist/domains/ml/feed-forward-network/model.d.mts +6 -6
- package/dist/domains/ml/feed-forward-network/scene.mjs +2 -2
- package/dist/domains/ml/fit-evidence/linear-fit-diagram.mjs +0 -1
- package/dist/domains/ml/fit-evidence/scene.mjs +3 -4
- package/dist/domains/ml/gradient-step/gradient-step-diagram.mjs +0 -1
- package/dist/domains/ml/gradient-step/scene.mjs +2 -2
- package/dist/domains/ml/kmeans/scene.mjs +11 -3
- package/dist/domains/ml/knn/scene.mjs +2 -2
- package/dist/domains/ml/latent-space/latent-space-diagram.mjs +0 -1
- package/dist/domains/ml/latent-space/scene.mjs +2 -2
- package/dist/domains/ml/layer-normalization/layer-normalization-diagram.mjs +0 -1
- package/dist/domains/ml/layer-normalization/model.d.mts +4 -4
- package/dist/domains/ml/layer-normalization/scene.mjs +2 -2
- package/dist/domains/ml/learning-loop/learning-loop-diagram.mjs +0 -1
- package/dist/domains/ml/learning-loop/scene.mjs +2 -2
- package/dist/domains/ml/logistic-fit/scene.mjs +6 -5
- package/dist/domains/ml/loss-error/loss-diagram.mjs +3 -3
- package/dist/domains/ml/loss-error/scene.mjs +2 -2
- package/dist/domains/ml/matrix-vector/matrix-vector-diagram.mjs +0 -1
- package/dist/domains/ml/matrix-vector/scene.mjs +2 -2
- package/dist/domains/ml/memory-relay/model.d.mts +4 -4
- package/dist/domains/ml/memory-relay/scene.mjs +5 -4
- package/dist/domains/ml/model-complexity/scene.mjs +12 -4
- package/dist/domains/ml/multi-head-attention/multi-head-attention-diagram.mjs +0 -1
- package/dist/domains/ml/multi-head-attention/scene.mjs +4 -4
- package/dist/domains/ml/multimodal-alignment/scene.mjs +4 -4
- package/dist/domains/ml/next-token/scene.mjs +4 -5
- package/dist/domains/ml/overfit-gap/overfit-gap-diagram.mjs +2 -2
- package/dist/domains/ml/overfit-gap/scene.mjs +3 -4
- package/dist/domains/ml/pixel-filter/convolution-diagram.mjs +0 -1
- package/dist/domains/ml/pixel-filter/pixel-window-diagram.mjs +0 -1
- package/dist/domains/ml/pixel-filter/scene.mjs +2 -2
- package/dist/domains/ml/position-signals/scene.mjs +1 -2
- package/dist/domains/ml/query-key-value/model.d.mts +2 -2
- package/dist/domains/ml/query-key-value/query-key-value-diagram.mjs +0 -1
- package/dist/domains/ml/query-key-value/scene.mjs +3 -4
- package/dist/domains/ml/regression/activity.mjs +12 -8
- package/dist/domains/ml/regression/manifest.mjs +34 -1
- package/dist/domains/ml/regression/model.d.mts +8 -0
- package/dist/domains/ml/regression/model.mjs +12 -10
- package/dist/domains/ml/regression/runtime.mjs +12 -9
- package/dist/domains/ml/regression/scene.mjs +74 -17
- package/dist/domains/ml/residual-stream/residual-stream-diagram.d.mts +0 -1
- package/dist/domains/ml/residual-stream/residual-stream-diagram.mjs +0 -1
- package/dist/domains/ml/residual-stream/scene.mjs +4 -4
- package/dist/domains/ml/reward-groups/model.mjs +1 -1
- package/dist/domains/ml/reward-groups/scene.mjs +3 -4
- package/dist/domains/ml/scaled-dot-product-attention/scene.mjs +1 -2
- package/dist/domains/ml/tiny-network/model.mjs +1 -1
- package/dist/domains/ml/tiny-network/scene.mjs +5 -6
- package/dist/domains/ml/token-generation/model.mjs +1 -1
- package/dist/domains/ml/token-generation/scene.mjs +1 -2
- package/dist/domains/ml/tokenizer-bpe/model.mjs +1 -1
- package/dist/domains/ml/training-loop/scene.mjs +2 -4
- package/dist/domains/ml/transformer-block/scene.mjs +2 -3
- package/dist/domains/ml/unembedding/scene.mjs +2 -3
- package/dist/domains/networking/adaptive-video-call/scene.mjs +2 -5
- package/dist/domains/networking/bottleneck-queue/scene.mjs +82 -19
- package/dist/domains/networking/broadcast-delivery/scene.mjs +1 -3
- package/dist/domains/networking/cafe-privacy/runtime.mjs +6 -1
- package/dist/domains/networking/cafe-privacy/scene.mjs +296 -180
- package/dist/domains/networking/cell-size/CellSizeScene.mjs +1 -3
- package/dist/domains/networking/cloud-storage-design/manifest.mjs +2 -3
- package/dist/domains/networking/cloud-storage-design/scene.mjs +4 -7
- package/dist/domains/networking/container-deployment/scene.mjs +5 -8
- package/dist/domains/networking/data-recovery-planner/scene.mjs +4 -7
- package/dist/domains/networking/dhcp-lease/scene.mjs +0 -2
- package/dist/domains/networking/distributed-inference-topology/scene.mjs +3 -5
- package/dist/domains/networking/dns-resolution/scene.mjs +1 -4
- package/dist/domains/networking/edge-cache-delivery/scene.mjs +4 -7
- package/dist/domains/networking/ethernet-pinout/PlugScene.mjs +1 -3
- package/dist/domains/networking/failure-domain-planner/scene.mjs +4 -7
- package/dist/domains/networking/generation-capability/CapabilityTesterScene.mjs +0 -1
- package/dist/domains/networking/geo-market-routing/scene.mjs +3 -6
- package/dist/domains/networking/group-message-sync/scene.mjs +1 -3
- package/dist/domains/networking/handover-margin/scene.mjs +2 -4
- package/dist/domains/networking/home-broadband-journey/scene.mjs +1 -3
- package/dist/domains/networking/inference-capacity-planner/scene.mjs +3 -5
- package/dist/domains/networking/inference-degradation-planner/scene.mjs +3 -5
- package/dist/domains/networking/inference-request-pipeline/scene.mjs +0 -1
- package/dist/domains/networking/infrastructure-drift-planner/scene.mjs +3 -5
- package/dist/domains/networking/ipv6-neighbor/scene.mjs +0 -2
- package/dist/domains/networking/layer-encapsulation/scene.mjs +5 -9
- package/dist/domains/networking/live-stream-pipeline/scene.mjs +1 -3
- package/dist/domains/networking/media-encoding/scene.mjs +1 -3
- package/dist/domains/networking/message-journey/scene.mjs +1 -3
- package/dist/domains/networking/mobile-call-journey/scene.mjs +1 -3
- package/dist/domains/networking/model-routing-economics/scene.mjs +3 -5
- package/dist/domains/networking/modem-modulation/scene.mjs +2 -4
- package/dist/domains/networking/nat-traversal/scene.mjs +0 -2
- package/dist/domains/networking/network-media/scene.mjs +0 -2
- package/dist/domains/networking/orbit-latency/SatelliteScene.mjs +1 -3
- package/dist/domains/networking/orchestration-reconciler/scene.mjs +5 -8
- package/dist/domains/networking/packet-journey/NetworkScene.d.mts +0 -1
- package/dist/domains/networking/packet-journey/NetworkScene.mjs +0 -2
- package/dist/domains/networking/prefix-cache-planner/scene.mjs +4 -6
- package/dist/domains/networking/release-strategy-planner/scene.mjs +2 -4
- package/dist/domains/networking/route-learning/scene.mjs +2 -4
- package/dist/domains/networking/secret-rotation-planner/scene.mjs +2 -4
- package/dist/domains/networking/server-deployment/scene.mjs +0 -2
- package/dist/domains/networking/service-scaling/scene.mjs +2 -5
- package/dist/domains/networking/shared-airtime/scene.mjs +2 -4
- package/dist/domains/networking/signal-through-walls/SignalThroughWallsScene.mjs +2 -5
- package/dist/domains/networking/slo-incident-console/scene.mjs +3 -6
- package/dist/domains/networking/spectrum-map/SpectrumMapScene.mjs +0 -1
- package/dist/domains/networking/subnet-builder/SubnetScene.mjs +0 -2
- package/dist/domains/networking/switch-learning/SwitchScene.mjs +0 -3
- package/dist/domains/networking/tcp-handshake/scene.mjs +6 -7
- package/dist/domains/networking/tcp-sender/scene.mjs +0 -2
- package/dist/domains/networking/tls-connection/scene.mjs +0 -2
- package/dist/domains/networking/vlan-designer/VlanScene.mjs +8 -10
- package/dist/domains/networking/vpc-route-planner/scene.mjs +4 -7
- package/dist/domains/networking/vpn-tunnel/VpnScene.mjs +3 -6
- package/dist/domains/networking/wave-size/WaveSizeScene.mjs +10 -10
- package/dist/domains/networking/wifi-contention/scene.mjs +0 -2
- package/dist/domains/networking/wifi-coverage/scene.mjs +4 -5
- package/dist/domains/networking/workload-identity-planner/scene.mjs +2 -4
- package/dist/domains/physics/electricity/capacitor-energy/activity.mjs +1 -1
- package/dist/domains/physics/electricity/capacitor-energy/layout.mjs +107 -0
- package/dist/domains/physics/electricity/capacitor-energy/manifest.mjs +1 -1
- package/dist/domains/physics/electricity/capacitor-energy/scene.mjs +286 -323
- package/dist/domains/physics/electricity/circuit-energy-flow/scene.mjs +1 -3
- package/dist/domains/physics/electricity/circuit-fault-detective/scene.mjs +3 -3
- package/dist/domains/physics/electricity/circuit-iv-investigation/scene.mjs +4 -5
- package/dist/domains/physics/electricity/coulomb-superposition/manifest.mjs +1 -1
- package/dist/domains/physics/electricity/coulomb-superposition/model.mjs +2 -2
- package/dist/domains/physics/electricity/coulomb-superposition/scene.mjs +2 -3
- package/dist/domains/physics/electricity/electric-field/scene.mjs +7 -11
- package/dist/domains/physics/electricity/electric-flux/preset.mjs +1 -1
- package/dist/domains/physics/electricity/electric-flux/scene.mjs +7 -4
- package/dist/domains/physics/electricity/friction-charging/scene.mjs +4 -6
- package/dist/domains/physics/electricity/gauss-law/runtime.mjs +0 -1
- package/dist/domains/physics/electricity/gauss-law/scene.mjs +4 -5
- package/dist/domains/physics/electricity/plug-safety-inspector/scene.mjs +6 -8
- package/dist/domains/physics/electricity/rectifier-bench/scene.mjs +290 -281
- package/dist/domains/physics/electricity/regulated-supply/scene.mjs +1 -3
- package/dist/domains/physics/electricity/work-potential/labels.mjs +85 -0
- package/dist/domains/physics/electricity/work-potential/scene.mjs +37 -41
- package/dist/domains/physics/energy/bullet-walls/scene.mjs +6 -5
- package/dist/domains/physics/energy/efficiency/device-art.mjs +7 -9
- package/dist/domains/physics/energy/efficiency/scene.mjs +0 -1
- package/dist/domains/physics/energy/energy-resource-grid/scene.mjs +10 -11
- package/dist/domains/physics/energy/energy-skate/scene.mjs +2 -4
- package/dist/domains/physics/energy/lifting-work/scene.mjs +1 -3
- package/dist/domains/physics/energy/power/activity.mjs +1 -1
- package/dist/domains/physics/energy/power/manifest.mjs +2 -1
- package/dist/domains/physics/energy/power/model.mjs +2 -2
- package/dist/domains/physics/energy/power/scene.mjs +28 -22
- package/dist/domains/physics/energy/work-energy/scene.mjs +11 -13
- package/dist/domains/physics/fields/field-geometry/scene.mjs +2 -4
- package/dist/domains/physics/fields/gravitation/scene.mjs +2 -4
- package/dist/domains/physics/fields/gravity-profile/runtime.mjs +0 -1
- package/dist/domains/physics/fields/gravity-profile/scene.mjs +1 -5
- package/dist/domains/physics/fields/kepler/scene.mjs +2 -4
- package/dist/domains/physics/fields/orbit-lab/model.mjs +46 -28
- package/dist/domains/physics/fields/orbit-lab/scene.mjs +3 -6
- package/dist/domains/physics/forces/atwood/scene.mjs +13 -18
- package/dist/domains/physics/forces/beam-reactions/scene.mjs +13 -14
- package/dist/domains/physics/forces/circular-motion/scene.mjs +7 -8
- package/dist/domains/physics/forces/collision-track/activity.mjs +8 -1
- package/dist/domains/physics/forces/collision-track/manifest.mjs +6 -2
- package/dist/domains/physics/forces/collision-track/model.mjs +1 -8
- package/dist/domains/physics/forces/collision-track/runtime.mjs +1 -1
- package/dist/domains/physics/forces/collision-track/scene.mjs +13 -10
- package/dist/domains/physics/forces/contact-pressure/footprint-scene.mjs +12 -10
- package/dist/domains/physics/forces/couple-torque/scene.mjs +10 -10
- package/dist/domains/physics/forces/force-pairs/scene.mjs +8 -11
- package/dist/domains/physics/forces/impulse/activity.mjs +3 -3
- package/dist/domains/physics/forces/impulse/manifest.mjs +1 -1
- package/dist/domains/physics/forces/impulse/model.mjs +2 -2
- package/dist/domains/physics/forces/impulse/runtime.mjs +3 -3
- package/dist/domains/physics/forces/impulse/scene.mjs +16 -20
- package/dist/domains/physics/forces/lever/runtime.mjs +0 -1
- package/dist/domains/physics/forces/lever/scene.mjs +6 -9
- package/dist/domains/physics/forces/lift-weight/scene.mjs +9 -8
- package/dist/domains/physics/forces/newton-first-law/model.mjs +1 -0
- package/dist/domains/physics/forces/newton-first-law/scene.mjs +15 -13
- package/dist/domains/physics/forces/ramp-forces/evidence.mjs +1 -3
- package/dist/domains/physics/forces/ramp-forces/scene.mjs +35 -26
- package/dist/domains/physics/forces/rocket-flight/scene.mjs +3 -5
- package/dist/domains/physics/forces/spin-studio/activity.mjs +2 -34
- package/dist/domains/physics/forces/spin-studio/manifest.mjs +3 -3
- package/dist/domains/physics/forces/spin-studio/model.mjs +0 -1
- package/dist/domains/physics/forces/spin-studio/scene.mjs +112 -82
- package/dist/domains/physics/forces/spring-combinations/scene.mjs +7 -11
- package/dist/domains/physics/forces/stability/scene.mjs +10 -16
- package/dist/domains/physics/forces/terminal-velocity/scene.mjs +3 -5
- package/dist/domains/physics/magnetism/ac-generator/model.mjs +2 -3
- package/dist/domains/physics/magnetism/ac-generator/scene.mjs +167 -58
- package/dist/domains/physics/magnetism/alternating-current/scene.mjs +290 -360
- package/dist/domains/physics/magnetism/coil-torque/scene.mjs +7 -5
- package/dist/domains/physics/magnetism/dc-motor/manifest.mjs +1 -1
- package/dist/domains/physics/magnetism/dc-motor/runtime.mjs +2 -2
- package/dist/domains/physics/magnetism/dc-motor/scene.mjs +362 -262
- package/dist/domains/physics/magnetism/earth-field/scene.mjs +216 -177
- package/dist/domains/physics/magnetism/generator-grid-mission/scene.mjs +18 -21
- package/dist/domains/physics/magnetism/induction-bench/scene.mjs +8 -13
- package/dist/domains/physics/magnetism/inductor-energy/scene.mjs +9 -11
- package/dist/domains/physics/magnetism/lorentz/scene.mjs +2 -4
- package/dist/domains/physics/magnetism/magnet-pair/lesson-examples.mjs +4 -4
- package/dist/domains/physics/magnetism/magnet-pair/manifest.mjs +1 -1
- package/dist/domains/physics/magnetism/magnet-pair/model.mjs +3 -3
- package/dist/domains/physics/magnetism/magnet-pair/runtime.mjs +5 -5
- package/dist/domains/physics/magnetism/magnet-pair/scene.mjs +103 -313
- package/dist/domains/physics/magnetism/magnetic-field/activity.mjs +44 -36
- package/dist/domains/physics/magnetism/magnetic-field/manifest.mjs +1 -1
- package/dist/domains/physics/magnetism/magnetic-field/model.mjs +6 -6
- package/dist/domains/physics/magnetism/magnetic-field/runtime.mjs +2 -1
- package/dist/domains/physics/magnetism/magnetic-field/scene.mjs +33 -39
- package/dist/domains/physics/magnetism/magnetism/model.mjs +15 -8
- package/dist/domains/physics/magnetism/magnetism/runtime.mjs +0 -1
- package/dist/domains/physics/magnetism/magnetism/scene.mjs +3 -5
- package/dist/domains/physics/magnetism/magnetism-diagram/schema.mjs +1 -2
- package/dist/domains/physics/magnetism/mutual-induction/scene.mjs +7 -9
- package/dist/domains/physics/magnetism/relay-bench/scene.mjs +11 -16
- package/dist/domains/physics/magnetism/rl-step-response/model.mjs +3 -2
- package/dist/domains/physics/magnetism/rl-step-response/scene.mjs +1 -3
- package/dist/domains/physics/magnetism/soft-iron-steel/scene.mjs +74 -124
- package/dist/domains/physics/magnetism/solenoid-bench/activity.mjs +1 -1
- package/dist/domains/physics/magnetism/solenoid-bench/manifest.mjs +3 -8
- package/dist/domains/physics/magnetism/solenoid-bench/model.mjs +3 -3
- package/dist/domains/physics/magnetism/solenoid-bench/runtime.mjs +2 -1
- package/dist/domains/physics/magnetism/solenoid-bench/scene.mjs +239 -162
- package/dist/domains/physics/magnetism/spatial-lorentz/scene.mjs +3 -4
- package/dist/domains/physics/magnetism/transformer-bench/scene.mjs +171 -62
- package/dist/domains/physics/magnetism/wire-force-angle/scene.mjs +2 -3
- package/dist/domains/physics/matter/buoyancy/scene.mjs +2 -3
- package/dist/domains/physics/matter/carnot/cycle-scene.mjs +272 -218
- package/dist/domains/physics/matter/cooling-insulation-investigation/scene.mjs +13 -15
- package/dist/domains/physics/matter/density-displacement/scene.mjs +10 -10
- package/dist/domains/physics/matter/entropy/entropy-scene.mjs +277 -231
- package/dist/domains/physics/matter/evaporation/activity.mjs +12 -5
- package/dist/domains/physics/matter/evaporation/dish-scene.mjs +189 -162
- package/dist/domains/physics/matter/evaporation/manifest.mjs +4 -2
- package/dist/domains/physics/matter/evaporation/model.mjs +23 -38
- package/dist/domains/physics/matter/evaporation/runtime.mjs +1 -0
- package/dist/domains/physics/matter/fluid-pressure/scene.mjs +1 -2
- package/dist/domains/physics/matter/gas-process/manifest.mjs +3 -2
- package/dist/domains/physics/matter/gas-process/model.mjs +9 -4
- package/dist/domains/physics/matter/gas-process/scene.mjs +201 -153
- package/dist/domains/physics/matter/gas-theory/theory-scenes.mjs +11 -14
- package/dist/domains/physics/matter/heat-transfer/conduction-scene.mjs +19 -15
- package/dist/domains/physics/matter/heat-transfer/convection-scene.mjs +9 -10
- package/dist/domains/physics/matter/heat-transfer/radiation-scene.mjs +54 -66
- package/dist/domains/physics/matter/heat-transfer/scene.mjs +1 -2
- package/dist/domains/physics/matter/heat-transfer-cases/scene.mjs +24 -26
- package/dist/domains/physics/matter/heating-curve/heating-scene.mjs +9 -11
- package/dist/domains/physics/matter/heating-curve/model.mjs +5 -13
- package/dist/domains/physics/matter/specific-heat/scene.mjs +11 -11
- package/dist/domains/physics/matter/stress-strain/wire-scene.mjs +13 -13
- package/dist/domains/physics/matter/temperature-scales/scene.mjs +6 -8
- package/dist/domains/physics/matter/thermal-equilibrium/scene.mjs +13 -14
- package/dist/domains/physics/matter/thermal-expansion/expansion-scenes.mjs +24 -26
- package/dist/domains/physics/matter/thermal-expansion/scene.mjs +1 -2
- package/dist/domains/physics/matter/venturi/activity.mjs +1 -1
- package/dist/domains/physics/matter/venturi/manifest.mjs +8 -7
- package/dist/domains/physics/matter/venturi/model.mjs +1 -1
- package/dist/domains/physics/matter/venturi/runtime.mjs +1 -0
- package/dist/domains/physics/matter/venturi/scene.mjs +2 -3
- package/dist/domains/physics/matter/water-density/scene.mjs +2 -4
- package/dist/domains/physics/measurement/data-table-clinic/scene.mjs +0 -1
- package/dist/domains/physics/measurement/evaluation-clinic/scene.mjs +5 -8
- package/dist/domains/physics/measurement/graph-craft/scene.mjs +2 -4
- package/dist/domains/physics/measurement/homogeneity-check/scene.mjs +1 -2
- package/dist/domains/physics/measurement/paper5-analysis-lab/scene.mjs +4 -6
- package/dist/domains/physics/measurement/physics-practical-studio/scene.mjs +10 -10
- package/dist/domains/physics/measurement/precision-measurement-lab/scene.mjs +7 -5
- package/dist/domains/physics/measurement/prefix-ladder/scene.mjs +0 -1
- package/dist/domains/physics/measurement/reading-spread/scene.mjs +20 -7
- package/dist/domains/physics/measurement/scale-reading/scene.mjs +11 -13
- package/dist/domains/physics/measurement/uncertainty-budget/scene.mjs +0 -1
- package/dist/domains/physics/measurement/unit-machine/scene.mjs +1 -2
- package/dist/domains/physics/modern/acoustic-boundary/acoustic-boundary.mjs +2 -3
- package/dist/domains/physics/modern/bloch-sphere/runtime.mjs +1 -2
- package/dist/domains/physics/modern/double-slit/double-slit-scene.mjs +1 -3
- package/dist/domains/physics/modern/fission-chain/fission-scene.mjs +1 -3
- package/dist/domains/physics/modern/hydrogen-spectrum/scene.mjs +2 -4
- package/dist/domains/physics/modern/length-contraction/scene.mjs +3 -6
- package/dist/domains/physics/modern/lorentz-transformation/scene.mjs +7 -6
- package/dist/domains/physics/modern/muon-survival/scene.mjs +23 -15
- package/dist/domains/physics/modern/nuclear-binding-energy/scene.mjs +8 -10
- package/dist/domains/physics/modern/pet-scan/pet-scene.mjs +5 -8
- package/dist/domains/physics/modern/photoelectric-effect/scene.mjs +16 -18
- package/dist/domains/physics/modern/quantum-gates/scene.mjs +1 -2
- package/dist/domains/physics/modern/radiation-half-life-investigation/runtime.mjs +7 -18
- package/dist/domains/physics/modern/radiation-half-life-investigation/scene.mjs +67 -57
- package/dist/domains/physics/modern/radioactive-decay/scene.mjs +3 -5
- package/dist/domains/physics/modern/relativity-light-clock/light-clock.mjs +3 -5
- package/dist/domains/physics/modern/relativity-light-clock/spacetime.mjs +0 -1
- package/dist/domains/physics/modern/relativity-simultaneity/simultaneity-scene.mjs +3 -5
- package/dist/domains/physics/modern/tomography/scene.mjs +0 -1
- package/dist/domains/physics/modern/ultrasound-frequency/scene.mjs +1 -3
- package/dist/domains/physics/modern/uncertainty-wave-packet/scene.mjs +2 -3
- package/dist/domains/physics/modern/xray-attenuation/xray-scene.mjs +8 -6
- package/dist/domains/physics/modern/xray-tube-spectrum/spectrum-scene.mjs +17 -9
- package/dist/domains/physics/motion/falling-target/target-scene.mjs +8 -6
- package/dist/domains/physics/motion/gravity-drop/scene.mjs +4 -6
- package/dist/domains/physics/motion/intercept/animals.mjs +0 -1
- package/dist/domains/physics/motion/intercept/scene.mjs +9 -9
- package/dist/domains/physics/motion/linear-pursuit/pursuit-scene.mjs +4 -6
- package/dist/domains/physics/motion/moving-launcher/runtime.mjs +0 -1
- package/dist/domains/physics/motion/moving-launcher/scene.mjs +4 -10
- package/dist/domains/physics/motion/projectile-lab/model.mjs +4 -4
- package/dist/domains/physics/motion/projectile-lab/scene.mjs +14 -18
- package/dist/domains/physics/motion/rain-relative/model.mjs +5 -11
- package/dist/domains/physics/motion/rain-relative/scene.mjs +9 -8
- package/dist/domains/physics/motion/river-boat/model.mjs +6 -12
- package/dist/domains/physics/motion/river-boat/scene.mjs +9 -10
- package/dist/domains/physics/motion/stopping-distance/stopping-scene.mjs +5 -7
- package/dist/domains/physics/motion/trolley-acceleration-investigation/scene.mjs +14 -13
- package/dist/domains/physics/motion/trolley-acceleration-investigation/trolley.d.mts +0 -1
- package/dist/domains/physics/motion/trolley-acceleration-investigation/trolley.mjs +26 -17
- package/dist/domains/physics/motion/vector-board/model.mjs +14 -14
- package/dist/domains/physics/motion/vector-board/preset.d.mts +1 -1
- package/dist/domains/physics/motion/vector-board/preset.mjs +8 -5
- package/dist/domains/physics/motion/vector-board/scene.mjs +157 -27
- package/dist/domains/physics/motion/vector-types/scene.mjs +2 -3
- package/dist/domains/physics/motion/vector-types/trip-scene.mjs +2 -4
- package/dist/domains/physics/motion/velocity-gradient/scene.mjs +1 -2
- package/dist/domains/physics/space/cosmic-expansion/scene.mjs +2 -3
- package/dist/domains/physics/space/stellar-distance/scene.mjs +2 -4
- package/dist/domains/physics/space/stellar-evolution/scene.mjs +2 -4
- package/dist/domains/physics/space/stellar-radiation/scene.mjs +2 -3
- package/dist/domains/physics/waves/bench/bench-scene.mjs +35 -13
- package/dist/domains/physics/waves/bench/wave-experience-scene.mjs +4 -6
- package/dist/domains/physics/waves/car-suspension/scene.mjs +3 -5
- package/dist/domains/physics/waves/diffraction-grating/scene.mjs +8 -7
- package/dist/domains/physics/waves/doppler/doppler-scene.mjs +3 -5
- package/dist/domains/physics/waves/echo-ranging/scene.mjs +5 -6
- package/dist/domains/physics/waves/fibre-pulse/scene.mjs +1 -1
- package/dist/domains/physics/waves/gap-diffraction/gap-scene.mjs +20 -13
- package/dist/domains/physics/waves/glass-block-refraction/scene.mjs +3 -3
- package/dist/domains/physics/waves/guitar-string/scene.mjs +1 -2
- package/dist/domains/physics/waves/harmonic-modes/scene.mjs +3 -5
- package/dist/domains/physics/waves/lens-focal-investigation/activity.mjs +127 -118
- package/dist/domains/physics/waves/lens-focal-investigation/manifest.mjs +9 -2
- package/dist/domains/physics/waves/lens-focal-investigation/model.mjs +4 -1
- package/dist/domains/physics/waves/lens-focal-investigation/runtime.mjs +1 -0
- package/dist/domains/physics/waves/lens-focal-investigation/scene.mjs +25 -47
- package/dist/domains/physics/waves/lens-geometry/scene.mjs +31 -33
- package/dist/domains/physics/waves/lens-imaging/runtime.mjs +0 -1
- package/dist/domains/physics/waves/lens-imaging/scene.mjs +0 -1
- package/dist/domains/physics/waves/lens-mission/scene.mjs +3 -5
- package/dist/domains/physics/waves/mirror-imaging/runtime.mjs +0 -1
- package/dist/domains/physics/waves/mirror-imaging/scene.mjs +0 -1
- package/dist/domains/physics/waves/optics/apparatus.mjs +8 -4
- package/dist/domains/physics/waves/optics/runtime.mjs +0 -1
- package/dist/domains/physics/waves/optics/scene.mjs +3 -4
- package/dist/domains/physics/waves/optics-mission/scene.mjs +2 -4
- package/dist/domains/physics/waves/pendulum-worlds/scene.mjs +118 -72
- package/dist/domains/physics/waves/plane-mirror/scene.mjs +1 -2
- package/dist/domains/physics/waves/polarisation/polariser-scene.mjs +20 -14
- package/dist/domains/physics/waves/prism-dispersion/scene.mjs +0 -1
- package/dist/domains/physics/waves/progressive-stationary/scene.mjs +2 -4
- package/dist/domains/physics/waves/pulse-echo/scene.mjs +1 -2
- package/dist/domains/physics/waves/refraction/scene.mjs +15 -12
- package/dist/domains/physics/waves/ripple-tank/scene.mjs +1 -2
- package/dist/domains/physics/waves/shm/model.mjs +43 -8
- package/dist/domains/physics/waves/shm/scene.mjs +3 -5
- package/dist/domains/physics/waves/shm-energy/scene.mjs +1 -2
- package/dist/domains/physics/waves/shm-graphs/scene.mjs +1 -2
- package/dist/domains/physics/waves/sound-air/scene.mjs +2 -3
- package/dist/domains/physics/waves/sound-medium/scene.mjs +1 -2
- package/dist/domains/physics/waves/sound-mission/scene.mjs +1 -2
- package/dist/domains/physics/waves/spectral-resolver/scene.mjs +0 -1
- package/dist/domains/physics/waves/spectrum-mission/scene.mjs +0 -1
- package/dist/domains/physics/waves/string-reflection/scene.mjs +2 -4
- package/dist/domains/physics/waves/timbre/scene.mjs +0 -1
- package/dist/domains/physics/waves/two-source/two-source-scene.mjs +3 -5
- package/dist/domains/physics/waves/water-wave-refraction/scene.mjs +2 -3
- package/dist/domains/physics/waves/young-double-slit/model.mjs +4 -1
- package/dist/domains/physics/waves/young-double-slit/young-scene.mjs +8 -9
- package/dist/domains/render-map.mjs +39 -1
- package/dist/domains/render.d.mts +1 -9
- package/dist/domains/render.mjs +11 -15
- package/dist/domains/revision/chapter-summary/manifest.mjs +1 -2
- package/dist/domains/revision/concept-sprint/model.mjs +2 -2
- package/dist/domains/revision/step-order-puzzle/model.mjs +1 -1
- package/dist/domains/statistics/bar-chart-builder/model.mjs +1 -1
- package/dist/domains/statistics/bar-chart-builder/scene.mjs +0 -1
- package/dist/domains/statistics/center-spread/activity.mjs +5 -3
- package/dist/domains/statistics/center-spread/balance-scene.mjs +75 -23
- package/dist/domains/statistics/center-spread/model.mjs +2 -1
- package/dist/domains/statistics/center-spread/scene.mjs +8 -7
- package/dist/domains/statistics/cumulative-frequency-builder/scene.mjs +0 -1
- package/dist/domains/statistics/frequency-density/activity.mjs +1 -1
- package/dist/domains/statistics/frequency-density/density-scene.mjs +127 -122
- package/dist/domains/statistics/frequency-density/manifest.mjs +2 -2
- package/dist/domains/statistics/frequency-density/runtime.mjs +5 -4
- package/dist/domains/statistics/galton/model.mjs +137 -108
- package/dist/domains/statistics/galton/runtime.mjs +14 -35
- package/dist/domains/statistics/galton/scene.mjs +85 -153
- package/dist/domains/statistics/histogram/manifest.mjs +19 -0
- package/dist/domains/statistics/histogram/model.mjs +9 -3
- package/dist/domains/statistics/histogram/runtime.mjs +1 -1
- package/dist/domains/statistics/histogram/scene.mjs +21 -11
- package/dist/domains/statistics/histogram-builder/scene.mjs +0 -1
- package/dist/domains/statistics/histogram-interval/scene.mjs +0 -1
- package/dist/domains/statistics/normal/normal-scene.mjs +0 -1
- package/dist/domains/statistics/normal/runtime.mjs +1 -1
- package/dist/domains/statistics/normal/scene.mjs +1 -2
- package/dist/domains/statistics/ogive/ogive-scene.mjs +63 -36
- package/dist/domains/statistics/ogive/scene.mjs +1 -2
- package/dist/domains/statistics/pictogram-builder/model.mjs +5 -4
- package/dist/domains/statistics/pictogram-builder/scene.mjs +0 -1
- package/dist/domains/statistics/pie-chart-builder/model.mjs +5 -4
- package/dist/domains/statistics/pie-chart-builder/scene.mjs +0 -1
- package/dist/domains/statistics/sampling/model.mjs +2 -2
- package/dist/domains/statistics/sampling/runtime.mjs +4 -4
- package/dist/domains/statistics/sampling/sampling-scene.mjs +0 -1
- package/dist/domains/statistics/sampling/scene.mjs +1 -2
- package/dist/domains/statistics/scatter-builder/scene.mjs +0 -1
- package/dist/domains/statistics/series/model.mjs +6 -4
- package/dist/domains/statistics/series/runtime.mjs +4 -4
- package/dist/domains/statistics/series/series-scene.mjs +50 -17
- package/dist/domains/statistics/series-chart-builder/model.mjs +5 -4
- package/dist/domains/statistics/series-chart-builder/scene.mjs +0 -1
- package/dist/domains/statistics/two-way-table-builder/model.mjs +4 -3
- package/dist/domains/statistics/two-way-table-builder/scene.mjs +0 -1
- package/dist/domains/statistics/z-table/scene.mjs +0 -1
- package/dist/exam/answer-spec.mjs +15 -2
- package/dist/exam/exam-question/core.d.mts +1 -1
- package/dist/exam/exam-question/core.mjs +9 -2
- package/dist/geometry/board/construction.d.mts +11 -3
- package/dist/geometry/board/construction.mjs +13 -0
- package/dist/geometry/board/index.d.mts +1 -1
- package/dist/geometry/board/schema.mjs +106 -0
- package/dist/geometry/index.d.mts +1 -1
- package/dist/ict/number-systems/wheel.mjs +2 -2
- package/dist/illustrations/story-scene/accounting/cash-credit-flow.mjs +1 -1
- package/dist/illustrations/story-scene/accounting/delivery-van.mjs +1 -1
- package/dist/illustrations/story-scene/accounting/shop-counter-till.mjs +1 -1
- package/dist/illustrations/story-scene/accounting/stocktake-shelves.mjs +4 -3
- package/dist/illustrations/story-scene/accounting/supplier-delivery.mjs +1 -1
- package/dist/illustrations/story-scene/accounting/tea-stall.mjs +1 -1
- package/dist/illustrations/story-scene/accounting/van.mjs +3 -3
- package/dist/illustrations/story-scene/accounting/workshop-machine.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/acid-rain.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/balls-in-box.mjs +1 -1
- package/dist/illustrations/story-scene/chemistry/blast-furnace.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/bread-dough.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/brick-rebuild.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/bromine-water-test.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/charge-see-saw.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/cold-pack.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/corridor-pace.mjs +1 -1
- package/dist/illustrations/story-scene/chemistry/crowd-states.mjs +1 -1
- package/dist/illustrations/story-scene/chemistry/distillation-rig.mjs +1 -1
- package/dist/illustrations/story-scene/chemistry/dozen-weigh.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/ethene-bag.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/fertiliser-field.mjs +4 -4
- package/dist/illustrations/story-scene/chemistry/fractionating-tower.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/fruity-ester.mjs +8 -7
- package/dist/illustrations/story-scene/chemistry/hand-sanitiser.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/hand-warmer.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/ionic-tug-of-war.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/lime-kiln.mjs +1 -1
- package/dist/illustrations/story-scene/chemistry/lunch-box.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/magnesium-ribbon.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/nylon-rope.mjs +8 -7
- package/dist/illustrations/story-scene/chemistry/pancake-stack.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/petrol-station.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/photosynthesis-leaf.mjs +1 -1
- package/dist/illustrations/story-scene/chemistry/plastic-recycling.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/recipe-card.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/rusty-bike.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/sandwich-stall.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/scrap-box.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/squash-jug.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/sugar-cube.mjs +4 -3
- package/dist/illustrations/story-scene/chemistry/vinegar-kitchen.mjs +6 -5
- package/dist/illustrations/story-scene/chemistry/water-treatment.mjs +10 -9
- package/dist/illustrations/story-scene/everyday/bicycle-wheel.mjs +4 -3
- package/dist/illustrations/story-scene/everyday/cake-slices.mjs +3 -3
- package/dist/illustrations/story-scene/everyday/car-road.mjs +3 -3
- package/dist/illustrations/story-scene/everyday/phone-battery.mjs +3 -3
- package/dist/illustrations/story-scene/everyday/train-speedometer.mjs +1 -1
- package/dist/illustrations/story-scene/math/bag-of-counters.mjs +3 -3
- package/dist/illustrations/story-scene/math/bank-savings.mjs +3 -3
- package/dist/illustrations/story-scene/math/building-shadow.mjs +1 -1
- package/dist/illustrations/story-scene/math/bus-timetable.mjs +4 -3
- package/dist/illustrations/story-scene/math/cylinder-tank.mjs +4 -3
- package/dist/illustrations/story-scene/math/elevation.mjs +1 -1
- package/dist/illustrations/story-scene/math/flag-pole.mjs +1 -1
- package/dist/illustrations/story-scene/math/football-goal.mjs +1 -1
- package/dist/illustrations/story-scene/math/kite-string.mjs +1 -1
- package/dist/illustrations/story-scene/math/ladder-wall.mjs +1 -1
- package/dist/illustrations/story-scene/math/map-scale.mjs +3 -3
- package/dist/illustrations/story-scene/math/phone-tower.mjs +1 -1
- package/dist/illustrations/story-scene/math/photo-line-up.mjs +1 -1
- package/dist/illustrations/story-scene/math/population-town.mjs +1 -1
- package/dist/illustrations/story-scene/math/pyramid-tent.mjs +4 -3
- package/dist/illustrations/story-scene/math/ramp.mjs +4 -3
- package/dist/illustrations/story-scene/math/shop-price-tag.mjs +3 -3
- package/dist/illustrations/story-scene/math/tank-tap.mjs +4 -3
- package/dist/illustrations/story-scene/math/team-pick.mjs +1 -1
- package/dist/illustrations/story-scene/parts.mjs +9 -8
- package/dist/illustrations/story-scene/physics/cliff-throw.mjs +1 -1
- package/dist/illustrations/story-scene/physics/curved-slide.mjs +4 -3
- package/dist/illustrations/story-scene/physics/electric-kettle.mjs +3 -3
- package/dist/illustrations/story-scene/physics/hot-drink.mjs +3 -3
- package/dist/illustrations/story-scene/physics/lift-shaft.mjs +1 -1
- package/dist/illustrations/story-scene/physics/sealed-syringe.mjs +3 -3
- package/dist/illustrations/story-scene/physics/see-saw.mjs +4 -3
- package/dist/illustrations/story-scene/physics/trolley-pull.mjs +4 -3
- package/dist/illustrations/story-scene/story-scene.mjs +33 -19
- package/dist/index.d.mts +2 -5
- package/dist/index.mjs +1 -4
- package/dist/kit/active-recall.mjs +1 -1
- package/dist/kit/activity-authoring.d.mts +27 -1
- package/dist/kit/activity.mjs +1 -1
- package/dist/kit/algorithms/graph.d.mts +10 -3
- package/dist/kit/algorithms/graph.mjs +14 -14
- package/dist/kit/algorithms/index.mjs +3 -3
- package/dist/kit/anim.d.mts +82 -28
- package/dist/kit/anim.mjs +378 -63
- package/dist/kit/annotate.mjs +22 -9
- package/dist/kit/assets.mjs +1 -1
- package/dist/kit/authored-activity-runtime.d.mts +9 -0
- package/dist/kit/authored-activity-runtime.mjs +4 -4
- package/dist/kit/authored-response.mjs +5 -1
- package/dist/kit/bar-strip.mjs +8 -8
- package/dist/kit/biology/cell/membrane.mjs +3 -17
- package/dist/kit/biology/genetics/chromosome-diagram.mjs +0 -1
- package/dist/kit/biology/index.d.mts +1 -1
- package/dist/kit/biology/index.mjs +1 -1
- package/dist/kit/canvas-layer.d.mts +2 -1
- package/dist/kit/canvas-layer.mjs +3 -1
- package/dist/kit/checkpoint.mjs +1 -1
- package/dist/kit/chemistry/bench.d.mts +6 -2
- package/dist/kit/chemistry/bench.mjs +63 -65
- package/dist/kit/chemistry/calorimeter.d.mts +0 -1
- package/dist/kit/chemistry/calorimeter.mjs +4 -4
- package/dist/kit/chemistry/carbon-sphere.mjs +0 -1
- package/dist/kit/chemistry/electrode.mjs +0 -1
- package/dist/kit/chemistry/equation-ledger.mjs +1 -2
- package/dist/kit/chemistry/flame.mjs +0 -1
- package/dist/kit/chemistry/formula.mjs +0 -1
- package/dist/kit/chemistry/gas-collection.mjs +2 -3
- package/dist/kit/chemistry/glass-label.d.mts +17 -0
- package/dist/kit/chemistry/glass-label.mjs +47 -0
- package/dist/kit/chemistry/glassware.mjs +35 -33
- package/dist/kit/chemistry/index.d.mts +2 -1
- package/dist/kit/chemistry/index.mjs +2 -1
- package/dist/kit/chemistry/ion-assembly.mjs +1 -2
- package/dist/kit/chemistry/mechanism.mjs +7 -7
- package/dist/kit/chemistry/molecule.mjs +2 -1
- package/dist/kit/chemistry/nmr-figure.mjs +0 -1
- package/dist/kit/chemistry/observation.d.mts +9 -15
- package/dist/kit/chemistry/observation.mjs +12 -16
- package/dist/kit/chemistry/particles.d.mts +8 -3
- package/dist/kit/chemistry/particles.mjs +11 -12
- package/dist/kit/chemistry/process.mjs +11 -18
- package/dist/kit/chemistry/quantity-route-figure.mjs +29 -39
- package/dist/kit/chemistry/quantity-route-objects.mjs +7 -8
- package/dist/kit/chemistry/reaction.mjs +0 -1
- package/dist/kit/chemistry/spectrum.mjs +0 -1
- package/dist/kit/chemistry/structure-figure.mjs +2 -1
- package/dist/kit/chemistry/volumetric-flask.mjs +6 -5
- package/dist/kit/clue-scene.d.mts +5 -0
- package/dist/kit/clue-scene.mjs +63 -31
- package/dist/kit/cluster.mjs +0 -1
- package/dist/kit/commerce/books.d.mts +3 -1
- package/dist/kit/commerce/books.mjs +4 -4
- package/dist/kit/commerce/buildings.mjs +4 -10
- package/dist/kit/commerce/glyphs.mjs +4 -5
- package/dist/kit/commerce/ledger.mjs +12 -21
- package/dist/kit/controls.d.mts +28 -5
- package/dist/kit/controls.mjs +104 -26
- package/dist/kit/coords.d.mts +27 -1
- package/dist/kit/coords.mjs +76 -27
- package/dist/kit/counting/cards.mjs +1 -3
- package/dist/kit/counting/counter.mjs +8 -8
- package/dist/kit/counting/running-chart.mjs +0 -2
- package/dist/kit/counting/tiles.mjs +1 -3
- package/dist/kit/cycle.mjs +34 -14
- package/dist/kit/data/categorical-bar-board.d.mts +0 -1
- package/dist/kit/data/categorical-bar-core.mjs +25 -12
- package/dist/kit/data/histogram-construction-board.d.mts +0 -1
- package/dist/kit/data/histogram-construction-board.mjs +8 -3
- package/dist/kit/data/histogram-interval-board.d.mts +0 -1
- package/dist/kit/data/histogram-interval-board.mjs +8 -3
- package/dist/kit/data/histogram-plot.mjs +8 -3
- package/dist/kit/data/index.mjs +1 -1
- package/dist/kit/data/pictogram-board.d.mts +0 -1
- package/dist/kit/data/pictogram-board.mjs +23 -6
- package/dist/kit/data/pie-chart-board.d.mts +2 -6
- package/dist/kit/data/pie-chart-board.mjs +7 -30
- package/dist/kit/data/scatter-point-board.d.mts +0 -1
- package/dist/kit/data/scatter-point-board.mjs +8 -3
- package/dist/kit/data/series-chart-board.d.mts +0 -1
- package/dist/kit/data/two-way-table-board.d.mts +0 -1
- package/dist/kit/data/two-way-table-board.mjs +21 -5
- package/dist/kit/data-scene.mjs +0 -1
- package/dist/kit/diagram/annotations.mjs +50 -3
- package/dist/kit/diagram/label-placement.mjs +47 -2
- package/dist/kit/discrete/tile.mjs +1 -3
- package/dist/{domains/economics/_shared → kit/economics}/market-plot.mjs +18 -14
- package/dist/kit/electronics/_shared.mjs +8 -29
- package/dist/kit/electronics/bench-instruments.mjs +32 -16
- package/dist/kit/electronics/bench-set.mjs +115 -167
- package/dist/kit/electronics/bench.mjs +12 -10
- package/dist/kit/electronics/carriers.mjs +88 -0
- package/dist/kit/electronics/components.mjs +2 -4
- package/dist/kit/electronics/icons.mjs +3 -2
- package/dist/kit/electronics/index.mjs +5 -4
- package/dist/kit/electronics/logic-bench.mjs +8 -7
- package/dist/kit/electronics/rectifier.mjs +34 -25
- package/dist/kit/electronics/signals.mjs +38 -31
- package/dist/kit/embed.mjs +1 -1
- package/dist/kit/ensure-asset.mjs +9 -10
- package/dist/kit/figure/action.mjs +5 -1
- package/dist/kit/figure/container.d.mts +2 -1
- package/dist/kit/figure/container.mjs +72 -36
- package/dist/kit/figure/database.mjs +2 -3
- package/dist/kit/figure/detent-path-grip.d.mts +6 -2
- package/dist/kit/figure/detent-path-grip.mjs +150 -49
- package/dist/kit/figure/figure.d.mts +22 -18
- package/dist/kit/figure/figure.mjs +13 -10
- package/dist/kit/figure/format.d.mts +2 -30
- package/dist/kit/figure/format.mjs +2 -62
- package/dist/kit/figure/grip-motion.d.mts +103 -0
- package/dist/kit/figure/grip-motion.mjs +283 -0
- package/dist/kit/figure/grip-pointer.d.mts +54 -0
- package/dist/kit/figure/grip-pointer.mjs +108 -0
- package/dist/kit/figure/grip.d.mts +35 -6
- package/dist/kit/figure/grip.mjs +347 -131
- package/dist/kit/figure/index.d.mts +10 -4
- package/dist/kit/figure/index.mjs +9 -3
- package/dist/kit/figure/key-scale.mjs +73 -17
- package/dist/kit/figure/legend.mjs +12 -5
- package/dist/kit/figure/lines.d.mts +24 -0
- package/dist/kit/figure/lines.mjs +16 -0
- package/dist/kit/figure/math-text.mjs +1 -1
- package/dist/kit/figure/plot.d.mts +5 -1
- package/dist/kit/figure/plot.mjs +6 -5
- package/dist/kit/figure/reading.d.mts +120 -0
- package/dist/kit/figure/reading.mjs +437 -0
- package/dist/kit/figure/run-key.mjs +2 -4
- package/dist/kit/figure/text-metrics.d.mts +92 -0
- package/dist/kit/figure/text-metrics.data.mjs +654 -0
- package/dist/kit/figure/text-metrics.mjs +125 -0
- package/dist/kit/figure/text.d.mts +0 -13
- package/dist/kit/figure/text.mjs +19 -36
- package/dist/kit/figure/value-control.d.mts +0 -1
- package/dist/kit/figure/value-control.mjs +30 -26
- package/dist/kit/figure-drag.mjs +53 -40
- package/dist/kit/finance-viz/index.mjs +1 -1
- package/dist/kit/finance-viz/plot-chart.mjs +13 -7
- package/dist/kit/finance-viz/tradeoff-curve.mjs +10 -7
- package/dist/kit/frame.mjs +1 -1
- package/dist/kit/freq-tree.mjs +0 -1
- package/dist/kit/gameshow.mjs +17 -6
- package/dist/kit/geometry/bound-figure.mjs +7 -6
- package/dist/kit/geometry/compass-construction-figure.d.mts +0 -1
- package/dist/kit/geometry/compass-construction-figure.mjs +4 -4
- package/dist/kit/geometry/cuboid-body.mjs +1 -1
- package/dist/kit/geometry/cuboid-mirror-figure.d.mts +0 -1
- package/dist/kit/geometry/cuboid-mirror-figure.mjs +2 -2
- package/dist/kit/geometry/cuboid-planes-figure.d.mts +0 -1
- package/dist/kit/geometry/cuboid-planes-figure.mjs +19 -6
- package/dist/kit/geometry/folding-net-figure.d.mts +0 -1
- package/dist/kit/geometry/folding-net-figure.mjs +3 -3
- package/dist/kit/geometry/instrument-figure.d.mts +0 -1
- package/dist/kit/geometry/instrument-figure.mjs +21 -5
- package/dist/kit/geometry/projected-solid-body.mjs +2 -2
- package/dist/kit/geometry/pyramid-mirror-figure.d.mts +0 -1
- package/dist/kit/geometry/pyramid-mirror-figure.mjs +3 -3
- package/dist/kit/geometry/solid-rotation-figure.d.mts +0 -1
- package/dist/kit/geometry/solid-rotation-figure.mjs +3 -3
- package/dist/kit/gravitation/section.mjs +2 -2
- package/dist/kit/index.d.mts +45 -36
- package/dist/kit/index.mjs +47 -38
- package/dist/kit/instruments.mjs +185 -143
- package/dist/kit/language/speaker-glyph.mjs +0 -1
- package/dist/kit/lesson-questions.mjs +24 -3
- package/dist/kit/logic-gates/display.mjs +0 -1
- package/dist/kit/logic-gates/gate.mjs +7 -4
- package/dist/kit/logic-gates/register.mjs +1 -3
- package/dist/kit/magnetism/bench.mjs +1 -7
- package/dist/kit/magnetism/fleming-hand.mjs +374 -0
- package/dist/kit/magnetism/glyphs.d.mts +2 -7
- package/dist/kit/magnetism/glyphs.mjs +82 -68
- package/dist/kit/magnetism/index.d.mts +2 -2
- package/dist/kit/magnetism/index.mjs +1 -1
- package/dist/kit/magnetism/machine.d.mts +17 -5
- package/dist/kit/magnetism/machine.mjs +123 -57
- package/dist/kit/math/algebra-area-tiles.d.mts +7 -1
- package/dist/kit/math/algebra-area-tiles.mjs +113 -16
- package/dist/kit/math/algebra-balance.d.mts +0 -1
- package/dist/kit/math/algebra-balance.mjs +165 -152
- package/dist/kit/math/algebra-elimination-board.d.mts +0 -1
- package/dist/kit/math/algebra-elimination-board.mjs +0 -1
- package/dist/kit/math/index.d.mts +2 -1
- package/dist/kit/math/index.mjs +2 -1
- package/dist/kit/math/math-rail.mjs +2 -1
- package/dist/kit/math/square-of-sum-grid.d.mts +26 -0
- package/dist/kit/math/square-of-sum-grid.mjs +167 -0
- package/dist/kit/molecules.mjs +0 -1
- package/dist/kit/movable-dot.d.mts +2 -2
- package/dist/kit/movable-dot.mjs +2 -2
- package/dist/kit/networking/accelerator-card.mjs +1 -3
- package/dist/kit/networking/access-glyphs.mjs +0 -2
- package/dist/{domains/networking/_shared → kit/networking}/decision-scene.d.mts +1 -1
- package/dist/{domains/networking/_shared → kit/networking}/decision-scene.mjs +10 -8
- package/dist/kit/networking/failure-domain-map.mjs +0 -2
- package/dist/kit/networking/index.mjs +2 -2
- package/dist/kit/networking/infrastructure-glyphs.mjs +0 -2
- package/dist/kit/networking/memory-budget-strip.mjs +1 -3
- package/dist/kit/networking/primitives.d.mts +1 -2
- package/dist/kit/networking/primitives.mjs +3 -4
- package/dist/kit/networking/prompt-token-strip.mjs +1 -5
- package/dist/kit/networking/release-glyphs.mjs +0 -1
- package/dist/kit/networking/replica-fleet.d.mts +0 -1
- package/dist/kit/networking/replica-fleet.mjs +0 -1
- package/dist/kit/networking/request-outcome-strip.mjs +0 -1
- package/dist/kit/networking/scene/buffer.mjs +2 -6
- package/dist/kit/networking/scene/channel.d.mts +0 -1
- package/dist/kit/networking/scene/channel.mjs +2 -4
- package/dist/kit/networking/scene/control.d.mts +0 -1
- package/dist/kit/networking/scene/control.mjs +8 -8
- package/dist/kit/networking/scene/index.mjs +2 -2
- package/dist/kit/networking/scene/media.mjs +1 -3
- package/dist/kit/networking/scene/objects.mjs +16 -19
- package/dist/kit/networking/scene/observability.mjs +0 -1
- package/dist/kit/networking/scene/route.mjs +1 -3
- package/dist/kit/networking/scene/switch.mjs +3 -3
- package/dist/kit/networking/secret-glyphs.mjs +0 -1
- package/dist/kit/networking/signal-glyphs.mjs +1 -3
- package/dist/kit/networking/vpc-route-glyph.mjs +0 -2
- package/dist/kit/number-response.mjs +1 -1
- package/dist/kit/plane-grip.d.mts +1 -1
- package/dist/kit/plane-grip.mjs +2 -1
- package/dist/kit/play.mjs +1 -1
- package/dist/kit/point-binding.d.mts +1 -1
- package/dist/kit/predict.d.mts +1 -1
- package/dist/kit/predict.mjs +2 -1
- package/dist/kit/probability.mjs +0 -1
- package/dist/kit/quantum/bloch-sphere.mjs +0 -1
- package/dist/kit/reaction.mjs +0 -1
- package/dist/kit/reasoning/claim-card.mjs +1 -3
- package/dist/kit/receipt.mjs +2 -2
- package/dist/kit/rich.mjs +1 -1
- package/dist/kit/rule.d.mts +2 -1
- package/dist/kit/rule.mjs +22 -13
- package/dist/kit/scale.mjs +17 -16
- package/dist/kit/scene/compare.mjs +210 -0
- package/dist/kit/scene/context.d.mts +1 -1
- package/dist/kit/scene/cutaway.mjs +202 -0
- package/dist/kit/scene/explode.mjs +235 -0
- package/dist/kit/scene/graph.d.mts +14 -2
- package/dist/kit/scene/graph.mjs +100 -11
- package/dist/kit/scene/index.mjs +16 -10
- package/dist/kit/scene/loupe.mjs +252 -0
- package/dist/kit/scene/materials.d.mts +132 -0
- package/dist/kit/scene/materials.mjs +247 -0
- package/dist/kit/scene/objects/balance.mjs +3 -4
- package/dist/kit/scene/objects/bench.mjs +11 -13
- package/dist/kit/scene/objects/block.d.mts +22 -36
- package/dist/kit/scene/objects/block.mjs +394 -118
- package/dist/kit/scene/objects/car.mjs +4 -4
- package/dist/kit/scene/objects/charges.mjs +1 -2
- package/dist/kit/scene/objects/clock.mjs +2 -3
- package/dist/kit/scene/objects/dial.mjs +22 -29
- package/dist/kit/scene/objects/energy.mjs +4 -5
- package/dist/kit/scene/objects/fan.mjs +1 -2
- package/dist/kit/scene/objects/forces.d.mts +5 -2
- package/dist/kit/scene/objects/forces.mjs +4 -4
- package/dist/kit/scene/objects/gauges.mjs +2 -15
- package/dist/kit/scene/objects/instruments.mjs +10 -9
- package/dist/kit/scene/objects/knob.mjs +146 -0
- package/dist/kit/scene/objects/lift.mjs +0 -2
- package/dist/kit/scene/objects/light-clock.mjs +4 -6
- package/dist/kit/scene/objects/mechanics.mjs +21 -30
- package/dist/kit/scene/objects/mechanisms.mjs +9 -9
- package/dist/kit/scene/objects/observer.mjs +1 -2
- package/dist/kit/scene/objects/optical-bench.mjs +8 -5
- package/dist/kit/scene/objects/optical-signal.mjs +0 -1
- package/dist/kit/scene/objects/parachute.mjs +1 -2
- package/dist/kit/scene/objects/pendulum.mjs +6 -5
- package/dist/kit/scene/objects/person.mjs +1 -2
- package/dist/kit/scene/objects/piston.mjs +3 -4
- package/dist/kit/scene/objects/projectiles.mjs +4 -5
- package/dist/kit/scene/objects/replay.mjs +0 -1
- package/dist/kit/scene/objects/rocket.mjs +1 -2
- package/dist/kit/scene/objects/roller.mjs +1 -2
- package/dist/kit/scene/objects/signed-bars.mjs +0 -1
- package/dist/kit/scene/objects/spacecraft.mjs +0 -1
- package/dist/kit/scene/objects/spectrum.mjs +0 -1
- package/dist/kit/scene/objects/stand.mjs +4 -4
- package/dist/kit/scene/objects/strike.mjs +1 -2
- package/dist/kit/scene/objects/suspension.mjs +4 -5
- package/dist/kit/scene/objects/tank.mjs +0 -1
- package/dist/kit/scene/objects/thermometer.mjs +1 -2
- package/dist/kit/scene/objects/top-vehicle.mjs +1 -2
- package/dist/kit/scene/objects/train.mjs +3 -4
- package/dist/kit/scene/objects/waves.mjs +73 -18
- package/dist/kit/scene/river.mjs +102 -93
- package/dist/kit/scene/scene.d.mts +0 -1
- package/dist/kit/scene/scene.mjs +25 -29
- package/dist/kit/scene/scenery.d.mts +0 -7
- package/dist/kit/scene/scenery.mjs +12 -17
- package/dist/kit/scene/tokens.d.mts +66 -8
- package/dist/kit/scene/tokens.mjs +84 -33
- package/dist/kit/scene/vectors.mjs +0 -1
- package/dist/kit/scene/workbench.d.mts +2 -2
- package/dist/kit/scene/workbench.mjs +5 -5
- package/dist/kit/scene-settings.d.mts +3 -1
- package/dist/kit/scene-settings.mjs +24 -16
- package/dist/kit/scenes.d.mts +7 -1
- package/dist/kit/scenes.mjs +53 -26
- package/dist/kit/shell/context.d.mts +15 -1
- package/dist/kit/shell/context.mjs +40 -8
- package/dist/kit/shell/earned.mjs +13 -11
- package/dist/kit/shell/index.d.mts +3 -3
- package/dist/kit/shell/index.mjs +4 -4
- package/dist/kit/shell/model-entry.mjs +38 -20
- package/dist/kit/shell/model-note.mjs +52 -0
- package/dist/kit/shell/note.mjs +3 -1
- package/dist/kit/shell/parts.d.mts +3 -2
- package/dist/kit/shell/parts.mjs +50 -31
- package/dist/kit/shell/provider.d.mts +10 -1
- package/dist/kit/shell/provider.mjs +52 -22
- package/dist/kit/shell/question-evidence.mjs +6 -5
- package/dist/kit/shell/scene-control.mjs +3 -3
- package/dist/kit/shell/select-choices.mjs +7 -5
- package/dist/kit/simulation/clock.mjs +3 -3
- package/dist/kit/simulation/use-simulation.mjs +3 -3
- package/dist/kit/space/bodies.mjs +2 -2
- package/dist/kit/ticks.mjs +13 -4
- package/dist/kit/transport.d.mts +10 -1
- package/dist/kit/transport.mjs +21 -7
- package/dist/kit/turn-surface.mjs +31 -24
- package/dist/kit/vessel.mjs +0 -1
- package/dist/kit/world/runtime.mjs +3 -3
- package/dist/kit/world/world-scene.mjs +2 -2
- package/dist/lab-def/define-lab.d.mts +6 -3
- package/dist/lab-def/lab-props.mjs +2 -1
- package/dist/lab-def/lab-runtime.d.mts +3 -1
- package/dist/lab-def/lab-runtime.mjs +158 -67
- package/dist/lab-def/runtime-load.mjs +35 -0
- package/dist/lab-def/to-block.mjs +6 -1
- package/dist/logic/LogicScene.mjs +16 -5
- package/dist/logic/index.d.mts +1 -2
- package/dist/logic/index.mjs +1 -2
- package/dist/logic/registry.d.mts +5 -0
- package/dist/logic/registry.mjs +33 -2
- package/dist/logic/runtime/index.d.mts +1 -2
- package/dist/logic/runtime/index.mjs +1 -2
- package/dist/math/answer-accuracy/core.mjs +1 -1
- package/dist/math/index.d.mts +2 -1
- package/dist/math/interactive/preset.d.mts +1 -1
- package/dist/math/interactive/preset.mjs +46 -24
- package/dist/math/lines-in-space/index.mjs +1 -1
- package/dist/math/mystery-bucket/asset.d.mts +3 -1
- package/dist/math/mystery-bucket/asset.mjs +37 -12
- package/dist/math/mystery-bucket/preset.d.mts +4 -4
- package/dist/math/mystery-bucket/preset.mjs +4 -5
- package/dist/ml/worlds/synthetic.mjs +1 -1
- package/dist/model/controls.d.mts +4 -0
- package/dist/model/define.d.mts +14 -0
- package/dist/model/define.mjs +20 -1
- package/dist/model/format.d.mts +33 -0
- package/dist/model/format.mjs +76 -0
- package/dist/model/index.d.mts +4 -2
- package/dist/model/index.mjs +3 -1
- package/dist/model/model-note.d.mts +16 -0
- package/dist/model/model-note.mjs +34 -0
- package/dist/model/money.d.mts +36 -0
- package/dist/model/money.mjs +45 -0
- package/dist/model/resolved-value.mjs +16 -0
- package/dist/model/session.d.mts +3 -0
- package/dist/model/session.mjs +7 -1
- package/dist/networking/CellularScene.mjs +4 -3
- package/dist/physics/constants.d.mts +12 -11
- package/dist/physics/constants.mjs +27 -26
- package/dist/physics/exponential/asset.mjs +7 -2
- package/dist/physics/exponential/preset.mjs +60 -58
- package/dist/physics/mechanics/presentation.mjs +8 -9
- package/dist/physics/modern/shared/experiment-transport.mjs +3 -3
- package/dist/physics/optics/eye-correction.mjs +2 -2
- package/dist/physics/optics/imaging-world-scene.mjs +18 -14
- package/dist/physics/optics/light-path-world-scene.mjs +4 -4
- package/dist/physics/waves/wave-bench-scene.mjs +2 -2
- package/dist/physics/waves/wave-bench-skins.mjs +11 -13
- package/dist/registry/generated/packs/accounting.mjs +56 -0
- package/dist/registry/generated/packs/chem.mjs +40 -0
- package/dist/registry/generated/packs/circuits.mjs +8 -0
- package/dist/registry/generated/packs/geometry.mjs +9 -0
- package/dist/registry/generated/packs/ict.mjs +24 -0
- package/dist/registry/generated/packs/math.mjs +20 -1
- package/dist/registry/pack.d.mts +8 -0
- package/dist/registry/registry.d.mts +25 -1
- package/dist/registry/registry.mjs +22 -1
- package/dist/runtime/index.d.mts +2 -2
- package/dist/runtime/index.mjs +2 -2
- package/dist/runtime/lab-goals.mjs +8 -3
- package/dist/runtime/lab-keys.mjs +13 -15
- package/dist/runtime/lab-viewport.mjs +29 -0
- package/dist/runtime/use-control.d.mts +2 -2
- package/dist/runtime/use-control.mjs +7 -5
- package/dist/runtime/use-lab-view.d.mts +2 -0
- package/dist/runtime/use-lab-view.mjs +1 -0
- package/dist/runtime/use-lab.d.mts +6 -0
- package/dist/runtime/use-lab.mjs +12 -6
- package/dist/runtime/use-reveal.mjs +2 -2
- package/dist/runtime/visibility.d.mts +32 -0
- package/dist/runtime/visibility.mjs +80 -0
- package/dist/schemas/activity-authoring.d.mts +78 -4
- package/dist/schemas/activity-authoring.mjs +26 -0
- package/dist/schemas/index.d.mts +4 -4
- package/dist/schemas/lesson-questions.d.mts +22 -0
- package/dist/schemas/lesson-questions.mjs +28 -10
- package/dist/shared/fields.mjs +21 -1
- package/dist/styles/manifest.mjs +714 -695
- package/dist/testing/conformance.d.mts +8 -2
- package/dist/testing/conformance.mjs +12 -4
- package/dist/three/chemistry/atomic-orbital.d.mts +3 -6
- package/dist/three/chemistry/atomic-orbital.mjs +5 -6
- package/dist/three/chemistry/crystal-lattice.d.mts +2 -1
- package/dist/three/chemistry/crystal-lattice.mjs +4 -1
- package/dist/three/chemistry/molecular-geometry.d.mts +2 -1
- package/dist/three/chemistry/molecular-geometry.mjs +4 -1
- package/dist/three/chemistry/orbital-overlap.d.mts +2 -1
- package/dist/three/chemistry/orbital-overlap.mjs +4 -1
- package/dist/three/index.d.mts +2 -1
- package/dist/three/index.mjs +2 -1
- package/dist/three/math/solids-of-revolution.d.mts +3 -7
- package/dist/three/math/solids-of-revolution.mjs +5 -7
- package/dist/three/primitives.d.mts +11 -6
- package/dist/three/primitives.mjs +21 -24
- package/dist/three/studio.d.mts +102 -0
- package/dist/three/studio.mjs +263 -0
- package/dist/three/surface.mjs +14 -4
- package/package.json +105 -29
- package/styles/core/components.css +3 -7
- package/styles/core/figure-interaction.css +10 -24
- package/styles/core/interaction-scenes.css +10 -1
- package/styles/core/primitives.css +1 -1
- package/styles/core/runtime.css +8 -8
- package/styles/core/shared.css +7 -10
- package/styles/core/workbenches.css +11 -6
- package/styles/domains/commerce.css +3 -0
- package/styles/domains/parts/commerce-books.css +443 -0
- package/styles/domains/parts/commerce-costing.css +341 -0
- package/styles/domains/parts/commerce-foundation.css +517 -21
- package/styles/domains/parts/commerce-household.css +379 -0
- package/styles/domains/parts/commerce-statements.css +293 -0
- package/styles/domains/parts/discrete-6.css +7 -0
- package/styles/domains/parts/exam-practice.css +2 -1
- package/styles/domains/parts/ict.css +235 -0
- package/styles/domains/parts/math-1.css +139 -10
- package/styles/domains/parts/math-7.css +35 -0
- package/styles/domains.css +3 -0
- package/styles/figure.css +64 -48
- package/styles/runtime.css +5 -3
- package/styles/scene.css +324 -100
- package/styles/shell.css +61 -0
- package/styles.css +3 -3
- package/tailwind.css +12 -6
- package/dist/algorithms/ListLab.d.mts +0 -54
- package/dist/algorithms/ListLab.mjs +0 -692
- package/dist/algorithms/TraceTransport.d.mts +0 -11
- package/dist/algorithms/TraceTransport.mjs +0 -165
- package/dist/blocks/lab-block.mjs +0 -87
- package/dist/commerce/accounting/books/index.mjs +0 -8
- package/dist/core/numeric.d.mts +0 -19
- package/dist/core/numeric.mjs +0 -36
- package/dist/core/rng.d.mts +0 -2
- package/dist/core/rng.mjs +0 -3
- package/dist/core/timeline.d.mts +0 -32
- package/dist/core/timeline.mjs +0 -80
- package/dist/discrete/core/combinatorics.d.mts +0 -45
- package/dist/discrete/core/combinatorics.mjs +0 -100
- package/dist/discrete/core/probability.d.mts +0 -28
- package/dist/discrete/core/probability.mjs +0 -43
- package/dist/discrete/core/rng.d.mts +0 -2
- package/dist/discrete/core/rng.mjs +0 -3
- package/dist/domains/discrete/venn/inclusionExclusion.d.mts +0 -17
- package/dist/domains/discrete/venn/inclusionExclusion.mjs +0 -30
- package/dist/kit/counting/index.mjs +0 -6
- package/dist/kit/reasoning/index.mjs +0 -3
- package/dist/logic/gates.d.mts +0 -4
- package/dist/logic/gates.mjs +0 -32
- package/dist/statistics/core/descriptive.d.mts +0 -34
- package/dist/statistics/core/descriptive.mjs +0 -65
- package/dist/statistics/core/index.d.mts +0 -3
- package/dist/statistics/core/index.mjs +0 -4
- package/dist/statistics/core/normal.d.mts +0 -20
- package/dist/statistics/core/normal.mjs +0 -37
- package/dist/statistics/index.d.mts +0 -4
- package/dist/statistics/index.mjs +0 -5
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Dispatch, SetStateAction } from "react";
|
|
2
|
-
//#region src/algorithms/TraceTransport.d.ts
|
|
3
|
-
export interface TraceTransportProps {
|
|
4
|
-
step: number;
|
|
5
|
-
count: number;
|
|
6
|
-
message: string;
|
|
7
|
-
setStep: Dispatch<SetStateAction<number>>;
|
|
8
|
-
canAdvance?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare function TraceTransport({ step, count, message, setStep, canAdvance }: TraceTransportProps): import("react").JSX.Element;
|
|
11
|
-
//#endregion
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { ActionButton, IconButton, Slider } from "../kit/controls.mjs";
|
|
4
|
-
import { Field } from "../kit/frame.mjs";
|
|
5
|
-
import { useReducedMotion } from "../kit/anim.mjs";
|
|
6
|
-
import { useEffect, useRef, useState } from "react";
|
|
7
|
-
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import { ChevronLeft, ChevronRight, Gauge, Pause, Play } from "lucide-react";
|
|
9
|
-
|
|
10
|
-
//#region src/algorithms/TraceTransport.tsx
|
|
11
|
-
const SPEEDS = [
|
|
12
|
-
1,
|
|
13
|
-
1.5,
|
|
14
|
-
2
|
|
15
|
-
];
|
|
16
|
-
function TraceTransport({ step, count, message, setStep, canAdvance = true }) {
|
|
17
|
-
const [playing, setPlaying] = useState(false);
|
|
18
|
-
const [speedIndex, setSpeedIndex] = useState(0);
|
|
19
|
-
const reduceMotion = useReducedMotion();
|
|
20
|
-
const speed = SPEEDS[speedIndex];
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
if (!playing || !canAdvance || reduceMotion) return;
|
|
23
|
-
if (step >= count - 1) {
|
|
24
|
-
setPlaying(false);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const timer = window.setTimeout(() => setStep((value) => Math.min(count - 1, value + 1)), 900 / speed);
|
|
28
|
-
return () => window.clearTimeout(timer);
|
|
29
|
-
}, [
|
|
30
|
-
canAdvance,
|
|
31
|
-
count,
|
|
32
|
-
playing,
|
|
33
|
-
reduceMotion,
|
|
34
|
-
setStep,
|
|
35
|
-
speed,
|
|
36
|
-
step
|
|
37
|
-
]);
|
|
38
|
-
const togglePlayback = () => {
|
|
39
|
-
if (step >= count - 1) setStep(0);
|
|
40
|
-
setPlaying((value) => !value);
|
|
41
|
-
};
|
|
42
|
-
const anchor = useRef(null);
|
|
43
|
-
const latest = useRef({
|
|
44
|
-
step,
|
|
45
|
-
count,
|
|
46
|
-
canAdvance,
|
|
47
|
-
reduceMotion
|
|
48
|
-
});
|
|
49
|
-
latest.current = {
|
|
50
|
-
step,
|
|
51
|
-
count,
|
|
52
|
-
canAdvance,
|
|
53
|
-
reduceMotion
|
|
54
|
-
};
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
const onKey = (event) => {
|
|
57
|
-
const activity = anchor.current?.closest(".lab-activity");
|
|
58
|
-
if (!activity || !activity.contains(document.activeElement)) return;
|
|
59
|
-
const target = event.target;
|
|
60
|
-
if (target && (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable)) return;
|
|
61
|
-
const state = latest.current;
|
|
62
|
-
switch (event.key) {
|
|
63
|
-
case "ArrowRight":
|
|
64
|
-
if (!state.canAdvance || state.step >= state.count - 1) return;
|
|
65
|
-
event.preventDefault();
|
|
66
|
-
setPlaying(false);
|
|
67
|
-
setStep((value) => Math.min(state.count - 1, value + 1));
|
|
68
|
-
break;
|
|
69
|
-
case "ArrowLeft":
|
|
70
|
-
if (state.step <= 0) return;
|
|
71
|
-
event.preventDefault();
|
|
72
|
-
setPlaying(false);
|
|
73
|
-
setStep((value) => Math.max(0, value - 1));
|
|
74
|
-
break;
|
|
75
|
-
case " ":
|
|
76
|
-
case "k":
|
|
77
|
-
if (!state.canAdvance || state.reduceMotion) return;
|
|
78
|
-
event.preventDefault();
|
|
79
|
-
if (state.step >= state.count - 1) setStep(0);
|
|
80
|
-
setPlaying((value) => !value);
|
|
81
|
-
break;
|
|
82
|
-
case "ArrowUp":
|
|
83
|
-
case "+":
|
|
84
|
-
case "=":
|
|
85
|
-
event.preventDefault();
|
|
86
|
-
setSpeedIndex((value) => Math.min(SPEEDS.length - 1, value + 1));
|
|
87
|
-
break;
|
|
88
|
-
case "ArrowDown":
|
|
89
|
-
case "-":
|
|
90
|
-
case "_":
|
|
91
|
-
event.preventDefault();
|
|
92
|
-
setSpeedIndex((value) => Math.max(0, value - 1));
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
window.addEventListener("keydown", onKey);
|
|
97
|
-
return () => window.removeEventListener("keydown", onKey);
|
|
98
|
-
}, [setStep]);
|
|
99
|
-
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
100
|
-
/* @__PURE__ */ jsx("span", {
|
|
101
|
-
ref: anchor,
|
|
102
|
-
hidden: true
|
|
103
|
-
}),
|
|
104
|
-
/* @__PURE__ */ jsx(IconButton, {
|
|
105
|
-
label: "Previous step",
|
|
106
|
-
title: "Previous step (←)",
|
|
107
|
-
onClick: () => {
|
|
108
|
-
setPlaying(false);
|
|
109
|
-
setStep((value) => Math.max(0, value - 1));
|
|
110
|
-
},
|
|
111
|
-
disabled: step === 0,
|
|
112
|
-
children: /* @__PURE__ */ jsx(ChevronLeft, { "aria-hidden": "true" })
|
|
113
|
-
}),
|
|
114
|
-
/* @__PURE__ */ jsx(Field, {
|
|
115
|
-
label: "step",
|
|
116
|
-
value: `${step + 1}/${count}`,
|
|
117
|
-
children: canAdvance ? /* @__PURE__ */ jsx(Slider, {
|
|
118
|
-
min: 1,
|
|
119
|
-
max: count,
|
|
120
|
-
step: 1,
|
|
121
|
-
value: step + 1,
|
|
122
|
-
onChange: (value) => {
|
|
123
|
-
setPlaying(false);
|
|
124
|
-
setStep(value - 1);
|
|
125
|
-
},
|
|
126
|
-
ariaLabel: `Choose step, currently ${step + 1} of ${count}`
|
|
127
|
-
}) : /* @__PURE__ */ jsx("progress", {
|
|
128
|
-
value: step + 1,
|
|
129
|
-
max: count,
|
|
130
|
-
"aria-label": `Step ${step + 1} of ${count}`
|
|
131
|
-
})
|
|
132
|
-
}),
|
|
133
|
-
/* @__PURE__ */ jsx(IconButton, {
|
|
134
|
-
label: playing ? "Pause trace" : step >= count - 1 ? "Replay trace" : "Play trace",
|
|
135
|
-
title: playing ? "Pause (space)" : step >= count - 1 ? "Replay (space)" : "Play (space)",
|
|
136
|
-
onClick: togglePlayback,
|
|
137
|
-
disabled: !canAdvance || reduceMotion,
|
|
138
|
-
children: playing ? /* @__PURE__ */ jsx(Pause, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(Play, { "aria-hidden": "true" })
|
|
139
|
-
}),
|
|
140
|
-
/* @__PURE__ */ jsxs(ActionButton, {
|
|
141
|
-
"aria-label": `Playback speed ${speed} times; activate to change`,
|
|
142
|
-
title: `Playback speed ${speed}× (↑ / ↓)`,
|
|
143
|
-
onClick: () => setSpeedIndex((value) => (value + 1) % SPEEDS.length),
|
|
144
|
-
children: [/* @__PURE__ */ jsx(Gauge, { "aria-hidden": "true" }), /* @__PURE__ */ jsxs("span", { children: [speed, "×"] })]
|
|
145
|
-
}),
|
|
146
|
-
/* @__PURE__ */ jsxs(ActionButton, {
|
|
147
|
-
"aria-label": "Next step",
|
|
148
|
-
title: "Next step (→)",
|
|
149
|
-
onClick: () => {
|
|
150
|
-
setPlaying(false);
|
|
151
|
-
setStep((value) => Math.min(count - 1, value + 1));
|
|
152
|
-
},
|
|
153
|
-
disabled: step === count - 1 || !canAdvance,
|
|
154
|
-
children: [/* @__PURE__ */ jsx("span", { children: "Next step" }), /* @__PURE__ */ jsx(ChevronRight, { "aria-hidden": "true" })]
|
|
155
|
-
}),
|
|
156
|
-
/* @__PURE__ */ jsx("span", {
|
|
157
|
-
className: "lab-sr-only",
|
|
158
|
-
"aria-live": "polite",
|
|
159
|
-
children: `Step ${step + 1} of ${count}: ${message}`
|
|
160
|
-
})
|
|
161
|
-
] });
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
//#endregion
|
|
165
|
-
export { TraceTransport };
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { LabConfig } from "./lab-config.mjs";
|
|
4
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { defineBlock } from "@classytic/cms-ui/contract";
|
|
7
|
-
|
|
8
|
-
//#region src/blocks/lab-block.tsx
|
|
9
|
-
/**
|
|
10
|
-
* labBlock, wrap a plain lab component into a CMS block "on call", with ZERO
|
|
11
|
-
* per-lab boilerplate. The host passes the lab component + its zod prop-schema; this
|
|
12
|
-
* returns a `defineBlock` spec whose Component:
|
|
13
|
-
* • in render mode → spreads the block attributes straight into the lab, and
|
|
14
|
-
* • in editing mode → shows the generic, zod-driven `LabConfig` panel above it
|
|
15
|
-
* (one field per prop, derived from the schema, no hand-written ConfigPanel).
|
|
16
|
-
* The MDX tag is auto-derived (PascalCase of the key) by `defineBlock`.
|
|
17
|
-
*
|
|
18
|
-
* This is the ONE shared factory for every domain (`./physics`, `./chem`, …), a
|
|
19
|
-
* domain file just declares `labBlock({ key, label, description, schema, Component })`
|
|
20
|
-
* per lab instead of re-implementing the defineBlock + attribute-spread + editor
|
|
21
|
-
* wiring each time. `commonLabProps` are the title/prompt/objectives/hints/controlId
|
|
22
|
-
* fields every lab accepts; spread them into a lab's schema with `...commonLabProps`.
|
|
23
|
-
*/
|
|
24
|
-
/** The authoring props every lab accepts. Spread into a lab schema: `{ ...commonLabProps }`. */
|
|
25
|
-
const commonLabProps = {
|
|
26
|
-
title: z.string().optional(),
|
|
27
|
-
prompt: z.string().optional(),
|
|
28
|
-
mission: z.string().optional().describe("the learner-facing mission; overrides prompt when set"),
|
|
29
|
-
objectives: z.array(z.string()).optional(),
|
|
30
|
-
hints: z.array(z.string()).optional(),
|
|
31
|
-
controlId: z.string().optional(),
|
|
32
|
-
/**
|
|
33
|
-
* Narrow a multi-mode lab to the one setup this lesson is about: hide or lock named controls.
|
|
34
|
-
* A teacher covering Boyle's law locks temperature so the class varies pressure and volume and
|
|
35
|
-
* nothing else, out of the same lab that elsewhere teaches all three.
|
|
36
|
-
*
|
|
37
|
-
* Applied by LabRuntime around every lab, so it works whether or not the component declares the
|
|
38
|
-
* prop. Before it lived here, 18 of 296 labs could be focused this way.
|
|
39
|
-
*/
|
|
40
|
-
controlConfig: z.object({
|
|
41
|
-
hide: z.array(z.string()).optional(),
|
|
42
|
-
lock: z.array(z.string()).optional()
|
|
43
|
-
}).optional().describe("hide or lock named controls to focus the lab on one idea")
|
|
44
|
-
};
|
|
45
|
-
/** PascalCase MDX tag from a kebab key, mirrors `defineBlock`'s default, for building a components map. */
|
|
46
|
-
const pascalTag = (key) => key.split("-").map((s) => s.charAt(0).toUpperCase() + s.slice(1)).join("");
|
|
47
|
-
function labBlock({ key, label, description, schema, Component, tag, omit }) {
|
|
48
|
-
const block = defineBlock({
|
|
49
|
-
key,
|
|
50
|
-
void: true,
|
|
51
|
-
...tag ? { tag } : {},
|
|
52
|
-
label,
|
|
53
|
-
description,
|
|
54
|
-
category: "interactive",
|
|
55
|
-
schema,
|
|
56
|
-
Component: ({ attributes, mode, updateAttributes }) => {
|
|
57
|
-
const widget = Component(attributes);
|
|
58
|
-
if (mode !== "editing" || !updateAttributes) return widget;
|
|
59
|
-
return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(LabConfig, {
|
|
60
|
-
schema,
|
|
61
|
-
value: attributes,
|
|
62
|
-
onChange: updateAttributes,
|
|
63
|
-
omit
|
|
64
|
-
}), widget] });
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return Object.assign(block, {
|
|
68
|
-
tag: tag ?? pascalTag(key),
|
|
69
|
-
lab: Component
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Derive the tag→component MDX render map from a domain's blocks, ONE source of truth.
|
|
74
|
-
* Only `labBlock`-created blocks carry `.lab`; bespoke `defineBlock` blocks (custom editor
|
|
75
|
-
* UI) are merged into the map by hand alongside this.
|
|
76
|
-
*/
|
|
77
|
-
function buildComponents(blocks) {
|
|
78
|
-
const map = {};
|
|
79
|
-
for (const b of blocks) {
|
|
80
|
-
const lb = b;
|
|
81
|
-
if (typeof lb.tag === "string" && typeof lb.lab === "function") map[lb.tag] = lb.lab;
|
|
82
|
-
}
|
|
83
|
-
return map;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
//#endregion
|
|
87
|
-
export { commonLabProps, pascalTag };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { STANDARD_CHART, accountMap, bookAccountSchema, describeKind, kindOf, normalSide, opposite, resolveChart } from "./chart.mjs";
|
|
2
|
-
import { explainLine, fmt, gradeEntry, isBalanced, lineDirection, normalizeLines, sideTotal } from "./entry.mjs";
|
|
3
|
-
import { balanceOff, postBooks, runningBalance } from "./ledger.mjs";
|
|
4
|
-
import { entriesBefore, entriesThrough, findEpisode, getBooksWorld, registerBooksWorld, viewBooks } from "./world.mjs";
|
|
5
|
-
import { KALAM_WORLD } from "./worlds/kalam.mjs";
|
|
6
|
-
import { ERROR_INFO, SUSPENSE_ACCOUNT, applyError, correctingEntry, transpose } from "../../../domains/accounting/ledger-detective/books/errors.mjs";
|
|
7
|
-
|
|
8
|
-
export { ERROR_INFO, KALAM_WORLD, STANDARD_CHART, SUSPENSE_ACCOUNT, accountMap, applyError, balanceOff, bookAccountSchema, correctingEntry, describeKind, entriesBefore, entriesThrough, explainLine, findEpisode, fmt, getBooksWorld, gradeEntry, isBalanced, kindOf, lineDirection, normalSide, normalizeLines, opposite, postBooks, registerBooksWorld, resolveChart, runningBalance, sideTotal, transpose, viewBooks };
|
package/dist/core/numeric.d.mts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
//#region src/core/numeric.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* numeric, small numerical-calculus helpers, used when an exact symbolic result
|
|
4
|
-
* isn't available (e.g. a function the differentiator doesn't handle) or when a
|
|
5
|
-
* widget just needs a number. Pure, dependency-free.
|
|
6
|
-
*/
|
|
7
|
-
export type RealFn = (x: number) => number;
|
|
8
|
-
/** Numerical derivative via the symmetric difference quotient. */
|
|
9
|
-
export declare function derivativeAt(fn: RealFn, x: number, h?: number): number;
|
|
10
|
-
/** Slope of the secant line through (a, f(a)) and (b, f(b)). */
|
|
11
|
-
export declare function secantSlope(fn: RealFn, a: number, b: number): number;
|
|
12
|
-
/** Sample a function across a range into `{x, y}` points (skips non-finite y is the caller's job). */
|
|
13
|
-
export declare function sampleFunction(fn: RealFn, range: [number, number], samples?: number): {
|
|
14
|
-
x: number;
|
|
15
|
-
y: number;
|
|
16
|
-
}[];
|
|
17
|
-
/** Riemann sum of `fn` over `[a, b]` with `n` subintervals. A teaching estimate. */
|
|
18
|
-
export declare function riemannSum(fn: RealFn, range: [number, number], n: number, mode?: 'left' | 'right' | 'mid'): number;
|
|
19
|
-
//#endregion
|
package/dist/core/numeric.mjs
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
//#region src/core/numeric.ts
|
|
2
|
-
/** Numerical derivative via the symmetric difference quotient. */
|
|
3
|
-
function derivativeAt(fn, x, h = 1e-5) {
|
|
4
|
-
return (fn(x + h) - fn(x - h)) / (2 * h);
|
|
5
|
-
}
|
|
6
|
-
/** Slope of the secant line through (a, f(a)) and (b, f(b)). */
|
|
7
|
-
function secantSlope(fn, a, b) {
|
|
8
|
-
return (fn(b) - fn(a)) / (b - a);
|
|
9
|
-
}
|
|
10
|
-
/** Sample a function across a range into `{x, y}` points (skips non-finite y is the caller's job). */
|
|
11
|
-
function sampleFunction(fn, range, samples = 200) {
|
|
12
|
-
const [min, max] = range;
|
|
13
|
-
const out = [];
|
|
14
|
-
for (let i = 0; i <= samples; i++) {
|
|
15
|
-
const x = min + (max - min) * i / samples;
|
|
16
|
-
out.push({
|
|
17
|
-
x,
|
|
18
|
-
y: fn(x)
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
return out;
|
|
22
|
-
}
|
|
23
|
-
/** Riemann sum of `fn` over `[a, b]` with `n` subintervals. A teaching estimate. */
|
|
24
|
-
function riemannSum(fn, range, n, mode = "mid") {
|
|
25
|
-
const [a, b] = range;
|
|
26
|
-
const dx = (b - a) / n;
|
|
27
|
-
let sum = 0;
|
|
28
|
-
for (let i = 0; i < n; i++) {
|
|
29
|
-
const x = mode === "left" ? a + i * dx : mode === "right" ? a + (i + 1) * dx : a + (i + .5) * dx;
|
|
30
|
-
sum += fn(x);
|
|
31
|
-
}
|
|
32
|
-
return sum * dx;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
//#endregion
|
|
36
|
-
export { derivativeAt, riemannSum, sampleFunction, secantSlope };
|
package/dist/core/rng.d.mts
DELETED
package/dist/core/rng.mjs
DELETED
package/dist/core/timeline.d.mts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Easing } from "./easing.mjs";
|
|
2
|
-
//#region src/core/timeline.d.ts
|
|
3
|
-
export interface TweenOptions {
|
|
4
|
-
from?: number;
|
|
5
|
-
to: number;
|
|
6
|
-
durationMs?: number;
|
|
7
|
-
ease?: Easing;
|
|
8
|
-
autoplay?: boolean;
|
|
9
|
-
loop?: boolean | 'pingpong';
|
|
10
|
-
}
|
|
11
|
-
export interface TweenState {
|
|
12
|
-
value: number;
|
|
13
|
-
progress: number;
|
|
14
|
-
playing: boolean;
|
|
15
|
-
play: () => void;
|
|
16
|
-
pause: () => void;
|
|
17
|
-
reset: () => void;
|
|
18
|
-
}
|
|
19
|
-
export declare function useTween(opts: TweenOptions): TweenState;
|
|
20
|
-
export interface Keyframe {
|
|
21
|
-
/** Normalized time 0..1. */
|
|
22
|
-
at: number;
|
|
23
|
-
value: number;
|
|
24
|
-
ease?: Easing;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Pure multi-stage interpolation: build a `(t in [0,1]) => number` from
|
|
28
|
-
* keyframes. The manim-style way to express richer programmatic animation
|
|
29
|
-
* without a scheduler, drive `t` from `useTween`/`useFrameLoop`.
|
|
30
|
-
*/
|
|
31
|
-
export declare function keyframes(frames: Keyframe[]): (t: number) => number;
|
|
32
|
-
//#endregion
|
package/dist/core/timeline.mjs
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { clamp, lerp } from "./util.mjs";
|
|
4
|
-
import { smooth } from "./easing.mjs";
|
|
5
|
-
import { useRef, useState } from "react";
|
|
6
|
-
import { useFrameLoop } from "@classytic/stage";
|
|
7
|
-
|
|
8
|
-
//#region src/core/timeline.ts
|
|
9
|
-
/**
|
|
10
|
-
* Declarative animation over the injectable clock. `useTween` animates one
|
|
11
|
-
* number from `from`→`to` with an easing; it derives progress from the clock's
|
|
12
|
-
* `timeMs` (not an accumulated counter), so under a fixed driver (e.g. Remotion)
|
|
13
|
-
* it's deterministic and scrubbable. Widgets that prefer to drive frames
|
|
14
|
-
* imperatively use `useFrameLoop` (from `@classytic/stage`) directly.
|
|
15
|
-
*/
|
|
16
|
-
function useTween(opts) {
|
|
17
|
-
const { from = 0, to, durationMs = 800, ease = smooth, autoplay = false, loop = false } = opts;
|
|
18
|
-
const [playing, setPlaying] = useState(autoplay);
|
|
19
|
-
const [progress, setProgress] = useState(autoplay ? 0 : 0);
|
|
20
|
-
const startRef = useRef(null);
|
|
21
|
-
useFrameLoop((f) => {
|
|
22
|
-
if (startRef.current === null) startRef.current = f.timeMs;
|
|
23
|
-
let p = (f.timeMs - startRef.current) / durationMs;
|
|
24
|
-
if (p >= 1) {
|
|
25
|
-
if (loop === true) {
|
|
26
|
-
startRef.current = f.timeMs;
|
|
27
|
-
p = 0;
|
|
28
|
-
} else if (loop === "pingpong") {
|
|
29
|
-
const cycle = (f.timeMs - startRef.current) / durationMs % 2;
|
|
30
|
-
p = cycle <= 1 ? cycle : 2 - cycle;
|
|
31
|
-
} else {
|
|
32
|
-
p = 1;
|
|
33
|
-
setPlaying(false);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
setProgress(p);
|
|
37
|
-
}, { running: playing });
|
|
38
|
-
const eased = ease(clamp(progress, 0, 1));
|
|
39
|
-
return {
|
|
40
|
-
value: lerp(from, to, eased),
|
|
41
|
-
progress,
|
|
42
|
-
playing,
|
|
43
|
-
play: () => {
|
|
44
|
-
startRef.current = null;
|
|
45
|
-
setPlaying(true);
|
|
46
|
-
},
|
|
47
|
-
pause: () => setPlaying(false),
|
|
48
|
-
reset: () => {
|
|
49
|
-
startRef.current = null;
|
|
50
|
-
setProgress(0);
|
|
51
|
-
setPlaying(false);
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Pure multi-stage interpolation: build a `(t in [0,1]) => number` from
|
|
57
|
-
* keyframes. The manim-style way to express richer programmatic animation
|
|
58
|
-
* without a scheduler, drive `t` from `useTween`/`useFrameLoop`.
|
|
59
|
-
*/
|
|
60
|
-
function keyframes(frames) {
|
|
61
|
-
const ks = [...frames].sort((a, b) => a.at - b.at);
|
|
62
|
-
return (t) => {
|
|
63
|
-
if (ks.length === 0) return 0;
|
|
64
|
-
if (t <= ks[0].at) return ks[0].value;
|
|
65
|
-
if (t >= ks[ks.length - 1].at) return ks[ks.length - 1].value;
|
|
66
|
-
for (let i = 0; i < ks.length - 1; i++) {
|
|
67
|
-
const a = ks[i];
|
|
68
|
-
const b = ks[i + 1];
|
|
69
|
-
if (t >= a.at && t <= b.at) {
|
|
70
|
-
const local = (t - a.at) / (b.at - a.at || 1);
|
|
71
|
-
const e = (b.ease ?? smooth)(local);
|
|
72
|
-
return lerp(a.value, b.value, e);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return ks[ks.length - 1].value;
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
//#endregion
|
|
80
|
-
export { keyframes, useTween };
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
//#region src/discrete/core/combinatorics.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Combinatorics kernel, the counting source-of-truth every discrete-math lab
|
|
4
|
-
* trusts (so an agent narrates these, never computes its own). Pure, integer,
|
|
5
|
-
* dependency-free. The headline identity the Counting lab is built on:
|
|
6
|
-
* nCr(n,k) = nPr(n,k) / k! ("overcount by order, then divide it out").
|
|
7
|
-
*/
|
|
8
|
-
export declare function factorial(n: number): number;
|
|
9
|
-
/** Ordered selections: n·(n−1)···(n−r+1). */
|
|
10
|
-
export declare function nPr(n: number, r: number): number;
|
|
11
|
-
/** Unordered selections: nPr/k!, via the exact step-wise multiplicative form. */
|
|
12
|
-
export declare function nCr(n: number, r: number): number;
|
|
13
|
-
/** Binomial coefficient, alias of nCr (the "n choose k"). */
|
|
14
|
-
export declare const binomial: typeof nCr;
|
|
15
|
-
/** Arrangements of a multiset: n! / (k1! k2! …), where Σki = n. */
|
|
16
|
-
export declare function multinomial(...counts: number[]): number;
|
|
17
|
-
/** Stars and bars: ways to place n identical items into k distinct bins =
|
|
18
|
-
* C(n+k−1, k−1). */
|
|
19
|
-
export declare function starsAndBars(n: number, k: number): number;
|
|
20
|
-
/** Rule of PRODUCT (multiplication principle): a task done as a SEQUENCE of
|
|
21
|
-
* independent stages — do stage 1 AND stage 2 AND … — multiplies the choice
|
|
22
|
-
* counts. ruleOfProduct(4, 3, 2) = 24. The spine under nPr / nʳ / factorial. */
|
|
23
|
-
export declare function ruleOfProduct(...stages: number[]): number;
|
|
24
|
-
/** Rule of SUM (addition principle): MUTUALLY EXCLUSIVE cases, do this OR that,
|
|
25
|
-
* with no overlap — add their counts. ruleOfSum(3, 5) = 8. If the cases can
|
|
26
|
-
* overlap, use {@link inclusionExclusion} (sum, then subtract the double-count). */
|
|
27
|
-
export declare function ruleOfSum(...cases: number[]): number;
|
|
28
|
-
/** Cartesian product: one choice from every authored option set. Shared by
|
|
29
|
-
* sample-space and combination builders so enumeration order stays stable. */
|
|
30
|
-
export declare function cartesianProduct<T>(sets: readonly (readonly T[])[]): T[][];
|
|
31
|
-
/** Permutations WITH repetition: r positions, each independently filled from n
|
|
32
|
-
* options = nʳ. PIN codes, license plates, binary strings, functions A→B. */
|
|
33
|
-
export declare function permutationsWithRepetition(n: number, r: number): number;
|
|
34
|
-
/** Circular permutations: distinct arrangements of n around a round table where
|
|
35
|
-
* only RELATIVE order matters = (n−1)!. (1 for n ≤ 1.) */
|
|
36
|
-
export declare function circularPermutations(n: number): number;
|
|
37
|
-
/** Combinations WITH repetition ("n multichoose k"): choose k from n types,
|
|
38
|
-
* repetition allowed, order irrelevant = C(n+k−1, k). Same stars-and-bars
|
|
39
|
-
* family as {@link starsAndBars}, re-parameterized for selection (e.g. k scoops
|
|
40
|
-
* from n ice-cream flavours). */
|
|
41
|
-
export declare function multichoose(n: number, k: number): number;
|
|
42
|
-
export declare const combinationsWithRepetition: typeof multichoose;
|
|
43
|
-
export declare function gcd(a: number, b: number): number;
|
|
44
|
-
export declare function lcm(a: number, b: number): number;
|
|
45
|
-
//#endregion
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
//#region src/discrete/core/combinatorics.ts
|
|
2
|
-
/**
|
|
3
|
-
* Combinatorics kernel, the counting source-of-truth every discrete-math lab
|
|
4
|
-
* trusts (so an agent narrates these, never computes its own). Pure, integer,
|
|
5
|
-
* dependency-free. The headline identity the Counting lab is built on:
|
|
6
|
-
* nCr(n,k) = nPr(n,k) / k! ("overcount by order, then divide it out").
|
|
7
|
-
*/
|
|
8
|
-
const isCount = (n) => Number.isInteger(n) && n >= 0;
|
|
9
|
-
function factorial(n) {
|
|
10
|
-
if (!isCount(n)) return NaN;
|
|
11
|
-
let r = 1;
|
|
12
|
-
for (let i = 2; i <= n; i++) r *= i;
|
|
13
|
-
return r;
|
|
14
|
-
}
|
|
15
|
-
/** Ordered selections: n·(n−1)···(n−r+1). */
|
|
16
|
-
function nPr(n, r) {
|
|
17
|
-
if (!isCount(n) || !isCount(r) || r > n) return r > n ? 0 : NaN;
|
|
18
|
-
let r0 = 1;
|
|
19
|
-
for (let i = 0; i < r; i++) r0 *= n - i;
|
|
20
|
-
return r0;
|
|
21
|
-
}
|
|
22
|
-
/** Unordered selections: nPr/k!, via the exact step-wise multiplicative form. */
|
|
23
|
-
function nCr(n, r) {
|
|
24
|
-
if (!isCount(n) || !isCount(r)) return NaN;
|
|
25
|
-
if (r > n) return 0;
|
|
26
|
-
const k = Math.min(r, n - r);
|
|
27
|
-
let res = 1;
|
|
28
|
-
for (let i = 1; i <= k; i++) res = res * (n - k + i) / i;
|
|
29
|
-
return Math.round(res);
|
|
30
|
-
}
|
|
31
|
-
/** Binomial coefficient, alias of nCr (the "n choose k"). */
|
|
32
|
-
const binomial = nCr;
|
|
33
|
-
/** Arrangements of a multiset: n! / (k1! k2! …), where Σki = n. */
|
|
34
|
-
function multinomial(...counts) {
|
|
35
|
-
const n = counts.reduce((s, c) => s + c, 0);
|
|
36
|
-
let res = factorial(n);
|
|
37
|
-
for (const c of counts) res /= factorial(c);
|
|
38
|
-
return Math.round(res);
|
|
39
|
-
}
|
|
40
|
-
/** Stars and bars: ways to place n identical items into k distinct bins =
|
|
41
|
-
* C(n+k−1, k−1). */
|
|
42
|
-
function starsAndBars(n, k) {
|
|
43
|
-
if (!isCount(n) || !isCount(k) || k < 1) return NaN;
|
|
44
|
-
return nCr(n + k - 1, k - 1);
|
|
45
|
-
}
|
|
46
|
-
/** Rule of PRODUCT (multiplication principle): a task done as a SEQUENCE of
|
|
47
|
-
* independent stages — do stage 1 AND stage 2 AND … — multiplies the choice
|
|
48
|
-
* counts. ruleOfProduct(4, 3, 2) = 24. The spine under nPr / nʳ / factorial. */
|
|
49
|
-
function ruleOfProduct(...stages) {
|
|
50
|
-
if (!stages.length || stages.some((c) => !Number.isFinite(c))) return NaN;
|
|
51
|
-
return stages.reduce((p, c) => p * c, 1);
|
|
52
|
-
}
|
|
53
|
-
/** Rule of SUM (addition principle): MUTUALLY EXCLUSIVE cases, do this OR that,
|
|
54
|
-
* with no overlap — add their counts. ruleOfSum(3, 5) = 8. If the cases can
|
|
55
|
-
* overlap, use {@link inclusionExclusion} (sum, then subtract the double-count). */
|
|
56
|
-
function ruleOfSum(...cases) {
|
|
57
|
-
if (!cases.length || cases.some((c) => !Number.isFinite(c))) return NaN;
|
|
58
|
-
return cases.reduce((s, c) => s + c, 0);
|
|
59
|
-
}
|
|
60
|
-
/** Cartesian product: one choice from every authored option set. Shared by
|
|
61
|
-
* sample-space and combination builders so enumeration order stays stable. */
|
|
62
|
-
function cartesianProduct(sets) {
|
|
63
|
-
return sets.reduce((rows, options) => rows.flatMap((row) => options.map((option) => [...row, option])), [[]]);
|
|
64
|
-
}
|
|
65
|
-
/** Permutations WITH repetition: r positions, each independently filled from n
|
|
66
|
-
* options = nʳ. PIN codes, license plates, binary strings, functions A→B. */
|
|
67
|
-
function permutationsWithRepetition(n, r) {
|
|
68
|
-
if (!isCount(n) || !isCount(r)) return NaN;
|
|
69
|
-
return n ** r;
|
|
70
|
-
}
|
|
71
|
-
/** Circular permutations: distinct arrangements of n around a round table where
|
|
72
|
-
* only RELATIVE order matters = (n−1)!. (1 for n ≤ 1.) */
|
|
73
|
-
function circularPermutations(n) {
|
|
74
|
-
if (!isCount(n)) return NaN;
|
|
75
|
-
return n <= 1 ? 1 : factorial(n - 1);
|
|
76
|
-
}
|
|
77
|
-
/** Combinations WITH repetition ("n multichoose k"): choose k from n types,
|
|
78
|
-
* repetition allowed, order irrelevant = C(n+k−1, k). Same stars-and-bars
|
|
79
|
-
* family as {@link starsAndBars}, re-parameterized for selection (e.g. k scoops
|
|
80
|
-
* from n ice-cream flavours). */
|
|
81
|
-
function multichoose(n, k) {
|
|
82
|
-
if (!isCount(n) || !isCount(k)) return NaN;
|
|
83
|
-
return nCr(n + k - 1, k);
|
|
84
|
-
}
|
|
85
|
-
const combinationsWithRepetition = multichoose;
|
|
86
|
-
function gcd(a, b) {
|
|
87
|
-
a = Math.abs(a);
|
|
88
|
-
b = Math.abs(b);
|
|
89
|
-
while (b) {
|
|
90
|
-
[a, b] = [b, a % b];
|
|
91
|
-
}
|
|
92
|
-
return a;
|
|
93
|
-
}
|
|
94
|
-
function lcm(a, b) {
|
|
95
|
-
if (a === 0 || b === 0) return 0;
|
|
96
|
-
return Math.abs(a / gcd(a, b) * b);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
//#endregion
|
|
100
|
-
export { binomial, cartesianProduct, circularPermutations, combinationsWithRepetition, factorial, gcd, lcm, multichoose, multinomial, nCr, nPr, permutationsWithRepetition, ruleOfProduct, ruleOfSum, starsAndBars };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region src/discrete/core/probability.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Probability kernel, equally-likely sample spaces, conditioning, Bayes,
|
|
4
|
-
* independence, expectation. This is the "truth" the base-rate / Monty labs read
|
|
5
|
-
* (the agent narrates these numbers; it never invents them). Conditioning =
|
|
6
|
-
* shrink the sample space: P(A|B) = |A∩B| / |B|.
|
|
7
|
-
*/
|
|
8
|
-
/** Favourable / total over an equally-likely space. */
|
|
9
|
-
export declare function probability(favorable: number, total: number): number;
|
|
10
|
-
export declare function complement(p: number): number;
|
|
11
|
-
/** P(A|B) = P(A∩B) / P(B), restrict the world to B, then re-count. */
|
|
12
|
-
export declare function conditional(pAandB: number, pB: number): number;
|
|
13
|
-
/**
|
|
14
|
-
* P(A|B) from the natural inputs: the true-positive rate P(B|A), the prior P(A),
|
|
15
|
-
* and the false-positive rate P(B|¬A). The base-rate-neglect engine.
|
|
16
|
-
*/
|
|
17
|
-
export declare function bayes(pBgivenA: number, pA: number, pBgivenNotA: number): number;
|
|
18
|
-
/** A and B are independent iff P(A∩B) = P(A)·P(B) (within eps). NOT the same as
|
|
19
|
-
* disjoint, disjoint events are maximally DEPENDENT. */
|
|
20
|
-
export declare function independent(pA: number, pB: number, pAandB: number, eps?: number): boolean;
|
|
21
|
-
/** Expected value Σ p·value (probabilities should sum to 1). */
|
|
22
|
-
export declare function expectedValue(outcomes: ReadonlyArray<{
|
|
23
|
-
p: number;
|
|
24
|
-
value: number;
|
|
25
|
-
}>): number;
|
|
26
|
-
/** "At least one" via the complement: 1 − (1−p)^n. */
|
|
27
|
-
export declare function atLeastOne(pEach: number, n: number): number;
|
|
28
|
-
//#endregion
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
//#region src/discrete/core/probability.ts
|
|
2
|
-
/**
|
|
3
|
-
* Probability kernel, equally-likely sample spaces, conditioning, Bayes,
|
|
4
|
-
* independence, expectation. This is the "truth" the base-rate / Monty labs read
|
|
5
|
-
* (the agent narrates these numbers; it never invents them). Conditioning =
|
|
6
|
-
* shrink the sample space: P(A|B) = |A∩B| / |B|.
|
|
7
|
-
*/
|
|
8
|
-
/** Favourable / total over an equally-likely space. */
|
|
9
|
-
function probability(favorable, total) {
|
|
10
|
-
return total > 0 ? favorable / total : NaN;
|
|
11
|
-
}
|
|
12
|
-
function complement(p) {
|
|
13
|
-
return 1 - p;
|
|
14
|
-
}
|
|
15
|
-
/** P(A|B) = P(A∩B) / P(B), restrict the world to B, then re-count. */
|
|
16
|
-
function conditional(pAandB, pB) {
|
|
17
|
-
return pB > 0 ? pAandB / pB : NaN;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* P(A|B) from the natural inputs: the true-positive rate P(B|A), the prior P(A),
|
|
21
|
-
* and the false-positive rate P(B|¬A). The base-rate-neglect engine.
|
|
22
|
-
*/
|
|
23
|
-
function bayes(pBgivenA, pA, pBgivenNotA) {
|
|
24
|
-
const num = pBgivenA * pA;
|
|
25
|
-
const den = num + pBgivenNotA * (1 - pA);
|
|
26
|
-
return den > 0 ? num / den : NaN;
|
|
27
|
-
}
|
|
28
|
-
/** A and B are independent iff P(A∩B) = P(A)·P(B) (within eps). NOT the same as
|
|
29
|
-
* disjoint, disjoint events are maximally DEPENDENT. */
|
|
30
|
-
function independent(pA, pB, pAandB, eps = 1e-9) {
|
|
31
|
-
return Math.abs(pAandB - pA * pB) <= eps;
|
|
32
|
-
}
|
|
33
|
-
/** Expected value Σ p·value (probabilities should sum to 1). */
|
|
34
|
-
function expectedValue(outcomes) {
|
|
35
|
-
return outcomes.reduce((s, o) => s + o.p * o.value, 0);
|
|
36
|
-
}
|
|
37
|
-
/** "At least one" via the complement: 1 − (1−p)^n. */
|
|
38
|
-
function atLeastOne(pEach, n) {
|
|
39
|
-
return 1 - Math.pow(1 - pEach, n);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
//#endregion
|
|
43
|
-
export { atLeastOne, bayes, complement, conditional, expectedValue, independent, probability };
|