These docs describe the main branch, including unreleased changes. Read the 0.6.0 docs.

OpenTUI 0.3.0

npm

This release has no release notes. The list below comes from its published type declarations.

API changes#

@opentui/core#

Added

  • class ASCIIFontRenderable extends FrameBufferRenderable
  • class ASCIIFontSelectionHelper
  • class ArrowRenderable extends Renderable
  • class Audio extends EventEmitter<AudioEvents>
  • abstract class BaseRenderable extends EventEmitter
  • class BloomEffect
  • class BoxRenderable extends Renderable
  • class CRTRollingBarEffect
  • class CliRenderer extends EventEmitter implements RenderContext
  • class CloudsEffect
  • class CodeRenderable extends TextBufferRenderable
  • class DataPathsManager extends EventEmitter<DataPathsEvents>
  • class DiffRenderable extends Renderable
  • class DistortionEffect
  • class EditBuffer extends EventEmitter
  • abstract class EditBufferRenderable extends Renderable implements LineInfoProvider
  • class EditorView
  • class ExtmarksController
  • class FlamesEffect
  • class FrameBufferRenderable extends Renderable
  • class InputRenderable extends TextareaRenderable
  • class InternalKeyHandler extends KeyHandler
  • class KeyEvent implements ParsedKey
  • class KeyHandler extends EventEmitter<KeyHandlerEventMap>
  • class LineNumberRenderable extends Renderable
  • class LinearScrollAccel implements ScrollAcceleration
  • class MacOSScrollAccel implements ScrollAcceleration
  • class MarkdownRenderable extends Renderable
  • class MouseEvent
  • class MouseParser
  • class NativeSpanFeed
  • class OptimizedBuffer
  • class PasteEvent
  • class RGBA
  • class RainbowTextEffect
  • abstract class Renderable extends BaseRenderable
  • class RootRenderable extends Renderable
  • class RootTextNodeRenderable extends TextNodeRenderable
  • class ScrollBarRenderable extends Renderable
  • class ScrollBoxRenderable extends BoxRenderable
  • class SelectRenderable extends Renderable
  • class Selection
  • class SliderRenderable extends Renderable
  • class SlotRegistry<TNode, TSlots extends object, TContext extends PluginContext = PluginContext>
  • class SlotRenderable<TSlotName extends string = string, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>> extends Renderable
  • class StdinParser
  • class StyledText
  • class SyntaxStyle
  • class SystemClock implements Clock
  • class TabSelectRenderable extends Renderable
  • class TerminalConsole extends EventEmitter
  • class TerminalPalette implements TerminalPaletteDetector
  • class TextBuffer
  • abstract class TextBufferRenderable extends Renderable implements LineInfoProvider
  • class TextBufferView
  • class TextNodeRenderable extends BaseRenderable
  • class TextRenderable extends TextBufferRenderable
  • class TextTableRenderable extends Renderable
  • class TextareaRenderable extends EditBufferRenderable
  • class TimeToFirstDrawRenderable extends Renderable
  • class Timeline
  • class TreeSitterClient extends EventEmitter<TreeSitterClientEvents>
  • class VRenderable extends Renderable
  • class VignetteEffect
  • const ACHROMATOPSIA_MATRIX: Float32Array<ArrayBuffer>
  • const ATTRIBUTE_BASE_BITS = 8
  • const ATTRIBUTE_BASE_MASK = 255
  • const BorderCharArrays: Record<BorderStyle, Uint32Array>
  • const BorderChars: Record<BorderStyle, BorderCharacters>
  • const DEFAULT_BACKGROUND_RGB: RGBTriplet
  • const DEFAULT_FOREGROUND_RGB: RGBTriplet
  • const DEUTERANOPIA_COMP_MATRIX: Float32Array<ArrayBuffer>
  • const DEUTERANOPIA_SIM_MATRIX: Float32Array<ArrayBuffer>
  • const GRAYSCALE_MATRIX: Float32Array<ArrayBuffer>
  • const GREENSCALE_MATRIX: Float32Array<ArrayBuffer>
  • const INVERT_MATRIX: Float32Array<ArrayBuffer>
  • const PROTANOPIA_COMP_MATRIX: Float32Array<ArrayBuffer>
  • const PROTANOPIA_SIM_MATRIX: Float32Array<ArrayBuffer>
  • const SEPIA_MATRIX: Float32Array<ArrayBuffer>
  • const SOLARIZATION_MATRIX: Float32Array<ArrayBuffer>
  • const SYNTHWAVE_MATRIX: Float32Array<ArrayBuffer>
  • const TECHNICOLOR_MATRIX: Float32Array<ArrayBuffer>
  • const TRITANOPIA_COMP_MATRIX: Float32Array<ArrayBuffer>
  • const TRITANOPIA_SIM_MATRIX: Float32Array<ArrayBuffer>
  • const TextAttributes: { NONE: number; BOLD: number; DIM: number; ITALIC: number; UNDERLINE: number; BLINK: number; INVERSE: number; HIDDEN: number; STRIKETHROUGH: number; }
  • const basenameToFiletype: Map<string, string>
  • const bg: (color: Color) => (input: StylableInput) => TextChunk
  • const bgBlack: (input: StylableInput) => TextChunk
  • const bgBlue: (input: StylableInput) => TextChunk
  • const bgCyan: (input: StylableInput) => TextChunk
  • const bgGreen: (input: StylableInput) => TextChunk
  • const bgMagenta: (input: StylableInput) => TextChunk
  • const bgRed: (input: StylableInput) => TextChunk
  • const bgWhite: (input: StylableInput) => TextChunk
  • const bgYellow: (input: StylableInput) => TextChunk
  • const black: (input: StylableInput) => TextChunk
  • const blink: (input: StylableInput) => TextChunk
  • const blue: (input: StylableInput) => TextChunk
  • const bold: (input: StylableInput) => TextChunk
  • const brightBlack: (input: StylableInput) => TextChunk
  • const brightBlue: (input: StylableInput) => TextChunk
  • const brightCyan: (input: StylableInput) => TextChunk
  • const brightGreen: (input: StylableInput) => TextChunk
  • const brightMagenta: (input: StylableInput) => TextChunk
  • const brightRed: (input: StylableInput) => TextChunk
  • const brightWhite: (input: StylableInput) => TextChunk
  • const brightYellow: (input: StylableInput) => TextChunk
  • const capture: Capture
  • const cyan: (input: StylableInput) => TextChunk
  • const defaultTextareaKeyBindings: KeyBinding[]
  • const dim: (input: StylableInput) => TextChunk
  • const engine: TimelineEngine
  • const env: Record<string, any>
  • const envRegistry: Record<string, EnvVarConfig>
  • const extensionToFiletype: Map<string, string>
  • const fg: (color: Color) => (input: StylableInput) => TextChunk
  • const fonts: { tiny: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; block: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; shade: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; slick: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; huge: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; grid: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; pallet: { name: string; version: string; homepage: string; colors: number; lines: number; buffer: string[]; letterspace: string[]; letterspace_size: number; chars: { A: string[]; B: string[]; C: string[]; D: string[]; E: string[]; F: string[]; G: string[]; H: string[]; I: string[]; J: string[]; K: string[]; L: string[]; M: string[]; N: string[]; O: string[]; P: string[]; Q: string[]; R: string[]; S: string[]; T: string[]; U: string[]; V: string[]; W: string[]; X: string[]; Y: string[]; Z: string[]; "0": string[]; "1": string[]; "2": string[]; "3": string[]; "4": string[]; "5": string[]; "6": string[]; "7": string[]; "8": string[]; "9": string[]; "!": string[]; "?": string[]; ".": string[]; "+": string[]; "-": string[]; _: string[]; "=": string[]; "@": string[]; "#": string[]; $: string[]; "%": string[]; "&": string[]; "(": string[]; ")": string[]; "/": string[]; ":": string[]; ";": string[]; ",": string[]; "'": string[]; "\"": string[]; " ": string[]; }; }; }
  • const green: (input: StylableInput) => TextChunk
  • const italic: (input: StylableInput) => TextChunk
  • const link: (url: string) => (input: StylableInput) => TextChunk
  • const magenta: (input: StylableInput) => TextChunk
  • const nonAlphanumericKeys: string[]
  • const parseKeypress: (s?: Buffer | string, options?: ParseKeypressOptions) => ParsedKey | null
  • const red: (input: StylableInput) => TextChunk
  • const reverse: (input: StylableInput) => TextChunk
  • const strikethrough: (input: StylableInput) => TextChunk
  • const terminalNamedSingleStrokeKeys: string[]
  • const underline: (input: StylableInput) => TextChunk
  • const vstyles: { bold: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; italic: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; underline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; dim: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; blink: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; inverse: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; hidden: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; strikethrough: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; boldItalic: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; boldUnderline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; italicUnderline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; boldItalicUnderline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; color: (color: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; bgColor: (bgColor: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; fg: (color: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; bg: (bgColor: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; styled: (attributes?: number, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable; }
  • const white: (input: StylableInput) => TextChunk
  • const yellow: (input: StylableInput) => TextChunk
  • construct RenderableConstructor(ctx: RenderContext, options: P): Renderable
  • constructor ASCIIFontRenderable(ctx: RenderContext, options: ASCIIFontOptions)
  • constructor ASCIIFontSelectionHelper(getText: () => string, getFont: () => keyof typeof fonts)
  • constructor ArrowRenderable(ctx: RenderContext, options: ArrowOptions)
  • constructor BaseRenderable(options: BaseRenderableOptions)
  • constructor BloomEffect(threshold?: number, strength?: number, radius?: number)
  • constructor BoxRenderable(ctx: RenderContext, options: BoxOptions)
  • constructor CRTRollingBarEffect(speed?: number, height?: number, intensity?: number, fadeDistance?: number)
  • constructor CliRenderer(stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, width: number, height: number, config?: CliRendererConfig)
  • constructor CloudsEffect(scale?: number, speed?: number, density?: number, darkness?: number)
  • constructor CodeRenderable(ctx: RenderContext, options: CodeOptions)
  • constructor DataPathsManager()
  • constructor DiffRenderable(ctx: RenderContext, options: DiffRenderableOptions)
  • constructor DistortionEffect(options?: Partial<DistortionEffect>)
  • constructor EditBuffer(lib: RenderLib, ptr: Pointer)
  • constructor EditBufferRenderable(ctx: RenderContext, options: EditBufferOptions)
  • constructor EditorView(lib: RenderLib, ptr: Pointer, editBuffer: EditBuffer)
  • constructor ExtmarksController(editBuffer: EditBuffer, editorView: EditorView)
  • constructor FlamesEffect(scale?: number, speed?: number, intensity?: number)
  • constructor FrameBufferRenderable(ctx: RenderContext, options: FrameBufferOptions)
  • constructor InputRenderable(ctx: RenderContext, options: InputRenderableOptions)
  • constructor KeyEvent(key: ParsedKey)
  • constructor LineNumberRenderable(ctx: RenderContext, options: LineNumberOptions)
  • constructor MacOSScrollAccel(opts?: { A?: number; tau?: number; maxMultiplier?: number; })
  • constructor MarkdownRenderable(ctx: RenderContext, options: MarkdownOptions)
  • constructor MouseEvent(target: Renderable | null, attributes: RawMouseEvent & { source?: Renderable; isDragging?: boolean; })
  • constructor OptimizedBuffer(lib: RenderLib, ptr: Pointer, width: number, height: number, options: { respectAlpha?: boolean; id?: string; widthMethod?: WidthMethod; })
  • constructor PasteEvent(bytes: Uint8Array, metadata?: PasteMetadata)
  • constructor RGBA(buffer: Uint16Array)
  • constructor RainbowTextEffect(speed?: number, saturation?: number, value?: number, repeats?: number)
  • constructor Renderable(ctx: RenderContext, options: RenderableOptions<any>)
  • constructor RootRenderable(ctx: RenderContext)
  • constructor RootTextNodeRenderable(ctx: RenderContext, options: TextNodeOptions, textParent: TextRenderable)
  • constructor ScrollBarRenderable(ctx: RenderContext, { trackOptions, arrowOptions, orientation, showArrows, ...options }: ScrollBarOptions)
  • constructor ScrollBoxRenderable(ctx: RenderContext, options: ScrollBoxOptions)
  • constructor SelectRenderable(ctx: RenderContext, options: SelectRenderableOptions)
  • constructor Selection(anchorRenderable: Renderable, anchor: { x: number; y: number; }, focus: { x: number; y: number; })
  • constructor SliderRenderable(ctx: RenderContext, options: SliderOptions)
  • constructor SlotRegistry(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions)
  • constructor SlotRenderable(ctx: RenderContext, options: SlotRenderableOptions<TSlotName, TSlotName, TContext, TData>)
  • constructor StdinParser(options?: StdinParserOptions)
  • constructor StyledText(chunks: TextChunk[])
  • constructor SyntaxStyle(lib: RenderLib, ptr: Pointer)
  • constructor TabSelectRenderable(ctx: RenderContext, options: TabSelectRenderableOptions)
  • constructor TerminalConsole(renderer: CliRenderer, options?: ConsoleOptions)
  • constructor TerminalPalette(options: TerminalPaletteOptions)
  • constructor TextBuffer(lib: RenderLib, ptr: Pointer)
  • constructor TextBufferRenderable(ctx: RenderContext, options: TextBufferOptions)
  • constructor TextBufferView(lib: RenderLib, ptr: Pointer, textBuffer: TextBuffer)
  • constructor TextNodeRenderable(options: TextNodeOptions)
  • constructor TextRenderable(ctx: RenderContext, options: TextOptions)
  • constructor TextTableRenderable(ctx: RenderContext, options?: TextTableOptions)
  • constructor TextareaRenderable(ctx: RenderContext, options: TextareaOptions)
  • constructor TimeToFirstDrawRenderable(ctx: RenderContext, options?: TimeToFirstDrawOptions)
  • constructor Timeline(options?: TimelineOptions)
  • constructor TreeSitterClient(options: TreeSitterClientOptions)
  • constructor VRenderable(ctx: RenderContext, options: VRenderableOptions)
  • constructor VignetteEffect(strength?: number)
  • enum CliRenderEvents
  • enum ConsolePosition
  • enum DebugOverlayCorner
  • enum EditBufferRenderableEvents
  • enum InputRenderableEvents
  • enum LayoutEvents
  • enum LogLevel
  • enum MouseButton
  • enum RenderableEvents
  • enum RendererControlState
  • enum SelectRenderableEvents
  • enum TabSelectRenderableEvents
  • enum TargetChannel
  • function ASCIIFont(props?: ASCIIFontOptions, ...children: VChild[]): ProxiedVNode<typeof ASCIIFontRenderable>
  • function Box(props?: BoxOptions, ...children: VChild[]): ProxiedVNode<typeof BoxRenderable>
  • function Code(props: CodeOptions, ...children: VChild[]): ProxiedVNode<typeof CodeRenderable>
  • function FrameBuffer(props: FrameBufferOptions, ...children: VChild[]): ProxiedVNode<typeof FrameBufferRenderable>
  • function Generic(props?: VRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof VRenderable>
  • function Input(props?: InputRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof InputRenderable>
  • function ScrollBox(props?: ScrollBoxOptions, ...children: VChild[]): ProxiedVNode<typeof ScrollBoxRenderable>
  • function Select(props?: SelectRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof SelectRenderable>
  • function TabSelect(props?: TabSelectRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof TabSelectRenderable>
  • function Text(props?: TextOptions & { content?: any; }, ...children: VChild[] | TextNodeRenderable[]): ProxiedVNode<typeof TextRenderable>
  • function addDefaultParsers(parsers: FiletypeParserOptions[]): void
  • function ansi256IndexToRgb(index: number): RGBTriplet
  • function applyAsciiArt(buffer: OptimizedBuffer, ramp?: string, fgColor?: { r: number; g: number; b: number; }, bgColor?: { r: number; g: number; b: number; }): void
  • function applyBrightness(buffer: OptimizedBuffer, brightness?: number, cellMask?: Float32Array): void
  • function applyChromaticAberration(buffer: OptimizedBuffer, strength?: number): void
  • function applyGain(buffer: OptimizedBuffer, gain?: number, cellMask?: Float32Array): void
  • function applyInvert(buffer: OptimizedBuffer, strength?: number): void
  • function applyNoise(buffer: OptimizedBuffer, strength?: number): void
  • function applySaturation(buffer: OptimizedBuffer, cellMask?: Float32Array, strength?: number): void
  • function applyScanlines(buffer: OptimizedBuffer, strength?: number, step?: number): void
  • function attributesWithLink(baseAttributes: number, linkId: number): number
  • function borderCharsToArray(chars: BorderCharacters): Uint32Array
  • function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number
  • function buildTerminalPaletteSignature(colors?: TerminalColors | null): string
  • function clearEnvCache(): void
  • function convertGlobalToLocalSelection(globalSelection: Selection | null, localX: number, localY: number): LocalSelectionBounds | null
  • function convertThemeToStyles(theme: ThemeTokenStyle[]): Record<string, StyleDefinition>
  • function coordinateToCharacterIndex(x: number, text: string, font?: keyof typeof fonts): number
  • function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>
  • function createCoreSlotRegistry<TSlotName extends string, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>>(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions): CoreSlotRegistry<TSlotName, TContext, TData>
  • function createExtmarksController(editBuffer: EditBuffer, editorView: EditorView): ExtmarksController
  • function createSlotRegistry<TNode, TSlots extends object, TContext extends PluginContext = PluginContext>(renderer: CliRenderer, key: string, context: TContext, options?: SlotRegistryOptions): SlotRegistry<TNode, TSlots, TContext>
  • function createTerminalPalette(options: TerminalPaletteOptions): TerminalPaletteDetector
  • function createTextAttributes({ bold, italic, underline, dim, blink, inverse, hidden, strikethrough, }?: { bold?: boolean; italic?: boolean; underline?: boolean; dim?: boolean; blink?: boolean; inverse?: boolean; hidden?: boolean; strikethrough?: boolean; }): number
  • function createTimeline(options?: TimelineOptions): Timeline
  • function decodePasteBytes(bytes: Uint8Array): string
  • function delegate<ConstructorType extends RenderableConstructor<any>, TargetMap extends Record<keyof InstanceType<ConstructorType>, string>, const Mapping extends Partial<TargetMap>>(mapping: ValidateShape<Mapping, TargetMap>, vnode: ProxiedVNode<ConstructorType>): ProxiedVNode<ConstructorType>function delegate<ConstructorType extends RenderableConstructor<any>, const Mapping extends DelegateMap<InstanceType<ConstructorType>>>(mapping: ValidateShape<Mapping, string>, vnode: VNode & { type: ConstructorType; }): VNodefunction delegate<Factory extends InstantiateFn<any>, InnerNode extends InferNode<Factory>, TargetMap extends Record<keyof InnerNode, string>, const Mapping extends Partial<TargetMap>>(mapping: ValidateShape<Mapping, TargetMap>, vnode: Factory): Renderable
  • function detectLinks(chunks: TextChunk[], context: { content: string; highlights: SimpleHighlight[]; }): TextChunk[]
  • function extToFiletype(extension: string): string | undefined
  • function generateEnvColored(): string
  • function generateEnvMarkdown(): string
  • function getBaseAttributes(attr: number): number
  • function getBorderFromSides(sides: BorderSidesConfig): boolean | BorderSides[]
  • function getBorderSides(border: boolean | BorderSides[]): BorderSidesConfig
  • function getCharacterPositions(text: string, font?: keyof typeof fonts): number[]
  • function getDataPaths(): DataPathsManager
  • function getLinkId(attributes: number): number
  • function getTreeSitterClient(): TreeSitterClient
  • function h<P>(type: Construct<P>, props?: P, ...children: VChild[]): VNode<P> | ProxiedVNode<any>function h<P>(type: FunctionalConstruct<P>, props?: P, ...children: VChild[]): VNode<P>function h<TCtor extends RenderableConstructor<any>>(type: TCtor, props?: TCtor extends RenderableConstructor<infer P> ? P : never, ...children: VChild[]): ProxiedVNode<TCtor>
  • function hastToStyledText(hast: HASTNode, syntaxStyle: SyntaxStyle): StyledText
  • function hexToRgb(hex: string): RGBA
  • function hsvToRgb(h: number, s: number, v: number): RGBA
  • function infoStringToFiletype(infoString: string): string | undefined
  • function instantiate<NodeType extends VNode | Renderable>(ctx: RenderContext, node: NodeType): InstantiateFn<NodeType>
  • function isEditBufferRenderable(obj: unknown): obj is EditBufferRenderable
  • function isRenderable(obj: any): obj is Renderable
  • function isStyledText(obj: any): obj is StyledText
  • function isTextNodeRenderable(obj: any): obj is TextNodeRenderable
  • function isVNode(node: any): node is VNode
  • function isValidBorderStyle(value: unknown): value is BorderStyle
  • function maybeMakeRenderable(ctx: RenderContext, node: Renderable | VNode<any, any[]> | unknown): Renderable | null
  • function measureText({ text, font }: { text: string; font?: keyof typeof fonts; }): { width: number; height: number; }
  • function normalizeColorValue(value: ColorInput | null | undefined): NormalizedColorValue | null
  • function normalizeIndexedColorIndex(index: number): number
  • function normalizeTerminalPalette(colors?: TerminalColors | null): NormalizedTerminalPalette
  • function parseAlign(value: string | null | undefined): Align
  • function parseAlignItems(value: string | null | undefined): Align
  • function parseBorderStyle(value: unknown, fallback?: BorderStyle): BorderStyle
  • function parseBoxSizing(value: string): BoxSizing
  • function parseColor(color: ColorInput): RGBA
  • function parseDimension(value: string): Dimension
  • function parseDirection(value: string): Direction
  • function parseDisplay(value: string): Display
  • function parseEdge(value: string): Edge
  • function parseFlexDirection(value: string | null | undefined): FlexDirection
  • function parseGutter(value: string): Gutter
  • function parseJustify(value: string | null | undefined): Justify
  • function parseLogLevel(value: string): LogLevel
  • function parseMeasureMode(value: string): MeasureMode
  • function parseOverflow(value: string | null | undefined): Overflow
  • function parsePositionType(value: string | null | undefined): PositionType
  • function parseUnit(value: string): Unit
  • function parseWrap(value: string | null | undefined): Wrap
  • function pathToFiletype(path: string): string | undefined
  • function registerCorePlugin<TSlotName extends string, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>>(registry: CoreSlotRegistry<TSlotName, TContext, TData>, plugin: CorePlugin<TSlotName, TContext, TData>): () => void
  • function registerEnvVar(config: EnvVarConfig): void
  • function renderFontToFrameBuffer(buffer: OptimizedBuffer, { text, x, y, color, backgroundColor, font, }: { text: string; x?: number; y?: number; color?: ColorInput | ColorInput[]; backgroundColor?: ColorInput; font?: keyof typeof fonts; }): { width: number; height: number; }
  • function resolveCoreSlot<TSlotName extends string, K extends TSlotName, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>>(registry: CoreSlotRegistry<TSlotName, TContext, TData>, slot: K): Array<CoreResolvedSlotRenderer<TContext, TData>>
  • function resolveRenderLib(): RenderLib
  • function rgbToHex(rgb: RGBA): string
  • function setRenderLibPath(libPath: string): void
  • function setupAudio(options?: AudioSetupOptions): Audio
  • function stringToStyledText(content: string): StyledText
  • function stripAnsiSequences(text: string): string
  • function t(strings: TemplateStringsArray, ...values: StylableInput[]): StyledText
  • function treeSitterToStyledText(content: string, filetype: string, syntaxStyle: SyntaxStyle, client: TreeSitterClient, options?: TreeSitterToStyledTextOptions): Promise<StyledText>
  • function treeSitterToTextChunks(content: string, highlights: SimpleHighlight[], syntaxStyle: SyntaxStyle, options?: TextChunkOptions): TextChunk[]
  • function visualizeRenderableTree(renderable: Renderable, maxDepth?: number): void
  • function wrapWithDelegates<T extends InstanceType<RenderableConstructor>>(instance: T, delegateMap: Record<string, string> | undefined): T
  • index AnimationOptions[key: string]: any
  • interface ASCIIFontOptions extends Omit<RenderableOptions<ASCIIFontRenderable>, "width" | "height">
  • interface AnimationOptions
  • interface ArrowOptions extends RenderableOptions<ArrowRenderable>
  • interface AudioEngineLib
  • interface AudioErrorContext
  • interface AudioEvents
  • interface AudioPlayOptions
  • interface AudioPlaybackDevice
  • interface AudioSetupOptions
  • interface AudioStartOptions
  • interface BaseRenderableOptions
  • interface BlockState
  • interface BorderCharacters
  • interface BorderConfig
  • interface BorderSidesConfig
  • interface BoxDrawOptions
  • interface BoxOptions<TRenderable extends Renderable = BoxRenderable> extends RenderableOptions<TRenderable>
  • interface BufferState
  • interface CapturedFrame
  • interface CapturedLine
  • interface CapturedSpan
  • interface ChunkRenderContext extends HighlightContext
  • interface CliRendererConfig
  • interface CliRendererExternalOutputEvent
  • interface CliRendererFrameEvent
  • interface CliRendererStats extends NativeRenderStats
  • interface Clock
  • interface CodeOptions extends TextBufferOptions
  • interface ConsoleOptions
  • interface ContentChangeEvent
  • interface CoreManagedSlot<TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>>
  • interface CorePlugin<TSlotName extends string, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>>
  • interface CoreResolvedSlotRenderer<TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>>
  • interface CursorChangeEvent
  • interface CursorState
  • interface CursorStyleOptions
  • interface DataPaths
  • interface DataPathsEvents
  • interface DiffRenderableOptions extends RenderableOptions<DiffRenderable>
  • interface Edit
  • interface EditBufferOptions extends RenderableOptions<EditBufferRenderable>
  • interface EditorTraits
  • interface EnvVarConfig
  • interface Extmark
  • interface ExtmarkOptions
  • interface FiletypeParserOptions
  • interface FrameBufferOptions extends RenderableOptions<FrameBufferRenderable>
  • interface GetPaletteOptions
  • interface HASTElement
  • interface HASTText
  • interface Highlight
  • interface HighlightContext
  • interface HighlightMeta
  • interface HighlightRange
  • interface HighlightResponse
  • interface InjectionMapping
  • interface InputRenderableOptions extends Omit<TextareaOptions, "height" | "minHeight" | "maxHeight" | "initialValue">
  • interface JSAnimation
  • interface KittyKeyboardOptions
  • interface LayoutOptions extends BaseRenderableOptions
  • interface LineColorConfig
  • interface LineInfo
  • interface LineInfoProvider
  • interface LineNumberOptions extends RenderableOptions<LineNumberRenderable>
  • interface LineSign
  • interface LocalSelectionBounds
  • interface LogicalCursor
  • interface MarkdownOptions extends RenderableOptions<MarkdownRenderable>
  • interface MarkdownTableOptions
  • interface MergedStyle
  • interface NativeRenderOperationResult
  • interface NativeRendererCreateOptions
  • interface NormalizedColorValue
  • interface NormalizedTerminalPalette
  • interface ParseState
  • interface ParsedBuffer extends BufferState
  • interface ParsedKey
  • interface PasteMetadata
  • interface PendingCall
  • interface PerformanceStats
  • interface Plugin<TNode, TSlots extends object, TContext extends PluginContext = PluginContext>
  • interface PluginErrorEvent
  • interface PluginErrorReport
  • interface Position
  • interface RenderContext extends EventEmitter
  • interface RenderLib extends AudioEngineLib
  • interface RenderNodeContext
  • interface RenderableConstructor<P extends RenderableOptions<any> = RenderableOptions<any>>
  • interface RenderableOptions<T extends BaseRenderable = BaseRenderable> extends Partial<LayoutOptions>
  • interface RendererEvents
  • interface RendererSchedulerState
  • interface ResolvedSlotRenderer<TNode, TProps, TContext extends PluginContext = PluginContext>
  • interface ScrollAcceleration
  • interface ScrollBarOptions extends RenderableOptions<ScrollBarRenderable>
  • interface ScrollBoxOptions extends BoxOptions<ScrollBoxRenderable>
  • interface ScrollInfo
  • interface ScrollbackRenderContext
  • interface ScrollbackSnapshot
  • interface ScrollbackSurface
  • interface ScrollbackSurfaceCommitOptions
  • interface ScrollbackSurfaceOptions
  • interface SelectOption
  • interface SelectRenderableOptions extends RenderableOptions<SelectRenderable>
  • interface SliderOptions extends RenderableOptions<SliderRenderable>
  • interface SlotRegistryOptions
  • interface SlotRenderableOptions<TSlotName extends string, K extends TSlotName, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>> extends RenderableOptions
  • interface StdinParserOptions
  • interface StdinParserProtocolContext
  • interface StyleAttrs
  • interface StyleDefinition
  • interface StyleDefinitionInput
  • interface SubmitEvent
  • interface TabSelectOption
  • interface TabSelectRenderableOptions extends Omit<RenderableOptions<TabSelectRenderable>, "height">
  • interface TerminalCapabilities
  • interface TerminalColors
  • interface TerminalInfo
  • interface TerminalPaletteDetector
  • interface TerminalPaletteOptions
  • interface TextBufferOptions extends RenderableOptions<TextBufferRenderable>
  • interface TextChunk
  • interface TextNodeOptions extends BaseRenderableOptions
  • interface TextOptions extends TextBufferOptions
  • interface TextTableOptions extends RenderableOptions<TextTableRenderable>
  • interface TextareaOptions extends EditBufferOptions
  • interface ThemeTokenStyle
  • interface TimeToFirstDrawOptions extends RenderableOptions<TimeToFirstDrawRenderable>
  • interface TimelineOptions
  • interface TreeSitterClientEvents
  • interface TreeSitterClientOptions
  • interface TreeSitterToStyledTextOptions
  • interface VNode<P = any, C = VChild[]>
  • interface VRenderableOptions extends RenderableOptions<VRenderable>
  • interface Viewport
  • interface ViewportBounds
  • interface VisualCursor
  • namespace Yoga from "yoga-layout"
  • type ASCIIFontName = "tiny" | "block" | "shade" | "slick" | "huge" | "grid" | "pallet"
  • type AlignString = "auto" | "flex-start" | "center" | "flex-end" | "stretch" | "baseline" | "space-between" | "space-around" | "space-evenly"
  • type AllocatorStats = { totalRequestedBytes: number; activeAllocations: number; smallAllocations: number; largeAllocations: number; requestedBytesValid: boolean; }
  • type AudioAction = "createAudioEngine" | "start" | "startMixer" | "stop" | "loadSound" | "loadSoundFile" | "unloadSound" | "group" | "play" | "stopVoice" | "setVoiceGroup" | "setGroupVolume" | "setMasterVolume" | "mixFrames" | "enableTap" | "readTapFrames" | "listPlaybackDevices" | "selectPlaybackDevice" | "clearPlaybackDeviceSelection" | "getStats"
  • type AudioGroup = number
  • type AudioSound = number
  • type AudioVoice = number
  • type BorderSides = "top" | "right" | "bottom" | "left"
  • type BorderStyle = "single" | "double" | "rounded" | "heavy"
  • type BoxSizingString = "border-box" | "content-box"
  • type BuildOptions = { gpaSafeStats: boolean; gpaMemoryLimitTracking: boolean; }
  • type Color = ColorInput
  • type ColorInput = string | RGBA
  • type ColorIntent = "rgb" | "indexed" | "default"
  • type ConsoleAction = "scroll-up" | "scroll-down" | "scroll-to-top" | "scroll-to-bottom" | "position-previous" | "position-next" | "size-increase" | "size-decrease" | "save-logs" | "copy-selection"
  • type ConsoleKeyBinding = BaseKeyBinding<ConsoleAction>
  • type ConsoleMode = "console-overlay" | "disabled"
  • type Construct<P = any> = RenderableConstructor<P extends RenderableOptions<any> ? P : never> | FunctionalConstruct<P>
  • type CoreSlotContribution<TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>> = CoreSlotRenderer<TContext, TData> | CoreManagedSlot<TContext, TData>
  • type CoreSlotFailurePlaceholder<TContext extends PluginContext = PluginContext> = (failure: PluginErrorEvent, ctx: Readonly<TContext>) => FallbackNodes
  • type CoreSlotMode = SlotMode
  • type CoreSlotRegistry<TSlotName extends string, TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>> = SlotRegistry<BaseRenderable, CoreSlotProps<TSlotName, TData>, TContext>
  • type CoreSlotRenderer<TContext extends PluginContext = PluginContext, TData extends object = Record<string, unknown>> = (ctx: Readonly<TContext>, data: TData) => BaseRenderable
  • type CursorStyle = "block" | "line" | "underline" | "default"
  • type DataHandler = (data: Uint8Array) => void | Promise<void>
  • type DelegateMap<T> = Partial<Record<keyof T, string>>
  • type DimensionString = "width" | "height"
  • type DirectionString = "inherit" | "ltr" | "rtl"
  • type DisplayString = "flex" | "none" | "contents"
  • type EasingFunctions = keyof typeof easingFunctions
  • type EdgeString = "left" | "top" | "right" | "bottom" | "start" | "end" | "horizontal" | "vertical" | "all"
  • type EditorCapture = "escape" | "navigate" | "submit" | "tab"
  • type ExternalOutputMode = "capture-stdout" | "passthrough"
  • type FlexDirectionString = "column" | "column-reverse" | "row" | "row-reverse"
  • type FunctionalConstruct<P = any> = (props: P, children?: VChild[]) => VNode
  • type GrowthPolicy = "grow" | "block"
  • type GutterString = "column" | "row" | "all"
  • type HASTNode = HASTText | HASTElement
  • type InputAction = TextareaAction
  • type InputKeyBinding = TextareaKeyBinding
  • type InstantiateFn<NodeType extends VNode | Renderable> = Renderable & { __node?: NodeType; }
  • type JustifyString = "flex-start" | "center" | "flex-end" | "space-between" | "space-around" | "space-evenly"
  • type KeyBinding = BaseKeyBinding<TextareaAction>
  • type KeyEventType = "press" | "repeat" | "release"
  • type KeyHandlerEventMap = { keypress: [ KeyEvent ]; keyrelease: [ KeyEvent ]; paste: [ PasteEvent ]; }
  • type LogLevelString = "error" | "warn" | "info" | "debug" | "verbose" | "fatal"
  • type MarkdownTableStyle = "grid" | "columns"
  • type MeasureModeString = "undefined" | "exactly" | "at-most"
  • type MouseEventType = "down" | "up" | "move" | "drag" | "drag-end" | "drop" | "over" | "out" | "scroll"
  • type MousePointerStyle = "default" | "pointer" | "text" | "crosshair" | "move" | "not-allowed"
  • type NativeBufferedOutput = "stdout" | "memory"
  • type NativeRenderStats = { nativeLastFrameTime: number; nativeAverageFrameTime: number; nativeFrameCount: number; cellsUpdated: number; averageCellsUpdated: number; nativeRenderTime?: number; nativeStdoutWriteTime?: number; }
  • type NativeSpanFeedEventHandler = (eventId: number, arg0: Pointer, arg1: number | bigint) => void
  • type NativeSpanFeedOptions = { chunkSize?: number; initialChunks?: number; maxBytes?: bigint; growthPolicy?: GrowthPolicy; autoCommitOnFull?: boolean; spanQueueCapacity?: number; }
  • type NativeSpanFeedStats = { bytesWritten: bigint; spansCommitted: bigint; chunks: number; pendingSpans: number; }
  • type OnChunksCallback = (chunks: TextChunk[], context: ChunkRenderContext) => TextChunk[] | undefined | Promise<TextChunk[] | undefined>
  • type OnHighlightCallback = (highlights: SimpleHighlight[], context: HighlightContext) => SimpleHighlight[] | undefined | Promise<SimpleHighlight[] | undefined>
  • type OscSubscriptionSource = { subscribeOsc(handler: (sequence: string) => void): () => void; }
  • type OverflowString = "visible" | "hidden" | "scroll"
  • type ParseKeypressOptions = { useKittyKeyboard?: boolean; }
  • type PasteKind = "text" | "binary" | "unknown"
  • type PixelResolution = { width: number; height: number; }
  • type PluginContext = object
  • type PluginErrorPhase = "setup" | "render" | "dispose" | "error_placeholder"
  • type PluginErrorSource = "registry" | "core" | (string & {})
  • type PositionTypeString = "static" | "relative" | "absolute"
  • type ProxiedVNode<TCtor extends RenderableConstructor<any>> = VNode<TCtor extends RenderableConstructor<infer P> ? P : any> & { [K in keyof InstanceType<TCtor>]: InstanceType<TCtor>[K] extends (...args: infer Args) => any ? (...args: Args) => ProxiedVNode<TCtor> : InstanceType<TCtor>[K]; }
  • type RGBTriplet = readonly [ number, number, number ]
  • type RawMouseEvent = { type: MouseEventType; button: number; x: number; y: number; modifiers: { shift: boolean; alt: boolean; ctrl: boolean; }; scroll?: ScrollInfo; }
  • type RenderCommand = RenderCommandPushScissorRect | RenderCommandPopScissorRect | RenderCommandRender | RenderCommandPushOpacity | RenderCommandPopOpacity
  • type ScreenMode = "alternate-screen" | "main-screen" | "split-footer"
  • type ScrollUnit = "absolute" | "viewport" | "content" | "step"
  • type ScrollbackWriter = (ctx: ScrollbackRenderContext) => ScrollbackSnapshot
  • type SelectAction = "move-up" | "move-down" | "move-up-fast" | "move-down-fast" | "select-current"
  • type SelectKeyBinding = BaseKeyBinding<SelectAction>
  • type SimpleHighlight = [ number, number, string, HighlightMeta? ]
  • type SlotMode = "append" | "replace" | "single_winner"
  • type SlotRenderer<TNode, TProps, TContext extends PluginContext = PluginContext> = (ctx: Readonly<TContext>, props: TProps) => TNode
  • type StdinEvent = { type: "key"; raw: string; key: ParsedKey; } | { type: "mouse"; raw: string; encoding: "sgr" | "x10"; event: RawMouseEvent; } | { type: "paste"; bytes: Uint8Array; metadata?: PasteMetadata; } | { type: "response"; protocol: StdinResponseProtocol; sequence: string; }
  • type StdinResponseProtocol = "csi" | "cpr" | "osc" | "dcs" | "apc" | "unknown"
  • type StylableInput = string | number | boolean | TextChunk
  • type TabSelectAction = "move-left" | "move-right" | "select-current"
  • type TabSelectKeyBinding = BaseKeyBinding<TabSelectAction>
  • type TerminalMultiplexer = "none" | "tmux" | "zellij" | "screen" | "unknown"
  • type TextTableCellContent = TextChunk[] | null | undefined
  • type TextTableColumnFitter = "proportional" | "balanced"
  • type TextTableColumnWidthMode = "content" | "full"
  • type TextTableContent = TextTableCellContent[][]
  • type TextareaAction = "move-left" | "move-right" | "move-up" | "move-down" | "select-left" | "select-right" | "select-up" | "select-down" | "line-home" | "line-end" | "select-line-home" | "select-line-end" | "visual-line-home" | "visual-line-end" | "select-visual-line-home" | "select-visual-line-end" | "buffer-home" | "buffer-end" | "select-buffer-home" | "select-buffer-end" | "delete-line" | "delete-to-line-end" | "delete-to-line-start" | "backspace" | "delete" | "newline" | "undo" | "redo" | "word-forward" | "word-backward" | "select-word-forward" | "select-word-backward" | "delete-word-forward" | "delete-word-backward" | "select-all" | "submit"
  • type TextareaKeyAliasMap = Record<string, string>
  • type ThemeMode = "dark" | "light"
  • type Timeout = ReturnType<typeof setTimeout> | undefined
  • type TimerHandle = ReturnType<typeof globalThis.setTimeout> | number
  • type UnitString = "undefined" | "point" | "percent" | "auto"
  • type VChild = VNode | Renderable | VChild[] | null | undefined | false
  • type ValidateShape<Given, AllowedKeys> = { [K in keyof Given]: K extends keyof AllowedKeys ? NonNullable<Given[K]> : never; }
  • type WidthMethod = "wcwidth" | "unicode"
  • type WrapString = "no-wrap" | "wrap" | "wrap-reverse"
  • type WriteFunction = (data: string | Buffer) => boolean

@opentui/core/runtime-plugin#

Added

  • const isCoreRuntimeModuleSpecifier: (specifier: string) => boolean
  • const runtimeModuleIdForSpecifier: (specifier: string) => string
  • function createRuntimePlugin(input?: CreateRuntimePluginOptions): BunPlugin
  • interface CreateRuntimePluginOptions
  • interface RuntimePluginRewriteOptions
  • type RuntimeModuleEntry = RuntimeModuleExports | RuntimeModuleLoader
  • type RuntimeModuleExports = Record<string, unknown>
  • type RuntimeModuleLoader = () => RuntimeModuleExports | Promise<RuntimeModuleExports>

@opentui/core/runtime-plugin-support#

Added

  • const runtimeModuleIdForSpecifier: (specifier: string) => string
  • function createRuntimePlugin(input?: CreateRuntimePluginOptions): BunPlugin
  • function ensureRuntimePluginSupport(options?: CreateRuntimePluginOptions): boolean
  • interface CreateRuntimePluginOptions
  • type RuntimeModuleEntry = RuntimeModuleExports | RuntimeModuleLoader
  • type RuntimeModuleExports = Record<string, unknown>
  • type RuntimeModuleLoader = () => RuntimeModuleExports | Promise<RuntimeModuleExports>

@opentui/core/runtime-plugin-support/configure#

Added

  • const runtimeModuleIdForSpecifier: (specifier: string) => string
  • function createRuntimePlugin(input?: CreateRuntimePluginOptions): BunPlugin
  • function ensureRuntimePluginSupport(options?: CreateRuntimePluginOptions): boolean
  • interface CreateRuntimePluginOptions
  • type RuntimeModuleEntry = RuntimeModuleExports | RuntimeModuleLoader
  • type RuntimeModuleExports = Record<string, unknown>
  • type RuntimeModuleLoader = () => RuntimeModuleExports | Promise<RuntimeModuleExports>

@opentui/core/testing#

Added

  • class ManualClock implements Clock
  • class MockTreeSitterClient extends TreeSitterClient
  • class TestRecorder
  • const KeyCodes: { readonly RETURN: "\r"; readonly LINEFEED: "\n"; readonly TAB: "\t"; readonly BACKSPACE: "\b"; readonly DELETE: "\u001B[3~"; readonly HOME: "\u001B[H"; readonly END: "\u001B[F"; readonly ESCAPE: "\u001B"; readonly ARROW_UP: "\u001B[A"; readonly ARROW_DOWN: "\u001B[B"; readonly ARROW_RIGHT: "\u001B[C"; readonly ARROW_LEFT: "\u001B[D"; readonly F1: "\u001BOP"; readonly F2: "\u001BOQ"; readonly F3: "\u001BOR"; readonly F4: "\u001BOS"; readonly F5: "\u001B[15~"; readonly F6: "\u001B[17~"; readonly F7: "\u001B[18~"; readonly F8: "\u001B[19~"; readonly F9: "\u001B[20~"; readonly F10: "\u001B[21~"; readonly F11: "\u001B[23~"; readonly F12: "\u001B[24~"; }
  • const MouseButtons: { readonly LEFT: 0; readonly MIDDLE: 1; readonly RIGHT: 2; readonly WHEEL_UP: 64; readonly WHEEL_DOWN: 65; readonly WHEEL_LEFT: 66; readonly WHEEL_RIGHT: 67; }
  • constructor MockTreeSitterClient(options?: { autoResolveTimeout?: number; })
  • constructor TestRecorder(renderer: TestRenderer, options?: TestRecorderOptions)
  • function createMockKeys(renderer: CliRenderer, options?: MockKeysOptions): { pressKeys: (keys: KeyInput[], delayMs?: number) => Promise<void>; pressKey: (key: KeyInput, modifiers?: { shift?: boolean; ctrl?: boolean; meta?: boolean; super?: boolean; hyper?: boolean; }) => void; typeText: (text: string, delayMs?: number) => Promise<void>; pressEnter: (modifiers?: { shift?: boolean; ctrl?: boolean; meta?: boolean; super?: boolean; hyper?: boolean; }) => void; pressEscape: (modifiers?: { shift?: boolean; ctrl?: boolean; meta?: boolean; super?: boolean; hyper?: boolean; }) => void; pressTab: (modifiers?: { shift?: boolean; ctrl?: boolean; meta?: boolean; super?: boolean; hyper?: boolean; }) => void; pressBackspace: (modifiers?: { shift?: boolean; ctrl?: boolean; meta?: boolean; super?: boolean; hyper?: boolean; }) => void; pressArrow: (direction: "up" | "down" | "left" | "right", modifiers?: { shift?: boolean; ctrl?: boolean; meta?: boolean; super?: boolean; hyper?: boolean; }) => void; pressCtrlC: () => void; pasteBracketedText: (text: string) => Promise<void>; }
  • function createMockMouse(renderer: CliRenderer): { moveTo: (x: number, y: number, options?: MouseEventOptions) => Promise<void>; click: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>; doubleClick: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>; pressDown: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>; release: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>; drag: (startX: number, startY: number, endX: number, endY: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>; scroll: (x: number, y: number, direction: "up" | "down" | "left" | "right", options?: MouseEventOptions) => Promise<void>; getCurrentPosition: () => MousePosition; getPressedButtons: () => MouseButton[]; emitMouseEvent: (type: MouseEventType, x: number, y: number, button?: MouseButton, options?: Omit<MouseEventOptions, "button">) => Promise<void>; }
  • function createSpy(): { (...args: any[]): void; calls: any[][]; callCount(): number; calledWith(...expected: any[]): boolean; reset(): number; }
  • function createTerminalCapabilities(overrides?: TerminalCapabilitiesOverrides): TerminalCapabilities
  • function createTestRenderer(options: TestRendererOptions): Promise<TestRendererSetup>
  • function pasteBytes(text: string): Uint8Array
  • function setRendererCapabilities(renderer: CliRenderer, overrides?: TerminalCapabilitiesOverrides): TerminalCapabilities
  • interface MockKeysOptions
  • interface MouseEventOptions
  • interface MouseModifiers
  • interface MousePosition
  • interface RecordedFrame
  • interface TerminalCapabilitiesOverrides extends Partial<Omit<TerminalCapabilities, "terminal">>
  • interface TestExternalOutput
  • interface TestExternalOutputCommit
  • interface TestFlushOptions
  • interface TestRendererOptions extends CliRendererConfig
  • interface TestRendererSetup
  • interface TestVisualIdleOptions
  • interface TestWaitForOptions
  • type KeyInput = string | keyof typeof KeyCodes
  • type MockInput = ReturnType<typeof createMockKeys>
  • type MockMouse = ReturnType<typeof createMockMouse>
  • type MouseButton = (typeof MouseButtons)[keyof typeof MouseButtons]
  • type MouseEventType = "down" | "up" | "move" | "drag" | "scroll"
  • type TestRenderer = CliRenderer

@opentui/core/tree-sitter/update-assets#

Added

  • function runUpdateAssetsCli(): Promise<void>
  • function updateAssets(options?: Partial<UpdateOptions>): Promise<void>
  • interface UpdateOptions

@opentui/keymap#

Added

  • class Keymap<TTarget extends object, TEvent extends KeymapEvent = KeymapEvent>
  • const KEYMAP_EXTENSION_CONTEXT: unique symbol
  • constructor Keymap(host: KeymapHost<TTarget, TEvent>)
  • function stringifyKeySequence(input: readonly KeyStringifyInput[], options?: StringifyOptions): string
  • function stringifyKeyStroke(input: KeyStringifyInput, options?: StringifyOptions): string
  • index Binding[key: string]: unknown
  • index Command[key: string]: unknown
  • index Layer[key: string]: unknown
  • index ParsedBinding[key: string]: unknown
  • interface ActiveBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface ActiveKey<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface ActiveKeyOptions
  • interface Binding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface BindingExpanderContext
  • interface BindingExpansion
  • interface BindingFieldContext
  • interface BindingParserContext
  • interface BindingParserResult
  • interface BindingTransformerContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface Command<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent, TPayload = unknown>
  • interface CommandBindingsQuery<TTarget extends object = object>
  • interface CommandContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent, TPayload = unknown>
  • interface CommandEntry<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface CommandFieldContext
  • interface CommandQuery<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface CommandResolverContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface CommandTransformerContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface DispatchBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> extends ActiveBinding<TTarget, TEvent>
  • interface DispatchEvent<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface DispatchLayer<TTarget extends object = object>
  • interface ErrorEvent
  • interface EventMatchResolverContext
  • interface HostMetadata
  • interface KeyAfterInputContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface KeyDeferredDisambiguationContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface KeyDeferredDisambiguationDecision
  • interface KeyDisambiguationContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface KeyDisambiguationDecision
  • interface KeyInputContext<TEvent extends KeymapEvent = KeymapEvent>
  • interface KeyInterceptOptions
  • interface KeySequencePart
  • interface KeyStrokeInput
  • interface KeyToken
  • interface KeymapEvent
  • interface KeymapExtensionContext<TTarget extends object, TEvent extends KeymapEvent>
  • interface KeymapExtensionProvider<TTarget extends object, TEvent extends KeymapEvent>
  • interface KeymapHost<TTarget extends object, TEvent extends KeymapEvent = KeymapEvent>
  • interface Layer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface LayerAnalysisContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface LayerBindingAnalysis<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface LayerBindingsTransformerContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface LayerFieldContext
  • interface NormalizedKeyStroke extends KeyStrokeInput
  • interface ParsedBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface ParsedCommand
  • interface RawInputContext
  • interface RawInterceptOptions
  • interface ReactiveMatcher
  • interface ResolvedKeyToken
  • interface ResolvedSequencePattern<TEvent extends KeymapEvent = KeymapEvent>
  • interface RunCommandOptions<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface SequencePattern<TEvent extends KeymapEvent = KeymapEvent>
  • interface SequencePatternMatch
  • interface StringifyOptions
  • interface WarningEvent
  • type Attributes = Record<string, unknown>
  • type BindingCommand<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = string | CommandHandler<TTarget, TEvent>
  • type BindingEvent = "press" | "release"
  • type BindingExpander = (ctx: BindingExpanderContext) => readonly BindingExpansion[] | undefined
  • type BindingFieldCompiler = (value: unknown, ctx: BindingFieldContext) => void
  • type BindingParser = (ctx: BindingParserContext) => BindingParserResult | undefined
  • type BindingTransformer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (binding: ParsedBinding<TTarget, TEvent>, ctx: BindingTransformerContext<TTarget, TEvent>) => void
  • type Bindings<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = readonly Binding<TTarget, TEvent>[]
  • type BindingsValidationResult = { ok: true; } | { ok: false; reason: string; }
  • type CommandFieldCompiler = (value: unknown, ctx: CommandFieldContext) => void
  • type CommandFilter<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = Readonly<Record<string, CommandQueryValue<TTarget, TEvent>>> | ((command: Command<TTarget, TEvent>) => boolean)
  • type CommandHandler<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent, TPayload = unknown> = (ctx: CommandContext<TTarget, TEvent, TPayload>) => CommandResult<TTarget, TEvent>
  • type CommandQueryValue<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = unknown | readonly unknown[] | ((value: unknown, command: Command<TTarget, TEvent>) => boolean)
  • type CommandResolver<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (command: string, ctx: CommandResolverContext<TTarget, TEvent>) => Command<TTarget, TEvent> | undefined
  • type CommandResult<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = boolean | void | RunCommandResult<TTarget, TEvent> | Promise<boolean | void | RunCommandResult<TTarget, TEvent>>
  • type CommandTransformer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (command: Command<TTarget, TEvent>, ctx: CommandTransformerContext<TTarget, TEvent>) => void
  • type DispatchPhase = "sequence-start" | "sequence-advance" | "sequence-clear" | "binding-execute" | "binding-reject"
  • type EventData = Record<string, unknown>
  • type EventMatchResolver<TEvent extends KeymapEvent = KeymapEvent> = (event: TEvent, ctx: EventMatchResolverContext) => readonly KeyMatch[] | undefined
  • type EventName = keyof Events
  • type Events<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = Hooks<TTarget, TEvent> & { warning: WarningEvent; error: ErrorEvent; }
  • type HostCapability = "supported" | "unsupported" | "unknown"
  • type HostModifier = "ctrl" | "shift" | "meta" | "super" | "hyper"
  • type HostPlatform = "macos" | "windows" | "linux" | "unknown"
  • type InterceptName = keyof Intercepts
  • type Intercepts<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = { key: KeyInputContext<TEvent>; "key:after": KeyAfterInputContext<TTarget, TEvent>; raw: RawInputContext; }
  • type KeyAfterReason = "intercept-consumed" | "binding-handled" | "binding-rejected" | "no-match" | "sequence-pending" | "sequence-miss" | "sequence-cleared"
  • type KeyDeferredDisambiguationHandler<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: KeyDeferredDisambiguationContext<TTarget, TEvent>) => KeyDeferredDisambiguationDecision | void | Promise<KeyDeferredDisambiguationDecision | void>
  • type KeyDisambiguationResolver<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: KeyDisambiguationContext<TTarget, TEvent>) => KeyDisambiguationDecision | undefined
  • type KeyLike = string | KeyStrokeInput
  • type KeyMatch = string
  • type KeyStringifyInput = KeyStrokeInput | NormalizedKeyStroke | KeySequencePart | { stroke: NormalizedKeyStroke; display?: string; }
  • type LayerAnalyzer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: LayerAnalysisContext<TTarget, TEvent>) => void
  • type LayerBindingsTransformer<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (bindings: readonly Binding<TTarget, TEvent>[], ctx: LayerBindingsTransformerContext<TTarget, TEvent>) => readonly Binding<TTarget, TEvent>[] | void
  • type LayerFieldCompiler = (value: unknown, ctx: LayerFieldContext) => void
  • type Listener<TValue> = [ TValue ] extends [ void ] ? () => void : (value: TValue) => void
  • type RunCommandResult<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = { ok: true; command?: Command<TTarget, TEvent>; } | { ok: false; reason: "not-found"; } | { ok: false; reason: "inactive" | "disabled" | "invalid-args" | "rejected" | "error"; command?: Command<TTarget, TEvent>; }
  • type TargetMode = "focus" | "focus-within"

@opentui/keymap/addons#

Added

  • const defaultBindingParser: BindingParser
  • const defaultEventMatchResolver: EventMatchResolver<KeymapEvent>
  • function registerAliasesField<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerBackspacePopsPendingSequence<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options?: BackspacePopsPendingSequenceOptions): () => void
  • function registerBindingOverrides<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerCommaBindings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDeadBindingWarnings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDefaultBindingParser<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDefaultEventMatchResolver<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDefaultKeys<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerEmacsBindings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerEnabledFields<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerEscapeClearsPendingSequence<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options?: EscapeClearsPendingSequenceOptions): () => void
  • function registerExCommands<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerLeader<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options: LeaderOptions): () => void
  • function registerMetadataFields<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerModBindings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerNeovimDisambiguation<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options?: NeovimDisambiguationOptions): () => void
  • function registerTimedLeader<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options: TimedLeaderOptions): () => void
  • function registerUnresolvedCommandWarnings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • index ExCommand[key: string]: unknown
  • interface BackspacePopsPendingSequenceOptions
  • interface EscapeClearsPendingSequenceOptions
  • interface ExCommand<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface ExCommandPayload
  • interface LeaderOptions
  • interface NeovimDisambiguationOptions
  • interface TimedLeaderOptions extends LeaderOptions
  • type Aliases = Record<string, string>
  • type Enabled = boolean | (() => boolean) | ReactiveMatcher
  • type LeaderTrigger = KeyLike | Readonly<{ key: KeyLike; }> | readonly Readonly<{ key: KeyLike; }>[]

@opentui/keymap/addons/opentui#

Added

  • const defaultBindingParser: BindingParser
  • const defaultEventMatchResolver: EventMatchResolver<KeymapEvent>
  • function createTextareaBindings(overrides?: readonly Binding[], options?: EditBufferCommandOptions): Binding[]
  • function registerAliasesField<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerBackspacePopsPendingSequence<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options?: BackspacePopsPendingSequenceOptions): () => void
  • function registerBaseLayoutFallback(keymap: Keymap<Renderable, KeyEvent>): () => void
  • function registerBindingOverrides<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerCommaBindings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDeadBindingWarnings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDefaultBindingParser<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDefaultEventMatchResolver<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerDefaultKeys<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerEditBufferCommands(keymap: Keymap<Renderable, KeyEvent>, renderer: CliRenderer, options?: EditBufferCommandOptions): () => void
  • function registerEmacsBindings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerEnabledFields<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerEscapeClearsPendingSequence<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options?: EscapeClearsPendingSequenceOptions): () => void
  • function registerExCommands<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerLeader<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options: LeaderOptions): () => void
  • function registerManagedTextareaLayer(keymap: Keymap<Renderable, KeyEvent>, renderer: CliRenderer, layer: ManagedTextareaLayer, options?: EditBufferCommandOptions): () => void
  • function registerMetadataFields<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerModBindings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • function registerNeovimDisambiguation<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options?: NeovimDisambiguationOptions): () => void
  • function registerTextareaMappingSuspension(keymap: Keymap<Renderable, KeyEvent>, renderer: CliRenderer): () => void
  • function registerTimedLeader<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>, options: TimedLeaderOptions): () => void
  • function registerUnresolvedCommandWarnings<TTarget extends object, TEvent extends KeymapEvent>(keymap: Keymap<TTarget, TEvent>): () => void
  • index ExCommand[key: string]: unknown
  • interface BackspacePopsPendingSequenceOptions
  • interface EditBufferCommandOptions
  • interface EscapeClearsPendingSequenceOptions
  • interface ExCommand<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface ExCommandPayload
  • interface LeaderOptions
  • interface NeovimDisambiguationOptions
  • interface TimedLeaderOptions extends LeaderOptions
  • type Aliases = Record<string, string>
  • type EditBufferCommandName = (typeof editBufferActions)[number]
  • type EditBufferFineGroup = "Cursor" | "Selection" | "Delete" | "History" | "Insert" | "Submit"
  • type Enabled = boolean | (() => boolean) | ReactiveMatcher
  • type LeaderTrigger = KeyLike | Readonly<{ key: KeyLike; }> | readonly Readonly<{ key: KeyLike; }>[]

