@opentui/core 0.0.0-20250919-6683564e → 0.0.0-20250922-2a20774e
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 +5 -2
- package/ansi.d.ts +0 -1
- package/{index-0yx9rnxg.js → index-mtc20a8y.js} +62 -35
- package/{index-0yx9rnxg.js.map → index-mtc20a8y.js.map} +7 -7
- package/index.js +33 -23
- package/index.js.map +6 -6
- package/lib/KeyHandler.d.ts +1 -0
- package/package.json +7 -7
- package/renderables/ASCIIFont.d.ts +1 -1
- package/renderables/Text.d.ts +3 -0
- package/renderer.d.ts +1 -0
- package/testing.js +1 -1
package/3d.js
CHANGED
package/Renderable.d.ts
CHANGED
|
@@ -228,6 +228,11 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
228
228
|
protected onLayoutResize(width: number, height: number): void;
|
|
229
229
|
protected handleFrameBufferResize(width: number, height: number): void;
|
|
230
230
|
protected createFrameBuffer(): void;
|
|
231
|
+
/**
|
|
232
|
+
* This will be called during a render pass.
|
|
233
|
+
* Requesting a render during a render pass will drop the requested render.
|
|
234
|
+
* If you need to request a render during a render pass, use process.nextTick.
|
|
235
|
+
*/
|
|
231
236
|
protected onResize(width: number, height: number): void;
|
|
232
237
|
private replaceParent;
|
|
233
238
|
private _forceLayoutUpdateFor;
|
|
@@ -290,13 +295,11 @@ interface RenderCommandRender extends RenderCommandBase {
|
|
|
290
295
|
}
|
|
291
296
|
export type RenderCommand = RenderCommandPushScissorRect | RenderCommandPopScissorRect | RenderCommandRender;
|
|
292
297
|
export declare class RootRenderable extends Renderable {
|
|
293
|
-
private yogaConfig;
|
|
294
298
|
private renderList;
|
|
295
299
|
constructor(ctx: RenderContext);
|
|
296
300
|
render(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
297
301
|
protected propagateLiveCount(delta: number): void;
|
|
298
302
|
calculateLayout(): void;
|
|
299
303
|
resize(width: number, height: number): void;
|
|
300
|
-
protected destroySelf(): void;
|
|
301
304
|
}
|
|
302
305
|
export {};
|
package/ansi.d.ts
CHANGED
|
@@ -2189,6 +2189,7 @@ function singleton(key, factory) {
|
|
|
2189
2189
|
class KeyHandler extends EventEmitter {
|
|
2190
2190
|
stdin;
|
|
2191
2191
|
useKittyKeyboard;
|
|
2192
|
+
listener;
|
|
2192
2193
|
constructor(stdin, useKittyKeyboard = false) {
|
|
2193
2194
|
super();
|
|
2194
2195
|
this.stdin = stdin || process.stdin;
|
|
@@ -2198,7 +2199,7 @@ class KeyHandler extends EventEmitter {
|
|
|
2198
2199
|
}
|
|
2199
2200
|
this.stdin.resume();
|
|
2200
2201
|
this.stdin.setEncoding("utf8");
|
|
2201
|
-
this.
|
|
2202
|
+
this.listener = (key) => {
|
|
2202
2203
|
const parsedKey = parseKeypress(key, { useKittyKeyboard: this.useKittyKeyboard });
|
|
2203
2204
|
switch (parsedKey.eventType) {
|
|
2204
2205
|
case "press":
|
|
@@ -2214,10 +2215,15 @@ class KeyHandler extends EventEmitter {
|
|
|
2214
2215
|
this.emit("keypress", parsedKey);
|
|
2215
2216
|
break;
|
|
2216
2217
|
}
|
|
2217
|
-
}
|
|
2218
|
+
};
|
|
2219
|
+
this.stdin.on("data", this.listener);
|
|
2218
2220
|
}
|
|
2219
2221
|
destroy() {
|
|
2220
|
-
this.stdin.
|
|
2222
|
+
this.stdin.removeListener("data", this.listener);
|
|
2223
|
+
if (this.stdin.setRawMode) {
|
|
2224
|
+
this.stdin.setRawMode(false);
|
|
2225
|
+
}
|
|
2226
|
+
keyHandler = null;
|
|
2221
2227
|
}
|
|
2222
2228
|
}
|
|
2223
2229
|
var keyHandler = null;
|
|
@@ -6222,6 +6228,9 @@ class BaseRenderable extends EventEmitter2 {
|
|
|
6222
6228
|
this._visible = value;
|
|
6223
6229
|
}
|
|
6224
6230
|
}
|
|
6231
|
+
var yogaConfig = src_default.Config.create();
|
|
6232
|
+
yogaConfig.setUseWebDefaults(false);
|
|
6233
|
+
yogaConfig.setPointScaleFactor(1);
|
|
6225
6234
|
|
|
6226
6235
|
class Renderable extends BaseRenderable {
|
|
6227
6236
|
static renderablesByNumber = new Map;
|
|
@@ -6283,7 +6292,7 @@ class Renderable extends BaseRenderable {
|
|
|
6283
6292
|
this.buffered = options.buffered ?? false;
|
|
6284
6293
|
this._live = options.live ?? false;
|
|
6285
6294
|
this._liveCount = this._live && this._visible ? 1 : 0;
|
|
6286
|
-
this.yogaNode = src_default.Node.create();
|
|
6295
|
+
this.yogaNode = src_default.Node.create(yogaConfig);
|
|
6287
6296
|
this.yogaNode.setDisplay(this._visible ? Display.Flex : Display.None);
|
|
6288
6297
|
this.setupYogaProperties(options);
|
|
6289
6298
|
this.applyEventOptions(options);
|
|
@@ -6551,8 +6560,7 @@ class Renderable extends BaseRenderable {
|
|
|
6551
6560
|
if (options.flexShrink !== undefined) {
|
|
6552
6561
|
node.setFlexShrink(options.flexShrink);
|
|
6553
6562
|
} else {
|
|
6554
|
-
|
|
6555
|
-
node.setFlexShrink(shrinkValue);
|
|
6563
|
+
node.setFlexShrink(1);
|
|
6556
6564
|
}
|
|
6557
6565
|
if (options.flexDirection !== undefined) {
|
|
6558
6566
|
node.setFlexDirection(parseFlexDirection(options.flexDirection));
|
|
@@ -7228,17 +7236,13 @@ class Renderable extends BaseRenderable {
|
|
|
7228
7236
|
}
|
|
7229
7237
|
|
|
7230
7238
|
class RootRenderable extends Renderable {
|
|
7231
|
-
yogaConfig;
|
|
7232
7239
|
renderList = [];
|
|
7233
7240
|
constructor(ctx) {
|
|
7234
7241
|
super(ctx, { id: "__root__", zIndex: 0, visible: true, width: ctx.width, height: ctx.height, enableLayout: true });
|
|
7235
|
-
this.yogaConfig = src_default.Config.create();
|
|
7236
|
-
this.yogaConfig.setUseWebDefaults(false);
|
|
7237
|
-
this.yogaConfig.setPointScaleFactor(1);
|
|
7238
7242
|
if (this.yogaNode) {
|
|
7239
7243
|
this.yogaNode.free();
|
|
7240
7244
|
}
|
|
7241
|
-
this.yogaNode = src_default.Node.create(
|
|
7245
|
+
this.yogaNode = src_default.Node.create(yogaConfig);
|
|
7242
7246
|
this.yogaNode.setWidth(ctx.width);
|
|
7243
7247
|
this.yogaNode.setHeight(ctx.height);
|
|
7244
7248
|
this.yogaNode.setFlexDirection(FlexDirection.Column);
|
|
@@ -7288,11 +7292,6 @@ class RootRenderable extends Renderable {
|
|
|
7288
7292
|
this.height = height;
|
|
7289
7293
|
this.emit("resized" /* RESIZED */, { width, height });
|
|
7290
7294
|
}
|
|
7291
|
-
destroySelf() {
|
|
7292
|
-
try {
|
|
7293
|
-
this.yogaConfig.free();
|
|
7294
|
-
} catch (error) {}
|
|
7295
|
-
}
|
|
7296
7295
|
}
|
|
7297
7296
|
|
|
7298
7297
|
// src/renderables/composition/vnode.ts
|
|
@@ -7548,12 +7547,12 @@ class TerminalConsoleCache extends EventEmitter4 {
|
|
|
7548
7547
|
super();
|
|
7549
7548
|
}
|
|
7550
7549
|
activate() {
|
|
7550
|
+
if (process.env.OTUI_USE_CONSOLE === "false")
|
|
7551
|
+
return;
|
|
7551
7552
|
this.setupConsoleCapture();
|
|
7552
7553
|
this.overrideConsoleMethods();
|
|
7553
7554
|
}
|
|
7554
7555
|
setupConsoleCapture() {
|
|
7555
|
-
if (process.env.OTUI_USE_CONSOLE === "false")
|
|
7556
|
-
return;
|
|
7557
7556
|
const mockStdout = new CapturedWritableStream("stdout", capture);
|
|
7558
7557
|
const mockStderr = new CapturedWritableStream("stderr", capture);
|
|
7559
7558
|
global.console = new Console({
|
|
@@ -8142,8 +8141,6 @@ var ANSI = {
|
|
|
8142
8141
|
disableAnyEventTracking: "\x1B[?1003l",
|
|
8143
8142
|
enableSGRMouseMode: "\x1B[?1006h",
|
|
8144
8143
|
disableSGRMouseMode: "\x1B[?1006l",
|
|
8145
|
-
makeRoomForRenderer: (height) => `
|
|
8146
|
-
`.repeat(height) + `\x1B[${height}A`,
|
|
8147
8144
|
clearRendererSpace: (height) => `\x1B[${height}A\x1B[1G\x1B[J`
|
|
8148
8145
|
};
|
|
8149
8146
|
|
|
@@ -8277,6 +8274,21 @@ singleton("ProcessExitSignals", () => {
|
|
|
8277
8274
|
});
|
|
8278
8275
|
});
|
|
8279
8276
|
});
|
|
8277
|
+
var rendererTracker = singleton("RendererTracker", () => {
|
|
8278
|
+
const renderers = new Set;
|
|
8279
|
+
return {
|
|
8280
|
+
addRenderer: (renderer) => {
|
|
8281
|
+
renderers.add(renderer);
|
|
8282
|
+
},
|
|
8283
|
+
removeRenderer: (renderer) => {
|
|
8284
|
+
renderers.delete(renderer);
|
|
8285
|
+
if (renderers.size === 0) {
|
|
8286
|
+
getKeyHandler().destroy();
|
|
8287
|
+
process.stdin.pause();
|
|
8288
|
+
}
|
|
8289
|
+
}
|
|
8290
|
+
};
|
|
8291
|
+
});
|
|
8280
8292
|
async function createCliRenderer(config = {}) {
|
|
8281
8293
|
if (process.argv.includes("--delay-start")) {
|
|
8282
8294
|
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
@@ -8408,17 +8420,7 @@ class CliRenderer extends EventEmitter5 {
|
|
|
8408
8420
|
this.realStdoutWrite.call(this.stdout, `
|
|
8409
8421
|
=== FATAL ERROR OCCURRED ===
|
|
8410
8422
|
`);
|
|
8411
|
-
this.
|
|
8412
|
-
`);
|
|
8413
|
-
this.realStdoutWrite.call(this.stdout, this.console.getCachedLogs());
|
|
8414
|
-
this.realStdoutWrite.call(this.stdout, `
|
|
8415
|
-
Captured output:
|
|
8416
|
-
`);
|
|
8417
|
-
const capturedOutput = capture.claimOutput();
|
|
8418
|
-
if (capturedOutput) {
|
|
8419
|
-
this.realStdoutWrite.call(this.stdout, capturedOutput + `
|
|
8420
|
-
`);
|
|
8421
|
-
}
|
|
8423
|
+
this.dumpOutputCache();
|
|
8422
8424
|
this.realStdoutWrite.call(this.stdout, `
|
|
8423
8425
|
Error details:
|
|
8424
8426
|
`);
|
|
@@ -8431,7 +8433,31 @@ Error details:
|
|
|
8431
8433
|
process.exit(1);
|
|
8432
8434
|
});
|
|
8433
8435
|
}).bind(this);
|
|
8436
|
+
dumpOutputCache(optionalMessage = "") {
|
|
8437
|
+
const cachedLogs = this.console.getCachedLogs();
|
|
8438
|
+
const capturedOutput = capture.claimOutput();
|
|
8439
|
+
if (capturedOutput.length > 0 || cachedLogs.length > 0) {
|
|
8440
|
+
this.realStdoutWrite.call(this.stdout, optionalMessage);
|
|
8441
|
+
}
|
|
8442
|
+
if (cachedLogs.length > 0) {
|
|
8443
|
+
this.realStdoutWrite.call(this.stdout, `Console cache:
|
|
8444
|
+
`);
|
|
8445
|
+
this.realStdoutWrite.call(this.stdout, cachedLogs);
|
|
8446
|
+
}
|
|
8447
|
+
if (capturedOutput.length > 0) {
|
|
8448
|
+
this.realStdoutWrite.call(this.stdout, `
|
|
8449
|
+
Captured output:
|
|
8450
|
+
`);
|
|
8451
|
+
this.realStdoutWrite.call(this.stdout, capturedOutput + `
|
|
8452
|
+
`);
|
|
8453
|
+
}
|
|
8454
|
+
}
|
|
8434
8455
|
exitHandler = (() => {
|
|
8456
|
+
if (true) {
|
|
8457
|
+
this.dumpOutputCache(`
|
|
8458
|
+
=== UNHANDLED OUTPUT (this is only printed in non-production environments) ===
|
|
8459
|
+
`);
|
|
8460
|
+
}
|
|
8435
8461
|
this.destroy();
|
|
8436
8462
|
}).bind(this);
|
|
8437
8463
|
warningHandler = ((warning) => {
|
|
@@ -8439,6 +8465,7 @@ Error details:
|
|
|
8439
8465
|
}).bind(this);
|
|
8440
8466
|
constructor(lib, rendererPtr, stdin, stdout, width, height, config = {}) {
|
|
8441
8467
|
super();
|
|
8468
|
+
rendererTracker.addRenderer(this);
|
|
8442
8469
|
this.stdin = stdin;
|
|
8443
8470
|
this.stdout = stdout;
|
|
8444
8471
|
this.realStdoutWrite = stdout.write;
|
|
@@ -8739,7 +8766,7 @@ Error details:
|
|
|
8739
8766
|
}
|
|
8740
8767
|
if (this.exitOnCtrlC && str === "\x03") {
|
|
8741
8768
|
process.nextTick(() => {
|
|
8742
|
-
|
|
8769
|
+
this.destroy();
|
|
8743
8770
|
});
|
|
8744
8771
|
return;
|
|
8745
8772
|
}
|
|
@@ -9096,7 +9123,6 @@ Error details:
|
|
|
9096
9123
|
process.removeListener("SIGWINCH", this.sigwinchHandler);
|
|
9097
9124
|
process.removeListener("uncaughtException", this.handleError);
|
|
9098
9125
|
process.removeListener("unhandledRejection", this.handleError);
|
|
9099
|
-
process.removeListener("exit", this.exitHandler);
|
|
9100
9126
|
process.removeListener("warning", this.warningHandler);
|
|
9101
9127
|
capture.removeListener("write", this.captureCallback);
|
|
9102
9128
|
if (this.memorySnapshotTimer) {
|
|
@@ -9118,6 +9144,7 @@ Error details:
|
|
|
9118
9144
|
this.flushStdoutCache(this._splitHeight, true);
|
|
9119
9145
|
}
|
|
9120
9146
|
this.lib.destroyRenderer(this.rendererPtr);
|
|
9147
|
+
rendererTracker.removeRenderer(this);
|
|
9121
9148
|
}
|
|
9122
9149
|
startRenderLoop() {
|
|
9123
9150
|
if (!this._isRunning)
|
|
@@ -9343,5 +9370,5 @@ Error details:
|
|
|
9343
9370
|
|
|
9344
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 };
|
|
9345
9372
|
|
|
9346
|
-
//# debugId=
|
|
9347
|
-
//# sourceMappingURL=index-
|
|
9373
|
+
//# debugId=4FCA4D27FA80FDD264756E2164756E21
|
|
9374
|
+
//# sourceMappingURL=index-mtc20a8y.js.map
|