@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 +1 -1
- package/Renderable.d.ts +8 -0
- package/console.d.ts +2 -1
- package/{index-kgg0v67t.js → index-8978gvk3.js} +180 -58
- package/{index-kgg0v67t.js.map → index-8978gvk3.js.map} +11 -11
- package/{index-9y4vegye.js → index-fedv7szb.js} +33 -39
- package/{index-9y4vegye.js.map → index-fedv7szb.js.map} +10 -10
- package/{index-bzjr4q9g.js → index-gb4b75s8.js} +3 -3
- package/index.js +2 -2
- package/lib/keymapping.d.ts +10 -2
- package/lib/objects-in-viewport.d.ts +4 -4
- package/package.json +7 -7
- package/renderables/ScrollBox.d.ts +1 -0
- package/renderables/Slider.d.ts +4 -1
- package/renderables/TextNode.d.ts +1 -1
- package/renderer.d.ts +1 -0
- package/runtime-plugin-support.js +3 -3
- package/runtime-plugin.js +3 -3
- package/testing.js +1 -1
- package/types.d.ts +1 -0
- /package/{index-bzjr4q9g.js.map → index-gb4b75s8.js.map} +0 -0
package/3d.js
CHANGED
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,
|
|
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 (
|
|
5911
|
-
key.name =
|
|
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 (
|
|
5951
|
+
} else if (metaCtrlKeyName) {
|
|
5941
5952
|
key.meta = true;
|
|
5942
5953
|
key.ctrl = true;
|
|
5943
|
-
key.name =
|
|
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.
|
|
14985
|
-
const vb = axis === "y" ? b.
|
|
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, {
|
|
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.
|
|
15547
|
-
screenY: this.
|
|
15596
|
+
screenX: this._screenX,
|
|
15597
|
+
screenY: this._screenY
|
|
15548
15598
|
});
|
|
15549
15599
|
}
|
|
15550
|
-
|
|
15551
|
-
|
|
15552
|
-
|
|
15553
|
-
|
|
15554
|
-
|
|
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(
|
|
15637
|
+
this._ctx.addToHitGrid(screenX, screenY, this.width, this.height, this.num);
|
|
15579
15638
|
if (this.buffered && this.frameBuffer) {
|
|
15580
|
-
buffer.drawFrameBuffer(
|
|
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.
|
|
15590
|
-
y: this.buffered ? 0 : this.
|
|
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, {
|
|
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
|
|
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(
|
|
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.
|
|
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
|
|
18356
|
-
const
|
|
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.
|
|
18557
|
-
const end = isRow ? c.
|
|
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.
|
|
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.
|
|
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.
|
|
18597
|
-
const end = isRow ? child.
|
|
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.
|
|
18705
|
+
const childBottom = child.screenY + child.height;
|
|
18604
18706
|
if (childBottom < viewportTop)
|
|
18605
18707
|
continue;
|
|
18606
|
-
const childTop = child.
|
|
18708
|
+
const childTop = child.screenY;
|
|
18607
18709
|
if (childTop > viewportBottom)
|
|
18608
18710
|
continue;
|
|
18609
18711
|
} else {
|
|
18610
|
-
const childRight = child.
|
|
18712
|
+
const childRight = child.screenX + child.width;
|
|
18611
18713
|
if (childRight < viewportLeft)
|
|
18612
18714
|
continue;
|
|
18613
|
-
const childLeft = child.
|
|
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 = {
|
|
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
|
|
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
|
-
|
|
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, {
|
|
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, {
|
|
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, {
|
|
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, {
|
|
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,
|
|
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=
|
|
20605
|
-
//# sourceMappingURL=index-
|
|
20726
|
+
//# debugId=2193DA33CB3F5D3964756E2164756E21
|
|
20727
|
+
//# sourceMappingURL=index-8978gvk3.js.map
|