@opentui/keymap/extras#

Added

  • function commandBindings<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>(bindings: Readonly<CommandBindingMap>, options?: CommandBindingsOptions): Binding<TTarget, TEvent>[]
  • function createBindingLookup<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>(config: BindingConfig<TTarget, TEvent>, options?: CreateBindingLookupOptions<TTarget, TEvent>): BindingLookup<TTarget, TEvent>
  • function formatCommandBindings(bindings: readonly SequenceBindingLike[] | undefined, options?: FormatCommandBindingsOptions): string | undefined
  • function formatKeySequence(parts: readonly KeySequenceFormatPart[] | undefined, options?: FormatKeySequenceOptions): string
  • interface BindingDefaultsContext<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface BindingLookup<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface CommandBindingsError
  • interface CommandBindingsOptions
  • interface CommandBindingsOverrideWarning
  • interface CreateBindingLookupOptions<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface FormatCommandBindingsOptions extends FormatKeySequenceOptions
  • interface FormatKeySequenceOptions
  • interface KeySequenceFormatPart
  • interface SequenceBindingLike
  • type BindingCommandMap = Readonly<Record<string, string>>
  • type BindingConfig<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = Readonly<Record<string, BindingValue<TTarget, TEvent>>>
  • type BindingConfigItem<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = KeyLike | Binding<TTarget, TEvent>
  • type BindingDefaults<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = (ctx: BindingDefaultsContext<TTarget, TEvent>) => Readonly<Record<string, unknown>> | void
  • type BindingValue<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent> = false | "none" | BindingConfigItem<TTarget, TEvent> | readonly BindingConfigItem<TTarget, TEvent>[]
  • type CommandBindingMap = Record<string, KeyLike>
  • type KeyModifierName = "ctrl" | "shift" | "meta" | "super" | "hyper"
  • type TokenDisplayResolver = Readonly<Record<string, string>> | ((tokenName: string, part: KeySequenceFormatPart) => string | undefined)

