@opentui/core 0.1.17 → 0.1.19-snapshot4-010c3be8

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
@@ -5,7 +5,7 @@ import {
5
5
  __export,
6
6
  __require,
7
7
  __toESM
8
- } from "./index-vg0fxf54.js";
8
+ } from "./index-grak7z0n.js";
9
9
 
10
10
  // ../../node_modules/omggif/omggif.js
11
11
  var require_omggif = __commonJS((exports) => {
package/README.md CHANGED
@@ -37,7 +37,7 @@ import { createCliRenderer, TextRenderable } from "@opentui/core"
37
37
 
38
38
  const renderer = await createCliRenderer()
39
39
 
40
- const obj = new TextRenderable("my-obj", { content: "Hello, world!" })
40
+ const obj = new TextRenderable(renderer, { id: "my-obj", content: "Hello, world!" })
41
41
 
42
42
  renderer.root.add(obj)
43
43
  ```
package/Renderable.d.ts CHANGED
@@ -95,6 +95,7 @@ export declare abstract class Renderable extends EventEmitter {
95
95
  static renderablesByNumber: Map<number, Renderable>;
96
96
  readonly id: string;
97
97
  readonly num: number;
98
+ private _isDestroyed;
98
99
  protected _ctx: RenderContext;
99
100
  protected _translateX: number;
100
101
  protected _translateY: number;
@@ -231,6 +232,7 @@ export declare abstract class Renderable extends EventEmitter {
231
232
  height: number;
232
233
  };
233
234
  protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void;
235
+ get isDestroyed(): boolean;
234
236
  destroy(): void;
235
237
  destroyRecursively(): void;
236
238
  protected destroySelf(): void;
@@ -5823,6 +5823,7 @@ class Renderable extends EventEmitter3 {
5823
5823
  static renderablesByNumber = new Map;
5824
5824
  id;
5825
5825
  num;
5826
+ _isDestroyed = false;
5826
5827
  _ctx;
5827
5828
  _translateX = 0;
5828
5829
  _translateY = 0;
@@ -6552,26 +6553,35 @@ class Renderable extends EventEmitter3 {
6552
6553
  if (!obj) {
6553
6554
  return -1;
6554
6555
  }
6555
- obj = ensureRenderable(this._ctx, obj);
6556
- if (this.renderableMap.has(obj.id)) {
6557
- console.warn(`A renderable with id ${obj.id} already exists in ${this.id}, removing it`);
6558
- this.remove(obj.id);
6556
+ const renderable = maybeMakeRenderable(this._ctx, obj);
6557
+ if (!renderable) {
6558
+ return -1;
6559
+ }
6560
+ if (renderable.isDestroyed) {
6561
+ if (true) {
6562
+ console.warn(`Renderable with id ${renderable.id} was already destroyed, skipping add`);
6563
+ }
6564
+ return -1;
6559
6565
  }
6560
- this.replaceParent(obj);
6561
- const childLayoutNode = obj.getLayoutNode();
6566
+ if (this.renderableMap.has(renderable.id)) {
6567
+ console.warn(`A renderable with id ${renderable.id} already exists in ${this.id}, removing it`);
6568
+ this.remove(renderable.id);
6569
+ }
6570
+ this.replaceParent(renderable);
6571
+ const childLayoutNode = renderable.getLayoutNode();
6562
6572
  let insertedIndex;
6563
6573
  if (index !== undefined) {
6564
- this.renderableArray.splice(index, 0, obj);
6574
+ this.renderableArray.splice(index, 0, renderable);
6565
6575
  insertedIndex = this.layoutNode.insertChild(childLayoutNode, index);
6566
6576
  } else {
6567
- this.renderableArray.push(obj);
6577
+ this.renderableArray.push(renderable);
6568
6578
  insertedIndex = this.layoutNode.addChild(childLayoutNode);
6569
6579
  }
6570
6580
  this.needsZIndexSort = true;
6571
6581
  this.childrenPrimarySortDirty = true;
6572
- this.renderableMap.set(obj.id, obj);
6573
- if (obj._liveCount > 0) {
6574
- this.propagateLiveCount(obj._liveCount);
6582
+ this.renderableMap.set(renderable.id, renderable);
6583
+ if (renderable._liveCount > 0) {
6584
+ this.propagateLiveCount(renderable._liveCount);
6575
6585
  }
6576
6586
  this.requestRender();
6577
6587
  return insertedIndex;
@@ -6580,9 +6590,12 @@ class Renderable extends EventEmitter3 {
6580
6590
  if (!obj) {
6581
6591
  return -1;
6582
6592
  }
6583
- obj = ensureRenderable(this._ctx, obj);
6593
+ const renderable = maybeMakeRenderable(this._ctx, obj);
6594
+ if (!renderable) {
6595
+ return -1;
6596
+ }
6584
6597
  if (!anchor) {
6585
- return this.add(obj);
6598
+ return this.add(renderable);
6586
6599
  }
6587
6600
  if (!this.renderableMap.has(anchor.id)) {
6588
6601
  throw new Error("Anchor does not exist");
@@ -6591,7 +6604,7 @@ class Renderable extends EventEmitter3 {
6591
6604
  if (anchorIndex === -1) {
6592
6605
  throw new Error("Anchor does not exist");
6593
6606
  }
6594
- return this.add(obj, anchorIndex);
6607
+ return this.add(renderable, anchorIndex);
6595
6608
  }
6596
6609
  getRenderable(id) {
6597
6610
  return this.renderableMap.get(id);
@@ -6674,7 +6687,14 @@ class Renderable extends EventEmitter3 {
6674
6687
  };
6675
6688
  }
6676
6689
  renderSelf(buffer, deltaTime) {}
6690
+ get isDestroyed() {
6691
+ return this._isDestroyed;
6692
+ }
6677
6693
  destroy() {
6694
+ if (this._isDestroyed) {
6695
+ return;
6696
+ }
6697
+ this._isDestroyed = true;
6678
6698
  if (this.parent) {
6679
6699
  this.parent.remove(this.id);
6680
6700
  }
@@ -6683,16 +6703,15 @@ class Renderable extends EventEmitter3 {
6683
6703
  this.frameBuffer = null;
6684
6704
  }
6685
6705
  for (const child of this.renderableArray) {
6686
- child.parent = null;
6687
- child.destroy();
6706
+ this.remove(child.id);
6688
6707
  }
6689
6708
  this.renderableArray = [];
6690
6709
  this.renderableMap.clear();
6691
6710
  Renderable.renderablesByNumber.delete(this.num);
6692
- this.layoutNode.destroy();
6693
6711
  this.blur();
6694
6712
  this.removeAllListeners();
6695
6713
  this.destroySelf();
6714
+ this.layoutNode.destroy();
6696
6715
  }
6697
6716
  destroyRecursively() {
6698
6717
  this.destroy();
@@ -6847,11 +6866,12 @@ class RootRenderable extends Renderable {
6847
6866
  try {
6848
6867
  this.yogaConfig.free();
6849
6868
  } catch (error) {}
6850
- super.destroySelf();
6851
6869
  }
6852
6870
  }
6853
6871
 
6854
6872
  // src/renderables/composition/vnode.ts
6873
+ import util from "util";
6874
+ var BrandedVNode = Symbol.for("@opentui/core/VNode");
6855
6875
  function isRenderableConstructor(value) {
6856
6876
  return typeof value === "function" && value.prototype && Renderable.prototype.isPrototypeOf(value.prototype);
6857
6877
  }
@@ -6871,7 +6891,7 @@ function h(type, props, ...children) {
6871
6891
  throw new TypeError("h() received an invalid vnode type");
6872
6892
  }
6873
6893
  const vnode = {
6874
- __isVNode: true,
6894
+ [BrandedVNode]: true,
6875
6895
  type,
6876
6896
  props,
6877
6897
  children: flattenChildren(children),
@@ -6913,12 +6933,17 @@ function h(type, props, ...children) {
6913
6933
  return vnode;
6914
6934
  }
6915
6935
  function isVNode(node) {
6916
- return node && node.__isVNode;
6936
+ return node && node[BrandedVNode];
6917
6937
  }
6918
- function ensureRenderable(ctx, node) {
6938
+ function maybeMakeRenderable(ctx, node) {
6919
6939
  if (isRenderable(node))
6920
6940
  return node;
6921
- return instantiate(ctx, node);
6941
+ if (isVNode(node))
6942
+ return instantiate(ctx, node);
6943
+ if (true) {
6944
+ console.warn("maybeMakeRenderable received an invalid node", util.inspect(node, { depth: 2 }));
6945
+ }
6946
+ return null;
6922
6947
  }
6923
6948
  function wrapWithDelegates(instance, delegateMap) {
6924
6949
  if (!delegateMap || Object.keys(delegateMap).length === 0)
@@ -7015,7 +7040,7 @@ import { EventEmitter as EventEmitter5 } from "events";
7015
7040
  import { Console } from "console";
7016
7041
  import fs from "fs";
7017
7042
  import path from "path";
7018
- import util from "util";
7043
+ import util2 from "util";
7019
7044
 
7020
7045
  // src/lib/output.capture.ts
7021
7046
  import { Writable } from "stream";
@@ -7431,13 +7456,13 @@ class TerminalConsole extends EventEmitter5 {
7431
7456
  }
7432
7457
  if (typeof arg === "object" && arg !== null) {
7433
7458
  try {
7434
- return util.inspect(arg, { depth: 2 });
7459
+ return util2.inspect(arg, { depth: 2 });
7435
7460
  } catch (e) {
7436
7461
  return String(arg);
7437
7462
  }
7438
7463
  }
7439
7464
  try {
7440
- return util.inspect(arg, { depth: 2 });
7465
+ return util2.inspect(arg, { depth: 2 });
7441
7466
  } catch (e) {
7442
7467
  return String(arg);
7443
7468
  }
@@ -7911,6 +7936,8 @@ class CliRenderer extends EventEmitter6 {
7911
7936
  }, 100);
7912
7937
  }).then(() => {
7913
7938
  this.realStdoutWrite.call(this.stdout, `
7939
+ `.repeat(this._terminalHeight));
7940
+ this.realStdoutWrite.call(this.stdout, `
7914
7941
  === FATAL ERROR OCCURRED ===
7915
7942
  `);
7916
7943
  this.realStdoutWrite.call(this.stdout, `Console cache:
@@ -8744,7 +8771,7 @@ Error details:
8744
8771
  }
8745
8772
  }
