@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 CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  __export,
7
7
  __require,
8
8
  __toESM
9
- } from "./index-h3dbfsf6.js";
9
+ } from "./index-zrvzvh6r.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);
@@ -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.Top, options.margin);
13356
- node.setMargin(Edge.Right, options.margin);
13357
- node.setMargin(Edge.Bottom, options.margin);
13358
- node.setMargin(Edge.Left, options.margin);
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.Top, options.padding);
13374
- node.setPadding(Edge.Right, options.padding);
13375
- node.setPadding(Edge.Bottom, options.padding);
13376
- node.setPadding(Edge.Left, options.padding);
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
- 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);
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
- 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);
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
- if (maybeRenderable2) {
16368
- const event2 = new MouseEvent(maybeRenderable2, mouseEvent);
16369
- maybeRenderable2.processMouseEvent(event2);
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=D20D2D363CAB456C64756E2164756E21
17133
- //# sourceMappingURL=index-h3dbfsf6.js.map
17204
+ //# debugId=349D815F1273207064756E2164756E21
17205
+ //# sourceMappingURL=index-zrvzvh6r.js.map