@termuijs/core 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -59,6 +59,35 @@ declare function colorToAnsiFg(color: Color, depth: ColorDepth): string;
59
59
  * Generate the ANSI escape codes for a background color at the given depth.
60
60
  */
61
61
  declare function colorToAnsiBg(color: Color, depth: ColorDepth): string;
62
+ /**
63
+ * Compute relative luminance per WCAG 2.1.
64
+ * Returns value in [0, 1] where 0 = black, 1 = white.
65
+ */
66
+ declare function relativeLuminance(color: Color): number;
67
+ /**
68
+ * Compute WCAG 2.1 contrast ratio between foreground and background colors.
69
+ * Returns value in [1, 21] where 21 is maximum contrast (black on white).
70
+ */
71
+ declare function contrastRatio(fg: Color, bg: Color): number;
72
+ /**
73
+ * Determine WCAG 2.1 conformance level for a contrast ratio.
74
+ * @param ratio Result of contrastRatio()
75
+ * @param large True if text is large (18pt+ regular or 14pt+ bold). Default: false.
76
+ */
77
+ declare function wcagLevel(ratio: number, large?: boolean): 'AAA' | 'AA' | 'A' | 'fail';
78
+ interface ContrastFailure {
79
+ /** Description of the color pair, e.g. 'fg on bg' */
80
+ pair: string;
81
+ ratio: number;
82
+ level: 'A' | 'fail';
83
+ required: 'AA';
84
+ }
85
+ /**
86
+ * Validate contrast for key pairs in a theme (hex string map).
87
+ * Checks: fg/bg, primary/bg, error/bg, success/bg, warning/bg, muted/bg.
88
+ * Returns failures (pairs below AA = 4.5:1 for normal text).
89
+ */
90
+ declare function validateThemeContrast(theme: Record<string, string>): ContrastFailure[];
62
91
 