8746
8773
 
8747
- export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, TrackedNode, createTrackedNode, nonAlphanumericKeys, parseKeypress, KeyHandler, getKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, DebugOverlayCorner, createTextAttributes, 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, tn, 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, ensureRenderable, wrapWithDelegates, instantiate, delegate, LayoutEvents, RenderableEvents, isValidPercentage, isMarginType, isPaddingType, isPositionType, isPositionTypeType, isOverflowType, isDimensionType, isFlexBasisType, isSizeType, isRenderable, Renderable, RootRenderable, capture, ConsolePosition, TerminalConsole, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, CliRenderer };
8774
+ export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, TrackedNode, createTrackedNode, nonAlphanumericKeys, parseKeypress, KeyHandler, getKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, DebugOverlayCorner, createTextAttributes, 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, tn, 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, LayoutEvents, RenderableEvents, isValidPercentage, isMarginType, isPaddingType, isPositionType, isPositionTypeType, isOverflowType, isDimensionType, isFlexBasisType, isSizeType, isRenderable, Renderable, RootRenderable, capture, ConsolePosition, TerminalConsole, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, CliRenderer };
8748
8775
 
8749
- //# debugId=7F86A4475F17242C64756E2164756E21
8750
- //# sourceMappingURL=index-vg0fxf54.js.map
8776
+ //# debugId=5CD4CD088CC2988464756E2164756E21
8777
+ //# sourceMappingURL=index-grak7z0n.js.map