@opentui/keymap/extras/graph#

Added

  • function createGraphExtra<TTarget extends object, TEvent extends KeymapEvent>(keymap: KeymapExtensionProvider<TTarget, TEvent>): KeymapGraphExtra<TTarget, TEvent>
  • function getGraphSnapshot<TTarget extends object, TEvent extends KeymapEvent>(keymap: KeymapExtensionProvider<TTarget, TEvent>, options?: GraphSnapshotOptions<TTarget>): GraphSnapshot<TTarget, TEvent>
  • interface GraphBinding<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface GraphCommand<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface GraphLayer<TTarget extends object = object>
  • interface GraphSequenceNode
  • interface GraphSnapshot<TTarget extends object = object, TEvent extends KeymapEvent = KeymapEvent>
  • interface GraphSnapshotOptions<TTarget extends object = object>
  • interface KeymapGraphExtra<TTarget extends object, TEvent extends KeymapEvent>
  • type GraphInactiveReason = "focus" | "target-destroyed" | "layer-disabled" | "binding-disabled" | "command-disabled" | "command-inactive" | "command-unresolved" | "shadowed"

@opentui/keymap/html#

Added

  • const htmlEventMatchResolver: EventMatchResolver<HtmlKeymapEvent>
  • function createDefaultHtmlKeymap(root: HTMLElement): Keymap<HTMLElement, HtmlKeymapEvent>
  • function createHtmlKeymap(root: HTMLElement): Keymap<HTMLElement, HtmlKeymapEvent>
  • function createHtmlKeymapEvent(event?: KeyboardEvent | HtmlKeyboardEventLike): HtmlKeymapEvent
  • function createHtmlKeymapHost(root: HTMLElement): KeymapHost<HTMLElement, HtmlKeymapEvent>
  • function normalizeHtmlKeyName(key: string): string
  • interface HtmlKeymapEvent extends KeymapEvent

