@valyrianjs/terminal 0.1.0
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/README.md +71 -0
- package/dist/ansi.d.ts +6 -0
- package/dist/ansi.d.ts.map +1 -0
- package/dist/ansi.js +105 -0
- package/dist/ansi.js.map +1 -0
- package/dist/clipboard.d.ts +3 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +71 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/events.d.ts +62 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +189 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.d.ts +16 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +153 -0
- package/dist/layout.js.map +1 -0
- package/dist/mouse.d.ts +5 -0
- package/dist/mouse.d.ts.map +1 -0
- package/dist/mouse.js +34 -0
- package/dist/mouse.js.map +1 -0
- package/dist/primitives.d.ts +15 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +18 -0
- package/dist/primitives.js.map +1 -0
- package/dist/render.d.ts +5 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +230 -0
- package/dist/render.js.map +1 -0
- package/dist/session.d.ts +3 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +599 -0
- package/dist/session.js.map +1 -0
- package/dist/tree.d.ts +9 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/tree.js +103 -0
- package/dist/tree.js.map +1 -0
- package/dist/types.d.ts +224 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/api-reference.md +273 -0
- package/docs/cookbook.md +286 -0
- package/docs/core-concepts.md +93 -0
- package/docs/getting-started.md +148 -0
- package/docs/interaction-model.md +115 -0
- package/docs/local-demo.md +28 -0
- package/docs/session-runtime.md +451 -0
- package/package.json +44 -0
- package/tsconfig.build.json +15 -0
- package/tsconfig.json +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# valyrianjs-terminal
|
|
2
|
+
|
|
3
|
+
Adapter terminal-first para `valyrian.js`. Sirve para renderizar pantallas de texto con primitivas propias y, si lo necesitas, montar sesiones interactivas sobre `stdin` y `stdout`.
|
|
4
|
+
|
|
5
|
+
## Que resuelve
|
|
6
|
+
|
|
7
|
+
- layout terminal-first con `Screen`, `Box`, `View`, `Text`, `Table`, `Row` y `Td`
|
|
8
|
+
- primitivas interactivas con `Input`, `Button`, `List` y `ScrollView`
|
|
9
|
+
- render estatico a texto con `renderTerminal()`
|
|
10
|
+
- runtime interactivo con `mountTerminal()`
|
|
11
|
+
|
|
12
|
+
## Instalacion
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install valyrianjs-terminal valyrian.js
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Elige el entrypoint correcto
|
|
19
|
+
|
|
20
|
+
- Usa `renderTerminal()` para snapshots, pruebas o salidas no interactivas.
|
|
21
|
+
- Usa `mountTerminal()` cuando necesitas foco, teclado, mouse, clipboard o escritura a `stdout`.
|
|
22
|
+
|
|
23
|
+
## Ejemplo minimo
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
/** @jsx v */
|
|
27
|
+
/** @jsxFrag v.fragment */
|
|
28
|
+
|
|
29
|
+
import { v } from "valyrian.js";
|
|
30
|
+
import { Input, Screen, Text, mountTerminal } from "valyrianjs-terminal";
|
|
31
|
+
|
|
32
|
+
const state = { value: "" };
|
|
33
|
+
|
|
34
|
+
const session = mountTerminal(() => (
|
|
35
|
+
<Screen title="Notes">
|
|
36
|
+
<Input
|
|
37
|
+
id="note"
|
|
38
|
+
value={state.value}
|
|
39
|
+
placeholder="Write a note"
|
|
40
|
+
onchange={(event) => {
|
|
41
|
+
state.value = event.value;
|
|
42
|
+
}}
|
|
43
|
+
/>
|
|
44
|
+
<Text>{state.value || "Nothing yet"}</Text>
|
|
45
|
+
</Screen>
|
|
46
|
+
));
|
|
47
|
+
|
|
48
|
+
session.focus("note");
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Mapa de docs
|
|
52
|
+
|
|
53
|
+
- `docs/getting-started.md` - primer flujo completo, de render estatico a sesion interactiva
|
|
54
|
+
- `docs/core-concepts.md` - modelo mental: ids, foco, hitboxes, salida plana, ANSI y cleanup
|
|
55
|
+
- `docs/interaction-model.md` - comportamiento por primitiva y eventos de interaccion
|
|
56
|
+
- `docs/session-runtime.md` - lifecycle de sesion, streams, clipboard, coordenadas y runtime
|
|
57
|
+
- `docs/cookbook.md` - recetas cortas para tareas concretas
|
|
58
|
+
- `docs/api-reference.md` - referencia de la superficie publica y subpaths publicados
|
|
59
|
+
- `docs/local-demo.md` - demo repo-local, no parte del paquete publicado
|
|
60
|
+
|
|
61
|
+
## Alcance del paquete publicado
|
|
62
|
+
|
|
63
|
+
El paquete publicado incluye el adapter compilado en `dist/`, esta documentacion y metadatos de soporte. Los archivos de `examples/` viven solo en el repo y no forman parte del paquete distribuido.
|
|
64
|
+
|
|
65
|
+
## Desarrollo local
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
bun test
|
|
69
|
+
bun run typecheck
|
|
70
|
+
bun run build
|
|
71
|
+
```
|
package/dist/ansi.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CursorPosition, TerminalFrame, TerminalStyleSpan } from "./types.js";
|
|
2
|
+
export declare function stripCursorMarker(value: string): string;
|
|
3
|
+
export declare function formatPlainFrame(frame: TerminalFrame): string;
|
|
4
|
+
export declare function toAnsiFrame(lines: string[], cursor: CursorPosition | null, spans?: TerminalStyleSpan[]): string;
|
|
5
|
+
export declare function createAnsiDiffWriter(): (lines: string[], cursor: CursorPosition | null, spans?: TerminalStyleSpan[]) => string;
|
|
6
|
+
//# sourceMappingURL=ansi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,UAE9C;AA6FD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,UAEpD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,GAAE,iBAAiB,EAAO,UAI1G;AAED,wBAAgB,oBAAoB,KAGP,OAAO,MAAM,EAAE,EAAE,QAAQ,cAAc,GAAG,IAAI,EAAE,QAAO,iBAAiB,EAAO,YAe3G"}
|
package/dist/ansi.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export function stripCursorMarker(value) {
|
|
2
|
+
return value.replaceAll("|", "");
|
|
3
|
+
}
|
|
4
|
+
function lineSpans(spans, y) {
|
|
5
|
+
return spans.filter((span) => span.y === y).sort((a, b) => a.x1 - b.x1);
|
|
6
|
+
}
|
|
7
|
+
function spanAnsiOpen(kind) {
|
|
8
|
+
if (kind === "selection" || kind === "focus" || kind === "current-row") {
|
|
9
|
+
return "\u001b[7m";
|
|
10
|
+
}
|
|
11
|
+
if (kind === "hover") {
|
|
12
|
+
return "\u001b[4m";
|
|
13
|
+
}
|
|
14
|
+
if (kind === "highlight") {
|
|
15
|
+
return "\u001b[1m";
|
|
16
|
+
}
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
function spanAnsiClose(kind) {
|
|
20
|
+
if (kind === "selection" || kind === "focus" || kind === "current-row") {
|
|
21
|
+
return "\u001b[27m";
|
|
22
|
+
}
|
|
23
|
+
if (kind === "hover") {
|
|
24
|
+
return "\u001b[24m";
|
|
25
|
+
}
|
|
26
|
+
if (kind === "highlight") {
|
|
27
|
+
return "\u001b[22m";
|
|
28
|
+
}
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
function renderAnsiLine(line, spans, y) {
|
|
32
|
+
let output = "";
|
|
33
|
+
let visibleColumn = 1;
|
|
34
|
+
const rowSpans = lineSpans(spans, y);
|
|
35
|
+
let activeSpanIndex = 0;
|
|
36
|
+
for (let i = 0; i < line.length; i += 1) {
|
|
37
|
+
while (rowSpans[activeSpanIndex]?.x1 === visibleColumn) {
|
|
38
|
+
output += spanAnsiOpen(rowSpans[activeSpanIndex].kind);
|
|
39
|
+
activeSpanIndex += 1;
|
|
40
|
+
}
|
|
41
|
+
const char = line[i];
|
|
42
|
+
if (char === "|") {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
output += char;
|
|
46
|
+
visibleColumn += 1;
|
|
47
|
+
for (const span of rowSpans) {
|
|
48
|
+
if (span.x2 === visibleColumn) {
|
|
49
|
+
output += spanAnsiClose(span.kind);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return output;
|
|
54
|
+
}
|
|
55
|
+
function formatPlainLine(line, spans, y) {
|
|
56
|
+
let output = "";
|
|
57
|
+
let visibleColumn = 1;
|
|
58
|
+
const rowSpans = lineSpans(spans, y).filter((span) => span.kind === "selection");
|
|
59
|
+
for (let i = 0; i < line.length; i += 1) {
|
|
60
|
+
const char = line[i];
|
|
61
|
+
if (char === "|") {
|
|
62
|
+
output += char;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (rowSpans.some((span) => span.x1 === visibleColumn)) {
|
|
66
|
+
output += "[";
|
|
67
|
+
}
|
|
68
|
+
output += char;
|
|
69
|
+
visibleColumn += 1;
|
|
70
|
+
if (rowSpans.some((span) => span.x2 === visibleColumn)) {
|
|
71
|
+
output += "]";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (rowSpans.some((span) => span.x1 === visibleColumn)) {
|
|
75
|
+
output += "[]";
|
|
76
|
+
}
|
|
77
|
+
return output;
|
|
78
|
+
}
|
|
79
|
+
export function formatPlainFrame(frame) {
|
|
80
|
+
return frame.lines.map((line, index) => formatPlainLine(line, frame.spans, index + 1)).join("\n");
|
|
81
|
+
}
|
|
82
|
+
export function toAnsiFrame(lines, cursor, spans = []) {
|
|
83
|
+
const ansiLines = lines.map((line, index) => renderAnsiLine(line, spans, index + 1));
|
|
84
|
+
const cursorCode = cursor ? `\u001b[${cursor.y};${cursor.x}H\u001b[?25h` : "\u001b[?25h";
|
|
85
|
+
return `\u001b[?25l\u001b[H${ansiLines.join("\n")}${cursorCode}`;
|
|
86
|
+
}
|
|
87
|
+
export function createAnsiDiffWriter() {
|
|
88
|
+
let previousAnsiLines = [];
|
|
89
|
+
return function toAnsiDiff(lines, cursor, spans = []) {
|
|
90
|
+
const ansiLines = lines.map((line, index) => renderAnsiLine(line, spans, index + 1));
|
|
91
|
+
const writes = ["\u001b[?25l"];
|
|
92
|
+
const maxLines = Math.max(previousAnsiLines.length, ansiLines.length);
|
|
93
|
+
for (let i = 0; i < maxLines; i += 1) {
|
|
94
|
+
const nextLine = ansiLines[i] || "";
|
|
95
|
+
const prevLine = previousAnsiLines[i] || "";
|
|
96
|
+
if (nextLine !== prevLine) {
|
|
97
|
+
writes.push(`\u001b[${i + 1};1H${nextLine}\u001b[0m\u001b[K`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
writes.push(cursor ? `\u001b[${cursor.y};${cursor.x}H\u001b[?25h` : "\u001b[?25h");
|
|
101
|
+
previousAnsiLines = ansiLines.slice();
|
|
102
|
+
return writes.join("");
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=ansi.js.map
|
package/dist/ansi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.js","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,KAA0B,EAAE,CAAS;IACtD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACvE,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAA0B,EAAE,CAAS;IACzE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,aAAa,EAAE,CAAC;YACvD,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC;YACvD,eAAe,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,IAAI,CAAC;QACf,aAAa,IAAI,CAAC,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;gBAC9B,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAA0B,EAAE,CAAS;IAC1E,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAEjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,IAAI,CAAC;QACf,aAAa,IAAI,CAAC,CAAC;QAEnB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,MAA6B,EAAE,QAA6B,EAAE;IACzG,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IACzF,OAAO,sBAAsB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,iBAAiB,GAAa,EAAE,CAAC;IAErC,OAAO,SAAS,UAAU,CAAC,KAAe,EAAE,MAA6B,EAAE,QAA6B,EAAE;QACxG,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,MAAM,GAAa,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,QAAQ,mBAAmB,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACnF,iBAAiB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAgE3D,wBAAgB,4BAA4B,IAAI,wBAAwB,CASvE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
function tryRead(command, args) {
|
|
3
|
+
try {
|
|
4
|
+
const result = spawnSync(command, args, { encoding: "utf8" });
|
|
5
|
+
if (result.status === 0) {
|
|
6
|
+
return String(result.stdout || "").replace(/\r\n/g, "\n").replace(/\n$/, "");
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
function tryWrite(command, args, value) {
|
|
15
|
+
try {
|
|
16
|
+
const result = spawnSync(command, args, { input: value, encoding: "utf8" });
|
|
17
|
+
return result.status === 0;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function createDarwinClipboard() {
|
|
24
|
+
return {
|
|
25
|
+
readText() {
|
|
26
|
+
return tryRead("pbpaste", []);
|
|
27
|
+
},
|
|
28
|
+
writeText(value) {
|
|
29
|
+
tryWrite("pbcopy", [], value);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function createWindowsClipboard() {
|
|
34
|
+
return {
|
|
35
|
+
readText() {
|
|
36
|
+
return tryRead("powershell.exe", ["-NoProfile", "-Command", "Get-Clipboard"]);
|
|
37
|
+
},
|
|
38
|
+
writeText(value) {
|
|
39
|
+
if (!tryWrite("clip.exe", [], value)) {
|
|
40
|
+
tryWrite("powershell.exe", ["-NoProfile", "-Command", "Set-Clipboard"], value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function createLinuxClipboard() {
|
|
46
|
+
return {
|
|
47
|
+
readText() {
|
|
48
|
+
return tryRead("wl-paste", ["-n"]) || tryRead("xclip", ["-selection", "clipboard", "-out"]) || tryRead("xsel", ["--clipboard", "--output"]);
|
|
49
|
+
},
|
|
50
|
+
writeText(value) {
|
|
51
|
+
if (tryWrite("wl-copy", [], value)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (tryWrite("xclip", ["-selection", "clipboard", "-in"], value)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
tryWrite("xsel", ["--clipboard", "--input"], value);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function createSystemClipboardAdapter() {
|
|
62
|
+
switch (process.platform) {
|
|
63
|
+
case "darwin":
|
|
64
|
+
return createDarwinClipboard();
|
|
65
|
+
case "win32":
|
|
66
|
+
return createWindowsClipboard();
|
|
67
|
+
default:
|
|
68
|
+
return createLinuxClipboard();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,SAAS,OAAO,CAAC,OAAe,EAAE,IAAc;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,IAAc,EAAE,KAAa;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,QAAQ;YACN,OAAO,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,SAAS,CAAC,KAAa;YACrB,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO;QACL,QAAQ;YACN,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,SAAS,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL,QAAQ;YACN,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9I,CAAC;QACD,SAAS,CAAC,KAAa;YACrB,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,qBAAqB,EAAE,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,sBAAsB,EAAE,CAAC;QAClC;YACE,OAAO,oBAAoB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { InputInteractionState, TerminalFocusNode } from "./types.js";
|
|
2
|
+
export declare function normalizeInputState(state: InputInteractionState | undefined, valueLength: number): InputInteractionState;
|
|
3
|
+
export declare function hasSelection(state: InputInteractionState): boolean;
|
|
4
|
+
export declare function getSelectionRange(state: InputInteractionState): {
|
|
5
|
+
start: number;
|
|
6
|
+
end: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function moveCursorLeft(state: InputInteractionState, valueLength: number, extendSelection?: boolean): {
|
|
9
|
+
cursor: number;
|
|
10
|
+
anchor: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function moveCursorRight(state: InputInteractionState, valueLength: number, extendSelection?: boolean): {
|
|
13
|
+
cursor: number;
|
|
14
|
+
anchor: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function moveCursorHome(state: InputInteractionState, valueLength: number, extendSelection?: boolean): {
|
|
17
|
+
cursor: number;
|
|
18
|
+
anchor: number;
|
|
19
|
+
};
|
|
20
|
+
export declare function moveCursorEnd(state: InputInteractionState, valueLength: number, extendSelection?: boolean): {
|
|
21
|
+
cursor: number;
|
|
22
|
+
anchor: number;
|
|
23
|
+
};
|
|
24
|
+
export declare function moveCursorWordLeft(value: string, state: InputInteractionState, extendSelection?: boolean): {
|
|
25
|
+
cursor: number;
|
|
26
|
+
anchor: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function moveCursorWordRight(value: string, state: InputInteractionState, extendSelection?: boolean): {
|
|
29
|
+
cursor: number;
|
|
30
|
+
anchor: number;
|
|
31
|
+
};
|
|
32
|
+
export declare function selectAll(value: string): {
|
|
33
|
+
cursor: number;
|
|
34
|
+
anchor: number;
|
|
35
|
+
};
|
|
36
|
+
export declare function copySelection(value: string, state: InputInteractionState): string;
|
|
37
|
+
export declare function insertText(value: string, state: InputInteractionState, text: string): {
|
|
38
|
+
value: string;
|
|
39
|
+
state: {
|
|
40
|
+
cursor: number;
|
|
41
|
+
anchor: number;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export declare function removeBackward(value: string, state: InputInteractionState): {
|
|
45
|
+
value: string;
|
|
46
|
+
state: {
|
|
47
|
+
cursor: number;
|
|
48
|
+
anchor: number;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export declare function removeForward(value: string, state: InputInteractionState): {
|
|
52
|
+
value: string;
|
|
53
|
+
state: {
|
|
54
|
+
cursor: number;
|
|
55
|
+
anchor: number;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export declare function invokeButton(node: TerminalFocusNode): void;
|
|
59
|
+
export declare function updateInputValue(node: TerminalFocusNode, nextValue: string): void;
|
|
60
|
+
export declare function submitInput(node: TerminalFocusNode): void;
|
|
61
|
+
export declare function parseTerminalKey(chunk: string | Uint8Array): string;
|
|
62
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAErB,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAMpB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,qBAAqB,CAIxH;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,qBAAqB,WAExD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,qBAAqB;;;EAK7D;AAOD,wBAAgB,cAAc,CAAC,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,UAAQ;;;EAMxG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,UAAQ;;;EAMzG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,UAAQ;;;EAExG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,UAAQ;;;EAEvG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,eAAe,UAAQ;;;EActG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,eAAe,UAAQ;;;EAcvG;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM;;;EAEtC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,UAMxE;AAQD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM;;;;;;EAGnF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;;;;;;EASzE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;;;;;;EASxE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,iBAAiB,QAiBnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,QAa1E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,QAKlD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,UAsB1D"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
function clamp(value, min, max) {
|
|
2
|
+
return Math.max(min, Math.min(max, value));
|
|
3
|
+
}
|
|
4
|
+
export function normalizeInputState(state, valueLength) {
|
|
5
|
+
const cursor = clamp(Number(state?.cursor ?? valueLength), 0, valueLength);
|
|
6
|
+
const anchor = clamp(Number(state?.anchor ?? cursor), 0, valueLength);
|
|
7
|
+
return { cursor, anchor };
|
|
8
|
+
}
|
|
9
|
+
export function hasSelection(state) {
|
|
10
|
+
return state.cursor !== state.anchor;
|
|
11
|
+
}
|
|
12
|
+
export function getSelectionRange(state) {
|
|
13
|
+
return {
|
|
14
|
+
start: Math.min(state.cursor, state.anchor),
|
|
15
|
+
end: Math.max(state.cursor, state.anchor)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function moveTo(state, valueLength, nextCursor, extendSelection = false) {
|
|
19
|
+
const cursor = clamp(nextCursor, 0, valueLength);
|
|
20
|
+
return extendSelection ? { cursor, anchor: state.anchor } : { cursor, anchor: cursor };
|
|
21
|
+
}
|
|
22
|
+
export function moveCursorLeft(state, valueLength, extendSelection = false) {
|
|
23
|
+
if (!extendSelection && hasSelection(state)) {
|
|
24
|
+
const { start } = getSelectionRange(state);
|
|
25
|
+
return moveTo(state, valueLength, start, false);
|
|
26
|
+
}
|
|
27
|
+
return moveTo(state, valueLength, state.cursor - 1, extendSelection);
|
|
28
|
+
}
|
|
29
|
+
export function moveCursorRight(state, valueLength, extendSelection = false) {
|
|
30
|
+
if (!extendSelection && hasSelection(state)) {
|
|
31
|
+
const { end } = getSelectionRange(state);
|
|
32
|
+
return moveTo(state, valueLength, end, false);
|
|
33
|
+
}
|
|
34
|
+
return moveTo(state, valueLength, state.cursor + 1, extendSelection);
|
|
35
|
+
}
|
|
36
|
+
export function moveCursorHome(state, valueLength, extendSelection = false) {
|
|
37
|
+
return moveTo(state, valueLength, 0, extendSelection);
|
|
38
|
+
}
|
|
39
|
+
export function moveCursorEnd(state, valueLength, extendSelection = false) {
|
|
40
|
+
return moveTo(state, valueLength, valueLength, extendSelection);
|
|
41
|
+
}
|
|
42
|
+
export function moveCursorWordLeft(value, state, extendSelection = false) {
|
|
43
|
+
if (!extendSelection && hasSelection(state)) {
|
|
44
|
+
const { start } = getSelectionRange(state);
|
|
45
|
+
return moveTo(state, value.length, start, false);
|
|
46
|
+
}
|
|
47
|
+
let cursor = state.cursor;
|
|
48
|
+
while (cursor > 0 && /\s/.test(value[cursor - 1])) {
|
|
49
|
+
cursor -= 1;
|
|
50
|
+
}
|
|
51
|
+
while (cursor > 0 && !/\s/.test(value[cursor - 1])) {
|
|
52
|
+
cursor -= 1;
|
|
53
|
+
}
|
|
54
|
+
return moveTo(state, value.length, cursor, extendSelection);
|
|
55
|
+
}
|
|
56
|
+
export function moveCursorWordRight(value, state, extendSelection = false) {
|
|
57
|
+
if (!extendSelection && hasSelection(state)) {
|
|
58
|
+
const { end } = getSelectionRange(state);
|
|
59
|
+
return moveTo(state, value.length, end, false);
|
|
60
|
+
}
|
|
61
|
+
let cursor = state.cursor;
|
|
62
|
+
while (cursor < value.length && /\s/.test(value[cursor])) {
|
|
63
|
+
cursor += 1;
|
|
64
|
+
}
|
|
65
|
+
while (cursor < value.length && !/\s/.test(value[cursor])) {
|
|
66
|
+
cursor += 1;
|
|
67
|
+
}
|
|
68
|
+
return moveTo(state, value.length, cursor, extendSelection);
|
|
69
|
+
}
|
|
70
|
+
export function selectAll(value) {
|
|
71
|
+
return { cursor: value.length, anchor: 0 };
|
|
72
|
+
}
|
|
73
|
+
export function copySelection(value, state) {
|
|
74
|
+
if (!hasSelection(state)) {
|
|
75
|
+
return "";
|
|
76
|
+
}
|
|
77
|
+
const { start, end } = getSelectionRange(state);
|
|
78
|
+
return value.slice(start, end);
|
|
79
|
+
}
|
|
80
|
+
function replaceRange(value, start, end, insert) {
|
|
81
|
+
const nextValue = `${value.slice(0, start)}${insert}${value.slice(end)}`;
|
|
82
|
+
const nextCursor = start + insert.length;
|
|
83
|
+
return { value: nextValue, state: { cursor: nextCursor, anchor: nextCursor } };
|
|
84
|
+
}
|
|
85
|
+
export function insertText(value, state, text) {
|
|
86
|
+
const { start, end } = getSelectionRange(state);
|
|
87
|
+
return replaceRange(value, start, end, text);
|
|
88
|
+
}
|
|
89
|
+
export function removeBackward(value, state) {
|
|
90
|
+
if (hasSelection(state)) {
|
|
91
|
+
const { start, end } = getSelectionRange(state);
|
|
92
|
+
return replaceRange(value, start, end, "");
|
|
93
|
+
}
|
|
94
|
+
if (state.cursor === 0) {
|
|
95
|
+
return { value, state };
|
|
96
|
+
}
|
|
97
|
+
return replaceRange(value, state.cursor - 1, state.cursor, "");
|
|
98
|
+
}
|
|
99
|
+
export function removeForward(value, state) {
|
|
100
|
+
if (hasSelection(state)) {
|
|
101
|
+
const { start, end } = getSelectionRange(state);
|
|
102
|
+
return replaceRange(value, start, end, "");
|
|
103
|
+
}
|
|
104
|
+
if (state.cursor >= value.length) {
|
|
105
|
+
return { value, state };
|
|
106
|
+
}
|
|
107
|
+
return replaceRange(value, state.cursor, state.cursor + 1, "");
|
|
108
|
+
}
|
|
109
|
+
export function invokeButton(node) {
|
|
110
|
+
const payload = { type: "press", id: String(node.props.id || "") };
|
|
111
|
+
if (typeof node.props.onpress === "function") {
|
|
112
|
+
node.props.onpress(payload);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (typeof node.props.onclick === "function") {
|
|
116
|
+
node.props.onclick({ ...payload, type: "click" });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (typeof node.props.action === "function") {
|
|
120
|
+
node.props.action({ ...payload, type: "click" });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (typeof node.props.onPress === "function") {
|
|
124
|
+
node.props.onPress({ ...payload, type: "click" });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export function updateInputValue(node, nextValue) {
|
|
128
|
+
const changePayload = { type: "change", id: String(node.props.id || ""), value: nextValue };
|
|
129
|
+
if (typeof node.props.onchange === "function") {
|
|
130
|
+
node.props.onchange(changePayload);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (typeof node.props.oninput === "function") {
|
|
134
|
+
node.props.oninput({ ...changePayload, type: "input" });
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (typeof node.props.onChangeText === "function") {
|
|
138
|
+
node.props.onChangeText(nextValue);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export function submitInput(node) {
|
|
142
|
+
if (typeof node.props.onsubmit === "function") {
|
|
143
|
+
const payload = { type: "submit", id: String(node.props.id || ""), value: String(node.props.value ?? "") };
|
|
144
|
+
node.props.onsubmit(payload);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export function parseTerminalKey(chunk) {
|
|
148
|
+
const value = typeof chunk === "string" ? chunk : Buffer.from(chunk).toString("utf8");
|
|
149
|
+
if (value === "\r" || value === "\n")
|
|
150
|
+
return "ENTER";
|
|
151
|
+
if (value === "\t")
|
|
152
|
+
return "TAB";
|
|
153
|
+
if (value === "\u001b[Z")
|
|
154
|
+
return "SHIFT_TAB";
|
|
155
|
+
if (value === "\u001b[A")
|
|
156
|
+
return "UP";
|
|
157
|
+
if (value === "\u001b[B")
|
|
158
|
+
return "DOWN";
|
|
159
|
+
if (value === "\u001b[C")
|
|
160
|
+
return "RIGHT";
|
|
161
|
+
if (value === "\u001b[D")
|
|
162
|
+
return "LEFT";
|
|
163
|
+
if (value === "\u001b[1;2C")
|
|
164
|
+
return "SHIFT_RIGHT";
|
|
165
|
+
if (value === "\u001b[1;2D")
|
|
166
|
+
return "SHIFT_LEFT";
|
|
167
|
+
if (value === "\u001b[1;3C" || value === "\u001bf")
|
|
168
|
+
return "ALT_RIGHT";
|
|
169
|
+
if (value === "\u001b[1;3D" || value === "\u001bb")
|
|
170
|
+
return "ALT_LEFT";
|
|
171
|
+
if (value === "\u001b[3~")
|
|
172
|
+
return "DELETE";
|
|
173
|
+
if (value === "\u0008" || value === "\u007f")
|
|
174
|
+
return "BACKSPACE";
|
|
175
|
+
if (value === "\u001b[H")
|
|
176
|
+
return "HOME";
|
|
177
|
+
if (value === "\u001b[F")
|
|
178
|
+
return "END";
|
|
179
|
+
if (value === "\u0001")
|
|
180
|
+
return "CTRL_A";
|
|
181
|
+
if (value === "\u0003")
|
|
182
|
+
return "CTRL_C";
|
|
183
|
+
if (value === "\u0016")
|
|
184
|
+
return "CTRL_V";
|
|
185
|
+
if (value === "\u0018")
|
|
186
|
+
return "CTRL_X";
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { TerminalBoxProps, TerminalButtonPressEventPayload, TerminalButtonProps, TerminalChangeEventPayload, InputInteractionState, TerminalClipboardAdapter, TerminalCaptureEventPayload, TerminalDirectiveProps, TerminalElementNode, TerminalFrame, TerminalHitbox, TerminalInputChangeEventPayload, TerminalInputProps, TerminalInputSubmitEventPayload, TerminalListPointerEventPayload, TerminalListChangeEventPayload, TerminalListProps, TerminalListPressEventPayload, TerminalLayoutProps, TerminalMountOptions, TerminalMouseEventType, TerminalNode, TerminalPointerCoordinates, TerminalPointerCaptureProps, TerminalPressEventPayload, TerminalPointerSource, TerminalRowPointerEventPayload, TerminalRowPointerEventPayloadBase, TerminalRowProps, TerminalScreenProps, TerminalScrollPointerEventPayload, TerminalScrollViewProps, TerminalSession, TerminalStyleSpan, TerminalTableProps, TerminalTdProps, TerminalTextProps, TerminalValueEventPayloadBase, TerminalFocusableProps, TerminalEventPayloadBase, TerminalViewProps, TerminalTextNode } from "./types.js";
|
|
2
|
+
export { Box, Button, Input, List, Row, Screen, ScrollView, Table, Td, Text, View } from "./primitives.js";
|
|
3
|
+
export { renderTerminal } from "./render.js";
|
|
4
|
+
export { mountTerminal } from "./session.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,+BAA+B,EAC/B,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,+BAA+B,EAC/B,kBAAkB,EAClB,+BAA+B,EAC/B,+BAA+B,EAC/B,8BAA8B,EAC9B,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,kCAAkC,EAClC,gBAAgB,EAChB,mBAAmB,EACnB,iCAAiC,EACjC,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/layout.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CursorPosition, TerminalFrame, TerminalHitbox, TerminalStyleSpan } from "./types.js";
|
|
2
|
+
export declare function createFrame(lines: string[], hitboxes?: TerminalHitbox[], cursor?: CursorPosition | null, spans?: TerminalStyleSpan[]): TerminalFrame;
|
|
3
|
+
export declare function getFrameWidth(frame: TerminalFrame): number;
|
|
4
|
+
export declare function getFrameHeight(frame: TerminalFrame): number;
|
|
5
|
+
export declare function shiftFrame(frame: TerminalFrame, dx: number, dy: number): TerminalFrame;
|
|
6
|
+
export declare function mergeVertical(frames: TerminalFrame[], options?: {
|
|
7
|
+
gap?: number;
|
|
8
|
+
}): TerminalFrame;
|
|
9
|
+
export declare function mergeHorizontal(frames: TerminalFrame[], options?: {
|
|
10
|
+
gap?: number;
|
|
11
|
+
}): TerminalFrame;
|
|
12
|
+
export declare function padFrame(frame: TerminalFrame, padding: number): TerminalFrame;
|
|
13
|
+
export declare function borderFrame(frame: TerminalFrame): TerminalFrame;
|
|
14
|
+
export declare function fitFrame(frame: TerminalFrame, width?: number, height?: number): TerminalFrame;
|
|
15
|
+
export declare function cropFrame(frame: TerminalFrame, offset: number, height: number): TerminalFrame;
|
|
16
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMnG,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,cAAc,EAAO,EAAE,MAAM,GAAE,cAAc,GAAG,IAAW,EAAE,KAAK,GAAE,iBAAiB,EAAO,GAAG,aAAa,CAElK;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,UAEjD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,UAElD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CActF;AAUD,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,aAAa,CAkCpG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,aAAa,CAuCtG;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAY7D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,iBAM/C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,iBAO7E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAsB7E"}
|