@opentui/core 0.1.77 → 0.1.79
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/Renderable.d.ts +8 -0
- package/{index-h3dbfsf6.js → index-zrvzvh6r.js} +112 -40
- package/{index-h3dbfsf6.js.map → index-zrvzvh6r.js.map} +9 -9
- package/index.js +37 -2
- package/index.js.map +3 -3
- package/package.json +7 -7
- package/renderables/Input.d.ts +7 -0
- package/renderer.d.ts +4 -1
- package/testing/test-recorder.d.ts +2 -0
- package/testing.js +6 -4
- package/testing.js.map +3 -3
- package/types.d.ts +2 -0
- package/zig.d.ts +1 -0
package/3d.js
CHANGED
package/Renderable.d.ts
CHANGED
|
@@ -47,11 +47,15 @@ export interface LayoutOptions extends BaseRenderableOptions {
|
|
|
47
47
|
maxWidth?: number | "auto" | `${number}%`;
|
|
48
48
|
maxHeight?: number | "auto" | `${number}%`;
|
|
49
49
|
margin?: number | "auto" | `${number}%`;
|
|
50
|
+
marginX?: number | "auto" | `${number}%`;
|
|
51
|
+
marginY?: number | "auto" | `${number}%`;
|
|
50
52
|
marginTop?: number | "auto" | `${number}%`;
|
|
51
53
|
marginRight?: number | "auto" | `${number}%`;
|
|
52
54
|
marginBottom?: number | "auto" | `${number}%`;
|
|
53
55
|
marginLeft?: number | "auto" | `${number}%`;
|
|
54
56
|
padding?: number | `${number}%`;
|
|
57
|
+
paddingX?: number | `${number}%`;
|
|
58
|
+
paddingY?: number | `${number}%`;
|
|
55
59
|
paddingTop?: number | `${number}%`;
|
|
56
60
|
paddingRight?: number | `${number}%`;
|
|
57
61
|
paddingBottom?: number | `${number}%`;
|
|
@@ -225,11 +229,15 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
225
229
|
set minHeight(minHeight: number | `${number}%` | null | undefined);
|
|
226
230
|
set maxHeight(maxHeight: number | `${number}%` | null | undefined);
|
|
227
231
|
set margin(margin: number | "auto" | `${number}%` | null | undefined);
|
|
232
|
+
set marginX(marginX: number | "auto" | `${number}%` | null | undefined);
|
|
233
|
+
set marginY(marginY: number | "auto" | `${number}%` | null | undefined);
|
|
228
234
|
set marginTop(margin: number | "auto" | `${number}%` | null | undefined);
|
|
229
235
|
set marginRight(margin: number | "auto" | `${number}%` | null | undefined);
|
|
230
236
|
set marginBottom(margin: number | "auto" | `${number}%` | null | undefined);
|
|
231
237
|
set marginLeft(margin: number | "auto" | `${number}%` | null | undefined);
|
|
232
238
|
set padding(padding: number | `${number}%` | null | undefined);
|
|
239
|
+
set paddingX(paddingX: number | `${number}%` | null | undefined);
|
|
240
|
+
set paddingY(paddingY: number | `${number}%` | null | undefined);
|
|
233
241
|
set paddingTop(padding: number | `${number}%` | null | undefined);
|
|
234
242
|
set paddingRight(padding: number | `${number}%` | null | undefined);
|
|
235
243
|
set paddingBottom(padding: number | `${number}%` | null | undefined);
|
|
@@ -1833,23 +1833,23 @@ var kittyKeyMap = {
|
|
|
1833
1833
|
57396: "f33",
|
|
1834
1834
|
57397: "f34",
|
|
1835
1835
|
57398: "f35",
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1836
|
+
57399: "kp0",
|
|
1837
|
+
57400: "kp1",
|
|
1838
|
+
57401: "kp2",
|
|
1839
|
+
57402: "kp3",
|
|
1840
|
+
57403: "kp4",
|
|
1841
|
+
57404: "kp5",
|
|
1842
|
+
57405: "kp6",
|
|
1843
|
+
57406: "kp7",
|
|
1844
|
+
57407: "kp8",
|
|
1845
|
+
57408: "kp9",
|
|
1846
|
+
57409: "kpdecimal",
|
|
1847
|
+
57410: "kpdivide",
|
|
1848
|
+
57411: "kpmultiply",
|
|
1849
|
+
57412: "kpminus",
|
|
1850
|
+
57413: "kpplus",
|
|
1851
|
+
57414: "kpenter",
|
|
1852
|
+
57415: "kpequal",
|
|
1853
1853
|
57428: "mediaplay",
|
|
1854
1854
|
57429: "mediapause",
|
|
1855
1855
|
57430: "mediaplaypause",
|
|
@@ -5956,6 +5956,9 @@ function isCompleteSequence(data) {
|
|
|
5956
5956
|
return "incomplete";
|
|
5957
5957
|
}
|
|
5958
5958
|
const afterEsc = data.slice(1);
|
|
5959
|
+
if (afterEsc.startsWith(ESC)) {
|
|
5960
|
+
return isCompleteSequence(afterEsc);
|
|
5961
|
+
}
|
|
5959
5962
|
if (afterEsc.startsWith("[")) {
|
|
5960
5963
|
if (afterEsc.startsWith("[M")) {
|
|
5961
5964
|
return data.length >= 6 ? "complete" : "incomplete";
|
|
@@ -6034,6 +6037,9 @@ function isCompleteApcSequence(data) {
|
|
|
6034
6037
|
}
|
|
6035
6038
|
return "incomplete";
|
|
6036
6039
|
}
|
|
6040
|
+
function isNestedEscapeSequenceStart(char) {
|
|
6041
|
+
return char === "[" || char === "]" || char === "O" || char === "N" || char === "P" || char === "_";
|
|
6042
|
+
}
|
|
6037
6043
|
function extractCompleteSequences(buffer) {
|
|
6038
6044
|
const sequences = [];
|
|
6039
6045
|
let pos = 0;
|
|
@@ -6049,6 +6055,14 @@ function extractCompleteSequences(buffer) {
|
|
|
6049
6055
|
pos += seqEnd;
|
|
6050
6056
|
break;
|
|
6051
6057
|
} else if (status === "incomplete") {
|
|
6058
|
+
if (candidate === ESC + ESC) {
|
|
6059
|
+
const nextChar = remaining[seqEnd];
|
|
6060
|
+
if (seqEnd < remaining.length && !isNestedEscapeSequenceStart(nextChar)) {
|
|
6061
|
+
sequences.push(candidate);
|
|
6062
|
+
pos += seqEnd;
|
|
6063
|
+
break;
|
|
6064
|
+
}
|
|
6065
|
+
}
|
|
6052
6066
|
seqEnd++;
|
|
6053
6067
|
} else {
|
|
6054
6068
|
sequences.push(candidate);
|
|
@@ -6540,6 +6554,7 @@ class MouseParser {
|
|
|
6540
6554
|
const y = str.charCodeAt(5) - 33;
|
|
6541
6555
|
const button = buttonByte & 3;
|
|
6542
6556
|
const isScroll = (buttonByte & 64) !== 0;
|
|
6557
|
+
const isMotion = (buttonByte & 32) !== 0;
|
|
6543
6558
|
const scrollDirection = !isScroll ? undefined : MouseParser.SCROLL_DIRECTIONS[button];
|
|
6544
6559
|
const modifiers = {
|
|
6545
6560
|
shift: (buttonByte & 4) !== 0,
|
|
@@ -6556,6 +6571,9 @@ class MouseParser {
|
|
|
6556
6571
|
direction: scrollDirection,
|
|
6557
6572
|
delta: 1
|
|
6558
6573
|
};
|
|
6574
|
+
} else if (isMotion) {
|
|
6575
|
+
type = "move";
|
|
6576
|
+
actualButton = button === 3 ? -1 : button;
|
|
6559
6577
|
} else {
|
|
6560
6578
|
type = button === 3 ? "up" : "down";
|
|
6561
6579
|
actualButton = button === 3 ? 0 : button;
|
|
@@ -10629,6 +10647,10 @@ function getOpenTUILib(libPath) {
|
|
|
10629
10647
|
args: ["ptr", "i64"],
|
|
10630
10648
|
returns: "void"
|
|
10631
10649
|
},
|
|
10650
|
+
restoreTerminalModes: {
|
|
10651
|
+
args: ["ptr"],
|
|
10652
|
+
returns: "void"
|
|
10653
|
+
},
|
|
10632
10654
|
enableMouse: {
|
|
10633
10655
|
args: ["ptr", "bool"],
|
|
10634
10656
|
returns: "void"
|
|
@@ -11763,6 +11785,9 @@ class FFIRenderLib {
|
|
|
11763
11785
|
const ts = timestamp ?? Date.now();
|
|
11764
11786
|
this.opentui.symbols.dumpStdoutBuffer(renderer, ts);
|
|
11765
11787
|
}
|
|
11788
|
+
restoreTerminalModes(renderer) {
|
|
11789
|
+
this.opentui.symbols.restoreTerminalModes(renderer);
|
|
11790
|
+
}
|
|
11766
11791
|
enableMouse(renderer, enableMovement) {
|
|
11767
11792
|
this.opentui.symbols.enableMouse(renderer, enableMovement);
|
|
11768
11793
|
}
|
|
@@ -13352,10 +13377,13 @@ class Renderable extends BaseRenderable {
|
|
|
13352
13377
|
setupMarginAndPadding(options) {
|
|
13353
13378
|
const node = this.yogaNode;
|
|
13354
13379
|
if (isMarginType(options.margin)) {
|
|
13355
|
-
node.setMargin(Edge.
|
|
13356
|
-
|
|
13357
|
-
|
|
13358
|
-
node.setMargin(Edge.
|
|
13380
|
+
node.setMargin(Edge.All, options.margin);
|
|
13381
|
+
}
|
|
13382
|
+
if (isMarginType(options.marginX)) {
|
|
13383
|
+
node.setMargin(Edge.Horizontal, options.marginX);
|
|
13384
|
+
}
|
|
13385
|
+
if (isMarginType(options.marginY)) {
|
|
13386
|
+
node.setMargin(Edge.Vertical, options.marginY);
|
|
13359
13387
|
}
|
|
13360
13388
|
if (isMarginType(options.marginTop)) {
|
|
13361
13389
|
node.setMargin(Edge.Top, options.marginTop);
|
|
@@ -13370,10 +13398,13 @@ class Renderable extends BaseRenderable {
|
|
|
13370
13398
|
node.setMargin(Edge.Left, options.marginLeft);
|
|
13371
13399
|
}
|
|
13372
13400
|
if (isPaddingType(options.padding)) {
|
|
13373
|
-
node.setPadding(Edge.
|
|
13374
|
-
|
|
13375
|
-
|
|
13376
|
-
node.setPadding(Edge.
|
|
13401
|
+
node.setPadding(Edge.All, options.padding);
|
|
13402
|
+
}
|
|
13403
|
+
if (isPaddingType(options.paddingX)) {
|
|
13404
|
+
node.setPadding(Edge.Horizontal, options.paddingX);
|
|
13405
|
+
}
|
|
13406
|
+
if (isPaddingType(options.paddingY)) {
|
|
13407
|
+
node.setPadding(Edge.Vertical, options.paddingY);
|
|
13377
13408
|
}
|
|
13378
13409
|
if (isPaddingType(options.paddingTop)) {
|
|
13379
13410
|
node.setPadding(Edge.Top, options.paddingTop);
|
|
@@ -13508,11 +13539,19 @@ class Renderable extends BaseRenderable {
|
|
|
13508
13539
|
}
|
|
13509
13540
|
set margin(margin) {
|
|
13510
13541
|
if (isMarginType(margin)) {
|
|
13511
|
-
|
|
13512
|
-
|
|
13513
|
-
|
|
13514
|
-
|
|
13515
|
-
|
|
13542
|
+
this.yogaNode.setMargin(Edge.All, margin);
|
|
13543
|
+
this.requestRender();
|
|
13544
|
+
}
|
|
13545
|
+
}
|
|
13546
|
+
set marginX(marginX) {
|
|
13547
|
+
if (isMarginType(marginX)) {
|
|
13548
|
+
this.yogaNode.setMargin(Edge.Horizontal, marginX);
|
|
13549
|
+
this.requestRender();
|
|
13550
|
+
}
|
|
13551
|
+
}
|
|
13552
|
+
set marginY(marginY) {
|
|
13553
|
+
if (isMarginType(marginY)) {
|
|
13554
|
+
this.yogaNode.setMargin(Edge.Vertical, marginY);
|
|
13516
13555
|
this.requestRender();
|
|
13517
13556
|
}
|
|
13518
13557
|
}
|
|
@@ -13542,11 +13581,19 @@ class Renderable extends BaseRenderable {
|
|
|
13542
13581
|
}
|
|
13543
13582
|
set padding(padding) {
|
|
13544
13583
|
if (isPaddingType(padding)) {
|
|
13545
|
-
|
|
13546
|
-
|
|
13547
|
-
|
|
13548
|
-
|
|
13549
|
-
|
|
13584
|
+
this.yogaNode.setPadding(Edge.All, padding);
|
|
13585
|
+
this.requestRender();
|
|
13586
|
+
}
|
|
13587
|
+
}
|
|
13588
|
+
set paddingX(paddingX) {
|
|
13589
|
+
if (isPaddingType(paddingX)) {
|
|
13590
|
+
this.yogaNode.setPadding(Edge.Horizontal, paddingX);
|
|
13591
|
+
this.requestRender();
|
|
13592
|
+
}
|
|
13593
|
+
}
|
|
13594
|
+
set paddingY(paddingY) {
|
|
13595
|
+
if (isPaddingType(paddingY)) {
|
|
13596
|
+
this.yogaNode.setPadding(Edge.Vertical, paddingY);
|
|
13550
13597
|
this.requestRender();
|
|
13551
13598
|
}
|
|
13552
13599
|
}
|
|
@@ -15786,6 +15833,7 @@ class CliRenderer extends EventEmitter9 {
|
|
|
15786
15833
|
_cachedPalette = null;
|
|
15787
15834
|
_paletteDetectionPromise = null;
|
|
15788
15835
|
_onDestroy;
|
|
15836
|
+
_themeMode = null;
|
|
15789
15837
|
inputHandlers = [];
|
|
15790
15838
|
prependedInputHandlers = [];
|
|
15791
15839
|
idleResolvers = [];
|
|
@@ -16115,6 +16163,9 @@ Captured output:
|
|
|
16115
16163
|
get capabilities() {
|
|
16116
16164
|
return this._capabilities;
|
|
16117
16165
|
}
|
|
16166
|
+
get themeMode() {
|
|
16167
|
+
return this._themeMode;
|
|
16168
|
+
}
|
|
16118
16169
|
getDebugInputs() {
|
|
16119
16170
|
return [...this._debugInputs];
|
|
16120
16171
|
}
|
|
@@ -16272,6 +16323,7 @@ Captured output:
|
|
|
16272
16323
|
}).bind(this);
|
|
16273
16324
|
focusHandler = ((sequence) => {
|
|
16274
16325
|
if (sequence === "\x1B[I") {
|
|
16326
|
+
this.lib.restoreTerminalModes(this.rendererPtr);
|
|
16275
16327
|
this.emit("focus");
|
|
16276
16328
|
return true;
|
|
16277
16329
|
}
|
|
@@ -16281,6 +16333,23 @@ Captured output:
|
|
|
16281
16333
|
}
|
|
16282
16334
|
return false;
|
|
16283
16335
|
}).bind(this);
|
|
16336
|
+
themeModeHandler = ((sequence) => {
|
|
16337
|
+
if (sequence === "\x1B[?997;1n") {
|
|
16338
|
+
if (this._themeMode !== "dark") {
|
|
16339
|
+
this._themeMode = "dark";
|
|
16340
|
+
this.emit("theme_mode", "dark");
|
|
16341
|
+
}
|
|
16342
|
+
return true;
|
|
16343
|
+
}
|
|
16344
|
+
if (sequence === "\x1B[?997;2n") {
|
|
16345
|
+
if (this._themeMode !== "light") {
|
|
16346
|
+
this._themeMode = "light";
|
|
16347
|
+
this.emit("theme_mode", "light");
|
|
16348
|
+
}
|
|
16349
|
+
return true;
|
|
16350
|
+
}
|
|
16351
|
+
return false;
|
|
16352
|
+
}).bind(this);
|
|
16284
16353
|
setupInput() {
|
|
16285
16354
|
for (const handler of this.prependedInputHandlers) {
|
|
16286
16355
|
this.addInputHandler(handler);
|
|
@@ -16298,6 +16367,7 @@ Captured output:
|
|
|
16298
16367
|
});
|
|
16299
16368
|
this.addInputHandler(this.capabilityHandler);
|
|
16300
16369
|
this.addInputHandler(this.focusHandler);
|
|
16370
|
+
this.addInputHandler(this.themeModeHandler);
|
|
16301
16371
|
this.addInputHandler((sequence) => {
|
|
16302
16372
|
return this._keyHandler.processInput(sequence);
|
|
16303
16373
|
});
|
|
@@ -16364,9 +16434,11 @@ Captured output:
|
|
|
16364
16434
|
if (mouseEvent.type === "scroll") {
|
|
16365
16435
|
const maybeRenderableId2 = this.hitTest(mouseEvent.x, mouseEvent.y);
|
|
16366
16436
|
const maybeRenderable2 = Renderable.renderablesByNumber.get(maybeRenderableId2);
|
|
16367
|
-
|
|
16368
|
-
|
|
16369
|
-
|
|
16437
|
+
const fallbackTarget = this._currentFocusedRenderable && !this._currentFocusedRenderable.isDestroyed && this._currentFocusedRenderable.focused ? this._currentFocusedRenderable : null;
|
|
16438
|
+
const scrollTarget = maybeRenderable2 ?? fallbackTarget;
|
|
16439
|
+
if (scrollTarget) {
|
|
16440
|
+
const event2 = new MouseEvent(scrollTarget, mouseEvent);
|
|
16441
|
+
scrollTarget.processMouseEvent(event2);
|
|
16370
16442
|
}
|
|
16371
16443
|
return true;
|
|
16372
16444
|
}
|
|
@@ -17129,5 +17201,5 @@ Captured output:
|
|
|
17129
17201
|
|
|
17130
17202
|
export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, exports_src, isValidBorderStyle, parseBorderStyle, 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 };
|
|
17131
17203
|
|
|
17132
|
-
//# debugId=
|
|
17133
|
-
//# sourceMappingURL=index-
|
|
17204
|
+
//# debugId=349D815F1273207064756E2164756E21
|
|
17205
|
+
//# sourceMappingURL=index-zrvzvh6r.js.map
|