sygnal 7.1.0 → 7.2.0-preview.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/CHANGELOG.md +506 -0
- package/dist/agent-ui.cjs.js +592 -0
- package/dist/agent-ui.cjs.js.map +1 -0
- package/dist/agent-ui.esm.js +582 -0
- package/dist/agent-ui.esm.js.map +1 -0
- package/dist/api.cjs.js +63 -0
- package/dist/api.cjs.js.map +1 -0
- package/dist/api.esm.js +2 -0
- package/dist/api.esm.js.map +1 -0
- package/dist/astro/index.cjs.js +968 -4
- package/dist/astro/index.cjs.js.map +1 -1
- package/dist/astro/index.mjs +968 -4
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/server.cjs.js +41 -2
- package/dist/astro/server.cjs.js.map +1 -1
- package/dist/astro/server.mjs +41 -2
- package/dist/astro/server.mjs.map +1 -1
- package/dist/canvas.cjs.js +2919 -0
- package/dist/canvas.cjs.js.map +1 -0
- package/dist/canvas.esm.js +2866 -0
- package/dist/canvas.esm.js.map +1 -0
- package/dist/devtools.cjs.js +38 -6
- package/dist/devtools.cjs.js.map +1 -1
- package/dist/devtools.esm.js +38 -6
- package/dist/devtools.esm.js.map +1 -1
- package/dist/diagnostics.cjs.js +162 -23
- package/dist/diagnostics.cjs.js.map +1 -1
- package/dist/diagnostics.esm.js +162 -23
- package/dist/diagnostics.esm.js.map +1 -1
- package/dist/guide/ai-compose.md +150 -0
- package/dist/guide/behaviors.md +2 -1
- package/dist/guide/collaborative-state.md +265 -0
- package/dist/guide/element-commands.md +36 -2
- package/dist/guide/forms-reference.md +5 -5
- package/dist/guide/forms.md +3 -2
- package/dist/guide/http.md +28 -1
- package/dist/guide/islands.md +240 -0
- package/dist/guide/recipes/code-editor.md +1 -1
- package/dist/guide/renderers/agent-ui.md +138 -0
- package/dist/guide/renderers/custom-targets.md +126 -0
- package/dist/guide/renderers/overview.md +120 -0
- package/dist/guide/renderers/react-native.md +128 -0
- package/dist/guide/renderers/terminal.md +306 -0
- package/dist/guide/renderers/three.md +332 -0
- package/dist/guide/renderers/write-once.md +137 -0
- package/dist/guide/sandboxed-components.md +223 -0
- package/dist/guide/timers.md +29 -2
- package/dist/guide/typed-apis.md +442 -0
- package/dist/guide/ui/accordion.md +11 -0
- package/dist/guide/ui/combobox.md +112 -8
- package/dist/guide/ui/dialog.md +96 -20
- package/dist/guide/ui/menu.md +57 -5
- package/dist/guide/ui/overview.md +8 -4
- package/dist/guide/ui/popover.md +69 -9
- package/dist/guide/ui/select.md +54 -4
- package/dist/guide/ui/tabs.md +1 -1
- package/dist/guide/ui/tooltip.md +7 -5
- package/dist/guide/virtual-collections.md +3 -0
- package/dist/guide/widgets.md +90 -1
- package/dist/host.cjs.js +2181 -0
- package/dist/host.cjs.js.map +1 -0
- package/dist/host.esm.js +2146 -0
- package/dist/host.esm.js.map +1 -0
- package/dist/index.cjs.js +3692 -442
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +482 -29
- package/dist/index.esm.js +3664 -442
- package/dist/index.esm.js.map +1 -1
- package/dist/primitives.cjs.js +143 -0
- package/dist/primitives.cjs.js.map +1 -0
- package/dist/primitives.esm.js +133 -0
- package/dist/primitives.esm.js.map +1 -0
- package/dist/react-native.cjs.js +248 -0
- package/dist/react-native.cjs.js.map +1 -0
- package/dist/react-native.esm.js +244 -0
- package/dist/react-native.esm.js.map +1 -0
- package/dist/replay.cjs.js +39 -0
- package/dist/replay.cjs.js.map +1 -0
- package/dist/replay.esm.js +2 -0
- package/dist/replay.esm.js.map +1 -0
- package/dist/sandbox-build.cjs.js +140 -0
- package/dist/sandbox-build.cjs.js.map +1 -0
- package/dist/sandbox-build.esm.js +137 -0
- package/dist/sandbox-build.esm.js.map +1 -0
- package/dist/sandbox-kernel.esm.js +212 -0
- package/dist/sandbox-kernel.esm.js.map +1 -0
- package/dist/sandbox-worker.cjs.js +857 -0
- package/dist/sandbox-worker.cjs.js.map +1 -0
- package/dist/sandbox-worker.esm.js +854 -0
- package/dist/sandbox-worker.esm.js.map +1 -0
- package/dist/sandbox.cjs.js +1425 -0
- package/dist/sandbox.cjs.js.map +1 -0
- package/dist/sandbox.esm.js +1406 -0
- package/dist/sandbox.esm.js.map +1 -0
- package/dist/sygnal.min.js +1 -1
- package/dist/sygnal.min.js.map +1 -1
- package/dist/terminal.cjs.js +1314 -0
- package/dist/terminal.cjs.js.map +1 -0
- package/dist/terminal.esm.js +1304 -0
- package/dist/terminal.esm.js.map +1 -0
- package/dist/three.cjs.js +1111 -0
- package/dist/three.cjs.js.map +1 -0
- package/dist/three.esm.js +1079 -0
- package/dist/three.esm.js.map +1 -0
- package/dist/ui-combobox.cjs.js +256 -18
- package/dist/ui-combobox.cjs.js.map +1 -1
- package/dist/ui-combobox.esm.js +256 -18
- package/dist/ui-combobox.esm.js.map +1 -1
- package/dist/ui-menu.cjs.js +150 -16
- package/dist/ui-menu.cjs.js.map +1 -1
- package/dist/ui-menu.esm.js +151 -17
- package/dist/ui-menu.esm.js.map +1 -1
- package/dist/ui-select.cjs.js +95 -9
- package/dist/ui-select.cjs.js.map +1 -1
- package/dist/ui-select.esm.js +95 -9
- package/dist/ui-select.esm.js.map +1 -1
- package/dist/ui.cjs.js +679 -173
- package/dist/ui.cjs.js.map +1 -1
- package/dist/ui.esm.js +679 -175
- package/dist/ui.esm.js.map +1 -1
- package/dist/vike/config/package.json +1 -1
- package/dist/vite/plugin.cjs.js +968 -4
- package/dist/vite/plugin.cjs.js.map +1 -1
- package/dist/vite/plugin.mjs +968 -4
- package/dist/vite/plugin.mjs.map +1 -1
- package/dist/worker-page.cjs.js +669 -0
- package/dist/worker-page.cjs.js.map +1 -0
- package/dist/worker-page.esm.js +665 -0
- package/dist/worker-page.esm.js.map +1 -0
- package/dist/worker.cjs.js +377 -0
- package/dist/worker.cjs.js.map +1 -0
- package/dist/worker.esm.js +374 -0
- package/dist/worker.esm.js.map +1 -0
- package/dist/yjs-testing.cjs.js +98 -0
- package/dist/yjs-testing.cjs.js.map +1 -0
- package/dist/yjs-testing.esm.js +77 -0
- package/dist/yjs-testing.esm.js.map +1 -0
- package/dist/yjs.cjs.js +923 -0
- package/dist/yjs.cjs.js.map +1 -0
- package/dist/yjs.esm.js +900 -0
- package/dist/yjs.esm.js.map +1 -0
- package/dist/zag.cjs.js +11 -1
- package/dist/zag.cjs.js.map +1 -1
- package/dist/zag.esm.js +11 -1
- package/dist/zag.esm.js.map +1 -1
- package/llms/ai.md +65 -0
- package/llms/collaboration.md +5 -0
- package/llms/graphics.md +10 -0
- package/llms/renderers.md +7 -0
- package/llms/replay.md +5 -0
- package/llms/sandbox.md +5 -0
- package/llms/typed-apis.md +5 -0
- package/llms/ui.md +10 -0
- package/llms-full.txt +444 -0
- package/llms.txt +31 -29
- package/package.json +139 -3
- package/src/agent-ui/mcp.ts +152 -0
- package/src/agent-ui/snapshot.ts +212 -0
- package/src/agent-ui.d.ts +106 -0
- package/src/agent-ui.ts +249 -0
- package/src/ai.d.ts +95 -2
- package/src/api.d.ts +303 -0
- package/src/api.ts +9 -0
- package/src/canvas/Canvas.ts +585 -0
- package/src/canvas/backend.ts +627 -0
- package/src/canvas/geometry.ts +187 -0
- package/src/canvas/gesture.ts +23 -0
- package/src/canvas/image.ts +197 -0
- package/src/canvas/kit.ts +130 -0
- package/src/canvas/paint.ts +260 -0
- package/src/canvas/pointer.ts +25 -0
- package/src/canvas/snap.ts +68 -0
- package/src/canvas/svg.ts +99 -0
- package/src/canvas.d.ts +373 -0
- package/src/canvas.ts +46 -0
- package/src/core/actions.ts +14 -3
- package/src/core/cell.ts +12 -4
- package/src/core/debug.ts +8 -3
- package/src/core/hooks.ts +16 -2
- package/src/core/hosts/collection.ts +1 -1
- package/src/core/instance.ts +86 -38
- package/src/core/markers/portal.ts +4 -0
- package/src/core/registry.ts +4 -0
- package/src/core/runtime.ts +34 -25
- package/src/cycle/dom/EventDelegator.ts +37 -33
- package/src/cycle/dom/MainDOMSource.ts +16 -14
- package/src/cycle/dom/enrichEventStream.ts +13 -9
- package/src/cycle/dom/fromEvent.ts +6 -10
- package/src/cycle/dom/index.ts +11 -7
- package/src/cycle/dom/isolate.ts +13 -6
- package/src/cycle/dom/makeDOMDriver.ts +6 -2
- package/src/cycle/dom/utils.ts +9 -2
- package/src/cycle/run/adapt.ts +4 -12
- package/src/devtools.d.ts +9 -0
- package/src/devtools.ts +2 -1
- package/src/extra/ai/compose/catalog.ts +2 -1
- package/src/extra/ai/compose/decisions.ts +1 -2
- package/src/extra/ai/compose/generated.ts +234 -0
- package/src/extra/ai/compose/index.ts +6 -2
- package/src/extra/ai/compose/layout.ts +3 -1
- package/src/extra/ai/compose/llm.ts +7 -3
- package/src/extra/ai/compose/types.ts +2 -2
- package/src/extra/api/contract.ts +485 -0
- package/src/extra/api/index.ts +26 -0
- package/src/extra/controlled.ts +44 -0
- package/src/extra/copyAsTest.ts +22 -0
- package/src/extra/devtools.ts +5 -3
- package/src/extra/devtoolsActions.ts +8 -0
- package/src/extra/devtoolsNext.ts +1 -1
- package/src/extra/diagnostics/checks/actionLog.ts +8 -3
- package/src/extra/diagnostics/checks/behaviors.ts +25 -0
- package/src/extra/diagnostics/checks/elementCommands.ts +17 -5
- package/src/extra/diagnostics/checks/index.ts +1 -1
- package/src/extra/diagnostics/checks/next.ts +35 -4
- package/src/extra/diagnostics/checks/replies.ts +11 -7
- package/src/extra/diagnostics/checks/timers.ts +8 -2
- package/src/extra/diagnostics/checks/virtual.ts +11 -0
- package/src/extra/diagnostics/codes.ts +41 -2
- package/src/extra/elementCommands.ts +20 -4
- package/src/extra/fetchDriver.ts +1 -1
- package/src/extra/field.ts +29 -0
- package/src/extra/form.ts +42 -16
- package/src/extra/frame.ts +54 -0
- package/src/extra/keymap.ts +41 -0
- package/src/extra/pager.ts +2 -0
- package/src/extra/persist.ts +2 -1
- package/src/extra/pointer.ts +262 -0
- package/src/extra/processForm.ts +34 -1
- package/src/extra/replay/address.ts +49 -0
- package/src/extra/replay/entropy.ts +99 -0
- package/src/extra/replay/format.ts +263 -0
- package/src/extra/replay/index.ts +8 -0
- package/src/extra/replay/inert.ts +22 -0
- package/src/extra/replay/recorder.ts +247 -0
- package/src/extra/replay/replayer.ts +234 -0
- package/src/extra/replay/report.ts +126 -0
- package/src/extra/replay/schema.ts +52 -0
- package/src/extra/replay/version.ts +3 -0
- package/src/extra/router.ts +7 -3
- package/src/extra/selection.ts +2 -0
- package/src/extra/ssr.ts +98 -1
- package/src/extra/testing.ts +263 -32
- package/src/extra/timers.ts +91 -5
- package/src/extra/undo.ts +2 -0
- package/src/extra/virtual.ts +25 -2
- package/src/extra/widget.ts +106 -17
- package/src/host/actions.ts +383 -0
- package/src/host/delegation.ts +101 -0
- package/src/host/dom.ts +553 -0
- package/src/host/driver.ts +185 -0
- package/src/host/selector.ts +119 -0
- package/src/host/style.ts +51 -0
- package/src/host.d.ts +298 -0
- package/src/host.ts +46 -0
- package/src/index.d.ts +200 -23
- package/src/index.ts +13 -3
- package/src/pragma/blocks.ts +211 -0
- package/src/pragma/index.ts +44 -10
- package/src/primitives.d.ts +54 -0
- package/src/primitives.ts +136 -0
- package/src/react-native.d.ts +57 -0
- package/src/react-native.ts +285 -0
- package/src/react-peers.d.ts +21 -3
- package/src/replay.d.ts +185 -0
- package/src/replay.ts +6 -0
- package/src/sandbox/build.ts +119 -0
- package/src/sandbox/create.ts +187 -0
- package/src/sandbox/engine.ts +267 -0
- package/src/sandbox/generated.ts +195 -0
- package/src/sandbox/kernel.ts +180 -0
- package/src/sandbox/mirror.ts +269 -0
- package/src/sandbox/protocol.ts +128 -0
- package/src/sandbox/quickjs.ts +74 -0
- package/src/sandbox/ssr.ts +41 -0
- package/src/sandbox/widget.ts +60 -0
- package/src/sandbox/worker-entry.ts +59 -0
- package/src/sandbox/worker.ts +137 -0
- package/src/sandbox-build.d.ts +12 -0
- package/src/sandbox-build.ts +6 -0
- package/src/sandbox.d.ts +299 -0
- package/src/sandbox.ts +25 -0
- package/src/shared.ts +12 -0
- package/src/terminal/paint.ts +712 -0
- package/src/terminal.d.ts +167 -0
- package/src/terminal.ts +530 -0
- package/src/three/assets.ts +170 -0
- package/src/three/host.ts +36 -0
- package/src/three/scene.ts +217 -0
- package/src/three/target.ts +252 -0
- package/src/three.d.ts +221 -0
- package/src/three.ts +30 -0
- package/src/ui/accordion.ts +21 -7
- package/src/ui/dialog.ts +192 -90
- package/src/ui/disclosure.ts +2 -0
- package/src/ui/dom.ts +30 -0
- package/src/ui/layers.ts +132 -0
- package/src/ui/popover.ts +120 -21
- package/src/ui/shared.ts +98 -12
- package/src/ui/stack.ts +18 -0
- package/src/ui/tabs.ts +2 -0
- package/src/ui/toaster.ts +16 -15
- package/src/ui/tooltip.ts +24 -8
- package/src/ui/tooltips.ts +26 -14
- package/src/ui/zag/combobox.ts +180 -13
- package/src/ui/zag/menu.ts +97 -17
- package/src/ui/zag/select.ts +15 -4
- package/src/ui/zag/shared.ts +60 -8
- package/src/ui-combobox.d.ts +16 -1
- package/src/ui-menu.d.ts +22 -7
- package/src/ui-zag-types.d.ts +13 -5
- package/src/ui.d.ts +62 -7
- package/src/ui.ts +2 -2
- package/src/vite/api.ts +186 -0
- package/src/vite/compile.ts +280 -0
- package/src/vite/plugin.d.ts +34 -0
- package/src/vite/plugin.ts +78 -4
- package/src/vite/sandbox.ts +16 -0
- package/src/worker/page.ts +396 -0
- package/src/worker/protocol.ts +48 -0
- package/src/worker/target.ts +282 -0
- package/src/worker-page.d.ts +42 -0
- package/src/worker-page.ts +12 -0
- package/src/worker.d.ts +65 -0
- package/src/worker.ts +16 -0
- package/src/yjs/driver.ts +253 -0
- package/src/yjs/mapping.ts +389 -0
- package/src/yjs/shared.ts +138 -0
- package/src/yjs/testing.ts +91 -0
- package/src/yjs-testing.d.ts +34 -0
- package/src/yjs-testing.ts +7 -0
- package/src/yjs.d.ts +109 -0
- package/src/yjs.ts +18 -0
- package/src/zag.d.ts +2 -0
- package/src/zag.ts +8 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// 'sygnal/terminal': a Sygnal app in a terminal, on 'sygnal/host'. Guide: https://sygnal.js.org/renderers/terminal
|
|
2
|
+
import type { HostDocument, HostElement, HostSource, HostStyle, KeyInit } from 'sygnal/host'
|
|
3
|
+
|
|
4
|
+
export interface TerminalStyle extends HostStyle {
|
|
5
|
+
/** 'none' hides; 'block' / 'inline' override the tag's default; 'flex' (with flexDirection) */
|
|
6
|
+
display?: string
|
|
7
|
+
before?: string
|
|
8
|
+
after?: string
|
|
9
|
+
bold?: boolean
|
|
10
|
+
dim?: boolean
|
|
11
|
+
italic?: boolean
|
|
12
|
+
underline?: boolean
|
|
13
|
+
inverse?: boolean
|
|
14
|
+
/** black red green yellow blue magenta cyan white gray, or bright<Color> */
|
|
15
|
+
color?: string
|
|
16
|
+
/** the background: the same colors */
|
|
17
|
+
background?: string
|
|
18
|
+
upper?: boolean
|
|
19
|
+
/** a box's width: cells, or a percentage of the space it is in ('30%') */
|
|
20
|
+
width?: number | string
|
|
21
|
+
/** a box's height: rows, or a percentage of its parent box's (the screen's for the root) */
|
|
22
|
+
height?: number | string
|
|
23
|
+
/** in a flex row or column: its share of the space left */
|
|
24
|
+
flex?: number
|
|
25
|
+
/** a box's border; a title from the element's aria-label / title */
|
|
26
|
+
border?: boolean | 'single' | 'round' | 'double' | 'heavy'
|
|
27
|
+
borderColor?: string
|
|
28
|
+
/** cells inside the border: n, or [vertical, horizontal] */
|
|
29
|
+
padding?: number | [number, number]
|
|
30
|
+
/** with a height: 'auto' / 'scroll' scroll (a scrollbar, the focus kept in view), 'hidden' crops */
|
|
31
|
+
overflow?: 'visible' | 'hidden' | 'auto' | 'scroll'
|
|
32
|
+
/** between a flex row's items (cells, default 1) */
|
|
33
|
+
gap?: number
|
|
34
|
+
}
|
|
35
|
+
export type TerminalStyleRule = [selector: string, style: TerminalStyle]
|
|
36
|
+
/** applied before an app's own rules */
|
|
37
|
+
export const defaultTerminalStyles: TerminalStyleRule[]
|
|
38
|
+
|
|
39
|
+
/** where an element is drawn: a run of cells on a line */
|
|
40
|
+
export interface Hit { line: number, col: number, width: number, el: HostElement }
|
|
41
|
+
export interface Frame {
|
|
42
|
+
plain: string[]
|
|
43
|
+
ansi: string[]
|
|
44
|
+
/** the focused element's line (-1: none) */
|
|
45
|
+
focusLine: number
|
|
46
|
+
/** where the focused element starts */
|
|
47
|
+
focus: { line: number, col: number } | null
|
|
48
|
+
/** the focused text field's caret */
|
|
49
|
+
caret: { line: number, col: number } | null
|
|
50
|
+
/** the innermost element at each run of cells (top layer last) */
|
|
51
|
+
hits: Hit[]
|
|
52
|
+
}
|
|
53
|
+
export interface PaintOptions {
|
|
54
|
+
rules?: readonly TerminalStyleRule[]
|
|
55
|
+
width?: number
|
|
56
|
+
/** the screen's rows: percentages, flex columns, a centered modal dialog */
|
|
57
|
+
height?: number
|
|
58
|
+
}
|
|
59
|
+
/** paint a host document as text */
|
|
60
|
+
export function paint(doc: HostDocument, options?: PaintOptions): Frame
|
|
61
|
+
/** the innermost element drawn at a cell, else null */
|
|
62
|
+
export function hitTest(frame: Frame, line: number, col: number): HostElement | null
|
|
63
|
+
/** a string's width in terminal cells (graphemes; CJK and emoji 2, combining marks 0) */
|
|
64
|
+
export function stringWidth(text: string): number
|
|
65
|
+
/** a grapheme's width in cells */
|
|
66
|
+
export function charWidth(grapheme: string): number
|
|
67
|
+
/** a string's graphemes */
|
|
68
|
+
export function graphemes(text: string): string[]
|
|
69
|
+
|
|
70
|
+
/** what an app's TERMINAL sink sends */
|
|
71
|
+
export type TerminalCommand = 'exit' | 'bell' | { exit?: true | number, title?: string, bell?: boolean }
|
|
72
|
+
|
|
73
|
+
export interface TerminalOptions {
|
|
74
|
+
styles?: readonly TerminalStyleRule[]
|
|
75
|
+
/** columns (default 80) */
|
|
76
|
+
width?: number
|
|
77
|
+
/** rows (default: none, the content's height) */
|
|
78
|
+
height?: number
|
|
79
|
+
/** a link's default action (a router driver's go) */
|
|
80
|
+
onNavigate?: (href: string, el: HostElement) => void
|
|
81
|
+
/** after each change */
|
|
82
|
+
onFrame?: (frame: Frame) => void
|
|
83
|
+
/** a command from the app's TERMINAL sink */
|
|
84
|
+
onCommand?: (command: TerminalCommand) => void
|
|
85
|
+
document?: HostDocument
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface Terminal {
|
|
89
|
+
readonly doc: HostDocument
|
|
90
|
+
/** run(App, { DOM: terminal.driver }) */
|
|
91
|
+
readonly driver: (vnode$: any, name?: string) => HostSource
|
|
92
|
+
/** run(App, { DOM: t.driver, TERMINAL: t.control }) (runTerminal adds it) */
|
|
93
|
+
readonly control: (command$: any) => void
|
|
94
|
+
/** what the app sent its TERMINAL sink */
|
|
95
|
+
readonly commands: TerminalCommand[]
|
|
96
|
+
/** plain text of the current frame */
|
|
97
|
+
frame(): string
|
|
98
|
+
render(): Frame
|
|
99
|
+
/** a key press, by DOM key name ('Enter', 'Tab', 'ArrowDown', 'Escape', 'F2', ' ', 'a') */
|
|
100
|
+
press(key: string, init?: KeyInit): void
|
|
101
|
+
/** type into the focused field */
|
|
102
|
+
type(text: string): void
|
|
103
|
+
/** a paste into the focused element */
|
|
104
|
+
paste(text: string): void
|
|
105
|
+
/** a mouse click at a cell of the frame (0-based); detail: 2 a double click */
|
|
106
|
+
click(line: number, col: number, init?: KeyInit & { detail?: number }): HostElement | null
|
|
107
|
+
/** the wheel at a cell (rows > 0: down); false when no scrolling box is there */
|
|
108
|
+
wheel(line: number, col: number, rows: number): boolean
|
|
109
|
+
/** focus the first element matching a selector or control */
|
|
110
|
+
focus(selector: unknown): boolean
|
|
111
|
+
/** the elements Tab moves through */
|
|
112
|
+
focusables(): HostElement[]
|
|
113
|
+
/** what the keys do on the focused element */
|
|
114
|
+
keyHint(): string
|
|
115
|
+
width: number
|
|
116
|
+
height: number | undefined
|
|
117
|
+
/** the cells an emoji takes (1 or 2) */
|
|
118
|
+
emojiWidth: 1 | 2
|
|
119
|
+
/** run(App, { DOM, TERMINAL, ...drivers }) on this terminal; returns the app (dispose() it) */
|
|
120
|
+
run(App: any, drivers?: Record<string, any>, runOptions?: Record<string, any>): any
|
|
121
|
+
/**
|
|
122
|
+
* Resolves once the app run with run() is quiet: nothing scheduled in its runtime and no change
|
|
123
|
+
* to the tree for `quiet` ms (default 20); drives fake timers. Rejects after `timeout` ms
|
|
124
|
+
* (default 2000) with the frame in the message
|
|
125
|
+
*/
|
|
126
|
+
settle(options?: { timeout?: number; quiet?: number }): Promise<void>
|
|
127
|
+
}
|
|
128
|
+
export function createTerminal(options?: TerminalOptions): Terminal
|
|
129
|
+
|
|
130
|
+
export interface TerminalKey extends KeyInit {
|
|
131
|
+
key: string
|
|
132
|
+
/** key 'Paste' */
|
|
133
|
+
text?: string
|
|
134
|
+
/** key 'Mouse' */
|
|
135
|
+
x?: number
|
|
136
|
+
y?: number
|
|
137
|
+
button?: number | 'up' | 'down'
|
|
138
|
+
release?: boolean
|
|
139
|
+
drag?: boolean
|
|
140
|
+
}
|
|
141
|
+
/** raw TTY input → keys, pastes, mouse events */
|
|
142
|
+
export function parseKeys(chunk: string): TerminalKey[]
|
|
143
|
+
|
|
144
|
+
export interface RunTerminalOptions extends Omit<TerminalOptions, 'onFrame' | 'width' | 'height' | 'document' | 'onCommand'> {
|
|
145
|
+
/** the app's other drivers */
|
|
146
|
+
drivers?: Record<string, any>
|
|
147
|
+
/** run() options */
|
|
148
|
+
runOptions?: Record<string, any>
|
|
149
|
+
stdin?: any
|
|
150
|
+
stdout?: any
|
|
151
|
+
/** the line under the app (default: what the keys do on the focused element; false: none) */
|
|
152
|
+
footer?: string | false | ((terminal: Terminal) => string)
|
|
153
|
+
color?: boolean
|
|
154
|
+
alternateScreen?: boolean
|
|
155
|
+
/** mouse input: clicks, double clicks, the wheel (default false) */
|
|
156
|
+
mouse?: boolean
|
|
157
|
+
/** console output while running: 'buffer' (default on a TTY: written after the restore) or 'pass' */
|
|
158
|
+
console?: 'buffer' | 'pass'
|
|
159
|
+
onExit?: (code?: number) => void
|
|
160
|
+
}
|
|
161
|
+
export interface RunningTerminal {
|
|
162
|
+
app: any
|
|
163
|
+
terminal: Terminal
|
|
164
|
+
stop(code?: number): void
|
|
165
|
+
}
|
|
166
|
+
/** run an app full-screen in a TTY; Ctrl+C or a TERMINAL 'exit' stops it */
|
|
167
|
+
export function runTerminal(App: any, options?: RunTerminalOptions): RunningTerminal
|