@teachinglab/omd 0.5.7 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +190 -77
- package/README.old.md +138 -0
- 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 +4 -3
- package/src/index.js +2 -0
- package/src/omdFactory.js +150 -0
package/README.md
CHANGED
|
@@ -1,9 +1,101 @@
|
|
|
1
|
-
# OMD (
|
|
1
|
+
# OMD (On-screen Math Display)
|
|
2
2
|
|
|
3
|
-
|
|
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.
|
|
4
9
|
|
|
5
10
|

|
|
6
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
|
+
|
|
7
99
|
## Features
|
|
8
100
|
|
|
9
101
|
### **Interactive Math Rendering**
|
|
@@ -26,38 +118,82 @@ OMD is a JavaScript library for creating interactive mathematical interfaces in
|
|
|
26
118
|
- Progressive step revelation
|
|
27
119
|
- Visual operation feedback and highlighting
|
|
28
120
|
|
|
29
|
-
##
|
|
121
|
+
## Guides
|
|
30
122
|
|
|
31
|
-
###
|
|
32
|
-
|
|
33
|
-
|
|
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)
|
|
34
154
|
```
|
|
35
155
|
|
|
36
|
-
##
|
|
156
|
+
## Examples
|
|
157
|
+
|
|
158
|
+
### Creating Objects from JSON (Factory Method)
|
|
159
|
+
|
|
37
160
|
```javascript
|
|
38
|
-
import {
|
|
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
|
+
```
|
|
39
174
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
175
|
+
### Basic Equation
|
|
176
|
+
```javascript
|
|
177
|
+
import { omdDisplay, omdEquationNode } from '@teachinglab/omd';
|
|
43
178
|
|
|
44
|
-
|
|
45
|
-
|
|
179
|
+
const display = new omdDisplay(document.getElementById('container'));
|
|
180
|
+
const equation = omdEquationNode.fromString('2x + 3 = 11');
|
|
181
|
+
display.render(equation);
|
|
46
182
|
```
|
|
47
183
|
|
|
48
|
-
### Step-by-Step
|
|
184
|
+
### Step-by-Step Solution
|
|
49
185
|
```javascript
|
|
50
|
-
import { omdEquationStack
|
|
186
|
+
import { omdEquationStack } from '@teachinglab/omd';
|
|
51
187
|
|
|
52
|
-
// Create solution steps
|
|
53
188
|
const steps = [
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
189
|
+
'2x + 3 = 11',
|
|
190
|
+
'2x = 8',
|
|
191
|
+
'x = 4'
|
|
57
192
|
];
|
|
58
193
|
|
|
59
|
-
|
|
60
|
-
|
|
194
|
+
const stack = new omdEquationStack(steps.map(s =>
|
|
195
|
+
omdEquationNode.fromString(s)
|
|
196
|
+
), {
|
|
61
197
|
toolbar: true,
|
|
62
198
|
stepVisualizer: true
|
|
63
199
|
});
|
|
@@ -65,74 +201,51 @@ const stack = new omdEquationStack(steps, {
|
|
|
65
201
|
display.render(stack);
|
|
66
202
|
```
|
|
67
203
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
### **Nodes** - Building Blocks
|
|
71
|
-
Every mathematical element is a node in an expression tree:
|
|
72
|
-
- `omdEquationNode` - Complete equations (e.g., `2x + 3 = 11`)
|
|
73
|
-
- `omdConstantNode` - Numbers (e.g., `5`, `3.14`)
|
|
74
|
-
- `omdVariableNode` - Variables (e.g., `x`, `y`)
|
|
75
|
-
- `omdBinaryExpressionNode` - Operations (e.g., `+`, `-`, `*`, `/`)
|
|
76
|
-
|
|
77
|
-
### **Sequences** - Solution Steps
|
|
78
|
-
Group related equations for step-by-step solving:
|
|
204
|
+
### Coordinate Plane with Function
|
|
79
205
|
```javascript
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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);
|
|
83
218
|
```
|
|
84
219
|
|
|
85
|
-
###
|
|
86
|
-
Handles layout, centering, and visualization:
|
|
220
|
+
### Number Line Visualization
|
|
87
221
|
```javascript
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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'
|
|
91
230
|
});
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Interactive Examples
|
|
95
|
-
|
|
96
|
-
Explore OMD's capabilities with our comprehensive examples:
|
|
97
|
-
|
|
98
|
-
| Category | Example | Description |
|
|
99
|
-
|----------|---------|-------------|
|
|
100
|
-
| **Getting Started** | [Minimal](examples/minimal.html) | Basic equation rendering |
|
|
101
|
-
| | [Simple Usage](examples/simple-usage.html) | Interactive features |
|
|
102
|
-
| **Advanced** | [Expression Playground](examples/expression-playground.html) | Full manipulation interface |
|
|
103
|
-
| | [Drag & Drop](examples/drag-and-drop-playground.html) | Intuitive interaction |
|
|
104
|
-
| **Educational** | [Worked Solutions](examples/worked-solution.html) | Step-by-step solving |
|
|
105
|
-
| | [Kids Interactive](examples/kids-interactive.html) | Child-friendly interface |
|
|
106
|
-
| **Components** | [Equation Stack](examples/equation-stack-test.html) | Stacked equations |
|
|
107
|
-
| | [Canvas Demo](examples/canvas-multiple-nodes.html) | Multi-expression layouts |
|
|
108
231
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
## Documentation
|
|
232
|
+
display.render(numberLine);
|
|
233
|
+
```
|
|
112
234
|
|
|
113
|
-
|
|
114
|
-
|----------|-------------|
|
|
115
|
-
| **[API Reference](docs/api-reference.md)** | Complete component documentation |
|
|
116
|
-
| **[User Guide](docs/user-guide.md)** | Getting started and tutorials |
|
|
235
|
+
## Dependencies
|
|
117
236
|
|
|
237
|
+
- **JSVG** (`@teachinglab/jsvg`) - High-performance SVG rendering
|
|
238
|
+
- **math.js** - Mathematical expression parsing
|
|
239
|
+
- **Modern Browser** - ES6 modules, SVG support required
|
|
118
240
|
|
|
119
|
-
##
|
|
241
|
+
## License
|
|
120
242
|
|
|
121
|
-
|
|
122
|
-
OMD Library Structure
|
|
123
|
-
├── Display Layer (omdDisplay)
|
|
124
|
-
├── Node System (Expression tree components)
|
|
125
|
-
├── UI Components (Toolbar, Step visualizer)
|
|
126
|
-
├── Core Systems (Simplification, Layout)
|
|
127
|
-
└── Utilities (Configuration, Helpers)
|
|
128
|
-
```
|
|
243
|
+
MIT License - see [LICENSE](../LICENSE) for details
|
|
129
244
|
|
|
130
|
-
##
|
|
245
|
+
## Contributing
|
|
131
246
|
|
|
132
|
-
|
|
133
|
-
- **math.js** - Mathematical expression parsing
|
|
134
|
-
- **Modern Browser** - ES6 modules, SVG support
|
|
247
|
+
We welcome contributions! See our [contributing guidelines](../CONTRIBUTING.md) for more information.
|
|
135
248
|
|
|
136
249
|
---
|
|
137
250
|
|
|
138
|
-
**Ready to get started?** Check out
|
|
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.
|
package/README.old.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# OMD (Open Math Display)
|
|
2
|
+
|
|
3
|
+
OMD is a JavaScript library for creating interactive mathematical interfaces in web applications. Build everything from simple equation displays to complex step-by-step solution systems with rich visual feedback and user interaction.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
### **Interactive Math Rendering**
|
|
10
|
+
- High-quality SVG-based mathematical notation
|
|
11
|
+
- Real-time expression manipulation and visualization
|
|
12
|
+
- Automatic layout and alignment for complex equations
|
|
13
|
+
|
|
14
|
+
### **Step-by-Step Solutions**
|
|
15
|
+
- Visual step tracking with detailed explanations
|
|
16
|
+
- Simplification engine with rule-based transformations
|
|
17
|
+
- Provenance tracking for highlighting related elements
|
|
18
|
+
|
|
19
|
+
### **Rich UI Components**
|
|
20
|
+
- Built-in toolbar for common mathematical operations
|
|
21
|
+
- Drag & drop interface for intuitive manipulation
|
|
22
|
+
- Customizable canvas for multi-expression layouts
|
|
23
|
+
|
|
24
|
+
### **Educational Features**
|
|
25
|
+
- Interactive learning experiences
|
|
26
|
+
- Progressive step revelation
|
|
27
|
+
- Visual operation feedback and highlighting
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
### npm
|
|
32
|
+
```bash
|
|
33
|
+
npm install @teachinglab/omd
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Basic Usage
|
|
37
|
+
```javascript
|
|
38
|
+
import { omdDisplay } from '@teachinglab/omd';
|
|
39
|
+
|
|
40
|
+
// Create a math display
|
|
41
|
+
const container = document.getElementById('math-container');
|
|
42
|
+
const display = new omdDisplay(container);
|
|
43
|
+
|
|
44
|
+
// Render an equation
|
|
45
|
+
display.render('2x + 3 = 11');
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step-by-Step Solutions
|
|
49
|
+
```javascript
|
|
50
|
+
import { omdEquationStack, omdEquationNode } from '@teachinglab/omd';
|
|
51
|
+
|
|
52
|
+
// Create solution steps
|
|
53
|
+
const steps = [
|
|
54
|
+
omdEquationNode.fromString('2x + 3 = 11'),
|
|
55
|
+
omdEquationNode.fromString('2x = 8'),
|
|
56
|
+
omdEquationNode.fromString('x = 4')
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
// Create interactive equation stack
|
|
60
|
+
const stack = new omdEquationStack(steps, {
|
|
61
|
+
toolbar: true,
|
|
62
|
+
stepVisualizer: true
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
display.render(stack);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Core Concepts
|
|
69
|
+
|
|
70
|
+
### **Nodes** - Building Blocks
|
|
71
|
+
Every mathematical element is a node in an expression tree:
|
|
72
|
+
- `omdEquationNode` - Complete equations (e.g., `2x + 3 = 11`)
|
|
73
|
+
- `omdConstantNode` - Numbers (e.g., `5`, `3.14`)
|
|
74
|
+
- `omdVariableNode` - Variables (e.g., `x`, `y`)
|
|
75
|
+
- `omdBinaryExpressionNode` - Operations (e.g., `+`, `-`, `*`, `/`)
|
|
76
|
+
|
|
77
|
+
### **Sequences** - Solution Steps
|
|
78
|
+
Group related equations for step-by-step solving:
|
|
79
|
+
```javascript
|
|
80
|
+
const sequence = new omdEquationSequenceNode([
|
|
81
|
+
equation1, equation2, equation3
|
|
82
|
+
]);
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### **Display** - Rendering Engine
|
|
86
|
+
Handles layout, centering, and visualization:
|
|
87
|
+
```javascript
|
|
88
|
+
const display = new omdDisplay(container, {
|
|
89
|
+
fontSize: 36,
|
|
90
|
+
centerContent: true
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Interactive Examples
|
|
95
|
+
|
|
96
|
+
Explore OMD's capabilities with our comprehensive examples:
|
|
97
|
+
|
|
98
|
+
| Category | Example | Description |
|
|
99
|
+
|----------|---------|-------------|
|
|
100
|
+
| **Getting Started** | [Minimal](examples/minimal.html) | Basic equation rendering |
|
|
101
|
+
| | [Simple Usage](examples/simple-usage.html) | Interactive features |
|
|
102
|
+
| **Advanced** | [Expression Playground](examples/expression-playground.html) | Full manipulation interface |
|
|
103
|
+
| | [Drag & Drop](examples/drag-and-drop-playground.html) | Intuitive interaction |
|
|
104
|
+
| **Educational** | [Worked Solutions](examples/worked-solution.html) | Step-by-step solving |
|
|
105
|
+
| | [Kids Interactive](examples/kids-interactive.html) | Child-friendly interface |
|
|
106
|
+
| **Components** | [Equation Stack](examples/equation-stack-test.html) | Stacked equations |
|
|
107
|
+
| | [Canvas Demo](examples/canvas-multiple-nodes.html) | Multi-expression layouts |
|
|
108
|
+
|
|
109
|
+
**[Browse All Examples](examples/index.html)**
|
|
110
|
+
|
|
111
|
+
## Documentation
|
|
112
|
+
|
|
113
|
+
| Resource | Description |
|
|
114
|
+
|----------|-------------|
|
|
115
|
+
| **[API Reference](docs/api-reference.md)** | Complete component documentation |
|
|
116
|
+
| **[User Guide](docs/user-guide.md)** | Getting started and tutorials |
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## Architecture
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
OMD Library Structure
|
|
123
|
+
├── Display Layer (omdDisplay)
|
|
124
|
+
├── Node System (Expression tree components)
|
|
125
|
+
├── UI Components (Toolbar, Step visualizer)
|
|
126
|
+
├── Core Systems (Simplification, Layout)
|
|
127
|
+
└── Utilities (Configuration, Helpers)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Dependencies
|
|
131
|
+
|
|
132
|
+
- **JSVG** - High-performance SVG rendering
|
|
133
|
+
- **math.js** - Mathematical expression parsing
|
|
134
|
+
- **Modern Browser** - ES6 modules, SVG support
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**Ready to get started?** Check out our [examples](examples/index.html) or dive into the [documentation](docs/api-reference.md)!
|
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!**
|