@opentui/core 0.1.87 → 0.1.88

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.
Files changed (101) hide show
  1. package/3d/ThreeRenderable.d.ts +4 -4
  2. package/3d/WGPURenderer.d.ts +4 -4
  3. package/3d/animation/ExplodingSpriteEffect.d.ts +2 -2
  4. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +3 -3
  5. package/3d/animation/SpriteAnimator.d.ts +1 -1
  6. package/3d/animation/SpriteParticleGenerator.d.ts +1 -1
  7. package/3d/canvas.d.ts +2 -2
  8. package/3d/index.d.ts +12 -12
  9. package/3d/physics/PlanckPhysicsAdapter.d.ts +1 -1
  10. package/3d/physics/RapierPhysicsAdapter.d.ts +1 -1
  11. package/3d.d.ts +1 -1
  12. package/3d.js +1 -1
  13. package/3d.js.map +12 -12
  14. package/Renderable.d.ts +7 -7
  15. package/animation/Timeline.d.ts +1 -1
  16. package/buffer.d.ts +6 -6
  17. package/console.d.ts +7 -4
  18. package/edit-buffer.d.ts +4 -4
  19. package/editor-view.d.ts +3 -3
  20. package/index-e4hzc2j2.js +113 -0
  21. package/index-e4hzc2j2.js.map +10 -0
  22. package/{index-0wbvecnk.js → index-nkrr8a4c.js} +128 -59
  23. package/index-nkrr8a4c.js.map +64 -0
  24. package/index-nyw5p3ep.js +12619 -0
  25. package/index-nyw5p3ep.js.map +43 -0
  26. package/index.d.ts +20 -17
  27. package/index.js +78 -11590
  28. package/index.js.map +3 -35
  29. package/lib/KeyHandler.d.ts +7 -4
  30. package/lib/ascii.font.d.ts +2 -2
  31. package/lib/border.d.ts +1 -1
  32. package/lib/clipboard.d.ts +1 -1
  33. package/lib/clock.d.ts +4 -0
  34. package/lib/extmarks-history.d.ts +1 -1
  35. package/lib/extmarks.d.ts +2 -2
  36. package/lib/hast-styled-text.d.ts +3 -3
  37. package/lib/index.d.ts +21 -20
  38. package/lib/objects-in-viewport.d.ts +1 -1
  39. package/lib/parse.keypress-kitty.d.ts +1 -1
  40. package/lib/paste.d.ts +7 -0
  41. package/lib/renderable.validations.d.ts +2 -2
  42. package/lib/selection.d.ts +2 -2
  43. package/lib/stdin-parser.d.ts +4 -2
  44. package/lib/styled-text.d.ts +2 -2
  45. package/lib/terminal-palette.d.ts +4 -2
  46. package/lib/tree-sitter/client.d.ts +1 -1
  47. package/lib/tree-sitter/default-parsers.d.ts +1 -1
  48. package/lib/tree-sitter/index.d.ts +7 -7
  49. package/lib/tree-sitter-styled-text.d.ts +5 -5
  50. package/package.json +17 -7
  51. package/parser.worker.js.map +1 -1
  52. package/plugins/core-slot.d.ts +72 -0
  53. package/plugins/registry.d.ts +38 -0
  54. package/plugins/types.d.ts +34 -0
  55. package/post/filters.d.ts +1 -1
  56. package/renderables/ASCIIFont.d.ts +6 -6
  57. package/renderables/Box.d.ts +5 -5
  58. package/renderables/Code.d.ts +10 -8
  59. package/renderables/Diff.d.ts +7 -7
  60. package/renderables/EditBufferRenderable.d.ts +8 -8
  61. package/renderables/FrameBuffer.d.ts +3 -3
  62. package/renderables/Input.d.ts +3 -3
  63. package/renderables/LineNumberRenderable.d.ts +4 -4
  64. package/renderables/Markdown.d.ts +9 -9
  65. package/renderables/ScrollBar.d.ts +6 -6
  66. package/renderables/ScrollBox.d.ts +9 -8
  67. package/renderables/Select.d.ts +7 -7
  68. package/renderables/Slider.d.ts +1 -1
  69. package/renderables/TabSelect.d.ts +6 -6
  70. package/renderables/Text.d.ts +7 -7
  71. package/renderables/TextBufferRenderable.d.ts +9 -9
  72. package/renderables/TextNode.d.ts +6 -6
  73. package/renderables/Textarea.d.ts +7 -7
  74. package/renderables/__tests__/renderable-test-utils.d.ts +8 -3
  75. package/renderables/composition/VRenderable.d.ts +3 -3
  76. package/renderables/composition/constructs.d.ts +14 -14
  77. package/renderables/composition/vnode.d.ts +2 -2
  78. package/renderables/index.d.ts +22 -22
  79. package/renderer.d.ts +16 -15
  80. package/runtime-plugin-support.d.ts +3 -0
  81. package/runtime-plugin-support.js +29 -0
  82. package/runtime-plugin-support.js.map +10 -0
  83. package/runtime-plugin.d.ts +11 -0
  84. package/runtime-plugin.js +16 -0
  85. package/runtime-plugin.js.map +9 -0
  86. package/syntax-style.d.ts +2 -2
  87. package/testing/mock-keys.d.ts +2 -1
  88. package/testing/mock-mouse.d.ts +1 -1
  89. package/testing/mock-tree-sitter-client.d.ts +2 -2
  90. package/testing/test-recorder.d.ts +1 -1
  91. package/testing/test-renderer.d.ts +4 -4
  92. package/testing.d.ts +6 -6
  93. package/testing.js +12 -7
  94. package/testing.js.map +7 -7
  95. package/text-buffer-view.d.ts +3 -3
  96. package/text-buffer.d.ts +5 -5
  97. package/types.d.ts +4 -4
  98. package/utils.d.ts +1 -1
  99. package/zig-structs.d.ts +1 -1
  100. package/zig.d.ts +5 -5
  101. package/index-0wbvecnk.js.map +0 -63
