@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 +1 -1
- package/{index-cr95zpf8.js → index-93qf6w1k.js} +94 -4
- package/{index-cr95zpf8.js.map → index-93qf6w1k.js.map} +7 -7
- package/index.js +21 -3
- package/index.js.map +5 -5
- package/package.json +8 -8
- package/renderables/TextBufferRenderable.d.ts +5 -0
- package/renderer.d.ts +7 -0
- package/testing.js +1 -1
- package/text-buffer-view.d.ts +1 -0
- package/zig-structs.d.ts +1 -1
- package/zig.d.ts +3 -0
package/3d.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
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=
|
|
16835
|
-
//# sourceMappingURL=index-
|
|
16924
|
+
//# debugId=05C4F9CE87D8078064756E2164756E21
|
|
16925
|
+
//# sourceMappingURL=index-93qf6w1k.js.map
|