@teachinglab/omd 0.5.7 → 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/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/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.
|