@valyrianjs/terminal 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.
Files changed (107) hide show
  1. package/README.md +105 -55
  2. package/dist/ansi.d.ts +20 -4
  3. package/dist/ansi.d.ts.map +1 -1
  4. package/dist/ansi.js +171 -47
  5. package/dist/ansi.js.map +1 -1
  6. package/dist/editor-state.d.ts +22 -0
  7. package/dist/editor-state.d.ts.map +1 -0
  8. package/dist/editor-state.js +110 -0
  9. package/dist/editor-state.js.map +1 -0
  10. package/dist/events.d.ts +1 -4
  11. package/dist/events.d.ts.map +1 -1
  12. package/dist/events.js +15 -38
  13. package/dist/events.js.map +1 -1
  14. package/dist/index.d.ts +4 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/keymap.d.ts +7 -0
  19. package/dist/keymap.d.ts.map +1 -0
  20. package/dist/keymap.js +133 -0
  21. package/dist/keymap.js.map +1 -0
  22. package/dist/layout.d.ts +10 -1
  23. package/dist/layout.d.ts.map +1 -1
  24. package/dist/layout.js +97 -7
  25. package/dist/layout.js.map +1 -1
  26. package/dist/mouse.d.ts +1 -0
  27. package/dist/mouse.d.ts.map +1 -1
  28. package/dist/mouse.js +24 -1
  29. package/dist/mouse.js.map +1 -1
  30. package/dist/output-writer.d.ts +9 -0
  31. package/dist/output-writer.d.ts.map +1 -0
  32. package/dist/output-writer.js +79 -0
  33. package/dist/output-writer.js.map +1 -0
  34. package/dist/paste.d.ts +7 -0
  35. package/dist/paste.d.ts.map +1 -0
  36. package/dist/paste.js +18 -0
  37. package/dist/paste.js.map +1 -0
  38. package/dist/primitives.d.ts +8 -1
  39. package/dist/primitives.d.ts.map +1 -1
  40. package/dist/primitives.js +9 -1
  41. package/dist/primitives.js.map +1 -1
  42. package/dist/render.d.ts +8 -3
  43. package/dist/render.d.ts.map +1 -1
  44. package/dist/render.js +840 -67
  45. package/dist/render.js.map +1 -1
  46. package/dist/runtime.d.ts +29 -0
  47. package/dist/runtime.d.ts.map +1 -0
  48. package/dist/runtime.js +215 -0
  49. package/dist/runtime.js.map +1 -0
  50. package/dist/scheduler.d.ts +8 -0
  51. package/dist/scheduler.d.ts.map +1 -0
  52. package/dist/scheduler.js +24 -0
  53. package/dist/scheduler.js.map +1 -0
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +729 -199
  56. package/dist/session.js.map +1 -1
  57. package/dist/stream-log.d.ts +40 -0
  58. package/dist/stream-log.d.ts.map +1 -0
  59. package/dist/stream-log.js +73 -0
  60. package/dist/stream-log.js.map +1 -0
  61. package/dist/text.d.ts +3 -0
  62. package/dist/text.d.ts.map +1 -0
  63. package/dist/text.js +19 -0
  64. package/dist/text.js.map +1 -0
  65. package/dist/theme.d.ts +7 -0
  66. package/dist/theme.d.ts.map +1 -0
  67. package/dist/theme.js +254 -0
  68. package/dist/theme.js.map +1 -0
  69. package/dist/tree.d.ts +2 -0
  70. package/dist/tree.d.ts.map +1 -1
  71. package/dist/tree.js +42 -1
  72. package/dist/tree.js.map +1 -1
  73. package/dist/types.d.ts +183 -18
  74. package/dist/types.d.ts.map +1 -1
  75. package/docs/api-reference.md +302 -136
  76. package/docs/assets/quick-note.svg +13 -0
  77. package/docs/cookbook.md +297 -202
  78. package/docs/core-concepts.md +143 -55
  79. package/docs/getting-started.md +209 -90
  80. package/docs/interaction-model.md +95 -61
  81. package/docs/primitive-gallery.md +365 -0
  82. package/docs/session-runtime.md +132 -363
  83. package/docs/valyrian-modules.md +3196 -0
  84. package/llms-full.txt +5357 -0
  85. package/package.json +21 -8
  86. package/src/ansi.ts +269 -0
  87. package/src/clipboard.ts +76 -0
  88. package/src/editor-state.ts +162 -0
  89. package/src/events.ts +163 -0
  90. package/src/index.ts +92 -0
  91. package/src/keymap.ts +151 -0
  92. package/src/layout.ts +282 -0
  93. package/src/mouse.ts +68 -0
  94. package/src/output-writer.ts +93 -0
  95. package/src/paste.ts +23 -0
  96. package/src/primitives.ts +52 -0
  97. package/src/render.ts +1107 -0
  98. package/src/runtime.ts +273 -0
  99. package/src/scheduler.ts +33 -0
  100. package/src/session.ts +1260 -0
  101. package/src/stream-log.ts +96 -0
  102. package/src/text.ts +20 -0
  103. package/src/theme.ts +263 -0
  104. package/src/tree.ts +169 -0
  105. package/src/types.ts +523 -0
  106. package/tsconfig.json +4 -7
  107. package/docs/local-demo.md +0 -28