@opentui/keymap/opentui#

Added

  • function createDefaultOpenTuiKeymap(renderer: CliRenderer): Keymap<Renderable, KeyEvent>
  • function createOpenTuiKeymap(renderer: CliRenderer): Keymap<Renderable, KeyEvent>
  • function createOpenTuiKeymapHost(renderer: CliRenderer): KeymapHost<Renderable, KeyEvent>

@opentui/keymap/react#

Added

  • const useActiveKeys: (options?: ActiveKeyOptions) => readonly ActiveKey[]
  • const useKeymap: () => OpenTuiKeymap
  • const usePendingSequence: () => readonly KeySequencePart[]
  • function KeymapProvider({ keymap, children }: KeymapProviderProps): FunctionComponentElement<ProviderProps<OpenTuiKeymap | null>>
  • function reactiveMatcherFromStore<T>(subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => T, predicate?: (value: T) => boolean): ReactiveMatcher
  • function useBindings<TRenderable extends Renderable = Renderable>(createLayer: () => UseBindingsLayer<TRenderable>, deps?: DependencyList): void
  • interface KeymapProviderProps
  • interface UseBindingsLayer<TRenderable extends Renderable = Renderable> extends Omit<Layer<Renderable, KeyEvent>, "target" | "targetMode">
  • interface UseBindingsTargetRef<TRenderable extends Renderable = Renderable>

