# omdGroupNode

Represents a single grouping symbol, such as `(` or `)`, as a leaf node in the expression tree. This node is primarily used for visual representation and layout, rather than mathematical operations.

## Class Definition

    export class omdGroupNode extends omdLeafNode

## Constructor

### `new omdGroupNode(nodeData)`

Creates a new `omdGroupNode` instance.

- `nodeData` (`string`): The single character string representing the grouping symbol (e.g., `'('`, `')'`, `'['`, `']'`).

## Public Properties

- `symbol` (`string`): The grouping symbol character (e.g., `'('`).
- `type` (`string`): Always `"parenthesis"` for this node type.
- `textElement` (`jsvgTextLine`): The internal `jsvgTextLine` instance responsible for rendering the symbol.

## Public Methods

### `clone()`

Creates a deep clone of the group node. The new node's `provenance` array is updated to include the original node's ID.

- Returns: `omdGroupNode` - A new, identical instance of the group node.

### `computeDimensions()`

Calculates the dimensions of the node based on its text content. Unlike other leaf nodes, `omdGroupNode` does not add extra padding around the symbol, allowing for tighter visual integration.

- Overrides: `omdLeafNode.computeDimensions()`.

### `updateLayout()`

Updates the position of the node's internal text element. This method primarily calls the superclass's `updateLayout`.

- Overrides: `omdLeafNode.updateLayout()`.

### `toMathJSNode()`

Converts the `omdGroupNode` to a math.js-compatible AST format. It represents the grouping symbol as a `SymbolNode`.

- Returns: `object` - A math.js-compatible AST node with `type: "SymbolNode"` and `name` set to the grouping symbol. The returned object also includes a `clone` method for compatibility.

## Internal Methods

- `parseSymbol(nodeData)`: Extracts the symbol from the constructor's `nodeData`. Returns the input string unchanged.
- `parseType()`: Sets the node's type. Always returns `"parenthesis"`.

## Example

    // Create grouping symbols
    const leftParen = new omdGroupNode('(');
    const rightParen = new omdGroupNode(')');
    const leftBracket = new omdGroupNode('[');

    // Render a symbol
    const node = new omdGroupNode('(');
    node.setFontSize(24);
    node.initialize(); // Computes dimensions and layout

    // Add to an SVG container to display
    // const svgContainer = new jsvgContainer();
    // svgContainer.addChild(node);
    // document.body.appendChild(svgContainer.svgObject);

## See Also

- `omdLeafNode` - The parent class for all leaf nodes.
- `omdNode` - The base class for all OMD nodes.
- `omdParenthesisNode` - For complete parenthetical expressions that contain other nodes.

↑