@opentui/core 0.0.0-20251102-23e7b561 → 0.0.0-20251106-dd34dace

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-rzgaxyf4.js";
8
+ } from "./index-n8nbvvhk.js";
9
9
 
10
10
  // ../../node_modules/.bun/omggif@1.0.10/node_modules/omggif/omggif.js
11
11
  var require_omggif = __commonJS((exports) => {
package/edit-buffer.d.ts CHANGED
@@ -58,6 +58,8 @@ export declare class EditBuffer extends EventEmitter {
58
58
  } | null;
59
59
  positionToOffset(row: number, col: number): number;
60
60
  getLineStartOffset(row: number): number;
61
+ getTextRange(startOffset: number, endOffset: number): string;
62
+ getTextRangeByCoords(startRow: number, startCol: number, endRow: number, endCol: number): string;
61
63
  debugLogRope(): void;
62
64
  undo(): string | null;
63
65
  redo(): string | null;
@@ -5684,8 +5684,9 @@ function getParsers() {
5684
5684
  }
5685
5685
 
5686
5686
  // src/lib/tree-sitter/client.ts
5687
- import { resolve as resolve2, isAbsolute, parse } from "path";
5687
+ import { resolve as resolve2, isAbsolute } from "path";
5688
5688
  import { existsSync } from "fs";
5689
+ import { parse } from "path";
5689
5690
  registerEnvVar({
5690
5691
  name: "OTUI_TREE_SITTER_WORKER_PATH",
5691
5692
  description: "Path to the TreeSitter worker",
@@ -5738,9 +5739,9 @@ class TreeSitterClient extends EventEmitter3 {
5738
5739
  }
5739
5740
  let worker_path;
5740
5741
  if (env.OTUI_TREE_SITTER_WORKER_PATH) {
5741
- worker_path = resolve2(env.OTUI_TREE_SITTER_WORKER_PATH);
5742
+ worker_path = env.OTUI_TREE_SITTER_WORKER_PATH;
5742
5743
  } else if (typeof OTUI_TREE_SITTER_WORKER_PATH !== "undefined") {
5743
- worker_path = resolve2(OTUI_TREE_SITTER_WORKER_PATH);
5744
+ worker_path = OTUI_TREE_SITTER_WORKER_PATH;
5744
5745
  } else if (this.options.workerPath) {
5745
5746
  worker_path = this.options.workerPath;
5746
5747
  } else {
@@ -8407,6 +8408,14 @@ function getOpenTUILib(libPath) {
8407
8408
  args: ["ptr"],
8408
8409
  returns: "void"
8409
8410
  },
8411
+ setUseKittyKeyboard: {
8412
+ args: ["ptr", "bool"],
8413
+ returns: "void"
8414
+ },
8415
+ getUseKittyKeyboard: {
8416
+ args: ["ptr"],
8417
+ returns: "bool"
8418
+ },
8410
8419
  setupTerminal: {
8411
8420
  args: ["ptr", "bool"],
8412
8421
  returns: "void"
@@ -8527,6 +8536,14 @@ function getOpenTUILib(libPath) {
8527
8536
  args: ["ptr"],
8528
8537
  returns: "u32"
8529
8538
  },
8539
+ textBufferGetTextRange: {
8540
+ args: ["ptr", "u32", "u32", "ptr", "usize"],
8541
+ returns: "usize"
8542
+ },
8543
+ textBufferGetTextRangeByCoords: {
8544
+ args: ["ptr", "u32", "u32", "u32", "u32", "ptr", "usize"],
8545
+ returns: "usize"
8546
+ },
8530
8547
  createTextBufferView: {
8531
8548
  args: ["ptr"],
8532
8549
  returns: "ptr"
@@ -8791,6 +8808,14 @@ function getOpenTUILib(libPath) {
8791
8808
  args: ["ptr", "u32"],
8792
8809
  returns: "u32"
8793
8810
  },
8811
+ editBufferGetTextRange: {
8812
+ args: ["ptr", "u32", "u32", "ptr", "usize"],
8813
+ returns: "usize"
8814
+ },
8815
+ editBufferGetTextRangeByCoords: {
8816
+ args: ["ptr", "u32", "u32", "u32", "u32", "ptr", "usize"],
8817
+ returns: "usize"
8818
+ },
8794
8819
  editorViewSetSelection: {
8795
8820
  args: ["ptr", "u32", "u32", "ptr", "ptr"],
8796
8821
  returns: "void"
@@ -8911,16 +8936,28 @@ function convertToDebugSymbols(symbols) {
8911
8936
  const debugSymbols = {};
8912
8937
  const traceSymbols = {};
8913
8938
  let hasTracing = false;
8939
+ let ffiLogWriter = null;
8914
8940
  Object.entries(symbols).forEach(([key, value]) => {
8915
8941
  debugSymbols[key] = value;
8916
8942
  });
8917
8943
  if (env.OTUI_DEBUG_FFI) {
8944
+ const now = new Date;
8945
+ const timestamp = now.toISOString().replace(/[:.]/g, "-").replace(/T/, "_").split("Z")[0];
8946
+ const logFilePath = `ffi_debug_${timestamp}.log`;
8947
+ ffiLogWriter = Bun.file(logFilePath).writer();
8948
+ const writer = ffiLogWriter;
8949
+ const writeSync = (msg) => {
8950
+ const buffer = new TextEncoder().encode(msg + `
8951
+ `);
8952
+ writer.write(buffer);
8953
+ writer.flush();
8954
+ };
8918
8955
  Object.entries(symbols).forEach(([key, value]) => {
8919
8956
  if (typeof value === "function") {
8920
8957
  debugSymbols[key] = (...args) => {
8921
- console.log(`${key}(${args.map((arg) => String(arg)).join(", ")})`);
8958
+ writeSync(`${key}(${args.map((arg) => String(arg)).join(", ")})`);
8922
8959
  const result = value(...args);
8923
- console.log(`${key} returned:`, String(result));
8960
+ writeSync(`${key} returned: ${String(result)}`);
8924
8961
  return result;
8925
8962
  };
8926
8963
  }
@@ -8942,6 +8979,13 @@ function convertToDebugSymbols(symbols) {
8942
8979
  }
8943
8980
  });
8944
8981
  }
8982
+ if (env.OTUI_DEBUG_FFI && ffiLogWriter) {
8983
+ process.on("exit", () => {
8984
+ try {
8985
+ ffiLogWriter.end();
8986
+ } catch (e) {}
8987
+ });
8988
+ }
8945
8989
  if (hasTracing) {
8946
8990
  process.on("exit", () => {
8947
8991
  const allStats = [];
@@ -9331,6 +9375,12 @@ class FFIRenderLib {
9331
9375
  disableKittyKeyboard(renderer) {
9332
9376
  this.opentui.symbols.disableKittyKeyboard(renderer);
9333
9377
  }
9378
+ setUseKittyKeyboard(renderer, use) {
9379
+ this.opentui.symbols.setUseKittyKeyboard(renderer, use);
9380
+ }
9381
+ getUseKittyKeyboard(renderer) {
9382
+ return this.opentui.symbols.getUseKittyKeyboard(renderer);
9383
+ }
9334
9384
  setupTerminal(renderer, useAlternateScreen) {
9335
9385
  this.opentui.symbols.setupTerminal(renderer, useAlternateScreen);
9336
9386
  }
@@ -9425,6 +9475,24 @@ class FFIRenderLib {
9425
9475
  }
9426
9476
  return outBuffer.slice(0, actualLen);
9427
9477
  }
9478
+ textBufferGetTextRange(buffer, startOffset, endOffset, maxLength) {
9479
+ const outBuffer = new Uint8Array(maxLength);
9480
+ const actualLen = this.opentui.symbols.textBufferGetTextRange(buffer, startOffset, endOffset, ptr3(outBuffer), maxLength);
9481
+ const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9482
+ if (len === 0) {
9483
+ return null;
9484
+ }
9485
+ return outBuffer.slice(0, len);
9486
+ }
9487
+ textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, maxLength) {
9488
+ const outBuffer = new Uint8Array(maxLength);
9489
+ const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr3(outBuffer), maxLength);
9490
+ const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9491
+ if (len === 0) {
9492
+ return null;
9493
+ }
9494
+ return outBuffer.slice(0, len);
9495
+ }
9428
9496
  createTextBufferView(textBuffer) {
9429
9497
  const viewPtr = this.opentui.symbols.createTextBufferView(textBuffer);
9430
9498
  if (!viewPtr) {
@@ -9805,6 +9873,22 @@ class FFIRenderLib {
9805
9873
  editBufferGetLineStartOffset(buffer, row) {
9806
9874
  return this.opentui.symbols.editBufferGetLineStartOffset(buffer, row);
9807
9875
  }
9876
+ editBufferGetTextRange(buffer, startOffset, endOffset, maxLength) {
9877
+ const outBuffer = new Uint8Array(maxLength);
9878
+ const actualLen = this.opentui.symbols.editBufferGetTextRange(buffer, startOffset, endOffset, ptr3(outBuffer), maxLength);
9879
+ const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9880
+ if (len === 0)
9881
+ return null;
9882
+ return outBuffer.slice(0, len);
9883
+ }
9884
+ editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, maxLength) {
9885
+ const outBuffer = new Uint8Array(maxLength);
9886
+ const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr3(outBuffer), maxLength);
9887
+ const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9888
+ if (len === 0)
9889
+ return null;
9890
+ return outBuffer.slice(0, len);
9891
+ }
9808
9892
  editorViewSetSelection(view, start, end, bgColor, fgColor) {
9809
9893
  const bg2 = bgColor ? bgColor.buffer : null;
9810
9894
  const fg2 = fgColor ? fgColor.buffer : null;
@@ -10090,6 +10174,17 @@ class TextBuffer {
10090
10174
  return "";
10091
10175
  return this.lib.decoder.decode(plainBytes);
10092
10176
  }
10177
+ getTextRange(startOffset, endOffset) {
10178
+ this.guard();
10179
+ if (startOffset >= endOffset)
10180
+ return "";
10181
+ if (this._byteSize === 0)
10182
+ return "";
10183
+ const rangeBytes = this.lib.textBufferGetTextRange(this.bufferPtr, startOffset, endOffset, this._byteSize);
10184
+ if (!rangeBytes)
10185
+ return "";
10186
+ return this.lib.decoder.decode(rangeBytes);
10187
+ }
10093
10188
  addHighlightByCharRange(highlight) {
10094
10189
  this.guard();
10095
10190
  this.lib.textBufferAddHighlightByCharRange(this.bufferPtr, highlight);
@@ -10976,7 +11071,7 @@ class Renderable extends BaseRenderable {
10976
11071
  }
10977
11072
  try {
10978
11073
  const widthMethod = this._ctx.widthMethod;
10979
- this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, { respectAlpha: true });
11074
+ this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, { respectAlpha: true, id: `framebuffer-${this.id}` });
10980
11075
  } catch (error) {
10981
11076
  console.error(`Failed to create frame buffer for ${this.id}:`, error);
10982
11077
  this.frameBuffer = null;
@@ -12455,6 +12550,8 @@ async function createCliRenderer(config = {}) {
12455
12550
  config.useThread = false;
12456
12551
  }
12457
12552
  ziglib.setUseThread(rendererPtr, config.useThread);
12553
+ const useKittyKeyboard = config.useKittyKeyboard ?? true;
12554
+ ziglib.setUseKittyKeyboard(rendererPtr, useKittyKeyboard);
12458
12555
  const renderer = new CliRenderer(ziglib, rendererPtr, stdin, stdout, width, height, config);
12459
12556
  await renderer.setupTerminal();
12460
12557
  return renderer;
@@ -12564,9 +12661,10 @@ class CliRenderer extends EventEmitter9 {
12564
12661
  _latestPointer = { x: 0, y: 0 };
12565
12662
  _currentFocusedRenderable = null;
12566
12663
  lifecyclePasses = new Set;
12664
+ _openConsoleOnError = true;
12567
12665
  handleError = ((error) => {
12568
12666
  console.error(error);
12569
- if (true) {
12667
+ if (this._openConsoleOnError) {
12570
12668
  this.console.show();
12571
12669
  }
12572
12670
  }).bind(this);
@@ -12651,7 +12749,8 @@ Captured output:
12651
12749
  process.on("exit", this.exitHandler);
12652
12750
  this._console = new TerminalConsole(this, config.consoleOptions);
12653
12751
  this.useConsole = config.useConsole ?? true;
12654
- this._keyHandler = new InternalKeyHandler(this.stdin, config.useKittyKeyboard ?? false);
12752
+ this._openConsoleOnError = config.openConsoleOnError ?? true;
12753
+ this._keyHandler = new InternalKeyHandler(this.stdin, config.useKittyKeyboard ?? true);
12655
12754
  this._keyHandler.on("keypress", (event) => {
12656
12755
  if (this.exitOnCtrlC && event.name === "c" && event.ctrl) {
12657
12756
  process.nextTick(() => {
@@ -12787,6 +12886,12 @@ Captured output:
12787
12886
  get capabilities() {
12788
12887
  return this._capabilities;
12789
12888
  }
12889
+ get useKittyKeyboard() {
12890
+ return this.lib.getUseKittyKeyboard(this.rendererPtr);
12891
+ }
12892
+ set useKittyKeyboard(use) {
12893
+ this.lib.setUseKittyKeyboard(this.rendererPtr, use);
12894
+ }
12790
12895
  set experimental_splitHeight(splitHeight) {
12791
12896
  if (splitHeight < 0)
12792
12897
  splitHeight = 0;
@@ -13560,5 +13665,5 @@ Captured output:
13560
13665
 
13561
13666
  export { __toESM, __commonJS, __export, __require, Edge, Gutter, exports_src, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, ANSI, StdinBuffer, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, 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, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, parseAlign, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, 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, RendererControlState, CliRenderer };
13562
13667
 
13563
- //# debugId=4704E8A57986003964756E2164756E21
13564
- //# sourceMappingURL=index-rzgaxyf4.js.map
13668
+ //# debugId=A88F8272C607FC3964756E2164756E21
13669
+ //# sourceMappingURL=index-n8nbvvhk.js.map