63
92
  interface TerminalOptions {
64
93
  /** Override stdout stream (useful for testing) */
@@ -92,6 +121,8 @@ declare class Terminal {
92
121
  private _exitHandler;
93
122
  private _sigintHandler;
94
123
  private _sigtermHandler;
124
+ private _uncaughtExceptionHandler;
125
+ private _unhandledRejectionHandler;
95
126
  private _restored;
96
127
  constructor(options?: TerminalOptions);
97
128
  /** Current terminal width in columns */
@@ -247,11 +278,12 @@ declare class Renderer {
247
278
  private _frameTimer;
248
279
  private _renderRequested;
249
280
  private _colorDepth;
281
+ private _onTick;
250
282
  constructor(terminal: Terminal, screen: Screen, fps?: number);
251
283
  /** Change the rendering frame rate cap */
252
284
  setFPS(fps: number): void;
253
285
  /** Start the render loop */
254
- start(): void;
286
+ start(onTick?: () => void): void;
255
287
  /** Stop the render loop */
256
288
  stop(): void;
257
289
  /** Request a render on the next frame */
@@ -404,6 +436,21 @@ declare class LayerManager {
404
436
  private _expandDirty;
405
437
  }
406
438
 
439
+ declare const caps: {
440
+ readonly color: boolean;
441
+ readonly unicode: boolean;
442
+ readonly motion: boolean;
443
+ readonly ci: boolean;
444
+ };
445
+
446
+ declare const BOX: Record<string, string>;
447
+ declare const BRAILLE_SPIN: readonly ["|", "/", "-", "\\"];
448
+ declare const BLOCK: {
449
+ readonly full: "#";
450
+ readonly empty: " ";
451
+ readonly partial: "-";
452
+ };
453
+
407
454
  /**
408
455
  * Keyboard event emitted when a key is pressed.
409
456
  */
@@ -679,6 +726,8 @@ interface LayoutNode {
679
726
  children: LayoutNode[];
680
727
  /** Computed position and size — filled in by computeLayout() */
681
728
  computed: Rect;
729
+ /** Dirty flag — true when this node needs to be re-laid-out. Foundation for layout caching. */
730
+ _dirty: boolean;
682
731
  }
683
732
  /**
684
733
  * Create a LayoutNode with default values.
@@ -1188,6 +1237,9 @@ declare class App {
1188
1237
  private _options;
1189
1238
  private _mounted;
1190
1239
  private _exitResolve;
1240
+ private _unsubKey;
1241
+ private _unsubMouse;
1242
+ private _widgetById;
1191
1243
  constructor(rootWidget: RootWidget, options?: AppOptions);
1192
1244
  /**
1193
1245
  * Start the application.
@@ -1211,6 +1263,7 @@ declare class App {
1211
1263
  removeOverlay(id: string): void;
1212
1264
  /**
1213
1265
  * Request a re-render on the next frame.
1266
+ * Skips layout + render pass when the root widget reports no dirty state.
1214
1267
  */
1215
1268
  requestRender(): void;
1216
1269
  /**
@@ -1224,13 +1277,15 @@ declare class App {
1224
1277
  /**
1225
1278
  * Build the bubble chain for keyboard events.
1226
1279
  * Returns an array: [focused widget, parent, grandparent, ..., root]
1280
+ * Uses the cached _widgetById map for O(1) lookup instead of DFS.
1227
1281
  */
1228
1282
  private _buildBubbleChain;
1229
1283
  /**
1230
- * Find a widget by ID in the widget tree (DFS).
1231
- * Uses duck-typing to work with any object that has id/children.
1284
+ * Rebuild the widget ID cache by walking the entire widget tree.
1285
+ * Called after syncLayout() so the map stays current.
1232
1286
  */
1233
- private _findWidgetById;
1287
+ private _buildWidgetMap;
1288
+ private _walkWidget;
1234
1289
  }
1235
1290
 
1236
1291
  /**
@@ -1327,6 +1382,13 @@ declare const resetStrikethrough = "\u001B[29m";
1327
1382
  declare function setScrollRegion(top: number, bottom: number): string;
1328
1383
  declare const resetScrollRegion = "\u001B[r";
1329
1384
  declare function setTitle(title: string): string;
1385
+ /**
1386
+ * Write text to the system clipboard via OSC 52.
1387
+ * Supported by: xterm, iTerm2, Kitty, WezTerm, Alacritty, Windows Terminal.
1388
+ * @param text Plain text to copy to clipboard
1389
+ * @param stdout Target stream (default: process.stdout)
1390
+ */
1391
+ declare function writeClipboard(text: string, stdout?: NodeJS.WriteStream): void;
1330
1392
 
1331
1393
  declare const ansi_CSI: typeof CSI;
1332
1394
  declare const ansi_ESC: typeof ESC;
@@ -1372,8 +1434,9 @@ declare const ansi_setTitle: typeof setTitle;
1372
1434
  declare const ansi_showCursor: typeof showCursor;
1373
1435
  declare const ansi_strikethrough: typeof strikethrough;
1374
1436
  declare const ansi_underline: typeof underline;
1437
+ declare const ansi_writeClipboard: typeof writeClipboard;
1375
1438
  declare namespace ansi {
1376
- export { ansi_CSI as CSI, ansi_ESC as ESC, ansi_OSC as OSC, ansi_beginSyncUpdate as beginSyncUpdate, ansi_blink as blink, ansi_bold as bold, ansi_clearDown as clearDown, ansi_clearLine as clearLine, ansi_clearLineToEnd as clearLineToEnd, ansi_clearLineToStart as clearLineToStart, ansi_clearScreen as clearScreen, ansi_clearUp as clearUp, ansi_dim as dim, ansi_disableBracketedPaste as disableBracketedPaste, ansi_disableMouse as disableMouse, ansi_enableBracketedPaste as enableBracketedPaste, ansi_enableMouse as enableMouse, ansi_endSyncUpdate as endSyncUpdate, ansi_enterAltScreen as enterAltScreen, ansi_exitAltScreen as exitAltScreen, ansi_hideCursor as hideCursor, ansi_inverse as inverse, ansi_italic as italic, ansi_moveDown as moveDown, ansi_moveLeft as moveLeft, ansi_moveRight as moveRight, ansi_moveTo as moveTo, ansi_moveUp as moveUp, ansi_reset as reset, ansi_resetBlink as resetBlink, ansi_resetBold as resetBold, ansi_resetDim as resetDim, ansi_resetInverse as resetInverse, ansi_resetItalic as resetItalic, ansi_resetScrollRegion as resetScrollRegion, ansi_resetStrikethrough as resetStrikethrough, ansi_resetUnderline as resetUnderline, ansi_restoreCursorPosition as restoreCursorPosition, ansi_saveCursorPosition as saveCursorPosition, ansi_setScrollRegion as setScrollRegion, ansi_setTitle as setTitle, ansi_showCursor as showCursor, ansi_strikethrough as strikethrough, ansi_underline as underline };
1439
+ export { ansi_CSI as CSI, ansi_ESC as ESC, ansi_OSC as OSC, ansi_beginSyncUpdate as beginSyncUpdate, ansi_blink as blink, ansi_bold as bold, ansi_clearDown as clearDown, ansi_clearLine as clearLine, ansi_clearLineToEnd as clearLineToEnd, ansi_clearLineToStart as clearLineToStart, ansi_clearScreen as clearScreen, ansi_clearUp as clearUp, ansi_dim as dim, ansi_disableBracketedPaste as disableBracketedPaste, ansi_disableMouse as disableMouse, ansi_enableBracketedPaste as enableBracketedPaste, ansi_enableMouse as enableMouse, ansi_endSyncUpdate as endSyncUpdate, ansi_enterAltScreen as enterAltScreen, ansi_exitAltScreen as exitAltScreen, ansi_hideCursor as hideCursor, ansi_inverse as inverse, ansi_italic as italic, ansi_moveDown as moveDown, ansi_moveLeft as moveLeft, ansi_moveRight as moveRight, ansi_moveTo as moveTo, ansi_moveUp as moveUp, ansi_reset as reset, ansi_resetBlink as resetBlink, ansi_resetBold as resetBold, ansi_resetDim as resetDim, ansi_resetInverse as resetInverse, ansi_resetItalic as resetItalic, ansi_resetScrollRegion as resetScrollRegion, ansi_resetStrikethrough as resetStrikethrough, ansi_resetUnderline as resetUnderline, ansi_restoreCursorPosition as restoreCursorPosition, ansi_saveCursorPosition as saveCursorPosition, ansi_setScrollRegion as setScrollRegion, ansi_setTitle as setTitle, ansi_showCursor as showCursor, ansi_strikethrough as strikethrough, ansi_underline as underline, ansi_writeClipboard as writeClipboard };
1377
1440
  }
1378
1441
 
1379
- export { App, type AppOptions, BORDER_CHARS, BRAILLE_DOTS, BRAILLE_OFFSET, type BarSet, BarSets, type BorderChars, type BorderSet, BorderSets, type BorderStyle, CTRL_KEYS, type Cell, type Color, ColorDepth, type Constraint, ESCAPE_SEQUENCES, type Edges, EventEmitter, type EventMap, type FocusEvent, FocusManager, type Focusable, HORIZONTAL_BAR_SYMBOLS, InputParser, type KeyEvent, type Layer, LayerManager, type LayoutNode, type LineSet, LineSets, type MouseEvent, type NamedColor, type Rect, Renderer, type ResizeEvent, type RootWidget, SPECIAL_KEYS, Screen, type ScrollbarSet, ScrollbarSets, Shade, type Size, type Style, Terminal, type TerminalOptions, type TestScreen, VERTICAL_BAR_SYMBOLS, ansi, borderSize, cellsEqual, colorToAnsiBg, colorToAnsiFg, colorToRgb, computeLayout, containsPoint, createKeyEvent, createLayoutNode, createTestScreen, defaultStyle, detectColorDepth, emptyCell, emptyRect, fill, getBorderChars, intersectRect, isMouseSequence, length, max, mergeStyles, min, normalizeEdges, parseColor, parseMouseEvent, percentage, ratio, renderFallback, shouldUseFallback, shrinkRect, splitRect, stringWidth, stripAnsi, styleToCellAttrs, testScreenClear, testScreenGetCell, testScreenSetCell, testScreenSetString, testScreenToString, truncate, unionRect, wordWrap };
1442
+ export { App, type AppOptions, BLOCK, BORDER_CHARS, BOX, BRAILLE_DOTS, BRAILLE_OFFSET, BRAILLE_SPIN, type BarSet, BarSets, type BorderChars, type BorderSet, BorderSets, type BorderStyle, CTRL_KEYS, type Cell, type Color, ColorDepth, type Constraint, type ContrastFailure, ESCAPE_SEQUENCES, type Edges, EventEmitter, type EventMap, type FocusEvent, FocusManager, type Focusable, HORIZONTAL_BAR_SYMBOLS, InputParser, type KeyEvent, type Layer, LayerManager, type LayoutNode, type LineSet, LineSets, type MouseEvent, type NamedColor, type Rect, Renderer, type ResizeEvent, type RootWidget, SPECIAL_KEYS, Screen, type ScrollbarSet, ScrollbarSets, Shade, type Size, type Style, Terminal, type TerminalOptions, type TestScreen, VERTICAL_BAR_SYMBOLS, ansi, borderSize, caps, cellsEqual, colorToAnsiBg, colorToAnsiFg, colorToRgb, computeLayout, containsPoint, contrastRatio, createKeyEvent, createLayoutNode, createTestScreen, defaultStyle, detectColorDepth, emptyCell, emptyRect, fill, getBorderChars, intersectRect, isMouseSequence, length, max, mergeStyles, min, normalizeEdges, parseColor, parseMouseEvent, percentage, ratio, relativeLuminance, renderFallback, shouldUseFallback, shrinkRect, splitRect, stringWidth, stripAnsi, styleToCellAttrs, testScreenClear, testScreenGetCell, testScreenSetCell, testScreenSetString, testScreenToString, truncate, unionRect, validateThemeContrast, wcagLevel, wordWrap, writeClipboard };
package/dist/index.d.ts CHANGED
@@ -59,6 +59,35 @@ declare function colorToAnsiFg(color: Color, depth: ColorDepth): string;
59
59
  * Generate the ANSI escape codes for a background color at the given depth.
60
60
  */
61
61
  declare function colorToAnsiBg(color: Color, depth: ColorDepth): string;
62
+ /**
63
+ * Compute relative luminance per WCAG 2.1.
64
+ * Returns value in [0, 1] where 0 = black, 1 = white.
65
+ */
66
+ declare function relativeLuminance(color: Color): number;
67
+ /**
68
+ * Compute WCAG 2.1 contrast ratio between foreground and background colors.
69
+ * Returns value in [1, 21] where 21 is maximum contrast (black on white).
70
+ */
71
+ declare function contrastRatio(fg: Color, bg: Color): number;
72
+ /**
73
+ * Determine WCAG 2.1 conformance level for a contrast ratio.
74
+ * @param ratio Result of contrastRatio()
75
+ * @param large True if text is large (18pt+ regular or 14pt+ bold). Default: false.
76
+ */
77
+ declare function wcagLevel(ratio: number, large?: boolean): 'AAA' | 'AA' | 'A' | 'fail';
78
+ interface ContrastFailure {
79
+ /** Description of the color pair, e.g. 'fg on bg' */
80
+ pair: string;
81
+ ratio: number;
82
+ level: 'A' | 'fail';
83
+ required: 'AA';
84
+ }
85
+ /**
86
+ * Validate contrast for key pairs in a theme (hex string map).
87
+ * Checks: fg/bg, primary/bg, error/bg, success/bg, warning/bg, muted/bg.
88
+ * Returns failures (pairs below AA = 4.5:1 for normal text).
89
+ */
90
+ declare function validateThemeContrast(theme: Record<string, string>): ContrastFailure[];
62
91
 
63
92
  interface TerminalOptions {
64
93
  /** Override stdout stream (useful for testing) */
@@ -92,6 +121,8 @@ declare class Terminal {
92
121
  private _exitHandler;
93
122
  private _sigintHandler;
94
123
  private _sigtermHandler;
124
+ private _uncaughtExceptionHandler;
125
+ private _unhandledRejectionHandler;
95
126
  private _restored;
96
127
  constructor(options?: TerminalOptions);
97
128
  /** Current terminal width in columns */
@@ -247,11 +278,12 @@ declare class Renderer {
247
278
  private _frameTimer;
248
279
  private _renderRequested;
249
280
  private _colorDepth;
281
+ private _onTick;
250
282
  constructor(terminal: Terminal, screen: Screen, fps?: number);
251
283
  /** Change the rendering frame rate cap */
252
284
  setFPS(fps: number): void;
253
285
  /** Start the render loop */
254
- start(): void;
286
+ start(onTick?: () => void): void;
255
287
  /** Stop the render loop */
256
288
  stop(): void;
257
289
  /** Request a render on the next frame */
@@ -404,6 +436,21 @@ declare class LayerManager {
404
436
  private _expandDirty;
405
437
  }
406
438
 
439
+ declare const caps: {
440
+ readonly color: boolean;
441
+ readonly unicode: boolean;
442
+ readonly motion: boolean;
443
+ readonly ci: boolean;
444
+ };
445
+
446
+ declare const BOX: Record<string, string>;
447
+ declare const BRAILLE_SPIN: readonly ["|", "/", "-", "\\"];
448
+ declare const BLOCK: {
449
+ readonly full: "#";
450
+ readonly empty: " ";
451
+ readonly partial: "-";
452
+ };
453
+
407
454
  /**
408
455
  * Keyboard event emitted when a key is pressed.
409
456
  */
@@ -679,6 +726,8 @@ interface LayoutNode {
679
726
  children: LayoutNode[];
680
727
  /** Computed position and size — filled in by computeLayout() */
681
728
  computed: Rect;
729
+ /** Dirty flag — true when this node needs to be re-laid-out. Foundation for layout caching. */
730
+ _dirty: boolean;
682
731
  }
683
732
  /**
684
733
  * Create a LayoutNode with default values.
@@ -1188,6 +1237,9 @@ declare class App {
1188
1237
  private _options;
1189
1238
  private _mounted;
1190
1239
  private _exitResolve;
1240
+ private _unsubKey;
1241
+ private _unsubMouse;
1242
+ private _widgetById;
1191
1243
  constructor(rootWidget: RootWidget, options?: AppOptions);
1192
1244
  /**
1193
1245
  * Start the application.
@@ -1211,6 +1263,7 @@ declare class App {
1211
1263
  removeOverlay(id: string): void;
1212
1264
  /**
1213
1265
  * Request a re-render on the next frame.
1266
+ * Skips layout + render pass when the root widget reports no dirty state.
1214
1267
  */
1215
1268
  requestRender(): void;
1216
1269
  /**
@@ -1224,13 +1277,15 @@ declare class App {
1224
1277
  /**
1225
1278
  * Build the bubble chain for keyboard events.
1226
1279
  * Returns an array: [focused widget, parent, grandparent, ..., root]
1280
+ * Uses the cached _widgetById map for O(1) lookup instead of DFS.
1227
1281
  */
1228
1282
  private _buildBubbleChain;
1229
1283
  /**
1230
- * Find a widget by ID in the widget tree (DFS).
1231
- * Uses duck-typing to work with any object that has id/children.
1284
+ * Rebuild the widget ID cache by walking the entire widget tree.
1285
+ * Called after syncLayout() so the map stays current.
1232
1286
  */
1233
- private _findWidgetById;
1287
+ private _buildWidgetMap;
1288
+ private _walkWidget;
1234
1289
  }
1235
1290
 
1236
1291
  /**
@@ -1327,6 +1382,13 @@ declare const resetStrikethrough = "\u001B[29m";
1327
1382
  declare function setScrollRegion(top: number, bottom: number): string;
1328
1383
  declare const resetScrollRegion = "\u001B[r";
1329
1384
  declare function setTitle(title: string): string;
1385
+ /**
1386
+ * Write text to the system clipboard via OSC 52.
1387
+ * Supported by: xterm, iTerm2, Kitty, WezTerm, Alacritty, Windows Terminal.
1388
+ * @param text Plain text to copy to clipboard
1389
+ * @param stdout Target stream (default: process.stdout)
1390
+ */
1391
+ declare function writeClipboard(text: string, stdout?: NodeJS.WriteStream): void;
1330
1392
 
1331
1393
  declare const ansi_CSI: typeof CSI;
1332
1394
  declare const ansi_ESC: typeof ESC;
@@ -1372,8 +1434,9 @@ declare const ansi_setTitle: typeof setTitle;
1372
1434
  declare const ansi_showCursor: typeof showCursor;
1373
1435
  declare const ansi_strikethrough: typeof strikethrough;
1374
1436
  declare const ansi_underline: typeof underline;
1437
+ declare const ansi_writeClipboard: typeof writeClipboard;
1375
1438
  declare namespace ansi {
1376
- export { ansi_CSI as CSI, ansi_ESC as ESC, ansi_OSC as OSC, ansi_beginSyncUpdate as beginSyncUpdate, ansi_blink as blink, ansi_bold as bold, ansi_clearDown as clearDown, ansi_clearLine as clearLine, ansi_clearLineToEnd as clearLineToEnd, ansi_clearLineToStart as clearLineToStart, ansi_clearScreen as clearScreen, ansi_clearUp as clearUp, ansi_dim as dim, ansi_disableBracketedPaste as disableBracketedPaste, ansi_disableMouse as disableMouse, ansi_enableBracketedPaste as enableBracketedPaste, ansi_enableMouse as enableMouse, ansi_endSyncUpdate as endSyncUpdate, ansi_enterAltScreen as enterAltScreen, ansi_exitAltScreen as exitAltScreen, ansi_hideCursor as hideCursor, ansi_inverse as inverse, ansi_italic as italic, ansi_moveDown as moveDown, ansi_moveLeft as moveLeft, ansi_moveRight as moveRight, ansi_moveTo as moveTo, ansi_moveUp as moveUp, ansi_reset as reset, ansi_resetBlink as resetBlink, ansi_resetBold as resetBold, ansi_resetDim as resetDim, ansi_resetInverse as resetInverse, ansi_resetItalic as resetItalic, ansi_resetScrollRegion as resetScrollRegion, ansi_resetStrikethrough as resetStrikethrough, ansi_resetUnderline as resetUnderline, ansi_restoreCursorPosition as restoreCursorPosition, ansi_saveCursorPosition as saveCursorPosition, ansi_setScrollRegion as setScrollRegion, ansi_setTitle as setTitle, ansi_showCursor as showCursor, ansi_strikethrough as strikethrough, ansi_underline as underline };
1439
+ export { ansi_CSI as CSI, ansi_ESC as ESC, ansi_OSC as OSC, ansi_beginSyncUpdate as beginSyncUpdate, ansi_blink as blink, ansi_bold as bold, ansi_clearDown as clearDown, ansi_clearLine as clearLine, ansi_clearLineToEnd as clearLineToEnd, ansi_clearLineToStart as clearLineToStart, ansi_clearScreen as clearScreen, ansi_clearUp as clearUp, ansi_dim as dim, ansi_disableBracketedPaste as disableBracketedPaste, ansi_disableMouse as disableMouse, ansi_enableBracketedPaste as enableBracketedPaste, ansi_enableMouse as enableMouse, ansi_endSyncUpdate as endSyncUpdate, ansi_enterAltScreen as enterAltScreen, ansi_exitAltScreen as exitAltScreen, ansi_hideCursor as hideCursor, ansi_inverse as inverse, ansi_italic as italic, ansi_moveDown as moveDown, ansi_moveLeft as moveLeft, ansi_moveRight as moveRight, ansi_moveTo as moveTo, ansi_moveUp as moveUp, ansi_reset as reset, ansi_resetBlink as resetBlink, ansi_resetBold as resetBold, ansi_resetDim as resetDim, ansi_resetInverse as resetInverse, ansi_resetItalic as resetItalic, ansi_resetScrollRegion as resetScrollRegion, ansi_resetStrikethrough as resetStrikethrough, ansi_resetUnderline as resetUnderline, ansi_restoreCursorPosition as restoreCursorPosition, ansi_saveCursorPosition as saveCursorPosition, ansi_setScrollRegion as setScrollRegion, ansi_setTitle as setTitle, ansi_showCursor as showCursor, ansi_strikethrough as strikethrough, ansi_underline as underline, ansi_writeClipboard as writeClipboard };
1377
1440
  }
1378
1441
 
1379
- export { App, type AppOptions, BORDER_CHARS, BRAILLE_DOTS, BRAILLE_OFFSET, type BarSet, BarSets, type BorderChars, type BorderSet, BorderSets, type BorderStyle, CTRL_KEYS, type Cell, type Color, ColorDepth, type Constraint, ESCAPE_SEQUENCES, type Edges, EventEmitter, type EventMap, type FocusEvent, FocusManager, type Focusable, HORIZONTAL_BAR_SYMBOLS, InputParser, type KeyEvent, type Layer, LayerManager, type LayoutNode, type LineSet, LineSets, type MouseEvent, type NamedColor, type Rect, Renderer, type ResizeEvent, type RootWidget, SPECIAL_KEYS, Screen, type ScrollbarSet, ScrollbarSets, Shade, type Size, type Style, Terminal, type TerminalOptions, type TestScreen, VERTICAL_BAR_SYMBOLS, ansi, borderSize, cellsEqual, colorToAnsiBg, colorToAnsiFg, colorToRgb, computeLayout, containsPoint, createKeyEvent, createLayoutNode, createTestScreen, defaultStyle, detectColorDepth, emptyCell, emptyRect, fill, getBorderChars, intersectRect, isMouseSequence, length, max, mergeStyles, min, normalizeEdges, parseColor, parseMouseEvent, percentage, ratio, renderFallback, shouldUseFallback, shrinkRect, splitRect, stringWidth, stripAnsi, styleToCellAttrs, testScreenClear, testScreenGetCell, testScreenSetCell, testScreenSetString, testScreenToString, truncate, unionRect, wordWrap };
1442
+ export { App, type AppOptions, BLOCK, BORDER_CHARS, BOX, BRAILLE_DOTS, BRAILLE_OFFSET, BRAILLE_SPIN, type BarSet, BarSets, type BorderChars, type BorderSet, BorderSets, type BorderStyle, CTRL_KEYS, type Cell, type Color, ColorDepth, type Constraint, type ContrastFailure, ESCAPE_SEQUENCES, type Edges, EventEmitter, type EventMap, type FocusEvent, FocusManager, type Focusable, HORIZONTAL_BAR_SYMBOLS, InputParser, type KeyEvent, type Layer, LayerManager, type LayoutNode, type LineSet, LineSets, type MouseEvent, type NamedColor, type Rect, Renderer, type ResizeEvent, type RootWidget, SPECIAL_KEYS, Screen, type ScrollbarSet, ScrollbarSets, Shade, type Size, type Style, Terminal, type TerminalOptions, type TestScreen, VERTICAL_BAR_SYMBOLS, ansi, borderSize, caps, cellsEqual, colorToAnsiBg, colorToAnsiFg, colorToRgb, computeLayout, containsPoint, contrastRatio, createKeyEvent, createLayoutNode, createTestScreen, defaultStyle, detectColorDepth, emptyCell, emptyRect, fill, getBorderChars, intersectRect, isMouseSequence, length, max, mergeStyles, min, normalizeEdges, parseColor, parseMouseEvent, percentage, ratio, relativeLuminance, renderFallback, shouldUseFallback, shrinkRect, splitRect, stringWidth, stripAnsi, styleToCellAttrs, testScreenClear, testScreenGetCell, testScreenSetCell, testScreenSetString, testScreenToString, truncate, unionRect, validateThemeContrast, wcagLevel, wordWrap, writeClipboard };