@opentui/keymap/runtime-modules#

Added

  • const runtimeModules: { "@opentui/keymap": typeof keymap; "@opentui/keymap/extras": typeof keymapExtras; "@opentui/keymap/extras/graph": typeof keymapGraphExtra; "@opentui/keymap/addons": typeof keymapAddons; "@opentui/keymap/addons/opentui": typeof keymapOpenTuiAddons; "@opentui/keymap/html": typeof keymapHtml; "@opentui/keymap/opentui": typeof keymapOpenTui; "@opentui/keymap/react": typeof keymapReact; "@opentui/keymap/solid": typeof keymapSolid; }

@opentui/keymap/solid#

Added

  • const useKeymap: () => OpenTuiKeymap
  • const useKeymapSelector: <T>(selector: (keymap: OpenTuiKeymap) => T) => Accessor<T>
  • function KeymapProvider(props: KeymapProviderProps): JSX.Element
  • function reactiveMatcherFromSignal<T>(accessor: Accessor<T>, predicate?: (value: T) => boolean): ReactiveMatcher
  • function useBindings<TRenderable extends Renderable = Renderable>(createLayer: () => UseBindingsLayer<TRenderable>): void
  • interface KeymapProviderProps
  • interface UseBindingsLayer<TRenderable extends Renderable = Renderable> extends Omit<Layer<Renderable, KeyEvent>, "target" | "targetMode">
  • type UseBindingsTarget<TRenderable extends Renderable = Renderable> = () => TRenderable | null | undefined

