@opentui/core 0.1.97 → 0.1.98
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 +3 -0
- package/console.d.ts +2 -1
- package/{index-kgg0v67t.js → index-e4g80551.js} +164 -104
- package/{index-kgg0v67t.js.map → index-e4g80551.js.map} +12 -12
- package/{index-9y4vegye.js → index-ks829haj.js} +9 -32
- package/{index-9y4vegye.js.map → index-ks829haj.js.map} +8 -8
- package/{index-bzjr4q9g.js → index-qs64hr08.js} +3 -3
- package/index.js +2 -2
- package/lib/keymapping.d.ts +10 -2
- package/lib/tree-sitter/default-parsers.d.ts +1 -1
- package/package.json +7 -7
- 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-qs64hr08.js.map} +0 -0
|
@@ -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") {
|
|
@@ -8457,19 +8468,7 @@ class ProcessQueue {
|
|
|
8457
8468
|
}
|
|
8458
8469
|
|
|
8459
8470
|
// src/lib/tree-sitter/default-parsers.ts
|
|
8460
|
-
import { resolve, dirname } from "path";
|
|
8461
8471
|
import { fileURLToPath } from "url";
|
|
8462
|
-
import javascript_highlights from "./assets/javascript/highlights.scm" with { type: "file" };
|
|
8463
|
-
import javascript_language from "./assets/javascript/tree-sitter-javascript.wasm" with { type: "file" };
|
|
8464
|
-
import typescript_highlights from "./assets/typescript/highlights.scm" with { type: "file" };
|
|
8465
|
-
import typescript_language from "./assets/typescript/tree-sitter-typescript.wasm" with { type: "file" };
|
|
8466
|
-
import markdown_highlights from "./assets/markdown/highlights.scm" with { type: "file" };
|
|
8467
|
-
import markdown_language from "./assets/markdown/tree-sitter-markdown.wasm" with { type: "file" };
|
|
8468
|
-
import markdown_injections from "./assets/markdown/injections.scm" with { type: "file" };
|
|
8469
|
-
import markdown_inline_highlights from "./assets/markdown_inline/highlights.scm" with { type: "file" };
|
|
8470
|
-
import markdown_inline_language from "./assets/markdown_inline/tree-sitter-markdown_inline.wasm" with { type: "file" };
|
|
8471
|
-
import zig_highlights from "./assets/zig/highlights.scm" with { type: "file" };
|
|
8472
|
-
import zig_language from "./assets/zig/tree-sitter-zig.wasm" with { type: "file" };
|
|
8473
8472
|
var _cachedParsers;
|
|
8474
8473
|
function getParsers() {
|
|
8475
8474
|
if (!_cachedParsers) {
|
|
@@ -8478,25 +8477,25 @@ function getParsers() {
|
|
|
8478
8477
|
filetype: "javascript",
|
|
8479
8478
|
aliases: ["javascriptreact"],
|
|
8480
8479
|
queries: {
|
|
8481
|
-
highlights: [
|
|
8480
|
+
highlights: [fileURLToPath(new URL("./assets/javascript/highlights.scm", import.meta.url))]
|
|
8482
8481
|
},
|
|
8483
|
-
wasm:
|
|
8482
|
+
wasm: fileURLToPath(new URL("./assets/javascript/tree-sitter-javascript.wasm", import.meta.url))
|
|
8484
8483
|
},
|
|
8485
8484
|
{
|
|
8486
8485
|
filetype: "typescript",
|
|
8487
8486
|
aliases: ["typescriptreact"],
|
|
8488
8487
|
queries: {
|
|
8489
|
-
highlights: [
|
|
8488
|
+
highlights: [fileURLToPath(new URL("./assets/typescript/highlights.scm", import.meta.url))]
|
|
8490
8489
|
},
|
|
8491
|
-
wasm:
|
|
8490
|
+
wasm: fileURLToPath(new URL("./assets/typescript/tree-sitter-typescript.wasm", import.meta.url))
|
|
8492
8491
|
},
|
|
8493
8492
|
{
|
|
8494
8493
|
filetype: "markdown",
|
|
8495
8494
|
queries: {
|
|
8496
|
-
highlights: [
|
|
8497
|
-
injections: [
|
|
8495
|
+
highlights: [fileURLToPath(new URL("./assets/markdown/highlights.scm", import.meta.url))],
|
|
8496
|
+
injections: [fileURLToPath(new URL("./assets/markdown/injections.scm", import.meta.url))]
|
|
8498
8497
|
},
|
|
8499
|
-
wasm:
|
|
8498
|
+
wasm: fileURLToPath(new URL("./assets/markdown/tree-sitter-markdown.wasm", import.meta.url)),
|
|
8500
8499
|
injectionMapping: {
|
|
8501
8500
|
nodeTypes: {
|
|
8502
8501
|
inline: "markdown_inline",
|
|
@@ -8519,16 +8518,16 @@ function getParsers() {
|
|
|
8519
8518
|
{
|
|
8520
8519
|
filetype: "markdown_inline",
|
|
8521
8520
|
queries: {
|
|
8522
|
-
highlights: [
|
|
8521
|
+
highlights: [fileURLToPath(new URL("./assets/markdown_inline/highlights.scm", import.meta.url))]
|
|
8523
8522
|
},
|
|
8524
|
-
wasm:
|
|
8523
|
+
wasm: fileURLToPath(new URL("./assets/markdown_inline/tree-sitter-markdown_inline.wasm", import.meta.url))
|
|
8525
8524
|
},
|
|
8526
8525
|
{
|
|
8527
8526
|
filetype: "zig",
|
|
8528
8527
|
queries: {
|
|
8529
|
-
highlights: [
|
|
8528
|
+
highlights: [fileURLToPath(new URL("./assets/zig/highlights.scm", import.meta.url))]
|
|
8530
8529
|
},
|
|
8531
|
-
wasm:
|
|
8530
|
+
wasm: fileURLToPath(new URL("./assets/zig/tree-sitter-zig.wasm", import.meta.url))
|
|
8532
8531
|
}
|
|
8533
8532
|
];
|
|
8534
8533
|
}
|
|
@@ -8536,7 +8535,7 @@ function getParsers() {
|
|
|
8536
8535
|
}
|
|
8537
8536
|
|
|
8538
8537
|
// src/lib/tree-sitter/client.ts
|
|
8539
|
-
import { resolve
|
|
8538
|
+
import { resolve, isAbsolute, parse } from "path";
|
|
8540
8539
|
import { existsSync } from "fs";
|
|
8541
8540
|
|
|
8542
8541
|
// src/lib/bunfs.ts
|
|
@@ -8609,7 +8608,7 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8609
8608
|
worker_path = this.options.workerPath;
|
|
8610
8609
|
} else {
|
|
8611
8610
|
worker_path = new URL("./parser.worker.js", import.meta.url).href;
|
|
8612
|
-
if (!existsSync(
|
|
8611
|
+
if (!existsSync(resolve(import.meta.dirname, "parser.worker.js"))) {
|
|
8613
8612
|
worker_path = new URL("./parser.worker.ts", import.meta.url).href;
|
|
8614
8613
|
}
|
|
8615
8614
|
}
|
|
@@ -8644,7 +8643,7 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8644
8643
|
if (this.initializePromise) {
|
|
8645
8644
|
return this.initializePromise;
|
|
8646
8645
|
}
|
|
8647
|
-
this.initializePromise = new Promise((
|
|
8646
|
+
this.initializePromise = new Promise((resolve2, reject) => {
|
|
8648
8647
|
const timeoutMs = this.options.initTimeout ?? 1e4;
|
|
8649
8648
|
const timeoutId = setTimeout(() => {
|
|
8650
8649
|
const error = new Error("Worker initialization timed out");
|
|
@@ -8652,7 +8651,7 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8652
8651
|
this.initializeResolvers = undefined;
|
|
8653
8652
|
reject(error);
|
|
8654
8653
|
}, timeoutMs);
|
|
8655
|
-
this.initializeResolvers = { resolve:
|
|
8654
|
+
this.initializeResolvers = { resolve: resolve2, reject, timeoutId };
|
|
8656
8655
|
this.worker?.postMessage({
|
|
8657
8656
|
type: "INIT",
|
|
8658
8657
|
dataPath: this.options.dataPath
|
|
@@ -8675,7 +8674,7 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8675
8674
|
return normalizeBunfsPath(parse(path).base);
|
|
8676
8675
|
}
|
|
8677
8676
|
if (!isAbsolute(path)) {
|
|
8678
|
-
return
|
|
8677
|
+
return resolve(path);
|
|
8679
8678
|
}
|
|
8680
8679
|
return path;
|
|
8681
8680
|
}
|
|
@@ -8693,8 +8692,8 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8693
8692
|
}
|
|
8694
8693
|
async getPerformance() {
|
|
8695
8694
|
const messageId = `performance_${this.messageIdCounter++}`;
|
|
8696
|
-
return new Promise((
|
|
8697
|
-
this.messageCallbacks.set(messageId,
|
|
8695
|
+
return new Promise((resolve2) => {
|
|
8696
|
+
this.messageCallbacks.set(messageId, resolve2);
|
|
8698
8697
|
this.worker?.postMessage({ type: "GET_PERFORMANCE", messageId });
|
|
8699
8698
|
});
|
|
8700
8699
|
}
|
|
@@ -8707,8 +8706,8 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8707
8706
|
}
|
|
8708
8707
|
}
|
|
8709
8708
|
const messageId = `oneshot_${this.messageIdCounter++}`;
|
|
8710
|
-
return new Promise((
|
|
8711
|
-
this.messageCallbacks.set(messageId,
|
|
8709
|
+
return new Promise((resolve2) => {
|
|
8710
|
+
this.messageCallbacks.set(messageId, resolve2);
|
|
8712
8711
|
this.worker?.postMessage({
|
|
8713
8712
|
type: "ONESHOT_HIGHLIGHT",
|
|
8714
8713
|
content,
|
|
@@ -8817,8 +8816,8 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8817
8816
|
}
|
|
8818
8817
|
async preloadParser(filetype) {
|
|
8819
8818
|
const messageId = `has_parser_${this.messageIdCounter++}`;
|
|
8820
|
-
const response = await new Promise((
|
|
8821
|
-
this.messageCallbacks.set(messageId,
|
|
8819
|
+
const response = await new Promise((resolve2) => {
|
|
8820
|
+
this.messageCallbacks.set(messageId, resolve2);
|
|
8822
8821
|
this.worker?.postMessage({
|
|
8823
8822
|
type: "PRELOAD_PARSER",
|
|
8824
8823
|
filetype,
|
|
@@ -8845,8 +8844,8 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8845
8844
|
}
|
|
8846
8845
|
this.buffers.set(id, { id, content, filetype, version, hasParser: false });
|
|
8847
8846
|
const messageId = `init_${this.messageIdCounter++}`;
|
|
8848
|
-
const response = await new Promise((
|
|
8849
|
-
this.messageCallbacks.set(messageId,
|
|
8847
|
+
const response = await new Promise((resolve2) => {
|
|
8848
|
+
this.messageCallbacks.set(messageId, resolve2);
|
|
8850
8849
|
this.worker?.postMessage({
|
|
8851
8850
|
type: "INITIALIZE_PARSER",
|
|
8852
8851
|
bufferId: id,
|
|
@@ -8902,9 +8901,9 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8902
8901
|
this.editQueues.delete(bufferId);
|
|
8903
8902
|
}
|
|
8904
8903
|
if (this.worker) {
|
|
8905
|
-
await new Promise((
|
|
8904
|
+
await new Promise((resolve2) => {
|
|
8906
8905
|
const messageId = `dispose_${bufferId}`;
|
|
8907
|
-
this.messageCallbacks.set(messageId,
|
|
8906
|
+
this.messageCallbacks.set(messageId, resolve2);
|
|
8908
8907
|
try {
|
|
8909
8908
|
this.worker.postMessage({
|
|
8910
8909
|
type: "DISPOSE_BUFFER",
|
|
@@ -8912,13 +8911,13 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8912
8911
|
});
|
|
8913
8912
|
} catch (error) {
|
|
8914
8913
|
console.error("Error disposing buffer", error);
|
|
8915
|
-
|
|
8914
|
+
resolve2(false);
|
|
8916
8915
|
}
|
|
8917
8916
|
setTimeout(() => {
|
|
8918
8917
|
if (this.messageCallbacks.has(messageId)) {
|
|
8919
8918
|
this.messageCallbacks.delete(messageId);
|
|
8920
8919
|
console.warn({ bufferId }, "Timed out waiting for buffer to be disposed");
|
|
8921
|
-
|
|
8920
|
+
resolve2(false);
|
|
8922
8921
|
}
|
|
8923
8922
|
}, 3000);
|
|
8924
8923
|
});
|
|
@@ -8975,12 +8974,12 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8975
8974
|
this.options.dataPath = dataPath;
|
|
8976
8975
|
if (this.initialized && this.worker) {
|
|
8977
8976
|
const messageId = `update_datapath_${this.messageIdCounter++}`;
|
|
8978
|
-
return new Promise((
|
|
8977
|
+
return new Promise((resolve2, reject) => {
|
|
8979
8978
|
this.messageCallbacks.set(messageId, (response) => {
|
|
8980
8979
|
if (response.error) {
|
|
8981
8980
|
reject(new Error(response.error));
|
|
8982
8981
|
} else {
|
|
8983
|
-
|
|
8982
|
+
resolve2();
|
|
8984
8983
|
}
|
|
8985
8984
|
});
|
|
8986
8985
|
this.worker.postMessage({
|
|
@@ -8996,12 +8995,12 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8996
8995
|
throw new Error("Cannot clear cache: client is not initialized");
|
|
8997
8996
|
}
|
|
8998
8997
|
const messageId = `clear_cache_${this.messageIdCounter++}`;
|
|
8999
|
-
return new Promise((
|
|
8998
|
+
return new Promise((resolve2, reject) => {
|
|
9000
8999
|
this.messageCallbacks.set(messageId, (response) => {
|
|
9001
9000
|
if (response.error) {
|
|
9002
9001
|
reject(new Error(response.error));
|
|
9003
9002
|
} else {
|
|
9004
|
-
|
|
9003
|
+
resolve2();
|
|
9005
9004
|
}
|
|
9006
9005
|
});
|
|
9007
9006
|
this.worker.postMessage({
|
|
@@ -9527,26 +9526,13 @@ ${content}`);
|
|
|
9527
9526
|
return "./" + path4.relative(path4.dirname(outputPath), queryPath);
|
|
9528
9527
|
}
|
|
9529
9528
|
async function generateDefaultParsersFile(parsers, outputPath) {
|
|
9530
|
-
const imports = parsers.map((parser) => {
|
|
9531
|
-
const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, "_");
|
|
9532
|
-
const lines = [
|
|
9533
|
-
`import ${safeFiletype}_highlights from "${parser.highlightsPath}" with { type: "file" }`,
|
|
9534
|
-
`import ${safeFiletype}_language from "${parser.languagePath}" with { type: "file" }`
|
|
9535
|
-
];
|
|
9536
|
-
if (parser.injectionsPath) {
|
|
9537
|
-
lines.push(`import ${safeFiletype}_injections from "${parser.injectionsPath}" with { type: "file" }`);
|
|
9538
|
-
}
|
|
9539
|
-
return lines.join(`
|
|
9540
|
-
`);
|
|
9541
|
-
}).join(`
|
|
9542
|
-
`);
|
|
9543
9529
|
const parserDefinitions = parsers.map((parser) => {
|
|
9544
9530
|
const safeFiletype = parser.filetype.replace(/[^a-zA-Z0-9]/g, "_");
|
|
9545
9531
|
const queriesLines = [
|
|
9546
|
-
` highlights: [
|
|
9532
|
+
` highlights: [fileURLToPath(new URL("${parser.highlightsPath}", import.meta.url))],`
|
|
9547
9533
|
];
|
|
9548
9534
|
if (parser.injectionsPath) {
|
|
9549
|
-
queriesLines.push(` injections: [
|
|
9535
|
+
queriesLines.push(` injections: [fileURLToPath(new URL("${parser.injectionsPath}", import.meta.url))],`);
|
|
9550
9536
|
}
|
|
9551
9537
|
const injectionMappingLine = parser.injectionMapping ? ` injectionMapping: ${JSON.stringify(parser.injectionMapping, null, 10)},` : "";
|
|
9552
9538
|
const aliasesLine = parser.aliases?.length ? ` aliases: ${JSON.stringify(parser.aliases)},` : "";
|
|
@@ -9557,7 +9543,7 @@ ${aliasesLine ? aliasesLine + `
|
|
|
9557
9543
|
${queriesLines.join(`
|
|
9558
9544
|
`)}
|
|
9559
9545
|
},
|
|
9560
|
-
wasm:
|
|
9546
|
+
wasm: fileURLToPath(new URL("${parser.languagePath}", import.meta.url)),${injectionMappingLine ? `
|
|
9561
9547
|
` + injectionMappingLine : ""}
|
|
9562
9548
|
}`;
|
|
9563
9549
|
}).join(`,
|
|
@@ -9567,11 +9553,8 @@ ${queriesLines.join(`
|
|
|
9567
9553
|
// Last generated: ${new Date().toISOString()}
|
|
9568
9554
|
|
|
9569
9555
|
import type { FiletypeParserOptions } from "./types"
|
|
9570
|
-
import { resolve, dirname } from "path"
|
|
9571
9556
|
import { fileURLToPath } from "url"
|
|
9572
9557
|
|
|
9573
|
-
${imports}
|
|
9574
|
-
|
|
9575
9558
|
// Cached parsers to avoid re-resolving paths on every call
|
|
9576
9559
|
let _cachedParsers: FiletypeParserOptions[] | undefined
|
|
9577
9560
|
|
|
@@ -10463,7 +10446,7 @@ class TerminalPalette {
|
|
|
10463
10446
|
const out = this.stdout;
|
|
10464
10447
|
if (!out.isTTY || !this.stdin.isTTY)
|
|
10465
10448
|
return false;
|
|
10466
|
-
return new Promise((
|
|
10449
|
+
return new Promise((resolve3) => {
|
|
10467
10450
|
const session = this.createQuerySession();
|
|
10468
10451
|
let buffer = "";
|
|
10469
10452
|
let settled = false;
|
|
@@ -10472,7 +10455,7 @@ class TerminalPalette {
|
|
|
10472
10455
|
return;
|
|
10473
10456
|
settled = true;
|
|
10474
10457
|
session.cleanup();
|
|
10475
|
-
|
|
10458
|
+
resolve3(supported);
|
|
10476
10459
|
};
|
|
10477
10460
|
const onData = (chunk) => {
|
|
10478
10461
|
buffer += chunk.toString();
|
|
@@ -10495,7 +10478,7 @@ class TerminalPalette {
|
|
|
10495
10478
|
if (!out.isTTY || !this.stdin.isTTY) {
|
|
10496
10479
|
return results;
|
|
10497
10480
|
}
|
|
10498
|
-
return new Promise((
|
|
10481
|
+
return new Promise((resolve3) => {
|
|
10499
10482
|
const session = this.createQuerySession();
|
|
10500
10483
|
let buffer = "";
|
|
10501
10484
|
let idleTimer = null;
|
|
@@ -10505,7 +10488,7 @@ class TerminalPalette {
|
|
|
10505
10488
|
return;
|
|
10506
10489
|
settled = true;
|
|
10507
10490
|
session.cleanup();
|
|
10508
|
-
|
|
10491
|
+
resolve3(results);
|
|
10509
10492
|
};
|
|
10510
10493
|
const onData = (chunk) => {
|
|
10511
10494
|
buffer += chunk.toString();
|
|
@@ -10546,7 +10529,7 @@ class TerminalPalette {
|
|
|
10546
10529
|
if (!out.isTTY || !this.stdin.isTTY) {
|
|
10547
10530
|
return results;
|
|
10548
10531
|
}
|
|
10549
|
-
return new Promise((
|
|
10532
|
+
return new Promise((resolve3) => {
|
|
10550
10533
|
const session = this.createQuerySession();
|
|
10551
10534
|
let buffer = "";
|
|
10552
10535
|
let idleTimer = null;
|
|
@@ -10556,7 +10539,7 @@ class TerminalPalette {
|
|
|
10556
10539
|
return;
|
|
10557
10540
|
settled = true;
|
|
10558
10541
|
session.cleanup();
|
|
10559
|
-
|
|
10542
|
+
resolve3(results);
|
|
10560
10543
|
};
|
|
10561
10544
|
const onData = (chunk) => {
|
|
10562
10545
|
buffer += chunk.toString();
|
|
@@ -14648,6 +14631,7 @@ class Renderable extends BaseRenderable {
|
|
|
14648
14631
|
frameBuffer = null;
|
|
14649
14632
|
_focusable = false;
|
|
14650
14633
|
_focused = false;
|
|
14634
|
+
_hasFocusedDescendant = false;
|
|
14651
14635
|
keypressHandler = null;
|
|
14652
14636
|
pasteHandler = null;
|
|
14653
14637
|
_live = false;
|
|
@@ -14797,11 +14781,24 @@ class Renderable extends BaseRenderable {
|
|
|
14797
14781
|
};
|
|
14798
14782
|
this.ctx._internalKeyInput.onInternal("keypress", this.keypressHandler);
|
|
14799
14783
|
this.ctx._internalKeyInput.onInternal("paste", this.pasteHandler);
|
|
14784
|
+
this.propagateFocusChange(true);
|
|
14800
14785
|
this.emit("focused" /* FOCUSED */);
|
|
14801
14786
|
}
|
|
14787
|
+
propagateFocusChange(hasFocus) {
|
|
14788
|
+
let parent = this.parent;
|
|
14789
|
+
while (parent) {
|
|
14790
|
+
if (parent._hasFocusedDescendant !== hasFocus) {
|
|
14791
|
+
parent._hasFocusedDescendant = hasFocus;
|
|
14792
|
+
parent.markDirty();
|
|
14793
|
+
}
|
|
14794
|
+
parent = parent.parent;
|
|
14795
|
+
}
|
|
14796
|
+
this.requestRender();
|
|
14797
|
+
}
|
|
14802
14798
|
blur() {
|
|
14803
14799
|
if (!this._focused || !this._focusable)
|
|
14804
14800
|
return;
|
|
14801
|
+
this._ctx.blurRenderable(this);
|
|
14805
14802
|
this._focused = false;
|
|
14806
14803
|
this.requestRender();
|
|
14807
14804
|
if (this.keypressHandler) {
|
|
@@ -14812,11 +14809,15 @@ class Renderable extends BaseRenderable {
|
|
|
14812
14809
|
this.ctx._internalKeyInput.offInternal("paste", this.pasteHandler);
|
|
14813
14810
|
this.pasteHandler = null;
|
|
14814
14811
|
}
|
|
14812
|
+
this.propagateFocusChange(false);
|
|
14815
14813
|
this.emit("blurred" /* BLURRED */);
|
|
14816
14814
|
}
|
|
14817
14815
|
get focused() {
|
|
14818
14816
|
return this._focused;
|
|
14819
14817
|
}
|
|
14818
|
+
get hasFocusedDescendant() {
|
|
14819
|
+
return this._hasFocusedDescendant;
|
|
14820
|
+
}
|
|
14820
14821
|
get live() {
|
|
14821
14822
|
return this._live;
|
|
14822
14823
|
}
|
|
@@ -15352,7 +15353,10 @@ class Renderable extends BaseRenderable {
|
|
|
15352
15353
|
}
|
|
15353
15354
|
try {
|
|
15354
15355
|
const widthMethod = this._ctx.widthMethod;
|
|
15355
|
-
this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, {
|
|
15356
|
+
this.frameBuffer = OptimizedBuffer.create(w, h, widthMethod, {
|
|
15357
|
+
respectAlpha: true,
|
|
15358
|
+
id: `framebuffer-${this.id}`
|
|
15359
|
+
});
|
|
15356
15360
|
} catch (error) {
|
|
15357
15361
|
console.error(`Failed to create frame buffer for ${this.id}:`, error);
|
|
15358
15362
|
this.frameBuffer = null;
|
|
@@ -15739,7 +15743,14 @@ class Renderable extends BaseRenderable {
|
|
|
15739
15743
|
class RootRenderable extends Renderable {
|
|
15740
15744
|
renderList = [];
|
|
15741
15745
|
constructor(ctx) {
|
|
15742
|
-
super(ctx, {
|
|
15746
|
+
super(ctx, {
|
|
15747
|
+
id: "__root__",
|
|
15748
|
+
zIndex: 0,
|
|
15749
|
+
visible: true,
|
|
15750
|
+
width: ctx.width,
|
|
15751
|
+
height: ctx.height,
|
|
15752
|
+
enableLayout: true
|
|
15753
|
+
});
|
|
15743
15754
|
if (this.yogaNode) {
|
|
15744
15755
|
this.yogaNode.free();
|
|
15745
15756
|
}
|
|
@@ -16581,6 +16592,41 @@ function mergeKeyBindings(defaults, custom) {
|
|
|
16581
16592
|
function getKeyBindingKey(binding) {
|
|
16582
16593
|
return `${binding.name}:${binding.ctrl ? 1 : 0}:${binding.shift ? 1 : 0}:${binding.meta ? 1 : 0}:${binding.super ? 1 : 0}`;
|
|
16583
16594
|
}
|
|
16595
|
+
function getBaseCodeKeyName(baseCode) {
|
|
16596
|
+
if (baseCode === undefined || baseCode < 32 || baseCode === 127) {
|
|
16597
|
+
return;
|
|
16598
|
+
}
|
|
16599
|
+
try {
|
|
16600
|
+
const name = String.fromCodePoint(baseCode);
|
|
16601
|
+
if (name.length === 1 && name >= "A" && name <= "Z") {
|
|
16602
|
+
return name.toLowerCase();
|
|
16603
|
+
}
|
|
16604
|
+
return name;
|
|
16605
|
+
} catch {
|
|
16606
|
+
return;
|
|
16607
|
+
}
|
|
16608
|
+
}
|
|
16609
|
+
function getKeyBindingKeys(binding) {
|
|
16610
|
+
const names = new Set([binding.name]);
|
|
16611
|
+
const baseCodeName = getBaseCodeKeyName(binding.baseCode);
|
|
16612
|
+
if (baseCodeName) {
|
|
16613
|
+
names.add(baseCodeName);
|
|
16614
|
+
}
|
|
16615
|
+
return [...names].map((name) => getKeyBindingKey({ ...binding, name }));
|
|
16616
|
+
}
|
|
16617
|
+
function getKeyBindingAction(map, binding) {
|
|
16618
|
+
for (const key of getKeyBindingKeys(binding)) {
|
|
16619
|
+
const action = map.get(key);
|
|
16620
|
+
if (action !== undefined) {
|
|
16621
|
+
return action;
|
|
16622
|
+
}
|
|
16623
|
+
}
|
|
16624
|
+
return;
|
|
16625
|
+
}
|
|
16626
|
+
function matchesKeyBinding(binding, match) {
|
|
16627
|
+
const matchKey = getKeyBindingKey(match);
|
|
16628
|
+
return getKeyBindingKeys(binding).includes(matchKey);
|
|
16629
|
+
}
|
|
16584
16630
|
function buildKeyBindingsMap(bindings, aliasMap) {
|
|
16585
16631
|
const map = new Map;
|
|
16586
16632
|
const aliases = aliasMap || {};
|
|
@@ -16964,15 +17010,7 @@ class TerminalConsole extends EventEmitter8 {
|
|
|
16964
17010
|
this.blur();
|
|
16965
17011
|
return;
|
|
16966
17012
|
}
|
|
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);
|
|
17013
|
+
const action = getKeyBindingAction(this._keyBindingsMap, event);
|
|
16976
17014
|
if (action) {
|
|
16977
17015
|
const handler = this._actionHandlers.get(action);
|
|
16978
17016
|
if (handler) {
|
|
@@ -18248,6 +18286,8 @@ class EditBufferRenderable extends Renderable {
|
|
|
18248
18286
|
const cursor = this.editorView.getCursor();
|
|
18249
18287
|
if (cursor.col > 0) {
|
|
18250
18288
|
this.editBuffer.deleteRange(cursor.row, 0, cursor.row, cursor.col);
|
|
18289
|
+
} else if (cursor.row > 0) {
|
|
18290
|
+
this.editBuffer.deleteCharBackward();
|
|
18251
18291
|
}
|
|
18252
18292
|
this.requestRender();
|
|
18253
18293
|
return true;
|
|
@@ -18841,7 +18881,7 @@ var rendererTracker = singleton("RendererTracker", () => {
|
|
|
18841
18881
|
});
|
|
18842
18882
|
async function createCliRenderer(config = {}) {
|
|
18843
18883
|
if (process.argv.includes("--delay-start")) {
|
|
18844
|
-
await new Promise((
|
|
18884
|
+
await new Promise((resolve3) => setTimeout(resolve3, 5000));
|
|
18845
18885
|
}
|
|
18846
18886
|
const stdin = config.stdin || process.stdin;
|
|
18847
18887
|
const stdout = config.stdout || process.stdout;
|
|
@@ -19001,7 +19041,11 @@ class CliRenderer extends EventEmitter9 {
|
|
|
19001
19041
|
_capabilities = null;
|
|
19002
19042
|
_latestPointer = { x: 0, y: 0 };
|
|
19003
19043
|
_hasPointer = false;
|
|
19004
|
-
_lastPointerModifiers = {
|
|
19044
|
+
_lastPointerModifiers = {
|
|
19045
|
+
shift: false,
|
|
19046
|
+
alt: false,
|
|
19047
|
+
ctrl: false
|
|
19048
|
+
};
|
|
19005
19049
|
_currentMousePointerStyle = undefined;
|
|
19006
19050
|
_currentFocusedRenderable = null;
|
|
19007
19051
|
lifecyclePasses = new Set;
|
|
@@ -19121,7 +19165,7 @@ Captured output:
|
|
|
19121
19165
|
const useKittyForParsing = kittyConfig !== null;
|
|
19122
19166
|
this._keyHandler = new InternalKeyHandler;
|
|
19123
19167
|
this._keyHandler.on("keypress", (event) => {
|
|
19124
|
-
if (this.exitOnCtrlC && event
|
|
19168
|
+
if (this.exitOnCtrlC && matchesKeyBinding(event, { name: "c", ctrl: true })) {
|
|
19125
19169
|
process.nextTick(() => {
|
|
19126
19170
|
this.destroy();
|
|
19127
19171
|
});
|
|
@@ -19232,15 +19276,18 @@ Captured output:
|
|
|
19232
19276
|
if (this._currentFocusedRenderable === renderable)
|
|
19233
19277
|
return;
|
|
19234
19278
|
const prev = this.currentFocusedEditor;
|
|
19235
|
-
|
|
19236
|
-
this._currentFocusedRenderable.blur();
|
|
19237
|
-
}
|
|
19279
|
+
this._currentFocusedRenderable?.blur();
|
|
19238
19280
|
this._currentFocusedRenderable = renderable;
|
|
19239
19281
|
const next = this.currentFocusedEditor;
|
|
19240
19282
|
if (prev !== next) {
|
|
19241
19283
|
this.emit("focused_editor" /* FOCUSED_EDITOR */, next, prev);
|
|
19242
19284
|
}
|
|
19243
19285
|
}
|
|
19286
|
+
blurRenderable(renderable) {
|
|
19287
|
+
if (this._currentFocusedRenderable === renderable) {
|
|
19288
|
+
this._currentFocusedRenderable = null;
|
|
19289
|
+
}
|
|
19290
|
+
}
|
|
19244
19291
|
setCapturedRenderable(renderable) {
|
|
19245
19292
|
if (this.capturedRenderable === renderable) {
|
|
19246
19293
|
return;
|
|
@@ -19332,8 +19379,8 @@ Captured output:
|
|
|
19332
19379
|
if (!this.isIdleNow())
|
|
19333
19380
|
return;
|
|
19334
19381
|
const resolvers = this.idleResolvers.splice(0);
|
|
19335
|
-
for (const
|
|
19336
|
-
|
|
19382
|
+
for (const resolve3 of resolvers) {
|
|
19383
|
+
resolve3();
|
|
19337
19384
|
}
|
|
19338
19385
|
}
|
|
19339
19386
|
idle() {
|
|
@@ -19341,8 +19388,8 @@ Captured output:
|
|
|
19341
19388
|
return Promise.resolve();
|
|
19342
19389
|
if (this.isIdleNow())
|
|
19343
19390
|
return Promise.resolve();
|
|
19344
|
-
return new Promise((
|
|
19345
|
-
this.idleResolvers.push(
|
|
19391
|
+
return new Promise((resolve3) => {
|
|
19392
|
+
this.idleResolvers.push(resolve3);
|
|
19346
19393
|
});
|
|
19347
19394
|
}
|
|
19348
19395
|
get resolution() {
|
|
@@ -19820,14 +19867,20 @@ Captured output:
|
|
|
19820
19867
|
if (mouseEvent.type === "drag" && this.currentSelection?.isDragging) {
|
|
19821
19868
|
this.updateSelection(maybeRenderable, mouseEvent.x, mouseEvent.y);
|
|
19822
19869
|
if (maybeRenderable) {
|
|
19823
|
-
const event2 = new MouseEvent(maybeRenderable, {
|
|
19870
|
+
const event2 = new MouseEvent(maybeRenderable, {
|
|
19871
|
+
...mouseEvent,
|
|
19872
|
+
isDragging: true
|
|
19873
|
+
});
|
|
19824
19874
|
maybeRenderable.processMouseEvent(event2);
|
|
19825
19875
|
}
|
|
19826
19876
|
return true;
|
|
19827
19877
|
}
|
|
19828
19878
|
if (mouseEvent.type === "up" && this.currentSelection?.isDragging) {
|
|
19829
19879
|
if (maybeRenderable) {
|
|
19830
|
-
const event2 = new MouseEvent(maybeRenderable, {
|
|
19880
|
+
const event2 = new MouseEvent(maybeRenderable, {
|
|
19881
|
+
...mouseEvent,
|
|
19882
|
+
isDragging: true
|
|
19883
|
+
});
|
|
19831
19884
|
maybeRenderable.processMouseEvent(event2);
|
|
19832
19885
|
}
|
|
19833
19886
|
this.finishSelection();
|
|
@@ -19842,7 +19895,10 @@ Captured output:
|
|
|
19842
19895
|
}
|
|
19843
19896
|
if (!sameElement && (mouseEvent.type === "drag" || mouseEvent.type === "move")) {
|
|
19844
19897
|
if (this.lastOverRenderable && this.lastOverRenderable !== this.capturedRenderable && !this.lastOverRenderable.isDestroyed) {
|
|
19845
|
-
const event2 = new MouseEvent(this.lastOverRenderable, {
|
|
19898
|
+
const event2 = new MouseEvent(this.lastOverRenderable, {
|
|
19899
|
+
...mouseEvent,
|
|
19900
|
+
type: "out"
|
|
19901
|
+
});
|
|
19846
19902
|
this.lastOverRenderable.processMouseEvent(event2);
|
|
19847
19903
|
}
|
|
19848
19904
|
this.lastOverRenderable = maybeRenderable;
|
|
@@ -19861,7 +19917,10 @@ Captured output:
|
|
|
19861
19917
|
return true;
|
|
19862
19918
|
}
|
|
19863
19919
|
if (this.capturedRenderable && mouseEvent.type === "up") {
|
|
19864
|
-
const event2 = new MouseEvent(this.capturedRenderable, {
|
|
19920
|
+
const event2 = new MouseEvent(this.capturedRenderable, {
|
|
19921
|
+
...mouseEvent,
|
|
19922
|
+
type: "drag-end"
|
|
19923
|
+
});
|
|
19865
19924
|
this.capturedRenderable.processMouseEvent(event2);
|
|
19866
19925
|
this.capturedRenderable.processMouseEvent(new MouseEvent(this.capturedRenderable, mouseEvent));
|
|
19867
19926
|
if (maybeRenderable) {
|
|
@@ -20269,6 +20328,7 @@ Captured output:
|
|
|
20269
20328
|
pixelResolutionQueryActive: false,
|
|
20270
20329
|
explicitWidthCprActive: false
|
|
20271
20330
|
}, true);
|
|
20331
|
+
this._useMouse = false;
|
|
20272
20332
|
this.setCapturedRenderable(undefined);
|
|
20273
20333
|
this.stdin.removeListener("data", this.stdinListener);
|
|
20274
20334
|
if (this.stdin.setRawMode) {
|
|
@@ -20599,7 +20659,7 @@ Captured output:
|
|
|
20599
20659
|
}
|
|
20600
20660
|
}
|
|
20601
20661
|
|
|
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,
|
|
20662
|
+
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
20663
|
|
|
20604
|
-
//# debugId=
|
|
20605
|
-
//# sourceMappingURL=index-
|
|
20664
|
+
//# debugId=62BA1E72DD78CA1964756E2164756E21
|
|
20665
|
+
//# sourceMappingURL=index-e4g80551.js.map
|