| import { LayoutEdge, type LayoutNode } from './layout/node.js' | |
| /** | |
| * Returns the yoga node's content width (computed width minus padding and | |
| * border). | |
| * | |
| * Warning: can return a value WIDER than the parent container. In a | |
| * column-direction flex parent, width is the cross axis — align-items: | |
| * stretch never shrinks children below their intrinsic size, so the text | |
| * node overflows (standard CSS behavior). Yoga measures leaf nodes in two | |
| * passes: the AtMost pass determines width, the Exactly pass determines | |
| * height. getComputedWidth() reflects the wider AtMost result while | |
| * getComputedHeight() reflects the narrower Exactly result. Callers that | |
| * use this for wrapping should clamp to actual available screen space so | |
| * the rendered line count stays consistent with the layout height. | |
| */ | |
| const getMaxWidth = (yogaNode: LayoutNode): number => { | |
| return ( | |
| yogaNode.getComputedWidth() - | |
| yogaNode.getComputedPadding(LayoutEdge.Left) - | |
| yogaNode.getComputedPadding(LayoutEdge.Right) - | |
| yogaNode.getComputedBorder(LayoutEdge.Left) - | |
| yogaNode.getComputedBorder(LayoutEdge.Right) | |
| ) | |
| } | |
| export default getMaxWidth | |