@teachinglab/omd 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -251
- package/README.old.md +137 -137
- package/canvas/core/canvasConfig.js +202 -202
- package/canvas/drawing/segment.js +167 -167
- package/canvas/drawing/stroke.js +385 -385
- package/canvas/events/eventManager.js +444 -444
- package/canvas/events/pointerEventHandler.js +262 -262
- package/canvas/index.js +48 -48
- package/canvas/tools/PointerTool.js +71 -71
- package/canvas/tools/tool.js +222 -222
- package/canvas/utils/boundingBox.js +377 -377
- package/canvas/utils/mathUtils.js +258 -258
- package/docs/api/configuration-options.md +198 -198
- package/docs/api/eventManager.md +82 -82
- package/docs/api/focusFrameManager.md +144 -144
- package/docs/api/index.md +105 -105
- package/docs/api/main.md +62 -62
- package/docs/api/omdBinaryExpressionNode.md +86 -86
- package/docs/api/omdCanvas.md +83 -83
- package/docs/api/omdConfigManager.md +112 -112
- package/docs/api/omdConstantNode.md +52 -52
- package/docs/api/omdDisplay.md +87 -87
- package/docs/api/omdEquationNode.md +174 -174
- package/docs/api/omdEquationSequenceNode.md +258 -258
- package/docs/api/omdEquationStack.md +192 -192
- package/docs/api/omdFunctionNode.md +82 -82
- package/docs/api/omdGroupNode.md +78 -78
- package/docs/api/omdHelpers.md +87 -87
- package/docs/api/omdLeafNode.md +85 -85
- package/docs/api/omdNode.md +201 -201
- package/docs/api/omdOperationDisplayNode.md +117 -117
- package/docs/api/omdOperatorNode.md +91 -91
- package/docs/api/omdParenthesisNode.md +133 -133
- package/docs/api/omdPopup.md +191 -191
- package/docs/api/omdPowerNode.md +131 -131
- package/docs/api/omdRationalNode.md +144 -144
- package/docs/api/omdSequenceNode.md +128 -128
- package/docs/api/omdSimplification.md +78 -78
- package/docs/api/omdSqrtNode.md +144 -144
- package/docs/api/omdStepVisualizer.md +146 -146
- package/docs/api/omdStepVisualizerHighlighting.md +65 -65
- package/docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
- package/docs/api/omdStepVisualizerLayout.md +70 -70
- package/docs/api/omdStepVisualizerNodeUtils.md +140 -140
- package/docs/api/omdStepVisualizerTextBoxes.md +76 -76
- package/docs/api/omdToolbar.md +130 -130
- package/docs/api/omdTranscriptionService.md +95 -95
- package/docs/api/omdTreeDiff.md +169 -169
- package/docs/api/omdUnaryExpressionNode.md +137 -137
- package/docs/api/omdUtilities.md +82 -82
- package/docs/api/omdVariableNode.md +123 -123
- package/docs/api/selectTool.md +74 -74
- package/docs/api/simplificationEngine.md +97 -97
- package/docs/api/simplificationRules.md +76 -76
- package/docs/api/simplificationUtils.md +64 -64
- package/docs/api/transcribe.md +43 -43
- package/docs/api-reference.md +85 -85
- package/docs/index.html +453 -453
- package/docs/index.md +38 -38
- package/docs/omd-objects.md +258 -258
- package/index.js +79 -79
- package/jsvg/index.js +3 -0
- package/jsvg/jsvg.js +898 -898
- package/jsvg/jsvgComponents.js +357 -358
- package/npm-docs/DOCUMENTATION_SUMMARY.md +220 -220
- package/npm-docs/README.md +251 -251
- package/npm-docs/api/api-reference.md +85 -85
- package/npm-docs/api/configuration-options.md +198 -198
- package/npm-docs/api/eventManager.md +82 -82
- package/npm-docs/api/expression-nodes.md +561 -561
- package/npm-docs/api/focusFrameManager.md +144 -144
- package/npm-docs/api/index.md +105 -105
- package/npm-docs/api/main.md +62 -62
- package/npm-docs/api/omdBinaryExpressionNode.md +86 -86
- package/npm-docs/api/omdCanvas.md +83 -83
- package/npm-docs/api/omdConfigManager.md +112 -112
- package/npm-docs/api/omdConstantNode.md +52 -52
- package/npm-docs/api/omdDisplay.md +87 -87
- package/npm-docs/api/omdEquationNode.md +174 -174
- package/npm-docs/api/omdEquationSequenceNode.md +258 -258
- package/npm-docs/api/omdEquationStack.md +192 -192
- package/npm-docs/api/omdFunctionNode.md +82 -82
- package/npm-docs/api/omdGroupNode.md +78 -78
- package/npm-docs/api/omdHelpers.md +87 -87
- package/npm-docs/api/omdLeafNode.md +85 -85
- package/npm-docs/api/omdNode.md +201 -201
- package/npm-docs/api/omdOperationDisplayNode.md +117 -117
- package/npm-docs/api/omdOperatorNode.md +91 -91
- package/npm-docs/api/omdParenthesisNode.md +133 -133
- package/npm-docs/api/omdPopup.md +191 -191
- package/npm-docs/api/omdPowerNode.md +131 -131
- package/npm-docs/api/omdRationalNode.md +144 -144
- package/npm-docs/api/omdSequenceNode.md +128 -128
- package/npm-docs/api/omdSimplification.md +78 -78
- package/npm-docs/api/omdSqrtNode.md +144 -144
- package/npm-docs/api/omdStepVisualizer.md +146 -146
- package/npm-docs/api/omdStepVisualizerHighlighting.md +65 -65
- package/npm-docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
- package/npm-docs/api/omdStepVisualizerLayout.md +70 -70
- package/npm-docs/api/omdStepVisualizerNodeUtils.md +140 -140
- package/npm-docs/api/omdStepVisualizerTextBoxes.md +76 -76
- package/npm-docs/api/omdToolbar.md +130 -130
- package/npm-docs/api/omdTranscriptionService.md +95 -95
- package/npm-docs/api/omdTreeDiff.md +169 -169
- package/npm-docs/api/omdUnaryExpressionNode.md +137 -137
- package/npm-docs/api/omdUtilities.md +82 -82
- package/npm-docs/api/omdVariableNode.md +123 -123
- package/npm-docs/api/selectTool.md +74 -74
- package/npm-docs/api/simplificationEngine.md +97 -97
- package/npm-docs/api/simplificationRules.md +76 -76
- package/npm-docs/api/simplificationUtils.md +64 -64
- package/npm-docs/api/transcribe.md +43 -43
- package/npm-docs/guides/equations.md +854 -854
- package/npm-docs/guides/factory-functions.md +354 -354
- package/npm-docs/guides/getting-started.md +318 -318
- package/npm-docs/guides/quick-examples.md +525 -525
- package/npm-docs/guides/visualizations.md +682 -682
- package/npm-docs/index.html +12 -0
- package/npm-docs/json-schemas.md +826 -826
- package/omd/config/omdConfigManager.js +279 -267
- package/omd/core/index.js +158 -158
- package/omd/core/omdEquationStack.js +606 -547
- package/omd/core/omdUtilities.js +113 -113
- package/omd/display/omdDisplay.js +1045 -963
- package/omd/display/omdToolbar.js +501 -501
- package/omd/nodes/omdBinaryExpressionNode.js +459 -459
- package/omd/nodes/omdConstantNode.js +141 -141
- package/omd/nodes/omdEquationNode.js +1327 -1327
- package/omd/nodes/omdFunctionNode.js +351 -351
- package/omd/nodes/omdGroupNode.js +67 -67
- package/omd/nodes/omdLeafNode.js +76 -76
- package/omd/nodes/omdNode.js +556 -556
- package/omd/nodes/omdOperationDisplayNode.js +321 -321
- package/omd/nodes/omdOperatorNode.js +108 -108
- package/omd/nodes/omdParenthesisNode.js +292 -292
- package/omd/nodes/omdPowerNode.js +235 -235
- package/omd/nodes/omdRationalNode.js +295 -295
- package/omd/nodes/omdSqrtNode.js +307 -307
- package/omd/nodes/omdUnaryExpressionNode.js +227 -227
- package/omd/nodes/omdVariableNode.js +122 -122
- package/omd/simplification/omdSimplification.js +140 -140
- package/omd/simplification/omdSimplificationEngine.js +887 -887
- package/omd/simplification/package.json +5 -5
- package/omd/simplification/rules/binaryRules.js +1037 -1037
- package/omd/simplification/rules/functionRules.js +111 -111
- package/omd/simplification/rules/index.js +48 -48
- package/omd/simplification/rules/parenthesisRules.js +19 -19
- package/omd/simplification/rules/powerRules.js +143 -143
- package/omd/simplification/rules/rationalRules.js +725 -725
- package/omd/simplification/rules/sqrtRules.js +48 -48
- package/omd/simplification/rules/unaryRules.js +37 -37
- package/omd/simplification/simplificationRules.js +31 -31
- package/omd/simplification/simplificationUtils.js +1055 -1055
- package/omd/step-visualizer/omdStepVisualizer.js +947 -947
- package/omd/step-visualizer/omdStepVisualizerHighlighting.js +246 -246
- package/omd/step-visualizer/omdStepVisualizerLayout.js +892 -892
- package/omd/step-visualizer/omdStepVisualizerTextBoxes.js +200 -200
- package/omd/utils/aiNextEquationStep.js +106 -106
- package/omd/utils/omdNodeOverlay.js +638 -638
- package/omd/utils/omdPopup.js +1203 -1203
- package/omd/utils/omdStepVisualizerInteractiveSteps.js +684 -684
- package/omd/utils/omdStepVisualizerNodeUtils.js +267 -267
- package/omd/utils/omdTranscriptionService.js +123 -123
- package/omd/utils/omdTreeDiff.js +733 -733
- package/package.json +59 -57
- package/readme.html +184 -120
- package/src/index.js +74 -74
- package/src/json-schemas.md +576 -576
- package/src/omd-json-samples.js +147 -147
- package/src/omdApp.js +391 -391
- package/src/omdAppCanvas.js +335 -335
- package/src/omdBalanceHanger.js +199 -199
- package/src/omdColor.js +13 -13
- package/src/omdCoordinatePlane.js +541 -541
- package/src/omdExpression.js +115 -115
- package/src/omdFactory.js +150 -150
- package/src/omdFunction.js +114 -114
- package/src/omdMetaExpression.js +290 -290
- package/src/omdNaturalExpression.js +563 -563
- package/src/omdNode.js +383 -383
- package/src/omdNumber.js +52 -52
- package/src/omdNumberLine.js +114 -112
- package/src/omdNumberTile.js +118 -118
- package/src/omdOperator.js +72 -72
- package/src/omdPowerExpression.js +91 -91
- package/src/omdProblem.js +259 -259
- package/src/omdRatioChart.js +251 -251
- package/src/omdRationalExpression.js +114 -114
- package/src/omdSampleData.js +215 -215
- package/src/omdShapes.js +512 -512
- package/src/omdSpinner.js +151 -151
- package/src/omdString.js +49 -49
- package/src/omdTable.js +498 -498
- package/src/omdTapeDiagram.js +244 -244
- package/src/omdTerm.js +91 -91
- package/src/omdTileEquation.js +349 -349
- package/src/omdUtils.js +84 -84
- package/src/omdVariable.js +51 -51
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
import { omdLeafNode } from "./omdLeafNode.js";
|
|
2
|
-
import { omdColor } from "../../src/omdColor.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Leaf node that represents a numerical constant.
|
|
6
|
-
* @extends omdLeafNode
|
|
7
|
-
*/
|
|
8
|
-
export class omdConstantNode extends omdLeafNode {
|
|
9
|
-
/**
|
|
10
|
-
* Creates object from AST data.
|
|
11
|
-
* @param {Object} astNodeData - The AST node containing leaf information.
|
|
12
|
-
*/
|
|
13
|
-
constructor(nodeData) {
|
|
14
|
-
super(nodeData);
|
|
15
|
-
this.type = "omdConstantNode";
|
|
16
|
-
|
|
17
|
-
this.number = this.parseNumber(nodeData);
|
|
18
|
-
|
|
19
|
-
this.textElement = super.createTextElement(this.number);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
parseNumber(nodeData) {
|
|
23
|
-
if (typeof nodeData === "number")
|
|
24
|
-
return nodeData;
|
|
25
|
-
|
|
26
|
-
return nodeData.value;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
parseType() {
|
|
30
|
-
return "constant";
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Calculates the dimensions of the node.
|
|
35
|
-
* Adds padding around the node.
|
|
36
|
-
* @override
|
|
37
|
-
*/
|
|
38
|
-
computeDimensions() {
|
|
39
|
-
super.computeDimensions();
|
|
40
|
-
|
|
41
|
-
const ratio = this.getFontSize() / this.getRootFontSize();
|
|
42
|
-
const padding = 4 * ratio;
|
|
43
|
-
let paddedWidth = this.width + padding;
|
|
44
|
-
let paddedHeight = this.height + padding;
|
|
45
|
-
this.setWidthAndHeight(paddedWidth, paddedHeight);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Updates the layout of the node.
|
|
50
|
-
* @override
|
|
51
|
-
*/
|
|
52
|
-
updateLayout() {
|
|
53
|
-
super.updateLayout();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* A constant node is constant if its value is a number.
|
|
58
|
-
* @returns {boolean}
|
|
59
|
-
*/
|
|
60
|
-
isConstant() {
|
|
61
|
-
return typeof this.number === 'number';
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* The value of a constant node is its own value.
|
|
66
|
-
* @returns {number}
|
|
67
|
-
*/
|
|
68
|
-
getValue() {
|
|
69
|
-
return this.number;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Converts the constant node to a string.
|
|
74
|
-
* @returns {string} The string value of the constant.
|
|
75
|
-
*/
|
|
76
|
-
toString() {
|
|
77
|
-
return this.number.toString();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Evaluates the constant node.
|
|
82
|
-
* @returns {number} The numeric value of the constant.
|
|
83
|
-
*/
|
|
84
|
-
evaluate() {
|
|
85
|
-
return this.number;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Retrieves the rational value of the node as a numerator/denominator pair.
|
|
90
|
-
* @returns {{num: number, den: number}}
|
|
91
|
-
*/
|
|
92
|
-
getRationalValue() {
|
|
93
|
-
return { num: this.getValue(), den: 1 };
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Converts the omdConstantNode to a math.js AST node.
|
|
98
|
-
* @returns {Object} A math.js-compatible AST node.
|
|
99
|
-
*/
|
|
100
|
-
toMathJSNode() {
|
|
101
|
-
const astNode = {
|
|
102
|
-
type: 'ConstantNode',
|
|
103
|
-
value: this.number,
|
|
104
|
-
id: this.id,
|
|
105
|
-
provenance: this.provenance
|
|
106
|
-
};
|
|
107
|
-
// Add a clone method to maintain compatibility with math.js's expectations.
|
|
108
|
-
astNode.clone = function() {
|
|
109
|
-
return { ...this };
|
|
110
|
-
};
|
|
111
|
-
return astNode;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
highlight(color) {
|
|
115
|
-
super.highlight(color);
|
|
116
|
-
if (this.textElement) {
|
|
117
|
-
this.textElement.setFillColor(omdColor.white);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
clearProvenanceHighlights() {
|
|
122
|
-
super.clearProvenanceHighlights();
|
|
123
|
-
if (this.textElement) {
|
|
124
|
-
this.textElement.setFillColor(omdColor.text);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Create a constant node from a numeric value.
|
|
130
|
-
* @param {number} value - The numeric value
|
|
131
|
-
* @returns {omdConstantNode}
|
|
132
|
-
* @static
|
|
133
|
-
*/
|
|
134
|
-
static fromValue(value) {
|
|
135
|
-
// Create a minimal AST-like object for the constructor
|
|
136
|
-
const astNodeData = {
|
|
137
|
-
type: 'ConstantNode',
|
|
138
|
-
value: value
|
|
139
|
-
};
|
|
140
|
-
return new omdConstantNode(astNodeData);
|
|
141
|
-
}
|
|
1
|
+
import { omdLeafNode } from "./omdLeafNode.js";
|
|
2
|
+
import { omdColor } from "../../src/omdColor.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Leaf node that represents a numerical constant.
|
|
6
|
+
* @extends omdLeafNode
|
|
7
|
+
*/
|
|
8
|
+
export class omdConstantNode extends omdLeafNode {
|
|
9
|
+
/**
|
|
10
|
+
* Creates object from AST data.
|
|
11
|
+
* @param {Object} astNodeData - The AST node containing leaf information.
|
|
12
|
+
*/
|
|
13
|
+
constructor(nodeData) {
|
|
14
|
+
super(nodeData);
|
|
15
|
+
this.type = "omdConstantNode";
|
|
16
|
+
|
|
17
|
+
this.number = this.parseNumber(nodeData);
|
|
18
|
+
|
|
19
|
+
this.textElement = super.createTextElement(this.number);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
parseNumber(nodeData) {
|
|
23
|
+
if (typeof nodeData === "number")
|
|
24
|
+
return nodeData;
|
|
25
|
+
|
|
26
|
+
return nodeData.value;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
parseType() {
|
|
30
|
+
return "constant";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Calculates the dimensions of the node.
|
|
35
|
+
* Adds padding around the node.
|
|
36
|
+
* @override
|
|
37
|
+
*/
|
|
38
|
+
computeDimensions() {
|
|
39
|
+
super.computeDimensions();
|
|
40
|
+
|
|
41
|
+
const ratio = this.getFontSize() / this.getRootFontSize();
|
|
42
|
+
const padding = 4 * ratio;
|
|
43
|
+
let paddedWidth = this.width + padding;
|
|
44
|
+
let paddedHeight = this.height + padding;
|
|
45
|
+
this.setWidthAndHeight(paddedWidth, paddedHeight);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Updates the layout of the node.
|
|
50
|
+
* @override
|
|
51
|
+
*/
|
|
52
|
+
updateLayout() {
|
|
53
|
+
super.updateLayout();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* A constant node is constant if its value is a number.
|
|
58
|
+
* @returns {boolean}
|
|
59
|
+
*/
|
|
60
|
+
isConstant() {
|
|
61
|
+
return typeof this.number === 'number';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The value of a constant node is its own value.
|
|
66
|
+
* @returns {number}
|
|
67
|
+
*/
|
|
68
|
+
getValue() {
|
|
69
|
+
return this.number;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Converts the constant node to a string.
|
|
74
|
+
* @returns {string} The string value of the constant.
|
|
75
|
+
*/
|
|
76
|
+
toString() {
|
|
77
|
+
return this.number.toString();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Evaluates the constant node.
|
|
82
|
+
* @returns {number} The numeric value of the constant.
|
|
83
|
+
*/
|
|
84
|
+
evaluate() {
|
|
85
|
+
return this.number;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Retrieves the rational value of the node as a numerator/denominator pair.
|
|
90
|
+
* @returns {{num: number, den: number}}
|
|
91
|
+
*/
|
|
92
|
+
getRationalValue() {
|
|
93
|
+
return { num: this.getValue(), den: 1 };
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Converts the omdConstantNode to a math.js AST node.
|
|
98
|
+
* @returns {Object} A math.js-compatible AST node.
|
|
99
|
+
*/
|
|
100
|
+
toMathJSNode() {
|
|
101
|
+
const astNode = {
|
|
102
|
+
type: 'ConstantNode',
|
|
103
|
+
value: this.number,
|
|
104
|
+
id: this.id,
|
|
105
|
+
provenance: this.provenance
|
|
106
|
+
};
|
|
107
|
+
// Add a clone method to maintain compatibility with math.js's expectations.
|
|
108
|
+
astNode.clone = function() {
|
|
109
|
+
return { ...this };
|
|
110
|
+
};
|
|
111
|
+
return astNode;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
highlight(color) {
|
|
115
|
+
super.highlight(color);
|
|
116
|
+
if (this.textElement) {
|
|
117
|
+
this.textElement.setFillColor(omdColor.white);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
clearProvenanceHighlights() {
|
|
122
|
+
super.clearProvenanceHighlights();
|
|
123
|
+
if (this.textElement) {
|
|
124
|
+
this.textElement.setFillColor(omdColor.text);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Create a constant node from a numeric value.
|
|
130
|
+
* @param {number} value - The numeric value
|
|
131
|
+
* @returns {omdConstantNode}
|
|
132
|
+
* @static
|
|
133
|
+
*/
|
|
134
|
+
static fromValue(value) {
|
|
135
|
+
// Create a minimal AST-like object for the constructor
|
|
136
|
+
const astNodeData = {
|
|
137
|
+
type: 'ConstantNode',
|
|
138
|
+
value: value
|
|
139
|
+
};
|
|
140
|
+
return new omdConstantNode(astNodeData);
|
|
141
|
+
}
|
|
142
142
|
}
|