@teachinglab/omd 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +257 -251
  2. package/README.old.md +137 -137
  3. package/canvas/core/canvasConfig.js +202 -202
  4. package/canvas/drawing/segment.js +167 -167
  5. package/canvas/drawing/stroke.js +385 -385
  6. package/canvas/events/eventManager.js +444 -444
  7. package/canvas/events/pointerEventHandler.js +262 -262
  8. package/canvas/index.js +48 -48
  9. package/canvas/tools/PointerTool.js +71 -71
  10. package/canvas/tools/tool.js +222 -222
  11. package/canvas/utils/boundingBox.js +377 -377
  12. package/canvas/utils/mathUtils.js +258 -258
  13. package/docs/api/configuration-options.md +198 -198
  14. package/docs/api/eventManager.md +82 -82
  15. package/docs/api/focusFrameManager.md +144 -144
  16. package/docs/api/index.md +105 -105
  17. package/docs/api/main.md +62 -62
  18. package/docs/api/omdBinaryExpressionNode.md +86 -86
  19. package/docs/api/omdCanvas.md +83 -83
  20. package/docs/api/omdConfigManager.md +112 -112
  21. package/docs/api/omdConstantNode.md +52 -52
  22. package/docs/api/omdDisplay.md +87 -87
  23. package/docs/api/omdEquationNode.md +174 -174
  24. package/docs/api/omdEquationSequenceNode.md +258 -258
  25. package/docs/api/omdEquationStack.md +192 -192
  26. package/docs/api/omdFunctionNode.md +82 -82
  27. package/docs/api/omdGroupNode.md +78 -78
  28. package/docs/api/omdHelpers.md +87 -87
  29. package/docs/api/omdLeafNode.md +85 -85
  30. package/docs/api/omdNode.md +201 -201
  31. package/docs/api/omdOperationDisplayNode.md +117 -117
  32. package/docs/api/omdOperatorNode.md +91 -91
  33. package/docs/api/omdParenthesisNode.md +133 -133
  34. package/docs/api/omdPopup.md +191 -191
  35. package/docs/api/omdPowerNode.md +131 -131
  36. package/docs/api/omdRationalNode.md +144 -144
  37. package/docs/api/omdSequenceNode.md +128 -128
  38. package/docs/api/omdSimplification.md +78 -78
  39. package/docs/api/omdSqrtNode.md +144 -144
  40. package/docs/api/omdStepVisualizer.md +146 -146
  41. package/docs/api/omdStepVisualizerHighlighting.md +65 -65
  42. package/docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
  43. package/docs/api/omdStepVisualizerLayout.md +70 -70
  44. package/docs/api/omdStepVisualizerNodeUtils.md +140 -140
  45. package/docs/api/omdStepVisualizerTextBoxes.md +76 -76
  46. package/docs/api/omdToolbar.md +130 -130
  47. package/docs/api/omdTranscriptionService.md +95 -95
  48. package/docs/api/omdTreeDiff.md +169 -169
  49. package/docs/api/omdUnaryExpressionNode.md +137 -137
  50. package/docs/api/omdUtilities.md +82 -82
  51. package/docs/api/omdVariableNode.md +123 -123
  52. package/docs/api/selectTool.md +74 -74
  53. package/docs/api/simplificationEngine.md +97 -97
  54. package/docs/api/simplificationRules.md +76 -76
  55. package/docs/api/simplificationUtils.md +64 -64
  56. package/docs/api/transcribe.md +43 -43
  57. package/docs/api-reference.md +85 -85
  58. package/docs/index.html +453 -453
  59. package/docs/index.md +38 -38
  60. package/docs/omd-objects.md +258 -258
  61. package/index.js +79 -79
  62. package/jsvg/index.js +3 -0
  63. package/jsvg/jsvg.js +898 -898
  64. package/jsvg/jsvgComponents.js +357 -358
  65. package/npm-docs/DOCUMENTATION_SUMMARY.md +220 -220
  66. package/npm-docs/README.md +251 -251
  67. package/npm-docs/api/api-reference.md +85 -85
  68. package/npm-docs/api/configuration-options.md +198 -198
  69. package/npm-docs/api/eventManager.md +82 -82
  70. package/npm-docs/api/expression-nodes.md +561 -561
  71. package/npm-docs/api/focusFrameManager.md +144 -144
  72. package/npm-docs/api/index.md +105 -105
  73. package/npm-docs/api/main.md +62 -62
  74. package/npm-docs/api/omdBinaryExpressionNode.md +86 -86
  75. package/npm-docs/api/omdCanvas.md +83 -83
  76. package/npm-docs/api/omdConfigManager.md +112 -112
  77. package/npm-docs/api/omdConstantNode.md +52 -52
  78. package/npm-docs/api/omdDisplay.md +87 -87
  79. package/npm-docs/api/omdEquationNode.md +174 -174
  80. package/npm-docs/api/omdEquationSequenceNode.md +258 -258
  81. package/npm-docs/api/omdEquationStack.md +192 -192
  82. package/npm-docs/api/omdFunctionNode.md +82 -82
  83. package/npm-docs/api/omdGroupNode.md +78 -78
  84. package/npm-docs/api/omdHelpers.md +87 -87
  85. package/npm-docs/api/omdLeafNode.md +85 -85
  86. package/npm-docs/api/omdNode.md +201 -201
  87. package/npm-docs/api/omdOperationDisplayNode.md +117 -117
  88. package/npm-docs/api/omdOperatorNode.md +91 -91
  89. package/npm-docs/api/omdParenthesisNode.md +133 -133
  90. package/npm-docs/api/omdPopup.md +191 -191
  91. package/npm-docs/api/omdPowerNode.md +131 -131
  92. package/npm-docs/api/omdRationalNode.md +144 -144
  93. package/npm-docs/api/omdSequenceNode.md +128 -128
  94. package/npm-docs/api/omdSimplification.md +78 -78
  95. package/npm-docs/api/omdSqrtNode.md +144 -144
  96. package/npm-docs/api/omdStepVisualizer.md +146 -146
  97. package/npm-docs/api/omdStepVisualizerHighlighting.md +65 -65
  98. package/npm-docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
  99. package/npm-docs/api/omdStepVisualizerLayout.md +70 -70
  100. package/npm-docs/api/omdStepVisualizerNodeUtils.md +140 -140
  101. package/npm-docs/api/omdStepVisualizerTextBoxes.md +76 -76
  102. package/npm-docs/api/omdToolbar.md +130 -130
  103. package/npm-docs/api/omdTranscriptionService.md +95 -95
  104. package/npm-docs/api/omdTreeDiff.md +169 -169
  105. package/npm-docs/api/omdUnaryExpressionNode.md +137 -137
  106. package/npm-docs/api/omdUtilities.md +82 -82
  107. package/npm-docs/api/omdVariableNode.md +123 -123
  108. package/npm-docs/api/selectTool.md +74 -74
  109. package/npm-docs/api/simplificationEngine.md +97 -97
  110. package/npm-docs/api/simplificationRules.md +76 -76
  111. package/npm-docs/api/simplificationUtils.md +64 -64
  112. package/npm-docs/api/transcribe.md +43 -43
  113. package/npm-docs/guides/equations.md +854 -854
  114. package/npm-docs/guides/factory-functions.md +354 -354
  115. package/npm-docs/guides/getting-started.md +318 -318
  116. package/npm-docs/guides/quick-examples.md +525 -525
  117. package/npm-docs/guides/visualizations.md +682 -682
  118. package/npm-docs/index.html +12 -0
  119. package/npm-docs/json-schemas.md +826 -826
  120. package/omd/config/omdConfigManager.js +279 -267
  121. package/omd/core/index.js +158 -158
  122. package/omd/core/omdEquationStack.js +546 -546
  123. package/omd/core/omdUtilities.js +113 -113
  124. package/omd/display/omdDisplay.js +969 -962
  125. package/omd/display/omdToolbar.js +501 -501
  126. package/omd/nodes/omdBinaryExpressionNode.js +459 -459
  127. package/omd/nodes/omdConstantNode.js +141 -141
  128. package/omd/nodes/omdEquationNode.js +1327 -1327
  129. package/omd/nodes/omdFunctionNode.js +351 -351
  130. package/omd/nodes/omdGroupNode.js +67 -67
  131. package/omd/nodes/omdLeafNode.js +76 -76
  132. package/omd/nodes/omdNode.js +556 -556
  133. package/omd/nodes/omdOperationDisplayNode.js +321 -321
  134. package/omd/nodes/omdOperatorNode.js +108 -108
  135. package/omd/nodes/omdParenthesisNode.js +292 -292
  136. package/omd/nodes/omdPowerNode.js +235 -235
  137. package/omd/nodes/omdRationalNode.js +295 -295
  138. package/omd/nodes/omdSqrtNode.js +307 -307
  139. package/omd/nodes/omdUnaryExpressionNode.js +227 -227
  140. package/omd/nodes/omdVariableNode.js +122 -122
  141. package/omd/simplification/omdSimplification.js +140 -140
  142. package/omd/simplification/omdSimplificationEngine.js +887 -887
  143. package/omd/simplification/package.json +5 -5
  144. package/omd/simplification/rules/binaryRules.js +1037 -1037
  145. package/omd/simplification/rules/functionRules.js +111 -111
  146. package/omd/simplification/rules/index.js +48 -48
  147. package/omd/simplification/rules/parenthesisRules.js +19 -19
  148. package/omd/simplification/rules/powerRules.js +143 -143
  149. package/omd/simplification/rules/rationalRules.js +725 -725
  150. package/omd/simplification/rules/sqrtRules.js +48 -48
  151. package/omd/simplification/rules/unaryRules.js +37 -37
  152. package/omd/simplification/simplificationRules.js +31 -31
  153. package/omd/simplification/simplificationUtils.js +1055 -1055
  154. package/omd/step-visualizer/omdStepVisualizer.js +947 -947
  155. package/omd/step-visualizer/omdStepVisualizerHighlighting.js +246 -246
  156. package/omd/step-visualizer/omdStepVisualizerLayout.js +892 -892
  157. package/omd/step-visualizer/omdStepVisualizerTextBoxes.js +200 -200
  158. package/omd/utils/aiNextEquationStep.js +106 -106
  159. package/omd/utils/omdNodeOverlay.js +638 -638
  160. package/omd/utils/omdPopup.js +1203 -1203
  161. package/omd/utils/omdStepVisualizerInteractiveSteps.js +684 -684
  162. package/omd/utils/omdStepVisualizerNodeUtils.js +267 -267
  163. package/omd/utils/omdTranscriptionService.js +123 -123
  164. package/omd/utils/omdTreeDiff.js +733 -733
  165. package/package.json +59 -56
  166. package/readme.html +184 -120
  167. package/src/index.js +74 -74
  168. package/src/json-schemas.md +576 -576
  169. package/src/omd-json-samples.js +147 -147
  170. package/src/omdApp.js +391 -391
  171. package/src/omdAppCanvas.js +335 -335
  172. package/src/omdBalanceHanger.js +199 -199
  173. package/src/omdColor.js +13 -13
  174. package/src/omdCoordinatePlane.js +541 -541
  175. package/src/omdExpression.js +115 -115
  176. package/src/omdFactory.js +150 -150
  177. package/src/omdFunction.js +114 -114
  178. package/src/omdMetaExpression.js +290 -290
  179. package/src/omdNaturalExpression.js +563 -563
  180. package/src/omdNode.js +383 -383
  181. package/src/omdNumber.js +52 -52
  182. package/src/omdNumberLine.js +114 -112
  183. package/src/omdNumberTile.js +118 -118
  184. package/src/omdOperator.js +72 -72
  185. package/src/omdPowerExpression.js +91 -91
  186. package/src/omdProblem.js +259 -259
  187. package/src/omdRatioChart.js +251 -251
  188. package/src/omdRationalExpression.js +114 -114
  189. package/src/omdSampleData.js +215 -215
  190. package/src/omdShapes.js +512 -512
  191. package/src/omdSpinner.js +151 -151
  192. package/src/omdString.js +49 -49
  193. package/src/omdTable.js +498 -498
  194. package/src/omdTapeDiagram.js +244 -244
  195. package/src/omdTerm.js +91 -91
  196. package/src/omdTileEquation.js +349 -349
  197. package/src/omdUtils.js +84 -84
  198. 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
- [![npm version](https://img.shields.io/npm/v/@teachinglab/omd.svg)](https://www.npmjs.com/package/@teachinglab/omd)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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
- ![OMD Demo](https://i.imgur.com/CdtEi33.png)
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.
1
+ # OMD (On-screen Math Display)
2
+
3
+ > A JavaScript library for creating interactive mathematical interfaces in web applications
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@teachinglab/omd.svg)](https://www.npmjs.com/package/@teachinglab/omd)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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
+ ![OMD Demo](https://i.imgur.com/CdtEi33.png)
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.