package/src/types.ts ADDED
@@ -0,0 +1,523 @@
1
+ export type AnyProps = Record<string, any> | null | undefined;
2
+
3
+ export type TerminalPrimitiveTag =
4
+ | "terminal-screen"
5
+ | "terminal-box"
6
+ | "terminal-view"
7
+ | "terminal-pane"
8
+ | "terminal-split"
9
+ | "terminal-fixed"
10
+ | "terminal-overlay"
11
+ | "terminal-focus-scope"
12
+ | "terminal-text"
13
+ | "terminal-input"
14
+ | "terminal-editor"
15
+ | "terminal-button"
16
+ | "terminal-scroll"
17
+ | "terminal-log-view"
18
+ | "terminal-list"
19
+ | "terminal-table"
20
+ | "terminal-row"
21
+ | "terminal-td";
22
+
23
+ export type TerminalCommandScope = "global" | "focus" | "input" | "editor" | "button" | "list" | "scroll";
24
+
25
+ export type TerminalCommandId =
26
+ | "focus.next"
27
+ | "focus.prev"
28
+ | "button.press"
29
+ | "list.prev"
30
+ | "list.next"
31
+ | "list.press"
32
+ | "scroll.up"
33
+ | "scroll.down"
34
+ | "input.submit"
35
+ | "input.backspace"
36
+ | "input.delete"
37
+ | "input.cursorLeft"
38
+ | "input.cursorRight"
39
+ | "input.selectLeft"
40
+ | "input.selectRight"
41
+ | "input.wordLeft"
42
+ | "input.wordRight"
43
+ | "input.home"
44
+ | "input.end"
45
+ | "input.selectAll"
46
+ | "input.copy"
47
+ | "input.paste"
48
+ | "input.pasteText"
49
+ | "input.cut"
50
+ | "input.insertText"
51
+ | "editor.submit"
52
+ | "editor.cancel"
53
+ | "editor.newline"
54
+ | "editor.backspace"
55
+ | "editor.delete"
56
+ | "editor.cursorLeft"
57
+ | "editor.cursorRight"
58
+ | "editor.cursorUp"
59
+ | "editor.cursorDown"
60
+ | "editor.home"
61
+ | "editor.end"
62
+ | "editor.paste"
63
+ | "editor.pasteText"
64
+ | "editor.insertText"
65
+ | (string & {});
66
+
67
+ export interface TerminalCommand {
68
+ id: TerminalCommandId;
69
+ text?: string;
70
+ }
71
+
72
+ export interface TerminalCommandContext {
73
+ key: string;
74
+ focusedId?: string;
75
+ focusedTag?: TerminalPrimitiveTag;
76
+ }
77
+
78
+ export interface TerminalKeyBindingCondition {
79
+ focusedId?: string;
80
+ focusedTag?: TerminalPrimitiveTag;
81
+ }
82
+
83
+ export interface TerminalKeyBinding {
84
+ key: string;
85
+ command: TerminalCommand;
86
+ scope?: TerminalCommandScope;
87
+ when?: TerminalKeyBindingCondition;
88
+ }
89
+
90
+ export interface TerminalKeymapOptions {
91
+ bindings?: TerminalKeyBinding[];
92
+ onCommand?(command: TerminalCommand, context: TerminalCommandContext): boolean | void;
93
+ }
94
+
95
+ export interface VnodeLike {
96
+ tag: any;
97
+ props: AnyProps;
98
+ children: any[];
99
+ }
100
+
101
+ export interface TerminalTextNode {
102
+ type: "text";
103
+ value: string;
104
+ }
105
+
106
+ export interface TerminalElementNode {
107
+ type: "element";
108
+ tag: TerminalPrimitiveTag;
109
+ props: Record<string, any>;
110
+ children: TerminalNode[];
111
+ }
112
+
113
+ export type TerminalNode = TerminalTextNode | TerminalElementNode;
114
+
115
+ export interface TerminalFocusNode extends TerminalElementNode {
116
+ props: Record<string, any> & { id?: string };
117
+ }
118
+
119
+ export interface TerminalHitbox {
120
+ id: string;
121
+ tag: TerminalPrimitiveTag;
122
+ x1: number;
123
+ x2: number;
124
+ y1: number;
125
+ y2: number;
126
+ textStartX?: number;
127
+ textLength?: number;
128
+ itemOffset?: number;
129
+ pointerLayer?: number;
130
+ }
131
+
132
+ export interface CursorPosition {
133
+ x: number;
134
+ y: number;
135
+ }
136
+
137
+ export interface TerminalSelectionRange {
138
+ x1: number;
139
+ x2: number;
140
+ y: number;
141
+ }
142
+
143
+ export type TerminalSemanticStyleKind =
144
+ | "selection"
145
+ | "focus"
146
+ | "highlight"
147
+ | "current-row"
148
+ | "hover"
149
+ | "disabled"
150
+ | "error"
151
+ | "warning"
152
+ | "success"
153
+ | "muted";
154
+
155
+ export interface TerminalStyleToken {
156
+ color?: TerminalColor;
157
+ background?: TerminalColor;
158
+ style?: TerminalStyleDefinition;
159
+ ansiOpen?: string;
160
+ ansiClose?: string;
161
+ plainPrefix?: string;
162
+ plainSuffix?: string;
163
+ }
164
+
165
+ export type TerminalVisualState =
166
+ | "focus" | "hover" | "disabled" | "loading"
167
+ | "pressed" | "checked" | "unchecked" | "indeterminate"
168
+ | "selected" | "current" | "expanded" | "collapsed"
169
+ | "invalid" | "valid" | "readonly" | "placeholder" | "selection" | "editing" | "submitted"
170
+ | "empty" | "error" | "warning" | "success" | "muted"
171
+ | "dragging" | "dropTarget" | "capturing";
172
+
173
+ export type TerminalColor = string;
174
+ export type TerminalStyleReference = string;
175
+ export type TerminalSpacing = number | { x?: number; y?: number; top?: number; right?: number; bottom?: number; left?: number };
176
+ export type TerminalBorderStyle = "solid" | "dotted" | "double" | string;
177
+ export type TerminalBorder = boolean | TerminalBorderStyle | {
178
+ top?: boolean;
179
+ right?: boolean;
180
+ bottom?: boolean;
181
+ left?: boolean;
182
+ style?: TerminalBorderStyle;
183
+ color?: TerminalColor;
184
+ };
185
+
186
+ export interface TerminalStyleDefinition {
187
+ color?: TerminalColor;
188
+ background?: TerminalColor;
189
+ border?: TerminalBorder;
190
+ padding?: TerminalSpacing;
191
+ plainPrefix?: string;
192
+ plainSuffix?: string;
193
+ }
194
+
195
+ export type TerminalStyleRecipeKey = keyof TerminalStyleDefinition;
196
+ export type TerminalStyleTree = {
197
+ [key: string]: TerminalStyleDefinition[TerminalStyleRecipeKey] | TerminalStyleTree | undefined;
198
+ };
199
+ export type TerminalStyleValue = TerminalStyleReference | TerminalStyleDefinition;
200
+ export type TerminalStateStyles = Partial<Record<TerminalVisualState, TerminalStyleValue>>;
201
+ export interface TerminalStyleProps {
202
+ style?: TerminalStyleValue;
203
+ styles?: TerminalStateStyles;
204
+ state?: TerminalVisualState | TerminalVisualState[];
205
+ }
206
+
207
+ export interface TerminalTheme {
208
+ styles?: TerminalStyleTree;
209
+ spans?: Partial<Record<TerminalSemanticStyleKind | (string & {}), TerminalStyleToken>>;
210
+ }
211
+
212
+ export interface TerminalStyleSpan extends TerminalSelectionRange {
213
+ kind: TerminalSemanticStyleKind | (string & {});
214
+ style?: TerminalStyleDefinition;
215
+ }
216
+
217
+ export interface TerminalFrame {
218
+ lines: string[];
219
+ hitboxes: TerminalHitbox[];
220
+ cursor: CursorPosition | null;
221
+ spans: TerminalStyleSpan[];
222
+ }
223
+
224
+ export interface TerminalSize {
225
+ cols: number;
226
+ rows: number;
227
+ }
228
+
229
+ export interface InputInteractionState {
230
+ cursor: number;
231
+ anchor: number;
232
+ }
233
+
234
+ export interface TerminalClipboardAdapter {
235
+ readText?(): string | undefined;
236
+ writeText?(value: string): void;
237
+ }
238
+
239
+ export interface TerminalFocusableProps {
240
+ id?: string;
241
+ focusable?: boolean;
242
+ }
243
+
244
+ export interface TerminalPointerCaptureProps {
245
+ pointerCapture?: boolean;
246
+ }
247
+
248
+ export interface TerminalDirectiveProps {
249
+ "v-for"?: any[];
250
+ }
251
+
252
+ export interface TerminalLayoutProps extends TerminalFocusableProps, TerminalStyleProps {
253
+ direction?: "row" | "column";
254
+ gap?: number;
255
+ padding?: TerminalSpacing;
256
+ width?: number;
257
+ height?: number;
258
+ fill?: boolean;
259
+ }
260
+
261
+ export interface TerminalEventPayloadBase {
262
+ id: string;
263
+ }
264
+
265
+ export interface TerminalValueEventPayloadBase<T = string> extends TerminalEventPayloadBase {
266
+ value: T;
267
+ }
268
+
269
+ export interface TerminalInputChangeEventPayload extends TerminalValueEventPayloadBase<string> {
270
+ type: "change" | "input";
271
+ }
272
+
273
+ export interface TerminalInputSubmitEventPayload extends TerminalValueEventPayloadBase<string> {
274
+ type: "submit";
275
+ }
276
+
277
+ export interface TerminalEditorChangeEventPayload extends TerminalValueEventPayloadBase<string> {
278
+ type: "change" | "input";
279
+ }
280
+
281
+ export interface TerminalEditorSubmitEventPayload extends TerminalValueEventPayloadBase<string> {
282
+ type: "submit";
283
+ }
284
+
285
+ export interface TerminalEditorCancelEventPayload extends TerminalValueEventPayloadBase<string> {
286
+ type: "cancel";
287
+ }
288
+
289
+ export interface TerminalButtonPressEventPayload extends TerminalEventPayloadBase {
290
+ type: "press" | "click";
291
+ }
292
+
293
+ export interface TerminalListChangeEventPayload<T = any> extends TerminalValueEventPayloadBase<T> {
294
+ type: "change";
295
+ index: number;
296
+ }
297
+
298
+ export interface TerminalListPressEventPayload<T = any> extends TerminalValueEventPayloadBase<T> {
299
+ type: "press";
300
+ index: number;
301
+ }
302
+
303
+ export type TerminalChangeEventPayload =
304
+ | TerminalInputChangeEventPayload
305
+ | TerminalEditorChangeEventPayload
306
+ | TerminalListChangeEventPayload<any>;
307
+
308
+ export type TerminalPressEventPayload = TerminalButtonPressEventPayload | TerminalListPressEventPayload<any>;
309
+
310
+ export type TerminalMouseEventType = "hover" | "rowenter" | "rowleave";
311
+
312
+ export type TerminalPointerSource = "press" | "drag" | "release";
313
+
314
+ export interface TerminalPointerCoordinates {
315
+ x: number | null;
316
+ y: number | null;
317
+ }
318
+
319
+ export interface TerminalRowPointerEventPayloadBase extends TerminalPointerCoordinates {
320
+ id: string;
321
+ row: number;
322
+ }
323
+
324
+ export interface TerminalListPointerEventPayload<T = any> extends TerminalRowPointerEventPayloadBase {
325
+ type: TerminalMouseEventType;
326
+ index: number;
327
+ value: T;
328
+ }
329
+
330
+ export interface TerminalScrollPointerEventPayload extends TerminalRowPointerEventPayloadBase {
331
+ type: TerminalMouseEventType;
332
+ value: string;
333
+ }
334
+
335
+ export type TerminalRowPointerEventPayload = TerminalListPointerEventPayload<any> | TerminalScrollPointerEventPayload;
336
+
337
+ export interface TerminalCaptureEventPayload extends TerminalPointerCoordinates {
338
+ type: "capturestart" | "captureend";
339
+ id: string;
340
+ source: TerminalPointerSource;
341
+ row: number | null;
342
+ }
343
+
344
+ export interface TerminalInputProps extends TerminalFocusableProps, TerminalStyleProps {
345
+ value?: string;
346
+ placeholder?: string;
347
+ onchange?(event: TerminalInputChangeEventPayload): void;
348
+ oninput?(event: TerminalInputChangeEventPayload): void;
349
+ onsubmit?(event: TerminalInputSubmitEventPayload): void;
350
+ }
351
+
352
+ export interface TerminalEditorProps extends TerminalFocusableProps, TerminalStyleProps {
353
+ value?: string;
354
+ placeholder?: string;
355
+ height?: number;
356
+ onchange?(event: TerminalEditorChangeEventPayload): void;
357
+ oninput?(event: TerminalEditorChangeEventPayload): void;
358
+ onsubmit?(event: TerminalEditorSubmitEventPayload): void;
359
+ oncancel?(event: TerminalEditorCancelEventPayload): void;
360
+ }
361
+
362
+ export interface TerminalButtonProps extends TerminalFocusableProps, TerminalStyleProps {
363
+ label?: string;
364
+ onpress?(event: TerminalButtonPressEventPayload): void;
365
+ onclick?(event: TerminalButtonPressEventPayload): void;
366
+ action?(event: TerminalButtonPressEventPayload): void;
367
+ }
368
+
369
+ export interface TerminalListProps<T = any> extends TerminalFocusableProps, TerminalPointerCaptureProps, TerminalStyleProps {
370
+ items?: T[];
371
+ virtualized?: boolean;
372
+ itemHeight?: 1;
373
+ overscan?: number;
374
+ renderItem?(item: T, index: number): string;
375
+ onchange?(event: TerminalListChangeEventPayload<T>): void;
376
+ onpress?(event: TerminalListPressEventPayload<T>): void;
377
+ onhover?(event: TerminalListPointerEventPayload<T>): void;
378
+ onrowenter?(event: TerminalListPointerEventPayload<T>): void;
379
+ onrowleave?(event: TerminalListPointerEventPayload<T>): void;
380
+ oncapturestart?(event: TerminalCaptureEventPayload): void;
381
+ oncaptureend?(event: TerminalCaptureEventPayload): void;
382
+ }
383
+
384
+ export interface TerminalScrollViewProps extends TerminalLayoutProps, TerminalPointerCaptureProps {
385
+ highlightRows?: number[];
386
+ onhover?(event: TerminalScrollPointerEventPayload): void;
387
+ onrowenter?(event: TerminalScrollPointerEventPayload): void;
388
+ onrowleave?(event: TerminalScrollPointerEventPayload): void;
389
+ oncapturestart?(event: TerminalCaptureEventPayload): void;
390
+ oncaptureend?(event: TerminalCaptureEventPayload): void;
391
+ }
392
+
393
+ export interface TerminalLogViewEntry {
394
+ id: string;
395
+ content: string;
396
+ }
397
+
398
+ export interface TerminalLogViewProps extends TerminalLayoutProps {
399
+ entries?: readonly TerminalLogViewEntry[];
400
+ followTail?: boolean;
401
+ emptyText?: string;
402
+ renderEntry?(entry: TerminalLogViewEntry, index: number): string;
403
+ }
404
+
405
+ export interface TerminalScreenProps extends TerminalFocusableProps {
406
+ title?: string;
407
+ }
408
+
409
+ export interface TerminalBoxProps extends TerminalLayoutProps {}
410
+
411
+ export interface TerminalViewProps extends TerminalLayoutProps {
412
+ role?: string;
413
+ }
414
+
415
+ export interface TerminalPaneProps extends TerminalLayoutProps {}
416
+
417
+ export type TerminalSplitSize = number | `${number}%` | `${number}fr`;
418
+ export interface TerminalSplitBreakpoint {
419
+ maxCols?: number;
420
+ maxRows?: number;
421
+ direction?: "row" | "column";
422
+ sizes?: TerminalSplitSize[];
423
+ gap?: number;
424
+ }
425
+
426
+ export interface TerminalSplitProps extends TerminalFocusableProps {
427
+ direction?: "row" | "column";
428
+ width?: number;
429
+ height?: number;
430
+ fill?: boolean;
431
+ sizes?: TerminalSplitSize[];
432
+ breakpoints?: TerminalSplitBreakpoint[];
433
+ gap?: number;
434
+ }
435
+
436
+ export interface TerminalFixedProps {
437
+ position: "top" | "bottom" | "left" | "right";
438
+ size: number;
439
+ }
440
+
441
+ export interface TerminalOverlayProps extends TerminalFocusableProps, TerminalStyleProps {
442
+ x: number;
443
+ y: number;
444
+ width: number;
445
+ height: number;
446
+ trapFocus?: boolean;
447
+ }
448
+
449
+ export interface TerminalFocusScopeProps {
450
+ active?: boolean;
451
+ }
452
+
453
+ export interface TerminalTextProps extends TerminalStyleProps {
454
+ value?: any;
455
+ }
456
+
457
+ export interface TerminalTableProps extends TerminalDirectiveProps {}
458
+
459
+ export interface TerminalRowProps {
460
+ separator?: string;
461
+ }
462
+
463
+ export interface TerminalTdProps extends TerminalStyleProps {
464
+ padding?: TerminalSpacing;
465
+ }
466
+
467
+ export interface TerminalSession {
468
+ size(): TerminalSize;
469
+ resize(cols: number, rows: number): void;
470
+ update(): string;
471
+ output(): string;
472
+ ansiOutput(): string;
473
+ tree(): TerminalNode[];
474
+ focus(id: string): boolean;
475
+ focusAt(x: number, y: number): boolean;
476
+ focusNext(): boolean;
477
+ focusPrev(): boolean;
478
+ dispatchKey(key: string): string;
479
+ click(id?: string): string;
480
+ clickAt(x: number, y: number): string;
481
+ clipboard(): string;
482
+ setClipboard(value: string): string;
483
+ selectAll(): string;
484
+ destroy(): void;
485
+ }
486
+
487
+ export type TerminalRuntime = "app" | "headless";
488
+
489
+ export interface TerminalMountOptions {
490
+ runtime?: TerminalRuntime;
491
+ cols?: number;
492
+ rows?: number;
493
+ theme?: TerminalTheme;
494
+ keymap?: TerminalKeymapOptions;
495
+ alternateScreen?: boolean;
496
+ hideCursor?: boolean;
497
+ restoreOnDestroy?: boolean;
498
+ clipboard?: TerminalClipboardAdapter | false;
499
+ stdin?: {
500
+ isTTY?: boolean;
501
+ on(event: "data", listener: (chunk: string | Uint8Array) => void): any;
502
+ off?(event: "data", listener: (chunk: string | Uint8Array) => void): any;
503
+ removeListener?(event: "data", listener: (chunk: string | Uint8Array) => void): any;
504
+ setRawMode?(value: boolean): void;
505
+ resume?(): void;
506
+ pause?(): void;
507
+ };
508
+ stdout?: TerminalOutputStream;
509
+ }
510
+
511
+ export interface TerminalOutputStream {
512
+ isTTY?: boolean;
513
+ columns?: number;
514
+ rows?: number;
515
+ write(chunk: string): any;
516
+ on?(event: "drain" | "resize", listener: () => void): any;
517
+ off?(event: "drain" | "resize", listener: () => void): any;
518
+ removeListener?(event: "drain" | "resize", listener: () => void): any;
519
+ }
520
+
521
+ export type ParsedTerminalInput =
522
+ | { type: "key"; key: string }
523
+ | { type: "mouse"; x: number; y: number; button: number; action: "press" | "release" | "drag" | "wheel-up" | "wheel-down" };
package/tsconfig.json CHANGED
@@ -6,20 +6,17 @@
6
6
  "moduleResolution": "NodeNext",
