π File detail
ink/get-max-width.ts
π§© .tsπ 28 linesπΎ 1,149 bytesπ text
β Back to All Filesπ― Use case
This file lives under βink/β, which covers Ink terminal UI (layouts, TTY IO, keyboard, renderer components). It primarily provides a default export (component, class, or entry function). It composes internal code from layout (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { LayoutEdge, type LayoutNode } from './layout/node.js' /** * Returns the yoga node's content width (computed width minus padding and * border).
π€ Exports (heuristic)
default
π₯οΈ Source preview
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