@teachinglab/omd 0.6.1 → 0.6.3
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 +257 -251
- package/README.old.md +137 -137
- package/canvas/core/canvasConfig.js +202 -202
- package/canvas/drawing/segment.js +167 -167
- package/canvas/drawing/stroke.js +385 -385
- package/canvas/events/eventManager.js +444 -444
- package/canvas/events/pointerEventHandler.js +262 -262
- package/canvas/index.js +48 -48
- package/canvas/tools/PointerTool.js +71 -71
- package/canvas/tools/tool.js +222 -222
- package/canvas/utils/boundingBox.js +377 -377
- package/canvas/utils/mathUtils.js +258 -258
- package/docs/api/configuration-options.md +198 -198
- package/docs/api/eventManager.md +82 -82
- package/docs/api/focusFrameManager.md +144 -144
- package/docs/api/index.md +105 -105
- package/docs/api/main.md +62 -62
- package/docs/api/omdBinaryExpressionNode.md +86 -86
- package/docs/api/omdCanvas.md +83 -83
- package/docs/api/omdConfigManager.md +112 -112
- package/docs/api/omdConstantNode.md +52 -52
- package/docs/api/omdDisplay.md +87 -87
- package/docs/api/omdEquationNode.md +174 -174
- package/docs/api/omdEquationSequenceNode.md +258 -258
- package/docs/api/omdEquationStack.md +192 -192
- package/docs/api/omdFunctionNode.md +82 -82
- package/docs/api/omdGroupNode.md +78 -78
- package/docs/api/omdHelpers.md +87 -87
- package/docs/api/omdLeafNode.md +85 -85
- package/docs/api/omdNode.md +201 -201
- package/docs/api/omdOperationDisplayNode.md +117 -117
- package/docs/api/omdOperatorNode.md +91 -91
- package/docs/api/omdParenthesisNode.md +133 -133
- package/docs/api/omdPopup.md +191 -191
- package/docs/api/omdPowerNode.md +131 -131
- package/docs/api/omdRationalNode.md +144 -144
- package/docs/api/omdSequenceNode.md +128 -128
- package/docs/api/omdSimplification.md +78 -78
- package/docs/api/omdSqrtNode.md +144 -144
- package/docs/api/omdStepVisualizer.md +146 -146
- package/docs/api/omdStepVisualizerHighlighting.md +65 -65
- package/docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
- package/docs/api/omdStepVisualizerLayout.md +70 -70
- package/docs/api/omdStepVisualizerNodeUtils.md +140 -140
- package/docs/api/omdStepVisualizerTextBoxes.md +76 -76
- package/docs/api/omdToolbar.md +130 -130
- package/docs/api/omdTranscriptionService.md +95 -95
- package/docs/api/omdTreeDiff.md +169 -169
- package/docs/api/omdUnaryExpressionNode.md +137 -137
- package/docs/api/omdUtilities.md +82 -82
- package/docs/api/omdVariableNode.md +123 -123
- package/docs/api/selectTool.md +74 -74
- package/docs/api/simplificationEngine.md +97 -97
- package/docs/api/simplificationRules.md +76 -76
- package/docs/api/simplificationUtils.md +64 -64
- package/docs/api/transcribe.md +43 -43
- package/docs/api-reference.md +85 -85
- package/docs/index.html +453 -453
- package/docs/index.md +38 -38
- package/docs/omd-objects.md +258 -258
- package/index.js +79 -79
- package/jsvg/index.js +3 -0
- package/jsvg/jsvg.js +898 -898
- package/jsvg/jsvgComponents.js +357 -358
- package/npm-docs/DOCUMENTATION_SUMMARY.md +220 -220
- package/npm-docs/README.md +251 -251
- package/npm-docs/api/api-reference.md +85 -85
- package/npm-docs/api/configuration-options.md +198 -198
- package/npm-docs/api/eventManager.md +82 -82
- package/npm-docs/api/expression-nodes.md +561 -561
- package/npm-docs/api/focusFrameManager.md +144 -144
- package/npm-docs/api/index.md +105 -105
- package/npm-docs/api/main.md +62 -62
- package/npm-docs/api/omdBinaryExpressionNode.md +86 -86
- package/npm-docs/api/omdCanvas.md +83 -83
- package/npm-docs/api/omdConfigManager.md +112 -112
- package/npm-docs/api/omdConstantNode.md +52 -52
- package/npm-docs/api/omdDisplay.md +87 -87
- package/npm-docs/api/omdEquationNode.md +174 -174
- package/npm-docs/api/omdEquationSequenceNode.md +258 -258
- package/npm-docs/api/omdEquationStack.md +192 -192
- package/npm-docs/api/omdFunctionNode.md +82 -82
- package/npm-docs/api/omdGroupNode.md +78 -78
- package/npm-docs/api/omdHelpers.md +87 -87
- package/npm-docs/api/omdLeafNode.md +85 -85
- package/npm-docs/api/omdNode.md +201 -201
- package/npm-docs/api/omdOperationDisplayNode.md +117 -117
- package/npm-docs/api/omdOperatorNode.md +91 -91
- package/npm-docs/api/omdParenthesisNode.md +133 -133
- package/npm-docs/api/omdPopup.md +191 -191
- package/npm-docs/api/omdPowerNode.md +131 -131
- package/npm-docs/api/omdRationalNode.md +144 -144
- package/npm-docs/api/omdSequenceNode.md +128 -128
- package/npm-docs/api/omdSimplification.md +78 -78
- package/npm-docs/api/omdSqrtNode.md +144 -144
- package/npm-docs/api/omdStepVisualizer.md +146 -146
- package/npm-docs/api/omdStepVisualizerHighlighting.md +65 -65
- package/npm-docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
- package/npm-docs/api/omdStepVisualizerLayout.md +70 -70
- package/npm-docs/api/omdStepVisualizerNodeUtils.md +140 -140
- package/npm-docs/api/omdStepVisualizerTextBoxes.md +76 -76
- package/npm-docs/api/omdToolbar.md +130 -130
- package/npm-docs/api/omdTranscriptionService.md +95 -95
- package/npm-docs/api/omdTreeDiff.md +169 -169
- package/npm-docs/api/omdUnaryExpressionNode.md +137 -137
- package/npm-docs/api/omdUtilities.md +82 -82
- package/npm-docs/api/omdVariableNode.md +123 -123
- package/npm-docs/api/selectTool.md +74 -74
- package/npm-docs/api/simplificationEngine.md +97 -97
- package/npm-docs/api/simplificationRules.md +76 -76
- package/npm-docs/api/simplificationUtils.md +64 -64
- package/npm-docs/api/transcribe.md +43 -43
- package/npm-docs/guides/equations.md +854 -854
- package/npm-docs/guides/factory-functions.md +354 -354
- package/npm-docs/guides/getting-started.md +318 -318
- package/npm-docs/guides/quick-examples.md +525 -525
- package/npm-docs/guides/visualizations.md +682 -682
- package/npm-docs/index.html +12 -0
- package/npm-docs/json-schemas.md +826 -826
- package/omd/config/omdConfigManager.js +279 -267
- package/omd/core/index.js +158 -158
- package/omd/core/omdEquationStack.js +606 -547
- package/omd/core/omdUtilities.js +113 -113
- package/omd/display/omdDisplay.js +1045 -963
- package/omd/display/omdToolbar.js +501 -501
- package/omd/nodes/omdBinaryExpressionNode.js +459 -459
- package/omd/nodes/omdConstantNode.js +141 -141
- package/omd/nodes/omdEquationNode.js +1327 -1327
- package/omd/nodes/omdFunctionNode.js +351 -351
- package/omd/nodes/omdGroupNode.js +67 -67
- package/omd/nodes/omdLeafNode.js +76 -76
- package/omd/nodes/omdNode.js +556 -556
- package/omd/nodes/omdOperationDisplayNode.js +321 -321
- package/omd/nodes/omdOperatorNode.js +108 -108
- package/omd/nodes/omdParenthesisNode.js +292 -292
- package/omd/nodes/omdPowerNode.js +235 -235
- package/omd/nodes/omdRationalNode.js +295 -295
- package/omd/nodes/omdSqrtNode.js +307 -307
- package/omd/nodes/omdUnaryExpressionNode.js +227 -227
- package/omd/nodes/omdVariableNode.js +122 -122
- package/omd/simplification/omdSimplification.js +140 -140
- package/omd/simplification/omdSimplificationEngine.js +887 -887
- package/omd/simplification/package.json +5 -5
- package/omd/simplification/rules/binaryRules.js +1037 -1037
- package/omd/simplification/rules/functionRules.js +111 -111
- package/omd/simplification/rules/index.js +48 -48
- package/omd/simplification/rules/parenthesisRules.js +19 -19
- package/omd/simplification/rules/powerRules.js +143 -143
- package/omd/simplification/rules/rationalRules.js +725 -725
- package/omd/simplification/rules/sqrtRules.js +48 -48
- package/omd/simplification/rules/unaryRules.js +37 -37
- package/omd/simplification/simplificationRules.js +31 -31
- package/omd/simplification/simplificationUtils.js +1055 -1055
- package/omd/step-visualizer/omdStepVisualizer.js +947 -947
- package/omd/step-visualizer/omdStepVisualizerHighlighting.js +246 -246
- package/omd/step-visualizer/omdStepVisualizerLayout.js +892 -892
- package/omd/step-visualizer/omdStepVisualizerTextBoxes.js +200 -200
- package/omd/utils/aiNextEquationStep.js +106 -106
- package/omd/utils/omdNodeOverlay.js +638 -638
- package/omd/utils/omdPopup.js +1203 -1203
- package/omd/utils/omdStepVisualizerInteractiveSteps.js +684 -684
- package/omd/utils/omdStepVisualizerNodeUtils.js +267 -267
- package/omd/utils/omdTranscriptionService.js +123 -123
- package/omd/utils/omdTreeDiff.js +733 -733
- package/package.json +59 -57
- package/readme.html +184 -120
- package/src/index.js +74 -74
- package/src/json-schemas.md +576 -576
- package/src/omd-json-samples.js +147 -147
- package/src/omdApp.js +391 -391
- package/src/omdAppCanvas.js +335 -335
- package/src/omdBalanceHanger.js +199 -199
- package/src/omdColor.js +13 -13
- package/src/omdCoordinatePlane.js +541 -541
- package/src/omdExpression.js +115 -115
- package/src/omdFactory.js +150 -150
- package/src/omdFunction.js +114 -114
- package/src/omdMetaExpression.js +290 -290
- package/src/omdNaturalExpression.js +563 -563
- package/src/omdNode.js +383 -383
- package/src/omdNumber.js +52 -52
- package/src/omdNumberLine.js +114 -112
- package/src/omdNumberTile.js +118 -118
- package/src/omdOperator.js +72 -72
- package/src/omdPowerExpression.js +91 -91
- package/src/omdProblem.js +259 -259
- package/src/omdRatioChart.js +251 -251
- package/src/omdRationalExpression.js +114 -114
- package/src/omdSampleData.js +215 -215
- package/src/omdShapes.js +512 -512
- package/src/omdSpinner.js +151 -151
- package/src/omdString.js +49 -49
- package/src/omdTable.js +498 -498
- package/src/omdTapeDiagram.js +244 -244
- package/src/omdTerm.js +91 -91
- package/src/omdTileEquation.js +349 -349
- package/src/omdUtils.js +84 -84
- package/src/omdVariable.js +51 -51
package/README.md
CHANGED
|
@@ -1,251 +1,257 @@
|
|
|
1
|
-
# OMD (On-screen 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
|
-
##
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
###
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- **[
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- **[
|
|
64
|
-
- **[
|
|
65
|
-
- **[
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
- **[
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- **[
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
- **[
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- **[
|
|
85
|
-
- **[
|
|
86
|
-
- **[
|
|
87
|
-
- **[
|
|
88
|
-
|
|
89
|
-
#####
|
|
90
|
-
- **[
|
|
91
|
-
- **[
|
|
92
|
-
- **[
|
|
93
|
-
- **[
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- **[
|
|
97
|
-
- **[
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
###
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
###
|
|
130
|
-
- **[
|
|
131
|
-
- **[
|
|
132
|
-
- **[
|
|
133
|
-
- **[
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
│ ├──
|
|
147
|
-
│
|
|
148
|
-
│
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
##
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
1
|
+
# OMD (On-screen 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
|
+
## 📖 Full Documentation
|
|
13
|
+
|
|
14
|
+
**[View the complete documentation →](https://your-site.netlify.app/npm-docs/)**
|
|
15
|
+
|
|
16
|
+
The full documentation includes interactive examples, detailed API references, and comprehensive guides.
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
### Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install @teachinglab/omd
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Basic Usage
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
import { omdDisplay } from '@teachinglab/omd';
|
|
30
|
+
|
|
31
|
+
// Create a math display
|
|
32
|
+
const container = document.getElementById('math-container');
|
|
33
|
+
const display = new omdDisplay(container);
|
|
34
|
+
|
|
35
|
+
// Render an equation
|
|
36
|
+
display.render('2x + 3 = 11');
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Documentation
|
|
40
|
+
|
|
41
|
+
### Getting Started
|
|
42
|
+
- **[Installation & Setup](npm-docs/guides/getting-started.md)** - Get up and running with OMD
|
|
43
|
+
- **[Quick Examples](npm-docs/guides/quick-examples.md)** - Common use cases and code snippets
|
|
44
|
+
- **[Factory Functions](npm-docs/guides/factory-functions.md)** - Creating objects from JSON (AI-friendly)
|
|
45
|
+
|
|
46
|
+
### Core Concepts
|
|
47
|
+
|
|
48
|
+
#### 1. Global Context & Configuration
|
|
49
|
+
Learn about the foundational systems that power OMD:
|
|
50
|
+
|
|
51
|
+
- **[Configuration Manager](npm-docs/api/omdConfigManager.md)** - Library-wide settings and theming
|
|
52
|
+
- **[Configuration Options](npm-docs/api/configuration-options.md)** - Complete list of available settings
|
|
53
|
+
- **[Display System](npm-docs/api/omdDisplay.md)** - Main rendering engine
|
|
54
|
+
- **[Canvas System](npm-docs/api/omdCanvas.md)** - Multi-expression layout manager
|
|
55
|
+
- **[Event Manager](npm-docs/api/eventManager.md)** - Event handling and coordination
|
|
56
|
+
- **[Helpers & Utilities](npm-docs/api/omdHelpers.md)** - Utility functions for common tasks
|
|
57
|
+
|
|
58
|
+
#### 2. Visualizations
|
|
59
|
+
Interactive visual components for teaching and learning:
|
|
60
|
+
|
|
61
|
+
##### Number & Ratio Visualizations
|
|
62
|
+
- **[Number Line](npm-docs/guides/visualizations.md#number-line)** - `omdNumberLine` - Interactive number lines with dots and labels
|
|
63
|
+
- **[Number Tiles](npm-docs/guides/visualizations.md#number-tiles)** - `omdNumberTile` - Visual counting tiles with dots
|
|
64
|
+
- **[Tape Diagrams](npm-docs/guides/visualizations.md#tape-diagrams)** - `omdTapeDiagram` - Part-whole relationship diagrams
|
|
65
|
+
- **[Ratio Charts](npm-docs/guides/visualizations.md#ratio-charts)** - `omdRatioChart` - Pie and bar chart ratio visualizations
|
|
66
|
+
- **[Balance Hanger](npm-docs/guides/visualizations.md#balance-hanger)** - `omdBalanceHanger` - Balance scale visualizations
|
|
67
|
+
|
|
68
|
+
##### Graphing & Geometry
|
|
69
|
+
- **[Coordinate Plane](npm-docs/guides/visualizations.md#coordinate-plane)** - `omdCoordinatePlane` - 2D graphing with functions and shapes
|
|
70
|
+
- **[Shapes](npm-docs/guides/visualizations.md#shapes)** - `omdShapes` - Geometric shapes (circles, rectangles, polygons, triangles)
|
|
71
|
+
- **[Spinner](npm-docs/guides/visualizations.md#spinner)** - `omdSpinner` - Interactive circular spinners
|
|
72
|
+
|
|
73
|
+
##### Data Display
|
|
74
|
+
- **[Tables](npm-docs/guides/visualizations.md#tables)** - `omdTable` - Data tables with customizable styling
|
|
75
|
+
- **[Function Graphs](npm-docs/guides/visualizations.md#function-graphs)** - Plotting mathematical functions
|
|
76
|
+
|
|
77
|
+
#### 3. Equations & Expressions
|
|
78
|
+
The heart of mathematical notation and manipulation:
|
|
79
|
+
|
|
80
|
+
##### Core Expression Components
|
|
81
|
+
- **[Expression Nodes](npm-docs/api/expression-nodes.md)** - Understanding the node tree structure and omdEquationNode class
|
|
82
|
+
- **[omdEquationNode](npm-docs/api/omdEquationNode.md)** - Complete equations with manipulation methods (e.g., `2x + 3 = 11`)
|
|
83
|
+
- **[omdExpression](npm-docs/guides/equations.md#expressions)** - Mathematical expressions (e.g., `3x² + 5`)
|
|
84
|
+
- **[omdTerm](npm-docs/guides/equations.md#terms)** - Individual terms (e.g., `3x²`)
|
|
85
|
+
- **[omdNumber](npm-docs/guides/equations.md#numbers)** - Numeric constants
|
|
86
|
+
- **[omdVariable](npm-docs/guides/equations.md#variables)** - Variables (e.g., `x`, `y`)
|
|
87
|
+
- **[omdOperator](npm-docs/guides/equations.md#operators)** - Mathematical operators (+, -, ×, ÷)
|
|
88
|
+
|
|
89
|
+
##### Advanced Expression Types
|
|
90
|
+
- **[omdPowerExpression](npm-docs/guides/equations.md#power-expressions)** - Exponentiation (e.g., `(x+1)²`)
|
|
91
|
+
- **[omdRationalExpression](npm-docs/guides/equations.md#rational-expressions)** - Fractions (e.g., `(x+1)/(x-1)`)
|
|
92
|
+
- **[omdFunction](npm-docs/guides/equations.md#functions)** - Mathematical functions (e.g., `f(x) = 2x + 1`)
|
|
93
|
+
- **[omdTileEquation](npm-docs/guides/equations.md#tile-equations)** - Visual tile-based equations
|
|
94
|
+
|
|
95
|
+
##### Step-by-Step Solutions
|
|
96
|
+
- **[Equation Stack](npm-docs/api/omdEquationStack.md)** - Sequenced solution steps
|
|
97
|
+
- **[Step Visualizer](npm-docs/api/omdStepVisualizer.md)** - Interactive step visualization
|
|
98
|
+
- **[Simplification Engine](npm-docs/api/omdSimplification.md)** - Rule-based expression simplification
|
|
99
|
+
- **[Simplification Rules](npm-docs/api/simplificationRules.md)** - Available transformation rules
|
|
100
|
+
|
|
101
|
+
### Complete API Reference
|
|
102
|
+
- **[Full API Documentation](npm-docs/api/api-reference.md)** - Complete reference for all components
|
|
103
|
+
- **[JSON Schemas](npm-docs/json-schemas.md)** - Detailed JSON structure for all components
|
|
104
|
+
|
|
105
|
+
## Features
|
|
106
|
+
|
|
107
|
+
### **Interactive Math Rendering**
|
|
108
|
+
- High-quality SVG-based mathematical notation
|
|
109
|
+
- Real-time expression manipulation and visualization
|
|
110
|
+
- Automatic layout and alignment for complex equations
|
|
111
|
+
|
|
112
|
+
### **Step-by-Step Solutions**
|
|
113
|
+
- Visual step tracking with detailed explanations
|
|
114
|
+
- Simplification engine with rule-based transformations
|
|
115
|
+
- Provenance tracking for highlighting related elements
|
|
116
|
+
|
|
117
|
+
### **Rich UI Components**
|
|
118
|
+
- Built-in toolbar for common mathematical operations
|
|
119
|
+
- Drag & drop interface for intuitive manipulation
|
|
120
|
+
- Customizable canvas for multi-expression layouts
|
|
121
|
+
|
|
122
|
+
### **Educational Features**
|
|
123
|
+
- Interactive learning experiences
|
|
124
|
+
- Progressive step revelation
|
|
125
|
+
- Visual operation feedback and highlighting
|
|
126
|
+
|
|
127
|
+
## Guides
|
|
128
|
+
|
|
129
|
+
### By Use Case
|
|
130
|
+
- **[Creating Equations](npm-docs/guides/equations.md)** - Work with equations and expressions
|
|
131
|
+
- **[Visualizations Guide](npm-docs/guides/visualizations.md)** - All visualization components
|
|
132
|
+
- **[Step-by-Step Solutions](npm-docs/guides/step-by-step.md)** - Building interactive solutions
|
|
133
|
+
- **[Interactive Features](npm-docs/guides/interactive-features.md)** - Drag & drop, toolbars, and more
|
|
134
|
+
|
|
135
|
+
### Advanced Topics
|
|
136
|
+
- **[Expression Tree Structure](npm-docs/guides/expression-tree.md)** - Understanding the AST
|
|
137
|
+
- **[Custom Simplification Rules](npm-docs/guides/custom-rules.md)** - Extending the simplification engine
|
|
138
|
+
- **[Theming & Styling](npm-docs/guides/theming.md)** - Customizing appearance
|
|
139
|
+
- **[Performance Optimization](npm-docs/guides/performance.md)** - Best practices for large applications
|
|
140
|
+
|
|
141
|
+
## Architecture
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
OMD Library Structure
|
|
145
|
+
├── Core Systems
|
|
146
|
+
│ ├── Configuration Manager (Global settings)
|
|
147
|
+
│ ├── Display System (Rendering engine)
|
|
148
|
+
│ └── Event Manager (Coordination)
|
|
149
|
+
│
|
|
150
|
+
├── Visualizations
|
|
151
|
+
│ ├── Number Visualizations (Number line, tiles, tape diagrams)
|
|
152
|
+
│ ├── Graphing (Coordinate plane, functions)
|
|
153
|
+
│ └── Data Display (Tables, charts)
|
|
154
|
+
│
|
|
155
|
+
└── Equations & Expressions
|
|
156
|
+
├── Node System (Expression tree)
|
|
157
|
+
├── Equation Components (Equations, terms, operators)
|
|
158
|
+
├── Advanced Expressions (Powers, rationals, functions)
|
|
159
|
+
└── Step-by-Step System (Simplification, visualization)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Examples
|
|
163
|
+
|
|
164
|
+
### Creating Objects from JSON (Factory Method)
|
|
165
|
+
|
|
166
|
+
```javascript
|
|
167
|
+
import { createFromJSON } from '@teachinglab/omd';
|
|
168
|
+
|
|
169
|
+
// AI-generated or dynamic JSON data
|
|
170
|
+
const jsonData = {
|
|
171
|
+
omdType: 'numberLine',
|
|
172
|
+
min: 0,
|
|
173
|
+
max: 10,
|
|
174
|
+
dotValues: [2, 5, 8]
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// Create the object - no switch statement needed!
|
|
178
|
+
const numberLine = createFromJSON(jsonData);
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Basic Equation
|
|
182
|
+
```javascript
|
|
183
|
+
import { omdDisplay, omdEquationNode } from '@teachinglab/omd';
|
|
184
|
+
|
|
185
|
+
const display = new omdDisplay(document.getElementById('container'));
|
|
186
|
+
const equation = omdEquationNode.fromString('2x + 3 = 11');
|
|
187
|
+
display.render(equation);
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Step-by-Step Solution
|
|
191
|
+
```javascript
|
|
192
|
+
import { omdEquationStack } from '@teachinglab/omd';
|
|
193
|
+
|
|
194
|
+
const steps = [
|
|
195
|
+
'2x + 3 = 11',
|
|
196
|
+
'2x = 8',
|
|
197
|
+
'x = 4'
|
|
198
|
+
];
|
|
199
|
+
|
|
200
|
+
const stack = new omdEquationStack(steps.map(s =>
|
|
201
|
+
omdEquationNode.fromString(s)
|
|
202
|
+
), {
|
|
203
|
+
toolbar: true,
|
|
204
|
+
stepVisualizer: true
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
display.render(stack);
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Coordinate Plane with Function
|
|
211
|
+
```javascript
|
|
212
|
+
import { omdCoordinatePlane } from '@teachinglab/omd';
|
|
213
|
+
|
|
214
|
+
const plane = new omdCoordinatePlane();
|
|
215
|
+
plane.loadFromJSON({
|
|
216
|
+
xMin: -10, xMax: 10,
|
|
217
|
+
yMin: -10, yMax: 10,
|
|
218
|
+
graphEquations: [
|
|
219
|
+
{ equation: 'y = x^2 - 4', color: '#e11d48', strokeWidth: 2 }
|
|
220
|
+
]
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
display.render(plane);
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Number Line Visualization
|
|
227
|
+
```javascript
|
|
228
|
+
import { omdNumberLine } from '@teachinglab/omd';
|
|
229
|
+
|
|
230
|
+
const numberLine = new omdNumberLine();
|
|
231
|
+
numberLine.loadFromJSON({
|
|
232
|
+
min: 0,
|
|
233
|
+
max: 10,
|
|
234
|
+
dotValues: [2, 5, 8],
|
|
235
|
+
label: 'Number Line Example'
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
display.render(numberLine);
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Dependencies
|
|
242
|
+
|
|
243
|
+
- **JSVG** (`@teachinglab/jsvg`) - High-performance SVG rendering
|
|
244
|
+
- **math.js** - Mathematical expression parsing
|
|
245
|
+
- **Modern Browser** - ES6 modules, SVG support required
|
|
246
|
+
|
|
247
|
+
## License
|
|
248
|
+
|
|
249
|
+
MIT License - see [LICENSE](../LICENSE) for details
|
|
250
|
+
|
|
251
|
+
## Contributing
|
|
252
|
+
|
|
253
|
+
We welcome contributions! See our [contributing guidelines](../CONTRIBUTING.md) for more information.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
**Ready to get started?** Check out the [Getting Started Guide](npm-docs/guides/getting-started.md) or explore the [JSON Schemas](npm-docs/json-schemas.md) for detailed component configurations.
|