7
7
  "noEmit": true,
8
8
  "moduleDetection": "force",
9
- "jsx": "react",
10
- "jsxFactory": "v",
11
- "jsxFragmentFactory": "v.fragment",
9
+ "jsx": "react-jsx",
10
+ "jsxImportSource": "valyrian.js",
12
11
  "allowJs": true,
13
12
  "esModuleInterop": true,
14
13
  "strict": true,
15
14
  "forceConsistentCasingInFileNames": true,
16
15
  "skipLibCheck": true,
17
16
  "types": ["bun-types", "node"],
18
- "downlevelIteration": true,
19
17
  "allowSyntheticDefaultImports": true,
20
18
  "allowImportingTsExtensions": true,
21
- "resolveJsonModule": true,
22
- "baseUrl": "."
19
+ "resolveJsonModule": true
23
20
  },
24
- "include": ["src", "test", "examples"]
21
+ "include": ["src", "test", "examples", "scripts"]
25
22
  }
@@ -1,28 +0,0 @@
1
- # Local Demo
2
-
3
- `examples/` existe solo como apoyo de desarrollo local. No forma parte del paquete publicado por npm, no aparece en `exports` y no hay CLI publicada por `valyrianjs-terminal`.
4
-
5
- ## Archivos
6
-
7
- - `examples/demo.tsx`: define `createDemoState()` y `DemoApp`; valida composicion de primitivas (`Screen`, `Box`, `View`, `Text`, `Input`, `Button`, `List`, `ScrollView`, `Table`, `Row`, `Td`) y payloads basicos de eventos.
8
- - `examples/basic.tsx`: valida el camino minimo para usar `renderTerminal()` en snapshot y `mountTerminal()` con `stdin`/`stdout` en local.
9
- - `examples/cli.tsx`: valida el launcher local con `--help`, `--snapshot`, foco inicial, salida por `Esc` o `Ctrl+C` y cleanup ANSI al cerrar.
10
-
11
- ## Comandos
12
-
13
- ```bash
14
- bun run examples/basic.tsx
15
- bun run examples/basic.tsx --snapshot
16
- bun run examples/cli.tsx
17
- bun run examples/cli.tsx --snapshot
18
- bun run examples/cli.tsx --help
19
- bun run test
20
- bun run typecheck
21
- bun run build
22
- ```
23
-
24
- ## Alcance
25
-
26
- - `--snapshot` imprime la UI de ejemplo como texto plano.
27
- - sin `--snapshot`, los ejemplos montan una sesion local conectada a `process.stdin` y `process.stdout`.
28
- - estos archivos no son una interfaz distribuida a consumidores del paquete; son fixtures manuales para validar el adapter en la maquina local.