@opentui/core 0.1.72 → 0.1.74

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-cr95zpf8.js";
8
+ } from "./index-93qf6w1k.js";
9
9
 
10
10
  // ../../node_modules/.bun/omggif@1.0.10/node_modules/omggif/omggif.js
11
11
  var require_omggif = __commonJS((exports) => {
@@ -2078,6 +2078,8 @@ function parseKittyKeyboard(sequence) {
2078
2078
  if (isPrintable) {
2079
2079
  if (key.shift && shiftedCodepoint) {
2080
2080
  text = String.fromCodePoint(shiftedCodepoint);
2081
+ } else if (key.shift && key.name.length === 1) {
2082
+ text = key.name.toLocaleUpperCase();
2081
2083
  } else {
2082
2084
  text = key.name;
2083
2085
  }
@@ -10178,6 +10180,7 @@ var TerminalCapabilitiesStruct = defineStruct([
10178
10180
  ["sync", "bool_u8"],
10179
10181
  ["bracketed_paste", "bool_u8"],
10180
10182
  ["hyperlinks", "bool_u8"],
10183
+ ["explicit_cursor_positioning", "bool_u8"],
10181
10184
  ["term_name", "char*"],
10182
10185
  ["term_name_len", "u64", { lengthOf: "term_name" }],
10183
10186
  ["term_version", "char*"],
@@ -10248,6 +10251,18 @@ registerEnvVar({
10248
10251
  type: "boolean",
10249
10252
  default: false
10250
10253
  });
10254
+ registerEnvVar({
10255
+ name: "OPENTUI_NO_GRAPHICS",
10256
+ description: "Disable Kitty graphics protocol detection",
10257
+ type: "boolean",
10258
+ default: false
10259
+ });
10260
+ registerEnvVar({
10261
+ name: "OPENTUI_FORCE_NOZWJ",
10262
+ description: "Use no_zwj width method (Unicode without ZWJ joining)",
10263
+ type: "boolean",
10264
+ default: false
10265
+ });
10251
10266
  var globalTraceSymbols = null;
10252
10267
  var globalFFILogWriter = null;
10253
10268
  var exitHandlerRegistered = false;
@@ -10502,6 +10517,10 @@ function getOpenTUILib(libPath) {
10502
10517
  args: ["ptr", "u32", "u32"],
10503
10518
  returns: "u32"
10504
10519
  },
10520
+ getHitGridDirty: {
10521
+ args: ["ptr"],
10522
+ returns: "bool"
10523
+ },
10505
10524
  dumpHitGrid: {
10506
10525
  args: ["ptr"],
10507
10526
  returns: "void"
@@ -10550,6 +10569,10 @@ function getOpenTUILib(libPath) {
10550
10569
  args: ["ptr"],
10551
10570
  returns: "void"
10552
10571
  },
10572
+ writeOut: {
10573
+ args: ["ptr", "ptr", "u64"],
10574
+ returns: "void"
10575
+ },
10553
10576
  createTextBuffer: {
10554
10577
  args: ["u8"],
10555
10578
  returns: "ptr"
@@ -10762,6 +10785,10 @@ function getOpenTUILib(libPath) {
10762
10785
  args: ["ptr", "ptr"],
10763
10786
  returns: "void"
10764
10787
  },
10788
+ textBufferViewSetTruncate: {
10789
+ args: ["ptr", "bool"],
10790
+ returns: "void"
10791
+ },
10765
10792
  textBufferViewMeasureForDimensions: {
10766
10793
  args: ["ptr", "u32", "u32", "ptr"],
10767
10794
  returns: "bool"
@@ -11612,6 +11639,9 @@ class FFIRenderLib {
11612
11639
  checkHit(renderer, x, y) {
11613
11640
  return this.opentui.symbols.checkHit(renderer, x, y);
11614
11641
  }
11642
+ getHitGridDirty(renderer) {
11643
+ return this.opentui.symbols.getHitGridDirty(renderer);
11644
+ }
11615
11645
  dumpHitGrid(renderer) {
11616
11646
  this.opentui.symbols.dumpHitGrid(renderer);
11617
11647
  }
@@ -11653,6 +11683,12 @@ class FFIRenderLib {
11653
11683
  queryPixelResolution(renderer) {
11654
11684
  this.opentui.symbols.queryPixelResolution(renderer);
11655
11685
  }
11686
+ writeOut(renderer, data) {
11687
+ const bytes = typeof data === "string" ? new TextEncoder().encode(data) : data;
11688
+ if (bytes.length === 0)
11689
+ return;
11690
+ this.opentui.symbols.writeOut(renderer, ptr3(bytes), bytes.length);
11691
+ }
11656
11692
  createTextBuffer(widthMethod) {
11657
11693
  const widthMethodCode = widthMethod === "wcwidth" ? 0 : 1;
11658
11694
  const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode);
@@ -11899,6 +11935,9 @@ class FFIRenderLib {
11899
11935
  textBufferViewSetTabIndicatorColor(view, color) {
11900
11936
  this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer);
11901
11937
  }
11938
+ textBufferViewSetTruncate(view, truncate) {
11939
+ this.opentui.symbols.textBufferViewSetTruncate(view, truncate);
11940
+ }
11902
11941
  textBufferViewMeasureForDimensions(view, width, height) {
11903
11942
  const resultBuffer = new ArrayBuffer(MeasureResultStruct.size);
11904
11943
  const resultPtr = ptr3(new Uint8Array(resultBuffer));
@@ -12333,6 +12372,7 @@ class FFIRenderLib {
12333
12372
  sync: caps.sync,
12334
12373
  bracketed_paste: caps.bracketed_paste,
12335
12374
  hyperlinks: caps.hyperlinks,
12375
+ explicit_cursor_positioning: caps.explicit_cursor_positioning,
12336
12376
  terminal: {
12337
12377
  name: caps.term_name ?? "",
12338
12378
  version: caps.term_version ?? "",
@@ -13103,6 +13143,7 @@ class Renderable extends BaseRenderable {
13103
13143
  if (this._zIndex !== value) {
13104
13144
  this._zIndex = value;
13105
13145
  this.parent?.requestZIndexSort();
13146
+ this.requestRender();
13106
13147
  }
13107
13148
  }
13108
13149
  requestZIndexSort() {
@@ -13426,17 +13467,20 @@ class Renderable extends BaseRenderable {
13426
13467
  const layout = this.yogaNode.getComputedLayout();
13427
13468
  const oldX = this._x;
13428
13469
  const oldY = this._y;
13470
+ const oldWidth = this._widthValue;
13471
+ const oldHeight = this._heightValue;
13429
13472
  this._x = layout.left;
13430
13473
  this._y = layout.top;
13431
13474
  const newWidth = Math.max(layout.width, 1);
13432
13475
  const newHeight = Math.max(layout.height, 1);
13433
- const sizeChanged = this.width !== newWidth || this.height !== newHeight;
13476
+ const sizeChanged = oldWidth !== newWidth || oldHeight !== newHeight;
13434
13477
  this._widthValue = newWidth;
13435
13478
  this._heightValue = newHeight;
13436
13479
  if (sizeChanged) {
13437
13480
  this.onLayoutResize(newWidth, newHeight);
13438
13481
  }
13439
- if (oldX !== this._x || oldY !== this._y) {
13482
+ const positionChanged = oldX !== this._x || oldY !== this._y;
13483
+ if (positionChanged) {
13440
13484
  if (this.parent)
13441
13485
  this.parent.childrenPrimarySortDirty = true;
13442
13486
  }
@@ -15571,6 +15615,7 @@ class CliRenderer extends EventEmitter9 {
15571
15615
  _capabilities = null;
15572
15616
  _latestPointer = { x: 0, y: 0 };
15573
15617
  _hasPointer = false;
15618
+ _lastPointerModifiers = { shift: false, alt: false, ctrl: false };
15574
15619
  _currentFocusedRenderable = null;
15575
15620
  lifecyclePasses = new Set;
15576
15621
  _openConsoleOnError = true;
@@ -15777,6 +15822,14 @@ Captured output:
15777
15822
  return caps?.unicode === "wcwidth" ? "wcwidth" : "unicode";
15778
15823
  }
15779
15824
  writeOut(chunk, encoding, callback) {
15825
+ if (this.rendererPtr && this._useThread) {
15826
+ const data = typeof chunk === "string" ? chunk : chunk?.toString() ?? "";
15827
+ this.lib.writeOut(this.rendererPtr, data);
15828
+ if (typeof callback === "function") {
15829
+ process.nextTick(callback);
15830
+ }
15831
+ return true;
15832
+ }
15780
15833
  return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback);
15781
15834
  }
15782
15835
  requestRender() {
@@ -16100,6 +16153,7 @@ Captured output:
16100
16153
  this._latestPointer.x = mouseEvent.x;
16101
16154
  this._latestPointer.y = mouseEvent.y;
16102
16155
  this._hasPointer = true;
16156
+ this._lastPointerModifiers = mouseEvent.modifiers;
16103
16157
  if (this._console.visible) {
16104
16158
  const consoleBounds = this._console.bounds;
16105
16159
  if (mouseEvent.x >= consoleBounds.x && mouseEvent.x < consoleBounds.x + consoleBounds.width && mouseEvent.y >= consoleBounds.y && mouseEvent.y < consoleBounds.y + consoleBounds.height) {
@@ -16210,6 +16264,39 @@ Captured output:
16210
16264
  }
16211
16265
  return false;
16212
16266
  }
16267
+ recheckHoverState() {
16268
+ if (this._isDestroyed || !this._hasPointer)
16269
+ return;
16270
+ if (this.capturedRenderable)
16271
+ return;
16272
+ const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y);
16273
+ const hitRenderable = Renderable.renderablesByNumber.get(hitId);
16274
+ const lastOver = this.lastOverRenderable;
16275
+ if (lastOver?.num === hitId) {
16276
+ this.lastOverRenderableNum = hitId;
16277
+ return;
16278
+ }
16279
+ const baseEvent = {
16280
+ type: "move",
16281
+ button: 0,
16282
+ x: this._latestPointer.x,
16283
+ y: this._latestPointer.y,
16284
+ modifiers: this._lastPointerModifiers
16285
+ };
16286
+ if (lastOver) {
16287
+ const event = new MouseEvent(lastOver, { ...baseEvent, type: "out" });
16288
+ lastOver.processMouseEvent(event);
16289
+ }
16290
+ this.lastOverRenderable = hitRenderable;
16291
+ this.lastOverRenderableNum = hitId;
16292
+ if (hitRenderable) {
16293
+ const event = new MouseEvent(hitRenderable, {
16294
+ ...baseEvent,
16295
+ type: "over"
16296
+ });
16297
+ hitRenderable.processMouseEvent(event);
16298
+ }
16299
+ }
16213
16300
  hitTest(x, y) {
16214
16301
  return this.lib.checkHit(this.rendererPtr, x, y);
16215
16302
  }
@@ -16612,6 +16699,9 @@ Captured output:
16612
16699
  this._console.renderToBuffer(this.nextRenderBuffer);
16613
16700
  if (!this._isDestroyed) {
16614
16701
  this.renderNative();
16702
+ if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {
16703
+ this.recheckHoverState();
16704
+ }
16615
16705
  const overallFrameTime = performance.now() - overallStart;
16616
16706
  this.lib.updateStats(this.rendererPtr, overallFrameTime, this.renderStats.fps, this.renderStats.frameCallbackTime);
16617
16707
  if (this.gatherStats) {
@@ -16831,5 +16921,5 @@ Captured output:
16831
16921
 
16832
16922
  export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, exports_src, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, createTextAttributes, attributesWithLink, getLinkId, 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, link, t, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, StdinBuffer, parseAlign, parseAlignItems, 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, TerminalPalette, createTerminalPalette, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, ANSI, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingKey, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
16833
16923
 
16834
- //# debugId=FF2A8CAC839E289564756E2164756E21
16835
- //# sourceMappingURL=index-cr95zpf8.js.map
16924
+ //# debugId=05C4F9CE87D8078064756E2164756E21
16925
+ //# sourceMappingURL=index-93qf6w1k.js.map