@opentui/keymap/testing#

Added

  • class TestKeymapEvent implements KeymapEvent
  • class TestKeymapHost implements KeymapHost<TestKeymapTarget, TestKeymapEvent>
  • class TestKeymapTarget
  • const DEFAULT_TEST_HOST_METADATA: HostMetadata
  • constructor TestKeymapEvent(name: string, modifiers?: TestKeyModifierOptions)
  • constructor TestKeymapHost(options?: CreateTestKeymapHostOptions)
  • constructor TestKeymapTarget(id: string)
  • function captureKeymapDiagnostics(keymap: Keymap<any, any>): TestDiagnosticCapture
  • function createTestHostMetadata(options?: HostMetadata | TestHostMetadataOptions): HostMetadata
  • function createTestKeymap(options?: CreateTestKeymapOptions): TestKeymapHarness
  • function createTestKeymapHost(options?: CreateTestKeymapHostOptions): TestKeymapHost
  • interface CreateTestKeymapHostOptions
  • interface CreateTestKeymapOptions extends CreateTestKeymapHostOptions
  • interface TestDiagnosticCapture
  • interface TestKeymapHarness
  • type TestHostMetadataOptions = Partial<Omit<HostMetadata, "modifiers">> & { modifiers?: Partial<HostMetadata["modifiers"]>; }
  • type TestKeyModifierOptions = Partial<Pick<KeymapEvent, "ctrl" | "shift" | "meta" | "super" | "hyper">>

@opentui/qrcode#

Added

  • class QRCode
  • class QRCodeRenderable extends BaseQRCodeRenderable<ErrorCorrectionLevel, number, QRCode>
  • class QrSegment
  • const EciAssignment: { readonly ISO_8859_1: 3; readonly SHIFT_JIS: 20; readonly UTF_8: 26; }
  • constructor QRCodeRenderable(ctx: RenderContext, options?: QRCodeOptions)
  • enum ErrorCorrectionLevel
  • function createQrSvg(text: string, options?: EncodeOptions & { ecl?: ErrorCorrectionLevel; border?: number; moduleSize?: number; }): string
  • function encodeTextBytes(text: string, encoding?: ByteEncoding): Uint8Array
  • interface EncodeOptions
  • interface Fnc1SecondPositionInfo
  • interface Gs1Element
  • interface QRCodeOptions extends QRCodeSharedOptions<QRCodeRenderable, ErrorCorrectionLevel>
  • interface StructuredAppendInfo
  • interface TerminalRenderOptions
  • type ByteEncoding = "utf-8" | "iso-8859-1" | "shift-jis"
  • type QRCodeFitMode = "contain" | "none"

@opentui/qrcode/react#

Added

  • class QRCode
  • class QRCodeRenderable extends BaseQRCodeRenderable<ErrorCorrectionLevel, number, QRCode>
  • class QrSegment
  • const EciAssignment: { readonly ISO_8859_1: 3; readonly SHIFT_JIS: 20; readonly UTF_8: 26; }
  • constructor QRCodeRenderable(ctx: RenderContext, options?: QRCodeOptions)
  • enum ErrorCorrectionLevel
  • function createQrSvg(text: string, options?: EncodeOptions & { ecl?: ErrorCorrectionLevel; border?: number; moduleSize?: number; }): string
  • function encodeTextBytes(text: string, encoding?: ByteEncoding): Uint8Array
  • function registerQRCode(): void
  • interface EncodeOptions
  • interface Fnc1SecondPositionInfo
  • interface Gs1Element
  • interface QRCodeOptions extends QRCodeSharedOptions<QRCodeRenderable, ErrorCorrectionLevel>
  • interface StructuredAppendInfo
  • interface TerminalRenderOptions
  • type ByteEncoding = "utf-8" | "iso-8859-1" | "shift-jis"
  • type QRCodeFitMode = "contain" | "none"

@opentui/qrcode/solid#

Added

  • class QRCode
  • class QRCodeRenderable extends BaseQRCodeRenderable<ErrorCorrectionLevel, number, QRCode>
  • class QrSegment
  • const EciAssignment: { readonly ISO_8859_1: 3; readonly SHIFT_JIS: 20; readonly UTF_8: 26; }
  • constructor QRCodeRenderable(ctx: RenderContext, options?: QRCodeOptions)
  • enum ErrorCorrectionLevel
  • function createQrSvg(text: string, options?: EncodeOptions & { ecl?: ErrorCorrectionLevel; border?: number; moduleSize?: number; }): string
  • function encodeTextBytes(text: string, encoding?: ByteEncoding): Uint8Array
  • function registerQRCode(): void
  • interface EncodeOptions
  • interface Fnc1SecondPositionInfo
  • interface Gs1Element
  • interface QRCodeOptions extends QRCodeSharedOptions<QRCodeRenderable, ErrorCorrectionLevel>
  • interface StructuredAppendInfo
  • interface TerminalRenderOptions
  • type ByteEncoding = "utf-8" | "iso-8859-1" | "shift-jis"
  • type QRCodeFitMode = "contain" | "none"

@opentui/react#

