@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.
- 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 +546 -546
- package/omd/core/omdUtilities.js +113 -113
- package/omd/display/omdDisplay.js +969 -962
- 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 -56
- 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,48 +1,48 @@
|
|
|
1
|
-
import { SimplificationEngine } from '../omdSimplificationEngine.js';
|
|
2
|
-
import * as utils from '../simplificationUtils.js';
|
|
3
|
-
|
|
4
|
-
// ===== SQRT NODE RULES =====
|
|
5
|
-
export const sqrtRules = [
|
|
6
|
-
// Simplify square root of perfect squares (sqrt(9) → 3)
|
|
7
|
-
SimplificationEngine.createRule("Simplify Square Root of Constant",
|
|
8
|
-
(node) => {
|
|
9
|
-
if (!node.argument.isConstant()) return false;
|
|
10
|
-
const value = node.argument.getValue();
|
|
11
|
-
if (value < 0) return false;
|
|
12
|
-
|
|
13
|
-
const sqrt = Math.sqrt(value);
|
|
14
|
-
return Number.isInteger(sqrt) ? { value: sqrt } : false;
|
|
15
|
-
},
|
|
16
|
-
(node, data) => {
|
|
17
|
-
const newNode = SimplificationEngine.createConstant(data.value, node.getFontSize());
|
|
18
|
-
newNode.provenance.push(node.id, node.argument.id);
|
|
19
|
-
return newNode;
|
|
20
|
-
},
|
|
21
|
-
(originalNode, ruleData, newNode) => {
|
|
22
|
-
const value = originalNode.argument.getValue();
|
|
23
|
-
const result = ruleData.value;
|
|
24
|
-
return `Calculated square root: √${value} = ${result}`;
|
|
25
|
-
}
|
|
26
|
-
),
|
|
27
|
-
|
|
28
|
-
// Simplify sqrt(x^2) → x (assuming x ≥ 0 for simplicity)
|
|
29
|
-
SimplificationEngine.createRule("Square Root of Square",
|
|
30
|
-
(node) => {
|
|
31
|
-
if (!node.argument || node.argument.type !== 'omdPowerNode') return false;
|
|
32
|
-
|
|
33
|
-
const powerNode = node.argument;
|
|
34
|
-
if (!powerNode.exponent.isConstant() || powerNode.exponent.getValue() !== 2) return false;
|
|
35
|
-
|
|
36
|
-
return { base: powerNode.base };
|
|
37
|
-
},
|
|
38
|
-
(node, data) => {
|
|
39
|
-
const newNode = data.base.clone();
|
|
40
|
-
newNode.provenance.push(node.id, node.argument.id);
|
|
41
|
-
return newNode;
|
|
42
|
-
},
|
|
43
|
-
(originalNode, ruleData, newNode) => {
|
|
44
|
-
const baseStr = utils.nodeToString(ruleData.base);
|
|
45
|
-
return `Simplified square root of square: √(${baseStr}²) = ${baseStr}`;
|
|
46
|
-
}
|
|
47
|
-
)
|
|
48
|
-
];
|
|
1
|
+
import { SimplificationEngine } from '../omdSimplificationEngine.js';
|
|
2
|
+
import * as utils from '../simplificationUtils.js';
|
|
3
|
+
|
|
4
|
+
// ===== SQRT NODE RULES =====
|
|
5
|
+
export const sqrtRules = [
|
|
6
|
+
// Simplify square root of perfect squares (sqrt(9) → 3)
|
|
7
|
+
SimplificationEngine.createRule("Simplify Square Root of Constant",
|
|
8
|
+
(node) => {
|
|
9
|
+
if (!node.argument.isConstant()) return false;
|
|
10
|
+
const value = node.argument.getValue();
|
|
11
|
+
if (value < 0) return false;
|
|
12
|
+
|
|
13
|
+
const sqrt = Math.sqrt(value);
|
|
14
|
+
return Number.isInteger(sqrt) ? { value: sqrt } : false;
|
|
15
|
+
},
|
|
16
|
+
(node, data) => {
|
|
17
|
+
const newNode = SimplificationEngine.createConstant(data.value, node.getFontSize());
|
|
18
|
+
newNode.provenance.push(node.id, node.argument.id);
|
|
19
|
+
return newNode;
|
|
20
|
+
},
|
|
21
|
+
(originalNode, ruleData, newNode) => {
|
|
22
|
+
const value = originalNode.argument.getValue();
|
|
23
|
+
const result = ruleData.value;
|
|
24
|
+
return `Calculated square root: √${value} = ${result}`;
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
|
|
28
|
+
// Simplify sqrt(x^2) → x (assuming x ≥ 0 for simplicity)
|
|
29
|
+
SimplificationEngine.createRule("Square Root of Square",
|
|
30
|
+
(node) => {
|
|
31
|
+
if (!node.argument || node.argument.type !== 'omdPowerNode') return false;
|
|
32
|
+
|
|
33
|
+
const powerNode = node.argument;
|
|
34
|
+
if (!powerNode.exponent.isConstant() || powerNode.exponent.getValue() !== 2) return false;
|
|
35
|
+
|
|
36
|
+
return { base: powerNode.base };
|
|
37
|
+
},
|
|
38
|
+
(node, data) => {
|
|
39
|
+
const newNode = data.base.clone();
|
|
40
|
+
newNode.provenance.push(node.id, node.argument.id);
|
|
41
|
+
return newNode;
|
|
42
|
+
},
|
|
43
|
+
(originalNode, ruleData, newNode) => {
|
|
44
|
+
const baseStr = utils.nodeToString(ruleData.base);
|
|
45
|
+
return `Simplified square root of square: √(${baseStr}²) = ${baseStr}`;
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
];
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { SimplificationEngine } from '../omdSimplificationEngine.js';
|
|
2
|
-
import * as utils from '../simplificationUtils.js';
|
|
3
|
-
|
|
4
|
-
// ===== UNARY EXPRESSION RULES =====
|
|
5
|
-
export const unaryRules = [
|
|
6
|
-
// Simplify double negation (-(-x) → x)
|
|
7
|
-
SimplificationEngine.createRule("Simplify Double Negation",
|
|
8
|
-
(node) => {
|
|
9
|
-
return node.operation === 'unaryMinus' &&
|
|
10
|
-
SimplificationEngine.isType(node.argument, 'omdUnaryExpressionNode') &&
|
|
11
|
-
node.argument.operation === 'unaryMinus';
|
|
12
|
-
},
|
|
13
|
-
(node) => {
|
|
14
|
-
const newNode = node.argument.argument.clone();
|
|
15
|
-
newNode.provenance.push(node.id, node.argument.id);
|
|
16
|
-
return newNode;
|
|
17
|
-
},
|
|
18
|
-
(originalNode, ruleData, newNode) => {
|
|
19
|
-
const childStr = utils.nodeToString(originalNode.argument.argument);
|
|
20
|
-
return `Simplified double negation: -(-${childStr}) = ${childStr}`;
|
|
21
|
-
}
|
|
22
|
-
),
|
|
23
|
-
|
|
24
|
-
// Remove unary plus (+x → x)
|
|
25
|
-
SimplificationEngine.createRule("Remove Unary Plus",
|
|
26
|
-
(node) => node.operation === 'unaryPlus',
|
|
27
|
-
(node) => {
|
|
28
|
-
const newNode = node.argument.clone();
|
|
29
|
-
newNode.provenance.push(node.id);
|
|
30
|
-
return newNode;
|
|
31
|
-
},
|
|
32
|
-
(originalNode, ruleData, newNode) => {
|
|
33
|
-
const childStr = utils.nodeToString(originalNode.argument);
|
|
34
|
-
return `Removed unary plus from "${childStr}"`;
|
|
35
|
-
}
|
|
36
|
-
)
|
|
37
|
-
];
|
|
1
|
+
import { SimplificationEngine } from '../omdSimplificationEngine.js';
|
|
2
|
+
import * as utils from '../simplificationUtils.js';
|
|
3
|
+
|
|
4
|
+
// ===== UNARY EXPRESSION RULES =====
|
|
5
|
+
export const unaryRules = [
|
|
6
|
+
// Simplify double negation (-(-x) → x)
|
|
7
|
+
SimplificationEngine.createRule("Simplify Double Negation",
|
|
8
|
+
(node) => {
|
|
9
|
+
return node.operation === 'unaryMinus' &&
|
|
10
|
+
SimplificationEngine.isType(node.argument, 'omdUnaryExpressionNode') &&
|
|
11
|
+
node.argument.operation === 'unaryMinus';
|
|
12
|
+
},
|
|
13
|
+
(node) => {
|
|
14
|
+
const newNode = node.argument.argument.clone();
|
|
15
|
+
newNode.provenance.push(node.id, node.argument.id);
|
|
16
|
+
return newNode;
|
|
17
|
+
},
|
|
18
|
+
(originalNode, ruleData, newNode) => {
|
|
19
|
+
const childStr = utils.nodeToString(originalNode.argument.argument);
|
|
20
|
+
return `Simplified double negation: -(-${childStr}) = ${childStr}`;
|
|
21
|
+
}
|
|
22
|
+
),
|
|
23
|
+
|
|
24
|
+
// Remove unary plus (+x → x)
|
|
25
|
+
SimplificationEngine.createRule("Remove Unary Plus",
|
|
26
|
+
(node) => node.operation === 'unaryPlus',
|
|
27
|
+
(node) => {
|
|
28
|
+
const newNode = node.argument.clone();
|
|
29
|
+
newNode.provenance.push(node.id);
|
|
30
|
+
return newNode;
|
|
31
|
+
},
|
|
32
|
+
(originalNode, ruleData, newNode) => {
|
|
33
|
+
const childStr = utils.nodeToString(originalNode.argument);
|
|
34
|
+
return `Removed unary plus from "${childStr}"`;
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
];
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
// Import rules progressively to identify the problematic one
|
|
2
|
-
import { unaryRules } from './rules/unaryRules.js';
|
|
3
|
-
import { parenthesisRules } from './rules/parenthesisRules.js';
|
|
4
|
-
import { sqrtRules } from './rules/sqrtRules.js';
|
|
5
|
-
import { powerRules } from './rules/powerRules.js';
|
|
6
|
-
import { functionRules } from './rules/functionRules.js';
|
|
7
|
-
import { rationalRules } from './rules/rationalRules.js';
|
|
8
|
-
import { binaryRules } from './rules/binaryRules.js';
|
|
9
|
-
|
|
10
|
-
export const rules = {
|
|
11
|
-
binary: binaryRules,
|
|
12
|
-
rational: rationalRules,
|
|
13
|
-
parenthesis: parenthesisRules,
|
|
14
|
-
unary: unaryRules,
|
|
15
|
-
power: powerRules,
|
|
16
|
-
sqrt: sqrtRules,
|
|
17
|
-
function: functionRules
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export const ruleMap = {
|
|
21
|
-
'omdBinaryExpressionNode': rules.binary,
|
|
22
|
-
'omdRationalNode': rules.rational,
|
|
23
|
-
'omdParenthesisNode': rules.parenthesis,
|
|
24
|
-
'omdUnaryExpressionNode': rules.unary,
|
|
25
|
-
'omdPowerNode': rules.power,
|
|
26
|
-
'omdSqrtNode': rules.sqrt,
|
|
27
|
-
'omdFunctionNode': rules.function
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export function getRulesForNode(node) {
|
|
31
|
-
return ruleMap[node.type] || [];
|
|
1
|
+
// Import rules progressively to identify the problematic one
|
|
2
|
+
import { unaryRules } from './rules/unaryRules.js';
|
|
3
|
+
import { parenthesisRules } from './rules/parenthesisRules.js';
|
|
4
|
+
import { sqrtRules } from './rules/sqrtRules.js';
|
|
5
|
+
import { powerRules } from './rules/powerRules.js';
|
|
6
|
+
import { functionRules } from './rules/functionRules.js';
|
|
7
|
+
import { rationalRules } from './rules/rationalRules.js';
|
|
8
|
+
import { binaryRules } from './rules/binaryRules.js';
|
|
9
|
+
|
|
10
|
+
export const rules = {
|
|
11
|
+
binary: binaryRules,
|
|
12
|
+
rational: rationalRules,
|
|
13
|
+
parenthesis: parenthesisRules,
|
|
14
|
+
unary: unaryRules,
|
|
15
|
+
power: powerRules,
|
|
16
|
+
sqrt: sqrtRules,
|
|
17
|
+
function: functionRules
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const ruleMap = {
|
|
21
|
+
'omdBinaryExpressionNode': rules.binary,
|
|
22
|
+
'omdRationalNode': rules.rational,
|
|
23
|
+
'omdParenthesisNode': rules.parenthesis,
|
|
24
|
+
'omdUnaryExpressionNode': rules.unary,
|
|
25
|
+
'omdPowerNode': rules.power,
|
|
26
|
+
'omdSqrtNode': rules.sqrt,
|
|
27
|
+
'omdFunctionNode': rules.function
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export function getRulesForNode(node) {
|
|
31
|
+
return ruleMap[node.type] || [];
|
|
32
32
|
}
|