@@ -1850,11 +1850,14 @@ class KeyEvent {
1850
1850
  }
1851
1851
 
1852
1852
  class PasteEvent {
1853
- text;
1853
+ type = "paste";
1854
+ bytes;
1855
+ metadata;
1854
1856
  _defaultPrevented = false;
1855
1857
  _propagationStopped = false;
1856
- constructor(text) {
1857
- this.text = text;
1858
+ constructor(bytes, metadata) {
1859
+ this.bytes = bytes;
1860
+ this.metadata = metadata;
1858
1861
  }
1859
1862
  get defaultPrevented() {
1860
1863
  return this._defaultPrevented;
@@ -1890,10 +1893,9 @@ class KeyHandler extends EventEmitter {
1890
1893
  }
1891
1894
  return true;
1892
1895
  }
1893
- processPaste(data) {
1896
+ processPaste(bytes, metadata) {
1894
1897
  try {
1895
- const cleanedData = Bun.stripANSI(data);
1896
- this.emit("paste", new PasteEvent(cleanedData));
1898
+ this.emit("paste", new PasteEvent(bytes, metadata));
1897
1899
  } catch (error) {
1898
1900
  console.error(`[KeyHandler] Error processing paste:`, error);
1899
1901
  }
@@ -5320,6 +5322,12 @@ class SystemClock {
5320
5322
  clearTimeout(handle) {
5321
5323
  globalThis.clearTimeout(handle);
5322
5324
  }
5325
+ setInterval(fn, delayMs) {
5326
+ return globalThis.setInterval(fn, delayMs);
5327
+ }
5328
+ clearInterval(handle) {
5329
+ globalThis.clearInterval(handle);
5330
+ }
5323
5331
  }
5324
5332
 
5325
5333
  // src/lib/parse.keypress.ts
@@ -5345,6 +5353,12 @@ var kittyKeyMap = {
5345
5353
  57355: "pagedown",
5346
5354
  57356: "home",
5347
5355
  57357: "end",
5356
+ 57358: "capslock",
5357
+ 57359: "scrolllock",
5358
+ 57360: "numlock",
5359
+ 57361: "printscreen",
5360
+ 57362: "pause",
5361
+ 57363: "menu",
5348
5362
  57364: "f1",
5349
5363
  57365: "f2",
5350
5364
  57366: "f3",
@@ -5397,6 +5411,18 @@ var kittyKeyMap = {
5397
5411
  57413: "kpplus",
5398
5412
  57414: "kpenter",
5399
5413
  57415: "kpequal",
5414
+ 57416: "kpseparator",
5415
+ 57417: "kpleft",
5416
+ 57418: "kpright",
5417
+ 57419: "kpup",
5418
+ 57420: "kpdown",
5419
+ 57421: "kppageup",
5420
+ 57422: "kppagedown",
5421
+ 57423: "kphome",
5422
+ 57424: "kpend",
5423
+ 57425: "kpinsert",
5424
+ 57426: "kpdelete",
5425
+ 57427: "clear",
5400
5426
  57428: "mediaplay",
5401
5427
  57429: "mediapause",
5402
5428
  57430: "mediaplaypause",
@@ -5444,9 +5470,9 @@ var functionalKeyMap = {
5444
5470
  D: "left",
5445
5471
  H: "home",
5446
5472
  F: "end",
5473
+ E: "clear",
5447
5474
  P: "f1",
5448
5475
  Q: "f2",
5449
- R: "f3",
5450
5476
  S: "f4"
5451
5477
  };
5452
5478
  var tildeKeyMap = {
@@ -5469,7 +5495,9 @@ var tildeKeyMap = {
5469
5495
  "20": "f9",
5470
5496
  "21": "f10",
5471
5497
  "23": "f11",
5472
- "24": "f12"
5498
+ "24": "f12",
5499
+ "29": "menu",
5500
+ "57427": "clear"
5473
5501
  };
5474
5502
  function parseKittySpecialKey(sequence) {
5475
5503
  const specialKeyRe = /^\x1b\[(\d+);(\d+):(\d+)([A-Z~])$/;
@@ -5584,6 +5612,8 @@ function parseKittyKeyboard(sequence) {
5584
5612
  if (knownKey) {
5585
5613
  key.name = knownKey;
5586
5614
  key.code = `[${codepoint}u`;
5615
+ } else if (codepoint === 0) {
5616
+ key.name = "";
5587
5617
  } else {
5588
5618
  if (codepoint > 0 && codepoint <= 1114111) {
5589
5619
  const char = String.fromCodePoint(codepoint);
@@ -5649,8 +5679,14 @@ function parseKittyKeyboard(sequence) {
5649
5679
  text = " ";
5650
5680
  }
5651
5681
  if (text) {
5682
+ if (codepoint === 0) {
5683
+ key.name = text;
5684
+ }
5652
5685
  key.sequence = text;
5653
5686
  }
5687
+ if (codepoint === 0 && text === "") {
5688
+ return null;
5689
+ }
5654
5690
  return key;
5655
5691
  }
5656
5692
 
@@ -5679,6 +5715,8 @@ var keyName = {
5679
5715
  "[21~": "f10",
5680
5716
  "[23~": "f11",
5681
5717
  "[24~": "f12",
5718
+ "[29~": "menu",
5719
+ "[57427~": "clear",
5682
5720
  "[A": "up",
5683
5721
  "[B": "down",
5684
5722
  "[C": "right",
@@ -5686,6 +5724,9 @@ var keyName = {
5686
5724
  "[E": "clear",
5687
5725
  "[F": "end",
5688
5726
  "[H": "home",
5727
+ "[P": "f1",
5728
+ "[Q": "f2",
5729
+ "[S": "f4",
5689
5730
  OA: "up",
5690
5731
  OB: "down",
5691
5732
  OC: "right",
@@ -6981,10 +7022,25 @@ function decodeUtf8(bytes) {
6981
7022
  function createPasteCollector() {
6982
7023
  return {
6983
7024
  tail: EMPTY_BYTES,
6984
- decoder: new TextDecoder,
6985
- parts: []
7025
+ parts: [],
7026
+ totalLength: 0
6986
7027
  };
6987
7028
  }
7029
+ function joinPasteBytes(parts, totalLength) {
7030
+ if (totalLength === 0) {
7031
+ return EMPTY_BYTES;
7032
+ }
7033
+ if (parts.length === 1) {
7034
+ return parts[0];
7035
+ }
7036
+ const bytes = new Uint8Array(totalLength);
7037
+ let offset = 0;
7038
+ for (const part of parts) {
7039
+ bytes.set(part, offset);
7040
+ offset += part.length;
7041
+ }
7042
+ return bytes;
7043
+ }
6988
7044
 
6989
7045
  class StdinParser {
6990
7046
  pending = new ByteQueue(INITIAL_PENDING_CAPACITY);
@@ -7578,14 +7634,10 @@ class StdinParser {
7578
7634
  const combined = concatBytes(paste.tail, chunk);
7579
7635
  const endIndex = indexOfBytes(combined, BRACKETED_PASTE_END);
7580
7636
  if (endIndex !== -1) {
7581
- this.pushPasteText(combined.subarray(0, endIndex));
7582
- const tailText = paste.decoder.decode();
7583
- if (tailText.length > 0) {
7584
- paste.parts.push(tailText);
7585
- }
7637
+ this.pushPasteBytes(combined.subarray(0, endIndex));
7586
7638
  this.events.push({
7587
7639
  type: "paste",
7588
- text: paste.parts.join("")
7640
+ bytes: joinPasteBytes(paste.parts, paste.totalLength)
7589
7641
  });
7590
7642
  this.paste = null;
7591
7643
  return combined.subarray(endIndex + BRACKETED_PASTE_END.length);
@@ -7593,19 +7645,17 @@ class StdinParser {
7593
7645
  const keep = Math.min(BRACKETED_PASTE_END.length - 1, combined.length);
7594
7646
  const stableLength = combined.length - keep;
7595
7647
  if (stableLength > 0) {
7596
- this.pushPasteText(combined.subarray(0, stableLength));
7648
+ this.pushPasteBytes(combined.subarray(0, stableLength));
7597
7649
  }
7598
- paste.tail = combined.slice(stableLength);
7650
+ paste.tail = Uint8Array.from(combined.subarray(stableLength));
7599
7651
  return EMPTY_BYTES;
7600
7652
  }
7601
- pushPasteText(bytes) {
7653
+ pushPasteBytes(bytes) {
7602
7654
  if (bytes.length === 0) {
7603
7655
  return;
7604
7656
  }
7605
- const text = this.paste.decoder.decode(bytes, { stream: true });
7606
- if (text.length > 0) {
7607
- this.paste.parts.push(text);
7608
- }
7657
+ this.paste.parts.push(Uint8Array.from(bytes));
7658
+ this.paste.totalLength += bytes.length;
7609
7659
  }
7610
7660
  reconcileTimeoutState() {
7611
7661
  if (!this.armTimeouts) {
@@ -9751,6 +9801,7 @@ function createExtmarksController(editBuffer, editorView) {
9751
9801
  }
9752
9802
 
9753
9803
  // src/lib/terminal-palette.ts
9804
+ var SYSTEM_CLOCK2 = new SystemClock;
9754
9805
  var OSC4_RESPONSE = /\x1b]4;(\d+);(?:(?:rgb:)([0-9a-fA-F]+)\/([0-9a-fA-F]+)\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\x07|\x1b\\)/g;
9755
9806
  var OSC_SPECIAL_RESPONSE = /\x1b](\d+);(?:(?:rgb:)([0-9a-fA-F]+)\/([0-9a-fA-F]+)\/([0-9a-fA-F]+)|#([0-9a-fA-F]{6}))(?:\x07|\x1b\\)/g;
9756
9807
  function scaleComponent(comp) {
@@ -9777,12 +9828,14 @@ class TerminalPalette {
9777
9828
  activeQuerySessions = [];
9778
9829
  inLegacyTmux;
9779
9830
  oscSource;
9780
- constructor(stdin, stdout, writeFn, isLegacyTmux, oscSource) {
9831
+ clock;
9832
+ constructor(stdin, stdout, writeFn, isLegacyTmux, oscSource, clock) {
9781
9833
  this.stdin = stdin;
9782
9834
  this.stdout = stdout;
9783
9835
  this.writeFn = writeFn || ((data) => stdout.write(data));
9784
9836
  this.inLegacyTmux = isLegacyTmux ?? false;
9785
9837
  this.oscSource = oscSource;
9838
+ this.clock = clock ?? SYSTEM_CLOCK2;
9786
9839
  }
9787
9840
  writeOsc(osc) {
9788
9841
  const data = this.inLegacyTmux ? wrapForTmux(osc) : osc;
@@ -9814,7 +9867,7 @@ class TerminalPalette {
9814
9867
  return;
9815
9868
  closed = true;
9816
9869
  for (const timer of timers) {
9817
- clearTimeout(timer);
9870
+ this.clock.clearTimeout(timer);
9818
9871
  }
9819
9872
  timers.clear();
9820
9873
  for (const unsubscribe of subscriptions) {
@@ -9828,16 +9881,16 @@ class TerminalPalette {
9828
9881
  this.activeQuerySessions.push(cleanup);
9829
9882
  return {
9830
9883
  setTimer: (fn, ms) => {
9831
- const timer = setTimeout(fn, ms);
9884
+ const timer = this.clock.setTimeout(fn, ms);
9832
9885
  timers.add(timer);
9833
9886
  return timer;
9834
9887
  },
9835
9888
  resetTimer: (existing, fn, ms) => {
9836
9889
  if (existing) {
9837
- clearTimeout(existing);
9890
+ this.clock.clearTimeout(existing);
9838
9891
  timers.delete(existing);
9839
9892
  }
9840
- const timer = setTimeout(fn, ms);
9893
+ const timer = this.clock.setTimeout(fn, ms);
9841
9894
  timers.add(timer);
9842
9895
  return timer;
9843
9896
  },
@@ -10027,8 +10080,17 @@ class TerminalPalette {
10027
10080
  };
10028
10081
  }
10029
10082
  }
10030
- function createTerminalPalette(stdin, stdout, writeFn, isLegacyTmux, oscSource) {
10031
- return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux, oscSource);
10083
+ function createTerminalPalette(stdin, stdout, writeFn, isLegacyTmux, oscSource, clock) {
10084
+ return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux, oscSource, clock);
10085
+ }
10086
+
10087
+ // src/lib/paste.ts
10088
+ var PASTE_TEXT_DECODER = new TextDecoder;
10089
+ function decodePasteBytes(bytes) {
10090
+ return PASTE_TEXT_DECODER.decode(bytes);
10091
+ }
10092
+ function stripAnsiSequences(text) {
10093
+ return Bun.stripANSI(text);
10032
10094
  }
10033
10095
 
10034
10096
  // src/lib/detect-links.ts
@@ -15635,6 +15697,7 @@ class TerminalConsole extends EventEmitter7 {
15635
15697
  height: 0
15636
15698
  };
15637
15699
  _autoScrollInterval = null;
15700
+ clock;
15638
15701
  _keyBindingsMap;
15639
15702
  _keyAliasMap;
15640
15703
  _keyBindings;
@@ -15674,6 +15737,7 @@ class TerminalConsole extends EventEmitter7 {
15674
15737
  constructor(renderer, options = {}) {
15675
15738
  super();
15676
15739
  this.renderer = renderer;
15740
+ this.clock = options.clock ?? new SystemClock;
15677
15741
  this.options = { ...DEFAULT_CONSOLE_OPTIONS, ...options };
15678
15742
  this.keyHandler = this.handleKeyPress.bind(this);
15679
15743
  this._debugModeEnabled = this.options.startInDebugMode;
@@ -16229,13 +16293,13 @@ class TerminalConsole extends EventEmitter7 {
16229
16293
  }
16230
16294
  stopAutoScroll() {
16231
16295
  if (this._autoScrollInterval !== null) {
16232
- clearInterval(this._autoScrollInterval);
16296
+ this.clock.clearInterval(this._autoScrollInterval);
16233
16297
  this._autoScrollInterval = null;
16234
16298
  }
16235
16299
  }
16236
16300
  startAutoScroll(direction) {
16237
16301
  this.stopAutoScroll();
16238
- this._autoScrollInterval = setInterval(() => {
16302
+ this._autoScrollInterval = this.clock.setInterval(() => {
16239
16303
  if (direction === "up") {
16240
16304
  if (this.scrollTopIndex > 0) {
16241
16305
  this.scrollTopIndex--;
@@ -16813,6 +16877,7 @@ class CliRenderer extends EventEmitter8 {
16813
16877
  postProcessFns = [];
16814
16878
  backgroundColor = RGBA.fromInts(0, 0, 0, 0);
16815
16879
  waitingForPixelResolution = false;
16880
+ clock;
16816
16881
  rendering = false;
16817
16882
  renderingNative = false;
16818
16883
  renderTimeout = null;
@@ -17016,6 +17081,7 @@ Captured output:
17016
17081
  }
17017
17082
  });
17018
17083
  this.addExitListeners();
17084
+ this.clock = config.clock ?? new SystemClock;
17019
17085
  const stdinParserMaxBufferBytes = config.stdinParserMaxBufferBytes ?? DEFAULT_STDIN_PARSER_MAX_BUFFER_BYTES;
17020
17086
  this.stdinParser = new StdinParser({
17021
17087
  timeoutMs: 10,
@@ -17025,9 +17091,12 @@ Captured output:
17025
17091
  this.drainStdinParser();
17026
17092
  },
17027
17093
  useKittyKeyboard: useKittyForParsing,
17028
- clock: config.stdinParserClock
17094
+ clock: this.clock
17095
+ });
17096
+ this._console = new TerminalConsole(this, {
17097
+ ...config.consoleOptions ?? {},
17098
+ clock: this.clock
17029
17099
  });
17030
- this._console = new TerminalConsole(this, config.consoleOptions);
17031
17100
  this.useConsole = config.useConsole ?? true;
17032
17101
  this._openConsoleOnError = config.openConsoleOnError ?? true;
17033
17102
  this._onDestroy = config.onDestroy;
@@ -17141,14 +17210,14 @@ Captured output:
17141
17210
  }
17142
17211
  if (!this.updateScheduled && !this.renderTimeout) {
17143
17212
  this.updateScheduled = true;
17144
- const now = Date.now();
17213
+ const now = this.clock.now();
17145
17214
  const elapsed = now - this.lastTime;
17146
17215
  const delay = Math.max(this.minTargetFrameTime - elapsed, 0);
17147
17216
  if (delay === 0) {
17148
17217
  process.nextTick(() => this.activateFrame());
17149
17218
  return;
17150
17219
  }
17151
- setTimeout(() => this.activateFrame(), delay);
17220
+ this.clock.setTimeout(() => this.activateFrame(), delay);
17152
17221
  }
17153
17222
  }
17154
17223
  async activateFrame() {
@@ -17361,7 +17430,7 @@ Captured output:
17361
17430
  this.automaticMemorySnapshot = true;
17362
17431
  }
17363
17432
  }
17364
- this.capabilityTimeoutId = setTimeout(() => {
17433
+ this.capabilityTimeoutId = this.clock.setTimeout(() => {
17365
17434
  this.capabilityTimeoutId = null;
17366
17435
  this.removeInputHandler(this.capabilityHandler);
17367
17436
  }, 5000);
@@ -17474,7 +17543,7 @@ Captured output:
17474
17543
  this.dispatchSequenceHandlers(event.raw);
17475
17544
  return;
17476
17545
  case "paste":
17477
- this._keyHandler.processPaste(event.text);
17546
+ this._keyHandler.processPaste(event.bytes, event.metadata);
17478
17547
  return;
17479
17548
  case "response":
17480
17549
  if (event.protocol === "osc") {
@@ -17712,13 +17781,13 @@ Captured output:
17712
17781
  }
17713
17782
  startMemorySnapshotTimer() {
17714
17783
  this.stopMemorySnapshotTimer();
17715
- this.memorySnapshotTimer = setInterval(() => {
17784
+ this.memorySnapshotTimer = this.clock.setInterval(() => {
17716
17785
  this.takeMemorySnapshot();
17717
17786
  }, this.memorySnapshotInterval);
17718
17787
  }
17719
17788
  stopMemorySnapshotTimer() {
17720
17789
  if (this.memorySnapshotTimer) {
17721
- clearInterval(this.memorySnapshotTimer);
17790
+ this.clock.clearInterval(this.memorySnapshotTimer);
17722
17791
  this.memorySnapshotTimer = null;
17723
17792
  }
17724
17793
  }
@@ -17727,7 +17796,7 @@ Captured output:
17727
17796
  if (this._isRunning && interval > 0) {
17728
17797
  this.startMemorySnapshotTimer();
17729
17798
  } else if (interval <= 0 && this.memorySnapshotTimer) {
17730
- clearInterval(this.memorySnapshotTimer);
17799
+ this.clock.clearInterval(this.memorySnapshotTimer);
17731
17800
  this.memorySnapshotTimer = null;
17732
17801
  }
17733
17802
  }
@@ -17739,10 +17808,10 @@ Captured output:
17739
17808
  return;
17740
17809
  }
17741
17810
  if (this.resizeTimeoutId !== null) {
17742
- clearTimeout(this.resizeTimeoutId);
17811
+ this.clock.clearTimeout(this.resizeTimeoutId);
17743
17812
  this.resizeTimeoutId = null;
17744
17813
  }
17745
- this.resizeTimeoutId = setTimeout(() => {
17814
+ this.resizeTimeoutId = this.clock.setTimeout(() => {
17746
17815
  this.resizeTimeoutId = null;
17747
17816
  this.processResize(width, height);
17748
17817
  }, this.resizeDebounceDelay);
@@ -17955,7 +18024,7 @@ Captured output:
17955
18024
  internalPause() {
17956
18025
  this._isRunning = false;
17957
18026
  if (this.renderTimeout) {
17958
- clearTimeout(this.renderTimeout);
18027
+ this.clock.clearTimeout(this.renderTimeout);
17959
18028
  this.renderTimeout = null;
17960
18029
  }
17961
18030
  if (!this.rendering) {
@@ -17970,11 +18039,11 @@ Captured output:
17970
18039
  if (this.isRunning && !this._isDestroyed) {
17971
18040
  this._isRunning = false;
17972
18041
  if (this.memorySnapshotTimer) {
17973
- clearInterval(this.memorySnapshotTimer);
18042
+ this.clock.clearInterval(this.memorySnapshotTimer);
17974
18043
  this.memorySnapshotTimer = null;
17975
18044
  }
17976
18045
  if (this.renderTimeout) {
17977
- clearTimeout(this.renderTimeout);
18046
+ this.clock.clearTimeout(this.renderTimeout);
17978
18047
  this.renderTimeout = null;
17979
18048
  }
17980
18049
  if (!this.rendering) {
@@ -18005,15 +18074,15 @@ Captured output:
18005
18074
  capture.removeListener("write", this.captureCallback);
18006
18075
  this.removeExitListeners();
18007
18076
  if (this.resizeTimeoutId !== null) {
18008
- clearTimeout(this.resizeTimeoutId);
18077
+ this.clock.clearTimeout(this.resizeTimeoutId);
18009
18078
  this.resizeTimeoutId = null;
18010
18079
  }
18011
18080
  if (this.capabilityTimeoutId !== null) {
18012
- clearTimeout(this.capabilityTimeoutId);
18081
+ this.clock.clearTimeout(this.capabilityTimeoutId);
18013
18082
  this.capabilityTimeoutId = null;
18014
18083
  }
18015
18084
  if (this.memorySnapshotTimer) {
18016
- clearInterval(this.memorySnapshotTimer);
18085
+ this.clock.clearInterval(this.memorySnapshotTimer);
18017
18086
  }
18018
18087
  if (this._paletteDetector) {
18019
18088
  this._paletteDetector.cleanup();
@@ -18023,7 +18092,7 @@ Captured output:
18023
18092
  this._cachedPalette = null;
18024
18093
  this.emit("destroy" /* DESTROY */);
18025
18094
  if (this.renderTimeout) {
18026
- clearTimeout(this.renderTimeout);
18095
+ this.clock.clearTimeout(this.renderTimeout);
18027
18096
  this.renderTimeout = null;
18028
18097
  }
18029
18098
  this._isRunning = false;
@@ -18060,7 +18129,7 @@ Captured output:
18060
18129
  startRenderLoop() {
18061
18130
  if (!this._isRunning)
18062
18131
  return;
18063
- this.lastTime = Date.now();
18132
+ this.lastTime = this.clock.now();
18064
18133
  this.frameCount = 0;
18065
18134
  this.lastFpsTime = this.lastTime;
18066
18135
  this.currentFps = 0;
@@ -18072,11 +18141,11 @@ Captured output:
18072
18141
  this.renderTimeout = null;
18073
18142
  this.rendering = true;
18074
18143
  if (this.renderTimeout) {
18075
- clearTimeout(this.renderTimeout);
18144
+ this.clock.clearTimeout(this.renderTimeout);
18076
18145
  this.renderTimeout = null;
18077
18146
  }
18078
18147
  try {
18079
- const now = Date.now();
18148
+ const now = this.clock.now();
18080
18149
  const elapsed = now - this.lastTime;
18081
18150
  const deltaTime = elapsed;
18082
18151
  this.lastTime = now;
@@ -18127,12 +18196,12 @@ Captured output:
18127
18196
  const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime;
18128
18197
  const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime));
18129
18198
  this.immediateRerenderRequested = false;
18130
- this.renderTimeout = setTimeout(() => {
18199
+ this.renderTimeout = this.clock.setTimeout(() => {
18131
18200
  this.renderTimeout = null;
18132
18201
  this.loop();
18133
18202
  }, delay);
18134
18203
  } else {
18135
- clearTimeout(this.renderTimeout);
18204
+ this.clock.clearTimeout(this.renderTimeout);
18136
18205
  this.renderTimeout = null;
18137
18206
  }
18138
18207
  }
@@ -18329,7 +18398,7 @@ Captured output:
18329
18398
  const isLegacyTmux = this.capabilities?.terminal?.name?.toLowerCase()?.includes("tmux") && this.capabilities?.terminal?.version?.localeCompare("3.6") < 0;
18330
18399
  this._paletteDetector = createTerminalPalette(this.stdin, this.stdout, this.writeOut.bind(this), isLegacyTmux, {
18331
18400
  subscribeOsc: this.subscribeOsc.bind(this)
18332
- });
18401
+ }, this.clock);
18333
18402
  }
18334
18403
  this._paletteDetectionPromise = this._paletteDetector.detect(options).then((result) => {
18335
18404
  this._cachedPalette = result;
@@ -18340,7 +18409,7 @@ Captured output:
18340
18409
  }
18341
18410
  }
18342
18411
 
18343
- export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, exports_src, isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, 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, SystemClock, nonAlphanumericKeys, parseKeypress, LinearScrollAccel, MacOSScrollAccel, 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, StdinParser, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, detectLinks, TextBuffer, SpanInfoStruct, 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 };
18412
+ export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, exports_src, isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, 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, SystemClock, nonAlphanumericKeys, parseKeypress, LinearScrollAccel, MacOSScrollAccel, 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, StdinParser, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, decodePasteBytes, stripAnsiSequences, detectLinks, TextBuffer, SpanInfoStruct, 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 };
18344
18413
 
18345
- //# debugId=EFEF7A9F3BA3925B64756E2164756E21
18346
- //# sourceMappingURL=index-0wbvecnk.js.map
18414
+ //# debugId=CCC74025BA5612C764756E2164756E21
18415
+ //# sourceMappingURL=index-nkrr8a4c.js.map