Added

  • const AppContext: Context<AppContext>
  • const TimeToFirstDraw: (props: TimeToFirstDrawProps) => ReactElement<TimeToFirstDrawOptions & { children?: React.ReactNode; style?: Partial<Omit<TimeToFirstDrawOptions | undefined, NonStyledProps>> | undefined; } & ReactProps<TimeToFirstDrawRenderable>, string | JSXElementConstructor<any>>
  • const baseComponents: { box: typeof BoxRenderable; text: typeof TextRenderable; code: typeof CodeRenderable; diff: typeof DiffRenderable; markdown: typeof MarkdownRenderable; input: typeof InputRenderable; select: typeof SelectRenderable; textarea: typeof TextareaRenderable; scrollbox: typeof ScrollBoxRenderable; "ascii-font": typeof ASCIIFontRenderable; "tab-select": typeof TabSelectRenderable; "line-number": typeof LineNumberRenderable; span: typeof SpanRenderable; br: typeof LineBreakRenderable; b: typeof BoldSpanRenderable; strong: typeof BoldSpanRenderable; i: typeof ItalicSpanRenderable; em: typeof ItalicSpanRenderable; u: typeof UnderlineSpanRenderable; a: typeof LinkRenderable; }
  • const componentCatalogue: ComponentCatalogue
  • const createPortal: (children: ReactNode, containerInfo: any, implementation: any, key?: string | null) => ReactPortal
  • const flushSync: { (): void; <R>(fn: () => R): R; } & { (): void; <R>(fn: () => R): R; }
  • const useAppContext: () => AppContext
  • const useBlur: (handler: () => void) => void
  • const useFocus: (handler: () => void) => void
  • const useKeyboard: (handler: (key: KeyEvent) => void, options?: UseKeyboardOptions) => void
  • const useOnResize: (callback: (width: number, height: number) => void) => CliRenderer
  • const usePaste: (handler: (event: PasteEvent) => void) => void
  • const useRenderer: () => CliRenderer
  • const useSelectionHandler: (handler: (selection: Selection) => void) => void
  • const useTerminalDimensions: () => { width: number; height: number; }
  • const useTimeline: (options?: TimelineOptions) => Timeline
  • function Slot<TSlots extends SlotMap, TContext extends PluginContext = PluginContext, K extends keyof TSlots = keyof TSlots>(props: ReactSlotProps<TSlots, K, TContext>): ReactNode
  • function createReactSlotRegistry<TSlots extends SlotMap, TContext extends PluginContext = PluginContext>(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions): SlotRegistry<ReactNode, TSlots, TContext>
  • function createRoot(renderer: CliRenderer): Root
  • function createSlot<TSlots extends SlotMap, TContext extends PluginContext = PluginContext>(registry: SlotRegistry<ReactNode, TSlots, TContext>, options?: ReactSlotOptions): ReactSlotComponent<TSlots>
  • function extend<T extends ComponentCatalogue>(objects: T): void
  • function getComponentCatalogue(): ComponentCatalogue
  • index OpenTUIComponents[componentName: string]: RenderableConstructor
  • interface OpenTUIComponents
  • interface ReactSlotOptions
  • interface UseKeyboardOptions
  • reexport SlotMode from "@opentui/core"
  • reexport createElement from "react"
  • type AsciiFontProps = ComponentProps<ASCIIFontOptions, ASCIIFontRenderable>
  • type BoxProps = ComponentProps<ContainerProps<BoxOptions>, BoxRenderable> & { focused?: boolean; }
  • type CodeProps = ComponentProps<CodeOptions, CodeRenderable>
  • type DiffProps = ComponentProps<DiffRenderableOptions, DiffRenderable>
  • type ExtendedComponentProps<TConstructor extends RenderableConstructor, TOptions = ExtractRenderableOptions<TConstructor>> = TOptions & { children?: React.ReactNode; style?: Partial<Omit<TOptions, GetNonStyledProperties<TConstructor>>>; } & ReactProps<ExtractRenderable<TConstructor>>
  • type ExtendedIntrinsicElements<TComponentCatalogue extends Record<string, RenderableConstructor>> = { [TComponentName in keyof TComponentCatalogue]: ExtendedComponentProps<TComponentCatalogue[TComponentName]>; }
  • type GetNonStyledProperties<TConstructor> = TConstructor extends RenderableConstructor<TextRenderable> ? NonStyledProps | "content" : TConstructor extends RenderableConstructor<BoxRenderable> ? NonStyledProps | "title" | "bottomTitle" : TConstructor extends RenderableConstructor<ASCIIFontRenderable> ? NonStyledProps | "text" | "selectable" : TConstructor extends RenderableConstructor<InputRenderable> ? NonStyledProps | "placeholder" | "value" : TConstructor extends RenderableConstructor<TextareaRenderable> ? NonStyledProps | "placeholder" | "initialValue" : TConstructor extends RenderableConstructor<CodeRenderable> ? NonStyledProps | "content" | "filetype" | "syntaxStyle" | "treeSitterClient" | "conceal" | "drawUnstyledText" : TConstructor extends RenderableConstructor<MarkdownRenderable> ? NonStyledProps | "content" | "syntaxStyle" | "treeSitterClient" | "conceal" | "renderNode" : NonStyledProps
  • type InputProps = ComponentProps<InputRenderableOptions, InputRenderable> & { focused?: boolean; onInput?: (value: string) => void; onChange?: (value: string) => void; onSubmit?: (value: string) => void; }
  • type LineBreakProps = Pick<SpanProps, "id">
  • type LineNumberProps = ComponentProps<ContainerProps<LineNumberOptions>, LineNumberRenderable> & { focused?: boolean; }
  • type LinkProps = SpanProps & { href: string; }
  • type MarkdownProps = ComponentProps<MarkdownOptions, MarkdownRenderable>
  • type NonStyledProps = "id" | "buffered" | "live" | "enableLayout" | "selectable" | "renderAfter" | "renderBefore" | `on${string}`
  • type ReactBoundSlotProps<TSlots extends SlotMap, K extends keyof TSlots> = { name: K; mode?: SlotMode; children?: ReactNode; } & TSlots[K]
  • type ReactPlugin<TSlots extends SlotMap, TContext extends PluginContext = PluginContext> = Plugin<ReactNode, TSlots, TContext>
  • type ReactProps<TRenderable = unknown> = { key?: React.Key; ref?: React.Ref<TRenderable>; }
  • type ReactRegistrySlotComponent<TSlots extends SlotMap, TContext extends PluginContext = PluginContext> = <K extends keyof TSlots>(props: ReactSlotProps<TSlots, K, TContext>) => ReactNode
  • type ReactSlotComponent<TSlots extends SlotMap> = <K extends keyof TSlots>(props: ReactBoundSlotProps<TSlots, K>) => ReactNode
  • type ReactSlotProps<TSlots extends SlotMap, K extends keyof TSlots, TContext extends PluginContext = PluginContext> = { registry: SlotRegistry<ReactNode, TSlots, TContext>; name: K; mode?: SlotMode; children?: ReactNode; pluginFailurePlaceholder?: (failure: PluginErrorEvent) => ReactNode; } & TSlots[K]
  • type RenderableConstructor<TRenderable extends BaseRenderable = BaseRenderable> = new (ctx: RenderContext, options: any) => TRenderable
  • type Root = { render: (node: ReactNode) => void; unmount: () => void; }
  • type ScrollBoxProps = ComponentProps<ContainerProps<ScrollBoxOptions>, ScrollBoxRenderable> & { focused?: boolean; }
  • type SelectProps = ComponentProps<SelectRenderableOptions, SelectRenderable> & { focused?: boolean; onChange?: (index: number, option: SelectOption | null) => void; onSelect?: (index: number, option: SelectOption | null) => void; }
  • type SpanProps = ComponentProps<TextNodeOptions, TextNodeRenderable> & { children?: TextChildren; }
  • type TabSelectProps = ComponentProps<TabSelectRenderableOptions, TabSelectRenderable> & { focused?: boolean; onChange?: (index: number, option: TabSelectOption | null) => void; onSelect?: (index: number, option: TabSelectOption | null) => void; }
  • type TextProps = ComponentProps<TextOptions, TextRenderable> & { children?: TextChildren; }
  • type TextareaProps = ComponentProps<TextareaOptions, TextareaRenderable> & { focused?: boolean; onSubmit?: () => void; onContentChange?: (event: ContentChangeEvent) => void; onCursorChange?: (event: CursorChangeEvent) => void; onKeyDown?: (event: KeyEvent) => void; }
  • type TimeToFirstDrawProps = ExtendedComponentProps<typeof TimeToFirstDrawRenderable>

@opentui/react/jsx-dev-runtime#

Added

  • namespace JSX
  • reexport Fragment from "react/jsx-dev-runtime"
  • reexport jsxDEV from "react/jsx-dev-runtime"

@opentui/react/jsx-runtime#

Added

  • namespace JSX
  • reexport Fragment from "react/jsx-runtime"
  • reexport jsx from "react/jsx-runtime"
  • reexport jsxs from "react/jsx-runtime"

@opentui/react/renderer#

Added

  • const createPortal: (children: ReactNode, containerInfo: any, implementation: any, key?: string | null) => ReactPortal
  • const flushSync: { (): void; <R>(fn: () => R): R; } & { (): void; <R>(fn: () => R): R; }
  • function createRoot(renderer: CliRenderer): Root
  • type Root = { render: (node: ReactNode) => void; unmount: () => void; }

@opentui/react/runtime-plugin-support#

Added

  • function ensureRuntimePluginSupport(options?: ReactRuntimePluginSupportOptions): boolean
  • interface ReactRuntimePluginSupportOptions

@opentui/react/runtime-plugin-support/configure#

Added

  • function ensureRuntimePluginSupport(options?: ReactRuntimePluginSupportOptions): boolean
  • interface ReactRuntimePluginSupportOptions

@opentui/react/test-utils#

Added

  • function testRender(node: ReactNode, testRendererOptions: TestRendererOptions): Promise<TestRendererSetup>

@opentui/solid#

