(nodeName: ElementNames)
| 108 | export type DOMNodeAttribute = boolean | string | number |
| 109 | |
| 110 | export const createNode = (nodeName: ElementNames): DOMElement => { |
| 111 | const needsYogaNode = |
| 112 | nodeName !== 'ink-virtual-text' && |
| 113 | nodeName !== 'ink-link' && |
| 114 | nodeName !== 'ink-progress' |
| 115 | const node: DOMElement = { |
| 116 | nodeName, |
| 117 | style: {}, |
| 118 | attributes: {}, |
| 119 | childNodes: [], |
| 120 | parentNode: undefined, |
| 121 | yogaNode: needsYogaNode ? createLayoutNode() : undefined, |
| 122 | dirty: false, |
| 123 | } |
| 124 | |
| 125 | if (nodeName === 'ink-text') { |
| 126 | node.yogaNode?.setMeasureFunc(measureTextNode.bind(null, node)) |
| 127 | } else if (nodeName === 'ink-raw-ansi') { |
| 128 | node.yogaNode?.setMeasureFunc(measureRawAnsiNode.bind(null, node)) |
| 129 | } |
| 130 | |
| 131 | return node |
| 132 | } |
| 133 | |
| 134 | export const appendChildNode = ( |
| 135 | node: DOMElement, |
no test coverage detected