kyh 0.1.0 → 0.1.2
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/dist/index.js +461 -166
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -20,10 +20,10 @@ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports,
|
|
|
20
20
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
21
21
|
var __require = import.meta.require;
|
|
22
22
|
|
|
23
|
-
// node_modules/@opentui/react/chunk-e11q5a3p.js
|
|
23
|
+
// ../../node_modules/.pnpm/@opentui+react@0.1.74_react-devtools-core@7.0.1_react@19.2.3_stage-js@1.0.0-alpha.17_ty_fb46e0fc351a293c6633843011916d07/node_modules/@opentui/react/chunk-e11q5a3p.js
|
|
24
24
|
var init_chunk_e11q5a3p = () => {};
|
|
25
25
|
|
|
26
|
-
// node_modules/react/cjs/react.development.js
|
|
26
|
+
// ../../node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.development.js
|
|
27
27
|
var require_react_development = __commonJS((exports, module2) => {
|
|
28
28
|
(function() {
|
|
29
29
|
function defineDeprecationWarning(methodName, info) {
|
|
@@ -846,7 +846,7 @@ See https://react.dev/link/invalid-hook-call for tips about how to debug and fix
|
|
|
846
846
|
})();
|
|
847
847
|
});
|
|
848
848
|
|
|
849
|
-
// node_modules/react/index.js
|
|
849
|
+
// ../../node_modules/.pnpm/react@19.2.3/node_modules/react/index.js
|
|
850
850
|
var require_react = __commonJS((exports, module2) => {
|
|
851
851
|
var react_development = __toESM(require_react_development());
|
|
852
852
|
if (false) {} else {
|
|
@@ -854,7 +854,7 @@ var require_react = __commonJS((exports, module2) => {
|
|
|
854
854
|
}
|
|
855
855
|
});
|
|
856
856
|
|
|
857
|
-
// node_modules/react/cjs/react-jsx-dev-runtime.development.js
|
|
857
|
+
// ../../node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-dev-runtime.development.js
|
|
858
858
|
var require_react_jsx_dev_runtime_development = __commonJS((exports) => {
|
|
859
859
|
var React = __toESM(require_react());
|
|
860
860
|
(function() {
|
|
@@ -1069,7 +1069,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
1069
1069
|
})();
|
|
1070
1070
|
});
|
|
1071
1071
|
|
|
1072
|
-
// node_modules/react/jsx-dev-runtime.js
|
|
1072
|
+
// ../../node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-dev-runtime.js
|
|
1073
1073
|
var require_jsx_dev_runtime = __commonJS((exports, module2) => {
|
|
1074
1074
|
var react_jsx_dev_runtime_development = __toESM(require_react_jsx_dev_runtime_development());
|
|
1075
1075
|
if (false) {} else {
|
|
@@ -1077,7 +1077,7 @@ var require_jsx_dev_runtime = __commonJS((exports, module2) => {
|
|
|
1077
1077
|
}
|
|
1078
1078
|
});
|
|
1079
1079
|
|
|
1080
|
-
// node_modules/scheduler/cjs/scheduler.development.js
|
|
1080
|
+
// ../../node_modules/.pnpm/scheduler@0.26.0/node_modules/scheduler/cjs/scheduler.development.js
|
|
1081
1081
|
var require_scheduler_development = __commonJS((exports) => {
|
|
1082
1082
|
(function() {
|
|
1083
1083
|
function performWorkUntilDeadline() {
|
|
@@ -1332,7 +1332,7 @@ var require_scheduler_development = __commonJS((exports) => {
|
|
|
1332
1332
|
})();
|
|
1333
1333
|
});
|
|
1334
1334
|
|
|
1335
|
-
// node_modules/scheduler/index.js
|
|
1335
|
+
// ../../node_modules/.pnpm/scheduler@0.26.0/node_modules/scheduler/index.js
|
|
1336
1336
|
var require_scheduler = __commonJS((exports, module2) => {
|
|
1337
1337
|
var scheduler_development = __toESM(require_scheduler_development());
|
|
1338
1338
|
if (false) {} else {
|
|
@@ -1340,7 +1340,7 @@ var require_scheduler = __commonJS((exports, module2) => {
|
|
|
1340
1340
|
}
|
|
1341
1341
|
});
|
|
1342
1342
|
|
|
1343
|
-
// node_modules/react-reconciler/cjs/react-reconciler.development.js
|
|
1343
|
+
// ../../node_modules/.pnpm/react-reconciler@0.32.0_react@19.2.3/node_modules/react-reconciler/cjs/react-reconciler.development.js
|
|
1344
1344
|
var require_react_reconciler_development = __commonJS((exports, module2) => {
|
|
1345
1345
|
var React = __toESM(require_react());
|
|
1346
1346
|
var Scheduler = __toESM(require_scheduler());
|
|
@@ -10793,26 +10793,26 @@ No matching component was found for:
|
|
|
10793
10793
|
}, module2.exports.default = module2.exports, Object.defineProperty(module2.exports, "__esModule", { value: true });
|
|
10794
10794
|
});
|
|
10795
10795
|
|
|
10796
|
-
// node_modules/react-reconciler/index.js
|
|
10796
|
+
// ../../node_modules/.pnpm/react-reconciler@0.32.0_react@19.2.3/node_modules/react-reconciler/index.js
|
|
10797
10797
|
var require_react_reconciler = __commonJS((exports, module2) => {
|
|
10798
10798
|
if (false) {} else {
|
|
10799
10799
|
module2.exports = require_react_reconciler_development();
|
|
10800
10800
|
}
|
|
10801
10801
|
});
|
|
10802
10802
|
|
|
10803
|
-
// node_modules/react-reconciler/cjs/react-reconciler-constants.development.js
|
|
10803
|
+
// ../../node_modules/.pnpm/react-reconciler@0.32.0_react@19.2.3/node_modules/react-reconciler/cjs/react-reconciler-constants.development.js
|
|
10804
10804
|
var require_react_reconciler_constants_development = __commonJS((exports) => {
|
|
10805
10805
|
exports.ConcurrentRoot = 1, exports.ContinuousEventPriority = 8, exports.DefaultEventPriority = 32, exports.DiscreteEventPriority = 2, exports.IdleEventPriority = 268435456, exports.LegacyRoot = 0, exports.NoEventPriority = 0;
|
|
10806
10806
|
});
|
|
10807
10807
|
|
|
10808
|
-
// node_modules/react-reconciler/constants.js
|
|
10808
|
+
// ../../node_modules/.pnpm/react-reconciler@0.32.0_react@19.2.3/node_modules/react-reconciler/constants.js
|
|
10809
10809
|
var require_constants = __commonJS((exports, module2) => {
|
|
10810
10810
|
if (false) {} else {
|
|
10811
10811
|
module2.exports = require_react_reconciler_constants_development();
|
|
10812
10812
|
}
|
|
10813
10813
|
});
|
|
10814
10814
|
|
|
10815
|
-
// node_modules/react-devtools-core/dist/backend.js
|
|
10815
|
+
// ../../node_modules/.pnpm/react-devtools-core@7.0.1/node_modules/react-devtools-core/dist/backend.js
|
|
10816
10816
|
var require_backend = __commonJS((exports, module2) => {
|
|
10817
10817
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
10818
10818
|
if (typeof exports === "object" && typeof module2 === "object")
|
|
@@ -27606,7 +27606,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
27606
27606
|
});
|
|
27607
27607
|
});
|
|
27608
27608
|
|
|
27609
|
-
// node_modules/@opentui/react/chunk-fcedq94e.js
|
|
27609
|
+
// ../../node_modules/.pnpm/@opentui+react@0.1.74_react-devtools-core@7.0.1_react@19.2.3_stage-js@1.0.0-alpha.17_ty_fb46e0fc351a293c6633843011916d07/node_modules/@opentui/react/chunk-fcedq94e.js
|
|
27610
27610
|
var exports_chunk_fcedq94e = {};
|
|
27611
27611
|
var import_react_devtools_core, g;
|
|
27612
27612
|
var init_chunk_fcedq94e = __esm(async () => {
|
|
@@ -27633,7 +27633,7 @@ var init_chunk_fcedq94e = __esm(async () => {
|
|
|
27633
27633
|
import_react_devtools_core.default.connectToDevTools();
|
|
27634
27634
|
});
|
|
27635
27635
|
|
|
27636
|
-
// node_modules/@opentui/core/index-
|
|
27636
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/index-93qf6w1k.js
|
|
27637
27637
|
import { Buffer as Buffer2 } from "buffer";
|
|
27638
27638
|
import { EventEmitter } from "events";
|
|
27639
27639
|
import { EventEmitter as EventEmitter2 } from "events";
|
|
@@ -27641,40 +27641,40 @@ import { EventEmitter as EventEmitter3 } from "events";
|
|
|
27641
27641
|
import { resolve, dirname } from "path";
|
|
27642
27642
|
import { fileURLToPath } from "url";
|
|
27643
27643
|
|
|
27644
|
-
// node_modules/@opentui/core/assets/javascript/highlights.scm
|
|
27644
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/javascript/highlights.scm
|
|
27645
27645
|
var highlights_default = "./highlights-ghv9g403.scm";
|
|
27646
27646
|
|
|
27647
|
-
// node_modules/@opentui/core/assets/javascript/tree-sitter-javascript.wasm
|
|
27647
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/javascript/tree-sitter-javascript.wasm
|
|
27648
27648
|
var tree_sitter_javascript_default = "./tree-sitter-javascript-nd0q4pe9.wasm";
|
|
27649
27649
|
|
|
27650
|
-
// node_modules/@opentui/core/assets/typescript/highlights.scm
|
|
27650
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/typescript/highlights.scm
|
|
27651
27651
|
var highlights_default2 = "./highlights-eq9cgrbb.scm";
|
|
27652
27652
|
|
|
27653
|
-
// node_modules/@opentui/core/assets/typescript/tree-sitter-typescript.wasm
|
|
27653
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/typescript/tree-sitter-typescript.wasm
|
|
27654
27654
|
var tree_sitter_typescript_default = "./tree-sitter-typescript-zxjzwt75.wasm";
|
|
27655
27655
|
|
|
27656
|
-
// node_modules/@opentui/core/assets/markdown/highlights.scm
|
|
27656
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/markdown/highlights.scm
|
|
27657
27657
|
var highlights_default3 = "./highlights-r812a2qc.scm";
|
|
27658
27658
|
|
|
27659
|
-
// node_modules/@opentui/core/assets/markdown/tree-sitter-markdown.wasm
|
|
27659
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/markdown/tree-sitter-markdown.wasm
|
|
27660
27660
|
var tree_sitter_markdown_default = "./tree-sitter-markdown-411r6y9b.wasm";
|
|
27661
27661
|
|
|
27662
|
-
// node_modules/@opentui/core/assets/markdown/injections.scm
|
|
27662
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/markdown/injections.scm
|
|
27663
27663
|
var injections_default = "./injections-73j83es3.scm";
|
|
27664
27664
|
|
|
27665
|
-
// node_modules/@opentui/core/assets/markdown_inline/highlights.scm
|
|
27665
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/markdown_inline/highlights.scm
|
|
27666
27666
|
var highlights_default4 = "./highlights-x6tmsnaa.scm";
|
|
27667
27667
|
|
|
27668
|
-
// node_modules/@opentui/core/assets/markdown_inline/tree-sitter-markdown_inline.wasm
|
|
27668
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/markdown_inline/tree-sitter-markdown_inline.wasm
|
|
27669
27669
|
var tree_sitter_markdown_inline_default = "./tree-sitter-markdown_inline-j5349f42.wasm";
|
|
27670
27670
|
|
|
27671
|
-
// node_modules/@opentui/core/assets/zig/highlights.scm
|
|
27671
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/zig/highlights.scm
|
|
27672
27672
|
var highlights_default5 = "./highlights-hk7bwhj4.scm";
|
|
27673
27673
|
|
|
27674
|
-
// node_modules/@opentui/core/assets/zig/tree-sitter-zig.wasm
|
|
27674
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/assets/zig/tree-sitter-zig.wasm
|
|
27675
27675
|
var tree_sitter_zig_default = "./tree-sitter-zig-e78zbjpm.wasm";
|
|
27676
27676
|
|
|
27677
|
-
// node_modules/@opentui/core/index-
|
|
27677
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/index-93qf6w1k.js
|
|
27678
27678
|
import { resolve as resolve2, isAbsolute, parse } from "path";
|
|
27679
27679
|
import { existsSync } from "fs";
|
|
27680
27680
|
import { basename, join } from "path";
|
|
@@ -29730,6 +29730,8 @@ function parseKittyKeyboard(sequence) {
|
|
|
29730
29730
|
if (isPrintable) {
|
|
29731
29731
|
if (key.shift && shiftedCodepoint) {
|
|
29732
29732
|
text = String.fromCodePoint(shiftedCodepoint);
|
|
29733
|
+
} else if (key.shift && key.name.length === 1) {
|
|
29734
|
+
text = key.name.toLocaleUpperCase();
|
|
29733
29735
|
} else {
|
|
29734
29736
|
text = key.name;
|
|
29735
29737
|
}
|
|
@@ -30016,6 +30018,7 @@ class KeyEvent {
|
|
|
30016
30018
|
baseCode;
|
|
30017
30019
|
repeated;
|
|
30018
30020
|
_defaultPrevented = false;
|
|
30021
|
+
_propagationStopped = false;
|
|
30019
30022
|
constructor(key) {
|
|
30020
30023
|
this.name = key.name;
|
|
30021
30024
|
this.ctrl = key.ctrl;
|
|
@@ -30038,23 +30041,36 @@ class KeyEvent {
|
|
|
30038
30041
|
get defaultPrevented() {
|
|
30039
30042
|
return this._defaultPrevented;
|
|
30040
30043
|
}
|
|
30044
|
+
get propagationStopped() {
|
|
30045
|
+
return this._propagationStopped;
|
|
30046
|
+
}
|
|
30041
30047
|
preventDefault() {
|
|
30042
30048
|
this._defaultPrevented = true;
|
|
30043
30049
|
}
|
|
30050
|
+
stopPropagation() {
|
|
30051
|
+
this._propagationStopped = true;
|
|
30052
|
+
}
|
|
30044
30053
|
}
|
|
30045
30054
|
|
|
30046
30055
|
class PasteEvent {
|
|
30047
30056
|
text;
|
|
30048
30057
|
_defaultPrevented = false;
|
|
30058
|
+
_propagationStopped = false;
|
|
30049
30059
|
constructor(text) {
|
|
30050
30060
|
this.text = text;
|
|
30051
30061
|
}
|
|
30052
30062
|
get defaultPrevented() {
|
|
30053
30063
|
return this._defaultPrevented;
|
|
30054
30064
|
}
|
|
30065
|
+
get propagationStopped() {
|
|
30066
|
+
return this._propagationStopped;
|
|
30067
|
+
}
|
|
30055
30068
|
preventDefault() {
|
|
30056
30069
|
this._defaultPrevented = true;
|
|
30057
30070
|
}
|
|
30071
|
+
stopPropagation() {
|
|
30072
|
+
this._propagationStopped = true;
|
|
30073
|
+
}
|
|
30058
30074
|
}
|
|
30059
30075
|
|
|
30060
30076
|
class KeyHandler extends EventEmitter {
|
|
@@ -30106,10 +30122,22 @@ class InternalKeyHandler extends KeyHandler {
|
|
|
30106
30122
|
}
|
|
30107
30123
|
emitWithPriority(event, ...args) {
|
|
30108
30124
|
let hasGlobalListeners = false;
|
|
30109
|
-
|
|
30110
|
-
|
|
30111
|
-
|
|
30112
|
-
|
|
30125
|
+
const globalListeners = this.listeners(event);
|
|
30126
|
+
if (globalListeners.length > 0) {
|
|
30127
|
+
hasGlobalListeners = true;
|
|
30128
|
+
for (const listener of globalListeners) {
|
|
30129
|
+
try {
|
|
30130
|
+
listener(...args);
|
|
30131
|
+
} catch (error) {
|
|
30132
|
+
console.error(`[KeyHandler] Error in global ${event} handler:`, error);
|
|
30133
|
+
}
|
|
30134
|
+
if (event === "keypress" || event === "keyrelease" || event === "paste") {
|
|
30135
|
+
const keyEvent = args[0];
|
|
30136
|
+
if (keyEvent.propagationStopped) {
|
|
30137
|
+
return hasGlobalListeners;
|
|
30138
|
+
}
|
|
30139
|
+
}
|
|
30140
|
+
}
|
|
30113
30141
|
}
|
|
30114
30142
|
const renderableSet = this.renderableHandlers.get(event);
|
|
30115
30143
|
const renderableHandlers = renderableSet && renderableSet.size > 0 ? [...renderableSet] : [];
|
|
@@ -30120,6 +30148,8 @@ class InternalKeyHandler extends KeyHandler {
|
|
|
30120
30148
|
const keyEvent = args[0];
|
|
30121
30149
|
if (keyEvent.defaultPrevented)
|
|
30122
30150
|
return hasGlobalListeners || hasRenderableListeners;
|
|
30151
|
+
if (keyEvent.propagationStopped)
|
|
30152
|
+
return hasGlobalListeners || hasRenderableListeners;
|
|
30123
30153
|
}
|
|
30124
30154
|
for (const handler of renderableHandlers) {
|
|
30125
30155
|
try {
|
|
@@ -30127,6 +30157,12 @@ class InternalKeyHandler extends KeyHandler {
|
|
|
30127
30157
|
} catch (error) {
|
|
30128
30158
|
console.error(`[KeyHandler] Error in renderable ${event} handler:`, error);
|
|
30129
30159
|
}
|
|
30160
|
+
if (event === "keypress" || event === "keyrelease" || event === "paste") {
|
|
30161
|
+
const keyEvent = args[0];
|
|
30162
|
+
if (keyEvent.propagationStopped) {
|
|
30163
|
+
return hasGlobalListeners || hasRenderableListeners;
|
|
30164
|
+
}
|
|
30165
|
+
}
|
|
30130
30166
|
}
|
|
30131
30167
|
}
|
|
30132
30168
|
return hasGlobalListeners || hasRenderableListeners;
|
|
@@ -36873,6 +36909,7 @@ var TerminalCapabilitiesStruct = defineStruct([
|
|
|
36873
36909
|
["sync", "bool_u8"],
|
|
36874
36910
|
["bracketed_paste", "bool_u8"],
|
|
36875
36911
|
["hyperlinks", "bool_u8"],
|
|
36912
|
+
["explicit_cursor_positioning", "bool_u8"],
|
|
36876
36913
|
["term_name", "char*"],
|
|
36877
36914
|
["term_name_len", "u64", { lengthOf: "term_name" }],
|
|
36878
36915
|
["term_version", "char*"],
|
|
@@ -36941,6 +36978,18 @@ registerEnvVar({
|
|
|
36941
36978
|
type: "boolean",
|
|
36942
36979
|
default: false
|
|
36943
36980
|
});
|
|
36981
|
+
registerEnvVar({
|
|
36982
|
+
name: "OPENTUI_NO_GRAPHICS",
|
|
36983
|
+
description: "Disable Kitty graphics protocol detection",
|
|
36984
|
+
type: "boolean",
|
|
36985
|
+
default: false
|
|
36986
|
+
});
|
|
36987
|
+
registerEnvVar({
|
|
36988
|
+
name: "OPENTUI_FORCE_NOZWJ",
|
|
36989
|
+
description: "Use no_zwj width method (Unicode without ZWJ joining)",
|
|
36990
|
+
type: "boolean",
|
|
36991
|
+
default: false
|
|
36992
|
+
});
|
|
36944
36993
|
var globalTraceSymbols = null;
|
|
36945
36994
|
var globalFFILogWriter = null;
|
|
36946
36995
|
var exitHandlerRegistered = false;
|
|
@@ -37171,10 +37220,34 @@ function getOpenTUILib(libPath) {
|
|
|
37171
37220
|
args: ["ptr", "i32", "i32", "u32", "u32", "u32"],
|
|
37172
37221
|
returns: "void"
|
|
37173
37222
|
},
|
|
37223
|
+
clearCurrentHitGrid: {
|
|
37224
|
+
args: ["ptr"],
|
|
37225
|
+
returns: "void"
|
|
37226
|
+
},
|
|
37227
|
+
hitGridPushScissorRect: {
|
|
37228
|
+
args: ["ptr", "i32", "i32", "u32", "u32"],
|
|
37229
|
+
returns: "void"
|
|
37230
|
+
},
|
|
37231
|
+
hitGridPopScissorRect: {
|
|
37232
|
+
args: ["ptr"],
|
|
37233
|
+
returns: "void"
|
|
37234
|
+
},
|
|
37235
|
+
hitGridClearScissorRects: {
|
|
37236
|
+
args: ["ptr"],
|
|
37237
|
+
returns: "void"
|
|
37238
|
+
},
|
|
37239
|
+
addToCurrentHitGridClipped: {
|
|
37240
|
+
args: ["ptr", "i32", "i32", "u32", "u32", "u32"],
|
|
37241
|
+
returns: "void"
|
|
37242
|
+
},
|
|
37174
37243
|
checkHit: {
|
|
37175
37244
|
args: ["ptr", "u32", "u32"],
|
|
37176
37245
|
returns: "u32"
|
|
37177
37246
|
},
|
|
37247
|
+
getHitGridDirty: {
|
|
37248
|
+
args: ["ptr"],
|
|
37249
|
+
returns: "bool"
|
|
37250
|
+
},
|
|
37178
37251
|
dumpHitGrid: {
|
|
37179
37252
|
args: ["ptr"],
|
|
37180
37253
|
returns: "void"
|
|
@@ -37223,6 +37296,10 @@ function getOpenTUILib(libPath) {
|
|
|
37223
37296
|
args: ["ptr"],
|
|
37224
37297
|
returns: "void"
|
|
37225
37298
|
},
|
|
37299
|
+
writeOut: {
|
|
37300
|
+
args: ["ptr", "ptr", "u64"],
|
|
37301
|
+
returns: "void"
|
|
37302
|
+
},
|
|
37226
37303
|
createTextBuffer: {
|
|
37227
37304
|
args: ["u8"],
|
|
37228
37305
|
returns: "ptr"
|
|
@@ -37435,6 +37512,10 @@ function getOpenTUILib(libPath) {
|
|
|
37435
37512
|
args: ["ptr", "ptr"],
|
|
37436
37513
|
returns: "void"
|
|
37437
37514
|
},
|
|
37515
|
+
textBufferViewSetTruncate: {
|
|
37516
|
+
args: ["ptr", "bool"],
|
|
37517
|
+
returns: "void"
|
|
37518
|
+
},
|
|
37438
37519
|
textBufferViewMeasureForDimensions: {
|
|
37439
37520
|
args: ["ptr", "u32", "u32", "ptr"],
|
|
37440
37521
|
returns: "bool"
|
|
@@ -38267,9 +38348,27 @@ class FFIRenderLib {
|
|
|
38267
38348
|
addToHitGrid(renderer, x, y, width, height, id) {
|
|
38268
38349
|
this.opentui.symbols.addToHitGrid(renderer, x, y, width, height, id);
|
|
38269
38350
|
}
|
|
38351
|
+
clearCurrentHitGrid(renderer) {
|
|
38352
|
+
this.opentui.symbols.clearCurrentHitGrid(renderer);
|
|
38353
|
+
}
|
|
38354
|
+
hitGridPushScissorRect(renderer, x, y, width, height) {
|
|
38355
|
+
this.opentui.symbols.hitGridPushScissorRect(renderer, x, y, width, height);
|
|
38356
|
+
}
|
|
38357
|
+
hitGridPopScissorRect(renderer) {
|
|
38358
|
+
this.opentui.symbols.hitGridPopScissorRect(renderer);
|
|
38359
|
+
}
|
|
38360
|
+
hitGridClearScissorRects(renderer) {
|
|
38361
|
+
this.opentui.symbols.hitGridClearScissorRects(renderer);
|
|
38362
|
+
}
|
|
38363
|
+
addToCurrentHitGridClipped(renderer, x, y, width, height, id) {
|
|
38364
|
+
this.opentui.symbols.addToCurrentHitGridClipped(renderer, x, y, width, height, id);
|
|
38365
|
+
}
|
|
38270
38366
|
checkHit(renderer, x, y) {
|
|
38271
38367
|
return this.opentui.symbols.checkHit(renderer, x, y);
|
|
38272
38368
|
}
|
|
38369
|
+
getHitGridDirty(renderer) {
|
|
38370
|
+
return this.opentui.symbols.getHitGridDirty(renderer);
|
|
38371
|
+
}
|
|
38273
38372
|
dumpHitGrid(renderer) {
|
|
38274
38373
|
this.opentui.symbols.dumpHitGrid(renderer);
|
|
38275
38374
|
}
|
|
@@ -38311,6 +38410,12 @@ class FFIRenderLib {
|
|
|
38311
38410
|
queryPixelResolution(renderer) {
|
|
38312
38411
|
this.opentui.symbols.queryPixelResolution(renderer);
|
|
38313
38412
|
}
|
|
38413
|
+
writeOut(renderer, data) {
|
|
38414
|
+
const bytes = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
38415
|
+
if (bytes.length === 0)
|
|
38416
|
+
return;
|
|
38417
|
+
this.opentui.symbols.writeOut(renderer, ptr3(bytes), bytes.length);
|
|
38418
|
+
}
|
|
38314
38419
|
createTextBuffer(widthMethod) {
|
|
38315
38420
|
const widthMethodCode = widthMethod === "wcwidth" ? 0 : 1;
|
|
38316
38421
|
const bufferPtr = this.opentui.symbols.createTextBuffer(widthMethodCode);
|
|
@@ -38557,6 +38662,9 @@ class FFIRenderLib {
|
|
|
38557
38662
|
textBufferViewSetTabIndicatorColor(view, color) {
|
|
38558
38663
|
this.opentui.symbols.textBufferViewSetTabIndicatorColor(view, color.buffer);
|
|
38559
38664
|
}
|
|
38665
|
+
textBufferViewSetTruncate(view, truncate) {
|
|
38666
|
+
this.opentui.symbols.textBufferViewSetTruncate(view, truncate);
|
|
38667
|
+
}
|
|
38560
38668
|
textBufferViewMeasureForDimensions(view, width, height) {
|
|
38561
38669
|
const resultBuffer = new ArrayBuffer(MeasureResultStruct.size);
|
|
38562
38670
|
const resultPtr = ptr3(new Uint8Array(resultBuffer));
|
|
@@ -38991,6 +39099,7 @@ class FFIRenderLib {
|
|
|
38991
39099
|
sync: caps.sync,
|
|
38992
39100
|
bracketed_paste: caps.bracketed_paste,
|
|
38993
39101
|
hyperlinks: caps.hyperlinks,
|
|
39102
|
+
explicit_cursor_positioning: caps.explicit_cursor_positioning,
|
|
38994
39103
|
terminal: {
|
|
38995
39104
|
name: caps.term_name ?? "",
|
|
38996
39105
|
version: caps.term_version ?? "",
|
|
@@ -39647,9 +39756,9 @@ class Renderable extends BaseRenderable {
|
|
|
39647
39756
|
if (this._translateX === value)
|
|
39648
39757
|
return;
|
|
39649
39758
|
this._translateX = value;
|
|
39650
|
-
this.requestRender();
|
|
39651
39759
|
if (this.parent)
|
|
39652
39760
|
this.parent.childrenPrimarySortDirty = true;
|
|
39761
|
+
this.requestRender();
|
|
39653
39762
|
}
|
|
39654
39763
|
get translateY() {
|
|
39655
39764
|
return this._translateY;
|
|
@@ -39658,9 +39767,9 @@ class Renderable extends BaseRenderable {
|
|
|
39658
39767
|
if (this._translateY === value)
|
|
39659
39768
|
return;
|
|
39660
39769
|
this._translateY = value;
|
|
39661
|
-
this.requestRender();
|
|
39662
39770
|
if (this.parent)
|
|
39663
39771
|
this.parent.childrenPrimarySortDirty = true;
|
|
39772
|
+
this.requestRender();
|
|
39664
39773
|
}
|
|
39665
39774
|
get x() {
|
|
39666
39775
|
if (this.parent) {
|
|
@@ -39747,6 +39856,7 @@ class Renderable extends BaseRenderable {
|
|
|
39747
39856
|
if (this._zIndex !== value) {
|
|
39748
39857
|
this._zIndex = value;
|
|
39749
39858
|
this.parent?.requestZIndexSort();
|
|
39859
|
+
this.requestRender();
|
|
39750
39860
|
}
|
|
39751
39861
|
}
|
|
39752
39862
|
requestZIndexSort() {
|
|
@@ -40070,17 +40180,20 @@ class Renderable extends BaseRenderable {
|
|
|
40070
40180
|
const layout = this.yogaNode.getComputedLayout();
|
|
40071
40181
|
const oldX = this._x;
|
|
40072
40182
|
const oldY = this._y;
|
|
40183
|
+
const oldWidth = this._widthValue;
|
|
40184
|
+
const oldHeight = this._heightValue;
|
|
40073
40185
|
this._x = layout.left;
|
|
40074
40186
|
this._y = layout.top;
|
|
40075
40187
|
const newWidth = Math.max(layout.width, 1);
|
|
40076
40188
|
const newHeight = Math.max(layout.height, 1);
|
|
40077
|
-
const sizeChanged =
|
|
40189
|
+
const sizeChanged = oldWidth !== newWidth || oldHeight !== newHeight;
|
|
40078
40190
|
this._widthValue = newWidth;
|
|
40079
40191
|
this._heightValue = newHeight;
|
|
40080
40192
|
if (sizeChanged) {
|
|
40081
40193
|
this.onLayoutResize(newWidth, newHeight);
|
|
40082
40194
|
}
|
|
40083
|
-
|
|
40195
|
+
const positionChanged = oldX !== this._x || oldY !== this._y;
|
|
40196
|
+
if (positionChanged) {
|
|
40084
40197
|
if (this.parent)
|
|
40085
40198
|
this.parent.childrenPrimarySortDirty = true;
|
|
40086
40199
|
}
|
|
@@ -40293,7 +40406,9 @@ class Renderable extends BaseRenderable {
|
|
|
40293
40406
|
x: scissorRect.x,
|
|
40294
40407
|
y: scissorRect.y,
|
|
40295
40408
|
width: scissorRect.width,
|
|
40296
|
-
height: scissorRect.height
|
|
40409
|
+
height: scissorRect.height,
|
|
40410
|
+
screenX: this.x,
|
|
40411
|
+
screenY: this.y
|
|
40297
40412
|
});
|
|
40298
40413
|
}
|
|
40299
40414
|
const visibleChildren = this._getVisibleChildren();
|
|
@@ -40509,6 +40624,7 @@ class RootRenderable extends Renderable {
|
|
|
40509
40624
|
}
|
|
40510
40625
|
this.renderList.length = 0;
|
|
40511
40626
|
this.updateLayout(deltaTime, this.renderList);
|
|
40627
|
+
this._ctx.clearHitGridScissorRects();
|
|
40512
40628
|
for (let i = 1;i < this.renderList.length; i++) {
|
|
40513
40629
|
const command = this.renderList[i];
|
|
40514
40630
|
switch (command.action) {
|
|
@@ -40519,9 +40635,11 @@ class RootRenderable extends Renderable {
|
|
|
40519
40635
|
break;
|
|
40520
40636
|
case "pushScissorRect":
|
|
40521
40637
|
buffer.pushScissorRect(command.x, command.y, command.width, command.height);
|
|
40638
|
+
this._ctx.pushHitGridScissorRect(command.screenX, command.screenY, command.width, command.height);
|
|
40522
40639
|
break;
|
|
40523
40640
|
case "popScissorRect":
|
|
40524
40641
|
buffer.popScissorRect();
|
|
40642
|
+
this._ctx.popHitGridScissorRect();
|
|
40525
40643
|
break;
|
|
40526
40644
|
case "pushOpacity":
|
|
40527
40645
|
buffer.pushOpacity(command.opacity);
|
|
@@ -42037,6 +42155,8 @@ class CliRenderer extends EventEmitter9 {
|
|
|
42037
42155
|
exitSignals;
|
|
42038
42156
|
_exitListenersAdded = false;
|
|
42039
42157
|
_isDestroyed = false;
|
|
42158
|
+
_destroyPending = false;
|
|
42159
|
+
_destroyFinalized = false;
|
|
42040
42160
|
nextRenderBuffer;
|
|
42041
42161
|
currentRenderBuffer;
|
|
42042
42162
|
_isRunning = false;
|
|
@@ -42122,6 +42242,8 @@ class CliRenderer extends EventEmitter9 {
|
|
|
42122
42242
|
}).bind(this);
|
|
42123
42243
|
_capabilities = null;
|
|
42124
42244
|
_latestPointer = { x: 0, y: 0 };
|
|
42245
|
+
_hasPointer = false;
|
|
42246
|
+
_lastPointerModifiers = { shift: false, alt: false, ctrl: false };
|
|
42125
42247
|
_currentFocusedRenderable = null;
|
|
42126
42248
|
lifecyclePasses = new Set;
|
|
42127
42249
|
_openConsoleOnError = true;
|
|
@@ -42303,16 +42425,39 @@ Captured output:
|
|
|
42303
42425
|
}
|
|
42304
42426
|
this._currentFocusedRenderable = renderable;
|
|
42305
42427
|
}
|
|
42428
|
+
setCapturedRenderable(renderable) {
|
|
42429
|
+
if (this.capturedRenderable === renderable) {
|
|
42430
|
+
return;
|
|
42431
|
+
}
|
|
42432
|
+
this.capturedRenderable = renderable;
|
|
42433
|
+
}
|
|
42306
42434
|
addToHitGrid(x, y, width, height, id) {
|
|
42307
42435
|
if (id !== this.capturedRenderable?.num) {
|
|
42308
42436
|
this.lib.addToHitGrid(this.rendererPtr, x, y, width, height, id);
|
|
42309
42437
|
}
|
|
42310
42438
|
}
|
|
42439
|
+
pushHitGridScissorRect(x, y, width, height) {
|
|
42440
|
+
this.lib.hitGridPushScissorRect(this.rendererPtr, x, y, width, height);
|
|
42441
|
+
}
|
|
42442
|
+
popHitGridScissorRect() {
|
|
42443
|
+
this.lib.hitGridPopScissorRect(this.rendererPtr);
|
|
42444
|
+
}
|
|
42445
|
+
clearHitGridScissorRects() {
|
|
42446
|
+
this.lib.hitGridClearScissorRects(this.rendererPtr);
|
|
42447
|
+
}
|
|
42311
42448
|
get widthMethod() {
|
|
42312
42449
|
const caps = this.capabilities;
|
|
42313
42450
|
return caps?.unicode === "wcwidth" ? "wcwidth" : "unicode";
|
|
42314
42451
|
}
|
|
42315
42452
|
writeOut(chunk, encoding, callback) {
|
|
42453
|
+
if (this.rendererPtr && this._useThread) {
|
|
42454
|
+
const data = typeof chunk === "string" ? chunk : chunk?.toString() ?? "";
|
|
42455
|
+
this.lib.writeOut(this.rendererPtr, data);
|
|
42456
|
+
if (typeof callback === "function") {
|
|
42457
|
+
process.nextTick(callback);
|
|
42458
|
+
}
|
|
42459
|
+
return true;
|
|
42460
|
+
}
|
|
42316
42461
|
return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback);
|
|
42317
42462
|
}
|
|
42318
42463
|
requestRender() {
|
|
@@ -42502,7 +42647,11 @@ Captured output:
|
|
|
42502
42647
|
const backgroundColor = this.backgroundColor.toInts();
|
|
42503
42648
|
const newlines = " ".repeat(this.width) + `
|
|
42504
42649
|
`.repeat(space);
|
|
42505
|
-
|
|
42650
|
+
if (backgroundColor[3] === 0) {
|
|
42651
|
+
clear = newlines;
|
|
42652
|
+
} else {
|
|
42653
|
+
clear = ANSI.setRgbBackground(backgroundColor[0], backgroundColor[1], backgroundColor[2]) + newlines + ANSI.resetBackground;
|
|
42654
|
+
}
|
|
42506
42655
|
}
|
|
42507
42656
|
this.writeOut(flush + move + output + clear);
|
|
42508
42657
|
return true;
|
|
@@ -42513,7 +42662,7 @@ Captured output:
|
|
|
42513
42662
|
}
|
|
42514
42663
|
disableMouse() {
|
|
42515
42664
|
this._useMouse = false;
|
|
42516
|
-
this.
|
|
42665
|
+
this.setCapturedRenderable(undefined);
|
|
42517
42666
|
this.mouseParser.reset();
|
|
42518
42667
|
this.lib.disableMouse(this.rendererPtr);
|
|
42519
42668
|
}
|
|
@@ -42631,6 +42780,8 @@ Captured output:
|
|
|
42631
42780
|
}
|
|
42632
42781
|
this._latestPointer.x = mouseEvent.x;
|
|
42633
42782
|
this._latestPointer.y = mouseEvent.y;
|
|
42783
|
+
this._hasPointer = true;
|
|
42784
|
+
this._lastPointerModifiers = mouseEvent.modifiers;
|
|
42634
42785
|
if (this._console.visible) {
|
|
42635
42786
|
const consoleBounds = this._console.bounds;
|
|
42636
42787
|
if (mouseEvent.x >= consoleBounds.x && mouseEvent.x < consoleBounds.x + consoleBounds.width && mouseEvent.y >= consoleBounds.y && mouseEvent.y < consoleBounds.y + consoleBounds.height) {
|
|
@@ -42641,7 +42792,7 @@ Captured output:
|
|
|
42641
42792
|
}
|
|
42642
42793
|
}
|
|
42643
42794
|
if (mouseEvent.type === "scroll") {
|
|
42644
|
-
const maybeRenderableId2 = this.
|
|
42795
|
+
const maybeRenderableId2 = this.hitTest(mouseEvent.x, mouseEvent.y);
|
|
42645
42796
|
const maybeRenderable2 = Renderable.renderablesByNumber.get(maybeRenderableId2);
|
|
42646
42797
|
if (maybeRenderable2) {
|
|
42647
42798
|
const event2 = new MouseEvent(maybeRenderable2, mouseEvent);
|
|
@@ -42649,7 +42800,7 @@ Captured output:
|
|
|
42649
42800
|
}
|
|
42650
42801
|
return true;
|
|
42651
42802
|
}
|
|
42652
|
-
const maybeRenderableId = this.
|
|
42803
|
+
const maybeRenderableId = this.hitTest(mouseEvent.x, mouseEvent.y);
|
|
42653
42804
|
const sameElement = maybeRenderableId === this.lastOverRenderableNum;
|
|
42654
42805
|
this.lastOverRenderableNum = maybeRenderableId;
|
|
42655
42806
|
const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId);
|
|
@@ -42718,20 +42869,20 @@ Captured output:
|
|
|
42718
42869
|
}
|
|
42719
42870
|
this.lastOverRenderable = this.capturedRenderable;
|
|
42720
42871
|
this.lastOverRenderableNum = this.capturedRenderable.num;
|
|
42721
|
-
this.
|
|
42872
|
+
this.setCapturedRenderable(undefined);
|
|
42722
42873
|
this.requestRender();
|
|
42723
42874
|
}
|
|
42724
42875
|
let event = undefined;
|
|
42725
42876
|
if (maybeRenderable) {
|
|
42726
42877
|
if (mouseEvent.type === "drag" && mouseEvent.button === 0) {
|
|
42727
|
-
this.
|
|
42878
|
+
this.setCapturedRenderable(maybeRenderable);
|
|
42728
42879
|
} else {
|
|
42729
|
-
this.
|
|
42880
|
+
this.setCapturedRenderable(undefined);
|
|
42730
42881
|
}
|
|
42731
42882
|
event = new MouseEvent(maybeRenderable, mouseEvent);
|
|
42732
42883
|
maybeRenderable.processMouseEvent(event);
|
|
42733
42884
|
} else {
|
|
42734
|
-
this.
|
|
42885
|
+
this.setCapturedRenderable(undefined);
|
|
42735
42886
|
this.lastOverRenderable = undefined;
|
|
42736
42887
|
}
|
|
42737
42888
|
if (!event?.defaultPrevented && mouseEvent.type === "down" && this.currentSelection) {
|
|
@@ -42741,6 +42892,42 @@ Captured output:
|
|
|
42741
42892
|
}
|
|
42742
42893
|
return false;
|
|
42743
42894
|
}
|
|
42895
|
+
recheckHoverState() {
|
|
42896
|
+
if (this._isDestroyed || !this._hasPointer)
|
|
42897
|
+
return;
|
|
42898
|
+
if (this.capturedRenderable)
|
|
42899
|
+
return;
|
|
42900
|
+
const hitId = this.hitTest(this._latestPointer.x, this._latestPointer.y);
|
|
42901
|
+
const hitRenderable = Renderable.renderablesByNumber.get(hitId);
|
|
42902
|
+
const lastOver = this.lastOverRenderable;
|
|
42903
|
+
if (lastOver?.num === hitId) {
|
|
42904
|
+
this.lastOverRenderableNum = hitId;
|
|
42905
|
+
return;
|
|
42906
|
+
}
|
|
42907
|
+
const baseEvent = {
|
|
42908
|
+
type: "move",
|
|
42909
|
+
button: 0,
|
|
42910
|
+
x: this._latestPointer.x,
|
|
42911
|
+
y: this._latestPointer.y,
|
|
42912
|
+
modifiers: this._lastPointerModifiers
|
|
42913
|
+
};
|
|
42914
|
+
if (lastOver) {
|
|
42915
|
+
const event = new MouseEvent(lastOver, { ...baseEvent, type: "out" });
|
|
42916
|
+
lastOver.processMouseEvent(event);
|
|
42917
|
+
}
|
|
42918
|
+
this.lastOverRenderable = hitRenderable;
|
|
42919
|
+
this.lastOverRenderableNum = hitId;
|
|
42920
|
+
if (hitRenderable) {
|
|
42921
|
+
const event = new MouseEvent(hitRenderable, {
|
|
42922
|
+
...baseEvent,
|
|
42923
|
+
type: "over"
|
|
42924
|
+
});
|
|
42925
|
+
hitRenderable.processMouseEvent(event);
|
|
42926
|
+
}
|
|
42927
|
+
}
|
|
42928
|
+
hitTest(x, y) {
|
|
42929
|
+
return this.lib.checkHit(this.rendererPtr, x, y);
|
|
42930
|
+
}
|
|
42744
42931
|
takeMemorySnapshot() {
|
|
42745
42932
|
if (this._isDestroyed)
|
|
42746
42933
|
return;
|
|
@@ -42801,7 +42988,7 @@ Captured output:
|
|
|
42801
42988
|
this._terminalWidth = width;
|
|
42802
42989
|
this._terminalHeight = height;
|
|
42803
42990
|
this.queryPixelResolution();
|
|
42804
|
-
this.
|
|
42991
|
+
this.setCapturedRenderable(undefined);
|
|
42805
42992
|
this.mouseParser.reset();
|
|
42806
42993
|
if (this._splitHeight > 0) {
|
|
42807
42994
|
if (width < prevWidth) {
|
|
@@ -43013,6 +43200,17 @@ Captured output:
|
|
|
43013
43200
|
if (this._isDestroyed)
|
|
43014
43201
|
return;
|
|
43015
43202
|
this._isDestroyed = true;
|
|
43203
|
+
this._destroyPending = true;
|
|
43204
|
+
if (this.rendering) {
|
|
43205
|
+
return;
|
|
43206
|
+
}
|
|
43207
|
+
this.finalizeDestroy();
|
|
43208
|
+
}
|
|
43209
|
+
finalizeDestroy() {
|
|
43210
|
+
if (this._destroyFinalized)
|
|
43211
|
+
return;
|
|
43212
|
+
this._destroyFinalized = true;
|
|
43213
|
+
this._destroyPending = false;
|
|
43016
43214
|
process.removeListener("SIGWINCH", this.sigwinchHandler);
|
|
43017
43215
|
process.removeListener("uncaughtException", this.handleError);
|
|
43018
43216
|
process.removeListener("unhandledRejection", this.handleError);
|
|
@@ -43044,7 +43242,7 @@ Captured output:
|
|
|
43044
43242
|
}
|
|
43045
43243
|
this._isRunning = false;
|
|
43046
43244
|
this.waitingForPixelResolution = false;
|
|
43047
|
-
this.
|
|
43245
|
+
this.setCapturedRenderable(undefined);
|
|
43048
43246
|
try {
|
|
43049
43247
|
this.root.destroyRecursively();
|
|
43050
43248
|
} catch (e) {
|
|
@@ -43089,65 +43287,74 @@ Captured output:
|
|
|
43089
43287
|
clearTimeout(this.renderTimeout);
|
|
43090
43288
|
this.renderTimeout = null;
|
|
43091
43289
|
}
|
|
43092
|
-
|
|
43093
|
-
|
|
43094
|
-
|
|
43095
|
-
|
|
43096
|
-
|
|
43097
|
-
|
|
43098
|
-
this.
|
|
43099
|
-
|
|
43100
|
-
|
|
43101
|
-
|
|
43102
|
-
|
|
43103
|
-
|
|
43104
|
-
|
|
43105
|
-
|
|
43106
|
-
|
|
43107
|
-
|
|
43108
|
-
|
|
43109
|
-
callback
|
|
43110
|
-
|
|
43111
|
-
|
|
43112
|
-
|
|
43113
|
-
|
|
43114
|
-
|
|
43115
|
-
|
|
43116
|
-
|
|
43117
|
-
|
|
43118
|
-
|
|
43119
|
-
|
|
43120
|
-
|
|
43121
|
-
|
|
43122
|
-
|
|
43123
|
-
|
|
43124
|
-
|
|
43125
|
-
|
|
43126
|
-
postProcessFn
|
|
43127
|
-
|
|
43128
|
-
|
|
43129
|
-
|
|
43130
|
-
this.
|
|
43131
|
-
|
|
43132
|
-
|
|
43133
|
-
|
|
43134
|
-
|
|
43135
|
-
|
|
43136
|
-
|
|
43137
|
-
|
|
43138
|
-
|
|
43139
|
-
|
|
43140
|
-
this.
|
|
43290
|
+
try {
|
|
43291
|
+
const now = Date.now();
|
|
43292
|
+
const elapsed = now - this.lastTime;
|
|
43293
|
+
const deltaTime = elapsed;
|
|
43294
|
+
this.lastTime = now;
|
|
43295
|
+
this.frameCount++;
|
|
43296
|
+
if (now - this.lastFpsTime >= 1000) {
|
|
43297
|
+
this.currentFps = this.frameCount;
|
|
43298
|
+
this.frameCount = 0;
|
|
43299
|
+
this.lastFpsTime = now;
|
|
43300
|
+
}
|
|
43301
|
+
this.renderStats.frameCount++;
|
|
43302
|
+
this.renderStats.fps = this.currentFps;
|
|
43303
|
+
const overallStart = performance.now();
|
|
43304
|
+
const frameRequests = Array.from(this.animationRequest.values());
|
|
43305
|
+
this.animationRequest.clear();
|
|
43306
|
+
const animationRequestStart = performance.now();
|
|
43307
|
+
for (const callback of frameRequests) {
|
|
43308
|
+
callback(deltaTime);
|
|
43309
|
+
this.dropLive();
|
|
43310
|
+
}
|
|
43311
|
+
const animationRequestEnd = performance.now();
|
|
43312
|
+
const animationRequestTime = animationRequestEnd - animationRequestStart;
|
|
43313
|
+
const start = performance.now();
|
|
43314
|
+
for (const frameCallback of this.frameCallbacks) {
|
|
43315
|
+
try {
|
|
43316
|
+
await frameCallback(deltaTime);
|
|
43317
|
+
} catch (error) {
|
|
43318
|
+
console.error("Error in frame callback:", error);
|
|
43319
|
+
}
|
|
43320
|
+
}
|
|
43321
|
+
const end = performance.now();
|
|
43322
|
+
this.renderStats.frameCallbackTime = end - start;
|
|
43323
|
+
this.root.render(this.nextRenderBuffer, deltaTime);
|
|
43324
|
+
for (const postProcessFn of this.postProcessFns) {
|
|
43325
|
+
postProcessFn(this.nextRenderBuffer, deltaTime);
|
|
43326
|
+
}
|
|
43327
|
+
this._console.renderToBuffer(this.nextRenderBuffer);
|
|
43328
|
+
if (!this._isDestroyed) {
|
|
43329
|
+
this.renderNative();
|
|
43330
|
+
if (this._useMouse && this.lib.getHitGridDirty(this.rendererPtr)) {
|
|
43331
|
+
this.recheckHoverState();
|
|
43332
|
+
}
|
|
43333
|
+
const overallFrameTime = performance.now() - overallStart;
|
|
43334
|
+
this.lib.updateStats(this.rendererPtr, overallFrameTime, this.renderStats.fps, this.renderStats.frameCallbackTime);
|
|
43335
|
+
if (this.gatherStats) {
|
|
43336
|
+
this.collectStatSample(overallFrameTime);
|
|
43337
|
+
}
|
|
43338
|
+
if (this._isRunning || this.immediateRerenderRequested) {
|
|
43339
|
+
const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime;
|
|
43340
|
+
const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime));
|
|
43341
|
+
this.immediateRerenderRequested = false;
|
|
43342
|
+
this.renderTimeout = setTimeout(() => {
|
|
43343
|
+
this.renderTimeout = null;
|
|
43344
|
+
this.loop();
|
|
43345
|
+
}, delay);
|
|
43346
|
+
} else {
|
|
43347
|
+
clearTimeout(this.renderTimeout);
|
|
43141
43348
|
this.renderTimeout = null;
|
|
43142
|
-
|
|
43143
|
-
}, delay);
|
|
43144
|
-
} else {
|
|
43145
|
-
clearTimeout(this.renderTimeout);
|
|
43146
|
-
this.renderTimeout = null;
|
|
43349
|
+
}
|
|
43147
43350
|
}
|
|
43351
|
+
} finally {
|
|
43352
|
+
this.rendering = false;
|
|
43353
|
+
if (this._destroyPending) {
|
|
43354
|
+
this.finalizeDestroy();
|
|
43355
|
+
}
|
|
43356
|
+
this.resolveIdleIfNeeded();
|
|
43148
43357
|
}
|
|
43149
|
-
this.rendering = false;
|
|
43150
|
-
this.resolveIdleIfNeeded();
|
|
43151
43358
|
}
|
|
43152
43359
|
intermediateRender() {
|
|
43153
43360
|
this.immediateRerenderRequested = true;
|
|
@@ -43252,7 +43459,7 @@ Captured output:
|
|
|
43252
43459
|
requestSelectionUpdate() {
|
|
43253
43460
|
if (this.currentSelection?.isSelecting) {
|
|
43254
43461
|
const pointer = this._latestPointer;
|
|
43255
|
-
const maybeRenderableId = this.
|
|
43462
|
+
const maybeRenderableId = this.hitTest(pointer.x, pointer.y);
|
|
43256
43463
|
const maybeRenderable = Renderable.renderablesByNumber.get(maybeRenderableId);
|
|
43257
43464
|
this.updateSelection(maybeRenderable, pointer.x, pointer.y);
|
|
43258
43465
|
}
|
|
@@ -43340,7 +43547,7 @@ Captured output:
|
|
|
43340
43547
|
}
|
|
43341
43548
|
}
|
|
43342
43549
|
|
|
43343
|
-
// node_modules/@opentui/core/index.js
|
|
43550
|
+
// ../../node_modules/.pnpm/@opentui+core@0.1.74_stage-js@1.0.0-alpha.17_typescript@5.9.3_web-tree-sitter@0.25.10/node_modules/@opentui/core/index.js
|
|
43344
43551
|
import { EventEmitter as EventEmitter10 } from "events";
|
|
43345
43552
|
|
|
43346
43553
|
class TextBufferView {
|
|
@@ -43451,6 +43658,10 @@ class TextBufferView {
|
|
|
43451
43658
|
this.guard();
|
|
43452
43659
|
this.lib.textBufferViewSetTabIndicatorColor(this.viewPtr, color);
|
|
43453
43660
|
}
|
|
43661
|
+
setTruncate(truncate) {
|
|
43662
|
+
this.guard();
|
|
43663
|
+
this.lib.textBufferViewSetTruncate(this.viewPtr, truncate);
|
|
43664
|
+
}
|
|
43454
43665
|
measureForDimensions(width, height) {
|
|
43455
43666
|
this.guard();
|
|
43456
43667
|
return this.lib.textBufferViewMeasureForDimensions(this.viewPtr, width, height);
|
|
@@ -44645,6 +44856,7 @@ class TextBufferRenderable extends Renderable {
|
|
|
44645
44856
|
_tabIndicatorColor;
|
|
44646
44857
|
_scrollX = 0;
|
|
44647
44858
|
_scrollY = 0;
|
|
44859
|
+
_truncate = false;
|
|
44648
44860
|
textBuffer;
|
|
44649
44861
|
textBufferView;
|
|
44650
44862
|
_defaultOptions = {
|
|
@@ -44656,7 +44868,8 @@ class TextBufferRenderable extends Renderable {
|
|
|
44656
44868
|
attributes: 0,
|
|
44657
44869
|
wrapMode: "word",
|
|
44658
44870
|
tabIndicator: undefined,
|
|
44659
|
-
tabIndicatorColor: undefined
|
|
44871
|
+
tabIndicatorColor: undefined,
|
|
44872
|
+
truncate: false
|
|
44660
44873
|
};
|
|
44661
44874
|
constructor(ctx, options) {
|
|
44662
44875
|
super(ctx, options);
|
|
@@ -44669,6 +44882,7 @@ class TextBufferRenderable extends Renderable {
|
|
|
44669
44882
|
this._wrapMode = options.wrapMode ?? this._defaultOptions.wrapMode;
|
|
44670
44883
|
this._tabIndicator = options.tabIndicator ?? this._defaultOptions.tabIndicator;
|
|
44671
44884
|
this._tabIndicatorColor = options.tabIndicatorColor ? parseColor(options.tabIndicatorColor) : this._defaultOptions.tabIndicatorColor;
|
|
44885
|
+
this._truncate = options.truncate ?? this._defaultOptions.truncate;
|
|
44672
44886
|
this.textBuffer = TextBuffer.create(this._ctx.widthMethod);
|
|
44673
44887
|
this.textBufferView = TextBufferView.create(this.textBuffer);
|
|
44674
44888
|
const style = SyntaxStyle.create();
|
|
@@ -44690,6 +44904,7 @@ class TextBufferRenderable extends Renderable {
|
|
|
44690
44904
|
if (this.width > 0 && this.height > 0) {
|
|
44691
44905
|
this.textBufferView.setViewport(this._scrollX, this._scrollY, this.width, this.height);
|
|
44692
44906
|
}
|
|
44907
|
+
this.textBufferView.setTruncate(this._truncate);
|
|
44693
44908
|
this.updateTextInfo();
|
|
44694
44909
|
}
|
|
44695
44910
|
onMouseEvent(event) {
|
|
@@ -44870,6 +45085,16 @@ class TextBufferRenderable extends Renderable {
|
|
|
44870
45085
|
this.requestRender();
|
|
44871
45086
|
}
|
|
44872
45087
|
}
|
|
45088
|
+
get truncate() {
|
|
45089
|
+
return this._truncate;
|
|
45090
|
+
}
|
|
45091
|
+
set truncate(value) {
|
|
45092
|
+
if (this._truncate !== value) {
|
|
45093
|
+
this._truncate = value;
|
|
45094
|
+
this.textBufferView.setTruncate(value);
|
|
45095
|
+
this.requestRender();
|
|
45096
|
+
}
|
|
45097
|
+
}
|
|
44873
45098
|
onResize(width, height) {
|
|
44874
45099
|
this.textBufferView.setViewport(this._scrollX, this._scrollY, width, height);
|
|
44875
45100
|
this.yogaNode.markDirty();
|
|
@@ -46648,7 +46873,8 @@ class TextRenderable extends TextBufferRenderable {
|
|
|
46648
46873
|
const chunks = this.rootTextNode.gatherWithInheritedStyle({
|
|
46649
46874
|
fg: this._defaultFg,
|
|
46650
46875
|
bg: this._defaultBg,
|
|
46651
|
-
attributes: this._defaultAttributes
|
|
46876
|
+
attributes: this._defaultAttributes,
|
|
46877
|
+
link: undefined
|
|
46652
46878
|
});
|
|
46653
46879
|
this.textBuffer.setStyledText(new StyledText(chunks));
|
|
46654
46880
|
this.refreshLocalSelection();
|
|
@@ -50865,7 +51091,7 @@ class TextareaRenderable extends EditBufferRenderable {
|
|
|
50865
51091
|
}
|
|
50866
51092
|
}
|
|
50867
51093
|
|
|
50868
|
-
// node_modules/@opentui/react/index.js
|
|
51094
|
+
// ../../node_modules/.pnpm/@opentui+react@0.1.74_react-devtools-core@7.0.1_react@19.2.3_stage-js@1.0.0-alpha.17_ty_fb46e0fc351a293c6633843011916d07/node_modules/@opentui/react/index.js
|
|
50869
51095
|
init_chunk_e11q5a3p();
|
|
50870
51096
|
var import_react = __toESM(require_react(), 1);
|
|
50871
51097
|
var import_react2 = __toESM(require_react(), 1);
|
|
@@ -51000,6 +51226,36 @@ var useKeyboard = (handler, options = { release: false }) => {
|
|
|
51000
51226
|
};
|
|
51001
51227
|
}, [keyHandler, options.release]);
|
|
51002
51228
|
};
|
|
51229
|
+
var useRenderer = () => {
|
|
51230
|
+
const { renderer } = useAppContext();
|
|
51231
|
+
if (!renderer) {
|
|
51232
|
+
throw new Error("Renderer not found.");
|
|
51233
|
+
}
|
|
51234
|
+
return renderer;
|
|
51235
|
+
};
|
|
51236
|
+
var useOnResize = (callback) => {
|
|
51237
|
+
const renderer = useRenderer();
|
|
51238
|
+
const stableCallback = useEffectEvent(callback);
|
|
51239
|
+
import_react4.useEffect(() => {
|
|
51240
|
+
renderer.on("resize", stableCallback);
|
|
51241
|
+
return () => {
|
|
51242
|
+
renderer.off("resize", stableCallback);
|
|
51243
|
+
};
|
|
51244
|
+
}, [renderer]);
|
|
51245
|
+
return renderer;
|
|
51246
|
+
};
|
|
51247
|
+
var useTerminalDimensions = () => {
|
|
51248
|
+
const renderer = useRenderer();
|
|
51249
|
+
const [dimensions, setDimensions] = import_react5.useState({
|
|
51250
|
+
width: renderer.width,
|
|
51251
|
+
height: renderer.height
|
|
51252
|
+
});
|
|
51253
|
+
const cb = (width, height) => {
|
|
51254
|
+
setDimensions({ width, height });
|
|
51255
|
+
};
|
|
51256
|
+
useOnResize(cb);
|
|
51257
|
+
return dimensions;
|
|
51258
|
+
};
|
|
51003
51259
|
class ErrorBoundary extends import_react8.default.Component {
|
|
51004
51260
|
constructor(props) {
|
|
51005
51261
|
super(props);
|
|
@@ -51023,12 +51279,12 @@ class ErrorBoundary extends import_react8.default.Component {
|
|
|
51023
51279
|
}
|
|
51024
51280
|
var package_default = {
|
|
51025
51281
|
name: "@opentui/react",
|
|
51026
|
-
version: "0.1.
|
|
51282
|
+
version: "0.1.74",
|
|
51027
51283
|
description: "React renderer for building terminal user interfaces using OpenTUI core",
|
|
51028
51284
|
license: "MIT",
|
|
51029
51285
|
repository: {
|
|
51030
51286
|
type: "git",
|
|
51031
|
-
url: "https://github.com/
|
|
51287
|
+
url: "https://github.com/anomalyco/opentui",
|
|
51032
51288
|
directory: "packages/react"
|
|
51033
51289
|
},
|
|
51034
51290
|
module: "src/index.ts",
|
|
@@ -51385,19 +51641,20 @@ var _r = reconciler;
|
|
|
51385
51641
|
var flushSync = _r.flushSyncFromReconciler ?? _r.flushSync;
|
|
51386
51642
|
function createRoot(renderer) {
|
|
51387
51643
|
let container = null;
|
|
51644
|
+
const cleanup = () => {
|
|
51645
|
+
if (container) {
|
|
51646
|
+
reconciler.updateContainer(null, container, null, () => {});
|
|
51647
|
+
reconciler.flushSyncWork();
|
|
51648
|
+
container = null;
|
|
51649
|
+
}
|
|
51650
|
+
};
|
|
51651
|
+
renderer.once(CliRenderEvents.DESTROY, cleanup);
|
|
51388
51652
|
return {
|
|
51389
51653
|
render: (node) => {
|
|
51390
51654
|
engine.attach(renderer);
|
|
51391
51655
|
container = _render(import_react7.default.createElement(AppContext.Provider, { value: { keyHandler: renderer.keyInput, renderer } }, import_react7.default.createElement(ErrorBoundary, null, node)), renderer.root);
|
|
51392
51656
|
},
|
|
51393
|
-
unmount:
|
|
51394
|
-
if (!container) {
|
|
51395
|
-
return;
|
|
51396
|
-
}
|
|
51397
|
-
reconciler.updateContainer(null, container, null, () => {});
|
|
51398
|
-
reconciler.flushSyncWork();
|
|
51399
|
-
container = null;
|
|
51400
|
-
}
|
|
51657
|
+
unmount: cleanup
|
|
51401
51658
|
};
|
|
51402
51659
|
}
|
|
51403
51660
|
|
|
@@ -51410,7 +51667,7 @@ var heroText = `Hello world. You can call me Kai since we're pretty much friends
|
|
|
51410
51667
|
var projects = [
|
|
51411
51668
|
{
|
|
51412
51669
|
title: "Vibedgames",
|
|
51413
|
-
description: "
|
|
51670
|
+
description: "Design, publish, and play personalized multiplayer minigames with your friends",
|
|
51414
51671
|
url: "https://vibedgames.com"
|
|
51415
51672
|
},
|
|
51416
51673
|
{
|
|
@@ -51425,14 +51682,19 @@ var projects = [
|
|
|
51425
51682
|
},
|
|
51426
51683
|
{
|
|
51427
51684
|
title: "Inteligir",
|
|
51428
|
-
description: "
|
|
51685
|
+
description: "Turn your social feed into your personal university with bite-sized lessons",
|
|
51429
51686
|
url: "https://inteligir.com"
|
|
51430
51687
|
},
|
|
51431
51688
|
{
|
|
51432
51689
|
title: "Dataembed",
|
|
51433
|
-
description: "Search the web like a database",
|
|
51690
|
+
description: "Search the web like a database. Query and transform scattered web information",
|
|
51434
51691
|
url: "https://dataembed.com"
|
|
51435
51692
|
},
|
|
51693
|
+
{
|
|
51694
|
+
title: "LoremLLM",
|
|
51695
|
+
description: "Mock responses for LLMs",
|
|
51696
|
+
url: "https://loremllm.com"
|
|
51697
|
+
},
|
|
51436
51698
|
{
|
|
51437
51699
|
title: "Founding",
|
|
51438
51700
|
description: "Your proxy founding team",
|
|
@@ -51445,7 +51707,7 @@ var projects = [
|
|
|
51445
51707
|
},
|
|
51446
51708
|
{
|
|
51447
51709
|
title: "Covid-19 Dashboard",
|
|
51448
|
-
description: "Visualize global Covid-19 data",
|
|
51710
|
+
description: "Visualize global Covid-19 data and trends",
|
|
51449
51711
|
url: "https://covid-19.kyh.io"
|
|
51450
51712
|
},
|
|
51451
51713
|
{
|
|
@@ -51453,44 +51715,73 @@ var projects = [
|
|
|
51453
51715
|
description: "Cute sticker pack",
|
|
51454
51716
|
url: "https://apps.apple.com/us/app/id1209391711"
|
|
51455
51717
|
},
|
|
51718
|
+
{
|
|
51719
|
+
title: "Policing Ice",
|
|
51720
|
+
description: "Documenting incidents of ICE overreach through crowdsourced video evidence",
|
|
51721
|
+
url: "https://policingice.com"
|
|
51722
|
+
},
|
|
51723
|
+
{
|
|
51724
|
+
title: "Kwadrants",
|
|
51725
|
+
description: "Everything lives in a 2x2 matrix",
|
|
51726
|
+
url: "https://kwadrants.com"
|
|
51727
|
+
},
|
|
51456
51728
|
{
|
|
51457
51729
|
title: "Init",
|
|
51458
51730
|
description: "An AI native starter kit to build, launch, and scale your next project",
|
|
51459
51731
|
url: "https://init.kyh.io"
|
|
51732
|
+
},
|
|
51733
|
+
{
|
|
51734
|
+
title: "AI Design Canvas",
|
|
51735
|
+
description: "A full-featured, hackable Next.js and AI sdk design canvas",
|
|
51736
|
+
url: "https://init.kyh.io"
|
|
51737
|
+
},
|
|
51738
|
+
{
|
|
51739
|
+
title: "AI Datagrid",
|
|
51740
|
+
description: "A full-featured, hackable Next.js AI datagrid",
|
|
51741
|
+
url: "https://init.kyh.io"
|
|
51460
51742
|
}
|
|
51461
51743
|
];
|
|
51462
51744
|
var work = [
|
|
51463
51745
|
{
|
|
51464
|
-
title: "Sequoia",
|
|
51465
|
-
description: "
|
|
51746
|
+
title: "Sequoia Capital",
|
|
51747
|
+
description: "Technical Staff",
|
|
51466
51748
|
url: "https://sequoiacap.com"
|
|
51467
51749
|
},
|
|
51468
51750
|
{
|
|
51469
51751
|
title: "Vercel",
|
|
51470
|
-
description: "
|
|
51752
|
+
description: "Software Engineer",
|
|
51471
51753
|
url: "https://vercel.com"
|
|
51472
51754
|
},
|
|
51473
51755
|
{
|
|
51474
51756
|
title: "Google",
|
|
51475
|
-
description: "
|
|
51757
|
+
description: "Design Engineer",
|
|
51476
51758
|
url: "https://grow.google"
|
|
51477
51759
|
},
|
|
51478
51760
|
{
|
|
51479
51761
|
title: "Amazon",
|
|
51480
|
-
description: "
|
|
51762
|
+
description: "Software Engineer",
|
|
51481
51763
|
url: "https://amazon.design"
|
|
51482
51764
|
},
|
|
51765
|
+
{
|
|
51766
|
+
title: "Atrium",
|
|
51767
|
+
description: "Software Engineer",
|
|
51768
|
+
url: "https://crunchbase.com/organization/atrium-lts"
|
|
51769
|
+
},
|
|
51483
51770
|
{
|
|
51484
51771
|
title: "Cardiogram",
|
|
51485
|
-
description: "
|
|
51486
|
-
url: "https://
|
|
51772
|
+
description: "Design Engineer",
|
|
51773
|
+
url: "https://crunchbase.com/organization/cardiogram"
|
|
51487
51774
|
}
|
|
51488
51775
|
];
|
|
51489
51776
|
var contactLinks = [
|
|
51490
51777
|
{ label: "Website", value: "kyh.io", url: "https://kyh.io" },
|
|
51491
51778
|
{ label: "GitHub", value: "github.com/kyh", url: "https://github.com/kyh" },
|
|
51492
51779
|
{ label: "X", value: "x.com/kaiyuhsu", url: "https://x.com/kaiyuhsu" },
|
|
51493
|
-
{
|
|
51780
|
+
{
|
|
51781
|
+
label: "LinkedIn",
|
|
51782
|
+
value: "linkedin.com/in/kyh",
|
|
51783
|
+
url: "https://linkedin.com/in/kyh"
|
|
51784
|
+
},
|
|
51494
51785
|
{ label: "Email", value: "hello@kyh.io", url: "mailto:hello@kyh.io" }
|
|
51495
51786
|
];
|
|
51496
51787
|
|
|
@@ -51519,7 +51810,7 @@ function wrapText(text, width) {
|
|
|
51519
51810
|
return lines;
|
|
51520
51811
|
}
|
|
51521
51812
|
|
|
51522
|
-
// node_modules/@opentui/react/jsx-dev-runtime.js
|
|
51813
|
+
// ../../node_modules/.pnpm/@opentui+react@0.1.74_react-devtools-core@7.0.1_react@19.2.3_stage-js@1.0.0-alpha.17_ty_fb46e0fc351a293c6633843011916d07/node_modules/@opentui/react/jsx-dev-runtime.js
|
|
51523
51814
|
var import_jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
|
|
51524
51815
|
|
|
51525
51816
|
// src/index.tsx
|
|
@@ -51536,7 +51827,7 @@ function App() {
|
|
|
51536
51827
|
const [selectedIndex, setSelectedIndex] = import_react12.useState(0);
|
|
51537
51828
|
const [showContact, setShowContact] = import_react12.useState(false);
|
|
51538
51829
|
const [contactIndex, setContactIndex] = import_react12.useState(0);
|
|
51539
|
-
const termWidth
|
|
51830
|
+
const { width: termWidth, height: termHeight } = useTerminalDimensions();
|
|
51540
51831
|
const contentWidth = termWidth - 4;
|
|
51541
51832
|
const descWidth = contentWidth - DESC_INDENT;
|
|
51542
51833
|
useKeyboard((key) => {
|
|
@@ -51664,44 +51955,48 @@ function App() {
|
|
|
51664
51955
|
flexDirection: "column",
|
|
51665
51956
|
paddingLeft: 2,
|
|
51666
51957
|
paddingTop: 1,
|
|
51667
|
-
|
|
51958
|
+
height: termHeight,
|
|
51959
|
+
width: termWidth,
|
|
51668
51960
|
children: [
|
|
51669
|
-
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("
|
|
51670
|
-
|
|
51961
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("scrollbox", {
|
|
51962
|
+
focused: true,
|
|
51671
51963
|
flexGrow: 1,
|
|
51672
|
-
children:
|
|
51673
|
-
|
|
51674
|
-
|
|
51675
|
-
|
|
51676
|
-
|
|
51677
|
-
|
|
51678
|
-
|
|
51679
|
-
|
|
51680
|
-
|
|
51681
|
-
|
|
51682
|
-
|
|
51683
|
-
|
|
51684
|
-
|
|
51685
|
-
|
|
51686
|
-
|
|
51687
|
-
|
|
51688
|
-
|
|
51689
|
-
|
|
51690
|
-
|
|
51691
|
-
|
|
51692
|
-
|
|
51693
|
-
|
|
51694
|
-
|
|
51695
|
-
|
|
51696
|
-
|
|
51697
|
-
|
|
51698
|
-
|
|
51699
|
-
|
|
51700
|
-
|
|
51701
|
-
|
|
51702
|
-
|
|
51703
|
-
|
|
51704
|
-
|
|
51964
|
+
children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
|
|
51965
|
+
flexDirection: "column",
|
|
51966
|
+
children: [
|
|
51967
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51968
|
+
children: name
|
|
51969
|
+
}, undefined, false, undefined, this),
|
|
51970
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51971
|
+
children: " "
|
|
51972
|
+
}, undefined, false, undefined, this),
|
|
51973
|
+
heroLines.map((line, i) => /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51974
|
+
fg: DIM,
|
|
51975
|
+
children: line
|
|
51976
|
+
}, i, false, undefined, this)),
|
|
51977
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51978
|
+
children: " "
|
|
51979
|
+
}, undefined, false, undefined, this),
|
|
51980
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51981
|
+
children: "Projects"
|
|
51982
|
+
}, undefined, false, undefined, this),
|
|
51983
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51984
|
+
children: " "
|
|
51985
|
+
}, undefined, false, undefined, this),
|
|
51986
|
+
projects.map((project, i) => renderItem(project, i, i === 0)),
|
|
51987
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51988
|
+
children: " "
|
|
51989
|
+
}, undefined, false, undefined, this),
|
|
51990
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51991
|
+
children: "Work"
|
|
51992
|
+
}, undefined, false, undefined, this),
|
|
51993
|
+
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51994
|
+
children: " "
|
|
51995
|
+
}, undefined, false, undefined, this),
|
|
51996
|
+
work.map((item, i) => renderItem(item, projects.length + i, i === 0))
|
|
51997
|
+
]
|
|
51998
|
+
}, undefined, true, undefined, this)
|
|
51999
|
+
}, undefined, false, undefined, this),
|
|
51705
52000
|
/* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
|
|
51706
52001
|
fg: DIM,
|
|
51707
52002
|
children: "\u2191\u2193 navigate enter open c contact q quit"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kyh",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Personal CLI tool",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"access": "public"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@opentui/core": "^0.1.
|
|
17
|
-
"@opentui/react": "^0.1.
|
|
16
|
+
"@opentui/core": "^0.1.74",
|
|
17
|
+
"@opentui/react": "^0.1.74",
|
|
18
18
|
"react": "^19.2.3"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|