@opentui/core 0.1.97 → 0.1.99

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-kgg0v67t.js";
9
+ } from "./index-8978gvk3.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
@@ -122,6 +122,8 @@ export declare abstract class Renderable extends BaseRenderable {
122
122
  protected _translateY: number;
123
123
  protected _x: number;
124
124
  protected _y: number;
125
+ protected _screenX: number;
126
+ protected _screenY: number;
125
127
  protected _width: number | "auto" | `${number}%`;
126
128
  protected _height: number | "auto" | `${number}%`;
127
129
  protected _widthValue: number;
@@ -132,6 +134,7 @@ export declare abstract class Renderable extends BaseRenderable {
132
134
  protected frameBuffer: OptimizedBuffer | null;
133
135
  protected _focusable: boolean;
134
136
  protected _focused: boolean;
137
+ protected _hasFocusedDescendant: boolean;
135
138
  protected keypressHandler: ((key: KeyEvent) => void) | null;
136
139
  protected pasteHandler: ((event: PasteEvent) => void) | null;
137
140
  private _live;
@@ -174,8 +177,10 @@ export declare abstract class Renderable extends BaseRenderable {
174
177
  getSelectedText(): string;
175
178
  shouldStartSelection(x: number, y: number): boolean;
176
179
  focus(): void;
180
+ protected propagateFocusChange(hasFocus: boolean): void;
177
181
  blur(): void;
178
182
  get focused(): boolean;
183
+ get hasFocusedDescendant(): boolean;
179
184
  get live(): boolean;
180
185
  get liveCount(): number;
181
186
  set live(value: boolean);
@@ -188,6 +193,8 @@ export declare abstract class Renderable extends BaseRenderable {
188
193
  set translateX(value: number);
189
194
  get translateY(): number;
190
195
  set translateY(value: number);
196
+ get screenX(): number;
197
+ get screenY(): number;
191
198
  get x(): number;
192
199
  set x(value: number);
193
200
  get top(): number | "auto" | `${number}%` | undefined;
@@ -263,6 +270,7 @@ export declare abstract class Renderable extends BaseRenderable {
263
270
  getChildrenCount(): number;
264
271
  updateLayout(deltaTime: number, renderList?: RenderCommand[]): void;
265
272
  render(buffer: OptimizedBuffer, deltaTime: number): void;
273
+ protected _hasVisibleChildFilter(): boolean;
266
274
  protected _getVisibleChildren(): number[];
267
275
  protected onUpdate(deltaTime: number): void;
268
276
  protected getScissorRect(): {
package/console.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { EventEmitter } from "events";
2
- import type { CliRenderer, ColorInput, MouseEvent } from "./index.js";
2
+ import type { CliRenderer, MouseEvent } from "./renderer.js";
3
+ import type { ColorInput } from "./lib/RGBA.js";
3
4
  import { OptimizedBuffer } from "./buffer.js";
4
5
  import { type Clock } from "./lib/clock.js";
5
6
  import { Capture } from "./lib/output.capture.js";
@@ -5788,6 +5788,18 @@ var isShiftKey = (code) => {
5788
5788
  var isCtrlKey = (code) => {
5789
5789
  return ["Oa", "Ob", "Oc", "Od", "Oe", "[2^", "[3^", "[5^", "[6^", "[7^", "[8^"].includes(code);
5790
5790
  };
5791
+ var getCtrlKeyName = (charCode) => {
5792
+ if (charCode === 0) {
5793
+ return "space";
5794
+ }
5795
+ if (charCode >= 1 && charCode <= 26) {
5796
+ return String.fromCharCode(charCode + 97 - 1);
5797
+ }
5798
+ if (charCode >= 28 && charCode <= 31) {
5799
+ return String.fromCharCode(charCode + 64);
5800
+ }
5801
+ return;
5802
+ };
5791
5803
  var modifyOtherKeysRe = /^\x1b\[27;(\d+);(\d+)~$/;
5792
5804
  var parseKeypress = (s = "", options = {}) => {
5793
5805
  let parts;
@@ -5852,6 +5864,8 @@ var parseKeypress = (s = "", options = {}) => {
5852
5864
  source: "raw"
5853
5865
  };
5854
5866
  key.sequence = key.sequence || s || key.name;
5867
+ const ctrlKeyName = s.length === 1 ? getCtrlKeyName(s.charCodeAt(0)) : undefined;
5868
+ const metaCtrlKeyName = s.length === 2 && s[0] === "\x1B" ? getCtrlKeyName(s.charCodeAt(1)) : undefined;
5855
5869
  if (options.useKittyKeyboard) {
5856
5870
  const kittyResult = parseKittyKeyboard(s);
5857
5871
  if (kittyResult) {
@@ -5907,11 +5921,8 @@ var parseKeypress = (s = "", options = {}) => {
5907
5921
  } else if (s === " " || s === "\x1B ") {
5908
5922
  key.name = "space";
5909
5923
  key.meta = s.length === 2;
5910
- } else if (s === "\x00") {
5911
- key.name = "space";
5912
- key.ctrl = true;
5913
- } else if (s.length === 1 && s <= "\x1A") {
5914
- key.name = String.fromCharCode(s.charCodeAt(0) + 97 - 1);
5924
+ } else if (ctrlKeyName) {
5925
+ key.name = ctrlKeyName;
5915
5926
  key.ctrl = true;
5916
5927
  } else if (s.length === 1 && s >= "0" && s <= "9") {
5917
5928
  key.name = s;
@@ -5937,10 +5948,10 @@ var parseKeypress = (s = "", options = {}) => {
5937
5948
  } else {
5938
5949
  key.name = char;
5939
5950
  }
5940
- } else if (s.length === 2 && s[0] === "\x1B" && s[1] <= "\x1A") {
5951
+ } else if (metaCtrlKeyName) {
5941
5952
  key.meta = true;
5942
5953
  key.ctrl = true;
5943
- key.name = String.fromCharCode(s.charCodeAt(1) + 97 - 1);
5954
+ key.name = metaCtrlKeyName;
5944
5955
  } else if (parts = fnKeyRe.exec(s)) {
5945
5956
  const segs = [...s];
5946
5957
  if (segs[0] === "\x1B" && segs[1] === "\x1B") {
@@ -14638,6 +14649,8 @@ class Renderable extends BaseRenderable {
14638
14649
  _translateY = 0;
14639
14650
  _x = 0;
14640
14651
  _y = 0;
14652
+ _screenX = 0;
14653
+ _screenY = 0;
14641
14654
  _width;
14642
14655
  _height;
14643
14656
  _widthValue = 0;
@@ -14648,6 +14661,7 @@ class Renderable extends BaseRenderable {
14648
14661
  frameBuffer = null;
14649
14662
  _focusable = false;
14650
14663
  _focused = false;
14664
+ _hasFocusedDescendant = false;
14651
14665
  keypressHandler = null;
14652
14666
  pasteHandler = null;
14653
14667
  _live = false;
@@ -14797,11 +14811,24 @@ class Renderable extends BaseRenderable {
14797
14811
  };
14798
14812
  this.ctx._internalKeyInput.onInternal("keypress", this.keypressHandler);
14799
14813
  this.ctx._internalKeyInput.onInternal("paste", this.pasteHandler);
14814
+ this.propagateFocusChange(true);
14800
14815
  this.emit("focused" /* FOCUSED */);
14801
14816
  }
14817
+ propagateFocusChange(hasFocus) {
14818
+ let parent = this.parent;
14819
+ while (parent) {
14820
+ if (parent._hasFocusedDescendant !== hasFocus) {
14821
+ parent._hasFocusedDescendant = hasFocus;
14822
+ parent.markDirty();
14823
+ }
14824
+ parent = parent.parent;
14825
+ }
14826
+ this.requestRender();
14827
+ }
14802
14828
  blur() {
14803
14829
  if (!this._focused || !this._focusable)
14804
14830
  return;
14831
+ this._ctx.blurRenderable(this);
14805
14832
  this._focused = false;
14806
14833
  this.requestRender();
14807
14834
  if (this.keypressHandler) {
@@ -14812,11 +14839,15 @@ class Renderable extends BaseRenderable {
14812
14839
  this.ctx._internalKeyInput.offInternal("paste", this.pasteHandler);
14813
14840
  this.pasteHandler = null;
14814
14841
  }
14842
+ this.propagateFocusChange(false);
14815
14843
  this.emit("blurred" /* BLURRED */);
14816
14844
  }
14817
14845
  get focused() {
14818
14846
  return this._focused;
14819
14847
  }
14848
+ get hasFocusedDescendant() {
14849
+ return this._hasFocusedDescendant;
14850
+ }
14820
14851
  get live() {
14821
14852
  return this._live;
14822
14853
  }
@@ -14859,6 +14890,8 @@ class Renderable extends BaseRenderable {
14859
14890
  if (this._translateX === value)
14860
14891
  return;
14861
14892
  this._translateX = value;
14893
+ const parentScreenX = this.parent ? this.parent._screenX : 0;
14894
+ this._screenX = parentScreenX + this._x + this._translateX;
14862
14895
  if (this.parent)
14863
14896
  this.parent.childrenPrimarySortDirty = true;
14864
14897
  this.requestRender();
@@ -14870,10 +14903,20 @@ class Renderable extends BaseRenderable {
14870
14903
  if (this._translateY === value)
14871
14904
  return;
14872
14905
  this._translateY = value;
14906
+ const parentScreenY = this.parent ? this.parent._screenY : 0;
14907
+ this._screenY = parentScreenY + this._y + this._translateY;
14873
14908
  if (this.parent)
14874
14909
  this.parent.childrenPrimarySortDirty = true;
14875
14910
  this.requestRender();
14876
14911
  }
14912
+ get screenX() {
14913
+ const parentScreenX = this.parent ? this.parent._screenX : 0;
14914
+ return parentScreenX + this._x + this._translateX;
14915
+ }
14916
+ get screenY() {
14917
+ const parentScreenY = this.parent ? this.parent._screenY : 0;
14918
+ return parentScreenY + this._y + this._translateY;
14919
+ }
14877
14920
  get x() {
14878
14921
  if (this.parent) {
14879
14922
  return this.parent.x + this._x + this._translateX;
@@ -14981,8 +15024,8 @@ class Renderable extends BaseRenderable {
14981
15024
  const axis = dir === 2 || dir === 3 ? "x" : "y";
14982
15025
  const sorted = [...this._childrenInLayoutOrder];
14983
15026
  sorted.sort((a, b) => {
14984
- const va = axis === "y" ? a.y : a.x;
14985
- const vb = axis === "y" ? b.y : b.x;
15027
+ const va = axis === "y" ? a.screenY : a.screenX;
15028
+ const vb = axis === "y" ? b.screenY : b.screenX;
14986
15029
  return va - vb;
14987
15030
  });
14988
15031
  this.childrenSortedByPrimaryAxis = sorted;
@@ -15311,6 +15354,10 @@ class Renderable extends BaseRenderable {
15311
15354
  const oldHeight = this._heightValue;
15312
15355
  this._x = layout.left;
15313
15356
  this._y = layout.top;
15357
+ const parentScreenX = this.parent ? this.parent._screenX : 0;
15358
+ const parentScreenY = this.parent ? this.parent._screenY : 0;
15359
+ this._screenX = parentScreenX + this._x + this._translateX;
15360
+ this._screenY = parentScreenY + this._y + this._translateY;
15314
15361
  const newWidth = Math.max(layout.width, 1);
15315
15362
  const newHeight = Math.max(layout.height, 1);
15316
15363
  const sizeChanged = oldWidth !== newWidth || oldHeight !== newHeight;
@@ -15352,7 +15399,10 @@ class Renderable extends BaseRenderable {
15352
15399
  }
15353
15400
  try {
15354
15401
  const widthMethod = this._ctx.widthMethod;
15355
- this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, { respectAlpha: true, id: `framebuffer-${this.id}` });
15402
+ this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, {
15403
+ respectAlpha: true,
15404
+ id: `framebuffer-${this.id}`
15405
+ });
15356
15406
  } catch (error) {
15357
15407
  console.error(`Failed to create frame buffer for ${this.id}:`, error);
15358
15408
  this.frameBuffer = null;
@@ -15543,17 +15593,24 @@ class Renderable extends BaseRenderable {
15543
15593
  y: scissorRect.y,
15544
15594
  width: scissorRect.width,
15545
15595
  height: scissorRect.height,
15546
- screenX: this.x,
15547
- screenY: this.y
15596
+ screenX: this._screenX,
15597
+ screenY: this._screenY
15548
15598
  });
15549
15599
  }
15550
- const visibleChildren = this._getVisibleChildren();
15551
- for (const child of this._childrenInZIndexOrder) {
15552
- if (!visibleChildren.includes(child.num)) {
15553
- child.updateFromLayout();
15554
- continue;
15600
+ if (!this._hasVisibleChildFilter()) {
15601
+ for (const child of this._childrenInZIndexOrder) {
15602
+ child.updateLayout(deltaTime, renderList);
15603
+ }
15604
+ } else {
15605
+ const visibleChildren = this._getVisibleChildren();
15606
+ const visibleChildSet = new Set(visibleChildren);
15607
+ for (const child of this._childrenInZIndexOrder) {
15608
+ if (!visibleChildSet.has(child.num)) {
15609
+ child.updateFromLayout();
15610
+ continue;
15611
+ }
15612
+ child.updateLayout(deltaTime, renderList);
15555
15613
  }
15556
- child.updateLayout(deltaTime, renderList);
15557
15614
  }
15558
15615
  if (shouldPushScissor) {
15559
15616
  renderList.push({ action: "popScissorRect" });
@@ -15574,20 +15631,25 @@ class Renderable extends BaseRenderable {
15574
15631
  if (this.renderAfter) {
15575
15632
  this.renderAfter.call(this, renderBuffer, deltaTime);
15576
15633
  }
15634
+ const screenX = this._screenX;
15635
+ const screenY = this._screenY;
15577
15636
  this.markClean();
15578
- this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num);
15637
+ this._ctx.addToHitGrid(screenX, screenY, this.width, this.height, this.num);
15579
15638
  if (this.buffered && this.frameBuffer) {
15580
- buffer.drawFrameBuffer(this.x, this.y, this.frameBuffer);
15639
+ buffer.drawFrameBuffer(screenX, screenY, this.frameBuffer);
15581
15640
  }
15582
15641
  }
15642
+ _hasVisibleChildFilter() {
15643
+ return this._getVisibleChildren !== Renderable.prototype._getVisibleChildren;
15644
+ }
15583
15645
  _getVisibleChildren() {
15584
15646
  return this._childrenInZIndexOrder.map((child) => child.num);
15585
15647
  }
15586
15648
  onUpdate(deltaTime) {}
15587
15649
  getScissorRect() {
15588
15650
  return {
15589
- x: this.buffered ? 0 : this.x,
15590
- y: this.buffered ? 0 : this.y,
15651
+ x: this.buffered ? 0 : this._screenX,
15652
+ y: this.buffered ? 0 : this._screenY,
15591
15653
  width: this.width,
15592
15654
  height: this.height
15593
15655
  };
@@ -15739,7 +15801,14 @@ class Renderable extends BaseRenderable {
15739
15801
  class RootRenderable extends Renderable {
15740
15802
  renderList = [];
15741
15803
  constructor(ctx) {
15742
- super(ctx, { id: "__root__", zIndex: 0, visible: true, width: ctx.width, height: ctx.height, enableLayout: true });
15804
+ super(ctx, {
15805
+ id: "__root__",
15806
+ zIndex: 0,
15807
+ visible: true,
15808
+ width: ctx.width,
15809
+ height: ctx.height,
15810
+ enableLayout: true
15811
+ });
15743
15812
  if (this.yogaNode) {
15744
15813
  this.yogaNode.free();
15745
15814
  }
@@ -16581,6 +16650,41 @@ function mergeKeyBindings(defaults, custom) {
16581
16650
  function getKeyBindingKey(binding) {
16582
16651
  return `${binding.name}:${binding.ctrl ? 1 : 0}:${binding.shift ? 1 : 0}:${binding.meta ? 1 : 0}:${binding.super ? 1 : 0}`;
16583
16652
  }
16653
+ function getBaseCodeKeyName(baseCode) {
16654
+ if (baseCode === undefined || baseCode < 32 || baseCode === 127) {
16655
+ return;
16656
+ }
16657
+ try {
16658
+ const name = String.fromCodePoint(baseCode);
16659
+ if (name.length === 1 && name >= "A" && name <= "Z") {
16660
+ return name.toLowerCase();
16661
+ }
16662
+ return name;
16663
+ } catch {
16664
+ return;
16665
+ }
16666
+ }
16667
+ function getKeyBindingKeys(binding) {
16668
+ const names = new Set([binding.name]);
16669
+ const baseCodeName = getBaseCodeKeyName(binding.baseCode);
16670
+ if (baseCodeName) {
16671
+ names.add(baseCodeName);
16672
+ }
16673
+ return [...names].map((name) => getKeyBindingKey({ ...binding, name }));
16674
+ }
16675
+ function getKeyBindingAction(map, binding) {
16676
+ for (const key of getKeyBindingKeys(binding)) {
16677
+ const action = map.get(key);
16678
+ if (action !== undefined) {
16679
+ return action;
16680
+ }
16681
+ }
16682
+ return;
16683
+ }
16684
+ function matchesKeyBinding(binding, match) {
16685
+ const matchKey = getKeyBindingKey(match);
16686
+ return getKeyBindingKeys(binding).includes(matchKey);
16687
+ }
16584
16688
  function buildKeyBindingsMap(bindings, aliasMap) {
16585
16689
  const map = new Map;
16586
16690
  const aliases = aliasMap || {};
@@ -16964,15 +17068,7 @@ class TerminalConsole extends EventEmitter8 {
16964
17068
  this.blur();
16965
17069
  return;
16966
17070
  }
16967
- const bindingKey = getKeyBindingKey({
16968
- name: event.name,
16969
- ctrl: event.ctrl,
16970
- shift: event.shift,
16971
- meta: event.meta,
16972
- super: event.super,
16973
- action: "scroll-up"
16974
- });
16975
- const action = this._keyBindingsMap.get(bindingKey);
17071
+ const action = getKeyBindingAction(this._keyBindingsMap, event);
16976
17072
  if (action) {
16977
17073
  const handler = this._actionHandlers.get(action);
16978
17074
  if (handler) {
@@ -18248,6 +18344,8 @@ class EditBufferRenderable extends Renderable {
18248
18344
  const cursor = this.editorView.getCursor();
18249
18345
  if (cursor.col > 0) {
18250
18346
  this.editBuffer.deleteRange(cursor.row, 0, cursor.row, cursor.col);
18347
+ } else if (cursor.row > 0) {
18348
+ this.editBuffer.deleteCharBackward();
18251
18349
  }
18252
18350
  this.requestRender();
18253
18351
  return true;
@@ -18340,20 +18438,24 @@ class EditBufferRenderable extends Renderable {
18340
18438
  return;
18341
18439
  if (this.isDestroyed)
18342
18440
  return;
18441
+ const screenX = this._screenX;
18442
+ const screenY = this._screenY;
18343
18443
  this.markClean();
18344
- this._ctx.addToHitGrid(this.x, this.y, this.width, this.height, this.num);
18444
+ this._ctx.addToHitGrid(screenX, screenY, this.width, this.height, this.num);
18345
18445
  this.renderSelf(buffer);
18346
18446
  this.renderCursor(buffer);
18347
18447
  }
18348
18448
  renderSelf(buffer) {
18349
- buffer.drawEditorView(this.editorView, this.x, this.y);
18449
+ buffer.drawEditorView(this.editorView, this._screenX, this._screenY);
18350
18450
  }
18351
18451
  renderCursor(buffer) {
18352
18452
  if (!this._showCursor || !this._focused)
18353
18453
  return;
18354
18454
  const visualCursor = this.editorView.getVisualCursor();
18355
- const cursorX = this.x + visualCursor.visualCol + 1;
18356
- const cursorY = this.y + visualCursor.visualRow + 1;
18455
+ const screenX = this._screenX;
18456
+ const screenY = this._screenY;
18457
+ const cursorX = screenX + visualCursor.visualCol + 1;
18458
+ const cursorY = screenY + visualCursor.visualRow + 1;
18357
18459
  this._ctx.setCursorPosition(cursorX, cursorY, true);
18358
18460
  this._ctx.setCursorStyle({ ...this._cursorStyle, color: this._cursorColor });
18359
18461
  }
@@ -18553,8 +18655,8 @@ function getObjectsInViewport(viewport, objects, direction = "column", padding =
18553
18655
  while (lo <= hi) {
18554
18656
  const mid = lo + hi >> 1;
18555
18657
  const c = children[mid];
18556
- const start = isRow ? c.x : c.y;
18557
- const end = isRow ? c.x + c.width : c.y + c.height;
18658
+ const start = isRow ? c.screenX : c.screenY;
18659
+ const end = isRow ? c.screenX + c.width : c.screenY + c.height;
18558
18660
  if (end < vpStart) {
18559
18661
  lo = mid + 1;
18560
18662
  } else if (start > vpEnd) {
@@ -18573,7 +18675,7 @@ function getObjectsInViewport(viewport, objects, direction = "column", padding =
18573
18675
  let gapCount = 0;
18574
18676
  while (left - 1 >= 0) {
18575
18677
  const prev = children[left - 1];
18576
- const prevEnd = isRow ? prev.x + prev.width : prev.y + prev.height;
18678
+ const prevEnd = isRow ? prev.screenX + prev.width : prev.screenY + prev.height;
18577
18679
  if (prevEnd <= vpStart) {
18578
18680
  gapCount++;
18579
18681
  if (gapCount >= maxLookBehind) {
@@ -18587,30 +18689,30 @@ function getObjectsInViewport(viewport, objects, direction = "column", padding =
18587
18689
  let right = candidate + 1;
18588
18690
  while (right < totalChildren) {
18589
18691
  const next = children[right];
18590
- if ((isRow ? next.x : next.y) >= vpEnd)
18692
+ if ((isRow ? next.screenX : next.screenY) >= vpEnd)
18591
18693
  break;
18592
18694
  right++;
18593
18695
  }
18594
18696
  for (let i = left;i < right; i++) {
18595
18697
  const child = children[i];
18596
- const start = isRow ? child.x : child.y;
18597
- const end = isRow ? child.x + child.width : child.y + child.height;
18698
+ const start = isRow ? child.screenX : child.screenY;
18699
+ const end = isRow ? child.screenX + child.width : child.screenY + child.height;
18598
18700
  if (end <= vpStart)
18599
18701
  continue;
18600
18702
  if (start >= vpEnd)
18601
18703
  break;
18602
18704
  if (isRow) {
18603
- const childBottom = child.y + child.height;
18705
+ const childBottom = child.screenY + child.height;
18604
18706
  if (childBottom < viewportTop)
18605
18707
  continue;
18606
- const childTop = child.y;
18708
+ const childTop = child.screenY;
18607
18709
  if (childTop > viewportBottom)
18608
18710
  continue;
18609
18711
  } else {
18610
- const childRight = child.x + child.width;
18712
+ const childRight = child.screenX + child.width;
18611
18713
  if (childRight < viewportLeft)
18612
18714
  continue;
18613
- const childLeft = child.x;
18715
+ const childLeft = child.screenX;
18614
18716
  if (childLeft > viewportRight)
18615
18717
  continue;
18616
18718
  }
@@ -19001,7 +19103,11 @@ class CliRenderer extends EventEmitter9 {
19001
19103
  _capabilities = null;
19002
19104
  _latestPointer = { x: 0, y: 0 };
19003
19105
  _hasPointer = false;
19004
- _lastPointerModifiers = { shift: false, alt: false, ctrl: false };
19106
+ _lastPointerModifiers = {
19107
+ shift: false,
19108
+ alt: false,
19109
+ ctrl: false
19110
+ };
19005
19111
  _currentMousePointerStyle = undefined;
19006
19112
  _currentFocusedRenderable = null;
19007
19113
  lifecyclePasses = new Set;
@@ -19121,7 +19227,7 @@ Captured output:
19121
19227
  const useKittyForParsing = kittyConfig !== null;
19122
19228
  this._keyHandler = new InternalKeyHandler;
19123
19229
  this._keyHandler.on("keypress", (event) => {
19124
- if (this.exitOnCtrlC && event.name === "c" && event.ctrl) {
19230
+ if (this.exitOnCtrlC && matchesKeyBinding(event, { name: "c", ctrl: true })) {
19125
19231
  process.nextTick(() => {
19126
19232
  this.destroy();
19127
19233
  });
@@ -19232,15 +19338,18 @@ Captured output:
19232
19338
  if (this._currentFocusedRenderable === renderable)
19233
19339
  return;
19234
19340
  const prev = this.currentFocusedEditor;
19235
- if (this._currentFocusedRenderable) {
19236
- this._currentFocusedRenderable.blur();
19237
- }
19341
+ this._currentFocusedRenderable?.blur();
19238
19342
  this._currentFocusedRenderable = renderable;
19239
19343
  const next = this.currentFocusedEditor;
19240
19344
  if (prev !== next) {
19241
19345
  this.emit("focused_editor" /* FOCUSED_EDITOR */, next, prev);
19242
19346
  }
19243
19347
  }
19348
+ blurRenderable(renderable) {
19349
+ if (this._currentFocusedRenderable === renderable) {
19350
+ this._currentFocusedRenderable = null;
19351
+ }
19352
+ }
19244
19353
  setCapturedRenderable(renderable) {
19245
19354
  if (this.capturedRenderable === renderable) {
19246
19355
  return;
@@ -19820,14 +19929,20 @@ Captured output:
19820
19929
  if (mouseEvent.type === "drag" && this.currentSelection?.isDragging) {
19821
19930
  this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y);
19822
19931
  if (maybeRenderable) {
19823
- const event2 = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true });
19932
+ const event2 = new MouseEvent(maybeRenderable, {
19933
+ ...mouseEvent,
19934
+ isDragging: true
19935
+ });
19824
19936
  maybeRenderable.processMouseEvent(event2);
19825
19937
  }
19826
19938
  return true;
19827
19939
  }
19828
19940
  if (mouseEvent.type === "up" && this.currentSelection?.isDragging) {
19829
19941
  if (maybeRenderable) {
19830
- const event2 = new MouseEvent(maybeRenderable, { ...mouseEvent, isDragging: true });
19942
+ const event2 = new MouseEvent(maybeRenderable, {
19943
+ ...mouseEvent,
19944
+ isDragging: true
19945
+ });
19831
19946
  maybeRenderable.processMouseEvent(event2);
19832
19947
  }
19833
19948
  this.finishSelection();
@@ -19842,7 +19957,10 @@ Captured output:
19842
19957
  }
19843
19958
  if (!sameElement && (mouseEvent.type === "drag" || mouseEvent.type === "move")) {
19844
19959
  if (this.lastOverRenderable && this.lastOverRenderable !== this.capturedRenderable && !this.lastOverRenderable.isDestroyed) {
19845
- const event2 = new MouseEvent(this.lastOverRenderable, { ...mouseEvent, type: "out" });
19960
+ const event2 = new MouseEvent(this.lastOverRenderable, {
19961
+ ...mouseEvent,
19962
+ type: "out"
19963
+ });
19846
19964
  this.lastOverRenderable.processMouseEvent(event2);
19847
19965
  }
19848
19966
  this.lastOverRenderable = maybeRenderable;
@@ -19861,7 +19979,10 @@ Captured output:
19861
19979
  return true;
19862
19980
  }
19863
19981
  if (this.capturedRenderable && mouseEvent.type === "up") {
19864
- const event2 = new MouseEvent(this.capturedRenderable, { ...mouseEvent, type: "drag-end" });
19982
+ const event2 = new MouseEvent(this.capturedRenderable, {
19983
+ ...mouseEvent,
19984
+ type: "drag-end"
19985
+ });
19865
19986
  this.capturedRenderable.processMouseEvent(event2);
19866
19987
  this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEvent));
19867
19988
  if (maybeRenderable) {
@@ -20269,6 +20390,7 @@ Captured output:
20269
20390
  pixelResolutionQueryActive: false,
20270
20391
  explicitWidthCprActive: false
20271
20392
  }, true);
20393
+ this._useMouse = false;
20272
20394
  this.setCapturedRenderable(undefined);
20273
20395
  this.stdin.removeListener("data", this.stdinListener);
20274
20396
  if (this.stdin.setRawMode) {
@@ -20599,7 +20721,7 @@ Captured output:
20599
20721
  }
20600
20722
  }
20601
20723
 
20602
- 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, TargetChannel, 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, extensionToFiletype, basenameToFiletype, extToFiletype, pathToFiletype, infoStringToFiletype, 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, EditBuffer, EditorView, ANSI, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingKey, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, EditBufferRenderableEvents, isEditBufferRenderable, EditBufferRenderable, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
20724
+ 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, TargetChannel, 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, extensionToFiletype, basenameToFiletype, extToFiletype, pathToFiletype, infoStringToFiletype, 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, EditBuffer, EditorView, ANSI, defaultKeyAliases, mergeKeyAliases, mergeKeyBindings, getKeyBindingAction, buildKeyBindingsMap, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, EditBufferRenderableEvents, isEditBufferRenderable, EditBufferRenderable, buildKittyKeyboardFlags, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
20603
20725
 
20604
- //# debugId=7AE492200477211D64756E2164756E21
20605
- //# sourceMappingURL=index-kgg0v67t.js.map
20726
+ //# debugId=2193DA33CB3F5D3964756E2164756E21
20727
+ //# sourceMappingURL=index-8978gvk3.js.map