UNPKG

@teachinglab/omd

Version:

omd

199 lines (134 loc) 6.85 kB
# Configuration Options This document details all available configuration options for the OMD library, managed by the `omdConfigManager` module. These options allow you to customize various aspects of the library's behavior, appearance, and mathematical preferences. ## Overview The OMD configuration is a single JavaScript object that can be loaded from a JSON file or set programmatically. It is organized into logical categories. ## Default Configuration Structure If no custom configuration is provided, the library uses the following default structure: ```json { "multiplication": { "symbol": "·", "forceImplicit": false, "implicitCombinations": { "constantVariable": true, "variableConstant": false, "parenthesisAfterVariable": true, "parenthesisAfterConstant": true, "variableParenthesis": true, "parenthesisParenthesis": true, "parenthesisVariable": true, "parenthesisConstant": true, "variableVariable": true } }, "stepVisualizer": { "dotSizes": { "level0": 8, "level1": 6, "level2": 4 }, "fontWeights": { "level0": 400, "level1": 400, "level2": 400 } } } ``` ## Configuration Categories and Options ### `multiplication` Settings related to how multiplication is displayed and handled. - **`symbol`** {string} - The character used to represent multiplication. Default: `"·"` (middle dot). - Example: `"*"` or `"×"`. - **`forceImplicit`** {boolean} - If `true`, implicit multiplication (e.g., `2x` instead of `2 * x`) is always used where mathematically valid, overriding `implicitCombinations`. - Default: `false`. - **`implicitCombinations`** {Object} - An object defining specific scenarios where implicit multiplication should be used. Each property is a boolean. - **`constantVariable`** {boolean}: `2x` (Default: `true`) - **`variableConstant`** {boolean}: `x2` (Default: `false`) - **`parenthesisAfterVariable`** {boolean}: `x(y+z)` (Default: `true`) - **`parenthesisAfterConstant`** {boolean}: `2(x+y)` (Default: `true`) - **`variableParenthesis`** {boolean}: `(x+y)z` (Default: `true`) - **`parenthesisParenthesis`** {boolean}: `(x+y)(a+b)` (Default: `true`) - **`parenthesisVariable`** {boolean}: `(x+y)z` (Default: `true`) - **`parenthesisConstant`** {boolean}: `(x+y)2` (Default: `true`) - **`variableVariable`** {boolean}: `xy` (Default: `true`) ### `stepVisualizer` Settings specific to the `omdStepVisualizer` component, controlling the appearance of step dots and text. - **`dotSizes`** {Object} - Defines the radius of the step dots based on their importance level. - **`level0`** {number}: Radius for major steps. Default: `8`. - **`level1`** {number}: Radius for minor steps. Default: `6`. - **`level2`** {number}: Radius for detailed steps. Default: `4`. - **`fontWeights`** {Object} - Defines the font weight for the equations based on their importance level. - **`level0`** {number}: Font weight for major steps. Default: `400`. - **`level1`** {number}: Font weight for minor steps. Default: `400`. - **`level2`** {number}: Font weight for detailed steps. Default: `400`. ## Usage Configuration options can be set during initialization or updated at runtime using the `omdConfigManager` functions. ### `initializeConfig(configSource)` Initializes the configuration by loading it from a file or object. This should be called early in the application lifecycle. - **`configSource`** {string|Object} (optional) - The path to a JSON configuration file or a configuration object. ```javascript import { initializeConfig } from '@teachinglab/omd'; // Initialize with a custom config file await initializeConfig('./my-custom-omd-config.json'); ``` ### `setConfig(config)` Sets the configuration directly, bypassing file loading. - **`config`** {Object} - A configuration object. ```javascript import { setConfig } from '@teachinglab/omd'; setConfig({ multiplication: { symbol: '*' } }); ``` ### `getDefaultConfig()` Returns a copy of the default configuration object. - **Returns** {Object} - The default configuration. ### `isEnabled(category, setting)` Checks if a specific feature is enabled in the configuration. - **`category`** {string} - The configuration category (e.g., 'multiplication'). - **`setting`** {string} - The specific setting to check. - **Returns** {boolean} - `true` if the setting is enabled, `false` otherwise. ### `useImplicitMultiplication(combination)` Checks if implicit multiplication should be used for a specific combination of terms. - **`combination`** {string} (optional) - The type of combination (e.g., 'constantVariable'). If not provided, it checks the `forceImplicit` setting. - **Returns** {boolean} - `true` if implicit multiplication should be used. ### `getMultiplicationSymbol()` Returns the configured multiplication symbol. - **Returns** {string} - The multiplication symbol. ### `updateConfig(category, setting, value)` Updates a configuration setting at runtime. - **`category`** {string} - The configuration category. - **`setting`** {string} - The setting to update. - **`value`** {any} - The new value. ### `getConfigValue(path)` Retrieves a configuration value using a dot-separated path. - **`path`** {string} - The path to the value (e.g., 'multiplication.symbol'). - **Returns** {any} - The configuration value. ### `setConfigValue(path, value)` Sets a configuration value using a dot-separated path. - **`path`** {string} - The path to the value. - **`value`** {any} - The new value. ### `resetConfig()` Resets the configuration to its default state. Note: In the current implementation, this throws an error and advises to edit the `omdConfig.json` file directly. ### `reloadConfig()` Reloads the configuration from the JSON file. - **Returns** {Promise<Object>} - A promise that resolves to the reloaded configuration object. ### `getConfigAsync()` Asynchronously retrieves the configuration object, loading it if necessary. - **Returns** {Promise<Object>} - A promise that resolves to the configuration object. ### `getDotRadius(level)` Gets the dot radius for a given step level in the step visualizer. - **`level`** {number} (optional, default: 0) - The step level (0, 1, or 2). - **Returns** {number} - The dot radius. ### `getFontWeight(level)` Gets the font weight for a given step level in the step visualizer. - **`level`** {number} (optional, default: 0) - The step level (0, 1, or 2). - **Returns** {number} - The font weight.