@opentui/core 0.1.76 → 0.1.78

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
@@ -6,7 +6,7 @@ import {
6
6
  __export,
7
7
  __require,
8
8
  __toESM
9
- } from "./index-phtsmwj4.js";
9
+ } from "./index-rje6z21e.js";
10
10
 
11
11
  // ../../node_modules/.bun/omggif@1.0.10/node_modules/omggif/omggif.js
12
12
  var require_omggif = __commonJS((exports) => {
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
- 57400: "kp0",
1837
- 57401: "kp1",
1838
- 57402: "kp2",
1839
- 57403: "kp3",
1840
- 57404: "kp4",
1841
- 57405: "kp5",
1842
- 57406: "kp6",
1843
- 57407: "kp7",
1844
- 57408: "kp8",
1845
- 57409: "kp9",
1846
- 57410: "kpdecimal",
1847
- 57411: "kpdivide",
1848
- 57412: "kpmultiply",
1849
- 57413: "kpminus",
1850
- 57414: "kpplus",
1851
- 57415: "kpenter",
1852
- 57416: "kpequal",
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);
@@ -10629,6 +10643,10 @@ function getOpenTUILib(libPath) {
10629
10643
  args: ["ptr", "i64"],
10630
10644
  returns: "void"
10631
10645
  },
10646
+ restoreTerminalModes: {
10647
+ args: ["ptr"],
10648
+ returns: "void"
10649
+ },
10632
10650
  enableMouse: {
10633
10651
  args: ["ptr", "bool"],
10634
10652
  returns: "void"
@@ -11763,6 +11781,9 @@ class FFIRenderLib {
11763
11781
  const ts = timestamp ?? Date.now();
11764
11782
  this.opentui.symbols.dumpStdoutBuffer(renderer, ts);
11765
11783
  }
11784
+ restoreTerminalModes(renderer) {
11785
+ this.opentui.symbols.restoreTerminalModes(renderer);
11786
+ }
11766
11787
  enableMouse(renderer, enableMovement) {
11767
11788
  this.opentui.symbols.enableMouse(renderer, enableMovement);
11768
11789
  }
@@ -13352,10 +13373,13 @@ class Renderable extends BaseRenderable {
13352
13373
  setupMarginAndPadding(options) {
13353
13374
  const node = this.yogaNode;
13354
13375
  if (isMarginType(options.margin)) {
13355
- node.setMargin(Edge.Top, options.margin);
13356
- node.setMargin(Edge.Right, options.margin);
13357
- node.setMargin(Edge.Bottom, options.margin);
13358
- node.setMargin(Edge.Left, options.margin);
13376
+ node.setMargin(Edge.All, options.margin);
13377
+ }
13378
+ if (isMarginType(options.marginX)) {
13379
+ node.setMargin(Edge.Horizontal, options.marginX);
13380
+ }
13381
+ if (isMarginType(options.marginY)) {
13382
+ node.setMargin(Edge.Vertical, options.marginY);
13359
13383
  }
13360
13384
  if (isMarginType(options.marginTop)) {
13361
13385
  node.setMargin(Edge.Top, options.marginTop);
@@ -13370,10 +13394,13 @@ class Renderable extends BaseRenderable {
13370
13394
  node.setMargin(Edge.Left, options.marginLeft);
13371
13395
  }
13372
13396
  if (isPaddingType(options.padding)) {
13373
- node.setPadding(Edge.Top, options.padding);
13374
- node.setPadding(Edge.Right, options.padding);
13375
- node.setPadding(Edge.Bottom, options.padding);
13376
- node.setPadding(Edge.Left, options.padding);
13397
+ node.setPadding(Edge.All, options.padding);
13398
+ }
13399
+ if (isPaddingType(options.paddingX)) {
13400
+ node.setPadding(Edge.Horizontal, options.paddingX);
13401
+ }
13402
+ if (isPaddingType(options.paddingY)) {
13403
+ node.setPadding(Edge.Vertical, options.paddingY);
13377
13404
  }
13378
13405
  if (isPaddingType(options.paddingTop)) {
13379
13406
  node.setPadding(Edge.Top, options.paddingTop);
@@ -13508,11 +13535,19 @@ class Renderable extends BaseRenderable {
13508
13535
  }
13509
13536
  set margin(margin) {
13510
13537
  if (isMarginType(margin)) {
13511
- const node = this.yogaNode;
13512
- node.setMargin(Edge.Top, margin);
13513
- node.setMargin(Edge.Right, margin);
13514
- node.setMargin(Edge.Bottom, margin);
13515
- node.setMargin(Edge.Left, margin);
13538
+ this.yogaNode.setMargin(Edge.All, margin);
13539
+ this.requestRender();
13540
+ }
13541
+ }
13542
+ set marginX(marginX) {
13543
+ if (isMarginType(marginX)) {
13544
+ this.yogaNode.setMargin(Edge.Horizontal, marginX);
13545
+ this.requestRender();
13546
+ }
13547
+ }
13548
+ set marginY(marginY) {
13549
+ if (isMarginType(marginY)) {
13550
+ this.yogaNode.setMargin(Edge.Vertical, marginY);
13516
13551
  this.requestRender();
13517
13552
  }
13518
13553
  }
@@ -13542,11 +13577,19 @@ class Renderable extends BaseRenderable {
13542
13577
  }
13543
13578
  set padding(padding) {
13544
13579
  if (isPaddingType(padding)) {
13545
- const node = this.yogaNode;
13546
- node.setPadding(Edge.Top, padding);
13547
- node.setPadding(Edge.Right, padding);
13548
- node.setPadding(Edge.Bottom, padding);
13549
- node.setPadding(Edge.Left, padding);
13580
+ this.yogaNode.setPadding(Edge.All, padding);
13581
+ this.requestRender();
13582
+ }
13583
+ }
13584
+ set paddingX(paddingX) {
13585
+ if (isPaddingType(paddingX)) {
13586
+ this.yogaNode.setPadding(Edge.Horizontal, paddingX);
13587
+ this.requestRender();
13588
+ }
13589
+ }
13590
+ set paddingY(paddingY) {
13591
+ if (isPaddingType(paddingY)) {
13592
+ this.yogaNode.setPadding(Edge.Vertical, paddingY);
13550
13593
  this.requestRender();
13551
13594
  }
13552
13595
  }
@@ -15747,6 +15790,7 @@ class CliRenderer extends EventEmitter9 {
15747
15790
  resizeDebounceDelay = 100;
15748
15791
  enableMouseMovement = false;
15749
15792
  _useMouse = true;
15793
+ autoFocus = true;
15750
15794
  _useAlternateScreen = env.OTUI_USE_ALTERNATE_SCREEN;
15751
15795
  _suspendedMouseEnabled = false;
15752
15796
  _previousControlState = "idle" /* IDLE */;
@@ -15785,6 +15829,7 @@ class CliRenderer extends EventEmitter9 {
15785
15829
  _cachedPalette = null;
15786
15830
  _paletteDetectionPromise = null;
15787
15831
  _onDestroy;
15832
+ _themeMode = null;
15788
15833
  inputHandlers = [];
15789
15834
  prependedInputHandlers = [];
15790
15835
  idleResolvers = [];
@@ -15874,6 +15919,7 @@ Captured output:
15874
15919
  this.maxStatSamples = config.maxStatSamples || 300;
15875
15920
  this.enableMouseMovement = config.enableMouseMovement ?? true;
15876
15921
  this._useMouse = config.useMouse ?? true;
15922
+ this.autoFocus = config.autoFocus ?? true;
15877
15923
  this._useAlternateScreen = config.useAlternateScreen ?? env.OTUI_USE_ALTERNATE_SCREEN;
15878
15924
  this.nextRenderBuffer = this.lib.getNextBuffer(this.rendererPtr);
15879
15925
  this.currentRenderBuffer = this.lib.getCurrentBuffer(this.rendererPtr);
@@ -16113,6 +16159,9 @@ Captured output:
16113
16159
  get capabilities() {
16114
16160
  return this._capabilities;
16115
16161
  }
16162
+ get themeMode() {
16163
+ return this._themeMode;
16164
+ }
16116
16165
  getDebugInputs() {
16117
16166
  return [...this._debugInputs];
16118
16167
  }
@@ -16270,6 +16319,7 @@ Captured output:
16270
16319
  }).bind(this);
16271
16320
  focusHandler = ((sequence) => {
16272
16321
  if (sequence === "\x1B[I") {
16322
+ this.lib.restoreTerminalModes(this.rendererPtr);
16273
16323
  this.emit("focus");
16274
16324
  return true;
16275
16325
  }
@@ -16279,6 +16329,23 @@ Captured output:
16279
16329
  }
16280
16330
  return false;
16281
16331
  }).bind(this);
16332
+ themeModeHandler = ((sequence) => {
16333
+ if (sequence === "\x1B[?997;1n") {
16334
+ if (this._themeMode !== "dark") {
16335
+ this._themeMode = "dark";
16336
+ this.emit("theme_mode", "dark");
16337
+ }
16338
+ return true;
16339
+ }
16340
+ if (sequence === "\x1B[?997;2n") {
16341
+ if (this._themeMode !== "light") {
16342
+ this._themeMode = "light";
16343
+ this.emit("theme_mode", "light");
16344
+ }
16345
+ return true;
16346
+ }
16347
+ return false;
16348
+ }).bind(this);
16282
16349
  setupInput() {
16283
16350
  for (const handler of this.prependedInputHandlers) {
16284
16351
  this.addInputHandler(handler);
@@ -16296,6 +16363,7 @@ Captured output:
16296
16363
  });
16297
16364
  this.addInputHandler(this.capabilityHandler);
16298
16365
  this.addInputHandler(this.focusHandler);
16366
+ this.addInputHandler(this.themeModeHandler);
16299
16367
  this.addInputHandler((sequence) => {
16300
16368
  return this._keyHandler.processInput(sequence);
16301
16369
  });
@@ -16325,7 +16393,7 @@ Captured output:
16325
16393
  dispatchMouseEvent(target, attributes) {
16326
16394
  const event = new MouseEvent(target, attributes);
16327
16395
  target.processMouseEvent(event);
16328
- if (event.type === "down" && event.button === 0 /* LEFT */ && !event.defaultPrevented) {
16396
+ if (this.autoFocus && event.type === "down" && event.button === 0 /* LEFT */ && !event.defaultPrevented) {
16329
16397
  let current = target;
16330
16398
  while (current) {
16331
16399
  if (current.focusable) {
@@ -17127,5 +17195,5 @@ Captured output:
17127
17195
 
17128
17196
  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 };
17129
17197
 
17130
- //# debugId=B39292D59871DD3764756E2164756E21
17131
- //# sourceMappingURL=index-phtsmwj4.js.map
17198
+ //# debugId=786F48BD0A97DA2664756E2164756E21
17199
+ //# sourceMappingURL=index-rje6z21e.js.map