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.
Files changed (334) hide show
  1. package/CHANGELOG.md +506 -0
  2. package/dist/agent-ui.cjs.js +592 -0
  3. package/dist/agent-ui.cjs.js.map +1 -0
  4. package/dist/agent-ui.esm.js +582 -0
  5. package/dist/agent-ui.esm.js.map +1 -0
  6. package/dist/api.cjs.js +63 -0
  7. package/dist/api.cjs.js.map +1 -0
  8. package/dist/api.esm.js +2 -0
  9. package/dist/api.esm.js.map +1 -0
  10. package/dist/astro/index.cjs.js +968 -4
  11. package/dist/astro/index.cjs.js.map +1 -1
  12. package/dist/astro/index.mjs +968 -4
  13. package/dist/astro/index.mjs.map +1 -1
  14. package/dist/astro/server.cjs.js +41 -2
  15. package/dist/astro/server.cjs.js.map +1 -1
  16. package/dist/astro/server.mjs +41 -2
  17. package/dist/astro/server.mjs.map +1 -1
  18. package/dist/canvas.cjs.js +2919 -0
  19. package/dist/canvas.cjs.js.map +1 -0
  20. package/dist/canvas.esm.js +2866 -0
  21. package/dist/canvas.esm.js.map +1 -0
  22. package/dist/devtools.cjs.js +38 -6
  23. package/dist/devtools.cjs.js.map +1 -1
  24. package/dist/devtools.esm.js +38 -6
  25. package/dist/devtools.esm.js.map +1 -1
  26. package/dist/diagnostics.cjs.js +162 -23
  27. package/dist/diagnostics.cjs.js.map +1 -1
  28. package/dist/diagnostics.esm.js +162 -23
  29. package/dist/diagnostics.esm.js.map +1 -1
  30. package/dist/guide/ai-compose.md +150 -0
  31. package/dist/guide/behaviors.md +2 -1
  32. package/dist/guide/collaborative-state.md +265 -0
  33. package/dist/guide/element-commands.md +36 -2
  34. package/dist/guide/forms-reference.md +5 -5
  35. package/dist/guide/forms.md +3 -2
  36. package/dist/guide/http.md +28 -1
  37. package/dist/guide/islands.md +240 -0
  38. package/dist/guide/recipes/code-editor.md +1 -1
  39. package/dist/guide/renderers/agent-ui.md +138 -0
  40. package/dist/guide/renderers/custom-targets.md +126 -0
  41. package/dist/guide/renderers/overview.md +120 -0
  42. package/dist/guide/renderers/react-native.md +128 -0
  43. package/dist/guide/renderers/terminal.md +306 -0
  44. package/dist/guide/renderers/three.md +332 -0
  45. package/dist/guide/renderers/write-once.md +137 -0
  46. package/dist/guide/sandboxed-components.md +223 -0
  47. package/dist/guide/timers.md +29 -2
  48. package/dist/guide/typed-apis.md +442 -0
  49. package/dist/guide/ui/accordion.md +11 -0
  50. package/dist/guide/ui/combobox.md +112 -8
  51. package/dist/guide/ui/dialog.md +96 -20
  52. package/dist/guide/ui/menu.md +57 -5
  53. package/dist/guide/ui/overview.md +8 -4
  54. package/dist/guide/ui/popover.md +69 -9
  55. package/dist/guide/ui/select.md +54 -4
  56. package/dist/guide/ui/tabs.md +1 -1
  57. package/dist/guide/ui/tooltip.md +7 -5
  58. package/dist/guide/virtual-collections.md +3 -0
  59. package/dist/guide/widgets.md +90 -1
  60. package/dist/host.cjs.js +2181 -0
  61. package/dist/host.cjs.js.map +1 -0
  62. package/dist/host.esm.js +2146 -0
  63. package/dist/host.esm.js.map +1 -0
  64. package/dist/index.cjs.js +3692 -442
  65. package/dist/index.cjs.js.map +1 -1
  66. package/dist/index.d.ts +482 -29
  67. package/dist/index.esm.js +3664 -442
  68. package/dist/index.esm.js.map +1 -1
  69. package/dist/primitives.cjs.js +143 -0
  70. package/dist/primitives.cjs.js.map +1 -0
  71. package/dist/primitives.esm.js +133 -0
  72. package/dist/primitives.esm.js.map +1 -0
  73. package/dist/react-native.cjs.js +248 -0
  74. package/dist/react-native.cjs.js.map +1 -0
  75. package/dist/react-native.esm.js +244 -0
  76. package/dist/react-native.esm.js.map +1 -0
  77. package/dist/replay.cjs.js +39 -0
  78. package/dist/replay.cjs.js.map +1 -0
  79. package/dist/replay.esm.js +2 -0
  80. package/dist/replay.esm.js.map +1 -0
  81. package/dist/sandbox-build.cjs.js +140 -0
  82. package/dist/sandbox-build.cjs.js.map +1 -0
  83. package/dist/sandbox-build.esm.js +137 -0
  84. package/dist/sandbox-build.esm.js.map +1 -0
  85. package/dist/sandbox-kernel.esm.js +212 -0
  86. package/dist/sandbox-kernel.esm.js.map +1 -0
  87. package/dist/sandbox-worker.cjs.js +857 -0
  88. package/dist/sandbox-worker.cjs.js.map +1 -0
  89. package/dist/sandbox-worker.esm.js +854 -0
  90. package/dist/sandbox-worker.esm.js.map +1 -0
  91. package/dist/sandbox.cjs.js +1425 -0
  92. package/dist/sandbox.cjs.js.map +1 -0
  93. package/dist/sandbox.esm.js +1406 -0
  94. package/dist/sandbox.esm.js.map +1 -0
  95. package/dist/sygnal.min.js +1 -1
  96. package/dist/sygnal.min.js.map +1 -1
  97. package/dist/terminal.cjs.js +1314 -0
  98. package/dist/terminal.cjs.js.map +1 -0
  99. package/dist/terminal.esm.js +1304 -0
  100. package/dist/terminal.esm.js.map +1 -0
  101. package/dist/three.cjs.js +1111 -0
  102. package/dist/three.cjs.js.map +1 -0
  103. package/dist/three.esm.js +1079 -0
  104. package/dist/three.esm.js.map +1 -0
  105. package/dist/ui-combobox.cjs.js +256 -18
  106. package/dist/ui-combobox.cjs.js.map +1 -1
  107. package/dist/ui-combobox.esm.js +256 -18
  108. package/dist/ui-combobox.esm.js.map +1 -1
  109. package/dist/ui-menu.cjs.js +150 -16
  110. package/dist/ui-menu.cjs.js.map +1 -1
  111. package/dist/ui-menu.esm.js +151 -17
  112. package/dist/ui-menu.esm.js.map +1 -1
  113. package/dist/ui-select.cjs.js +95 -9
  114. package/dist/ui-select.cjs.js.map +1 -1
  115. package/dist/ui-select.esm.js +95 -9
  116. package/dist/ui-select.esm.js.map +1 -1
  117. package/dist/ui.cjs.js +679 -173
  118. package/dist/ui.cjs.js.map +1 -1
  119. package/dist/ui.esm.js +679 -175
  120. package/dist/ui.esm.js.map +1 -1
  121. package/dist/vike/config/package.json +1 -1
  122. package/dist/vite/plugin.cjs.js +968 -4
  123. package/dist/vite/plugin.cjs.js.map +1 -1
  124. package/dist/vite/plugin.mjs +968 -4
  125. package/dist/vite/plugin.mjs.map +1 -1
  126. package/dist/worker-page.cjs.js +669 -0
  127. package/dist/worker-page.cjs.js.map +1 -0
  128. package/dist/worker-page.esm.js +665 -0
  129. package/dist/worker-page.esm.js.map +1 -0
  130. package/dist/worker.cjs.js +377 -0
  131. package/dist/worker.cjs.js.map +1 -0
  132. package/dist/worker.esm.js +374 -0
  133. package/dist/worker.esm.js.map +1 -0
  134. package/dist/yjs-testing.cjs.js +98 -0
  135. package/dist/yjs-testing.cjs.js.map +1 -0
  136. package/dist/yjs-testing.esm.js +77 -0
  137. package/dist/yjs-testing.esm.js.map +1 -0
  138. package/dist/yjs.cjs.js +923 -0
  139. package/dist/yjs.cjs.js.map +1 -0
  140. package/dist/yjs.esm.js +900 -0
  141. package/dist/yjs.esm.js.map +1 -0
  142. package/dist/zag.cjs.js +11 -1
  143. package/dist/zag.cjs.js.map +1 -1
  144. package/dist/zag.esm.js +11 -1
  145. package/dist/zag.esm.js.map +1 -1
  146. package/llms/ai.md +65 -0
  147. package/llms/collaboration.md +5 -0
  148. package/llms/graphics.md +10 -0
  149. package/llms/renderers.md +7 -0
  150. package/llms/replay.md +5 -0
  151. package/llms/sandbox.md +5 -0
  152. package/llms/typed-apis.md +5 -0
  153. package/llms/ui.md +10 -0
  154. package/llms-full.txt +444 -0
  155. package/llms.txt +31 -29
  156. package/package.json +139 -3
  157. package/src/agent-ui/mcp.ts +152 -0
  158. package/src/agent-ui/snapshot.ts +212 -0
  159. package/src/agent-ui.d.ts +106 -0
  160. package/src/agent-ui.ts +249 -0
  161. package/src/ai.d.ts +95 -2
  162. package/src/api.d.ts +303 -0
  163. package/src/api.ts +9 -0
  164. package/src/canvas/Canvas.ts +585 -0
  165. package/src/canvas/backend.ts +627 -0
  166. package/src/canvas/geometry.ts +187 -0
  167. package/src/canvas/gesture.ts +23 -0
  168. package/src/canvas/image.ts +197 -0
  169. package/src/canvas/kit.ts +130 -0
  170. package/src/canvas/paint.ts +260 -0
  171. package/src/canvas/pointer.ts +25 -0
  172. package/src/canvas/snap.ts +68 -0
  173. package/src/canvas/svg.ts +99 -0
  174. package/src/canvas.d.ts +373 -0
  175. package/src/canvas.ts +46 -0
  176. package/src/core/actions.ts +14 -3
  177. package/src/core/cell.ts +12 -4
  178. package/src/core/debug.ts +8 -3
  179. package/src/core/hooks.ts +16 -2
  180. package/src/core/hosts/collection.ts +1 -1
  181. package/src/core/instance.ts +86 -38
  182. package/src/core/markers/portal.ts +4 -0
  183. package/src/core/registry.ts +4 -0
  184. package/src/core/runtime.ts +34 -25
  185. package/src/cycle/dom/EventDelegator.ts +37 -33
  186. package/src/cycle/dom/MainDOMSource.ts +16 -14
  187. package/src/cycle/dom/enrichEventStream.ts +13 -9
  188. package/src/cycle/dom/fromEvent.ts +6 -10
  189. package/src/cycle/dom/index.ts +11 -7
  190. package/src/cycle/dom/isolate.ts +13 -6
  191. package/src/cycle/dom/makeDOMDriver.ts +6 -2
  192. package/src/cycle/dom/utils.ts +9 -2
  193. package/src/cycle/run/adapt.ts +4 -12
  194. package/src/devtools.d.ts +9 -0
  195. package/src/devtools.ts +2 -1
  196. package/src/extra/ai/compose/catalog.ts +2 -1
  197. package/src/extra/ai/compose/decisions.ts +1 -2
  198. package/src/extra/ai/compose/generated.ts +234 -0
  199. package/src/extra/ai/compose/index.ts +6 -2
  200. package/src/extra/ai/compose/layout.ts +3 -1
  201. package/src/extra/ai/compose/llm.ts +7 -3
  202. package/src/extra/ai/compose/types.ts +2 -2
  203. package/src/extra/api/contract.ts +485 -0
  204. package/src/extra/api/index.ts +26 -0
  205. package/src/extra/controlled.ts +44 -0
  206. package/src/extra/copyAsTest.ts +22 -0
  207. package/src/extra/devtools.ts +5 -3
  208. package/src/extra/devtoolsActions.ts +8 -0
  209. package/src/extra/devtoolsNext.ts +1 -1
  210. package/src/extra/diagnostics/checks/actionLog.ts +8 -3
  211. package/src/extra/diagnostics/checks/behaviors.ts +25 -0
  212. package/src/extra/diagnostics/checks/elementCommands.ts +17 -5
  213. package/src/extra/diagnostics/checks/index.ts +1 -1
  214. package/src/extra/diagnostics/checks/next.ts +35 -4
  215. package/src/extra/diagnostics/checks/replies.ts +11 -7
  216. package/src/extra/diagnostics/checks/timers.ts +8 -2
  217. package/src/extra/diagnostics/checks/virtual.ts +11 -0
  218. package/src/extra/diagnostics/codes.ts +41 -2
  219. package/src/extra/elementCommands.ts +20 -4
  220. package/src/extra/fetchDriver.ts +1 -1
  221. package/src/extra/field.ts +29 -0
  222. package/src/extra/form.ts +42 -16
  223. package/src/extra/frame.ts +54 -0
  224. package/src/extra/keymap.ts +41 -0
  225. package/src/extra/pager.ts +2 -0
  226. package/src/extra/persist.ts +2 -1
  227. package/src/extra/pointer.ts +262 -0
  228. package/src/extra/processForm.ts +34 -1
  229. package/src/extra/replay/address.ts +49 -0
  230. package/src/extra/replay/entropy.ts +99 -0
  231. package/src/extra/replay/format.ts +263 -0
  232. package/src/extra/replay/index.ts +8 -0
  233. package/src/extra/replay/inert.ts +22 -0
  234. package/src/extra/replay/recorder.ts +247 -0
  235. package/src/extra/replay/replayer.ts +234 -0
  236. package/src/extra/replay/report.ts +126 -0
  237. package/src/extra/replay/schema.ts +52 -0
  238. package/src/extra/replay/version.ts +3 -0
  239. package/src/extra/router.ts +7 -3
  240. package/src/extra/selection.ts +2 -0
  241. package/src/extra/ssr.ts +98 -1
  242. package/src/extra/testing.ts +263 -32
  243. package/src/extra/timers.ts +91 -5
  244. package/src/extra/undo.ts +2 -0
  245. package/src/extra/virtual.ts +25 -2
  246. package/src/extra/widget.ts +106 -17
  247. package/src/host/actions.ts +383 -0
  248. package/src/host/delegation.ts +101 -0
  249. package/src/host/dom.ts +553 -0
  250. package/src/host/driver.ts +185 -0
  251. package/src/host/selector.ts +119 -0
  252. package/src/host/style.ts +51 -0
  253. package/src/host.d.ts +298 -0
  254. package/src/host.ts +46 -0
  255. package/src/index.d.ts +200 -23
  256. package/src/index.ts +13 -3
  257. package/src/pragma/blocks.ts +211 -0
  258. package/src/pragma/index.ts +44 -10
  259. package/src/primitives.d.ts +54 -0
  260. package/src/primitives.ts +136 -0
  261. package/src/react-native.d.ts +57 -0
  262. package/src/react-native.ts +285 -0
  263. package/src/react-peers.d.ts +21 -3
  264. package/src/replay.d.ts +185 -0
  265. package/src/replay.ts +6 -0
  266. package/src/sandbox/build.ts +119 -0
  267. package/src/sandbox/create.ts +187 -0
  268. package/src/sandbox/engine.ts +267 -0
  269. package/src/sandbox/generated.ts +195 -0
  270. package/src/sandbox/kernel.ts +180 -0
  271. package/src/sandbox/mirror.ts +269 -0
  272. package/src/sandbox/protocol.ts +128 -0
  273. package/src/sandbox/quickjs.ts +74 -0
  274. package/src/sandbox/ssr.ts +41 -0
  275. package/src/sandbox/widget.ts +60 -0
  276. package/src/sandbox/worker-entry.ts +59 -0
  277. package/src/sandbox/worker.ts +137 -0
  278. package/src/sandbox-build.d.ts +12 -0
  279. package/src/sandbox-build.ts +6 -0
  280. package/src/sandbox.d.ts +299 -0
  281. package/src/sandbox.ts +25 -0
  282. package/src/shared.ts +12 -0
  283. package/src/terminal/paint.ts +712 -0
  284. package/src/terminal.d.ts +167 -0
  285. package/src/terminal.ts +530 -0
  286. package/src/three/assets.ts +170 -0
  287. package/src/three/host.ts +36 -0
  288. package/src/three/scene.ts +217 -0
  289. package/src/three/target.ts +252 -0
  290. package/src/three.d.ts +221 -0
  291. package/src/three.ts +30 -0
  292. package/src/ui/accordion.ts +21 -7
  293. package/src/ui/dialog.ts +192 -90
  294. package/src/ui/disclosure.ts +2 -0
  295. package/src/ui/dom.ts +30 -0
  296. package/src/ui/layers.ts +132 -0
  297. package/src/ui/popover.ts +120 -21
  298. package/src/ui/shared.ts +98 -12
  299. package/src/ui/stack.ts +18 -0
  300. package/src/ui/tabs.ts +2 -0
  301. package/src/ui/toaster.ts +16 -15
  302. package/src/ui/tooltip.ts +24 -8
  303. package/src/ui/tooltips.ts +26 -14
  304. package/src/ui/zag/combobox.ts +180 -13
  305. package/src/ui/zag/menu.ts +97 -17
  306. package/src/ui/zag/select.ts +15 -4
  307. package/src/ui/zag/shared.ts +60 -8
  308. package/src/ui-combobox.d.ts +16 -1
  309. package/src/ui-menu.d.ts +22 -7
  310. package/src/ui-zag-types.d.ts +13 -5
  311. package/src/ui.d.ts +62 -7
  312. package/src/ui.ts +2 -2
  313. package/src/vite/api.ts +186 -0
  314. package/src/vite/compile.ts +280 -0
  315. package/src/vite/plugin.d.ts +34 -0
  316. package/src/vite/plugin.ts +78 -4
  317. package/src/vite/sandbox.ts +16 -0
  318. package/src/worker/page.ts +396 -0
  319. package/src/worker/protocol.ts +48 -0
  320. package/src/worker/target.ts +282 -0
  321. package/src/worker-page.d.ts +42 -0
  322. package/src/worker-page.ts +12 -0
  323. package/src/worker.d.ts +65 -0
  324. package/src/worker.ts +16 -0
  325. package/src/yjs/driver.ts +253 -0
  326. package/src/yjs/mapping.ts +389 -0
  327. package/src/yjs/shared.ts +138 -0
  328. package/src/yjs/testing.ts +91 -0
  329. package/src/yjs-testing.d.ts +34 -0
  330. package/src/yjs-testing.ts +7 -0
  331. package/src/yjs.d.ts +109 -0
  332. package/src/yjs.ts +18 -0
  333. package/src/zag.d.ts +2 -0
  334. 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