Added

  • class BoldSpanRenderable extends TextModifierRenderable
  • class ItalicSpanRenderable extends TextModifierRenderable
  • class LayoutSlotRenderable extends SlotBaseRenderable
  • class LineBreakRenderable extends SpanRenderable
  • class LinkRenderable extends SpanRenderable
  • class SlotRenderable extends SlotBaseRenderable
  • class TextSlotRenderable extends TextNodeRenderable
  • class UnderlineSpanRenderable extends TextModifierRenderable
  • const RendererContext: Context<CliRenderer | undefined>
  • const TimeToFirstDraw: (props: TimeToFirstDrawProps) => any
  • const _render: (code: () => BaseRenderable, node: BaseRenderable) => () => void
  • const baseComponents: { box: typeof BoxRenderable; text: typeof TextRenderable; input: typeof InputRenderable; select: typeof SelectRenderable; textarea: typeof TextareaRenderable; ascii_font: typeof ASCIIFontRenderable; tab_select: typeof TabSelectRenderable; scrollbox: typeof ScrollBoxRenderable; code: typeof CodeRenderable; diff: typeof DiffRenderable; line_number: typeof LineNumberRenderable; markdown: typeof MarkdownRenderable; span: typeof SpanRenderable; strong: typeof BoldSpanRenderable; b: typeof BoldSpanRenderable; em: typeof ItalicSpanRenderable; i: typeof ItalicSpanRenderable; u: typeof UnderlineSpanRenderable; br: typeof LineBreakRenderable; a: typeof LinkRenderable; }
  • const componentCatalogue: ComponentCatalogue
  • const createComponent: <T>(Comp: (props: T) => BaseRenderable, props: T) => BaseRenderable
  • const createElement: (tag: string) => BaseRenderable
  • const createTextNode: (value: string) => BaseRenderable
  • const effect: <T>(fn: (prev?: T) => T, init?: T) => void
  • const insert: <T>(parent: any, accessor: T | (() => T), marker?: any | null, initial?: any) => BaseRenderable
  • const insertNode: (parent: BaseRenderable, node: BaseRenderable, anchor?: BaseRenderable | undefined) => void
  • const memo: <T>(fn: () => T, equal: boolean) => () => T
  • const mergeProps: (...sources: unknown[]) => unknown
  • const onBlur: (callback: () => void) => void
  • const onFocus: (callback: () => void) => void
  • const onResize: (callback: (width: number, height: number) => void) => void
  • const render: (node: () => JSX.Element, rendererOrConfig?: CliRenderer | CliRendererConfig) => Promise<void>
  • const setProp: <T>(node: BaseRenderable, name: string, value: T, prev?: T | undefined) => T
  • const spread: <T>(node: any, accessor: (() => T) | T, skipChildren?: boolean) => void
  • const testRender: (node: () => JSX.Element, renderConfig?: TestRendererOptions) => Promise<TestRendererSetup>
  • const textNodeKeys: readonly [ "span", "b", "strong", "i", "em", "u", "a" ]
  • const use: <A, T>(fn: (element: BaseRenderable, arg: A) => T, element: BaseRenderable, arg: A) => T
  • deprecated const useKeyHandler: (callback: (key: KeyEvent) => void, options?: UseKeyboardOptions) => void
  • const useKeyboard: (callback: (key: KeyEvent) => void, options?: UseKeyboardOptions) => void
  • const usePaste: (callback: (event: PasteEvent) => void) => void
  • const useRenderer: () => CliRenderer
  • const useSelectionHandler: (callback: (selection: Selection) => void) => void
  • const useTerminalDimensions: () => Accessor<{ width: number; height: number; }>
  • const useTimeline: (options?: TimelineOptions) => Timeline
  • constructor BoldSpanRenderable(options: any)
  • constructor ItalicSpanRenderable(options: any)
  • constructor LayoutSlotRenderable(id: string, parent?: SlotRenderable, layoutParent?: BaseRenderable)
  • constructor LineBreakRenderable(_ctx: RenderContext | null, options: TextNodeOptions)
  • constructor LinkRenderable(_ctx: RenderContext | null, options: LinkOptions)
  • constructor SlotRenderable(id: string)
  • constructor TextSlotRenderable(id: string, parent?: SlotRenderable)
  • constructor UnderlineSpanRenderable(options: any)
  • function Dynamic<T extends ValidComponent>(props: DynamicProps<T>): JSX.Element
  • function Portal(props: { mount?: DomNode; ref?: (el: {}) => void; children: JSX.Element; }): DomNode
  • function Slot<TSlots extends SlotMap, TContext extends PluginContext = PluginContext, K extends keyof TSlots = keyof TSlots>(props: SolidSlotProps<TSlots, K, TContext>): JSX.Element
  • function createDynamic<T extends ValidComponent>(component: () => T | undefined, props: ComponentProps<T>): JSX.Element
  • function createScrollbackWriter(node: SolidScrollbackNode, options?: SolidScrollbackWriterOptions): ScrollbackWriter
  • function createSlot<TSlots extends SlotMap, TContext extends PluginContext = PluginContext>(registry: SlotRegistry<JSX.Element, TSlots, TContext>, options?: SolidSlotOptions): SolidSlotComponent<TSlots>
  • function createSlotNode(): SlotRenderable
  • function createSolidSlotRegistry<TSlots extends SlotMap, TContext extends PluginContext = PluginContext>(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions): SlotRegistry<JSX.Element, TSlots, TContext>
  • function extend<T extends ComponentCatalogue>(objects: T): void
  • function getComponentCatalogue(): ComponentCatalogue
  • function writeSolidToScrollback(renderer: CliRenderer, node: SolidScrollbackNode, options?: SolidScrollbackWriterOptions): void
  • index OpenTUIComponents[componentName: string]: RenderableConstructor
  • interface LinkOptions extends TextNodeOptions
  • interface OpenTUIComponents
  • interface SolidScrollbackWriterOptions
  • interface SolidSlotOptions
  • interface UseKeyboardOptions
  • namespace JSX
  • reexport SlotMode from "@opentui/core"
  • type AsciiFontProps = ComponentProps<ASCIIFontOptions, ASCIIFontRenderable>
  • type BoxProps = ComponentProps<ContainerProps<BoxOptions>, BoxRenderable> & { focused?: boolean; }
  • type CodeProps = ComponentProps<CodeOptions, CodeRenderable>
  • type DomNode = BaseRenderable
  • type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = { [K in keyof P]: P[K]; } & { component: T | undefined; }
  • type ElementProps<TRenderable = unknown> = { ref?: Ref<TRenderable>; [eventName: `on:${string}`]: ((...args: any[]) => void) | undefined; }
  • type ExtendedComponentProps<TConstructor extends RenderableConstructor, TOptions = ExtractRenderableOptions<TConstructor>> = TOptions & { children?: JSX.Element; style?: Partial<Omit<TOptions, GetNonStyledProperties<TConstructor>>>; } & ElementProps<ExtractRenderable<TConstructor>>
  • type ExtendedIntrinsicElements<TComponentCatalogue extends Record<string, RenderableConstructor>> = { [TComponentName in keyof TComponentCatalogue]: ExtendedComponentProps<TComponentCatalogue[TComponentName]>; }
  • type GetNonStyledProperties<TConstructor> = TConstructor extends RenderableConstructor<TextRenderable> ? NonStyledProps | "content" : TConstructor extends RenderableConstructor<BoxRenderable> ? NonStyledProps | "title" | "bottomTitle" : TConstructor extends RenderableConstructor<ASCIIFontRenderable> ? NonStyledProps | "text" | "selectable" : TConstructor extends RenderableConstructor<InputRenderable> ? NonStyledProps | "minLength" | "maxLength" | "placeholder" | "value" : TConstructor extends RenderableConstructor<CodeRenderable> ? NonStyledProps | "content" | "filetype" | "syntaxStyle" | "treeSitterClient" : TConstructor extends RenderableConstructor<MarkdownRenderable> ? NonStyledProps | "content" | "syntaxStyle" | "treeSitterClient" | "conceal" | "renderNode" : NonStyledProps
  • type InputProps = ComponentProps<InputRenderableOptions, InputRenderable> & { focused?: boolean; onInput?: (value: string) => void; onChange?: (value: string) => void; onSubmit?: (value: string) => void; }
  • type LinkProps = SpanProps & { href: string; }
  • type MarkdownProps = ComponentProps<MarkdownOptions, MarkdownRenderable>
  • type NonStyledProps = "id" | "buffered" | "live" | "enableLayout" | "selectable" | "renderAfter" | "renderBefore" | `on${string}`
  • type RenderableConstructor<TRenderable extends BaseRenderable = BaseRenderable> = new (ctx: RenderContext, options: any) => TRenderable
  • type ScrollBoxProps = ComponentProps<ContainerProps<ScrollBoxOptions>, ScrollBoxRenderable> & { focused?: boolean; stickyScroll?: boolean; stickyStart?: "bottom" | "top" | "left" | "right"; }
  • type SelectProps = ComponentProps<SelectRenderableOptions, SelectRenderable> & { focused?: boolean; onChange?: (index: number, option: SelectOption | null) => void; onSelect?: (index: number, option: SelectOption | null) => void; }
  • type SolidBoundSlotProps<TSlots extends SlotMap, K extends keyof TSlots> = { name: K; mode?: SlotMode; children?: JSX.Element; } & TSlots[K]
  • type SolidPlugin<TSlots extends SlotMap, TContext extends PluginContext = PluginContext> = Plugin<JSX.Element, TSlots, TContext>
  • type SolidRegistrySlotComponent<TSlots extends SlotMap, TContext extends PluginContext = PluginContext> = <K extends keyof TSlots>(props: SolidSlotProps<TSlots, K, TContext>) => JSX.Element
  • type SolidScrollbackNode = (ctx: ScrollbackRenderContext) => JSX.Element
  • type SolidSlotComponent<TSlots extends SlotMap> = <K extends keyof TSlots>(props: SolidBoundSlotProps<TSlots, K>) => JSX.Element
  • type SolidSlotProps<TSlots extends SlotMap, K extends keyof TSlots, TContext extends PluginContext = PluginContext> = { registry: SlotRegistry<JSX.Element, TSlots, TContext>; name: K; mode?: SlotMode; children?: JSX.Element; pluginFailurePlaceholder?: (failure: PluginErrorEvent) => JSX.Element; } & TSlots[K]
  • type SpanProps = ComponentProps<{}, TextNodeRenderable> & { children?: TextChildren | Array<TextChildren>; }
  • type TabSelectProps = ComponentProps<TabSelectRenderableOptions, TabSelectRenderable> & { focused?: boolean; onChange?: (index: number, option: TabSelectOption | null) => void; onSelect?: (index: number, option: TabSelectOption | null) => void; }
  • type TextNodeKey = (typeof textNodeKeys)[number]
  • type TextProps = ComponentProps<TextOptions, TextRenderable> & { children?: TextChildren | Array<TextChildren>; }
  • type TextareaProps = ComponentProps<TextareaOptions, TextareaRenderable> & { focused?: boolean; onSubmit?: () => void; onContentChange?: (value: string) => void; onCursorChange?: (value: { line: number; visualColumn: number; }) => void; onKeyDown?: (event: KeyEvent) => void; onKeyPress?: (event: KeyEvent) => void; }
  • type TimeToFirstDrawProps = ExtendedComponentProps<typeof TimeToFirstDrawRenderable>

@opentui/solid/bun-plugin#

Added

  • const default: BunPlugin
  • function createSolidTransformPlugin(input?: CreateSolidTransformPluginOptions): BunPlugin
  • function ensureSolidTransformPlugin(input?: CreateSolidTransformPluginOptions): boolean
  • function resetSolidTransformPluginState(): void
  • interface CreateSolidTransformPluginOptions
  • type ResolveImportPath = (specifier: string) => string | null

@opentui/solid/components#

Added

  • function extend<T extends ComponentCatalogue>(objects: T): void
  • function getComponentCatalogue(): ComponentCatalogue
  • index OpenTUIComponents[componentName: string]: RenderableConstructor
  • interface OpenTUIComponents
  • type ExtendedComponentProps<TConstructor extends RenderableConstructor, TOptions = ExtractRenderableOptions<TConstructor>> = TOptions & { children?: JSX.Element; style?: Partial<Omit<TOptions, GetNonStyledProperties<TConstructor>>>; } & ElementProps<ExtractRenderable<TConstructor>>
  • type ExtendedIntrinsicElements<TComponentCatalogue extends Record<string, RenderableConstructor>> = { [TComponentName in keyof TComponentCatalogue]: ExtendedComponentProps<TComponentCatalogue[TComponentName]>; }

@opentui/solid/jsx-dev-runtime#

Added

  • namespace JSX

@opentui/solid/jsx-runtime#

Added

  • namespace JSX

@opentui/solid/runtime-plugin-support#

Added

  • function ensureRuntimePluginSupport(options?: SolidRuntimePluginSupportOptions): boolean
  • interface SolidRuntimePluginSupportOptions

@opentui/solid/runtime-plugin-support/configure#

Added

  • function ensureRuntimePluginSupport(options?: SolidRuntimePluginSupportOptions): boolean
  • interface SolidRuntimePluginSupportOptions

@opentui/three#

Added

  • class CLICanvas
  • class ExplodingSpriteEffect
  • class ExplosionManager
  • class InstanceManager
  • class MeshPool
  • class PhysicsExplodingSpriteEffect
  • class PhysicsExplosionManager
  • class PlanckPhysicsWorld implements PhysicsWorld
  • class PlanckRigidBody implements PhysicsRigidBody
  • class RapierPhysicsWorld implements PhysicsWorld
  • class RapierRigidBody implements PhysicsRigidBody
  • class SheetSprite extends Sprite
  • class SpriteAnimator
  • class SpriteParticleGenerator
  • class SpriteResource
  • class SpriteResourceManager
  • class SpriteUtils
  • class TextureUtils
  • class ThreeCliRenderer
  • class ThreeRenderable extends Renderable
  • class TiledSprite
  • const DEFAULT_EXPLOSION_PARAMETERS: ExplosionEffectParameters
  • const DEFAULT_PHYSICS_EXPLOSION_PARAMETERS: PhysicsExplosionEffectParameters
  • constructor CLICanvas(device: GPUDevice, width: number, height: number, superSample: SuperSampleType, sampleAlgo?: SuperSampleAlgorithm)
  • constructor ExplodingSpriteEffect(scene: THREE.Scene, resource: SpriteResource, frameUvOffset: THREE.Vector2, frameUvSize: THREE.Vector2, spriteWorldTransform: THREE.Matrix4, userParams?: Partial<ExplosionEffectParameters>)
  • constructor ExplosionManager(scene: THREE.Scene)
  • constructor InstanceManager(scene: Scene, geometry: THREE.BufferGeometry, material: THREE.Material, options: InstanceManagerOptions)
  • constructor PhysicsExplodingSpriteEffect(scene: THREE.Scene, physicsWorld: PhysicsWorld, resource: SpriteResource, frameUvOffset: THREE.Vector2, frameUvSize: THREE.Vector2, spriteWorldTransform: THREE.Matrix4, userParams?: Partial<PhysicsExplosionEffectParameters>)
  • constructor PhysicsExplosionManager(scene: THREE.Scene, physicsWorld: PhysicsWorld)
  • constructor PlanckPhysicsWorld(planckWorld: planck.World)
  • constructor PlanckRigidBody(planckBody: planck.Body)
  • constructor RapierPhysicsWorld(rapierWorld: RAPIER.World)
  • constructor RapierRigidBody(rapierBody: RAPIER.RigidBody)
  • constructor SheetSprite(material: SpriteMaterial, numFrames: number)
  • constructor SpriteAnimator(scene: Scene)
  • constructor SpriteParticleGenerator(scene: THREE.Scene, initialBaseConfig: ParticleEffectParameters)
  • constructor SpriteResource(texture: THREE.DataTexture, sheetProperties: SheetProperties, scene: Scene)
  • constructor SpriteResourceManager(scene: Scene)
  • constructor ThreeCliRenderer(cliRenderer: CliRenderer, options: ThreeCliRendererOptions)
  • constructor ThreeRenderable(ctx: RenderContext, options: ThreeRenderableOptions)
  • constructor TiledSprite(id: string, userSpriteDefinition: SpriteDefinition, animator: SpriteAnimator, animationInstanceParams: Array<{ name: string; state: ResolvedAnimationState; resource: SpriteResource; index: number; instanceManager: InstanceManager; frameAttribute: THREE.InstancedBufferAttribute; flipAttribute: THREE.InstancedBufferAttribute; }>)
  • enum SuperSampleAlgorithm
  • enum SuperSampleType
  • interface AnimationDefinition
  • interface AnimationStateConfig
  • interface ExplosionCreationData
  • interface ExplosionEffectParameters
  • interface ExplosionHandle
  • interface InstanceManagerOptions
  • interface MeshPoolOptions
  • interface ParticleEffectParameters
  • interface PhysicsExplosionCreationData
  • interface PhysicsExplosionEffectParameters
  • interface PhysicsExplosionHandle
  • interface PhysicsSpriteRecreationData
  • interface ResourceConfig
  • interface SheetProperties
  • interface SpriteDefinition
  • interface SpriteRecreationData
  • interface ThreeCliRendererOptions
  • interface ThreeRenderableOptions extends RenderableOptions<ThreeRenderable>
  • namespace THREE from "three"
  • type ResolvedAnimationState = Required<AnimationStateConfig> & { sheetTilesetWidth: number; sheetTilesetHeight: number; texture: THREE.DataTexture; }

@opentui/three/runtime-modules#

Added

  • const runtimeModules: { "@opentui/three": typeof threeRuntime; }