@opentui/core 0.0.0-20250922-ce4434a8 → 0.0.0-20250922-1555550d

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/3d.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  __export,
6
6
  __require,
7
7
  __toESM
8
- } from "./index-qgmnmj4t.js";
8
+ } from "./index-eqy4135c.js";
9
9
 
10
10
  // ../../node_modules/omggif/omggif.js
11
11
  var require_omggif = __commonJS((exports) => {
package/Renderable.d.ts CHANGED
@@ -77,6 +77,7 @@ export interface RenderableOptions<T extends BaseRenderable = BaseRenderable> ex
77
77
  onMouseOver?: (this: T, event: MouseEvent) => void;
78
78
  onMouseOut?: (this: T, event: MouseEvent) => void;
79
79
  onMouseScroll?: (this: T, event: MouseEvent) => void;
80
+ onPaste?: (this: T, text: string) => void;
80
81
  onKeyDown?: (key: ParsedKey) => void;
81
82
  onSizeChange?: (this: T) => void;
82
83
  }
@@ -126,11 +127,13 @@ export declare abstract class Renderable extends BaseRenderable {
126
127
  protected _focusable: boolean;
127
128
  protected _focused: boolean;
128
129
  protected keypressHandler: ((key: ParsedKey) => void) | null;
130
+ protected pasteHandler: ((text: string) => void) | null;
129
131
  private _live;
130
132
  protected _liveCount: number;
131
133
  private _sizeChangeListener;
132
134
  private _mouseListener;
133
135
  private _mouseListeners;
136
+ private _pasteListener;
134
137
  private _keyListeners;
135
138
  protected yogaNode: YogaNode;
136
139
  protected _positionType: PositionTypeString;
@@ -167,6 +170,7 @@ export declare abstract class Renderable extends BaseRenderable {
167
170
  set live(value: boolean);
168
171
  protected propagateLiveCount(delta: number): void;
169
172
  handleKeyPress?(key: ParsedKey | string): boolean;
173
+ handlePaste?(text: string): void;
170
174
  findDescendantById(id: string): Renderable | undefined;
171
175
  requestRender(): void;
172
176
  get translateX(): number;
@@ -270,6 +274,8 @@ export declare abstract class Renderable extends BaseRenderable {
270
274
  set onMouseOver(handler: ((event: MouseEvent) => void) | undefined);
271
275
  set onMouseOut(handler: ((event: MouseEvent) => void) | undefined);
272
276
  set onMouseScroll(handler: ((event: MouseEvent) => void) | undefined);
277
+ set onPaste(handler: ((text: string) => void) | undefined);
278
+ get onPaste(): ((text: string) => void) | undefined;
273
279
  set onKeyDown(handler: ((key: ParsedKey) => void) | undefined);
274
280
  get onKeyDown(): ((key: ParsedKey) => void) | undefined;
275
281
  set onSizeChange(handler: (() => void) | undefined);
package/ansi.d.ts CHANGED
@@ -24,4 +24,6 @@ export declare const ANSI: {
24
24
  enableSGRMouseMode: string;
25
25
  disableSGRMouseMode: string;
26
26
  clearRendererSpace: (height: number) => string;
27
+ bracketedPasteStart: string;
28
+ bracketedPasteEnd: string;
27
29
  };
@@ -2175,21 +2175,44 @@ var parseKeypress = (s = "", options = {}) => {
2175
2175
  // src/lib/KeyHandler.ts
2176
2176
  import { EventEmitter } from "events";
2177
2177
 
2178
- // src/singleton.ts
2179
- var singletonCacheSymbol = Symbol.for("@opentui/core/singleton");
2180
- function singleton(key, factory) {
2181
- const bag = globalThis[singletonCacheSymbol] ??= {};
2182
- if (!(key in bag)) {
2183
- bag[key] = factory();
2184
- }
2185
- return bag[key];
2186
- }
2178
+ // src/ansi.ts
2179
+ var ANSI = {
2180
+ switchToAlternateScreen: "\x1B[?1049h",
2181
+ switchToMainScreen: "\x1B[?1049l",
2182
+ reset: "\x1B[0m",
2183
+ hideCursor: "\x1B[?25l",
2184
+ showCursor: "\x1B[?25h",
2185
+ resetCursorColor: "\x1B]12;default\x07",
2186
+ saveCursorState: "\x1B[s",
2187
+ restoreCursorState: "\x1B[u",
2188
+ queryPixelSize: "\x1B[14t",
2189
+ scrollDown: (lines) => `\x1B[${lines}T`,
2190
+ scrollUp: (lines) => `\x1B[${lines}S`,
2191
+ moveCursor: (row, col) => `\x1B[${row};${col}H`,
2192
+ moveCursorAndClear: (row, col) => `\x1B[${row};${col}H\x1B[J`,
2193
+ clearFromCursor: "\x1B[J",
2194
+ setRgbBackground: (r, g, b) => `\x1B[48;2;${r};${g};${b}m`,
2195
+ resetBackground: "\x1B[49m",
2196
+ enableMouseTracking: "\x1B[?1000h",
2197
+ disableMouseTracking: "\x1B[?1000l",
2198
+ enableButtonEventTracking: "\x1B[?1002h",
2199
+ disableButtonEventTracking: "\x1B[?1002l",
2200
+ enableAnyEventTracking: "\x1B[?1003h",
2201
+ disableAnyEventTracking: "\x1B[?1003l",
2202
+ enableSGRMouseMode: "\x1B[?1006h",
2203
+ disableSGRMouseMode: "\x1B[?1006l",
2204
+ clearRendererSpace: (height) => `\x1B[${height}A\x1B[1G\x1B[J`,
2205
+ bracketedPasteStart: "\x1B[200~",
2206
+ bracketedPasteEnd: "\x1B[201~"
2207
+ };
2187
2208
 
2188
2209
  // src/lib/KeyHandler.ts
2189
2210
  class KeyHandler extends EventEmitter {
2190
2211
  stdin;
2191
2212
  useKittyKeyboard;
2192
2213
  listener;
2214
+ pasteMode = false;
2215
+ pasteBuffer = [];
2193
2216
  constructor(stdin, useKittyKeyboard = false) {
2194
2217
  super();
2195
2218
  this.stdin = stdin || process.stdin;
@@ -2200,6 +2223,19 @@ class KeyHandler extends EventEmitter {
2200
2223
  this.stdin.resume();
2201
2224
  this.stdin.setEncoding("utf8");
2202
2225
  this.listener = (key) => {
2226
+ let data = key.toString();
2227
+ if (data.startsWith(ANSI.bracketedPasteStart)) {
2228
+ this.pasteMode = true;
2229
+ }
2230
+ if (this.pasteMode) {
2231
+ this.pasteBuffer.push(Bun.stripANSI(data));
2232
+ if (data.endsWith(ANSI.bracketedPasteEnd)) {
2233
+ this.pasteMode = false;
2234
+ this.emit("paste", this.pasteBuffer.join(""));
2235
+ this.pasteBuffer = [];
2236
+ }
2237
+ return;
2238
+ }
2203
2239
  const parsedKey = parseKeypress(key, { useKittyKeyboard: this.useKittyKeyboard });
2204
2240
  switch (parsedKey.eventType) {
2205
2241
  case "press":
@@ -2223,15 +2259,7 @@ class KeyHandler extends EventEmitter {
2223
2259
  if (this.stdin.setRawMode) {
2224
2260
  this.stdin.setRawMode(false);
2225
2261
  }
2226
- keyHandler = null;
2227
- }
2228
- }
2229
- var keyHandler = null;
2230
- function getKeyHandler(useKittyKeyboard = false) {
2231
- if (!keyHandler) {
2232
- keyHandler = singleton("KeyHandler", () => new KeyHandler(process.stdin, useKittyKeyboard));
2233
2262
  }
2234
- return keyHandler;
2235
2263
  }
2236
2264
 
2237
2265
  // src/lib/RGBA.ts
@@ -6251,11 +6279,13 @@ class Renderable extends BaseRenderable {
6251
6279
  _focusable = false;
6252
6280
  _focused = false;
6253
6281
  keypressHandler = null;
6282
+ pasteHandler = null;
6254
6283
  _live = false;
6255
6284
  _liveCount = 0;
6256
6285
  _sizeChangeListener = undefined;
6257
6286
  _mouseListener = null;
6258
6287
  _mouseListeners = {};
6288
+ _pasteListener = undefined;
6259
6289
  _keyListeners = {};
6260
6290
  yogaNode;
6261
6291
  _positionType = "relative";
@@ -6365,7 +6395,14 @@ class Renderable extends BaseRenderable {
6365
6395
  this.handleKeyPress(key);
6366
6396
  }
6367
6397
  };
6398
+ this.pasteHandler = (text) => {
6399
+ this._pasteListener?.call(this, text);
6400
+ if (this.handlePaste) {
6401
+ this.handlePaste(text);
6402
+ }
6403
+ };
6368
6404
  this.ctx.keyInput.on("keypress", this.keypressHandler);
6405
+ this.ctx.keyInput.on("paste", this.pasteHandler);
6369
6406
  this.emit("focused" /* FOCUSED */);
6370
6407
  }
6371
6408
  blur() {
@@ -6377,6 +6414,10 @@ class Renderable extends BaseRenderable {
6377
6414
  this.ctx.keyInput.off("keypress", this.keypressHandler);
6378
6415
  this.keypressHandler = null;
6379
6416
  }
6417
+ if (this.pasteHandler) {
6418
+ this.ctx.keyInput.off("paste", this.pasteHandler);
6419
+ this.pasteHandler = null;
6420
+ }
6380
6421
  this.emit("blurred" /* BLURRED */);
6381
6422
  }
6382
6423
  get focused() {
@@ -6405,9 +6446,11 @@ class Renderable extends BaseRenderable {
6405
6446
  for (const child of this._childrenInLayoutOrder) {
6406
6447
  if (child.id === id)
6407
6448
  return child;
6408
- const found = child.findDescendantById(id);
6409
- if (found)
6410
- return found;
6449
+ if (isRenderable(child)) {
6450
+ const found = child.findDescendantById(id);
6451
+ if (found)
6452
+ return found;
6453
+ }
6411
6454
  }
6412
6455
  return;
6413
6456
  }
@@ -7204,6 +7247,12 @@ class Renderable extends BaseRenderable {
7204
7247
  else
7205
7248
  delete this._mouseListeners["scroll"];
7206
7249
  }
7250
+ set onPaste(handler) {
7251
+ this._pasteListener = handler;
7252
+ }
7253
+ get onPaste() {
7254
+ return this._pasteListener;
7255
+ }
7207
7256
  set onKeyDown(handler) {
7208
7257
  if (handler)
7209
7258
  this._keyListeners["down"] = handler;
@@ -7230,6 +7279,7 @@ class Renderable extends BaseRenderable {
7230
7279
  this.onMouseOver = options.onMouseOver;
7231
7280
  this.onMouseOut = options.onMouseOut;
7232
7281
  this.onMouseScroll = options.onMouseScroll;
7282
+ this.onPaste = options.onPaste;
7233
7283
  this.onKeyDown = options.onKeyDown;
7234
7284
  this.onSizeChange = options.onSizeChange;
7235
7285
  }
@@ -7514,6 +7564,16 @@ class CapturedWritableStream extends Writable {
7514
7564
  }
7515
7565
  }
7516
7566
 
7567
+ // src/singleton.ts
7568
+ var singletonCacheSymbol = Symbol.for("@opentui/core/singleton");
7569
+ function singleton(key, factory) {
7570
+ const bag = globalThis[singletonCacheSymbol] ??= {};
7571
+ if (!(key in bag)) {
7572
+ bag[key] = factory();
7573
+ }
7574
+ return bag[key];
7575
+ }
7576
+
7517
7577
  // src/console.ts
7518
7578
  function getCallerInfo() {
7519
7579
  const err = new Error;
@@ -8115,35 +8175,6 @@ class TerminalConsole extends EventEmitter4 {
8115
8175
  }
8116
8176
  }
8117
8177
 
8118
- // src/ansi.ts
8119
- var ANSI = {
8120
- switchToAlternateScreen: "\x1B[?1049h",
8121
- switchToMainScreen: "\x1B[?1049l",
8122
- reset: "\x1B[0m",
8123
- hideCursor: "\x1B[?25l",
8124
- showCursor: "\x1B[?25h",
8125
- resetCursorColor: "\x1B]12;default\x07",
8126
- saveCursorState: "\x1B[s",
8127
- restoreCursorState: "\x1B[u",
8128
- queryPixelSize: "\x1B[14t",
8129
- scrollDown: (lines) => `\x1B[${lines}T`,
8130
- scrollUp: (lines) => `\x1B[${lines}S`,
8131
- moveCursor: (row, col) => `\x1B[${row};${col}H`,
8132
- moveCursorAndClear: (row, col) => `\x1B[${row};${col}H\x1B[J`,
8133
- clearFromCursor: "\x1B[J",
8134
- setRgbBackground: (r, g, b) => `\x1B[48;2;${r};${g};${b}m`,
8135
- resetBackground: "\x1B[49m",
8136
- enableMouseTracking: "\x1B[?1000h",
8137
- disableMouseTracking: "\x1B[?1000l",
8138
- enableButtonEventTracking: "\x1B[?1002h",
8139
- disableButtonEventTracking: "\x1B[?1002l",
8140
- enableAnyEventTracking: "\x1B[?1003h",
8141
- disableAnyEventTracking: "\x1B[?1003l",
8142
- enableSGRMouseMode: "\x1B[?1006h",
8143
- disableSGRMouseMode: "\x1B[?1006l",
8144
- clearRendererSpace: (height) => `\x1B[${height}A\x1B[1G\x1B[J`
8145
- };
8146
-
8147
8178
  // src/renderer.ts
8148
8179
  import { EventEmitter as EventEmitter5 } from "events";
8149
8180
 
@@ -8283,7 +8314,6 @@ var rendererTracker = singleton("RendererTracker", () => {
8283
8314
  removeRenderer: (renderer) => {
8284
8315
  renderers.delete(renderer);
8285
8316
  if (renderers.size === 0) {
8286
- getKeyHandler().destroy();
8287
8317
  process.stdin.pause();
8288
8318
  }
8289
8319
  }
@@ -9368,7 +9398,7 @@ Captured output:
9368
9398
  }
9369
9399
  }
9370
9400
 
9371
- export { __toESM, __commonJS, __export, __require, Edge, Gutter, exports_src, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyHandler, getKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, DebugOverlayCorner, createTextAttributes, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, t, SyntaxStyle, hastToStyledText, parseAlign, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, CliRenderer };
9401
+ export { __toESM, __commonJS, __export, __require, Edge, Gutter, exports_src, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, ANSI, KeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, DebugOverlayCorner, createTextAttributes, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, t, SyntaxStyle, hastToStyledText, parseAlign, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, CliRenderer };
9372
9402
 
9373
- //# debugId=79C4862CCD9B2E9164756E2164756E21
9374
- //# sourceMappingURL=index-qgmnmj4t.js.map
9403
+ //# debugId=C47A8261B5915FF064756E2164756E21
9404
+ //# sourceMappingURL=index-eqy4135c.js.map