@teachinglab/omd 0.5.6 → 0.5.8
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/canvas/ui/toolbar.js +6 -9
- package/index.js +3 -0
- package/npm-docs/DOCUMENTATION_SUMMARY.md +220 -0
- package/npm-docs/README.md +251 -0
- package/npm-docs/api/api-reference.md +85 -0
- package/npm-docs/api/configuration-options.md +198 -0
- package/npm-docs/api/eventManager.md +83 -0
- package/npm-docs/api/expression-nodes.md +561 -0
- package/npm-docs/api/focusFrameManager.md +145 -0
- package/npm-docs/api/index.md +106 -0
- package/npm-docs/api/main.md +63 -0
- package/npm-docs/api/omdBinaryExpressionNode.md +86 -0
- package/npm-docs/api/omdCanvas.md +84 -0
- package/npm-docs/api/omdConfigManager.md +113 -0
- package/npm-docs/api/omdConstantNode.md +53 -0
- package/npm-docs/api/omdDisplay.md +87 -0
- package/npm-docs/api/omdEquationNode.md +174 -0
- package/npm-docs/api/omdEquationSequenceNode.md +259 -0
- package/npm-docs/api/omdEquationStack.md +193 -0
- package/npm-docs/api/omdFunctionNode.md +83 -0
- package/npm-docs/api/omdGroupNode.md +79 -0
- package/npm-docs/api/omdHelpers.md +88 -0
- package/npm-docs/api/omdLeafNode.md +86 -0
- package/npm-docs/api/omdNode.md +202 -0
- package/npm-docs/api/omdOperationDisplayNode.md +118 -0
- package/npm-docs/api/omdOperatorNode.md +92 -0
- package/npm-docs/api/omdParenthesisNode.md +134 -0
- package/npm-docs/api/omdPopup.md +192 -0
- package/npm-docs/api/omdPowerNode.md +132 -0
- package/npm-docs/api/omdRationalNode.md +145 -0
- package/npm-docs/api/omdSequenceNode.md +128 -0
- package/npm-docs/api/omdSimplification.md +79 -0
- package/npm-docs/api/omdSqrtNode.md +144 -0
- package/npm-docs/api/omdStepVisualizer.md +147 -0
- package/npm-docs/api/omdStepVisualizerHighlighting.md +66 -0
- package/npm-docs/api/omdStepVisualizerInteractiveSteps.md +109 -0
- package/npm-docs/api/omdStepVisualizerLayout.md +71 -0
- package/npm-docs/api/omdStepVisualizerNodeUtils.md +140 -0
- package/npm-docs/api/omdStepVisualizerTextBoxes.md +77 -0
- package/npm-docs/api/omdToolbar.md +131 -0
- package/npm-docs/api/omdTranscriptionService.md +96 -0
- package/npm-docs/api/omdTreeDiff.md +170 -0
- package/npm-docs/api/omdUnaryExpressionNode.md +137 -0
- package/npm-docs/api/omdUtilities.md +83 -0
- package/npm-docs/api/omdVariableNode.md +123 -0
- package/npm-docs/api/selectTool.md +74 -0
- package/npm-docs/api/simplificationEngine.md +98 -0
- package/npm-docs/api/simplificationRules.md +77 -0
- package/npm-docs/api/simplificationUtils.md +64 -0
- package/npm-docs/api/transcribe.md +43 -0
- package/npm-docs/guides/equations.md +854 -0
- package/npm-docs/guides/factory-functions.md +354 -0
- package/npm-docs/guides/getting-started.md +318 -0
- package/npm-docs/guides/quick-examples.md +525 -0
- package/npm-docs/guides/visualizations.md +682 -0
- package/npm-docs/json-schemas.md +826 -0
- package/omd/utils/omdTranscriptionService.js +1 -1
- package/package.json +2 -1
- package/src/index.js +2 -0
- package/src/omdFactory.js +150 -0
package/canvas/ui/toolbar.js
CHANGED
|
@@ -176,9 +176,9 @@ export class Toolbar {
|
|
|
176
176
|
*/
|
|
177
177
|
_getToolIconSvg(toolName) {
|
|
178
178
|
const icons = {
|
|
179
|
-
'pointer': `<svg width="
|
|
180
|
-
<path d="
|
|
181
|
-
</svg>`,
|
|
179
|
+
'pointer': `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
180
|
+
<path d="M1.63448 2.04462C1.60922 1.98633 1.60208 1.92179 1.61397 1.85938C1.62585 1.79697 1.65623 1.73958 1.70116 1.69466C1.74608 1.64973 1.80347 1.61935 1.86588 1.60747C1.92829 1.59558 1.99283 1.60272 2.05112 1.62798L12.2911 5.78798C12.3534 5.81335 12.4061 5.85768 12.4417 5.91469C12.4774 5.9717 12.4941 6.03849 12.4897 6.10557C12.4852 6.17266 12.4597 6.23663 12.4169 6.28842C12.374 6.3402 12.3159 6.37717 12.2508 6.39406L8.33144 7.40526C8.11 7.46219 7.90784 7.5774 7.74599 7.73891C7.58415 7.90042 7.46852 8.10234 7.41112 8.32366L6.40056 12.2443C6.38367 12.3094 6.3467 12.3675 6.29492 12.4104C6.24313 12.4532 6.17916 12.4787 6.11207 12.4832C6.04499 12.4876 5.9782 12.4709 5.92119 12.4352C5.86419 12.3996 5.81985 12.3469 5.79448 12.2846L1.63448 2.04462Z" stroke="black" stroke-width="1.28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
181
|
+
</svg>`,
|
|
182
182
|
'pencil': `<svg width="15" height="16" viewBox="0 0 15 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
183
183
|
<path d="M13.3658 4.68008C13.7041 4.34179 13.8943 3.88294 13.8943 3.40447C13.8944 2.926 13.7044 2.4671 13.3661 2.12872C13.0278 1.79035 12.5689 1.60022 12.0905 1.60016C11.612 1.6001 11.1531 1.79011 10.8147 2.1284L2.27329 10.6718C2.12469 10.8199 2.0148 11.0023 1.95329 11.203L1.10785 13.9882C1.09131 14.0436 1.09006 14.1024 1.10423 14.1584C1.11841 14.2144 1.14748 14.2655 1.18836 14.3063C1.22924 14.3471 1.28041 14.3761 1.33643 14.3902C1.39246 14.4043 1.45125 14.403 1.50657 14.3863L4.29249 13.5415C4.49292 13.4806 4.67532 13.3713 4.82369 13.2234L13.3658 4.68008Z" stroke="black" stroke-width="1.28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
184
184
|
<path d="M9.41443 3.52039L11.9744 6.08039" stroke="black" stroke-width="1.28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -187,12 +187,9 @@ export class Toolbar {
|
|
|
187
187
|
<path d="M13.2591 12.76H4.93909C4.77032 12.7604 4.60314 12.7274 4.44717 12.663C4.29121 12.5985 4.14953 12.5038 4.03029 12.3844L1.47413 9.825C1.23417 9.58496 1.09937 9.25945 1.09937 8.92004C1.09937 8.58063 1.23417 8.25511 1.47413 8.01508L7.87413 1.61508C7.993 1.49616 8.13413 1.40183 8.28946 1.33747C8.44479 1.27312 8.61128 1.23999 8.77941 1.23999C8.94755 1.23999 9.11404 1.27312 9.26937 1.33747C9.4247 1.40183 9.56583 1.49616 9.68469 1.61508L13.5241 5.45508C13.764 5.69511 13.8988 6.02063 13.8988 6.36004C13.8988 6.69945 13.764 7.02496 13.5241 7.265L8.03285 12.76" stroke="black" stroke-width="1.28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
188
188
|
<path d="M3.07159 6.41772L8.72151 12.0676" stroke="black" stroke-width="1.28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
189
189
|
</svg>`,
|
|
190
|
-
'select': `<svg width="
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
<path d="m56.195 47.258c-4.6133-1.7656-9.1406 2.7617-7.375 7.375l14.762 38.57c1.7656 4.6133 8.1523 4.9648 10.414 0.57422l7.2539-13.309 14.09-8.0352c4.3906-2.2617 4.0391-8.6484-0.57422-10.414z"/>
|
|
194
|
-
</g>
|
|
195
|
-
</svg>`
|
|
190
|
+
'select': `<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
191
|
+
<path d="M5.5,3 C5.77614237,3 6,3.22385763 6,3.5 C6,3.77614237 5.77614237,4 5.5,4 C4.67157288,4 4,4.67157288 4,5.5 C4,5.77614237 3.77614237,6 3.5,6 C3.22385763,6 3,5.77614237 3,5.5 C3,4.11928813 4.11928813,3 5.5,3 Z M8.5,4 C8.22385763,4 8,3.77614237 8,3.5 C8,3.22385763 8.22385763,3 8.5,3 L10.5,3 C10.7761424,3 11,3.22385763 11,3.5 C11,3.77614237 10.7761424,4 10.5,4 L8.5,4 Z M13.5,4 C13.2238576,4 13,3.77614237 13,3.5 C13,3.22385763 13.2238576,3 13.5,3 L15.5,3 C15.7761424,3 16,3.22385763 16,3.5 C16,3.77614237 15.7761424,4 15.5,4 L13.5,4 Z M8.5,21 C8.22385763,21 8,20.7761424 8,20.5 C8,20.2238576 8.22385763,20 8.5,20 L10.5,20 C10.7761424,20 11,20.2238576 11,20.5 C11,20.7761424 10.7761424,21 10.5,21 L8.5,21 Z M13.5,21 C13.2238576,21 13,20.7761424 13,20.5 C13,20.2238576 13.2238576,20 13.5,20 L15.5,20 C15.7761424,20 16,20.2238576 16,20.5 C16,20.7761424 15.7761424,21 15.5,21 L13.5,21 Z M3,8.5 C3,8.22385763 3.22385763,8 3.5,8 C3.77614237,8 4,8.22385763 4,8.5 L4,10.5 C4,10.7761424 3.77614237,11 3.5,11 C3.22385763,11 3,10.7761424 3,10.5 L3,8.5 Z M3,13.5 C3,13.2238576 3.22385763,13 3.5,13 C3.77614237,13 4,13.2238576 4,13.5 L4,15.5 C4,15.7761424 3.77614237,16 3.5,16 C3.22385763,16 3,15.7761424 3,15.5 L3,13.5 Z M3,18.5 C3,18.2238576 3.22385763,18 3.5,18 C3.77614237,18 4,18.2238576 4,18.5 C4,19.3284271 4.67157288,20 5.5,20 C5.77614237,20 6,20.2238576 6,20.5 C6,20.7761424 5.77614237,21 5.5,21 C4.11928813,21 3,19.8807119 3,18.5 Z M18.5,21 C18.2238576,21 18,20.7761424 18,20.5 C18,20.2238576 18.2238576,20 18.5,20 C19.3284271,20 20,19.3284271 20,18.5 C20,18.2238576 20.2238576,18 20.5,18 C20.7761424,18 21,18.2238576 21,18.5 C21,19.8807119 19.8807119,21 18.5,21 Z M21,15.5 C21,15.7761424 20.7761424,16 20.5,16 C20.2238576,16 20,15.7761424 20,15.5 L20,13.5 C20,13.2238576 20.2238576,13 20.5,13 C20.7761424,13 21,13.2238576 21,13.5 L21,15.5 Z M21,10.5 C21,10.7761424 20.7761424,11 20.5,11 C20.2238576,11 20,10.7761424 20,10.5 L20,8.5 C20,8.22385763 20.2238576,8 20.5,8 C20.7761424,8 21,8.22385763 21,8.5 L21,10.5 Z M21,5.5 C21,5.77614237 20.7761424,6 20.5,6 C20.2238576,6 20,5.77614237 20,5.5 C20,4.67157288 19.3284271,4 18.5,4 C18.2238576,4 18,3.77614237 18,3.5 C18,3.22385763 18.2238576,3 18.5,3 C19.8807119,3 21,4.11928813 21,5.5 Z"/>
|
|
192
|
+
</svg>`
|
|
196
193
|
};
|
|
197
194
|
|
|
198
195
|
return icons[toolName] || icons['pencil'];
|
package/index.js
CHANGED
|
@@ -36,6 +36,9 @@ export { omdBalanceHanger } from './src/omdBalanceHanger.js';
|
|
|
36
36
|
export { omdCoordinatePlane } from './src/omdCoordinatePlane.js';
|
|
37
37
|
export { omdTapeDiagram } from './src/omdTapeDiagram.js';
|
|
38
38
|
|
|
39
|
+
// Export factory functions
|
|
40
|
+
export { createFromJSON, getSupportedTypes, isTypeSupported } from './src/omdFactory.js';
|
|
41
|
+
|
|
39
42
|
// Default export combining core and visualizations
|
|
40
43
|
export default {
|
|
41
44
|
// Core OMD framework (from omd/core/index.js)
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# NPM Documentation Summary
|
|
2
|
+
|
|
3
|
+
This document provides an overview of the organized NPM documentation structure for the OMD library.
|
|
4
|
+
|
|
5
|
+
## 📁 Folder Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
npm-docs/
|
|
9
|
+
├── README.md # Main entry point (start here!)
|
|
10
|
+
├── json-schemas.md # Complete JSON reference for all components
|
|
11
|
+
├── guides/ # User guides and tutorials
|
|
12
|
+
│ ├── getting-started.md # Installation and basic setup
|
|
13
|
+
│ ├── quick-examples.md # Code examples for common use cases
|
|
14
|
+
│ ├── visualizations.md # Complete visualization components guide
|
|
15
|
+
│ └── equations.md # Complete equations and expressions guide
|
|
16
|
+
└── api/ # Detailed API documentation
|
|
17
|
+
├── api-reference.md # Main API reference
|
|
18
|
+
└── [individual component docs] # Copied from docs/api/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 📖 Documentation Organization
|
|
22
|
+
|
|
23
|
+
The documentation follows the requested presentation order:
|
|
24
|
+
|
|
25
|
+
### 1. **Global Context & Configuration** (First)
|
|
26
|
+
- Configuration Manager
|
|
27
|
+
- Display System
|
|
28
|
+
- Canvas System
|
|
29
|
+
- Event Manager
|
|
30
|
+
- Helpers & Utilities
|
|
31
|
+
|
|
32
|
+
### 2. **Visualizations** (Second)
|
|
33
|
+
- Number & Ratio Visualizations
|
|
34
|
+
- Number Line
|
|
35
|
+
- Number Tiles
|
|
36
|
+
- Tape Diagrams
|
|
37
|
+
- Ratio Charts
|
|
38
|
+
- Balance Hanger
|
|
39
|
+
- Graphing & Geometry
|
|
40
|
+
- Coordinate Plane
|
|
41
|
+
- Shapes
|
|
42
|
+
- Spinner
|
|
43
|
+
- Data Display
|
|
44
|
+
- Tables
|
|
45
|
+
- Function Graphs
|
|
46
|
+
|
|
47
|
+
### 3. **Equations & Expressions** (Third - Separate Section)
|
|
48
|
+
- Core Components
|
|
49
|
+
- Numbers
|
|
50
|
+
- Variables
|
|
51
|
+
- Operators
|
|
52
|
+
- Terms
|
|
53
|
+
- Expressions
|
|
54
|
+
- Equations
|
|
55
|
+
- Advanced Expressions
|
|
56
|
+
- Power Expressions
|
|
57
|
+
- Rational Expressions
|
|
58
|
+
- Functions
|
|
59
|
+
- Tile Equations
|
|
60
|
+
- Step-by-Step Solutions
|
|
61
|
+
- Equation Stack
|
|
62
|
+
- Step Visualizer
|
|
63
|
+
- Simplification Engine
|
|
64
|
+
|
|
65
|
+
## 🚀 Quick Navigation
|
|
66
|
+
|
|
67
|
+
### For New Users
|
|
68
|
+
1. **Start Here**: `README.md`
|
|
69
|
+
2. **Get Setup**: `guides/getting-started.md`
|
|
70
|
+
3. **Try Examples**: `guides/quick-examples.md`
|
|
71
|
+
|
|
72
|
+
### For Developers
|
|
73
|
+
1. **JSON Reference**: `json-schemas.md`
|
|
74
|
+
2. **Visualizations**: `guides/visualizations.md`
|
|
75
|
+
3. **Equations**: `guides/equations.md`
|
|
76
|
+
4. **API Details**: `api/api-reference.md`
|
|
77
|
+
|
|
78
|
+
## 📝 Key Files
|
|
79
|
+
|
|
80
|
+
### README.md
|
|
81
|
+
- **Purpose**: Main entry point for NPM documentation
|
|
82
|
+
- **Content**:
|
|
83
|
+
- Quick start guide
|
|
84
|
+
- Feature overview
|
|
85
|
+
- Documentation index organized by the 3 main categories
|
|
86
|
+
- Installation instructions
|
|
87
|
+
- Basic examples
|
|
88
|
+
|
|
89
|
+
### json-schemas.md
|
|
90
|
+
- **Purpose**: Complete JSON reference for all components
|
|
91
|
+
- **Content**:
|
|
92
|
+
- Organized by category (Global Context, Visualizations, Equations)
|
|
93
|
+
- TypeScript-style type definitions
|
|
94
|
+
- JSON schema for each component
|
|
95
|
+
- Usage examples for each component
|
|
96
|
+
- Corrected and verified against source code
|
|
97
|
+
|
|
98
|
+
### guides/getting-started.md
|
|
99
|
+
- **Purpose**: Installation and basic setup
|
|
100
|
+
- **Content**:
|
|
101
|
+
- Installation instructions (npm/yarn)
|
|
102
|
+
- Basic setup example
|
|
103
|
+
- Complete HTML example
|
|
104
|
+
- Common use cases
|
|
105
|
+
- Configuration options
|
|
106
|
+
- Integration with build tools (Vite, Webpack, React)
|
|
107
|
+
- Troubleshooting guide
|
|
108
|
+
- Browser support
|
|
109
|
+
|
|
110
|
+
### guides/visualizations.md
|
|
111
|
+
- **Purpose**: Complete guide to all visualization components
|
|
112
|
+
- **Content**:
|
|
113
|
+
- Number & Ratio visualizations
|
|
114
|
+
- Graphing & Geometry components
|
|
115
|
+
- Data display components
|
|
116
|
+
- Properties tables for each component
|
|
117
|
+
- Multiple examples for each component
|
|
118
|
+
- Best practices
|
|
119
|
+
|
|
120
|
+
### guides/equations.md
|
|
121
|
+
- **Purpose**: Complete guide to equations and expressions
|
|
122
|
+
- **Content**:
|
|
123
|
+
- Core components (numbers, variables, operators, terms)
|
|
124
|
+
- Expressions and equations
|
|
125
|
+
- Advanced expressions (power, rational, functions)
|
|
126
|
+
- Tile equations
|
|
127
|
+
- Step-by-step solutions
|
|
128
|
+
- Simplification engine
|
|
129
|
+
- Expression parsing
|
|
130
|
+
- Best practices
|
|
131
|
+
|
|
132
|
+
### guides/quick-examples.md
|
|
133
|
+
- **Purpose**: Ready-to-use code examples
|
|
134
|
+
- **Content**:
|
|
135
|
+
- Basic equations
|
|
136
|
+
- Visualization examples
|
|
137
|
+
- Step-by-step solutions
|
|
138
|
+
- Advanced features
|
|
139
|
+
- Complete working HTML example
|
|
140
|
+
|
|
141
|
+
## ✅ Verification Checklist
|
|
142
|
+
|
|
143
|
+
- [x] Main README.md created with proper organization
|
|
144
|
+
- [x] json-schemas.md corrected and verified
|
|
145
|
+
- [x] Getting started guide created
|
|
146
|
+
- [x] Visualizations guide created (comprehensive)
|
|
147
|
+
- [x] Equations guide created (comprehensive)
|
|
148
|
+
- [x] Quick examples guide created
|
|
149
|
+
- [x] API documentation copied to npm-docs/api
|
|
150
|
+
- [x] Documentation follows requested order: Global Context → Visualizations → Equations
|
|
151
|
+
|
|
152
|
+
## 🎯 Next Steps (Before Publishing)
|
|
153
|
+
|
|
154
|
+
1. **Review the documentation**:
|
|
155
|
+
- Check `npm-docs/README.md` for accuracy
|
|
156
|
+
- Verify `json-schemas.md` schemas are correct
|
|
157
|
+
- Review all guide files
|
|
158
|
+
|
|
159
|
+
2. **Update package.json** (when ready):
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"files": [
|
|
163
|
+
"index.js",
|
|
164
|
+
"src/",
|
|
165
|
+
"omd/",
|
|
166
|
+
"npm-docs/",
|
|
167
|
+
"canvas/",
|
|
168
|
+
"jsvg/"
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
3. **Test the documentation**:
|
|
174
|
+
- Verify all examples work
|
|
175
|
+
- Check all internal links
|
|
176
|
+
- Ensure code samples are accurate
|
|
177
|
+
|
|
178
|
+
4. **Publish** (when approved):
|
|
179
|
+
```bash
|
|
180
|
+
npm version patch # or minor/major
|
|
181
|
+
npm publish
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## 📋 Documentation Standards Used
|
|
185
|
+
|
|
186
|
+
- **Markdown formatting**: Proper headings, code blocks, tables
|
|
187
|
+
- **Code examples**: Syntax-highlighted JavaScript
|
|
188
|
+
- **Consistent structure**: Each component documented with:
|
|
189
|
+
- Basic usage
|
|
190
|
+
- Properties table
|
|
191
|
+
- Multiple examples
|
|
192
|
+
- JSON schema
|
|
193
|
+
- **Navigation aids**: Table of contents, cross-references
|
|
194
|
+
- **Accessibility**: Clear descriptions, organized content
|
|
195
|
+
|
|
196
|
+
## 🔗 Internal Link Structure
|
|
197
|
+
|
|
198
|
+
All documentation files are cross-linked:
|
|
199
|
+
- README.md → All guides and API docs
|
|
200
|
+
- Each guide → Related guides and API reference
|
|
201
|
+
- json-schemas.md → API reference and guides
|
|
202
|
+
|
|
203
|
+
## 📊 Coverage
|
|
204
|
+
|
|
205
|
+
The documentation covers:
|
|
206
|
+
- ✅ All visualization components
|
|
207
|
+
- ✅ All equation components
|
|
208
|
+
- ✅ Configuration system
|
|
209
|
+
- ✅ Step-by-step solution system
|
|
210
|
+
- ✅ JSON schemas for all components
|
|
211
|
+
- ✅ Installation and setup
|
|
212
|
+
- ✅ Integration guides (React, Vite, Webpack)
|
|
213
|
+
- ✅ Best practices
|
|
214
|
+
- ✅ Troubleshooting
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
**Documentation Status**: ✅ Complete and ready for review
|
|
219
|
+
|
|
220
|
+
**Do NOT publish to NPM until reviewed and approved!**
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# OMD (Open Math Display)
|
|
2
|
+
|
|
3
|
+
> A JavaScript library for creating interactive mathematical interfaces in web applications
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@teachinglab/omd)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
8
|
+
OMD is a comprehensive JavaScript library for building rich, interactive mathematical experiences in the browser. From simple equation displays to complex step-by-step solution systems with full visual feedback and user interaction.
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
### Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @teachinglab/omd
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Basic Usage
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
import { omdDisplay } from '@teachinglab/omd';
|
|
24
|
+
|
|
25
|
+
// Create a math display
|
|
26
|
+
const container = document.getElementById('math-container');
|
|
27
|
+
const display = new omdDisplay(container);
|
|
28
|
+
|
|
29
|
+
// Render an equation
|
|
30
|
+
display.render('2x + 3 = 11');
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Documentation
|
|
34
|
+
|
|
35
|
+
### Getting Started
|
|
36
|
+
- **[Installation & Setup](./guides/getting-started.md)** - Get up and running with OMD
|
|
37
|
+
- **[Quick Examples](./guides/quick-examples.md)** - Common use cases and code snippets
|
|
38
|
+
- **[Factory Functions](./guides/factory-functions.md)** - Creating objects from JSON (AI-friendly)
|
|
39
|
+
|
|
40
|
+
### Core Concepts
|
|
41
|
+
|
|
42
|
+
#### 1. Global Context & Configuration
|
|
43
|
+
Learn about the foundational systems that power OMD:
|
|
44
|
+
|
|
45
|
+
- **[Configuration Manager](./api/omdConfigManager.md)** - Library-wide settings and theming
|
|
46
|
+
- **[Configuration Options](./api/configuration-options.md)** - Complete list of available settings
|
|
47
|
+
- **[Display System](./api/omdDisplay.md)** - Main rendering engine
|
|
48
|
+
- **[Canvas System](./api/omdCanvas.md)** - Multi-expression layout manager
|
|
49
|
+
- **[Event Manager](./api/eventManager.md)** - Event handling and coordination
|
|
50
|
+
- **[Helpers & Utilities](./api/omdHelpers.md)** - Utility functions for common tasks
|
|
51
|
+
|
|
52
|
+
#### 2. Visualizations
|
|
53
|
+
Interactive visual components for teaching and learning:
|
|
54
|
+
|
|
55
|
+
##### Number & Ratio Visualizations
|
|
56
|
+
- **[Number Line](./guides/visualizations.md#number-line)** - `omdNumberLine` - Interactive number lines with dots and labels
|
|
57
|
+
- **[Number Tiles](./guides/visualizations.md#number-tiles)** - `omdNumberTile` - Visual counting tiles with dots
|
|
58
|
+
- **[Tape Diagrams](./guides/visualizations.md#tape-diagrams)** - `omdTapeDiagram` - Part-whole relationship diagrams
|
|
59
|
+
- **[Ratio Charts](./guides/visualizations.md#ratio-charts)** - `omdRatioChart` - Pie and bar chart ratio visualizations
|
|
60
|
+
- **[Balance Hanger](./guides/visualizations.md#balance-hanger)** - `omdBalanceHanger` - Balance scale visualizations
|
|
61
|
+
|
|
62
|
+
##### Graphing & Geometry
|
|
63
|
+
- **[Coordinate Plane](./guides/visualizations.md#coordinate-plane)** - `omdCoordinatePlane` - 2D graphing with functions and shapes
|
|
64
|
+
- **[Shapes](./guides/visualizations.md#shapes)** - `omdShapes` - Geometric shapes (circles, rectangles, polygons, triangles)
|
|
65
|
+
- **[Spinner](./guides/visualizations.md#spinner)** - `omdSpinner` - Interactive circular spinners
|
|
66
|
+
|
|
67
|
+
##### Data Display
|
|
68
|
+
- **[Tables](./guides/visualizations.md#tables)** - `omdTable` - Data tables with customizable styling
|
|
69
|
+
- **[Function Graphs](./guides/visualizations.md#function-graphs)** - Plotting mathematical functions
|
|
70
|
+
|
|
71
|
+
#### 3. Equations & Expressions
|
|
72
|
+
The heart of mathematical notation and manipulation:
|
|
73
|
+
|
|
74
|
+
##### Core Expression Components
|
|
75
|
+
- **[Expression Nodes](./api/expression-nodes.md)** - Understanding the node tree structure and omdEquationNode class
|
|
76
|
+
- **[omdEquationNode](./api/omdEquationNode.md)** - Complete equations with manipulation methods (e.g., `2x + 3 = 11`)
|
|
77
|
+
- **[omdExpression](./guides/equations.md#expressions)** - Mathematical expressions (e.g., `3x² + 5`)
|
|
78
|
+
- **[omdTerm](./guides/equations.md#terms)** - Individual terms (e.g., `3x²`)
|
|
79
|
+
- **[omdNumber](./guides/equations.md#numbers)** - Numeric constants
|
|
80
|
+
- **[omdVariable](./guides/equations.md#variables)** - Variables (e.g., `x`, `y`)
|
|
81
|
+
- **[omdOperator](./guides/equations.md#operators)** - Mathematical operators (+, -, ×, ÷)
|
|
82
|
+
|
|
83
|
+
##### Advanced Expression Types
|
|
84
|
+
- **[omdPowerExpression](./guides/equations.md#power-expressions)** - Exponentiation (e.g., `(x+1)²`)
|
|
85
|
+
- **[omdRationalExpression](./guides/equations.md#rational-expressions)** - Fractions (e.g., `(x+1)/(x-1)`)
|
|
86
|
+
- **[omdFunction](./guides/equations.md#functions)** - Mathematical functions (e.g., `f(x) = 2x + 1`)
|
|
87
|
+
- **[omdTileEquation](./guides/equations.md#tile-equations)** - Visual tile-based equations
|
|
88
|
+
|
|
89
|
+
##### Step-by-Step Solutions
|
|
90
|
+
- **[Equation Stack](./api/omdEquationStack.md)** - Sequenced solution steps
|
|
91
|
+
- **[Step Visualizer](./api/omdStepVisualizer.md)** - Interactive step visualization
|
|
92
|
+
- **[Simplification Engine](./api/omdSimplification.md)** - Rule-based expression simplification
|
|
93
|
+
- **[Simplification Rules](./api/simplificationRules.md)** - Available transformation rules
|
|
94
|
+
|
|
95
|
+
### Complete API Reference
|
|
96
|
+
- **[Full API Documentation](./api/api-reference.md)** - Complete reference for all components
|
|
97
|
+
- **[JSON Schemas](./json-schemas.md)** - Detailed JSON structure for all components
|
|
98
|
+
|
|
99
|
+
## Features
|
|
100
|
+
|
|
101
|
+
### **Interactive Math Rendering**
|
|
102
|
+
- High-quality SVG-based mathematical notation
|
|
103
|
+
- Real-time expression manipulation and visualization
|
|
104
|
+
- Automatic layout and alignment for complex equations
|
|
105
|
+
|
|
106
|
+
### **Step-by-Step Solutions**
|
|
107
|
+
- Visual step tracking with detailed explanations
|
|
108
|
+
- Simplification engine with rule-based transformations
|
|
109
|
+
- Provenance tracking for highlighting related elements
|
|
110
|
+
|
|
111
|
+
### **Rich UI Components**
|
|
112
|
+
- Built-in toolbar for common mathematical operations
|
|
113
|
+
- Drag & drop interface for intuitive manipulation
|
|
114
|
+
- Customizable canvas for multi-expression layouts
|
|
115
|
+
|
|
116
|
+
### **Educational Features**
|
|
117
|
+
- Interactive learning experiences
|
|
118
|
+
- Progressive step revelation
|
|
119
|
+
- Visual operation feedback and highlighting
|
|
120
|
+
|
|
121
|
+
## Guides
|
|
122
|
+
|
|
123
|
+
### By Use Case
|
|
124
|
+
- **[Creating Equations](./guides/equations.md)** - Work with equations and expressions
|
|
125
|
+
- **[Visualizations Guide](./guides/visualizations.md)** - All visualization components
|
|
126
|
+
- **[Step-by-Step Solutions](./guides/step-by-step.md)** - Building interactive solutions
|
|
127
|
+
- **[Interactive Features](./guides/interactive-features.md)** - Drag & drop, toolbars, and more
|
|
128
|
+
|
|
129
|
+
### Advanced Topics
|
|
130
|
+
- **[Expression Tree Structure](./guides/expression-tree.md)** - Understanding the AST
|
|
131
|
+
- **[Custom Simplification Rules](./guides/custom-rules.md)** - Extending the simplification engine
|
|
132
|
+
- **[Theming & Styling](./guides/theming.md)** - Customizing appearance
|
|
133
|
+
- **[Performance Optimization](./guides/performance.md)** - Best practices for large applications
|
|
134
|
+
|
|
135
|
+
## Architecture
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
OMD Library Structure
|
|
139
|
+
├── Core Systems
|
|
140
|
+
│ ├── Configuration Manager (Global settings)
|
|
141
|
+
│ ├── Display System (Rendering engine)
|
|
142
|
+
│ └── Event Manager (Coordination)
|
|
143
|
+
│
|
|
144
|
+
├── Visualizations
|
|
145
|
+
│ ├── Number Visualizations (Number line, tiles, tape diagrams)
|
|
146
|
+
│ ├── Graphing (Coordinate plane, functions)
|
|
147
|
+
│ └── Data Display (Tables, charts)
|
|
148
|
+
│
|
|
149
|
+
└── Equations & Expressions
|
|
150
|
+
├── Node System (Expression tree)
|
|
151
|
+
├── Equation Components (Equations, terms, operators)
|
|
152
|
+
├── Advanced Expressions (Powers, rationals, functions)
|
|
153
|
+
└── Step-by-Step System (Simplification, visualization)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Examples
|
|
157
|
+
|
|
158
|
+
### Creating Objects from JSON (Factory Method)
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
import { createFromJSON } from '@teachinglab/omd';
|
|
162
|
+
|
|
163
|
+
// AI-generated or dynamic JSON data
|
|
164
|
+
const jsonData = {
|
|
165
|
+
omdType: 'numberLine',
|
|
166
|
+
min: 0,
|
|
167
|
+
max: 10,
|
|
168
|
+
dotValues: [2, 5, 8]
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// Create the object - no switch statement needed!
|
|
172
|
+
const numberLine = createFromJSON(jsonData);
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Basic Equation
|
|
176
|
+
```javascript
|
|
177
|
+
import { omdDisplay, omdEquationNode } from '@teachinglab/omd';
|
|
178
|
+
|
|
179
|
+
const display = new omdDisplay(document.getElementById('container'));
|
|
180
|
+
const equation = omdEquationNode.fromString('2x + 3 = 11');
|
|
181
|
+
display.render(equation);
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Step-by-Step Solution
|
|
185
|
+
```javascript
|
|
186
|
+
import { omdEquationStack } from '@teachinglab/omd';
|
|
187
|
+
|
|
188
|
+
const steps = [
|
|
189
|
+
'2x + 3 = 11',
|
|
190
|
+
'2x = 8',
|
|
191
|
+
'x = 4'
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
const stack = new omdEquationStack(steps.map(s =>
|
|
195
|
+
omdEquationNode.fromString(s)
|
|
196
|
+
), {
|
|
197
|
+
toolbar: true,
|
|
198
|
+
stepVisualizer: true
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
display.render(stack);
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Coordinate Plane with Function
|
|
205
|
+
```javascript
|
|
206
|
+
import { omdCoordinatePlane } from '@teachinglab/omd';
|
|
207
|
+
|
|
208
|
+
const plane = new omdCoordinatePlane();
|
|
209
|
+
plane.loadFromJSON({
|
|
210
|
+
xMin: -10, xMax: 10,
|
|
211
|
+
yMin: -10, yMax: 10,
|
|
212
|
+
graphEquations: [
|
|
213
|
+
{ equation: 'y = x^2 - 4', color: '#e11d48', strokeWidth: 2 }
|
|
214
|
+
]
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
display.render(plane);
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Number Line Visualization
|
|
221
|
+
```javascript
|
|
222
|
+
import { omdNumberLine } from '@teachinglab/omd';
|
|
223
|
+
|
|
224
|
+
const numberLine = new omdNumberLine();
|
|
225
|
+
numberLine.loadFromJSON({
|
|
226
|
+
min: 0,
|
|
227
|
+
max: 10,
|
|
228
|
+
dotValues: [2, 5, 8],
|
|
229
|
+
label: 'Number Line Example'
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
display.render(numberLine);
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Dependencies
|
|
236
|
+
|
|
237
|
+
- **JSVG** (`@teachinglab/jsvg`) - High-performance SVG rendering
|
|
238
|
+
- **math.js** - Mathematical expression parsing
|
|
239
|
+
- **Modern Browser** - ES6 modules, SVG support required
|
|
240
|
+
|
|
241
|
+
## License
|
|
242
|
+
|
|
243
|
+
MIT License - see [LICENSE](../LICENSE) for details
|
|
244
|
+
|
|
245
|
+
## Contributing
|
|
246
|
+
|
|
247
|
+
We welcome contributions! See our [contributing guidelines](../CONTRIBUTING.md) for more information.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
**Ready to get started?** Check out the [Getting Started Guide](./guides/getting-started.md) or explore the [JSON Schemas](./json-schemas.md) for detailed component configurations.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# OMD Library API Reference
|
|
2
|
+
|
|
3
|
+
> This is the complete API reference for the OMD (Open Math Display) library. Use the table of contents below to navigate to the detailed documentation for each module and class.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
The API is organized into the following categories for clarity:
|
|
10
|
+
|
|
11
|
+
| Category | Description |
|
|
12
|
+
| ----------------------- | --------------------------------------------------------------------------------- |
|
|
13
|
+
| **[Core Components](#core-components)** | The main entry points for rendering and managing expressions. |
|
|
14
|
+
| **[Node Types](#node-types)** | The building blocks of all mathematical expressions. |
|
|
15
|
+
| **[UI Components](#ui-components)** | Interactive components for user interfaces. |
|
|
16
|
+
| **[Helper Utilities](#helper-utilities)** | Utility functions for common tasks like node creation and visualization. |
|
|
17
|
+
| **[Configuration](#configuration)** | Modules for managing the library's settings and behavior. |
|
|
18
|
+
| **[Simplification](#simplification)** | The expression simplification engine and its components. |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Core Components
|
|
24
|
+
|
|
25
|
+
The foundational classes for interacting with the OMD library.
|
|
26
|
+
|
|
27
|
+
- **[`omdNode`](./api/omdNode.md)**: The abstract base class for all mathematical nodes in the expression tree.
|
|
28
|
+
- **[`omdDisplay`](./api/omdDisplay.md)**: A component for rendering a single, auto-centered mathematical expression.
|
|
29
|
+
- **[`omdEquationStack`](./api/omdEquationStack.md)**: A component for managing and displaying a sequence of equation steps.
|
|
30
|
+
|
|
31
|
+
### Node Types
|
|
32
|
+
|
|
33
|
+
These classes represent the different parts of a mathematical expression.
|
|
34
|
+
|
|
35
|
+
- **[`omdConstantNode`](./api/omdConstantNode.md)**: Represents numeric constants (e.g., `5`, `3.14`).
|
|
36
|
+
- **[`omdVariableNode`](./api/omdVariableNode.md)**: Represents variables (e.g., `x`, `y`).
|
|
37
|
+
- **[`omdBinaryExpressionNode`](./api/omdBinaryExpressionNode.md)**: Represents binary operations (`+`, `-`, `*`, `/`).
|
|
38
|
+
- **[`omdUnaryExpressionNode`](./api/omdUnaryExpressionNode.md)**: Represents unary operations (e.g., negation `-x`).
|
|
39
|
+
- **[`omdPowerNode`](./api/omdPowerNode.md)**: Represents exponentiation (`x^2`).
|
|
40
|
+
- **[`omdSqrtNode`](./api/omdSqrtNode.md)**: Represents square roots (`√x`).
|
|
41
|
+
- **[`omdRationalNode`](./api/omdRationalNode.md)**: Represents fractions and rational numbers (`x/y`).
|
|
42
|
+
- **[`omdEquationNode`](./api/omdEquationNode.md)**: Represents equations with a left and right side.
|
|
43
|
+
- **[`omdFunctionNode`](./api/omdFunctionNode.md)**: Represents mathematical functions (e.g., `sin(x)`).
|
|
44
|
+
- **[`omdParenthesisNode`](./api/omdParenthesisNode.md)**: Represents expressions enclosed in parentheses.
|
|
45
|
+
- **[`omdEquationSequenceNode`](./api/omdEquationSequenceNode.md)**: A container for displaying step-by-step solutions.
|
|
46
|
+
- **[`omdOperationDisplayNode`](./api/omdOperationDisplayNode.md)**: Represents visual operation hints.
|
|
47
|
+
- **[`omdGroupNode`](./api/omdGroupNode.md)**: A container for grouping related nodes.
|
|
48
|
+
|
|
49
|
+
### UI Components
|
|
50
|
+
|
|
51
|
+
Interactive components for building math interfaces.
|
|
52
|
+
|
|
53
|
+
- **[`omdToolbar`](./api/omdToolbar.md)**: A customizable toolbar for mathematical operations.
|
|
54
|
+
- **[`omdStepVisualizer`](./api/omdStepVisualizer.md)**: Component for visualizing step-by-step solutions.
|
|
55
|
+
- **[`omdStepVisualizerHighlighting`](./api/omdStepVisualizerHighlighting.md)**: Manages highlighting of nodes in step visualizations.
|
|
56
|
+
- **[`omdStepVisualizerLayout`](./api/omdStepVisualizerLayout.md)**: Handles layout and positioning of step visualizer elements.
|
|
57
|
+
- **[`omdStepVisualizerTextBoxes`](./api/omdStepVisualizerTextBoxes.md)**: Manages interactive text boxes for step explanations.
|
|
58
|
+
- **[`omdStepVisualizerInteractiveSteps`](./api/omdStepVisualizerInteractiveSteps.md)**: Creates interactive step elements for explanations.
|
|
59
|
+
|
|
60
|
+
### Helper Utilities
|
|
61
|
+
|
|
62
|
+
- **[`omdHelpers`](./api/omdHelpers.md)**: Utility functions for node creation.
|
|
63
|
+
- **[`omdUtilities`](./api/omdUtilities.md)**: General utilities for AST mapping and text bounds.
|
|
64
|
+
- **[`omdStepVisualizerNodeUtils`](./api/omdStepVisualizerNodeUtils.md)**: Utilities for node operations in step visualizations.
|
|
65
|
+
- **[`omdTreeDiff`](./api/omdTreeDiff.md)**: Utilities for comparing expression trees.
|
|
66
|
+
|
|
67
|
+
### Configuration
|
|
68
|
+
|
|
69
|
+
- **[`omdConfigManager`](./api/omdConfigManager.md)**: The main object for managing library configuration.
|
|
70
|
+
- **[`Configuration Options`](./api/configuration-options.md)**: A detailed list of all available configuration settings.
|
|
71
|
+
|
|
72
|
+
### Simplification
|
|
73
|
+
|
|
74
|
+
- **[`omdSimplification`](./api/omdSimplification.md)**: The main simplification module.
|
|
75
|
+
- **[`omdSimplificationEngine`](./api/simplificationEngine.md)**: Core simplification engine.
|
|
76
|
+
- **[`Simplification Rules`](./api/simplificationRules.md)**: Available simplification rules.
|
|
77
|
+
- **[`Simplification Utilities`](./api/simplificationUtils.md)**: Helper functions for simplification rules.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## See Also
|
|
84
|
+
- **[User Guide](user-guide.md)**: Getting started, usage, and tutorials (in progress)
|
|
85
|
+
- **[Examples](../examples/)**: A directory of live, interactive examples.
|