source dump of claude code
at main 27 lines 1.1 kB view raw
1import { LayoutEdge, type LayoutNode } from './layout/node.js' 2 3/** 4 * Returns the yoga node's content width (computed width minus padding and 5 * border). 6 * 7 * Warning: can return a value WIDER than the parent container. In a 8 * column-direction flex parent, width is the cross axis — align-items: 9 * stretch never shrinks children below their intrinsic size, so the text 10 * node overflows (standard CSS behavior). Yoga measures leaf nodes in two 11 * passes: the AtMost pass determines width, the Exactly pass determines 12 * height. getComputedWidth() reflects the wider AtMost result while 13 * getComputedHeight() reflects the narrower Exactly result. Callers that 14 * use this for wrapping should clamp to actual available screen space so 15 * the rendered line count stays consistent with the layout height. 16 */ 17const getMaxWidth = (yogaNode: LayoutNode): number => { 18 return ( 19 yogaNode.getComputedWidth() - 20 yogaNode.getComputedPadding(LayoutEdge.Left) - 21 yogaNode.getComputedPadding(LayoutEdge.Right) - 22 yogaNode.getComputedBorder(LayoutEdge.Left) - 23 yogaNode.getComputedBorder(LayoutEdge.Right) 24 ) 25} 26 27export default getMaxWidth