@valyrianjs/terminal 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ansi.d.ts +2 -0
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +12 -0
- package/dist/ansi.js.map +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +6 -2
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/keymap.d.ts.map +1 -1
- package/dist/keymap.js +4 -2
- package/dist/keymap.js.map +1 -1
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +2 -1
- package/dist/layout.js.map +1 -1
- package/dist/mouse.d.ts +6 -0
- package/dist/mouse.d.ts.map +1 -1
- package/dist/mouse.js +30 -16
- package/dist/mouse.js.map +1 -1
- package/dist/primitives.d.ts +8 -3
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +8 -1
- package/dist/primitives.js.map +1 -1
- package/dist/render.d.ts +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +290 -51
- package/dist/render.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +13 -11
- package/dist/runtime.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +434 -65
- package/dist/session.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +3 -0
- package/dist/theme.js.map +1 -1
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +18 -4
- package/dist/tree.js.map +1 -1
- package/dist/types.d.ts +61 -13
- package/dist/types.d.ts.map +1 -1
- package/docs/api-reference.md +40 -28
- package/docs/cookbook.md +2 -2
- package/docs/core-concepts.md +1 -1
- package/docs/interaction-model.md +18 -6
- package/docs/primitive-gallery.md +19 -10
- package/llms-full.txt +80 -47
- package/package.json +1 -1
- package/src/ansi.ts +12 -0
- package/src/events.ts +4 -2
- package/src/index.ts +3 -0
- package/src/keymap.ts +4 -2
- package/src/layout.ts +2 -1
- package/src/mouse.ts +31 -15
- package/src/primitives.ts +15 -5
- package/src/render.ts +320 -52
- package/src/runtime.ts +13 -11
- package/src/session.ts +469 -59
- package/src/theme.ts +3 -0
- package/src/tree.ts +19 -4
- package/src/types.ts +72 -12
package/src/theme.ts
CHANGED
package/src/tree.ts
CHANGED
|
@@ -54,12 +54,27 @@ export function resolveToTerminalNodes(input: any): TerminalNode[] {
|
|
|
54
54
|
return resolveToTerminalNodes(resolveComponent(input.tag, input.props || {}, input.children || []));
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
const tag = input.tag as TerminalPrimitiveTag;
|
|
58
|
+
const props = { ...(input.props || {}) } as Record<string, any>;
|
|
59
|
+
const vnodeChildren = input.children || [];
|
|
60
|
+
if (tag === "terminal-list" && vnodeChildren.length === 1 && typeof vnodeChildren[0] === "function") {
|
|
61
|
+
props.__childrenRenderer = vnodeChildren[0];
|
|
62
|
+
return [
|
|
63
|
+
{
|
|
64
|
+
type: "element",
|
|
65
|
+
tag,
|
|
66
|
+
props,
|
|
67
|
+
children: []
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
|
|
57
72
|
return [
|
|
58
73
|
{
|
|
59
74
|
type: "element",
|
|
60
|
-
tag
|
|
61
|
-
props
|
|
62
|
-
children: normalizeChildren(
|
|
75
|
+
tag,
|
|
76
|
+
props,
|
|
77
|
+
children: normalizeChildren(vnodeChildren)
|
|
63
78
|
}
|
|
64
79
|
];
|
|
65
80
|
}
|
|
@@ -106,7 +121,7 @@ export function collectDirectOverlayFocusableNodes(nodes: TerminalNode[], out: T
|
|
|
106
121
|
|
|
107
122
|
const overlayChildren = node.children.filter((child) => child.type === "element" && child.tag === "terminal-overlay" && child.props.trapFocus !== false);
|
|
108
123
|
if (overlayChildren.length) {
|
|
109
|
-
collectFocusableNodes(overlayChildren, out);
|
|
124
|
+
collectFocusableNodes(overlayChildren.slice().reverse(), out);
|
|
110
125
|
continue;
|
|
111
126
|
}
|
|
112
127
|
|
package/src/types.ts
CHANGED
|
@@ -28,6 +28,10 @@ export type TerminalCommandId =
|
|
|
28
28
|
| "button.press"
|
|
29
29
|
| "list.prev"
|
|
30
30
|
| "list.next"
|
|
31
|
+
| "list.pageUp"
|
|
32
|
+
| "list.pageDown"
|
|
33
|
+
| "list.home"
|
|
34
|
+
| "list.end"
|
|
31
35
|
| "list.press"
|
|
32
36
|
| "scroll.up"
|
|
33
37
|
| "scroll.down"
|
|
@@ -126,7 +130,11 @@ export interface TerminalHitbox {
|
|
|
126
130
|
textStartX?: number;
|
|
127
131
|
textLength?: number;
|
|
128
132
|
itemOffset?: number;
|
|
133
|
+
itemIndexes?: number[];
|
|
134
|
+
contentY?: number;
|
|
129
135
|
pointerLayer?: number;
|
|
136
|
+
__listItemIndex?: number;
|
|
137
|
+
__pressHandler?: (event: TerminalButtonPressEventPayload) => void;
|
|
130
138
|
}
|
|
131
139
|
|
|
132
140
|
export interface CursorPosition {
|
|
@@ -287,17 +295,32 @@ export interface TerminalEditorCancelEventPayload extends TerminalValueEventPayl
|
|
|
287
295
|
}
|
|
288
296
|
|
|
289
297
|
export interface TerminalButtonPressEventPayload extends TerminalEventPayloadBase {
|
|
290
|
-
type: "press" | "
|
|
298
|
+
type: "press" | "doublepress" | "contextpress";
|
|
291
299
|
}
|
|
292
300
|
|
|
293
|
-
export interface
|
|
301
|
+
export interface TerminalListStateEventPayload {
|
|
302
|
+
activeIndex: number;
|
|
303
|
+
selectedIndex: number | null;
|
|
304
|
+
viewportOffset: number;
|
|
305
|
+
viewportRows: number;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export interface TerminalListChangeEventPayload<T = any> extends TerminalValueEventPayloadBase<T>, TerminalListStateEventPayload {
|
|
294
309
|
type: "change";
|
|
295
310
|
index: number;
|
|
311
|
+
key?: string;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
export interface TerminalListViewportChangeEventPayload extends TerminalEventPayloadBase, TerminalListStateEventPayload {
|
|
315
|
+
type: "viewportchange";
|
|
316
|
+
offset: number;
|
|
317
|
+
rows: number;
|
|
296
318
|
}
|
|
297
319
|
|
|
298
|
-
export interface TerminalListPressEventPayload<T = any> extends TerminalValueEventPayloadBase<T
|
|
299
|
-
type: "press";
|
|
320
|
+
export interface TerminalListPressEventPayload<T = any> extends TerminalValueEventPayloadBase<T>, TerminalListStateEventPayload {
|
|
321
|
+
type: "press" | "doublepress" | "contextpress";
|
|
300
322
|
index: number;
|
|
323
|
+
key?: string;
|
|
301
324
|
}
|
|
302
325
|
|
|
303
326
|
export type TerminalChangeEventPayload =
|
|
@@ -307,6 +330,16 @@ export type TerminalChangeEventPayload =
|
|
|
307
330
|
|
|
308
331
|
export type TerminalPressEventPayload = TerminalButtonPressEventPayload | TerminalListPressEventPayload<any>;
|
|
309
332
|
|
|
333
|
+
export interface TerminalInputContextPressEventPayload extends TerminalValueEventPayloadBase<string>, TerminalPointerCoordinates {
|
|
334
|
+
type: "contextpress";
|
|
335
|
+
cursor: number;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
export interface TerminalScrollContextPressEventPayload extends TerminalRowPointerEventPayloadBase {
|
|
339
|
+
type: "contextpress";
|
|
340
|
+
value: string;
|
|
341
|
+
}
|
|
342
|
+
|
|
310
343
|
export type TerminalMouseEventType = "hover" | "rowenter" | "rowleave";
|
|
311
344
|
|
|
312
345
|
export type TerminalPointerSource = "press" | "drag" | "release";
|
|
@@ -324,6 +357,7 @@ export interface TerminalRowPointerEventPayloadBase extends TerminalPointerCoord
|
|
|
324
357
|
export interface TerminalListPointerEventPayload<T = any> extends TerminalRowPointerEventPayloadBase {
|
|
325
358
|
type: TerminalMouseEventType;
|
|
326
359
|
index: number;
|
|
360
|
+
key?: string;
|
|
327
361
|
value: T;
|
|
328
362
|
}
|
|
329
363
|
|
|
@@ -347,6 +381,7 @@ export interface TerminalInputProps extends TerminalFocusableProps, TerminalStyl
|
|
|
347
381
|
onchange?(event: TerminalInputChangeEventPayload): void;
|
|
348
382
|
oninput?(event: TerminalInputChangeEventPayload): void;
|
|
349
383
|
onsubmit?(event: TerminalInputSubmitEventPayload): void;
|
|
384
|
+
oncontextpress?(event: TerminalInputContextPressEventPayload): void;
|
|
350
385
|
}
|
|
351
386
|
|
|
352
387
|
export interface TerminalEditorProps extends TerminalFocusableProps, TerminalStyleProps {
|
|
@@ -362,18 +397,38 @@ export interface TerminalEditorProps extends TerminalFocusableProps, TerminalSty
|
|
|
362
397
|
export interface TerminalButtonProps extends TerminalFocusableProps, TerminalStyleProps {
|
|
363
398
|
label?: string;
|
|
364
399
|
onpress?(event: TerminalButtonPressEventPayload): void;
|
|
365
|
-
|
|
366
|
-
|
|
400
|
+
ondoublepress?(event: TerminalButtonPressEventPayload): void;
|
|
401
|
+
oncontextpress?(event: TerminalButtonPressEventPayload): void;
|
|
367
402
|
}
|
|
368
403
|
|
|
404
|
+
export interface TerminalListRenderContext<T = any> {
|
|
405
|
+
index: number;
|
|
406
|
+
key: string;
|
|
407
|
+
active: boolean;
|
|
408
|
+
selected: boolean;
|
|
409
|
+
viewportIndex: number;
|
|
410
|
+
item: T;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
export type TerminalListItemKey<T = any> = (item: T, index: number) => string | number;
|
|
414
|
+
export type TerminalListItemRenderer<T = any> = (item: T, ctx: TerminalListRenderContext<T>) => any;
|
|
415
|
+
|
|
369
416
|
export interface TerminalListProps<T = any> extends TerminalFocusableProps, TerminalPointerCaptureProps, TerminalStyleProps {
|
|
370
|
-
items?: T[];
|
|
417
|
+
items?: readonly T[];
|
|
371
418
|
virtualized?: boolean;
|
|
419
|
+
height?: number;
|
|
372
420
|
itemHeight?: 1;
|
|
373
421
|
overscan?: number;
|
|
374
|
-
|
|
422
|
+
wrap?: boolean;
|
|
423
|
+
itemKey?: TerminalListItemKey<T>;
|
|
424
|
+
showActive?: boolean;
|
|
425
|
+
renderItem?(item: T, index: number): any;
|
|
426
|
+
children?: TerminalListItemRenderer<T>;
|
|
375
427
|
onchange?(event: TerminalListChangeEventPayload<T>): void;
|
|
428
|
+
onviewportchange?(event: TerminalListViewportChangeEventPayload): void;
|
|
376
429
|
onpress?(event: TerminalListPressEventPayload<T>): void;
|
|
430
|
+
ondoublepress?(event: TerminalListPressEventPayload<T>): void;
|
|
431
|
+
oncontextpress?(event: TerminalListPressEventPayload<T>): void;
|
|
377
432
|
onhover?(event: TerminalListPointerEventPayload<T>): void;
|
|
378
433
|
onrowenter?(event: TerminalListPointerEventPayload<T>): void;
|
|
379
434
|
onrowleave?(event: TerminalListPointerEventPayload<T>): void;
|
|
@@ -386,6 +441,7 @@ export interface TerminalScrollViewProps extends TerminalLayoutProps, TerminalPo
|
|
|
386
441
|
onhover?(event: TerminalScrollPointerEventPayload): void;
|
|
387
442
|
onrowenter?(event: TerminalScrollPointerEventPayload): void;
|
|
388
443
|
onrowleave?(event: TerminalScrollPointerEventPayload): void;
|
|
444
|
+
oncontextpress?(event: TerminalScrollContextPressEventPayload): void;
|
|
389
445
|
oncapturestart?(event: TerminalCaptureEventPayload): void;
|
|
390
446
|
oncaptureend?(event: TerminalCaptureEventPayload): void;
|
|
391
447
|
}
|
|
@@ -438,11 +494,15 @@ export interface TerminalFixedProps {
|
|
|
438
494
|
size: number;
|
|
439
495
|
}
|
|
440
496
|
|
|
497
|
+
export type TerminalOverlayMarginValue = number | `${number}%`;
|
|
498
|
+
|
|
499
|
+
export interface TerminalOverlayMarginAxes {
|
|
500
|
+
x: TerminalOverlayMarginValue;
|
|
501
|
+
y: TerminalOverlayMarginValue;
|
|
502
|
+
}
|
|
503
|
+
|
|
441
504
|
export interface TerminalOverlayProps extends TerminalFocusableProps, TerminalStyleProps {
|
|
442
|
-
|
|
443
|
-
y: number;
|
|
444
|
-
width: number;
|
|
445
|
-
height: number;
|
|
505
|
+
margin: TerminalOverlayMarginValue | TerminalOverlayMarginAxes;
|
|
446
506
|
trapFocus?: boolean;
|
|
447
507
|
}
|
|
448
508
|
|