π File detail
ink/components/CursorDeclarationContext.ts
π§© .tsπ 33 linesπΎ 1,119 bytesπ text
β Back to All Filesπ― Use case
This file lives under βink/β, which covers Ink terminal UI (layouts, TTY IO, keyboard, renderer components). On the API surface it exposes CursorDeclaration and CursorDeclarationSetter β mainly types, interfaces, or factory objects. Dependencies touch React UI. It composes internal code from dom (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { createContext } from 'react' import type { DOMElement } from '../dom.js' export type CursorDeclaration = { /** Display column (terminal cell width) within the declared node */
π€ Exports (heuristic)
CursorDeclarationCursorDeclarationSetterdefault
π External import roots
Package roots from from "β¦" (relative paths omitted).
react
π₯οΈ Source preview
import { createContext } from 'react'
import type { DOMElement } from '../dom.js'
export type CursorDeclaration = {
/** Display column (terminal cell width) within the declared node */
readonly relativeX: number
/** Line number within the declared node */
readonly relativeY: number
/** The ink-box DOMElement whose yoga layout provides the absolute origin */
readonly node: DOMElement
}
/**
* Setter for the declared cursor position.
*
* The optional second argument makes `null` a conditional clear: the
* declaration is only cleared if the currently-declared node matches
* `clearIfNode`. This makes the hook safe for sibling components
* (e.g. list items) that transfer focus among themselves β without the
* node check, a newly-unfocused item's clear could clobber a
* newly-focused sibling's set depending on layout-effect order.
*/
export type CursorDeclarationSetter = (
declaration: CursorDeclaration | null,
clearIfNode?: DOMElement | null,
) => void
const CursorDeclarationContext = createContext<CursorDeclarationSetter>(
() => {},
)
export default CursorDeclarationContext